Scroll to navigation

SU(1) Команди користувача SU(1)

НАЗВА

su - запуск команди від імені іншого користувача та групи

КОРОТКИЙ ОПИС

su [options] [-] [user [argument...]]

ОПИС

su allows commands to be run with a substitute user and group ID.

Якщо викликано без визначення користувача, типовою поведінкою su є запуск інтерактивної оболонки від імені root. Якщо вказано користувача, може бути надано додаткові аргументи, які буде передано командній оболонці.

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

У цій версії su використано PAM для розпізнавання, керування обліковими записами і сеансами. Деякі параметри налаштувань, які можна знайти у інших реалізаціях su, зокрема підтримку групи wheel, має бути налаштовано за допомогою PAM.

su is mostly designed for unprivileged users, the recommended solution for privileged users (e.g., scripts executed by root) is to use non-set-user-ID command runuser(1) that does not require authentication and provides separate PAM configuration. If the PAM session is not required at all then the recommended solution is to use command 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 does:

•очищає усі змінні середовища, окрім TERM і змінних, які вказано --whitelist-environment

•ініціалізує змінні середовища HOME, SHELL, USER, LOGNAME і PATH

•змінює домашній каталог користувача призначення

•встановлює для argv[0] командної оболонки значення «-» з метою зробити оболонку оболонкою входу до системи

-m, -p, --preserve-environment

Зберегти усе середовище, тобто не встановлювати значення HOME, SHELL, USER та LOGNAME. Цей параметр буде проігноровано, якщо вказано параметр --login.

-P, --pty

Створити псевдотермінал для сеансу Незалежний термінал надає кращий захист, оскільки користувач не використовує спільний термінал із початковим сеансом. Цим можна скористатися для запобігання втручанню у керування введенням-виведення термінала 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*

Do not create a pseudo-terminal, opposite of --pty and -P. Note that running without a pseudo-terminal opens the security risk of privilege escalation through TIOCSTI/TIOCLINUX ioctl command injection.

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

Не відновлювати початкові значення змінних середовища, який вказано у списку відокремлених комами значень список при очищенні середовища для --login. «Білий» список буде проігноровано для змінних середовища HOME, SHELL, USER, LOGNAME і PATH.

-h, --help

Вивести текст довідки і завершити роботу.

-V, --version

Вивести дані щодо версії і завершити роботу.

СИГНАЛИ

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

ФАЙЛ НАЛАШТУВАНЬ

su reads the /etc/default/su and /etc/login.defs configuration files. The following configuration items are relevant for 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 normally returns the exit status of the command it executed. If the command was killed by a signal, su returns the number of the signal plus 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, яку було засновано на реалізації David MacKenzie. Версію у util-linux було переформатовано Karel Zak.

ТАКОЖ ПЕРЕГЛЯНЬТЕ

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

ЯК НАДІСЛАТИ ЗВІТ ПРО ВАДИ

Для звітування щодо вад скористайтеся системою стеження за вадами - <https://github.com/util-linux/util-linux/issues>.

ДОСТУП ДО ПРОГРАМИ

Програма su є частиною пакунка util-linux, який можна отримати з архіву ядра Linux <https://www.kernel.org/pub/linux/utils/util-linux/>.

2024-08-05 util-linux 2.40.2