ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как установить и использовать Doas в Linux (с 9 примерами)

Как установить и использовать Doas в Linux (с 9 примерами)

Doas – это программа повышения привилегий, аналогичная sudo. Изначально он был разработан для OpenBSD, что позволяет пользователям запускать команды так, как если бы они были другим пользователем (например, root), а позже, благодаря своей простоте и уникальной функциональности, был портирован на многие другие системы Linux.

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

Если вы когда-либо редактировали файл конфигурации sudo с помощью visudo, который открывает файл “/etc/sudoers” в безопасном режиме, вы заметите, что файл конфигурации полон сложного синтаксиса, и даже небольшое изменение достаточно сложно, чтобы тщательно проверить его на наличие потенциальных синтаксических ошибок.

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

 

Как установить Doas в Linux

Инструмент командной строки 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 в Linux

Теперь, когда у вас установлен 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. Итак, включая это и все другие настройки, которые следует знать, перечислены ниже.

 

Разрешить 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

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

После завершения редактирования файла конфигурации 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 к Doas

Вполне возможно, что вы все еще неосознанно используете команду sudo по привычке, от которой вы можете избавиться, создав псевдоним “sudo” для команды “doas”. Не беспокойтесь о совместимости, поскольку “doas” практически совместимы с “sudo“.

Итак, чтобы создать псевдоним, измените файл конфигурации вашей оболочки (“~ /.bashrc” для bash) и добавьте следующую строку в конце.

alias sudo='doas'
alias sudoedit='doas rnano'

 

По завершении сохраните и закройте файл; теперь, когда вы используете команду “sudo”, она будет выполняться как команда “doas”.

 

Завершение работы вкладки Bash

Чтобы позволить Bash обрабатывать аргументы как отдельные команды (и использовать настройки завершения вкладки для других команд), добавьте следующую строку в свой конфигурационный файл “~ /.bashrc”.

complete -cf doas

 

Сохраните и закройте файл, затем введите несколько инициалов любой команды и нажмите “Tab“, чтобы отобразить список предлагаемых команд.

andreyex@linux:-$ doas user
useradd                 usermod                  user-session-migration
userdel                 users

 

 

Примеры команд Doas

Основное использование команды doas предполагает выполнение команды от имени пользователя root. Однако существуют дополнительные способы использования doas, например выполнение команды, которую таким образом может выполнить другой пользователь.

$ doas -u user command

 

Чтобы запустить оболочку по умолчанию от имени root, вы можете использовать:

$ doas -s

 

Чтобы пароль не забывался даже после его выдачи, вы можете использовать:

$ doas -L

 

После выполнения приведенной выше команды при запуске другой вам будет предложено повторно ввести пароль учетной записи пользователя, что полезно, когда кто-то запрашивает немедленный доступ к вашей системе.

 

Выводы

Doas – удивительный инструмент с множеством дополнительных параметров настройки, не рассмотренных в этой статье. Мы планируем рассказать о них в будущих статьях, так что следите за обновлениями! Если вам срочно нужен конкретный вариант использования, пожалуйста, сообщите нам об этом в разделе комментариев.

Exit mobile version