getgroups, setgroups − hole/setze Group Access List
#include <unistd.h>
int getgroups(int size, gid_t list[]);
#define __USE_BSD
#include <grp.h>
int setgroups(size_t size, const gid_t *list);
getgroups
Bis zu size zusätzliche Gruppen werden in list eingetragen. Wenn size Null ist, wird list nicht geändert, doch wird die gesamte Anzahl der zusätzlichen Gruppen des Prozesses zurückgeliefert.
setgroups
Setzt die zusätzlichen Gruppen für den Prozess. Nur der Superuser darf diese Funktion benutzen.
getgroups
Bei Erfolg wird die Anzahl der Gruppen in list abgelegt. Falls size Null ist, wird die Anzahl der zusätzlichen Group IDs des Prozesses geliefert. Bei aufgetretenem Fehler wird -1 geliefert und errno wird entsprechend gesetzt.
setgroups
Bei Erfolg wir Null geliefert, bei aufgetretenem Fehler wird -1 geliefert und errno wird entsprechend gesetzt.
EFAULT |
list ist eine ungültige Adresse. |
||
EPERM |
Bei setgroups war der aufrufende Benutzer nicht der Superuser. |
||
EINVAL |
Bei setgroups war gidsetsize größer als NGROUPS (32 unter Linux 0.99.11). |
getgroups ist konform zu POSIX.1 und wird in BSD 4.3 benutzt. Da setgroups Privilegien verlangt, ist es nicht durch POSIX.1 abgedeckt.
Das Flag __USE_BSD sollte nicht für setgroups angefordert werden.