Руководства по командной строке

Man » su Manual online - подробная онлайн-документация для страницы руководства su

🌍
su - выполнить команду с подстановкой идентификатора пользователя и группы

СИНТАКСИС

su [опции] [-] [пользователь [аргумент...]]

ОПИСАНИЕ

su позволяет выполнять команды с подстановкой идентификатора пользователя и группы.

При вызове без указания пользователя, su по умолчанию запускает интерактивную оболочку от имени root. Когда указан пользователь, можно предоставить дополнительные аргументы, в этом случае они передаются в оболочку.

Для обеспечения обратной совместимости, su по умолчанию не изменяет текущий каталог и устанавливает только переменные среды HOME и SHELL (а также USER и LOGNAME, если целевой пользователь не является root). Рекомендуется всегда использовать опцию --login (вместо ее сокращения -), чтобы избежать побочных эффектов, возникающих из-за смешения сред.

Эта версия su использует PAM для аутентификации, управления учетными записями и сеансами. Некоторые параметры конфигурации, которые можно найти в других реализациях su, такие как поддержка группы wheel, должны быть настроены через PAM.

su в основном предназначен для непривилегированных пользователей, рекомендуемым решением для привилегированных пользователей
(например, скриптов, выполняемых от имени root) является использование команды runuser(1), которая не требует аутентификации и предоставляет отдельную конфигурацию PAM. Если сеанс PAM вообще не требуется, то рекомендуемым решением является использование команды setpriv(1).

Обратите внимание, что su во всех случаях использует PAM (pam_getenvlist(3)) для выполнения окончательной модификации среды. Параметры командной строки, такие как --login и --preserve-environment, влияют на среду до того, как она будет изменена PAM.

Начиная с версии 2.38, su сбрасывает ограничения ресурсов процесса RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE,
RLIMIT_AS и RLIMIT_NOFILE.

ОПЦИИ

-c, --command команда

Передает команду в оболочку с помощью опции -c.

-f, --fast

Передает параметр -f в оболочку, что может быть полезно или не полезно, в зависимости от оболочки.

-g, --group группа

Указывает первичную группу. Эта опция доступна только для пользователя root.

-G, --supp-group группа

Указывает дополнительную группу. Эта опция доступна только для пользователя root. Первая указанная дополнительная группа также используется в качестве первичной группы, если опция --group не указана.

-, -l, --login

Запускает оболочку как оболочку для входа в систему, с окружением, аналогичным реальному входу в систему.

Обратите внимание, что в системах на базе systemd новый сеанс может быть определен как фактическая точка входа в
систему. Однако su не создает реальный сеанс (с помощью PAM) с этой точки зрения. Вам нужно
использовать такие инструменты, как systemd-run или machinectl, чтобы инициировать полный, реальный сеанс.

su делает следующее:

очищает все переменные среды, за исключением TERM и переменных, указанных в
--whitelist-environment

инициализирует переменные среды HOME, SHELL, USER, LOGNAME и PATH

переходит в домашний каталог целевого пользователя

устанавливает argv[0] оболочки на '-', чтобы сделать оболочку оболочкой для входа в систему

-m, -p, --preserve-environment

Сохраняет все окружение, т.е. не устанавливает HOME, SHELL, USER или LOGNAME. Эта опция игнорируется, если указана опция --login.

-P, --pty

Создает псевдотерминал для сеанса. Отдельный терминал обеспечивает лучшую безопасность, поскольку пользователь не разделяет терминал с исходным сеансом. Это можно использовать для предотвращения атак с использованием ioctl TIOCSTI на терминальные дескрипторы. Весь сеанс также можно перевести в фоновый режим (например, su --pty - пользователь -c приложение &). Если псевдотерминал включен, то su работает как прокси между сеансами (синхронизирует stdin и stdout).

Эта функция предназначена в основном для интерактивных сеансов. Если стандартный ввод не является
терминалом, а, например, каналом (например, echo "date" | su --pty), то флаг ECHO для
псевдотерминала отключается, чтобы избежать беспорядочного вывода.

-s, --shell оболочка

Запускает указанную оболочку вместо оболочки по умолчанию. Если у целевого пользователя есть ограниченная оболочка (т.е. она не указана в /etc/shells), опция --shell и переменная среды SHELL игнорируются, если только вызывающий пользователь не является root.

Оболочка для запуска выбирается в соответствии со следующими правилами, в следующем порядке:

оболочка, указанная с помощью --shell

оболочка, указанная в переменной среды SHELL, если используется опция --preserve-environment

оболочка, указанная в записи passwd для целевого пользователя

/bin/sh

--session-command=команда

То же, что и -c, но не создает новый сеанс. (Не рекомендуется.)

-T, --no-pty

Не создает псевдотерминал, противоположно --pty и -P. Обратите внимание, что выполнение без псевдотерминала открывает риск повышения привилегий за счет инъекции команд TIOCSTI/TIOCLINUX ioctl.

-w, --whitelist-environment список

Не сбрасывает переменные среды, указанные в списке, разделенном запятыми, при очистке окружения для --login. Список разрешений игнорируется для переменных среды HOME, SHELL, USER, LOGNAME и PATH.

-h, --help

Отображает текст справки и завершает работу.

-V, --version

Отображает версию и завершает работу.

СИГНАЛЫ

При получении сигналов SIGINT, SIGQUIT или SIGTERM, su завершает работу своего дочернего процесса, а затем завершает свою работу, используя полученный сигнал. Дочерний процесс завершается сигналом SIGTERM, после неудачной попытки и задержки в 2 секунды дочерний процесс принудительно завершается сигналом SIGKILL.

КОНФИГУРАЦИОННЫЕ ФАЙЛЫ

^ u считывает конфигурационные файлы /etc/default/su и /etc/login.defs. Следующие элементы конфигурации имеют отношение к su:

FAIL_DELAY (число)

Задержка в секундах в случае сбоя аутентификации. Число должно быть неотрицательным целым числом.

ENV_PATH (строка)

Определяет переменную окружения PATH для обычного пользователя. Значение по умолчанию — /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (строка), ENV_SUPATH (строка)

Определяет переменную окружения PATH для пользователя root. ENV_SUPATH имеет приоритет. Значение по умолчанию — /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

ALWAYS_SET_PATH (логическое значение)

Если установлено значение yes и не указаны опции --login и --preserve-environment, su инициализирует PATH.

Переменная окружения PATH может быть разной в системах, где /bin и /sbin объединены в /usr; на эту переменную также влияет опция командной строки --login и настройка системы PAM (например, pam_env(8)).

СТАТУС ВЫХОДА

su обычно возвращает статус выхода команды, которую он выполнил. Если команда была прервана сигналом, su возвращает номер сигнала плюс 128.

Статус выхода, генерируемый самой командой su:

1 Общая ошибка перед выполнением запрошенной команды

126 Запрошенную команду невозможно выполнить

127 Запрошенную команду не удалось найти

ФАЙЛЫ

/etc/pam.d/su
файл конфигурации PAM по умолчанию

/etc/pam.d/su-l
файл конфигурации PAM, если указана опция --login

/etc/default/su
файл конфигурации logindef, специфичный для команды

/etc/login.defs
глобальный файл конфигурации logindef

ЗАМЕЧАНИЯ

В целях безопасности su всегда записывает неудачные попытки входа в файл btmp, но не записывает данные в файл lastlog. Это решение можно использовать для управления поведением su с помощью конфигурации PAM. Если вы хотите использовать модуль pam_lastlog(8) для вывода предупреждающих сообщений о неудачных попытках входа, модуль pam_lastlog(8) должен быть настроен для обновления файла lastlog. Например:

session required pam_lastlog.so nowtmp

ИСТОРИЯ

Эта команда su была получена из su coreutils, которая, в свою очередь, была основана на реализации, созданной Дэвидом Маккензи. Версия util-linux была переработана Карелом Заком.

СМОТРИТЕ ТАКЖЕ

setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)

СООБЩЕНИЕ ОБ ОШИБКАХ

Для сообщений об ошибках используйте систему отслеживания проблем [https://github.com/util-linux/util-linux/issues].

ДОСТУПНОСТЬ

Команда su является частью пакета util-linux, который можно загрузить с Linux Kernel Archive [https://www.kernel.org/pub/linux/utils/util-linux/].