SETPRIV(1) Användarkommandon SETPRIV(1)

setpriv - kör ett program med olika inställningar för Linux-privilegier

setpriv [flaggor] program [argument]

Ställer in eller frågar efter olika Linux-privilegieinställningar som ärvs av execve(2).

I jämförelse med su(1) och runuser(1) använder setpriv varken PAM eller frågar efter lösenord. Det är en enkel, icke-set-user-ID-omslag runt execve(2), och kan användas för att släppa privilegier på samma sätt som setuidgid(8) från daemontools, chpst(8) från runit, eller liknande verktyg som levereras av andra tjänstehanterare.

--clear-groups

Tydliga tilläggsgrupper.

-d, --dump

Dumpa det aktuella privilegietillståndet. Denna flagga kan anges mer än en gång för att visa extra, oftast värdelös, information. Inkompatibelt med alla andra flaggor.

--groups grupp...

Ange kompletterande grupper. Argumentet är en kommaseparerad lista med GID eller namn.

--inh-caps (+|-)cap..., --ambient-caps (+|-)cap..., --bounding-set (+|-)cap...

Ställ in de ärftliga kapaciteterna, omgivande kapaciteter eller kapacitetens avgränsande uppsättning. Se capabilities(7). Argumentet är en kommaseparerad lista med +cap- och -cap-poster, som lägger till respektive tar bort en post. cap kan antingen vara ett mänskligt läsbart namn som i capabilities(7) utan prefixet cap_ eller i formatet cap_N, där N är det interna kapacitetsindex som används av Linux. +all och -all kan användas för att lägga till eller ta bort alla versaler.

Uppsättningen av funktioner börjar som den aktuella ärftliga uppsättningen för --inh-caps, den aktuella omgivande uppsättningen för --ambient-caps och den aktuella avgränsande uppsättningen för --bounding-set.

Observera följande restriktioner (som beskrivs i capabilities(7)) beträffande modifieringar av dessa kapacitetsuppsättningar:

•En förmåga kan endast läggas till i den ärftliga uppsättningen om den för närvarande finns i den avgränsande uppsättningen.
•En förmåga kan endast läggas till i den omgivande uppsättningen om den för närvarande finns i både den tillåtna och den ärftliga uppsättningen.
•Trots den syntax som erbjuds av setpriv tillåter inte kärnan att förmågor läggs till i den avgränsande uppsättningen.

Om du tar bort en kapacitet från den avgränsande uppsättningen utan att samtidigt ta bort den från den ärftliga uppsättningen, kommer du sannolikt att bli förvirrad. Gör inte så.

--keep-groups

Bevara kompletterande grupper. Används endast i kombination med --rgid, --egid eller --regid.

--init-groups

Initiera tilläggsgrupper med hjälp av initgroups3. Endast användbar i samband med --ruid eller --reuid.

--list-caps

Lista alla kända funktioner. Denna flagga måste anges ensamt.

--nnp, --no-new-privs

Ställ in biten no_new_privs. Om den här biten är aktiverad kommer execve(2) inte att bevilja nya privilegier. Exempelvis kommer bitarna set-user-ID och set-group-ID samt filfunktioner att inaktiveras. (Exekvering av binärfiler med dessa bitar aktiverade kommer fortfarande att fungera, men de kommer inte att få några privilegier. Vissa LSM:er, särskilt AppArmor, kan leda till att vissa program inte kan köras) Denna bit ärvs av underordnade processer och kan inte inaktiveras. Se prctl(2) och Documentation/prctl/no_new_privs.txt i Linux-kärnans källkod.

Biten no_new_privs stöds sedan Linux 3.5.

--rgid gid, --egid gid, --regid gid

Ange det verkliga, det effektiva eller båda GID:en. Argumentet gid kan anges som ett gruppnamn i textform.

För säkerhets skull måste du ange något av --clear-groups, --groups, --keep-groups eller --init-groups om du anger någon primär gid.

--ruid uid, --euid uid, --reuid uid

Ange det verkliga, det effektiva eller båda UID:erna. Argumentet uid kan anges som ett inloggningsnamn i textform.

Att ställa in en uid eller gid ändrar inte kapaciteten, även om exec-anropet i slutet kan ändra kapaciteten. Det innebär att om du är root vill du förmodligen göra något i stil med:

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

--securebits (+|-)securebit...

Ställ in eller rensa securebits. Argumentet är en kommaseparerad lista. De giltiga securebits är noroot, noroot_locked, no_setuid_fixup, no_setuid_fixup_locked och keep_caps_locked. keep_caps rensas av execve(2) och är därför inte tillåtet.

--pdeathsig keep|clear|<signal>

Behåll, rensa eller ställ in den överordnade processens dödssignal. Vissa LSM:er, framför allt SELinux och AppArmor, rensar signalen när processens autentiseringsuppgifter ändras. Om du använder --pdeathsig keep återställs den överordnade dödssignalen efter att autentiseringsuppgifterna har ändrats för att åtgärda den situationen.

--ptracer pid|any|none

När Yamas begränsade ptrace-läge är i kraft (det vill säga när /proc/sys/kernel/yama/ptrace_scope är satt till 1), tillåt att spåras via ptrace(2) av processen med den angivna PID:n, eller någon process, eller ingen process. Se PR_SET_PTRACER(2const). (Observera att detta inte ärvs av underordnade processer, även om det bevaras över execve(2)) Denna flagga har ingen effekt när Yama inte är aktiverat eller är i ett annat läge än restricted ptrace.

--selinux-label etikett

Begär en viss SELinux-övergång (använder en övergång på exec, inte dyntrans). Detta kommer att misslyckas och leda till att setpriv avbryts om SELinux inte används, och övergången kan ignoreras eller leda till att execve(2) misslyckas om SELinux så önskar. (I synnerhet är det osannolikt att detta fungerar tillsammans med no_new_privs.) Detta liknar runcon(1).

--apparmor-profile profile

Begär en viss AppArmor-profil (med hjälp av en övergång på exec). Detta kommer att misslyckas och leda till att setpriv avbryts om AppArmor inte används, och övergången kan ignoreras eller leda till att execve(2) misslyckas om AppArmor så önskar.

--landlock-access access

Aktivera landlock-begränsningar för en viss uppsättning systemåtkomster. För att tillåta specifika undergrupper av åtkomster använd --landlock-rule.

Blockera all åtkomst till filsystemet:

setpriv --landlock-åtkomst fs

Blockera all radering av filer och skapande av kataloger:

setpriv --landlock-åtkomst fs:remove-file,make-dir

För en fullständig uppsättning av åtkomstkategorier som stöds, använd setpriv --help.

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

--landlock-rule rule

Tillåt en specifik åtkomst från de kategorier som blockeras av --landlock-access.

Syntaxen är som följer:

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

Ge t.ex. läsåtkomst till allt under /boot:

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

--seccomp-filter fil

Ladda rå BPF seccomp filterkod från en fil.

Filter kan t.ex. skapas med 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

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

Om tillämpningen av någon av de angivna flaggorna misslyckas kommer program inte att köras och setpriv kommer att returneras med utgångsstatus 127.

Var försiktig med det här verktyget - det kan få oväntade konsekvenser för säkerheten. Om du till exempel ställer in no_new_privs och sedan kör ett program som är SELinux-begränsat (som det här verktyget skulle göra) kan det hända att SELinux-begränsningarna inte träder i kraft.

Om du vill ha ett beteende som liknar su(1)/runuser(1) eller sudo(8) (utan flaggan -g) kan du prova något liknande:

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

Om du vill efterlikna daemontools setuid(8) kan du prova:

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

Andy Lutomirski <luto@amacapital.net>

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

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot setpriv ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1