BEZEICHNUNG¶
getgroups, setgroups - abfragen/setzen von zusätzlichen Gruppen-IDs
ÜBERSICHT¶
#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 zusätzlichen Gruppen-IDs des aufrufenden
  Prozesses in 
liste zurück. Das Argument 
groesse sollte auf
  die maximale Anzahl der Elemente gesetzt werden, die in dem Puffer gespeichert
  werden können, auf den 
liste zeigt. Falls der aufrufende Prozess
  Mitglied von mehr als 
groesse Gruppen ist, dann führt dies zu
  einem Fehler. Es ist nicht beschrieben, ob die effektive Gruppen-ID des
  aufrufenden Prozesses in der zurückgegebenen Liste enthalten ist. (Daher
  sollte eine Anwendung auch 
getegid(2) aufrufen und den resultierenden
  Wert hinzufügen oder entfernen.)
 
Wenn 
groesse Null ist, wird 
liste nicht verändert, es wird
  aber die Gesamtzahl der zusätzlichen Gruppen-IDs für den Prozess
  zurückgegeben. Dies erlaubt es dem Aufrufenden, die Größe einer
  dynamisch reservierten 
liste festzulegen, die in einem weiteren Aufruf
  von 
getgroups() benutzt wird.
setgroups() setzt die zusätzlichen Gruppen-IDs für den
  aufrufenden Prozess. Es werden geeignete Privilegien benötigt (Linux; die
  Fähigkeit 
CAP_SETGID). Das Argument 
groesse gibt die Anzahl
  der zusätzlichen Gruppen-IDs im Puffer an, auf den 
liste zeigt.
RÜCKGABEWERT¶
Bei Erfolg gibt 
getgroups() die Anzahl der zusätzlichen Gruppen-IDs
  zurück. Bei aufgetretenem Fehler wird -1 geliefert und 
errno wird
  entsprechend gesetzt.
 
Bei Erfolg gibt 
setgroups() 0 zurück. Bei aufgetretenem Fehler wird
  -1 geliefert und 
errno wird entsprechend gesetzt.
FEHLER¶
  - EFAULT
 
  - liste hat eine ungültige Adresse.
 
getgroups() kann außerdem mit dem folgenden Fehler fehlschlagen:
  - EINVAL
 
  - groesse ist kleiner als die Anzahl der
      zusätzlichen Gruppen-IDs, aber nicht Null.
 
setgroups() kann überdies mit den folgenden Fehlern fehlschlagen:
  - EINVAL
 
  - groesse ist größer 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.
 
SVr4, 4.3BSD. Die Funktion 
getgroups() ist in POSIX.1-2001 enthalten.
  Seit 
setgroups() Privilegien benötigt, ist es nicht durch
  POSIX.1-2001 abgedeckt.
ANMERKUNGEN¶
Ein Prozess kann bis zu 
NGROUPS_MAX zusätzliche Gruppen-IDs
  ergänzend zur effektiven Gruppen-ID haben. Die Zusammenstellung
  zusätzlicher Gruppen-IDs wird vom Elternprozess geerbt und über ein
  
execve(2) aufbewahrt.
 
Die maximale Anzahl von zusätzlichen Gruppen-IDs kann durch Benutzung von
  
sysconf(3) bestimmt werden:
    long ngroups_max;
    ngroups_max = sysconf(_SC_NGROUPS_MAX);
Der maximale Rückgabewert von 
getgroups() kann nicht
  größer als dieser Wert plus eins sein.
 
Der Original-Linux-Systemaufruf 
getgroups() unterstützte nur
  16-Bit-Gruppen-IDs. Nachfolgend fügte Linux 2.4 
getgroups32()
  hinzu, das 32-Bit-IDs unterstützte. Die Glibc-Wrapper-Funktion
  
getgroups() stellt die Änderungen transparent über
  Kernel-Versionen hinweg bereit.
SIEHE AUCH¶
getgid(2), 
setgid(2), 
getgrouplist(3),
  
initgroups(3), 
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 René Tschirley
  <gremlin@cs.tu-berlin.de>, Martin Schulze <joey@infodrom.org> und
  Chris Leick <c.leick@vollbio.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>.