zaLinux.ru

Инструкция по команде su


Быстрая справка и примеры использования 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

Смотрите также:

Если у целевого пользователя ограниченная оболочка (то есть не указана в /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 -

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *