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/].