Позади находится проторенная тропа, по которой уверенной поступью идут просветленные пользователи… И тонут в legacy-болоте, в которое превращается тропа, после первого же серьезного дождичка.
Те, кто с нами не первый год, могут легко припомнить цепочки из продуктов наподобие sysv → upstart → systemd. Не буду сейчас касаться холиваров какой из продуктов лучше – этим и так земля линуксоидная полнится. Я бы хотел обратить внимание на другое: каждый линуксовый админ обязан помнить эти инструменты и все шаги эволюции. А все потому, что переход на каждую новую ступеньку эволюции инструментария происходил как-то… не до конца. Systemd вон как давно появился, а я до сих пор должен кое-где писать и править sysv, потому что софт не в курсе, что поезд эволюции уже ушел. Да и сама эволюция прошла как-то частично. За примерами далеко ходить не надо.
Понадобилось мне на юзерской машинке дать права пользователю на запуск одного сервиса. Так как я админ старой закалки, то проблем с этим никаких не видел: добавить в sudoers пользователя, ообозначить права, протестировать. От силы час работы в расслабленном темпе. Добавил, проверил файл на валидность, ребутнулся и ничего не случилось. У пользователя все равно требуют права админа. Полез разбираться и споткнулся о PolicyKit. Админы попрошаристее меня в этот момент воскликнут – ну, бли-ин, очевидно же. Правда что ли? А по мне ерунда какая-то. Если есть новое средство управления политиками и в нем практически продублированы политики sudoers, то почему последние еще работают? Это же не возможность выбирать, а тупо дублирующая система, которая выполняет то же самое и банально вводит в заблуждение. Мало того, Polkit существует в двух версиях, у которых конфиги не совпадают от слова «совсем». При этом в старой версии есть конфиги новой, что окончательно запутывает — конфиги есть, но не работают. То есть вторая эволюционная итерация средства управления политиками тоже застряла где-то на середине пол-пути и legacy-болото стало еще на метр глубже. Теперь я должен помнить не только про sudoers и PolKit, но и о том, что у PolKit две версии, конфигурационно несовместимые друг с другом.