doas (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
doas
. Дата последней синхронизации: 5 сентября 2025. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Пользователи и группы
sudo (Русский)
Список приложений/Безопасность#Повышение привилегий
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
имеет функцию запоминания: после успешной аутентификации пользователя в течение 5 минут ему больше не будет предлагаться вводить пароль. По умолчанию она отключена, включить её можно с помощью опции
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 /usr/bin/doas /usr/local/bin/sudo
Примечание
Некоторые пакеты, такие как
devtools
, имеют строгую зависимость от
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