Provided by: manpages-de-dev_1.11-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.

       Unprivilegierte Prozesse eines Benutzers können die 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.

       Privilegierte Prozesse (auf Linux diejenigen, die die CAP_SETUID-Capability haben)  können
       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, sie 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   Capability
              CAP_SETUID) und versuchte die IDs auf nicht erlaubte Werte zu ändern.

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
       At the kernel level, user IDs and group IDs are a  per-thread  attribute.  However,  POSIX
       requires  that  all  threads  in  a process share the same credentials. The NPTL threading
       implementation handles the POSIX requirements  by  providing  wrapper  functions  for  the
       various system calls that change process UIDs and GIDs. These wrapper functions (including
       those for setresuid()  and setresgid())  employ a signal-based technique  to  ensure  that
       when  one  thread changes credentials, all of the other threads in the process also change
       their credentials. For details, see 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.04  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 http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung dieser Handbuchseite wurde von Chris Leick <c.leick@vollbio.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>.