sudo и su: управление привилегиями
sudo и su в Linux: как запускать команды от имени root, переключаться между пользователями и безопасно управлять привилегиями.
sudo («superuser do») позволяет выполнить одну команду с правами другого пользователя (обычно root), не зная его пароля. su («switch user») полностью переключает сессию на другого пользователя.
sudo — запуск от имени root
Самый распространённый способ повышения прав. Пользователь вводит свой пароль, и система проверяет, есть ли у него разрешение в файле /etc/sudoers.
# Обновить список пакетов (требует root)
sudo apt update
# Открыть файл конфигурации от имени root
sudo nano /etc/hosts
# Посмотреть, какие команды разрешены текущему пользователю
sudo -l
Вывод sudo -l (фрагмент):
User alice may run the following commands on server:
(ALL : ALL) ALL
После успешного ввода пароля sudo «запоминает» аутентификацию на 15 минут — повторный ввод пароля не требуется в течение этого времени.
Добавление пользователя в sudo
# На Ubuntu/Debian — добавить в группу sudo
sudo usermod -aG sudo bob
# На CentOS/RHEL — добавить в группу wheel
sudo usermod -aG wheel bob
После этого bob сможет использовать sudo. Изменения вступят в силу при следующем входе.
su — смена пользователя
su запускает новую оболочку от имени другого пользователя. В отличие от sudo, требует пароль целевого пользователя.
Команда | Действие |
| переключиться на bob (пароль bob) |
| переключиться с загрузкой окружения bob |
| стать root (пароль root) |
| вернуться в исходную сессию |
# Переключиться на bob
su - bob
# Теперь мы bob — с его переменными окружения и домашним каталогом
whoami
# Выйти обратно
exit
Вывод:
bob
sudo su — стать root через sudo
Если пароль root неизвестен (например, на Ubuntu он заблокирован по умолчанию), войти как root можно через:
sudo su -
# или
sudo -i
Оба варианта открывают оболочку root с загрузкой его окружения. Используйте осторожно — в режиме root нет защитных ограничений.
Редактирование /etc/sudoers
# ВСЕГДА редактируйте sudoers только через visudo
sudo visudo
Команда
visudoпроверяет синтаксис перед сохранением. Ошибка в/etc/sudoersможет заблокировать все привилегии — прямое редактирование через nano опасно.
Частые ошибки
- «alice is not in the sudoers file» — пользователь не добавлен в группу sudo/wheel.
- su без дефиса (
su bobвместоsu - bob) — переключает пользователя, но не загружает его PATH и переменные; команды могут не найтись. - Прямое редактирование /etc/sudoers — используйте только
visudo.
Коротко
sudo команда— выполнить одну команду от root; вводится свой пароль.sudo -l— посмотреть разрешённые команды.usermod -aG sudo имя— дать пользователю права sudo (Ubuntu).su - имя— переключить сессию на другого пользователя с его окружением.sudo visudo— единственный безопасный способ редактировать/etc/sudoers.