doas — простая альтернатива sudo в Linux

Что такое doas?
doas — это утилита для выполнения команд от имени другого пользователя (обычно root). Её разработали в проекте OpenBSD как минималистичную, простую и безопасную альтернативу sudo. С точки зрения поведения пользователя она выполняет те же задачи: позволяет запускать административные команды без полного входа под root.
Коротко:
- permit — правило авторизации;
- nopass — пропуск запроса пароля;
- persist — кратковременная «временная авторизация» после ввода пароля;
- cmd — ограничение списка разрешённых команд.
Установка
doas доступен в официальных репозиториях большинства дистрибутивов. Названия пакетов могут отличаться.
Debian / Ubuntu (в новых выпусках):
sudo apt install doasПримечание: пакет присутствовал в репозитории Ubuntu начиная с 21.04; в старых LTS-релизах его могло не быть.
Arch Linux:
sudo pacman -S opendoasFedora / CentOS (DNF):
sudo dnf install opendoasПосле установки сам исполняемый файл обычно называется doas (пакет может быть opendoas).
Базовая конфигурация: /etc/doas.conf
Файл /etc/doas.conf управляет правилами. Формат прост и читаем.
Примеры правил:
Разрешить пользователю username выполнять любые команды от root и включить «grace period»:
permit persist username as rootРазрешить группе wheel (если на системе есть группа с таким названием):
permit persist :wheel as rootРазрешить запуск только apt/apt-get без пароля:
permit nopass user cmd apt cmd apt-get as rootРекомендации по написанию правил:
- указывайте полные пути к программам, если хотите быть точнее (например, /usr/bin/apt);
- предпочитайте ограниченные cmd-правила вместо глобального доступа;
- избегайте nopass для привилегированных операций, если это не обосновано;
- храните резервные копии /etc/doas.conf перед изменением.
Как использовать doas
Синтаксис похож на sudo:
doas apt updateЗапуск от имени другого пользователя (например, testuser):
doas -u testuser commandЕсли у вас включён persist, после одного успешного ввода пароля последующие doas-команды в течение короткого времени не потребуют пароль.
Когда doas удобен
- Простые сценарии делегирования прав — дать пользователю несколько команд без сложной политики.
- Среда с небольшим количеством администраторов, где читаемость конфигурации важнее богатства возможностей.
- Когда нужен лёгкий, быстрый бинарник с малым числом зависимостей.
Когда лучше оставить sudo
- Нужны сложные правила (контекстные условия, фильтры по хосту, временные ограничения и др.).
- Используются внешние плагины, логирование в специализированные системы или централизованное управление (LDAP, SSSD и пр.).
- Требуется совместимость со скриптами/инструментами, которые ожидают именно sudo.
Миграция и чеклист администратора
Чеклист перед переходом с sudo на doas:
- Проверьте наличие doas в репозиториях целевых хостов.
- Переведите самые простые правила из /etc/sudoers в /etc/doas.conf (ограниченные cmd).
- Тестируйте на отдельной машине: аутентификация, persist, отказ в доступе.
- Проверьте логи и мониторинг (как регистрируются вызовы doas). Если нужно, настройте syslog/rsyslog для записи сообщений.
- Подготовьте откатный план: сохраните и верните файл /etc/sudoers и установите sudo обратно.
Пример шаблона миграции для одной функции (обновление пакетов):
- В sudoers было: give group wheel ALL=(ALL) NOPASSWD: /usr/bin/apt
- В doas.conf добавить:
permit nopass :wheel cmd /usr/bin/apt cmd /usr/bin/apt-get as root- Проверить: пользователь из wheel запускает doas apt update без пароля.
Критерии приёмки
- Пользователь запускает doas apt update и получает ожидаемый результат.
- Неавторизованные команды блокируются.
- Логи фиксируют попытки запуска привилегированных команд.
- Откатная процедура восстанавливает sudo-конфигурацию без потерь доступа.
Безопасность и рекомендации
- Минимизируйте список разрешённых команд.
- Используйте полные пути к бинарникам в правилах cmd.
- По возможности избегайте nopass для команд, меняющих систему.
- Держите doas и систему в актуальном состоянии.
Сравнение doas и sudo
| Критерий | doas | sudo |
|---|---|---|
| Простота конфигурации | высокая | ниже |
| Размер и зависимост | мал | больше |
| Богатство возможностей | ограничено | очень много |
| Наличие в репозиториях | растёт | везде |
| Подходит для крупных инсталляций | лишь частично | да |
Примеры команд и сниппет
Разрешить конкретному пользователю запуск systemctl без пароля:
permit nopass username cmd /bin/systemctl as rootЗапуск от имени другого пользователя:
doas -u postgres psqlЧеклист для ролей:
- Операторы: проверяют работу правил и логи.
- Администраторы: пишут безопасные правила cmd с полными путями.
- Инженеры безопасности: контролируют использование nopass и аудит.
Когда doas не подойдёт (галерея краевых случаев)
- Необходимы правила, зависящие от имени хоста или времени суток.
- Требуется интеграция с SSO или внешней системой авторизации.
- Большая инфраструктура с централизованным управлением политик.
Глоссарий (1 строка каждая)
- doas — минималистичная программа для выполнения команд от имени другого пользователя.
- permit — директива в /etc/doas.conf, дающая право на выполнение.
- nopass — опция, позволяющая пропустить ввод пароля.
- persist — опция, предоставляющая короткий период повторного доступа без пароля.
Краткое резюме
doas хорош там, где важна простота, читаемость конфигурации и низкая эксплуатационная сложность. Для простых задач по делегированию прав он часто предпочтительнее sudo. Однако в крупных средах и при требованиях к тонкой политике безопасности sudo пока остаётся более универсальным и распространённым решением.
Важно: перед массовым переходом протестируйте конфигурации и подготовьте план отката.
Похожие материалы
Отключить Protected View в Microsoft Word
Устранение двойного NAT: роутер + модем ISP
Исправить Microsoft.Photos.exe: высокое использование памяти
Включить «Разрешить ненадёжные команды» на iPhone
Водяной знак на PDF на Mac — Automator Quick Action