SETPRIV(1)

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

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

setpriv [параметри] програма [аргументи]

ОПИС

Встановлює або опитує різноманітні параметри прав доступу у Linux, які успадковуються у межах execve(2).

Порівняно із su(1) і runuser(1), setpriv не використовує PAM і не питає про пароль. Це проста обгортка до execve(2) без set-user-ID. Нею можна скористатися для скидання прав доступу у той самий спосіб, що і setuidgid(8) з daemontools, chpst(8) з runit або подібні інструменти, які постачаються разом із іншими засобами керування службами.

ПАРАМЕТРИ

--clear-groups
    Спорожнити список допоміжних груп.

-d, --dump
    Створити дамп поточного стану привілеїв. Цей параметр можна вказати декілька разів, щоб переглянути додаткові, здебільшого не варті уваги, дані. Несумісний із іншими параметрами.

--groups група...
    Встановити додаткові групи. Аргумент є списком відокремлених комами записів GID або імен.

--inh-caps (+|-)можливість..., --ambient-caps (+|-)можливість..., --bounding-set (+|-)можливість...
    Встановити успадковувані можливості, зовнішні можливості або обмежувальний набір можливостей. Див. сторінку підручника capabilities(7). Аргументом є список відокремлених комами записів +можливість та -можливість, які додають або вилучають запис, відповідно. Записом можливість може бути або зручна для читання назва, яку наведено на сторінці підручника capabilities(7) без префікса cap_, або запис у форматі cap_N, де N є внутрішнім індексом можливості, який використовують у Linux. Записами +all і -all може бути використано для додавання або вилучення усіх можливостей.

    Набір можливостей починається як поточний успадкований набір для --inh-caps, поточний зовнішній набір для --ambient-caps і поточний обмежувальний набір для --bounding-set.

    Зверніть увагу на такі обмеження (докладніше про них у capabilities(7)) щодо внесення змін до цих наборів можливостей:

        • Можливості може бути додано до успадкованого набору, лише якщо вони є в обмежувальному наборі.

        • Можливості може бути додано до зовнішнього набору, лише якщо вони є одразу у дозволеному та успадкованому наборі.

        • Незважаючи на синтаксичну можливість, яку пропонує setpriv, ядро не дозволяє додавання можливостей до обмежувального набору.

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

--keep-groups
    Зберігати додаткові групи. Корисно лише у поєднанні із --rgid, --egid або --regid.

--init-groups
    Ініціалізувати групи за допомогою initgroups(3). Корисно лише у поєднанні із --ruid або --reuid.

--list-caps
    Вивести список усіх відомих можливостей. Цей параметр має бути єдиним параметром команди.

--no-new-privs
    Встановити біт no_new_privs. Із встановленим цим бітом execve(2) не надаватиме нових прав доступу. Наприклад, біти set-user-ID і set-group-ID, а також можливості доступу до файлів буде вимкнено. (Запуск виконуваних файлів із встановленими цими бітами продовжуватимуть працювати, але вони не набуватимуть прав доступу. Використання певних модулів захисту Linux, особливо AppArmor, може призвести до помилок під час виконання певних програм.) Цей біт успадковується дочірніми процесами, його не можна зняти. Див. сторінку підручника щодо prctl(2) і Documentation/prctl/no_new_privs.txt у початковому коді ядра Linux.

    Підтримку біта no_new_privs передбачено з часу Linux 3.5.

--rgid gid, --egid gid, --regid gid
    Встановити справжній, ефективний або обидва GID. Аргумент gid може бути задано у форматі текстової назви групи.

    Для забезпечення безпеки вам слід вказати один із параметрів --clear-groups, --groups, --keep-groups або --init-groups, якщо ви встановили якийсь основний gid.

--ruid uid, --euid uid, --reuid uid
    Встановити справжній, ефективний або обидва UID. Аргумент uid може бути задано у форматі текстового імені користувача.

    Встановлення uid або gid не змінює можливостей, хоча виклик exec наприкінці може змінити можливості. Це означає, що, якщо у вас є права доступу root, вам, можливо, варто віддати якісь такі команди:

    setpriv --reuid=1000 --regid=1000 --inh-caps=-all

--securebits (+|-)біт-захисту...
    Встановити або зняти біти захисту. Аргументом є список відокремлених комами значень. Коректними бітами захисту є noroot, noroot_locked, no_setuid_fixup, no_setuid_fixup_locked і keep_caps_locked. keep_caps знімається execve(2), тому є забороненим.

--pdeathsig keep|clear|<сигнал>
    Зберегти, зняти або встановити батьківський сигнал смерті. Деякі модулі захисту Linux, найпоширенішими з яких є SELinux і AppArmor, знімають сигнал при зміні реєстраційних даних процесу. Використання --pdeathsig keep відновить батьківський сигнал смерті після зміни реєстраційних даних для залагодження цього конфлікту.

--ptracer pid|any|none
    When Yama’s restricted ptrace mode is in effect (that is, when /proc/sys/kernel/yama/ptrace_scope is set to 1), allow being traced via ptrace(2) by the process with the specified PID, or any process, or no process. See PR_SET_PTRACER(2const). (Note that this is not inherited by child processes, though it is preserved across execve(2).) This option has no effect when Yama is not enabled or is in a mode other than restricted ptrace.

--selinux-label мітка
    Надіслати запит щодо певного переходу SELinux (з використанням переходу при exec, без динамічних переходів). Перехід не вдасться і спричинить переривання роботи setpriv, якщо не використовується SELinux, і перехід може бути проігноровано або він може призвести до помилки execve(2) під керуванням SELinux. (Зокрема, це навряд чи працюватиме у поєднанні із no_new_privs.) Це подібне до runcon(1).

--apparmor-profile профіль
    Надіслати запит щодо певного профілю AppArmor (з використанням переходу при exec). Перехід зазнає невдачі і спричинить переривання роботи setpriv, якщо не використовується AppArmor, а перехід може бути проігноровано або він може спричинити помилку execve(2) під керуванням AppArmor.

--landlock-access доступ
    Enable landlock restrictions for a specific set of system accesses. To allow specific subgroups of accesses use --landlock-rule.

    Блокувати усілякий доступ до файлової системи:

    setpriv --landlock-access фс

    Заблокувати усі вилучення файлів та створення каталогів:

    setpriv --landlock-access фс

    For a complete set of supported access categories use setpriv --help.

--landlock-rule правило
    Allow one specific access from the categories blocked by --landlock-access.

    Синтаксис:

    --landlock-rule $ruletype:$access:$rulearg

    For example grant file read access to everything under /boot:

    --landlock-rule path-beneath:read-file:/boot

--seccomp-filter файл
    Load raw BPF seccomp filter code from a file.

    Filters can for example be created with enosys.

--reset-env
    Скасовує визначення усіх змінних середовища, окрім TERM; ініціалізує змінні середовища HOME, SHELL, USER, LOGNAME відповідно до запису passwd користувача; встановлює для PATH значення /usr/local/bin:/bin:/usr/bin для звичайного користувача і /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin для користувача root.

    Значення змінної середовища PATH може бути іншим у системах, де /bin і /sbin об’єднано у /usr. Типовим значенням змінної середовища SHELL є /bin/sh, якщо інше значення не задано у записі passwd користувача.

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

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

ЗАУВАЖЕННЯ

Якщо застосування будь-якого вказаного параметра зазнає невдачі, програму не буде запущено, а setpriv поверне керування зі станом виходу 127.

Будьте обережні із цим інструментом - його використання може призвести до непередбачуваних наслідків для захисту системи. Наприклад, встановлення no_new_privs, а потім виконання програми, права доступу якої обмежено SELinux (як це робитиме цей засіб), може заважати застосуванню обмежень SELinux.

ПРИКЛАДИ

Якщо вам потрібна поведінка, подібна до su(1)/runuser(1) або sudo(8) (без параметра -g), спробуйте щось таке:

setpriv --reuid=1000 --regid=1000 --init-groups

Якщо ви хочете відтворити поведінку setuid(8) з daemontools, спробуйте таке:

setpriv --reuid=1000 --regid=1000 --clear-groups

АВТОРИ

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

runuser(1), su(1), prctl(2), capabilities(7) landlock(7)

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

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

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

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