Если ты хоть раз работал с 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
— это не только про удобство, но и про безопасность. Используй их с умом, не давай себе или другим лишних прав, и всегда проверяй, от чьего имени запускаешь команды. Если хочешь глубже разобраться, советую почитать официальные мануалы:
Если есть вопросы — добро пожаловать в комментарии, всегда рад помочь!
Ваш отзыв