.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 1983, 1991 The Regents of the University of California.
.\" and Copyright (C) 2009, 2010, 2014, 2015, Michael Kerrisk <mtk.manpages@gmail.com>
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\"     @(#)setregid.2	6.4 (Berkeley) 3/10/91
.\"
.\" Modified Sat Jul 24 09:08:49 1993 by Rik Faith <faith@cs.unc.edu>
.\" Portions extracted from linux/kernel/sys.c:
.\"             Copyright (C) 1991, 1992  Linus Torvalds
.\"             May be distributed under the GNU General Public License
.\" Changes: 1994-07-29 by Wilf <G.Wilford@ee.surrey.ac.uk>
.\"          1994-08-02 by Wilf due to change in kernel.
.\"          2004-07-04 by aeb
.\"          2004-05-27 by Michael Kerrisk
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH setreuid 2 "2. Mai 2024" "Linux man\-pages 6.9.1" 
.SH BEZEICHNUNG
setreuid, seteuid \- reale und/oder effektive Benutzer\- oder Gruppenkennung
setzen
.SH BIBLIOTHEK
Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP)
.SH ÜBERSICHT
.nf
\fB#include <unistd.h>\fP
.P
\fBint setreuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB);\fP
\fBint setregid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB);\fP
.fi
.P
.RS -4
Mit Glibc erforderliche Feature\-Test\-Makros (siehe
\fBfeature_test_macros\fP(7)):
.RE
.P
\fBsetreuid\fP(), \fBsetregid\fP():
.nf
.\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    _XOPEN_SOURCE >= 500
        || /* Seit Glibc 2.19: */ _DEFAULT_SOURCE
        || /* Glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH BESCHREIBUNG
\fBsetreuid\fP() setzt die realen und effektiven Benutzerkennungen des
aufrufenden Prozesses.
.P
Wird ein Wert von \-1 für entweder die reale oder effektive Benutzerkennung
angegeben, so wird erzwungen, dass diese Kennung unverändert bleibt.
.P
Unprivilegierte Prozesse dürfen die effektive Benutzerkennung nur auf die
reale, die effektive oder die gespeicherte set\-user\-ID setzen.
.P
Unprivilegierte Benutzer dürfen nur die reale Benutzerkennung auf die reale
Benutzerkennung oder die effektive Benutzerkennung setzen.
.P
Wenn die reale Benutzerkennung gesetzt ist (d.h. \fIruid\fP nicht \-1 ist) oder
die effektive Benutzerkennung auf einen Wert gesetzt ist, der nicht gleich
der vorherigen realen Benutzerkennung ist, so wird die gespeicherte
set\-user\-ID auf die neue effektive Benutzerkennung gesetzt.
.P
Vollkommen analog setzt \fBsetregid\fP() die reale und die effektive
Gruppenkennung des aufrufenden Prozesses und alles oben gesagte bleibt
gültig, wenn »Gruppe« anstatt »Benutzer« verwandt wird.
.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 (unter Linux: hat nicht die
notwendige Capability in seinem Namensraum: \fBCAP_SETUID\fP im Falle von
\fBsetreuid\fP() oder \fBCAP_SETGID\fP im Falle von \fBsetregid\fP()) und eine andere
Änderung als (i) Vertauschen der effektiven mit der realen Benutzerkennung
(Gruppenkennung) oder (ii) Setzen einer dieser auf den Wert des Anderen oder
(iii) Setzen der effektiven Benutzerkennung (Gruppenkennung) auf den Wert
der gespeicherten set\-user\-ID (gespeicherten set\-group\-ID) wurde angestrebt.
.SH VERSIONEN
POSIX.1 beschreibt nicht alle möglichen UID\-Änderungen, die Linux für einen
nicht privilegierten Prozess zulässt. Für \fBsetreuid\fP() kann die effektive
Benutzerkennung auf den Wert der realen Benutzerkennung oder die
gespeicherte set\-user\-ID gesetzt werden. Es ist nicht spezifiziert, ob
unprivilegierte Prozesse die reale Benutzerkennung auf die reale
Benutzerkennung, die effektive Benutzerkennung oder die gespeicherte
set\-user\-ID setzen dürfen. Für \fBsetregid\fP() kann die reale Gruppenkennung
auf den Wert der gespeicherten set\-group\-ID geändert werden und die
effektive Gruppenkennung kann auf den Wert der realen Gruppenkennung oder
der gespeicherten set\-group\-ID geändert werden. Die genauen Details, welche
Kennungsänderungen zulässig sind, unterscheiden sich
implementierungsabhängig.
.P
POSIX.1 macht keine Angaben zum Effekt dieser Aufrufe auf die gespeicherten
Werte von set\-user\-ID und set\-group\-ID.
.SH STANDARDS
POSIX.1\-2008.
.SH GESCHICHTE
POSIX.1\-2001, 4.3BSD (erschien zuerst in 4.2BSD).
.P
Das Setzen der effektiven Benutzerkennung (Gruppenkennung) auf die
gespeicherte set\-user\-ID (set\-group\-ID) ist seit Linux 1.1.37 (1.1.38)
möglich.
.P
.\"
Die ursprünglichen Linux\-Systemaufrufe \fBsetreuid\fP() und \fBsetregid\fP()
unterstützten nur 16\-Bit\-Benutzer\- und Gruppenkennungen. Entsprechend fügte
Linux 2.4 \fBsetreuid32\fP() und \fBsetregid32\fP() hinzu, die 32\-Bit\-Kennungen
unterstützen. Die Wrapper\-Funktionen \fBsetreuid\fP() und \fBsetregid\fP() von
Glibc gehen damit transparent über Kernelversionen hinweg um.
.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
\fBsetreuid\fP() und \fBsetregid\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 "SIEHE AUCH"
\fBgetgid\fP(2), \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetgid\fP(2), \fBsetresuid\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
Patrick Rother <krd@gulu.net>,
Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>,
Mario Blättermann <mario.blaettermann@gmail.com>
und
Helge Kreutzmann <debian@helgefjell.de>
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 .