'\" t .\" Title: setpriv .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-09-02 .\" Manual: Dienstprogramme für Benutzer .\" Source: util-linux 2.42.3 .\" Language: English .\" .TH "SETPRIV" "1" "2026-09-02" "util\-linux 2.42.3" "Dienstprogramme für Benutzer" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "BEZEICHNUNG" setpriv \- ein Programm mit anderen Linux\-Berechtigungseinstellungen ausführen .SH "ÜBERSICHT" .sp \fBsetpriv\fP [Optionen] \fIProgramm\fP [\fIArgumente\fP] .SH "BESCHREIBUNG" .sp Legt die verschiedenen über \fBexecve\fP(2) vererbten Linux\-Berechtigungseinstellungen fest oder fragt diese ab. .sp Im Vergleich zu \fBsu\fP(1) und \fBrunuser\fP(1) verwendet \fBsetpriv\fP weder PAM, noch bittet es um die Eingabe eines Passworts. Es ist ein einfacher Wrapper für \fBexecve\fP(2), der keine Benutzerkennung setzt und zum Abgeben von Privilegien auf die gleiche Art wie \fBsetuidgid\fP(8) aus \fBdaemontools\fP, \fBchpst\fP(8) aus \fBrunit\fP oder ähnlichen Werkzeugen, die von anderen Diensteverwaltern ausgeliefert werden, verwendet werden kann. .SH "OPTIONEN" .sp \fB\-\-clear\-groups\fP .RS 4 löscht zusätzliche Gruppen. .RE .sp \fB\-d\fP, \fB\-\-dump\fP .RS 4 gibt den aktuellen Status der Berechtigungen aus. Diese Option kann mehrfach angegeben werden, um zusätzliche, aber weitestgehend nutzlose Informationen anzuzeigen. Dies ist zu allen anderen Optionen inkompatibel. .RE .sp \fB\-\-groups\fP \fIGruppe\fP.\|.\|. .RS 4 setzt zusätzliche Gruppen. Das Argument ist eine durch Kommata getrennte Liste von Gruppenkennungen oder Namen. .RE .sp \fB\-\-inh\-caps\fP (\fB+\fP|\fB\-\fP)\fICap\fP.\|.\|., \fB\-\-ambient\-caps\fP (\fB+\fP|\fB\-\fP)\fICap\fP.\|.\|., \fB\-\-bounding\-set\fP (\fB+\fP|\fB\-\fP)\fICap\fP.\|.\|. .RS 4 setzt die vererbbaren Capabilities, Umgebungs−Capabilities oder die Capabilities−Begrenzungsmenge. Siehe \fBcapabilities\fP(7). Das Argument ist eine durch Kommata getrennte Liste von \fB+\fP\fIcap\fP\- beziehungsweise \fB\-\fP\fIcap\fP\-Einträgen, die jeweils einen entsprechenden Eintrag hinzufügen oder entfernen. \fIcap\fP kann entweder ein menschenlesbarer Name wie in \fBcapabilities\fP(7) sein (ohne das Präfix \fIcap_\fP) oder als \fBcap_N\fP formatiert sein, wobei \fIN\fP der von Linux intern verwendete Capability−Index ist. \fB+all\fP und \fB\-all\fP können Sie zum Hinzufügen oder Entfernen aller Capabilities verwenden. .sp Die Gruppe der Capabilities ist anfänglich der als der aktuell vererbbare Satz für \fB\-\-inh\-caps\fP, der aktuelle Umgebungs\-Satz für \fB\-\-ambient\-caps\fP und die aktuelle Begrenzungsmenge für \fB\-\-bounding\-set\fP. .sp Beachten Sie die folgenden Einschränkungen (detailliert in \fBcapabilities\fP(7) beschrieben) hinsichtlich der Änderungen an diesen Capability\-Gruppen: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Eine Capability kann nur zu einem vererbbaren Satz hinzugefügt werden, wenn sie in der Begrenzungsmenge vorhanden ist. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Eine Capability kann nur zum Umgebungssatz hinzugefügt werden, wenn sie sowohl in den erlaubten als auch vererbbaren Sätzen vorhanden ist. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Trotz der von \fBsetpriv\fP bereitgestellten Syntax erlaubt es der Kernel nicht, Capabilities zum Umgebungssatz hinzuzufügen. .RE .sp 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. .RE .sp \fB\-\-keep\-groups\fP .RS 4 behält zusätzliche Gruppen bei. Dies ist nur zusammen mit \fB\-\-rgid\fP, \fB\-\-egid\fP oder \fB\-\-regid\fP nützlich. .RE .sp \fB\-\-init\-groups\fP .RS 4 initialisiert zusätzliche Gruppen mittels \fBinitgroups\fP(3). Dies ist nur zusammen mit \fB\-\-ruid\fP oder \fB\-\-reuid\fP nützlich. .RE .sp \fB\-\-list\-caps\fP .RS 4 listet alle bekannten Capabilities auf. Diese Option muss allein angegeben werden. .RE .sp \fB\-\-nnp\fP, \fB\-\-no\-new\-privs\fP .RS 4 setzt das \fIno_new_privs\fP\-Bit. Wenn dieses gesetzt ist, gewährt \fBexecve\fP(2) keine neuen Privilegien. Zum Beispiel werden sowohl die Bits »set\-user\-ID« und »set\-group\-ID« als auch die Datei\-Capabilities deaktiviert. Die Ausführung von Programmen wird mit diesen gesetzten Bits noch möglich sein, aber sie werden keine Privilegien erlangen können. Bestimmte Linux Security Modules (LSMs), vor allem AppArmor, könnten das Ausführen bestimmter Programme verhindern. Dieses Bit wird an Kindprozesse vererbt und kann nicht zurückgesetzt werden. Siehe \fBprctl\fP(2) und \fIDocumentation/prctl/no_new_privs.txt\fP in den Linux\-Kernelquellen. .sp Das Bit \fIno_new_privs\fP wird seit Linux 3.5 unterstützt. .RE .sp \fB\-\-rgid\fP \fIGID\fP, \fB\-\-egid\fP \fIGID\fP, \fB\-\-regid\fP \fIGID\fP .RS 4 setzt die reale, effektive oder beide Gruppenkennungen. Das Argument \fIGruppenkennung\fP kann als Gruppenname in Textform angegeben werden. .sp Aus Sicherheitsgründen müssen Sie eine der Optionen \fB\-\-clear\-groups\fP, \fB\-\-groups\fP, \fB\-\-keep\-groups\fP oder \fB\-\-init\-groups\fP angeben, wenn Sie eine primäre \fIGruppenkennung\fP setzen. .RE .sp \fB\-\-ruid\fP \fIBenutzerkennung\fP, \fB\-\-euid\fP \fIBenutzerkennung\fP, \fB\-\-reuid\fP \fIBenutzerkennung\fP .RS 4 setzt die reale, effektive oder beide Benutzerkennungen. Das Argument \fIBenutzerkennung\fP kann als Anmeldename in Textform angegeben werden. .sp Das Setzen einer \fIBenutzerkennung\fP oder \fIGruppenkennung\fP ändert keine Capabilities, obwohl der Exec\-Aufruf doch Capabilities ändern könnte. Das bedeutet, dass Sie mit Root\-Rechten vielleicht Folgendes tun wollen: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all\fP .RE .sp \fB\-\-securebits\fP (\fB+\fP|\fB\-\fP)\fISicherheitsbit\fP.\|.\|. .RS 4 setzt Sicherheitsbits oder setzt sie zurück. Das Argument ist eine durch Kommata getrennte Liste. Zulässige Sicherheitsbits sind \fInoroot\fP, \fInoroot_locked\fP, \fIno_setuid_fixup\fP, \fIno_setuid_fixup_locked\fP und \fIkeep_caps_locked\fP. \fIkeep_caps\fP wird von \fBexecve\fP(2) zurückgesetzt und ist daher nicht erlaubt. .RE .sp \fB\-\-pdeathsig keep\fP|\fBclear\fP|\fB\fP .RS 4 erhält oder setzt das Eltern\-Tötungssignal oder setzt es zurück. Einige LSMs, vor allem SELinux und AppArmor, setzen das Signal zurück, wenn sich die Anmeldedaten des Prozesses ändern. Mit \fB\-\-pdeathsig keep\fP können Sie, um die Situation zu verbessern, das Eltern\-Tötungssignal wiederherstellen, nachdem die Anmeldedaten des Prozesses geändert wurden. .RE .sp \fB\-\-ptracer\fP \fIPID\fP|\fBany\fP|\fBnone\fP .RS 4 Wenn Yamas eingeschränkter Ptrace\-Modus aktiv ist (d.h. wenn \fI/proc/sys/kernel/yama/ptrace_scope\fP auf 1 gesetzt ist), kann der Prozess mit der angegebenen PID, ein beliebiger Prozess oder kein Prozess mittels \fBptrace\fP(2) verfolgt werden. Siehe \fBPR_SET_PTRACER\fP(2const). (Beachten Sie, dass dies nicht von untergeordneten Prozessen übernommen wird, obwohl es in \fBexecve\fP(2) erhalten bleibt.) Diese Option hat keine Wirkung, wenn Yama nicht aktiviert ist oder sich in einem anderen Modus als dem eingeschränkten Ptrace\-Modus befindet. .RE .sp \fB\-\-selinux\-label\fP \fILabel\fP .RS 4 fordert eine bestimmte SELinux\-Transition (Übergang) an (mit einer Transition auf exec, nicht dyntrans). Dies wird fehlschlagen und einen Abbruch von \fBsetpriv\fP verursachen, falls SELinux nicht verwendet wird, und die Transition könnte ignoriert werden oder \fBexecve\fP(2) wegen SELinux fehlschlagen lassen (insbesondere wird dies wahrscheinlich mit \fIno_new_privs\fP nicht funktionieren). Dies ist ähnlich zu \fBruncon\fP(1). .RE .sp \fB\-\-apparmor\-profile\fP \fIProfil\fP .RS 4 fordert ein bestimmtes AppArmor\-Profil an (mit einer Transition auf exec). Dies wird fehlschlagen und einen Abbruch von \fBsetpriv\fP verursachen, falls AppArmor nicht verwendet wird, und die Transition könnte ignoriert werden oder \fBexecve\fP(2) wegen AppArmor fehlschlagen lassen. .RE .sp \fB\-\-landlock\-access\fP \fIZugriff\fP .RS 4 aktiviert Landlock\-Einschränkungen für eine bestimmte Reihe von Systemzugriffen. Um spezifische Untergruppen von Zugriffen zuzulassen, verwenden Sie \fB\-\-landlock\-rule\fP. .sp Alle Dateisystemzugriffe blockieren: .sp \fBsetpriv \-\-landlock\-access Dateisystem\fP .sp Löschen von Dateien und Anlegen von Verzeichnissen blockieren: .sp \fBsetpriv \-\-landlock\-access fs:remove\-file,make\-dir\fP .sp Eine vollständige Liste aller unterstützten Zugriffskategorien wird mit dem Befehl \fBsetpriv \-\-help\fP angezeigt. .sp Der generische Platzhalter \fIDateisystem\fP kann sich ändern und in zukünftigen Versionen erweitert werden, um neue Zugriffstypen zu unterstützen. .RE .sp \fB\-\-landlock\-rule\fP \fIRegel\fP .RS 4 erlaubt einen bestimmten Zugriff aus den durch \fB\-\-landlock\-access\fP blockierten Kategorien. .sp Die Syntax ist wie folgt: .sp \fB\-\-landlock\-rule $Regeltyp:$Zugriff:$Regelargument\fP .sp Beispiel für die Gewährung des Lesezugriffs auf alles unter \fB/boot\fP: .sp \fB\-\-landlock\-rule path\-beneath:read\-file:/boot\fP .RE .sp \fB\-\-seccomp\-filter\fP \fIDatei\fP .RS 4 lädt rohen BPF\-seccomp\-Filtercode aus einer Datei. .sp Filter können beispielsweise mit \fBenosys\fP erstellt werden. .RE .sp \fB\-\-reset\-env\fP .RS 4 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} löscht alle Umgebungsvariablen außer \fBTERM\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} initialisiert die Umgebungsvariablen \fBHOME\fP, \fBSHELL\fP, \fBUSER\fP und \fBLOGNAME\fP gemäß dem Passworteintrag des Benutzers .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Die Umgebungsvariable \fBSHELL\fP ist standardmäßig \fB/bin/sh\fP, sofern im Passworteintrag des Benutzers nichts angegeben ist. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} setzt die Umgebungsvariable \fBPATH\fP gemäß der Einstellung in \fI/etc/login.defs\fP zurück (\fBENV_PATH\fP, \fBENV_SUPATH\fP oder \fBENV_ROOTPATH\fP), oder verwendet standardmäßig \fI/usr/local/bin:/bin:/usr/bin\fP für normale Benutzer und \fI/usr/local/sbin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin\fP für Root. .sp Die Umgebungsvariable \fBPATH\fP kann auf Systemen anders sein, auf denen \fI/bin\fP und \fI/sbin\fP in \fI/usr\fP zusammengeführt sind. .RE .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 zeigt einen Hilfetext an und beendet das Programm. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 zeigt Versionsinformationen an und beendet das Programm. .RE .SH "ANMERKUNGEN" .sp Falls irgendeine der angegeben Optionen fehlschlägt, wird das \fIProgramm\fP nicht ausgeführt und \fBsetpriv\fP gibt den Exit\-Status 127 zurück. .sp Seien Sie vorsichtig mit diesem Werkzeug – es könnte unerwartete Folgen für die Sicherheit haben. Wenn Sie beispielsweise \fIno_new_privs\fP setzen und dann ein Programm ausführen, das durch SELinux eingeschränkt wird (wie es dieses Werkzeug machen würde), könnte das die SELinux\-Einschränkungen wirkungslos machen. .SH "BEISPIELE" .sp Note that \fBsetpriv\fP is not a 1:1 replacement for \fBsu\fP(1), \fBrunuser\fP(1), or \fBsudo\fP(8). Unlike those tools, \fBsetpriv\fP 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. .sp If you want to switch UIDs/GIDs similarly to \fBrunuser\fP(1) (without \fB\-\-login\fP), try: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups\fP .sp To also reset the environment (as \fBsudo\fP(8) does by default), add \fB\-\-reset\-env\fP: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups \-\-reset\-env\fP .sp For a more restrictive setup that also limits the bounding set and prevents gaining new privileges (more restrictive than \fBrunuser\fP or \fBsudo\fP): .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-init\-groups \-\-inh\-caps=\-all \-\-bounding\-set=\-all \-\-no\-new\-privs \-\-reset\-env\fP .sp Wenn Sie das Verhalten von \fBsetuid\fP(8) aus Daemontools nachbilden wollen, versuchen Sie: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-clear\-groups\fP .SH "AUTOREN" .sp .MTO "luto\(atamacapital.net" "Andy Lutomirski" "" .SH "SIEHE AUCH" .sp \fBrunuser\fP(1), \fBsu\fP(1), \fBprctl\fP(2), \fBcapabilities\fP(7), \fBlandlock\fP(7) .SH "FEHLER MELDEN" .sp Nutzen Sie zum Melden von Fehlern das \c .URL "https://github.com/util\-linux/util\-linux/issues" "Fehlererfassungssystem" "." .SH "VERFÜGBARKEIT" .sp Der Befehl \fBsetpriv\fP ist Teil des Pakets util\-linux, welches aus dem \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Linux\-Kernel\-Archiv" "" heruntergeladen werden kann.