13. Команда su и переключение пользователей в Linux
Введение
В Linux безопасность основана на разделении пользователей и их прав. В отличие от Windows, где многие программы часто требуют прав администратора, в Linux каждый пользователь работает строго в своём контексте.
Для переключения на другого пользователя существует команда su.
Команда su используется реже, чем sudo, но остаётся важной частью понимания безопасности в Linux.
Что такое su
su (от substitute user или switch user) — это одна из базовых команд Unix/Linux, появившаяся ещё в самых ранних версиях ОС. Её ключевая задача — позволить переключиться в другого пользователя, полностью «примерив» его учетную запись.
Основная идея su
Команда предназначена для ситуаций, когда требуется работать от имени другого пользователя, обычно — администратора (root). При этом:
- su не выполняет одну команду, а открывает целую сессию оболочки;
- все действия внутри этой сессии выполняются от имени выбранного пользователя;
- требуется пароль того пользователя, на которого осуществляется переход.
Как su работает «под капотом»
Когда запускается команда su, ОС выполняет несколько шагов:
- Проверяет, какой пользователь указан (если не указан — предполагается root).
- Запрашивает его пароль.
- Создаёт новую shell-сессию с UID и GID выбранного пользователя.
- Меняет переменные окружения (если указан флаг ).
- Передаёт управление пользователю.
То есть su — это полноценный «вход в систему» внутри уже работающей сессии.
Примеры команд su
Перейти в root:
su
или
su root
Перейти к пользователю student:
su student
Перейти с загрузкой профиля пользователя (аналог «полноценного входа»):
su - student
Чем отличается простой su от su -
| Вариант | Что делает |
|---|---|
su |
Меняет пользователя, но оставляет окружение прежним (переменные PATH, locale и т.д.) |
su - |
Полностью загружает окружение нового пользователя: его PATH, его конфигурацию, его домашний каталог |
Использование su - считается корректным и более безопасным.
Когда действительно используют su
- для восстановления системы, когда sudo недоступен;
- когда известен пароль root и требуется длительная работа;
- в минимальных системах без sudo (busybox, старые сервера);
- в ситуациях, требующих полного управления окружением.
Отличие su от sudo
| su | sudo |
|---|---|
| Требует пароль того пользователя, на которого выполняется переход | Требует пароль текущего пользователя |
| Даёт полную shell-сессию | Выполняет одну команду с повышенными правами |
| Используется для долгой работы от имени root | Используется для безопасного выполнения отдельных команд |
| Не ведёт детального логирования | Логируется каждая команда |
Главное отличие:
sudo— безопасный способ выполнить одну команду.su— опасный способ войти в полноценную root-сессию.
Опасности использования su
Работа через su от имени root считается небезопасной:
- легко случайно удалить важные системные файлы;
- любые вредоносные команды выполнятся с полными правами;
- большая часть действий не логируется;
- пользователь «забывает», что он root, и ошибается.
Использование su обычно ограничивается администраторами или аварийными ситуациями.
Возврат назад
Для выхода из режима другого пользователя используется команда:
exit
или сочетание клавиш:
Ctrl + D
После этого вы возвращаетесь к своему пользователю.
Когда su действительно нужен
Использование su оправдано в редких ситуациях:
- восстановление системы через терминал или rescue-режим;
- работа в минимальной системе без sudo (старые дистрибутивы);
- изменения файлов, доступных только root.
В большинстве случаев лучше использовать sudo вместо su.
su и безопасность
Важно понимать последствия:
- Пользователь с доступом к root через su получает полный контроль над системой.
- Все его действия трудно отследить.
- Если пароль root украден — система полностью скомпрометирована.
Поэтому рекомендуется:
- отключить или не использовать root-логин;
- работать только через sudo;
- хранить пароль root отдельно и выдавать минимуму людей.
Итоги
suпозволяет войти от имени другого пользователя, включая root.- Использовать su нужно крайне осторожно: это высокий уровень привилегий.
- sudo безопаснее, так как ограничивает команды и журналирует действия.
- Знание su важно для специалистов по ИБ, поскольку оно касается контроля доступа и управления рисками.