Смена пользователя в Linux: su, sudo и переключение контекста

Если ты хоть раз работал с Linux, то наверняка сталкивался с ситуацией, когда нужно выполнить команду не от своего имени, а от другого пользователя или даже от root. Тут в игру вступают такие команды как su и sudo. Многие новички путают их, используют вслепую и нередко нарываются на проблемы с безопасностью или просто ломают систему. Давай разберёмся, зачем вообще менять пользователя, как это делать правильно и какие подводные камни тут могут быть.

Возможности

  • Выполнение команд от имени другого пользователя (например, root или какого-нибудь сервисного юзера).
  • Доступ к файлам и процессам, которые не доступны текущему пользователю.
  • Безопасное делегирование прав (например, дать пользователю возможность перезапускать сервис, но не лезть в остальное).
  • Переключение контекста для тестирования, отладки или автоматизации.

Что требуется

  • ОС: Любой современный дистрибутив Linux — Ubuntu, Debian, CentOS, Fedora и т.д.
  • Железо: Любое, где крутится Linux. Даже Raspberry Pi подойдёт.
  • Доступ: Терминал с правами обычного пользователя (иногда нужны права sudo для настройки).

Установка — пошаговая инструкция

На большинстве систем su и sudo уже установлены. Но если вдруг чего-то не хватает, вот как поставить:

1. Проверяем наличие

which su
which sudo

Если что-то из этого не найдено — идём дальше.

2. Установка sudo

Для Debian/Ubuntu:

sudo apt update
sudo apt install sudo

Для CentOS/RHEL:

su -
yum install sudo

3. Добавление пользователя в группу sudo (Debian/Ubuntu)

sudo usermod -aG sudo <username>

В CentOS/RHEL аналогичная группа называется wheel:

sudo usermod -aG wheel <username>

4. Проверяем, что всё работает

sudo whoami

Если ответ — root, значит всё ок.

Использование: команды и варианты

1. su — смена пользователя (Switch User)

По умолчанию переключает на root:

su

Для переключения на другого пользователя:

su <username>

С опцией - (или -l) полностью меняет окружение на окружение нового пользователя (рекомендуется):

su - <username>

Выйти обратно — просто exit или Ctrl+D.

2. sudo — выполнение одной команды с повышенными правами

Выполнить команду как root:

sudo <команда>

Выполнить команду от имени другого пользователя:

sudo -u <username> <команда>

Получить полноценную root shell (не рекомендуется, но иногда надо):

sudo -i

или

sudo su -

Для просмотра, что именно можно делать через sudo:

sudo -l

3. Переключение контекста (например, для сервисных пользователей)

Часто используется для запуска сервисов или отладки:

sudo -u www-data bash

или

su - www-data

4. Быстрое выполнение команды от другого пользователя без смены shell

su -c 'команда' <username>

Пример:

su -c 'ls /root' root

Ошибки и как делать не надо

  • Не запускай sudo su или su без нужды — это увеличивает риск ошибок и потенциальных проблем с безопасностью.
  • Не работай постоянно под root — если что-то пойдёт не так, можно снести полсистемы одной командой.
  • Не добавляй себя в sudoers с ALL=(ALL) NOPASSWD: ALL без понимания последствий.
  • Не используй su для запуска сервисов в автоматизации — лучше sudo с правильной настройкой /etc/sudoers.
  • Не забывай выходить из shell, если переключился на другого пользователя.

Пример реального использования

Сценарий: нужно перезапустить nginx на сервере, не имея root-доступа по ssh, но есть sudo на своём юзере.

sudo systemctl restart nginx

Если нужно посмотреть, как работает скрипт от имени пользователя www-data:

sudo -u www-data bash
cd /var/www/html
php artisan migrate
exit

Для быстрого теста команды от другого пользователя:

sudo -u postgres psql

Заключение

Смена пользователя и работа с su и sudo — это не только про удобство, но и про безопасность. Используй их с умом, не давай себе или другим лишних прав, и всегда проверяй, от чьего имени запускаешь команды. Если хочешь глубже разобраться, советую почитать официальные мануалы:

Если есть вопросы — добро пожаловать в комментарии, всегда рад помочь!

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *