Права суперпользователя в Debian: настройка sudo и visudo
В Linux реализована система разграничения прав пользователей, благодаря которой каждая учетная запись имеет собственный уровень доступа к файлам, каталогам и программам. Наибольшие полномочия присвоены встроенному пользователю root. Новые аккаунты по умолчанию имеют ограниченные права: они не могут изменять системные конфигурации, управлять сервисами или устанавливать и удалять пакеты без дополнительных привилегий. Прямое использование root для повседневной работы не рекомендуется из соображений безопасности. В таких случаях на помощь приходит команда sudo, которая позволяет запускать отдельные команды с повышенными правами без необходимости работать под root.
Команда sudo дает возможность выполнять команды с привилегиями суперпользователя, используя обычную учетную запись. Давайте посмотрим, что необходимо для корректной работы этой утилиты и как её настроить.
Установка и настройка
В ОС Ubuntu sudo включена по умолчанию, а в Debian, если в процессе установки не был выбран соответствующий пакет, скорее всего будет следующая картина:
root@debian10:~# sudo
-bash: sudo: command not foundЗначит, требуется установить недостающий пакет. Обновляем информацию о репозиториях и устанавливаем sudo:
apt-get update
apt-get install sudoДожидаемся окончания процесса.

После успешной установки потребуется сконфигурировать sudo, определив, какие пользователи или группы смогут использовать повышение привилегий и в каком объеме. Все эти настройки хранятся в конфигурационном файле /etc/sudoers, однако вносить в него изменения напрямую настоятельно не рекомендуется. Для этих целей используется специальная команда:
visudoкоторая запускает текстовый редактор с конфигурационным файлом.
За предоставление прав здесь отвечают две строки:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALLПервая строка назначает права для учетной записи root, вторая устанавливает права для членов группы sudo, которая была создана при установке пакета (знак % перед названием означает, что имя относится к группе пользователей). Соответственно, у нас есть два основных способа предоставить пользовательской учетной записи право использовать sudo:
Добавить учетную запись пользователя (например, user) в группу sudo на сервере:
usermod –a –G sudo userПосле изменения членства в группе, потребуется заново авторизоваться в этой учетной записи для применения новой конфигурации. Данный метод рекомендуется в тех случаях, когда пользователю необходимо предоставить полные права.
Создать в файле новую запись, например, для учетной записи user. Мы добавляем строку по аналогии с root:
user ALL=(ALL:ALL) ALLДобавлять новую запись рекомендуется в тех случаях, когда список привилегий будет корректироваться (об этом чуть позднее). Если мы внесли изменения в файл, нужно их сохранить нажатием сочетания клавиш Ctrl-O и выйти из редактора — Ctrl-X.
Теперь можно проверить корректность работы:
user@debian10:~$ sudo cat /etc/sudoers
[sudo] password for user:Команда sudo запрашивает пароль текущего пользователя (в данном случае это user) — вводим его, и, если все сделано правильно, мы увидим содержание системного конфигурационного файла.
Тонкая настройка
Таким образом, обычный пользователь может запускать команды с правами учетной записи root не зная ее пароль. Это очень удобно, но может быть небезопасно — есть ли возможность ограничить круг команд, которые можно исполнять посредством sudo? Да, и поможет нам в этом тот же самый конфигурационный файл. Снова запускаем visudo и разбираемся дальше. Нас интересуют параметры, указанные после имени пользователя.
Разберем их подробнее:
- ALL=(ALL:ALL) ALL — первый параметр определяет к какому хосту применяется конфигурация. При использовании выделенного сервера параметр можно оставить без изменений;
- ALL=(ALL:ALL) ALL — параметры в скобках определяют с полномочиями какого пользователя (первый параметр) и/или группы (второй параметр) будет выполняться команда. По умолчанию sudo выполняет команду от имени root, однако при запуске с ключом –u можно указать другую учетную запись, а с ключом –g другую группу, чьи полномочия будут использованы при запуске;
- ALL=(ALL:ALL) ALL — третий параметр определяет к каким файлам и командам относятся данные настройки.
Исходя из вышесказанного, при необходимости определить перечень разрешенных команд заменяем последний параметр ALL тем, что нам требуется, перечисляя команды через запятую. Например, строка:
user ALL=(ALL:ALL) /sbin/shutdown –r, /bin/catдает право пользователю user с помощью sudo осуществлять перезагрузку сервера командой sudo /sbin/shutdown –r и просматривать файлы с помощью sudo /bin/cat. Другие команды через sudo выполняться не будут. Например, при попытке выключить сервер командой sudo /sbin/shutdown –h, получим ответ:
Sorry, user user is not allowed to execute '/sbin/shutdown -h' as root on debian10.Полезное
Увидеть список привилегий можно, запустив sudo –l (будет отображен список для текущего пользователя), либо sudo –l –U user (будет отображен список привилегий пользователя user):

В состав sudo входит команда sudoedit, которая запускает текстовый редактор с указанным файлом сразу с повышенными привилегиями, то есть вместо команды:
sudo nano /etc/network/interfacesможно запустить:
sudoedit /etc/network/interfacesЕсли планируется продолжительная работа с правами суперпользователя и вводить sudo перед каждой командой неудобно, можно открыть сессию командного интерпретатора через sudo:
sudo bashи продолжить работу в нем — все команды будут запускаться с повышенными правами. По завершении работы выходим из интерпретатора командой exit.
FAQ
- Вопрос: Что такое sudo и зачем он нужен?
Ответ: Sudo позволяет пользователям выполнять команды с привилегиями суперпользователя, не используя напрямую учетную запись root. Это повышает безопасность системы, так как доступ к root ограничен и контролируется. - Вопрос: Как добавить пользователя в группу sudo?
Ответ: Используйте команду usermod -a -G sudo имя_пользователя. После изменения членства потребуется повторная авторизация пользователя, чтобы изменения вступили в силу. - Вопрос: Можно ли ограничить команды, которые пользователь может выполнять через sudo?
Ответ: Да, в файле конфигурации /etc/sudoers можно указать конкретные команды для пользователя или группы, заменяя последний параметр ALL нужными программами или скриптами.
Вывод
Использование sudo и правильная настройка через visudo позволяют безопасно управлять привилегиями пользователей в Debian. Это снижает риски работы под root, обеспечивает гибкость контроля доступа к системным ресурсам и помогает грамотно разграничивать права между пользователями. Правильная конфигурация sudo также позволяет ограничивать круг команд и повышать безопасность сервера без ущерба для удобства работы.