doas (Русский)

From ArchWiki

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

OpenDoas — Linux-порт команды doas из OpenBSD, которая известна тем, что имеет значительно меньший размер по сравнению с sudo. Как и sudo, doas используется для выполнения команд от имени других пользователей.

Установка

Установите пакет opendoas.

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

Для запуска doas от имени обычного пользователя требуется предварительная #Настройка.

Для использования doas просто добавьте doas и пробел перед нужной командой:

$ doas команда

Пример запуска pacman:

$ doas pacman -Syu

Запуск интерактивной облочки root:

$ doas -s

Смотрите doas(1) для более подробной информации.

Настройка

Вместе с doas устанавливается модуль PAM, но по умолчанию для него нет конфигурации или примеров.

Чтобы разрешить членам группы wheel выполнять команды от имени других пользователей, создайте файл настроек со следующим содержимым:

/etc/doas.conf
permit :wheel

Примечание: В конце файла обязательно должна быть пустая строка.

Владелец и группа файла /etc/doas.conf должны быть 0, права доступа к файлу должны быть установлены на 0400:

# chown -c root:root /etc/doas.conf
# chmod -c 0400 /etc/doas.conf

Для проверки синтаксиса файла /etc/doas.conf выполните команду:

# doas -C /etc/doas.conf && echo "config ok" || echo "config error" 
Важно: В файле /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 :wheel
Примечание: Функция 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
Примечание: По умолчанию 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