Содержание

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

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

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

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

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

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

Инструмент командной строки doas очень популярен, а его пакет доступен в большинстве репозиториев Linux, что упрощает его установку через менеджер пакетов.

Debian/Ubuntu

$ sudo apt install doas

Red Hat/Fedora

$ sudo dnf install opendoas

ArchLinux

$ sudo pacman -S opendoas

Void Linux

$ sudo xbps-install opendoas

После установки убедимся в успешной установке, запустив:

$ doas

Вывод команды:

Использование doas в Linux

Теперь, когда doas установлен, возникает вопрос, как его использовать. Если запустить команду, добавив ее к другой команде, можно увидеть, что произойдет.

$ doas ls /

Получим:

Выводится ошибка doas is not enabled (doas не включен). Как говорилось выше, doas не имеет предустановленный файл конфигурации. Поэтому придется вручную создать новый файл конфигурации /etc/doas.conf, который будет соответствовать нашим потребностям.

В конфигурационном файле doas доступно множество различных и, при этом, простых настроек. Одна из важных — разрешить одному пользователю или пользователям из группы «wheel» выполнять команды от имени пользователя root. Ниже перечислены все остальные настройки, которые необходимо знать.

Разрешить Root-доступ

Первым шагом будет создание файла doas.conf с помощью предпочитаемого вами текстового редактора (для меня это Nano), используя приведенную ниже команду, которая также запросит пароль вашей учетной записи.

$ sudo nano /etc/doas.conf

Чтобы создать правило, позволяющее пользователям выполнять действия от имени администратора, необходимо добавить следующую строку (замените «testuser» на реальное имя пользователя).

permit testuser as root

Важно отметить, что настройки, сделанные в конфигурационном файле doas, применяются только к указанному пользователю (в данном случае «linuxtldr»). Однако если несколько пользователей используют одну и ту же систему и вы хотите, чтобы они использовали doas в качестве замены sudo, вам следует использовать группу типа «wheel» или «sudo», членами которой уже являются эти пользователи, и предоставить им root-доступ в этой группе, используя следующее правило:

permit :wheel as root

или

permit :sudo as root

Сохраните и закройте файл, и при выполнении любой команды с doas в качестве пользователя root он предложит вам ввести пароль учетной записи пользователя. В случае указания непосредственно пользователя, он должен находится в группе sudo. Соответственно в случае указания группы, пользователи должны быть в указанной группе.

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

Использование функции persist

doas предлагает функцию persist, которая сохраняет состояние после успешной аутентификации пользователя, временно освобождая от запросов пароля. По умолчанию эта функция отключена. Чтобы активировать её для пользователя или группы, достаточно добавить опцию «persist» после оператора «permit».

Сохранение состояния пользователя testuser

permit persist testuser as root

Сохранение состояния пользователей группы wheel

permit persist :wheel as root

Разрешить пользователям выполнять команды без пароля

Если вы используете какую-либо команду многократно и хотите обойтись без ввода паролей, вы можете легко сделать это как для пользователей, так и для членов группы. Например, первая строка ниже позволит пользователю testuser запускать команду mc без пароля в качестве пользователя root, а вторая строка даст всем пользователям группы wheel возможность запускать команду apt без пароля в качестве пользователя root.

permit nopass testuser as root cmd mc
permit nopass :wheel as root cmd apt

Проверка конфигурационного файла 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"

Увидим наличие или отсутствие синтаксических ошибок. Так что, если полностью заменить 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», чтобы отобразить список предложенных команд.

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

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

$ doas -u user command

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

$ doas -s

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

$ doas -L

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