Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       setresuid, setresgid - reale, effektive und gespeicherte Benutzer- oder Gruppen-ID setzen

ÜBERSICHT

       #define _GNU_SOURCE /* Siehe feature_test_macros(7) */
       #include <unistd.h>

       int setresuid(uid_t ruid, uid_t euid, uid_t suid);
       int setresgid(gid_t rgid, gid_t egid, gid_t sgid);

BESCHREIBUNG

       setresuid()   setzt   die   wirkliche  Benutzer-ID,  die  effektive  Benutzer-ID  und  die
       gespeicherte Benutzer-ID des aufrufenden Prozesses.

       Ein unprivilegierter  Prozess  kann  seine  wirkliche  UID,  die  effektive  UID  und  die
       gespeicherte SUID jeweils zu einem der Folgenden ändern: der aktuellen wirklichen UID, der
       aktuellen effektiven UID oder der aktuellen gespeicherten SUID.

       Ein privilegierter Prozess (unter Linux einer, der die CAP_SETUID-Capability hat) kann die
       wirkliche UID, die effektive UID und die gespeicherte SUID auf beliebige Werte setzen.

       Wenn eines der Argumente -1 ist, wird der dazugehörige Wert nicht geändert.

       Ohne  Rücksicht  auf  die  Änderungen  an  der  wirklichen UID, der effektiven UID und der
       gespeicherten  SUID  wird  die  Dateisystem-UID  stets  auf  den  gleichen  Wert  wie  die
       (möglicherweise neue) effektive UID gesetzt.

       setresgid()  setzt  vollständig  analog  dazu die wirkliche 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.

RÜCKGABEWERT

       Bei Erfolg wird Null zurückgegeben. Bei einem  Fehler  wird  -1  zurückgegeben  und  errno
       entsprechend gesetzt.

       Hinweis: In manchen Fällen kann setresuid() selbst dann fehlschlagen, wenn die Benutzer-ID
       des Aufrufenden 0 ist; es ist ein gravierender Sicherheitsfehler, wenn der Test auf  einen
       Fehlschlag von setresuid() nicht ausgeführt wird.

FEHLER

       EAGAIN Der  Aufruf  würde  die  reale  Benutzer-ID des Aufrufenden ändern (das heißt, ruid
              würde nicht mit der realen Benutzer-ID des Aufrufenden übereinstimmen), aber es gab
              einen temporären Fehlschlag beim Zuweisen der nötigen Datenstrukturen des Kernels.

       EAGAIN ruid  entspricht  nicht  der  realen Benutzer-ID des Aufrufenden, und dieser Aufruf
              würde die  Prozesse  mit  der  realen  Benutzer-ID  ruid  die  Ressourcenbegrenzung
              RLIMIT_NPROC 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 EAGAIN in execve(2).

       EINVAL Eine   oder   mehrere   der   Zielbenutzer-   oder   Gruppen-IDs   ist   in  diesem
              Benutzer-Namensraum unzulässig.

       EPERM  Der  aufrufende  Prozess  ist  nicht  privilegiert  (hatte  nicht  die   notwendige
              Capability  in seinem Benutzernamensraum) und versuchte, die IDs auf nicht erlaubte
              Werte zu ändern. Für setresuid() ist  die  notwendige  Capability  CAP_SETUID,  für
              setresgid() ist sie CAP_SETGID.

VERSIONEN

       Diese Systemaufrufe sind unter Linux seit Linux 2.1.44 verfügbar.

KONFORM ZU

       Diese  Systemaufrufe  sind nicht standardisiert. Sie kommen auch in HP-UX und einigen BSDs
       vor.

ANMERKUNGEN

       Unter HP-UX und FreeBSD befinden sich die Prototypen in <unistd.h>. Unter Linux  wird  der
       Prototyp durch Glibc seit Version 2.3.2 bereitgestellt.

       Der    Original-Linux-Systemaufrufe   setresuid()   und   setresgid()   unterstützen   nur
       16-Bit-Benutzer-  und  -Gruppen-IDs.  Nachfolgend  fügte  Linux  2.4   setresuid32()   und
       setresgid32()  hinzu, die 32-Bit-IDs unterstützen. Die Glibc-Wrapper-Funktionen setfsuid()
       setresgid() und stellen die Änderungen transparent über Kernel-Versionen hinweg bereit.

   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  setresuid()  und
       setresgid())  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 nptl(7).

SIEHE AUCH

       getresuid(2),     getuid(2),    setfsgid(2),    setfsuid(2),    setreuid(2),    setuid(2),
       capabilities(7), credentials(7), user_namespaces(7)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.15  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

Ü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.

       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>.