SETPRIV(1) Dienstprogramme fur Benutzer SETPRIV(1) BEZEICHNUNG setpriv - ein Programm mit anderen Linux-Berechtigungseinstellungen ausfuhren UBERSICHT setpriv [Optionen] Programm [Argumente] BESCHREIBUNG Legt die verschiedenen uber execve(2) vererbten Linux-Berechtigungseinstellungen fest oder fragt diese ab. Im Vergleich zu su(1) und runuser(1) verwendet setpriv weder PAM, noch bittet es um die Eingabe eines Passworts. Es ist ein einfacher Wrapper fur execve(2), der keine Benutzerkennung setzt und zum Abgeben von Privilegien auf die gleiche Art wie setuidgid(8) aus daemontools, chpst(8) aus runit oder ahnlichen Werkzeugen, die von anderen Diensteverwaltern ausgeliefert werden, verwendet werden kann. OPTIONEN --clear-groups loscht zusatzliche Gruppen. -d, --dump gibt den aktuellen Status der Berechtigungen aus. Diese Option kann mehrfach angegeben werden, um zusatzliche, aber weitestgehend nutzlose Informationen anzuzeigen. Dies ist zu allen anderen Optionen inkompatibel. --groups Gruppe... setzt zusatzliche Gruppen. Das Argument ist eine durch Kommata getrennte Liste von Gruppenkennungen oder Namen. --inh-caps (+|-)Cap..., --ambient-caps (+|-)Cap..., --bounding-set (+|-)Cap... setzt die vererbbaren Capabilities, Umgebungs-Capabilities oder die Capabilities-Begrenzungsmenge. Siehe capabilities(7). Das Argument ist eine durch Kommata getrennte Liste von +cap- beziehungsweise -cap-Eintragen, die jeweils einen entsprechenden Eintrag hinzufugen oder entfernen. cap kann entweder ein menschenlesbarer Name wie in capabilities(7) sein (ohne das Prafix cap_) oder als cap_N formatiert sein, wobei N der von Linux intern verwendete Capability-Index ist. +all und -all konnen Sie zum Hinzufugen oder Entfernen aller Capabilities verwenden. Die Gruppe der Capabilities ist anfanglich der als der aktuell vererbbare Satz fur --inh-caps, der aktuelle Umgebungs-Satz fur --ambient-caps und die aktuelle Begrenzungsmenge fur --bounding-set. Beachten Sie die folgenden Einschrankungen (detailliert in capabilities(7) beschrieben) hinsichtlich der Anderungen an diesen Capability-Gruppen: o Eine Capability kann nur zu einem vererbbaren Satz hinzugefugt werden, wenn sie in der Begrenzungsmenge vorhanden ist. o Eine Capability kann nur zum Umgebungssatz hinzugefugt werden, wenn sie sowohl in den erlaubten als auch vererbbaren Satzen vorhanden ist. o Trotz der von setpriv bereitgestellten Syntax erlaubt es der Kernel nicht, Capabilities zum Umgebungssatz hinzuzufugen. Falls Sie eine Capability aus dem Umgebungssatz entfernen, ohne sie auch aus dem vererbbaren Satz zu entfernen, kommen Sie wahrscheinlich durcheinander. Tun Sie das besser nicht. --keep-groups behalt zusatzliche Gruppen bei. Dies ist nur zusammen mit --rgid, --egid oder --regid nutzlich. --init-groups initialisiert zusatzliche Gruppen mittels initgroups(3). Dies ist nur zusammen mit --ruid oder --reuid nutzlich. --list-caps listet alle bekannten Capabilities auf. Diese Option muss allein angegeben werden. --no-new-privs setzt das no_new_privs-Bit. Wenn dieses gesetzt ist, gewahrt execve(2) keine neuen Privilegien. Zum Beispiel werden sowohl die Bits >>set-user-ID<< und >>set-group-ID<< als auch die Datei-Capabilities deaktiviert. Die Ausfuhrung von Programmen wird mit diesen gesetzten Bits noch moglich sein, aber sie werden keine Privilegien erlangen konnen. Bestimmte Linux Security Modules (LSMs), vor allem AppArmor, konnten das Ausfuhren bestimmter Programme verhindern. Dieses Bit wird an Kindprozesse vererbt und kann nicht zuruckgesetzt werden. Siehe prctl(2) und Documentation/prctl/no_new_privs.txt in den Linux-Kernelquellen. Das Bit no_new_privs wird seit Linux 3.5 unterstutzt. --rgid GID, --egid GID, --regid GID setzt die reale, effektive oder beide Gruppenkennungen. Das Argument Gruppenkennung kann als Gruppenname in Textform angegeben werden. Aus Sicherheitsgrunden mussen Sie eine der Optionen --clear-groups, --groups, --keep-groups oder --init-groups angeben, wenn Sie eine primare Gruppenkennung setzen. --ruid Benutzerkennung, --euid Benutzerkennung, --reuid Benutzerkennung setzt die reale, effektive oder beide Benutzerkennungen. Das Argument Benutzerkennung kann als Anmeldename in Textform angegeben werden. Das Setzen einer Benutzerkennung oder Gruppenkennung andert keine Capabilities, obwohl der Exec-Aufruf doch Capabilities andern konnte. Das bedeutet, dass Sie mit Root-Rechten vielleicht Folgendes tun wollen: setpriv --reuid=1000 --regid=1000 --inh-caps=-all --securebits (+|-)Sicherheitsbit... setzt Sicherheitsbits oder setzt sie zuruck. Das Argument ist eine durch Kommata getrennte Liste. Zulassige Sicherheitsbits sind noroot, noroot_locked, no_setuid_fixup, no_setuid_fixup_locked und keep_caps_locked. keep_caps wird von execve(2) zuruckgesetzt und ist daher nicht erlaubt. --pdeathsig keep|clear| erhalt oder setzt das Eltern-Totungssignal oder setzt es zuruck. Einige LSMs, vor allem SELinux und AppArmor, setzen das Signal zuruck, wenn sich die Anmeldedaten des Prozesses andern. Mit --pdeathsig keep konnen Sie, um die Situation zu verbessern, das Eltern-Totungssignal wiederherstellen, nachdem die Anmeldedaten des Prozesses geandert wurden. --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 Label fordert eine bestimmte SELinux-Transition (Ubergang) an (mit einer Transition auf exec, nicht dyntrans). Dies wird fehlschlagen und einen Abbruch von setpriv verursachen, falls SELinux nicht verwendet wird, und die Transition konnte ignoriert werden oder execve(2) wegen SELinux fehlschlagen lassen (insbesondere wird dies wahrscheinlich mit no_new_privs nicht funktionieren). Dies ist ahnlich zu runcon(1). --apparmor-profile Profil fordert ein bestimmtes AppArmor-Profil an (mit einer Transition auf exec). Dies wird fehlschlagen und einen Abbruch von setpriv verursachen, falls AppArmor nicht verwendet wird, und die Transition konnte ignoriert werden oder execve(2) wegen AppArmor fehlschlagen lassen. --landlock-access Zugriff Enable landlock restrictions for a specific set of system accesses. To allow specific subgroups of accesses use --landlock-rule. Alle Dateisystemzugriffe blockieren: setpriv --landlock-access Dateisystem Loschen von Dateien und Anlegen von Verzeichnissen blockieren: setpriv --landlock-access Dateisystem Eine vollstandige Liste aller unterstutzten Zugriffskategorien wird mit dem Befehl setpriv --help angezeigt. --landlock-rule Regel Allow one specific access from the categories blocked by --landlock-access. Die Syntax ist wie folgt: --landlock-rule $Regeltyp:$Zugriff:$Regelargument Beispiel fur die Gewahrung des Lesezugriffs auf alles unter /boot: --landlock-rule path-beneath:read-file:/boot --seccomp-filter file Load raw BPF seccomp filter code from a file. Filters can for example be created with enosys. --reset-env setzt alle Umgebungsvariablen ausser TERM zuruck; initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME entsprechend dem Passworteintrag des Benutzers; setzt PATH fur einen normalen Benutzer auf /usr/local/bin:/bin:/usr/bin und fur den Root-Benutzer auf /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin. Die Umgebungsvariable PATH kann auf Systemen anders sein, auf denen /bin und /sbin in /usr zusammengefuhrt sind. Die Umgebungsvariable SHELL ist standardmassig /bin/sh, sofern im Passworteintrag des Benutzers nichts angegeben ist. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version Display version and exit. ANMERKUNGEN Falls irgendeine der angegeben Optionen fehlschlagt, wird das Programm nicht ausgefuhrt und setpriv gibt den Exit-Status 127 zuruck. Seien Sie vorsichtig mit diesem Werkzeug - es konnte unerwartete Folgen fur die Sicherheit haben. Wenn Sie beispielsweise no_new_privs setzen und dann ein Programm ausfuhren, das durch SELinux eingeschrankt wird (wie es dieses Werkzeug machen wurde), konnte das die SELinux-Einschrankungen wirkungslos machen. BEISPIELE Wenn Sie ein Verhalten wunschen, das ahnlich zu su(1)/runuser(1) oder sudo(8) (ohne die Option -g) ist, versuchen Sie Folgendes: setpriv --reuid=1000 --regid=1000 --init-groups Wenn Sie das Verhalten von setuid(8) aus Daemontools nachbilden wollen, versuchen Sie: setpriv --reuid=1000 --regid=1000 --clear-groups AUTOREN Andy Lutomirski SIEHE AUCH runuser(1), su(1), prctl(2), capabilities(7) landlock(7) FEHLER MELDEN For bug reports, use the issue tracker . VERFUGBARKEIT Der Befehl setpriv ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41 2025-03-29 SETPRIV(1)