Provided by: manpages-de-dev_1.4-1_all
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 Speicher aufgebraucht. EPERM Der aufrufende Prozess hat unzureichende Rechte.
KONFORM ZU
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
A process can have up to NGROUPS_MAX supplementary group IDs in addition to the effective group ID. The set of supplementary group IDs is inherited from the parent process, and preserved across an execve(2). The maximum number of supplementary group IDs can be found using sysconf(3): long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX); The maximum return value of getgroups() cannot be larger than one more than this value. 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
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at 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>.