systemd при разборе конфиг-файлов для сервисов, которые должны стартовать от имени пользователя с пониженным уровнем привилегий, внезапно воспринимает любое имя пользователя, начинающееся с цифры, как "root". Таким образом, сервис тихонько стартует с максимальными правами в системе, и если окажется удалённо взломанным через remote code execution, то вы узнаете об этом лишь постфактум, когда уже будет "поздно пить Боржоми".
Изначальный замысел авторов systemd был в том, чтобы в этом контексте допускать UIDы наряду с именами пользователей. Замысел неправильный — стандарт POSIX не запрещает имена пользователей, начинающиеся с цифры, в том числе — состоящие из одних лишь цифр (IEEE Std 1003.1-2001, пункт 3.426). Например, можно создать пользователя с именем 1234 и UIDом 4321.
Например, в GNU coreutils (chown, chgrp и т.п.) для прямого присвоения числовых UIDов в обход преобразования "имя пользователя" -> UID используется нотация с лидирующим знаком +. Просто авторы GNU coreutils, в отличие от Поттеринга, не настолько упоротые, чтобы отрицать стандарты POSIX.
Продолжая рассматривать этот вопрос в условиях допущения "Linux с systemd это уже давно не POSIX", логично предположить, что имена пользователей, начинающиеся с цифры, но не являющиеся числами, должны порождать ошибку при разборе конфигурационного файла.
Пока шла дискуссия о том, один баг это или два (первый — необходимость выдачи внятного сообщения об ошибке вместо тихой элевации до прав рута, второй — необходимость поддержки UIDов в числовом виде наряду с именами пользователей), внезапно появился Поттеринг и закрыл этот баг как not-a-bug. Лолшто?
https://github.com/systemd/systemd/issues/6237
systemd is a symptom of the memetic cancer that has probably irredeemably destroyed UNIX in the Linux ecosystem — травят FreeBSD'шники:
https://twitter.com/matthewjweaver/status/881307929349160960
Ещё: https://twitter.com/Xof/status/881305418080804864
https://twitter.com/SwiftOnSecurity/status/881936783482777600
Изначальный замысел авторов systemd был в том, чтобы в этом контексте допускать UIDы наряду с именами пользователей. Замысел неправильный — стандарт POSIX не запрещает имена пользователей, начинающиеся с цифры, в том числе — состоящие из одних лишь цифр (IEEE Std 1003.1-2001, пункт 3.426). Например, можно создать пользователя с именем 1234 и UIDом 4321.
Например, в GNU coreutils (chown, chgrp и т.п.) для прямого присвоения числовых UIDов в обход преобразования "имя пользователя" -> UID используется нотация с лидирующим знаком +. Просто авторы GNU coreutils, в отличие от Поттеринга, не настолько упоротые, чтобы отрицать стандарты POSIX.
Продолжая рассматривать этот вопрос в условиях допущения "Linux с systemd это уже давно не POSIX", логично предположить, что имена пользователей, начинающиеся с цифры, но не являющиеся числами, должны порождать ошибку при разборе конфигурационного файла.
Пока шла дискуссия о том, один баг это или два (первый — необходимость выдачи внятного сообщения об ошибке вместо тихой элевации до прав рута, второй — необходимость поддержки UIDов в числовом виде наряду с именами пользователей), внезапно появился Поттеринг и закрыл этот баг как not-a-bug. Лолшто?
https://github.com/systemd/systemd/issues/6237
systemd is a symptom of the memetic cancer that has probably irredeemably destroyed UNIX in the Linux ecosystem — травят FreeBSD'шники:
https://twitter.com/matthewjweaver/status/881307929349160960
Ещё: https://twitter.com/Xof/status/881305418080804864
https://twitter.com/SwiftOnSecurity/status/881936783482777600
no subject
Date: 2017-07-02 03:25 pm (UTC)1. юзер звичайний не може створити іншого юзера з ім'ям 0pointer
2. якщо прописати 0pointer в юніті, коли такого юзера нема, то юніт наїбнеться при спробі запуску
no subject
Date: 2017-07-02 06:24 pm (UTC)no subject
Date: 2017-07-02 07:28 pm (UTC)не, systemd повинна повідомити, що 0pointer то є дебільне ім'я юзера і юніт проігнорувати, але LP вважає ймовірність події з ім'ям 0pointer IRL зневажливо малою.
такє. a storm in a teacup.
no subject
Date: 2017-07-02 08:05 pm (UTC)no subject
Date: 2017-07-02 09:05 pm (UTC)LP is a nice dude & a jolly good programmer. there's no need for such language. what are you, his father?
systemd is GPL2. fork it & fix the issue for yourself, in case you think it's too dangerous to ignore it.
no subject
Date: 2017-07-02 10:18 pm (UTC)no subject
Date: 2017-07-02 10:55 pm (UTC)you're flaming or rather bitchin' w/o a reason or goal, which isn't amusing :(
no subject
Date: 2017-07-03 07:53 am (UTC)Тонкая игра на эмоциях не помогла, когда systemd развалил в Linux'е традиционную юниксовую идеологию "одна задача — одна утилита", и втянул в PID1 пол-юзерленда.
Тонкая игра на эмоциях не помогла, когда systemd втащил в Linux бинарные логи а-ля "дотянулся проклятый Баллмер", которые ни погрепать, ни восстановить последний кусочек с разваленной файловой системы.
Тонкая игра на эмоциях не помогла, когда в systemd появился свой криво реализованный DNS-кэш, что та виндовая SMB, полный RCE-уязвимостей, которые никак не пофиксят окончательно.
Тонкая игра на эмоциях не помогла, когда этот systemd теперь стал предзависимостью (явной или косвенной) для доброй половины пакетов, и вендоры дистрибутивов просто не могут отказаться от него в пользу альтернативного init.
Тонкая игра на эмоциях не помогла, когда авторы systemd появились в рассылке разработчиков ядра и принялись поучать Торвальдса и компанию, как должны выглядеть аргументы командной строки ядра.
Нынешний момент примечателен тем, что амбиции и спесь Поттеринга и компании наконец-то вошли в конфликт со здравым смыслом, и ситуация разрешится либо тем, что их впервые в истории Линукса заставят признать свою ошибку и пойти на попятную; либо в краткосрочной перспективе форкнут, а в долгосрочной — вообще вышвырнут вон из Линукса, чтобы дальше не гадили. Оба исхода очень хороши.
no subject
Date: 2017-07-03 10:13 am (UTC)I see you're a bit too concerned about the piece of software you don't use. why?
1. have you ever wrote or maintained a couple (dozen, hundred?) of sysv-style init scripts? I can personally assure you it was a royal pain in the ass, especially in case of several interdeps between them. reusing such a horrific mess on a diff distro wasn't a pleasant experience either.
"втянул в PID1 пол-юзерленда"
c'mon dude, don't be ridiculous.
btw, there was never such an "ideology" as "одна задача — одна утилита" in the 1st place. his holiness McIlroy have decreed "make each program do one thing well". systemd is highly modular!
2. "бинарные логи"
I was also bitterly resentful when they suddenly became humanly unreadable, but it's a little price to pay for journalctl convenience.
what I like about systemd is that a user always _have_ all the possible logs, for systemd records everything regardless of whether the author of a service have had a thought about the procedure at all. journalctl filter caps are more than fine (& hyper fast, if I may add).
3. every software has bugs. (systemd-resolved is optional, btw.) perhaps what you intended to say is that systemd folks aren't always very keen to fix them, but hey, it's open source. the right to be offended or even mad should only be a prerogative
of the richof the paying RH customers.4. "systemd теперь стал предзависимостью (явной или косвенной) для доброй половины пакетов"
how is this all systemd's fault? (I sense you think it's somehow a pity, hehe)
5. so? I don't see anything of importance about that.
6. I say, you're far too opinionated for someone who isn't directly involved in the process. it's alright of course to be that way, but it looks fairly strange nevertheless.
no subject
Date: 2017-07-03 10:32 am (UTC)no subject
Date: 2017-07-03 10:59 am (UTC)I don't like this kind of language.
I won't write here anything any longer. cheerio.