.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl)
.\" and Copyright (C) 2005, 2010, 2014, 2015, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH setresuid 2 "2. Mai 2024" "Linux man\-pages 6.9.1" 
.SH BEZEICHNUNG
setresuid, setresgid \- reale, effektive und gespeicherte Benutzer\- oder
Gruppenkennung setzen
.SH BIBLIOTHEK
Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP)
.SH ÜBERSICHT
.nf
\fB#define _GNU_SOURCE\fP         /* siehe feature_test_macros(7) */
\fB#include <unistd.h>\fP
.P
\fBint setresuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB, uid_t \fP\fIsuid\fP\fB);\fP
\fBint setresgid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB, gid_t \fP\fIsgid\fP\fB);\fP
.fi
.SH BESCHREIBUNG
\fBsetresuid\fP() setzt die reale Benutzerkennung, die effektive
Benutzerkennung und die gespeicherte set\-user\-ID des aufrufenden Prozesses.
.P
Ein unprivilegierter Prozess kann seine reale UID, die effektive UID und die
gespeicherte set\-user\-ID jeweils zu einem der Folgenden ändern: der
aktuellen realen UID, der aktuellen effektiven UID oder der aktuellen
gespeicherten set\-user\-ID.
.P
Ein privilegierter Prozess (unter Linux einer, der die
\fBCAP_SETUID\fP\-Capability hat) kann die reale UID, die effektive UID und die
gespeicherte set\-user\-ID auf beliebige Werte setzen.
.P
Wenn eines der Argumente \-1 ist, wird der dazugehörige Wert nicht geändert.
.P
Ohne Rücksicht auf die Änderungen an der realen UID, der effektiven UID und
der gespeicherten set\-user\-ID wird die Dateisystem\-UID stets auf den
gleichen Wert wie die (möglicherweise neue) effektive UID gesetzt.
.P
\fBsetresgid\fP() setzt vollständig analog dazu die reale GID, die effektive
GID und die gespeicherte SGID des aufrufenden Prozesses (und ändert stets
die GID des Dateisystems auf den gleichen Wert, wie die effektive GID) mit
den gleichen Einschränkungen für nicht privilegierte Prozesse.
.SH RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird \-1 zurückgegeben
und \fIerrno\fP gesetzt, um den Fehler anzuzeigen.
.P
\fIHinweis\fP: In manchen Fällen kann \fBsetresuid\fP() selbst dann fehlschlagen,
wenn die UID des Aufrufenden 0 ist; es ist ein gravierender
Sicherheitsfehler, wenn der Test auf einen Fehlschlag von \fBsetresuid\fP()
nicht ausgeführt wird.
.SH FEHLER
.TP 
\fBEAGAIN\fP
Der Aufruf würde die reale UID des Aufrufenden ändern (das heißt, \fIruid\fP
würde nicht mit der realen UID des Aufrufenden übereinstimmen), aber es gab
einen temporären Fehlschlag beim Zuweisen der nötigen Datenstrukturen des
Kernels.
.TP 
\fBEAGAIN\fP
\fIruid\fP entspricht nicht der realen UID des Aufrufenden, und dieser Aufruf
würde die Prozesse mit der realen Benutzerkennung \fIruid\fP die
Ressourcenbegrenzung \fBRLIMIT_NPROC\fP des Aufrufenden übersteigen
lassen. Seit Linux 3.1 tritt dieser Fehler nicht mehr auf (aber robuste
Anwendungen sollten die Möglichkeit dieses Fehlers prüfen); siehe die
Beschreibung von \fBEAGAIN\fP in \fBexecve\fP(2).
.TP 
\fBEINVAL\fP
Eine oder mehrere der Zielbenutzer\- oder Gruppenkennungen ist in diesem
Benutzer\-Namensraum unzulässig.
.TP 
\fBEPERM\fP
Der aufrufende Prozess ist nicht privilegiert (hatte nicht die notwendige
Capability in seinem Benutzernamensraum) und versuchte, die Kennungen auf
nicht erlaubte Werte zu ändern. Für \fBsetresuid\fP() ist die notwendige
Capability \fBCAP_SETUID\fP, für \fBsetresgid\fP() ist sie \fBCAP_SETGID\fP.
.SH VERSIONEN
.SS "Unterschiede C\-Bibliothek/Kernel"
Auf der Kernelebene sind Benutzer\- und Gruppenkennungen Attribute pro
Thread. POSIX verlangt aber, dass sich alle Threads in einem Prozess die
gleichen Berechtigungsnachweise teilen. Die NPTL\-Threading\-Implementierung
behandelt die POSIX\-Anforderungen durch Bereitstellung von
Wrapper\-Funktionen für die verschiedenen Systemaufrufe, die die UIDs und
GIDs der Prozesse ändern. Diese Wrapper\-Funktionen (darunter die für
\fBsetresuid\fP() und \fBsetresgid\fP()) verwenden eine signalbasierte Technik, um
sicherzustellen, dass bei der Änderung der Berechtigungsnachweise eines
Threads auch alle anderen Threads des Prozesses ihre Berechtigungsnachweise
ändern. Für Details siehe \fBnptl\fP(7).
.SH STANDARDS
Keine.
.SH GESCHICHTE
Linux 2.1.44, Glibc 2.3.2. HP\-UX, FreeBSD.
.P
Der Original\-Linux\-Systemaufrufe \fBsetresuid\fP() und \fBsetresgid\fP()
unterstützen nur 16\-Bit\-Benutzer\- und \-Gruppenkennungen. Nachfolgend fügte
Linux 2.4 \fBsetresuid32\fP() und \fBsetresgid32\fP() hinzu, die 32\-Bit\-Kennungen
unterstützen. Die Glibc\-Wrapper\-Funktionen \fBsetfsuid\fP() \fBsetresgid\fP() und
stellen die Änderungen transparent über Kernel\-Versionen hinweg bereit.
.SH "SIEHE AUCH"
\fBgetresuid\fP(2), \fBgetuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2),
\fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7),
\fBuser_namespaces\fP(7)
.PP
.SH ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Chris Leick <c.leick@vollbio.de>,
Mario Blättermann <mario.blaettermann@gmail.com>
und
Dr. Tobias Quathamer <toddy@debian.org>
erstellt.
.PP
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License Version 3
.UE
oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
.PP
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden,
schicken Sie bitte eine E-Mail an die
.MT debian-l10n-german@lists.debian.org
Mailingliste der Übersetzer
.ME .