Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       getgroups, setgroups - abfragen/setzen von zusätzlichen Gruppenkennungen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       int getgroups(int Größe, gid_t Liste[]);

       #include <grp.h>

       int setgroups(size_t Größe, const gid_t *_Nullable Liste);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       setgroups():
           Seit Glibc 2.19:
               _DEFAULT_SOURCE
           Glibc 2.19 und älter:
               _BSD_SOURCE

BESCHREIBUNG

       getgroups()  gibt  die  zusätzlichen  Gruppenkennungen  des  aufrufenden  Prozesses  in Liste zurück. Das
       Argument Größe 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 Größe zusätzlichen
       Gruppen ist, führt dies zu einem Fehler.

       Es   ist  nicht  beschrieben,  ob  die  effektive  Gruppenkennungen  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  Größe  Null  ist,  wird  liste  nicht  verändert,  es  wird  aber  die  Gesamtzahl der zusätzlichen
       Gruppenkennungen 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  Gruppenkennungen  für den aufrufenden Prozess. Es werden geeignete
       Privilegien benötigt (siehe die Beschreibung des Fehlers EPERM unten). Das Argument Größe gibt die Anzahl
       der zusätzlichen Gruppenkennungen im  Puffer  an,  auf  den  Liste  zeigt.  Ein  Prozess  kann  sämtliche
       zusätzliche Gruppen mit folgendem Aufruf abgeben:

           setgroups(0, NULL);

RÜCKGABEWERT

       Bei Erfolg gibt getgroups() die Anzahl der zusätzlichen Gruppenkennungen zurück. Bei aufgetretenem Fehler
       wird -1 geliefert und errno wird gesetzt, um den Fehler anzuzeigen.

       Bei  Erfolg gibt setgroups() 0 zurück. Bei aufgetretenem Fehler wird -1 geliefert und errno wird gesetzt,
       um den Fehler anzuzeigen.

FEHLER

       EFAULT liste hat eine ungültige Adresse.

       getgroups() kann außerdem mit dem folgenden Fehler fehlschlagen:

       EINVAL Größe ist kleiner als die Anzahl der zusätzlichen Gruppenkennungen, aber nicht Null.

       setgroups() kann überdies mit den folgenden Fehlern fehlschlagen:

       EINVAL Größe 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 (dem Aufrufenden fehlt  die  CAP_SETGID-Capability
              in dem Benutzernamensraum, in dem er sich befindet).

       EPERM (seit Linux 3.19)
              Die   Verwendung  von  setgroups()  wird  in  diesem  Benutzer-Namensraum  verweigert.  Siehe  die
              Beschreibung von /proc/pid/setgroups in user_namespaces(7).

VERSIONEN

   Unterschiede C-Bibliothek/Kernel
       Auf der Kernelebene sind Benutzer- und Gruppenkennungen Attribute pro Thread. POSIX verlangt  aber,  dass
       sich    alle    Threads    in   einem   Prozess   die   gleichen   Berechtigungsnachweise   teilen.   Die
       NPTL-Threading-Implementierung   behandelt   die    POSIX-Anforderungen    durch    Bereitstellung    von
       Wrapper-Funktionen  für die verschiedenen Systemaufrufe, die die UIDs und GIDs der Prozesse ändern. Diese
       Wrapper-Funktionen  (darunter  die  für  setgroups())   verwenden   eine   signalbasierte   Technik,   um
       sicherzustellen, dass bei der Änderung der Berechtigungsnachweise eines Threads auch alle anderen Threads
       des Prozesses ihre Berechtigungsnachweise ändern. Für Details siehe nptl(7).

STANDARDS

       getgroups()
              POSIX.1-2008.

       setgroups()
              Keine.

GESCHICHTE

       getgroups()
              SVr4, 4.3BSD, POSIX.1-2001.

       setgroups()
              SVr4, 4.3BSD. Da setgroups() Privilegien benötigt, ist es nicht durch POSIX.1 abgedeckt.

       Der  Original-Linux-Systemaufruf  getgroups() unterstützte nur 16-Bit-Gruppenkennungen. Nachfolgend fügte
       Linux 2.4 getgroups32() hinzu, das 32-Bit-Kennungen unterstützte. Die Glibc-Wrapper-Funktion  getgroups()
       stellt die Änderungen transparent über Kernel-Versionen hinweg bereit.

ANMERKUNGEN

       Ein  Prozess kann bis zu NGROUPS_MAX zusätzliche Gruppenkennungen ergänzend zur effektiven Gruppenkennung
       haben.  Die  Konstante  NGROUPS_MAX  ist  in  <limits.h>  definiert.  Die  Zusammenstellung  zusätzlicher
       Gruppenkennungen wird vom Elternprozess geerbt und über ein execve(2) aufbewahrt.

       Die  maximale  Anzahl  von zusätzlichen Gruppenkennungen kann zur Laufzeit durch Benutzung von sysconf(3)
       bestimmt werden:

           long ngroups_max;
           ngroups_max = sysconf(_SC_NGROUPS_MAX);

       Der maximale Rückgabewert von getgroups() kann nicht um mehr als eins größer als dieser Wert  sein.  Seit
       Linux  2.6.4  wird  die  maximale  Anzahl  zusätzlicher  Gruppenkennungen  außerdem  über die nur lesbare
       Linux-spezifische Datei /proc/sys/kernel/ngroups_max offengelegt.

SIEHE AUCH

       getgid(2), setgid(2), getgrouplist(3), group_member(3), initgroups(3), capabilities(7), credentials(7)

ÜBERSETZUNG

       Die deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Martin  Schulze  <joey@infodrom.org>,  René
       Tschirley    <gremlin@cs.tu-berlin.de>,    Chris    Leick    <c.leick@vollbio.de>,    Mario   Blättermann
       <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> 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 die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                      getgroups(2)