SETPRIV(1)

BEZEICHNUNG
setpriv - ein Programm mit anderen Linux-Berechtigungseinstellungen ausführen

ÜBERSICHT
setpriv [Optionen] Programm [Argumente]

BESCHREIBUNG
Legt die verschiedenen über execve(2) vererbten Linux-Berechtigungseinstellungen fest oder fragt diese ab.

Im Vergleich zu su(1) und runuser(1) verwendet setpriv(1) weder PAM, noch bittet es um die Eingabe eines Passworts. Es ist ein einfacher Wrapper für 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 ähnlichen Werkzeugen, die von anderen Diensteverwaltern ausgeliefert werden, verwendet werden kann.

OPTION

--clear-groups
    löscht zusätzliche Gruppen.

-d, --dump
    gibt den aktuellen Status der Berechtigungen aus. Dies kann mehrfach angegeben werden, um zusätzliche, aber weitestgehend nutzlose Informationen anzuzeigen. Dies ist zu allen anderen Optionen inkompatibel.

--groups Gruppe …
    setzt zusätzliche Gruppen. Das Argument ist eine durch Kommata getrennte Liste von Gruppenkennungen oder Namen.

--inh-caps (+|-)Cap … oder --ambient-caps (+|-)Cap … oder  --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-Einträgen, die jeweils einen entsprechenden Eintrag hinzufügen oder entfernen. Cap kann entweder ein menschenlesbarer Name wie in capabilities(7) sein (ohne das Präfix cap_) oder als cap_N formatiert sein, wobei N der von Linux intern verwendete Capability-Index ist. +all und -all können Sie zum Hinzufügen oder Entfernen aller Capabilities verwenden. Die Gruppe der Capabilities ist anfänglich der als der aktuell vererbbare Satz für --inh-caps, der aktuelle Umgebungs-Satz für --ambient-caps und die aktuelle Begrenzungsmenge für --bounding-set. Wenn Sie etwas aus der Begrenzungsmenge weglassen, ohne es zugleich aus der vererbbaren Gruppe wegzulassen, wird Sie das wahrscheinlich verwirren. Sie sollten das nicht tun.

--keep-groups
    behält zusätzliche Gruppen bei. Dies ist nur zusammen mit --rgid, --egid oder --regid nützlich.

--init-groups
    initialisiert zusätzliche Gruppen mittels initgroups(3). Dies ist nur zusammen mit --ruid oder --reuid nützlich.

--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, gewährt 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 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 prctl(2) und Documentation/prctl/no_new_privs.txt in den Linux-Kernelquellen.

    Das Bit »no_new_privs« wird seit Linux 3.5 unterstützt.

--rgid Gruppenkennung, --egid Gruppenkennung, --regid Gruppenkennung
    setzt die reale, effektive oder beide Gruppenkennungen. Das Argument Gruppenkennung kann als Gruppenname in Textform angegeben werden.

    Aus Sicherheitsgründen müssen Sie eine der Optionen --clear-groups, --groups, --keep-groups oder --init-groups angeben, wenn Sie eine primäre 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 ändert keine Capabilities, obwohl der Exec-Aufruf doch Capabilities ändern könnte. 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 zurück. Das Argument ist eine durch Kommata getrennte Liste. Zulässige Sicherheitsbits sind noroot, noroot_locked, no_setuid_fixup, no_setuid_fixup_locked und keep_caps_locked. keep_caps wird von execve(2) zurückgesetzt und ist daher nicht erlaubt.

--pdeathsig keep|clear|<Signal>
    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 --pdeathsig keep können Sie, um die Situation zu verbessern, das Eltern-Tötungssignal wiederherstellen, nachdem die Anmeldedaten des Prozesses geändert wurden.

--selinux-label Label
    fordert eine bestimmte SELinux-Transition (Übergang) an (mit einer Transition auf exec, nicht dyntrans). Dies wird fehlschlagen und einen Abbruch von setpriv(1) verursachen, falls SELinux nicht verwendet wird, und die Transition könnte ignoriert werden oder execve(2) wegen SELinux fehlschlagen lassen (insbesondere wird dies wahrscheinlich mit no_new_privs nicht funktionieren). Dies ist ähnlich 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(1) verursachen, falls AppArmor nicht verwendet wird, und die Transition könnte ignoriert werden oder execve(2) wegen AppArmor fehlschlagen lassen.

--reset-env
    setzt alle Umgebungsvariablen außer TERM zurück; initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME entsprechend dem Passworteintrag des Benutzers; setzt PATH für einen normalen Benutzer auf /usr/local/bin:/bin:/usr/bin und für 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 zusammengeführt sind. Die Umgebungsvariable SHELL ist standardmäßig /bin/sh, sofern im Passworteintrag des Benutzers nichts angegeben ist.

-V, --version
    zeigt Versionsinformationen an und beendet das Programm.

-h, --help
    zeigt einen Hilfetext an und beendet das Programm.

ANMERKUNGEN
Falls irgendeine der angegeben Optionen fehlschlägt, wird das Programm nicht ausgeführt und setpriv gibt den Exit-Code 127 zurück.

Seien Sie vorsichtig mit diesem Werkzeug – es könnte unerwartete Folgen für die Sicherheit haben. Wenn Sie beispielsweise »no_new_privs« 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.

BEISPIEL
Wenn Sie ein Verhalten wünschen, das ähnlich 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

SIEHE AUCH
runuser(1), su(1), prctl(2), capabilities(7)

AUTOR
Andy Lutomirski (luto@amacapital.net)

VERFÜGBARKEIT
Der Befehl setpriv ist Teil des Pakets util-linux, welches aus dem Linux Kernel-Archiv (https://www.kernel.org/pub/linux/utils/util-linux/) heruntergeladen werden kann.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.