Scroll to navigation

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

НАЗВА

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

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

runuser [options] -u user [[--] command [argument...]]

runuser [options] [-] [user [argument...]]

ОПИС

runuser can be used to run commands with a substitute user and group ID. If the option -u is not given, runuser falls back to su-compatible semantics and a shell is executed. The difference between the commands runuser and su is that runuser does not ask for a password (because it may be executed by the root user only) and it uses a different PAM configuration. The command runuser does not have to be installed with set-user-ID permissions.

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

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

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

Зауважте, що runuser в усіх випадках використовує PAM (pam_getenvlist()) для виконання остаточної модифікації середовища. Параметри командного рядка, зокрема --login і --preserve-environment застосовуються до середовища, перш ніж його буде змінено PAM.

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

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

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

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

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

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

-m, -p, --preserve-environment

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

-P, --pty

Створити псевдотермінал для сеансу Незалежний термінал надає кращий захист, оскільки користувач не використовує спільний термінал із початковим сеансом. Цим можна скористатися для запобігання втручанню у керування введенням-виведення термінала TIOCSTI та іншим атакам на дескриптори файлів термінала. Також можна перемкнути увесь сеанс у фоновий режим (наприклад, runuser --pty -u користувач -- команда &). Якщо увімкнено псевдотермінал, runuser працює як проксі-сервер між сеансами (синхронізує stdin і stdout).

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

-s, --shell=оболонка

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

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

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

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

•/bin/sh

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

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

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

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

runuser reads the /etc/default/runuser and /etc/login.defs configuration files. The following configuration items are relevant for 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 normally returns the exit status of the command it executed. If the command was killed by a signal, runuser returns the number of the signal plus 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

ЖУРНАЛ

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

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

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

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

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

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

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

2024-12-06 util-linux 2.40.2