Provided by:
manpages-de-dev_0.10-1_all 
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>.