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.
 
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¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
  
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
  gemeldet werden können, finden sich unter
  
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> und Martin Eberhard Schauer
  <Martin.E.Schauer@gmx.de> 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>.