SU(1)

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

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

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

ОПИС

За допомогою su можна віддавати команди від імені іншого користувача та групи

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

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

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

su здебільшого створено для непривілейованих користувачів. Рекомендованим рішенням для привілейованих користувачів (наприклад, для скриптів, які виконують від імені root), використання команди non-set-user-ID програми 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 команда
    Pass command to the shell with the -c option. Creates a new session via setsid(2). Refer to --session-command to keep the same session.

-f, --fast
    Передати оболонці -f, може бути як корисним, так і недоречним, залежно від оболонки.

-g, --group група
    Вказати основну групу. Цей параметр доступний лише для користувача root.

-G, --supp-group група
    Визначити додаткову групу. Цей параметр доступний лише користувачу root. Першу вказану додаткову групу також буде використано як основну групу, якщо не вказано параметр --group.

-, -l, --login
    Запустити командну оболонку як оболонку входу до системи із середовищем, подібним для звичайної оболонки для входу.

    Note that on systemd(1)-based systems, a new session may be defined as a real entry point to the system. However, su does not create a real session (by PAM) from this point of view. You need to use tools like systemd-run(1) or machinectl(1) to initiate a complete, real session.

    su виконує такі дії:

        • clear all the environment variables except TERM, COLORTERM, NO_COLOR and variables specified by --whitelist-environment

        • initialize the environment variables HOME, SHELL, USER, LOGNAME, and PATH

        • change to the target user’s home directory

        • set argv[0] of the shell to '-' in order to make the shell a login shell

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

-P, --pty
    Create a pseudo-terminal for the session. The independent terminal provides better security as the user does not share a terminal with the original session. Please note security advice about TIOCSTI vulnerability below.

    The entire session can also be moved to the background (e.g., su --pty - user -c application &). If the pseudo-terminal is enabled, then su works as a proxy between the sessions (sync stdin and stdout).

    Цю можливість, в основному, призначено для інтерактивних сеансів. Якщо стандартним джерелом вхідних даних є не термінал, а, наприклад, канал даних (приклад: echo "date" | su --pty), прапорець ECHO для псевдотермінала буде вимкнено для того, щоб уникнути безладного виведення даних.

-s, --shell оболонка
    Запустити вказану оболонку замість типової. Якщо у користувача призначення командну оболонку обмежено (тобто її немає у списку /etc/shells), параметр --shell і змінні середовища SHELL буде проігноровано, якщо користувачем, який викликав програму, не є root.

    Запущену оболонку буде вибрано за такими правилами, за порядком:

        • командна оболонка, яку вказано за допомогою --shell.

        • командна оболонка, яку вказано у змінній середовища SHELL, якщо використано параметр --preserve-environment

        • командна оболонка зі списку у запису passwd користувача призначення

        • /bin/sh

--session-command=команда
    Same as -c, but do not create a new session. (Discouraged.) Please note security advice about TIOCSTI vulnerability below.

-T, --no-pty
    Do not create a pseudo-terminal, opposite of --pty and -P. Please note security advice about TIOCSTI vulnerability below.

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

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

-V, --version
    Показати дані щодо версії і завершити роботу.

СИГНАЛИ

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

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

su читає файли налаштувань /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

SECURITY NOTES

If su shares a terminal with the original session, it is potentially vulnerable to privilege escalation through TIOCSTI/TIOCLINUX ioctl command injection. There are two built-in ways to prevent this: Either you can use su with the -c option, which starts a new session via setsid(2) without a controlling terminal. Or, if your use case requires a controlling terminal, for example an interactive session, you can instruct su to use a pseudo terminal with the --pty or -P option.

З міркувань безпеки 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)

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

Для звітування щодо вад скористайтеся

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

Програма su є частиною пакунка util-linux, який можна отримати з