Как переключаться между пользователями в Linux
Введение
Linux — многопользовательская ОС. Часто нужно временно работать под другой учётной записью: выполнить админские задачи, получить доступ к домашней папке коллеги или протестировать окружение. В этой статье собраны способы переключения пользователей — командные и графические — а также практические рекомендации по безопасности и чек‑листы для ролей.
Быстрая шпаргалка команд
- su — переключиться на другого пользователя (по умолчанию на root при отсутствии имени).
- sudo -u USER — выполнить команду или запустить shell от имени другого пользователя.
- su -c ‘команда’ USER — выполнить одну команду под другим пользователем.
- sudo -u USER /path/to/shell — запустить конкретную оболочку от имени USER.
- runuser — аналог su для скриптов (в некоторых дистрибутивах).
Проверка текущего пользователя:
whoami
echo $USERsu — смена пользователя в сессии
Команда su позволяет стать другим пользователем в рамках текущей сессии. Базовый синтаксис:
su [опции] [имя_пользователя]Если имя пользователя не указано, su по умолчанию переключается на root:
suЧтобы перейти к конкретной учётной записи:
su testuserВас попросят ввести пароль учётной записи testuser (если он установлен).
Если нужно выполнить одну команду от имени другого пользователя, используйте флаг -c:
su -c "команда" имя_пользователяПример:
su -c "chmod +w /Downloads" testuserДобавление дефиса (-) перед именем создаёт новую окружение входа (login shell):
su - testuserЧтобы сменить оболочку при переключении:
su testuser -s /bin/zshВажно: su меняет учётные данные в пределах текущей сессии. Команда не проверяет sudoers и не даёт журналирования через sudo, поэтому её использование требует доверия к паролю цели.
sudo — запуск команд или shell от имени другого пользователя
sudo обычно используют для выполнения команд с повышенными привилегиями. С помощью опции -u можно запускать команды от имени любого пользователя:
sudo -u имя_пользователя [команда]Чтобы просто переключиться в интерактивный шелл под другим пользователем:
sudo -u testuser /bin/bashПример выполнения команды:
sudo -u testuser chmod 777 /DocumentsОтличие от su:
- sudo даёт централизованное управление через /etc/sudoers.
- sudo логирует команды (в журнал sudo), если настроено.
- sudo не требует знания пароля цели (по умолчанию используется пароль вызывающего, если разрешено).
Используйте sudo, когда нужно управляемое, записываемое и ограничиваемое выполнение команд от других пользователей.
Графическая смена пользователя
Если вы предпочитаете GUI, большинство окружений рабочего стола предлагают переключение пользователей через дисплей-менеджер.
GNOME:
- Нажмите стрелку в правом верхнем углу экрана.
- Выберите Power Off/Log Out → Switch User.
- GNOME покажет список доступных пользователей. Выберите нужного.
KDE:
- Откройте меню приложений и нажмите Leave в правом нижнем углу.
- Выберите Switch User.
- Вы окажетесь на экране входа; выберите учётную запись и войдите.
Разные окружения (XFCE, MATE, Cinnamon и др.) предлагают схожие опции через дисплей‑менеджер (LightDM, GDM, SDDM).
Когда переключение пользователя не срабатывает (типичные причины)
- Учетная запись заблокирована или пароль сброшен. Попытка su/sudo завершится неудачей.
- У вас нет прав в /etc/sudoers для использования sudo от имени другого пользователя.
- PAM-политики ограничивают смену сессий (особенно в корпоративных средах).
- Вы внутри контейнера или ограниченного окружения без возможности смены UID.
- Дисплей‑менеджер настроен запретить быстрые переключения (например у некоторых Kiosk‑режимов).
- Файлы домашней директории целевого пользователя имеют жёсткие правa и не позволяют доступ.
Important: всегда проверяйте сообщения об ошибке — они подскажут, что именно блокирует переключение.
Альтернативные подходы
- runuser — похож на su, но предназначен для использования в скриптах (доступен в некоторых дистрибутивах).
- pkexec (PolicyKit) — GUI‑дружественный запуск программ с привилегиями; полезен для запусков от имени root через графику.
- SSH: для переключения на удалённую учётную запись используйте ssh testuser@host.
- setuid-бинарники: не рекомендуется для общих задач из‑за рисков безопасности.
Методология: безопасное и воспроизводимое переключение
- Определите цель: выполнить команду или открыть полноценный шелл под другим пользователем.
- Оцените риск: нужны ли права root или достаточно привилегий обычного пользователя?
- Выберите инструмент: sudo для журналирования и контроля, su для полноценного окружения.
- Выполните операцию и проверьте whoami и переменные окружения.
- Верните систему в исходное состояние и задокументируйте действия (особенно для prod).
Роль‑ориентированные чек‑листы
Системный администратор:
- Убедитесь, что учётная запись не заблокирована.
- Используйте sudo для аудита.
- Ограничьте команды в /etc/sudoers по принципу наименьших прав.
Разработчик:
- Используйте su - testuser для воспроизведения окружения пользователя.
- Не работайте под root без необходимости.
- Локально тестируйте права на файлы и переменные окружения.
Служба поддержки:
- Запрашивайте причину доступа и фиксируйте разрешение.
- Выполняйте однократные команды через sudo -u.
- После выполнения сообщайте об изменениях владельцу учётной записи.
Чек‑лист команд (cheat sheet)
# смена на root
su
# смена на конкретного пользователя
su testuser
# login shell под пользователем
su - testuser
# выполнить одну команду под другим пользователем
su -c "команда" testuser
# sudo: выполнить команду от имени пользователя
sudo -u testuser команда
# sudo: запустить shell от имени пользователя
sudo -u testuser /bin/bash
# проверить текущего пользователя
whoamiСравнение: su vs sudo (кратко)
- Управление: su — локальное (пароль цели), sudo — централизовано через sudoers.
- Журналирование: sudo логирует; su не логирует по умолчанию.
- Безопасность: sudo позволяет ограничивать команды, su предоставляет полный доступ к учётной записи.
| Аспект | su | sudo |
|---|---|---|
| Требует пароль целевой учётной записи | Да | Обычно нет (зависит от конфигурации) |
| Журналирование | Нет | Да |
| Контроль прав | Ограничен | Гибкий (sudoers) |
Когда не использовать su/sudo: примеры и альтернативы
- Если нужно получить доступ к ресурсам другого пользователя без изменения окружения — лучше использовать sudo -u для конкретной команды.
- Если требуется временное GUI‑приложение с правами root — рассмотрите pkexec.
- В контейнерах с ограниченным набором утилит используйте встроенные механизмы управления контейнером.
Безопасность: рекомендации и жёсткие правила
- Оставляйте минимальные права в sudoers: указывайте точные команды вместо ALL.
- Не настраивайте passwordless sudo для широкого круга пользователей.
- Включайте логирование sudo и периодически проверяйте его.
- Избегайте работы под root при выполнении операций, которые изменяют пользовательские данные.
- Защищайте файлы /etc/sudoers.d/ и /etc/passwd от несанкционированных изменений.
Приватность и права доступа
Переключение пользователя не даёт автоматического права просматривать чужие файлы: права файловой системы по‑прежнему применяются. Для доступа к домашним папкам потребуются соответствующие права или привилегии. В корпоративной среде учитывайте требования о защите персональных данных и доступе по необходимости.
Примерный сценарий: выполнить пакетное изменение от имени другого пользователя
- Убедитесь, что в sudoers есть право на выполнение нужной команды (например chmod) от имени testuser.
- Протестируйте команду на непроизводственной машине:
sudo -u testuser chmod 640 /path/to/file- Проверьте результат и журналы sudo.
- Задокументируйте изменение.
Мермаид: простое дерево решений при выборе инструмента
flowchart TD
A[Нужно переключиться?] --> B{Цель}
B -->|Выполнить одну команду| C[sudo -u USER команда]
B -->|Открыть полноценный shell| D{Требуется окружение входа}
D -->|Да| E[su - USER]
D -->|Нет| F[sudo -u USER /bin/bash]
B -->|GUI| G[Использовать дисплей-менеджер]Краткий словарь
- su — смена учётной записи в текущей сессии.
- sudo — запуск команд с привилегиями с централизованным контролем.
- PAM — набор модулей аутентификации (Pluggable Authentication Modules).
- Дисплей‑менеджер — экран входа в графике (GDM, SDDM, LightDM).
Заключение
Переключение между пользователями в Linux — простая, но ответственная операция. Выбирайте инструмент в зависимости от задачи: sudo для управляемого выполнения и аудита, su для получения полной сессии другой учётной записи, GUI для удобства. Всегда соблюдайте принцип наименьших привилегий и документируйте изменения.
Краткое резюме:
- Используйте sudo для контроля и журналирования.
- Используйте su для полного окружения входа.
- Проверяйте права, журналы и сообщения об ошибке.
Примечание: поведение команд может незначительно отличаться между дистрибутивами и версиями утилит. Если что‑то не работает, сначала проверьте конфигурацию PAM и /etc/sudoers.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone