RUNUSER(1)

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

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

runuser [параметри] -u користувач [[--] команда [аргумент...]]

runuser [параметри] [-] [користувач [аргумент...]]

ОПИС

runuser можна скористатися для запуску команд із підставлянням ідентифікаторів користувача і групи. Якщо не вказано параметр -u, runuser повертається до сумісної із su семантики і виконує командну оболонку. Відмінності між командами runuser і su полягають у тому, що runuser не питає про пароль (оскільки програму можна запустити лише від імені користувача root) і використовує інші налаштування PAM. Команду runuser не потрібно встановлювати з правами доступу set-user-ID.

Якщо сеанс PAM не є обов’язковим, рекомендованим рішенням є використання команди setpriv(1).

Якщо викликано без аргументів, типово, runuser буде запущено інтерактивну командну оболонку від імені root.

З метою забезпечення зворотної сумісності runuser, типово, не змінює поточного каталогу і встановлює лише змінні середовища HOME і SHELL (і USER та LOGNAME, якщо користувачем користувач не є root). У цій версії runuser для керування сеансом використано PAM.

Note that runuser in all cases use PAM (pam_getenvlist(3)) to do the final environment modification. Command-line options such as --login and --preserve-environment affect the environment before it is modified by PAM.

Починаючи з версії 2.38, runuser скидає обмеження на ресурси процесу 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
    Запустити командну оболонку як оболонку входу до системи із середовищем, подібним для звичайної оболонки для входу:

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

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

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

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

-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., runuser --pty -u user -- command &). If the pseudo-terminal is enabled, then runuser works as a proxy between the sessions (sync stdin and stdout).

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

-s, --shell=оболонка
    Запустити вказану командну оболонку замість типової. Запущену оболонку буде вибрано за такими правилами, за порядком:

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

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

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

        • /bin/sh

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

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

-u, --user=користувач
    Run command with the effective user ID and group ID of the user name user.

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

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

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

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

runuser читає файли налаштувань /etc/default/runuser і /etc/login.defs. runuser стосуються такі записи налаштувань:

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, runuser ініціалізує PATH.

Значення змінної середовища PATH може бути різним у системах, де /bin і /sbin об’єднано у /usr. На цю змінну впливає також параметр командного рядка --login і параметри системи PAM (наприклад, pam_env(8)).

СТАН ВИХОДУ

runuser, зазвичай, повертає стан виходу виконаної команди. Якщо команду буде перервано сигналом, runuser поверне номер сигналу плюс 128.

Стан виходу, який створено самим runuser:

1
    Загальна помилка перед виконанням потрібної команди

126
    Потрібну команду не вдалося виконати

127
    Потрібну команду не знайдено

ФАЙЛИ

/etc/pam.d/runuser
    типовий файл налаштувань PAM

/etc/pam.d/runuser-l
    Файл налаштувань PAM, якщо вказано --login

/etc/default/runuser
    специфічний для команди runuser файл налаштувань logindef

/etc/login.defs
    загальний файл налаштувань logindef

SECURITY NOTES

If runuser 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 runuser 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 runuser to use a pseudo terminal with the --pty or -P option.

ЖУРНАЛ

Ця команда runuser походить з su у coreutils, яку було засновано на реалізації David MacKenzie, і команди Fedora runuser, автором якої є Dan Walsh.

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

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

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

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

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

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