Фух, закончились 2 часа партнерских интеграций... Недавно я делал пост по отличиям su от sudo, но есть еще одна вкусная альтернатива, которая называется doas.



doas – утилита, которая позволяет обычным пользователям выполнять задачи от имени root, так же как это делает sudo. Она была разработана проектом OpenBSD как минималистичная альтернатива sudo.



Интересно кстати звучит: do ass (делать жопу)



Утилита доступна в большинстве официальных репозиториев. Поэтому с установкой проблем не возникает.



Запускай apt install «делатьжопу» (или какой там у тебя пакетный менеджер) и погнали смотреть на эти булки поближе.



Так как doas не входит по умолчанию в коробочные версии linux, утилита требует немного бОльших настроек, в отличие от sudo. Но конфигурация намного проще для понимания чем sudo. Настраивается все это через файл /etc/doas.conf. Если файла нет, создай!



Цель doas - решить сложность sudo.



Давай эмитируем поведение sudo и позволим пользователю выполнять любые команды от пользователя root. Добавляем в конфиг такую херабору:



permit persist user as root




Теперь пользователь user сможет выполнять команды от root + пользователь получает льготный период, когда не нужно вводить пароль в течение нескольких минут после последовательных команд doas.



Допустим мне нужно сделать подобное, но для определенной группы, добавляем в конфиг строчку:



permit persist :wheel as root




Теперь все кто заключен в группу wheel смогут побыть рутом. Также и с белым списком команд, которые можно выдать для запуска без пароля:



permit persist user as root

permit nopass :user as root cmd apt




Да, конфиг более читабельный чем у sudo. И в обозримом будущем есть очень большая вероятность того, что sudo закинут в деприкейтед, а doas сделают основным рабочим инструментом. Так как sudo уже непроходимое гавно болото в плане поддержки кода, который трудно понимать и использовать.



Возьмем даже валидатор конфига visudo. Который проверяет синтаксис конфига. А это говорит о том, что синтаксис файла sudoers ну совсем фу и воняет. Требует проверки. Да и 99% пользователей используют sudo исключительно для установки софта.



Разница налицо (попахивает порнохабом):



Конфиг sudo

%wheel ALL=(ALL) NOPASSWD: ALL




Конфиг «делать жопу»

permit nopass :wheel as root




Ну и с помощью doas можно запустить root shell такой командой:



doas -s




Кстати был казус с портированием под FreeBSD, спустя несколько часов после публикации doas, в ней нашли критическую уязвимость. Которая позволяла выполнить привилегированные операции даже если был указан неверный пароль пользователя. Как обычно накосячил разработчик, который раздеплоился в прод без тестирования. Ну либо специально заложил бекдор, история умалчивает.



Вот такие пироги. Увидимся совсем скоро и сделаем что-нибудь полезное, например сломаем прод, ну или ногу...



tags: #linux #utils



💩 @bashdays