В этой статье разберём:
- как работает sudo и зачем нужен
visudo; - как добавить пользователя в sudo-группу;
- как редактировать sudoers-файл и ограничить доступ к определённым командам;
- как безопасно проверять настройки и откатывать изменения.
Проверка наличия sudo и базовая информация
Во многих системах (Ubuntu, Debian, CentOS) sudo предустановлен по умолчанию. Проверим, установлен ли он:
sudo -V
Если команда не найдена, установите пакет:
sudo apt update
sudo apt install -y sudo
После установки проверьте, что sudo доступен для текущего пользователя:
sudo whoami
Если вывод — root, значит sudo работает корректно.
Добавление пользователя в группу sudo
Чтобы разрешить пользователю выполнять команды через sudo, добавьте его в группу sudo (Ubuntu/Debian) или wheel (CentOS/RHEL).
Ubuntu / Debian
sudo usermod -aG sudo username
CentOS / RHEL
sudo usermod -aG wheel username
Проверить, что пользователь добавлен в группу, можно командой:
groups username
Совет: чтобы изменения вступили в силу, выйдите из системы и войдите заново.
Редактирование sudoers с помощью visudo
Файл /etc/sudoers определяет, кто может использовать sudo и какие команды ему разрешены. Редактировать его напрямую опасно — ошибка в синтаксисе может заблокировать sudo. Для этого существует безопасный редактор visudo.
Открываем sudoers
sudo visudo
По умолчанию откроется nano или vi с конфигурацией. Найдите строку:
root ALL=(ALL:ALL) ALL
Чтобы дать пользователю admin полные права:
admin ALL=(ALL:ALL) ALL
Сохраняем изменения и проверяем:
sudo -l -U admin
Если отображается список доступных команд — настройка выполнена успешно.
Ограничение доступа к командам
Необязательно давать пользователю полный доступ к sudo. Можно разрешить выполнение только определённых команд.
Пример: разрешить пользователю deploy только перезапуск службы Nginx:
deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx
Теперь пользователь сможет выполнять только:
sudo systemctl restart nginx
и ничего другого с повышенными правами.
NOPASSWD: — означает, что sudo не запросит пароль. Если хотите повышенную безопасность, уберите этот префикс.
Настройка алиасов и групп пользователей
Для удобства можно создавать алиасы групп пользователей или команд прямо в sudoers.
Пример:
# Группы пользователей
User_Alias ADMINS = admin, dmitriy
User_Alias OPERATORS = deploy, editor
# Группы команд
Cmnd_Alias SYSTEM_CMDS = /bin/systemctl restart nginx, /bin/systemctl restart apache2
# Права
ADMINS ALL=(ALL) ALL
OPERATORS ALL=(ALL) NOPASSWD: SYSTEM_CMDS
Так можно централизованно управлять правами для нескольких пользователей.
Безопасное редактирование и проверка конфигурации
После сохранения файла visudo автоматически проверяет синтаксис. Если редактировали вручную — можно проверить вручную:
sudo visudo -c
Для просмотра всех прав пользователя:
sudo -l
Если получили ошибку «permission denied» при выполнении sudo — возможно, у вас нет прав или файл sudoers повреждён. Используйте веб-консоль или root-доступ для восстановления резервной копии:
sudo cp /etc/sudoers.bak /etc/sudoers
Рекомендации по безопасности
-
Не давайте пользователям полный root-доступ без необходимости.
-
Используйте ограниченные команды и алиасы.
-
Не редактируйте
/etc/sudoersнапрямую — только черезvisudo. -
Регулярно проверяйте лог
/var/log/auth.logна использование sudo. -
Отключайте sudo-доступ у бывших сотрудников или временных пользователей.
Итоги
-
Установили и настроили sudo для делегирования привилегий.
-
Добавили пользователей в группу sudo и настроили индивидуальные права.
-
Научились редактировать sudoers безопасно через visudo.
-
Разобрали ограничение команд, алиасы и проверку конфигурации.
Вывод: правильно настроенный sudo повышает безопасность и управляемость VPS. Он позволяет давать пользователям ровно столько прав, сколько нужно — без риска повреждения системы или утечки данных.