Provided by: manpages-de-dev_1.4-1_all 

BEZEICHNUNG
setuid - Benutzeridentität setzen
ÜBERSICHT
#include <sys/types.h>
#include <unistd.h>
int setuid(uid_t uid);
BESCHREIBUNG
setuid() setzt die effektive Benutzer-ID des aufrufenden Prozesses. Wird diese Funktion durch Root
aufgerufen, so wird die reale und die gesicherte ID auch gesetzt.
Unter Linux ist setuid() wie die POSIX-Version mit dem Merkmal _POSIX_SAVED_IDS implementiert. Damit kann
ein (von root verschiedenes) setuid-Programm sämtliche Privilegien abgeben, unprivilegierte Arbeiten
verrichten und anschließend auf sichere Art und Weise die ursprüngliche, effektive Benutzer-ID wieder
erlangen.
Wenn der Benutzer root oder das Programm setuid root ist, ist besondere Sorgfalt notwendig. Die Funktion
setuid() überprüft die effektive Benutzer-ID (UID) des Aufrufenden. Falls es der Superuser ist, werden
alle diesen Prozess betreffenden Benutzer-IDs auf uid gesetzt. Danach ist es für das Programm unmöglich,
die root-Privilegien wiederzuerlangen.
Somit kann ein »setuid-root«-Programm setuid() nicht nutzen, um vorübergehend Root-Rechte abzugeben, die
Identität eines unprivilegierten Benutzers anzunehmen und dann wieder erneut Root-Privilegien zu
erlangen. Sie können dies mit seteuid(2) bewerkstelligen.
RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend
gesetzt.
FEHLER
EAGAIN Die uid passt nicht auf die aktuelle UID und uid bringt den Prozess über seine
RLIMIT_NPROC-Ressourcenbegrenzung.
EPERM Der Benutzer ist nicht privilegiert (Linux: verfügt nicht über die CAP_SETUID-Capability) und uid
entspricht nicht der realen Benutzer-ID oder der gespeicherten »set-user«-ID des aufrufenden
Prozesses.
KONFORM ZU
SVr4, POSIX.1-2001. Nicht wirklich zum 4.4BSD-Aufruf kompatibel, der sowohl die reale, gespeicherte als
auch die effektive Benutzer-ID setzt.
ANMERKUNGEN
Linux verfügt über das Konzept der Dateisystem-Benutzer-ID, die normalerweise mit der effektiven
Benutzer-ID identisch ist. Der Aufruf von setuid() setzt auch die Dateisystem-Benutzer-ID des aufrufenden
Prozesses (siehe setfsuid(2)).
Falls sich uid von der alten effektiven Benutzer-ID unterscheidet, wird dem Prozess verboten,
Speicherauszüge (»core dumps«) zu erstellen.
Der ursprüngliche Linux-Systemaufruf setuid() unterstützte nur 16-Bit-Benutzer-IDs. Danach führte Linux
2.4 mit setuid32() die Unterstützung für 32-Bit-IDs hinzu. Die Glibc-Wrapperfunktion setuid() behandelt
die Unterschiede zwischen den Kernel-Versionen transparent.
SIEHE AUCH
getuid(2), seteuid(2), setfsuid(2), setreuid(2), capabilities(7), credentials(7)
KOLOPHON
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and
information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Stefan Janke <gonzo@burg.studfb.unibw-
muenchen.de>, Helge Kreutzmann <debian@helgefjell.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
und 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>.
Linux 22. November 2010 SETUID(2)