SETPRIV(1)

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

SYNOPSIS

setpriv [flaggor] program [argument]

BESKRIVNING

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.

FLAGGOR

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

ANTECKNINGAR

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.

EXEMPEL

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

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

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

UPPHOVSPERSONER

SE ÄVEN

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

FELRAPPORTERING

För felrapporter, använd

TILLGÄNGLIGHET

Kommandot setpriv ingår i paketet util-linux som kan hämtas från