Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       getgroups, setgroups - abfragen/setzen von zusatzlichen Gruppen-IDs

"UBERSICHT

       #include <sys/types.h>
       #include <unistd.h>

       int getgroups(int groesse, gid_t liste[]);

       #include <grp.h>

       int setgroups(size_t groesse, const gid_t *liste);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       setgroups(): _BSD_SOURCE

BESCHREIBUNG

       getgroups() gibt die zusatzlichen Gruppen-IDs des aufrufenden Prozesses
       in liste zuruck. Das Argument groesse sollte auf  die  maximale  Anzahl
       der  Elemente  gesetzt  werden,  die  in  dem Puffer gespeichert werden
       konnen, auf den liste zeigt. Falls der aufrufende Prozess Mitglied  von
       mehr  als  groesse Gruppen ist, dann fuhrt dies zu einem Fehler. Es ist
       nicht  beschrieben,  ob  die  effektive  Gruppen-ID   des   aufrufenden
       Prozesses  in  der  zuruckgegebenen  Liste enthalten ist. (Daher sollte
       eine Anwendung auch getegid(2) aufrufen  und  den  resultierenden  Wert
       hinzufugen oder entfernen.)

       Wenn  groesse  Null  ist,  wird liste nicht verandert, es wird aber die
       Gesamtzahl der zusatzlichen Gruppen-IDs fur den Prozess  zuruckgegeben.
       Dies erlaubt es dem Aufrufenden, die GroBe einer dynamisch reservierten
       liste festzulegen, die in einem weiteren Aufruf von getgroups() benutzt
       wird.

       setgroups()  setzt  die  zusatzlichen  Gruppen-IDs  fur den aufrufenden
       Prozess. Es werden geeignete Privilegien benotigt (Linux; die Fahigkeit
       CAP_SETGID).  Das  Argument  groesse  gibt  die Anzahl der zusatzlichen
       Gruppen-IDs im Puffer an, auf den liste zeigt.

R"UCKGABEWERT

       Bei Erfolg gibt getgroups() die  Anzahl  der  zusatzlichen  Gruppen-IDs
       zuruck.  Bei  aufgetretenem  Fehler  wird  -1  geliefert und errno wird
       entsprechend gesetzt.

       Bei Erfolg gibt setgroups() 0 zuruck. Bei aufgetretenem Fehler wird  -1
       geliefert und errno wird entsprechend gesetzt.

FEHLER

       EFAULT liste hat eine ungultige Adresse.

       getgroups() kann auBerdem mit dem folgenden Fehler fehlschlagen:

       EINVAL groesse ist kleiner als die Anzahl der zusatzlichen Gruppen-IDs,
              aber nicht Null.

       setgroups() kann uberdies mit den folgenden Fehlern fehlschlagen:

       EINVAL groesse ist groBer als NGROUPS_MAX (32 vor  Linux  2.6.4;  65536
              seit Linux 2.6.4).

       ENOMEM Platz im Hauptspeicher reicht nicht aus

       EPERM  Der aufrufende Prozess hat unzureichende Privilegien.

KONFORM ZU

       SVr4,  4.3BSD.  Die Funktion getgroups() ist in POSIX.1-2001 enthalten.
       Seit setgroups() Privilegien benotigt, ist es nicht durch  POSIX.1-2001
       abgedeckt.

ANMERKUNGEN

       Ein  Prozess  kann bis zu NGROUPS_MAX zusatzliche Gruppen-IDs erganzend
       zur effektiven  Gruppen-ID  haben.  Die  Zusammenstellung  zusatzlicher
       Gruppen-IDs  wird  vom  Elternprozess  geerbt  und  uber  ein execve(2)
       aufbewahrt.

       Die maximale Anzahl von zusatzlichen Gruppen-IDs kann  durch  Benutzung
       von sysconf(3) bestimmt werden:

           long ngroups_max;
           ngroups_max = sysconf(_SC_NGROUPS_MAX);

       Der  maximale Ruckgabewert von getgroups() kann nicht groBer als dieser
       Wert plus eins sein.

       Der   Original-Linux-Systemaufruf    getgroups()    unterstutzte    nur
       16-Bit-Gruppen-IDs.  Nachfolgend  fugte  Linux 2.4 getgroups32() hinzu,
       das 32-Bit-IDs  unterstutzte.  Die  Glibc-Wrapper-Funktion  getgroups()
       stellt die Anderungen transparent uber Kernel-Versionen hinweg bereit.

SIEHE AUCH

       getgid(2),  setgid(2), getgrouplist(3), initgroups(3), capabilities(7),
       credentials(7)

KOLOPHON

       Diese  Seite  ist  Teil  der   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

       Die  deutsche Ubersetzung dieser Handbuchseite wurde von Rene Tschirley
       <gremlin@cs.tu-berlin.de>, Martin Schulze <joey@infodrom.org> und Chris
       Leick <c.leick@vollbio.de> erstellt.

       Diese  Ubersetzung  ist  Freie Dokumentation; lesen Sie die GNU General
       Public  License  Version  3  oder  neuer   bezuglich   der   Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

       Wenn  Sie  Fehler  in  der  Ubersetzung  dieser  Handbuchseite  finden,
       schicken     Sie     bitte     eine     E-Mail     an     <debian-l10n-
       german@lists.debian.org>.