doas (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи doas. Дата последней синхронизации: 26 января 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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 очищает сохраненную аутентификацию до истечения автоматического таймаута.

Примечание: Функция persist отключена по умолчанию, поскольку она является новой и потенциально опасной. В оригинальном doas для установки и сброса таймаутов используется API ядра. Этот API специфичен для OpenBSD, и его аналогов в других операционных системах нет. В качестве обходного пути функция persist реализована с использованием timestamp-файлов аналогично sudo.

Плавный переход от sudo к doas

Для плавного перехода от sudo к doas и для сохранения совместимости можно добавить:

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

Или сделать символическую ссылку (sudoedit(8) не предоставляется):

# ln -s $(which doas) /usr/bin/sudo

Другой способ - установить doas-sudo-shimAUR, который эмулирует несколько вариантов sudo.

Примечание: По умолчанию sudo сохраняет некоторые переменные окружения, а doas — нет, в частности, XAUTHORITY, LANG и LC_ALL. Это означает, что вы не сможете запустить графические приложения под X или получить доступ к локали пользователя без дополнительной настройки. Например, чтобы разрешить членам группы wheel запускать графические приложения и получать доступ к локали пользователя, используйте опцию setenv:
/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