doas (Русский)
OpenDoas — Linux-порт команды doas из OpenBSD, которая известна тем, что имеет значительно меньший размер по сравнению с sudo. Как и sudo, doas используется для выполнения команд от имени других пользователей.
Установка
Установите пакет opendoas.
Использование
Для запуска doas от имени обычного пользователя требуется предварительная #Настройка.
Для использования doas просто добавьте doas
и пробел перед нужной командой:
$ doas команда
Пример запуска pacman:
$ doas pacman -Syu
Запуск интерактивной оболочки от имени другого пользователя (если не указан -u user
по умолчанию root):
$ doas -su user
Вход от имени другого пользователя требуется для некоторых команд, смотрите Sudo#Login shell.
Смотрите doas(1) для более подробной информации.
Настройка
Вместе с doas устанавливается модуль PAM, но по умолчанию для него нет конфигурации или примеров.
Чтобы разрешить членам группы wheel выполнять команды от имени других пользователей, создайте файл настроек со следующим содержимым:
/etc/doas.conf
permit setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel
- В конце файла обязательно должна быть пустая строка.
- Параметр
setenv
позволяет обойти issue, возникающую из-за происхождения OpenDoas BSD, где дополнительные системные пакеты хранятся в/usr/local/bin
. В Linux/usr/local/bin
обычно используется для переопределения исполняемых файлов, поэтому он стоит перед/usr/bin
, который содержит исполняемые файлы из пакетов.
Владелец и группа файла /etc/doas.conf
должны быть 0
, права доступа к файлу должны быть установлены на 0400
:
# chown -c root:root /etc/doas.conf # chmod -c 0400 /etc/doas.conf
Для проверки синтаксиса файла /etc/doas.conf
выполните команду:
# if doas -C /etc/doas.conf; then echo "config ok"; else echo "config error"; fi
/etc/doas.conf
не должно быть синтаксических ошибок!Чтобы разрешить членам группы plugdev
запускать smartctl от имени root без запроса пароля:
/etc/doas.conf
permit nopass :plugdev as root cmd /usr/bin/smartctl
Базовый синтаксис файла /etc/doas.conf
выглядит так:
permit|deny [опции] личность [as цель] [cmd команда [аргументы ...]]
Последнее совпадающее правило определяет выполняемое действие, поэтому правила должны быть упорядочены соответствующим образом.
Смотрите doas.conf(5) для более подробной информации.
Советы и рекомендации
Запоминание
doas имеет функцию запоминания: после успешной аутентификации пользователя в течение некоторого времени ему больше не будет предлагаться вводить пароль. По умолчанию она отключена, включить её можно с помощью опции persist
:
/etc/doas.conf
permit persist setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel
Выполнение doas -L
очищает сохраненную аутентификацию до истечения автоматического таймаута.
Плавный переход от sudo к doas
Для плавного перехода от sudo к doas и для сохранения совместимости можно добавить:
alias sudo='doas' alias sudoedit='doas rnano'
Или сделать символическую ссылку (sudoedit(8) не предоставляется):
# ln -s $(which doas) /usr/bin/sudo
Другой способ - установить doas-sudo-shimAUR, который эмулирует несколько вариантов sudo.
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel
Автодополнение в bash
По умолчанию Bash использует автодополнение по Tab только для файлов и каталогов внутри текущего или указанного каталога. Чтобы указать Bash заполнять аргументы, как если бы они были отдельными командами (также используя настройки автодополнения других команд), можно добавить следующее в пользовательский .bashrc
или в общесистемный /etc/bash.bashrc
:
~/.bashrc
complete -cf doas
Если установлен bash-completion, то вместо этого можно использовать следующее, чтобы обеспечить дополнительное автодополнение для требуемой команды:
~/.bashrc
complete -F _command doas