SETPRIV(1)

НАЗИВ
setpriv - покреће програм са различитим поставкама Линукс привилегија

УВОД

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

ОПИС

Поставља или пропитује разне поставке Линукс привилегија које су наслеђене кроз execve(2).

У поређењу са su(1) и runuser(1), setpriv не користи PAM, нити тражи лозинку. То је једноставан омотач непостављеног корисничког ИД-а око execve(2) и може се користити за одбацивање привилегија на исти начин као setuidgid(8) из daemontools, chpst(8) из runit, или сличних алата које испоручују други управници услуга.

ОПЦИЈЕ

--clear-groups
    Чисти додатне групе.

-d, --dump
    Избацује текуће стање привилегије. Ова опција се може навести више од једном да покаже додатне, углавном корисне, информације. Несагласна са свим другим опцијама.

--groups корисник...
    Поставља додатне групе. Аргумент је зарезом раздвојен списак ГИД-ова или назива.

--inh-caps (+|-)могућн..., --ambient-caps (+|-)могућн..., --bounding-set (+|-)могућн...
    Поставља наследне могућности, амбијенталне могућности или гранични скуп могућности. Погледајте capabilities(7). Аргумент је зарезима раздвојен списак уноса +cap и -cap, који додају или уклањају унос. cap може бити или човеку читљив назив као што се види у capabilities(7) без префикса cap_ или у формату cap_N, где је N унутрашњи индекс могућности који користи Линукс. +all и -all се могу користити за додавање или уклањање свих могућности.

    Скуп могућности почиње као тренутни наследни скуп за --inh-caps, тренутни амбијентални скуп за --ambient-caps и тренутни гранични скуп за --bounding-set.

    Знајте да следећа ограничења (описан у capabilities(7)) која се односе на изменама ових могућности постављају:

        • Могућност се може додати наследном скупу само ако је тренутно присутна у граничном скупу.

        • Могућност се може додати амбијенталном скупу само ако је тренутно присутна и у дозвољеном и у наследном скупу.

        • Без обзира на синтаксу коју нуди setpriv, кернел не дозвољава додавање могућности у гранични скуп.

    Ако избаците могућност из граничног скупа, а да је не избаците и из наследног скупа, вероватно ћете постати збуњени. Не радите то.

--keep-groups
    Очувава додатне групе. Корисно је само у конјункцији са --rgid, --egid, или --regid.

--init-groups
    Започиње додатне групе користећи „initgroups3“. Корисна је само у конјункцији са --ruid или --reuid.

--list-caps
    Исписује све познате могућности. Ова опција мора бити наведена сама.

--nnp, --no-new-privs
    Поставља бит no_new_privs. Са овим битом постављеним, execve(2) неће гарантовати нове привилегије. На пример, битови постави-ИД-корисника и постави-ИД-групе, као и могућности датотеке биће онемогућени. (Извршавање бинарних датотека са овим битовима постављеним ће и даље радити, али неће добити привилегије. Одређени LSM-ови, посебно AppArmor, могу довести до неуспеха у извршавању одређених програма.) Овај бит наслеђују подређени процеси и не може се поништити. Погледајте prctl(2) и Documentation/prctl/no_new_privs.txt у извору Линукс кернела.

    не_нове_привил бит је подржан још од Линукса 3.5.

--rgid гид, --egid гид, --regid гид
    Поставља стварни, ефективни, или оба ГИД-а. Аргумент гид се може дати као текстуални назив групе.

    Због безбедности, морате навести --clear-groups, --groups, --keep-groups, или --init-groups ако поставите неки примарни гид.

--ruid уид, --euid уид, --reuid уид
    Поставља стварни, ефективни, или оба УИД-а. Аргумент уид се може дати као текстуални назив пријаве.

    Постављање уид-а или гид-а не мења могућности, иако позив извршавања на крају може променити могућности. То значи да, ако сте администратор, вероватно желите да урадите нешто попут:

    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|<сигнал>
    Задржава, брише или поставља родитељски сигнал смрти. Неки LSM-ови, пре свега СЕЛинукс и AppArmor, бришу сигнал када се креденцијали процеса промене. Коришћење --pdeathsig keep ће повратити родитељски сигнал смрти након промене креденцијала да би се поправила та ситуација.

--ptracer пид|any|none
    Када је ограничени „ptrace“ режим Yama-е у дејству (тако је,, када је /proc/sys/kernel/yama/ptrace_scope постављено на 1), омогућава да буде праћен са ptrace(2) процесом са наведеним ПИД-ом, или било којим процесом, или без процеса. Видите PR_SET_PTRACER(2const). (Знајте да ово не наслеђује изрођени процес, стога је очувано кроз execve(2).) Ова опција нема дејства када Yama није укључено или је у неком режиму другачијем од ограниченог „ptrace“-а.

--selinux-label натпис
    Потражује одређени СЕЛинукс прелаз (користећи прелаз на „exec“-у, а не „dyntrans“-у). Ово неће успети и проузроковаће прекида setpriv-а ако СЕЛинукс није у употреби, а прелаз може бити занемарен или може довести до тога да execve(2) не успе по хиру СЕЛинукса. (Нарочито, мало је вероватно да ће ово радити заједно са no_new_privs.) Ово је слично са runcon(1).

--apparmor-profile профил
    Потражује одређени AppArmor профил (користећи прелаз на извршавању). Ово неће успети и довести до тога да setpriv прекине ако се AppArmor не користи, а прелаз може бити занемарен или довести до тога да execve(2) не успе по жељи AppArmor-а.

--landlock-access приступ
    Укључује „landlock“ ограничења за одређени скуп системских приступа. Да омогућите одређене подгрупе приступа користите --landlock-rule.

    Блокира приступ свим системима датотека:

    setpriv --landlock-access сд

    Блокира брисање свих датотека и стварање директоријума:

    setpriv --landlock-access сд:remove-file,make-dir

    За потпун скуп подржаних категорија приступа користите setpriv --help.

    The generic placeholder "fs" is subject to change and may be extended in future versions to support new access types.

--landlock-rule правило
    Допушта један посебан приступ из категорија блокираних са --landlock-access.

    Синтакса је као што следи:

    --landlock-rule $врста_правила:$приступ:$аргумент_правила

    На пример гарантује приступ читања датотеке свему под /boot:

    --landlock-rule путања-под:датотека-читања:/boot

--seccomp-filter датотека
    Учитава сирови код „BPF seccomp“ филтера из датотеке.

    Филтери се могу на пример направити са enosys.

--reset-env

        • clears all the environment variables except TERM environment variable

        • initializes the environment variables HOME, SHELL, USER, LOGNAME according to the user’s passwd entry

        • the environment variable SHELL defaults to /bin/sh if none is given in the user’s passwd entry.

        • resets PATH environment variable according to setting in /etc/login.defs (ENV_PATH, ENV_SUPATH or ENV_ROOTPATH variables), or defaults to /usr/local/bin:/bin:/usr/bin for a regular user and to /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin for root.

        The environment variable PATH may be different on systems where /bin and /sbin are merged into /usr.

-h, --help
    Приказује текст помоћи и излази.

-V, --version
    Исписује издање и излази.

БЕЛЕШКЕ

Ако примена неке наведене опције не успе, програм неће бити покренут и setpriv ће резултирати излазним стањем 127.

Будите опрезни са овим алатом – може имати неочекиване безбедносне последице. На пример, постављање no_new_privs и затим извршавање програма који је ограничен на СЕЛинукс (као што би урадио овај алат) може спречити да СЕЛинукс ограничења ступе на снагу.

ПРИМЕРИ

Note that setpriv is not a 1:1 replacement for su(1), runuser(1), or sudo(8). Unlike those tools, setpriv does not use PAM, does not prompt for a password, and does not perform session or accounting setup. The examples below provide a starting point for common privilege-dropping scenarios.

If you want to switch UIDs/GIDs similarly to runuser(1) (without --login), try:

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

To also reset the environment (as sudo(8) does by default), add --reset-env:

setpriv --reuid=1000 --regid=1000 --inh-caps=-all --init-groups --reset-env

For a more restrictive setup that also limits the bounding set and prevents gaining new privileges (more restrictive than runuser or sudo):

setpriv --reuid=1000 --regid=1000 --init-groups --inh-caps=-all --bounding-set=-all --no-new-privs --reset-env

Ако желите да опонашате setuid(8) позадинског алата, покушајте:

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

АУТОРИ

ПОГЛЕДАЈТЕ ТАКОЂЕ

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

ПРИЈАВЉИВАЊЕ ГРЕШАКА

За пријављивање грешака, користите „https://github.com/util-linux/util-linux/issues[issue tracker]“.

ДОСТУПНОСТ

Наредба setpriv је део „util-linux“ пакета који се може преузети са