doas (Русский) - ArchWiki

Jump to content

# doas (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи 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

Categories:

- Security (Русский)
- Commands (Русский)

doas (Русский)
Add topic