Doas — это программа повышения привилегий, аналогичная sudo. Изначально он был разработан для OpenBSD, что позволяет пользователям запускать команды так, как если бы они были другим пользователем (например, root), а позже, благодаря своей простоте и уникальной функциональности, был портирован на многие другие системы Linux.
Два преимущества doas перед sudo заключаются в том, что он меньше по размеру, файл конфигурации пустой, а его синтаксис меньше и его легче запомнить, что практически не требует усилий для аудита.
Если вы когда-либо редактировали файл конфигурации sudo с помощью visudo, который открывает файл “/etc/sudoers” в безопасном режиме, вы заметите, что файл конфигурации полон сложного синтаксиса, и даже небольшое изменение достаточно сложно, чтобы тщательно проверить его на наличие потенциальных синтаксических ошибок.
Без сомнения, sudo — фантастический инструмент для системных администраторов, но для большинства пользователей настольных компьютеров, которые используют его только для установки программ и доработки своих систем, редактирование файла конфигурации может быть сложным и кошмарным занятием, поэтому doas могла бы стать для них лучшей заменой.
Инструмент командной строки doas популярен, и его пакет доступен в большинстве репозиториев Linux, что упрощает установку через менеджер пакетов.
# On Debian, Ubuntu, Kali Linux, Linux Mint, Zorin OS, Pop!_OS, etc. $ sudo apt install doas # On Red Hat, Fedora, CentOS, Rocky Linux, AlmaLinux, etc. $ sudo dnf install opendoas # On Arch Linux, Manjaro, BlackArch, Garuda, etc. $ sudo pacman -S opendoas # On Void Linux, VX-Linux, gabeeOSLinux, AgarimOS, etc. $ sudo xbps-install opendoas
После завершения выполните следующую команду, чтобы убедиться в ее успешной установке:
$ doas
Вывод:
andreyex@linux:-$ doas
usage: doas [-Lns] [-C config] [-u user] command [args]
Теперь, когда у вас установлен doas, вы подумываете об его использовании, но если вы запустите команду, добавив ее к другой команде, посмотрите, что произойдет.
$ doas ls /
Вывод:
andreyex@linux:-$ doas ls /
doas: doas is not enabled, /etc/doas.conf: No such file or directory
Вы столкнетесь с ошибкой “doas is not enabled”, потому что при первой установке doas в вашей системе Linux он не поставляется с каким-либо заранее определенным файлом конфигурации, поэтому вам нужно будет вручную создать новый файл конфигурации “/etc/doas.conf” в соответствии с вашими потребностями.
Для файла конфигурации doas доступно множество различных и простых настроек. Одна из важных — разрешить одному пользователю или пользователям из группы “колесо” запускать команды от имени пользователя root. Итак, включая это и все другие настройки, которые следует знать, перечислены ниже.
Первый шаг — создать файл “doas.conf”, используя предпочитаемый вами текстовый редактор (для нас это Nano), используя приведенную ниже команду, которая также запросит пароль вашей учетной записи пользователя.
$ sudo nano /etc/doas.conf
Чтобы создать правило, разрешающее пользователям выполнять действия администратора, вы должны добавить следующую строку, заменив “andreyex” своим фактическим именем пользователя.
permit andreyex as root
Вывод:
GNU nano 7.2 /etc/doas.conf
permit andreyex as root
Сохраните и закройте файл, и когда вы запустите любую команду с doas от имени пользователя root, вам будет предложено ввести пароль учетной записи пользователя, который должен совпадать с вашим паролем sudo.
andreyex@linux:-$ doas ls / doas (andreyex@linux) password: <----- Ввод пароля учетной записи пользователя bin home mnt sbin.usr-is-merged usr bin. usr-is-merged lib opt snap var boot lib. usr-is-merged proc srv cdrom lib64 root swap.img dev lost+found run sys etc media sbin tmp
Важно отметить, что настройки, сделанные вами в файле конфигурации doas, применимы только к указанному пользователю (в данном случае “andreyex“). Однако, если несколько пользователей используют одну и ту же систему и вы хотите, чтобы они использовали doas в качестве замены sudo, вам следует либо использовать группу типа “wheel”, либо “sudo“, членами которой пользователи уже являются, и предоставить root-доступ тем пользователям в этой группе, используя следующее правило:
permit :wheel as root # или permit :sudo as root
В нашем сценарии у меня не будет группы “wheel”, а вместо нее будет “sudo”, участниками которой пользователи уже являются, поэтому второе правило предоставит root-доступ всем тем пользователям в моей системе, которые входят в группу “sudo”.
GNU nano 7.2 /etc/doas.conf permit : sudo as root
Вы можете сохранить и закрыть файл, затем выполнить команду doas из другой учетной записи пользователя, и вы заметите, что doas работает от имени root гладко. Однако, если вы заметили, что doas неоднократно запрашивает пароль учетной записи пользователя при каждом выполнении, давайте разберемся с этим.
Doas предлагает функцию сохранения, которая сохраняет свое состояние после успешной аутентификации пользователя, предоставляя временное освобождение от запросов на ввод пароля. По умолчанию он отключен, поэтому, чтобы активировать его для пользователя или группы, просто добавьте опцию “persist” после инструкции “permit”.
# Persist the state of "linuxtldr" user. permit persist linuxtldr as root # Persist the state of users in "sudo" group. permit persist :sudo as root
В нашем сценарии мы предоставили root-доступ всем существующим пользователям в группе sudo, чтобы избавить их от повторного ввода паролей после каждого выполнения doas. Мы бы добавили опцию “persist” следующим образом:
GNU nano 7.2 /etc/doas.conf permit persist : sudo as root
Если вы используете какую-либо команду неоднократно и хотите пропустить ввод паролей, вы можете легко сделать это как для пользователей, так и для членов группы. Например, первая строка ниже позволит пользователю “andreyex” запустить команду “apt” без пароля от имени пользователя root, в то время как вторая строка предоставит всем пользователям в группе “sudo” возможность запускать команду “ps” без пароля от имени пользователя root.
permit nopass andreyex as root cmd apt permit nopass :sudo as root cmd ps
Вывод:
GNU nano 7.2 /etc/doas.conf permit persist :sudo as root permit nopass andreyex as root cmd apt permit nopass : sudo as root cmd ps
После завершения редактирования файла конфигурации doas убедитесь, что право собственности на файл присвоено пользователю “root”, а права доступа к файлам установлены на “0400“, оба из которых можно выполнить, выполнив:
$ sudo chown -c root:root /etc/doas.conf $ sudo chmod -c 0400 /etc/doas.conf
Наконец, запустите эту команду, чтобы проверить файл “/etc/doas.conf” на наличие синтаксических ошибок.
$ sudo doas -C /etc/doas.conf && echo "All good" || echo "There is an error"
Вывод:
andreyex@linux:-$ sudo chown -c root:root /etc/doas.conf andreyex@linux: $ sudo chmod -c 0400 /etc/doas.conf andreyex@linux: 5 sudo doas -C /etc/doas.conf && echo "All good" || echo "Error Found" All good andreyex@linux:
Вы заметите, что синтаксических ошибок нет, поэтому, если вы когда-нибудь решите полностью удалить sudo, обязательно проверьте синтаксис при изменении файла конфигурации doas.
Вполне возможно, что вы все еще неосознанно используете команду sudo по привычке, от которой вы можете избавиться, создав псевдоним “sudo” для команды “doas”. Не беспокойтесь о совместимости, поскольку “doas” практически совместимы с “sudo“.
Итак, чтобы создать псевдоним, измените файл конфигурации вашей оболочки (“~ /.bashrc” для bash) и добавьте следующую строку в конце.
alias sudo='doas' alias sudoedit='doas rnano'
По завершении сохраните и закройте файл; теперь, когда вы используете команду “sudo”, она будет выполняться как команда “doas”.
Чтобы позволить Bash обрабатывать аргументы как отдельные команды (и использовать настройки завершения вкладки для других команд), добавьте следующую строку в свой конфигурационный файл “~ /.bashrc”.
complete -cf doas
Сохраните и закройте файл, затем введите несколько инициалов любой команды и нажмите “Tab«, чтобы отобразить список предлагаемых команд.
andreyex@linux:-$ doas user useradd usermod user-session-migration userdel users
Основное использование команды doas предполагает выполнение команды от имени пользователя root. Однако существуют дополнительные способы использования doas, например выполнение команды, которую таким образом может выполнить другой пользователь.
$ doas -u user command
Чтобы запустить оболочку по умолчанию от имени root, вы можете использовать:
$ doas -s
Чтобы пароль не забывался даже после его выдачи, вы можете использовать:
$ doas -L
После выполнения приведенной выше команды при запуске другой вам будет предложено повторно ввести пароль учетной записи пользователя, что полезно, когда кто-то запрашивает немедленный доступ к вашей системе.
Doas — удивительный инструмент с множеством дополнительных параметров настройки, не рассмотренных в этой статье. Мы планируем рассказать о них в будущих статьях, так что следите за обновлениями! Если вам срочно нужен конкретный вариант использования, пожалуйста, сообщите нам об этом в разделе комментариев.