Быстрая справка и примеры использования su
Команда su используется для запуска команд от имени другого пользователя, например, для запуска утилит с повышенными привилегиями от имени root.
Чтобы выполнить КОМАНДУ с правами root используйте конструкцию:
su -c КОМАНДА
Например:
su -c whoami
Чтобы открыть оболочку для пользователя root с инициализацией его переменных среды (например, $HOME):
su -
Чтобы выполнить команду 'Get-Help Get-Alias -Full' с правами root в оболочке /usr/bin/pwsh-preview:
su -c 'Get-Help Get-Alias -Full' -s /usr/bin/pwsh-preview
Для чего нужна команда su
su позволяет запускать команды с замещающим идентификатором пользователя и группы.
При вызове без указания пользователя su по умолчанию запускает интерактивную оболочку от имени пользователя root. Когда указан пользователь, могут быть предоставлены дополнительные аргументы, и в этом случае они передаются оболочке.
Для обратной совместимости su по умолчанию не изменяет текущий каталог и устанавливает только переменные среды $HOME и $SHELL (плюс $USER и $LOGNAME, если целевой пользователь не является пользователем root). Рекомендуется всегда использовать опцию «--login» (вместо её псевдонима «-»), чтобы избежать побочных эффектов, вызванных смешиванием сред.
su в основном предназначен для непривилегированных пользователей, рекомендуемое решение для привилегированных пользователей (например, сценарии, выполняемые пользователем root) — использовать команду runuser без идентификатора пользователя, которая не требует аутентификации и предоставляет отдельную конфигурацию PAM. Если сеанс PAM вообще не требуется, рекомендуется использовать команду setpriv.
Обратите внимание, что su во всех случаях использует PAM (pam_getenvlist) для окончательной модификации среды. Параметры командной строки, такие как --login и --preserve-environment, влияют на среду до того, как она будет изменена PAM.
Что использовать sudo или su?
У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.
Различия между этими программами вы найдёте в разделе «Что использовать sudo или su?».
Смотрите также:
Как использовать команду su
Синтаксис команды следующий:
su [ОПЦИИ] [-] [ПОЛЬЗОВАТЕЛИ [АРГУМЕНТ...]]
Опции команды su:
-c, --command=КОМАНДА
Передаёт команду оболочке с параметром -c.
-f, --fast
Передаёт значение -f оболочке, что может оказаться полезным, а может и не оказаться полезным, в зависимости от оболочки.
-g, --group=ГРУППА
Указывает основную группу. Эта опция доступна только пользователю root.
-G, --supp-group=ГРУППА
Укажите дополнительную группу. Эта опция доступна только пользователю root. Первая указанная дополнительная группа также используется как основная группа, если не указан параметр --group.
-, -l, --login
Запуск оболочки как оболочки с входом в систему со средой, похожей на реальный вход в систему. Эта опция делает следующее:
- • очищает все переменные среды, кроме $TERM и переменных, указанных в --whitelist-environment
- • инициализирует переменные среды $HOME, $SHELL, $USER, $LOGNAME и $PATH
- • изменяет домашнюю папку на папку целевого пользователя
- • устанавливает argv[0] оболочки на «-», чтобы сделать оболочку оболочкой с входом в систему
Смотрите также: Различия между Login shell и Non login shell (оболочка с входом и оболочка без входа)
-m, -p, --preserve-environment
Сохраните всю среду, т.е. не устанавливайте $HOME, $SHELL, $USER или $LOGNAME. Этот параметр игнорируется, если указан параметр --login.
-P, --pty
Создайте псевдотерминал для сеанса. Независимый терминал обеспечивает лучшую безопасность, поскольку пользователь не использует терминал совместно с исходным сеансом. Это можно использовать, чтобы избежать внедрения терминала TIOCSTI ioctl и других атак на безопасность дескрипторов файлов терминала. Весь сеанс также можно переместить в фоновый режим (например, «su --pty - username -c application &»). Если псевдотерминал включён, su работает как прокси-сервер между сеансами (копирует stdin и stdout).
Эта функция в основном предназначена для интерактивных сеансов. Если стандартный ввод — это не терминал, а, например, канал (например, echo "date" | su --pty), то флаг ECHO для псевдотерминала отключён, чтобы избежать беспорядочного вывода.
-s, --shell=ОБОЛОЧКА
Запускает указанную оболочку вместо оболочки по умолчанию. Оболочка для запуска выбирается в соответствии со следующими правилами в следующем порядке:
- оболочка, указанная с помощью --shell
- оболочка, указанная в переменной окружения $SHELL, если используется опция --preserve-environment
- оболочка, указанная в записи passwd целевого пользователя
- /bin/sh
Список доступных в операционной системе оболочек можно вывести командой:
chsh -l
Смотрите также:
- Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
- Как узнать, какая оболочка используется в Linux
Если у целевого пользователя ограниченная оболочка (то есть не указана в /etc/shells), параметр --shell и переменные среды SHELL игнорируются, если вызывающий пользователь не является пользователем root.
--session-command=КОМАНДА
То же, что и -c, но не создаёт новый сеанс.
-w, --whitelist-environment=СПИСОК
Не сбрасывать переменные среды, указанные в списке, разделённом запятыми, при очистке среды для --login. Белый список игнорируется для переменных среды $HOME, $SHELL, $USER, $LOGNAME и $PATH.
-V, --version
Отобразите информацию о версии и выйдите.
-h, --help
Показать текст справки и выйти.
Типичными примерами использования su является выполнение КОМАНДЫ от имени root:
su -c КОМАНДА
Также su может использоваться для открытия интерактивной оболочки с правами root:
su -
Связанные статьи:
- Ошибка «-bash: sudo: command not found» - не найдена команда sudo (РЕШЕНО) (100%)
- Лучшие терминальные мультиплексные инструменты (50%)
- Как просмотреть или отредактировать метаданные pdf или изображениях из командной строки Linux (50%)
- Как установить 7zip на Linux (50%)
- Работа с архивами в Linux (50%)
- Как цветной вывод консоли конвертировать в HTML код (RANDOM - 50%)