getgroups(2) getgroups(2)
NAME
getgroups, setgroups - Gruppennummern lesen/schreiben
SYNTAX
#include <unistd.h>
int getgroups(int gidsetsize, gidt grouplist[ ])
int setgroups(int ngroups, const gidt grouplist[ ])
BESCHREIBUNG
getgroups() liest die aktuelle Gruppenzugriffsliste des aufrufenden
Prozesses und speichert das Ergebnis in dem Feld der Gruppennummern,
welches durch grouplist angegeben wird. Dieses Feld hat gidsetsize-
Einträge und muß groß genug sein, um die komplette Liste aufzunehmen.
Diese Liste kann nicht größer als NGROUPSMAX sein. Wenn gidsetsize
gleich 0 ist, liefert getgroups() die Anzahl der Gruppen, zu denen der
aufrufende Prozeß gehört, ohne daß das Feld grouplist verändert wird.
setgroups() setzt die Gruppenzugriffsliste des aufrufenden Prozesses
aus dem Feld der Gruppennummern. Die Anzahl der Einträge wird durch
ngroups angegeben und darf nicht größer als NGROUPSMAX sein. Diese
Funktion kann nur vom Systemverwalter aufgerufen werden.
getgroups() schlägt fehl, wenn:
EINVAL Der Wert von gidsetsize ist ungleich Null und kleiner als
die Anzahl der Gruppennummern für den aufrufenden Prozeß.
setgroups() schlägt fehl, wenn:
EINVAL Der Wert ngroups ist größer als NGROUPSMAX.
EPERM Die effektive Benutzernummer ist nicht die des Systemverwal-
ters.
Beide Aufrufe schlagen fehl, wenn:
EFAULT Ein referenzierter Teil des Feldes grouplist befindet sich
außerhalb des allokierten Adreßbereichs des Prozesses.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
getgroups(2) getgroups(2)
ERGEBNIS
Nach erfolgreicher Ausführung liefert getgroups() die Anzahl der Grup-
pennummern zurück, die für den aufrufenden Prozeß gesetzt sind, und
setgroups() liefert den Wert 0. Ansonsten wird der Wert -1 zurückgege-
ben und errno gesetzt, um den Fehler anzuzeigen.
SIEHE AUCH
groups(1), chown(2), getuid(2), setuid(2), initgroups(3C).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98