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, требует пароль целевого пользователя.

Команда

Действие

su bob

переключиться на bob (пароль bob)

su - bob

переключиться с загрузкой окружения bob

su -

стать root (пароль root)

exit

вернуться в исходную сессию

# Переключиться на 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.
Проверьте себя
1. Чем sudo отличается от su?
Asudo требует пароль root, su — свой пароль
Bsudo выполняет одну команду от root, su переключает всю сессию
Csudo работает только для администраторов, su — для всех
DНичем, это синонимы
2. Зачем использовать su - bob вместо su bob?
AРазницы нет
Bsu - bob загружает окружение bob (PATH, переменные, домашний каталог)
Csu - bob не требует пароля
Dsu - bob переключает только в /tmp
3. Как безопасно редактировать файл /etc/sudoers?
Asudo nano /etc/sudoers
Bsudo vim /etc/sudoers
Csudo visudo
Dsudo cat > /etc/sudoers
Поддержать проект