Гид по технологиям

Как переключаться между пользователями в Linux

6 min read Linux Обновлено 07 Jan 2026
Переключение пользователей в Linux — команды и безопасность
Переключение пользователей в Linux — команды и безопасность

Введение

Linux — многопользовательская ОС. Часто нужно временно работать под другой учётной записью: выполнить админские задачи, получить доступ к домашней папке коллеги или протестировать окружение. В этой статье собраны способы переключения пользователей — командные и графические — а также практические рекомендации по безопасности и чек‑листы для ролей.

Быстрая шпаргалка команд

  • su — переключиться на другого пользователя (по умолчанию на root при отсутствии имени).
  • sudo -u USER — выполнить команду или запустить shell от имени другого пользователя.
  • su -c ‘команда’ USER — выполнить одну команду под другим пользователем.
  • sudo -u USER /path/to/shell — запустить конкретную оболочку от имени USER.
  • runuser — аналог su для скриптов (в некоторых дистрибутивах).

Проверка текущего пользователя:

whoami
echo $USER

su — смена пользователя в сессии

Команда 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, большинство окружений рабочего стола предлагают переключение пользователей через дисплей-менеджер.

  1. GNOME:

    1. Нажмите стрелку в правом верхнем углу экрана.
    2. Выберите Power Off/Log Out → Switch User. Пункт меню переключения пользователей в GNOME
    3. GNOME покажет список доступных пользователей. Выберите нужного. Список пользователей на экране входа GNOME
  2. KDE:

    1. Откройте меню приложений и нажмите Leave в правом нижнем углу.
    2. Выберите Switch User. Опция переключения пользователя в KDE
    3. Вы окажетесь на экране входа; выберите учётную запись и войдите.

Разные окружения (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-бинарники: не рекомендуется для общих задач из‑за рисков безопасности.

Методология: безопасное и воспроизводимое переключение

  1. Определите цель: выполнить команду или открыть полноценный шелл под другим пользователем.
  2. Оцените риск: нужны ли права root или достаточно привилегий обычного пользователя?
  3. Выберите инструмент: sudo для журналирования и контроля, su для полноценного окружения.
  4. Выполните операцию и проверьте whoami и переменные окружения.
  5. Верните систему в исходное состояние и задокументируйте действия (особенно для 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 предоставляет полный доступ к учётной записи.
Аспектsusudo
Требует пароль целевой учётной записиДаОбычно нет (зависит от конфигурации)
ЖурналированиеНетДа
Контроль правОграниченГибкий (sudoers)

Когда не использовать su/sudo: примеры и альтернативы

  • Если нужно получить доступ к ресурсам другого пользователя без изменения окружения — лучше использовать sudo -u для конкретной команды.
  • Если требуется временное GUI‑приложение с правами root — рассмотрите pkexec.
  • В контейнерах с ограниченным набором утилит используйте встроенные механизмы управления контейнером.

Безопасность: рекомендации и жёсткие правила

  • Оставляйте минимальные права в sudoers: указывайте точные команды вместо ALL.
  • Не настраивайте passwordless sudo для широкого круга пользователей.
  • Включайте логирование sudo и периодически проверяйте его.
  • Избегайте работы под root при выполнении операций, которые изменяют пользовательские данные.
  • Защищайте файлы /etc/sudoers.d/ и /etc/passwd от несанкционированных изменений.

Приватность и права доступа

Переключение пользователя не даёт автоматического права просматривать чужие файлы: права файловой системы по‑прежнему применяются. Для доступа к домашним папкам потребуются соответствующие права или привилегии. В корпоративной среде учитывайте требования о защите персональных данных и доступе по необходимости.

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

  1. Убедитесь, что в sudoers есть право на выполнение нужной команды (например chmod) от имени testuser.
  2. Протестируйте команду на непроизводственной машине:
sudo -u testuser chmod 640 /path/to/file
  1. Проверьте результат и журналы sudo.
  2. Задокументируйте изменение.

Мермаид: простое дерево решений при выборе инструмента

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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство