getgroups(2) System Calls Manual getgroups(2) NAAM getgroups, setgroups - krijg/zet een lijst van aanvullende groep ID's BIBLIOTHEEK Standard C bibliotheek (libc, -lc) SAMENVATTING #include int getgroups(int grootte, gid_t lijst[]); #include int setgroups(size_t grootte, const gid_t *_NULL_baarlijst); Feature Test Macro's eisen in glibc (zie feature_test_macros(7)): setgroups(2): Vanaf glibc 2.19: _DEFAULT_SOURCE Glibc 2.19 en eerder: _BSD_SOURCE BESCHRIJVING getgroups() geeft de aanvullende groep ID's van het aanroepende proces terug in lijst. Het argument grootte dient gezet te worden op het maximum aantal elementen dat kan worden opgeslagen in de buffer aangewezen door lijst. Als het aanroepende proces lid is van meer dan grootte aanvullende groepen, dat treedt een fout op. Het is niet gespecificeerd of het effectieve groep ID van het aanroepende proces is bevat in de geretourneerde lijst. (Dus, aan applicatie moet ook getegid(2) aanroepen en de resulterende waarde verwijderen of toevoegen. Als grootte nul is dan wordt lijst niet veranderd, maar het gehele aantal van aanvullende groepen voor hetproces wordt teruggegeven. setgroups() zet de aanvullende groepen voor een proces. Alleen de super-gebruiker mag deze functie gebruiken. setgroups(0, NULL); EIND WAARDE Bij success geeft getgroups() het aantal aanvullende groep ID's terug. Bij falen wordt -1 teruggegeven, en errno wordt overeenkomstig gezet. Bij success geeft setgroups() nul terug. Bij falen wordt -1 teruggegeven, en wordt errno overeenkomstig gezet. FOUTEN EFAULT lijst heeft een ongeldig adres. getgroups() kan ook nog falen met de volgende fout: EINVAL grootte is kleiner dan het aantal aanvullende groep ID's, maar is niet nul. getgroups() kan ook nog falen met de volgende fout: EINVAL grootte is groter dan NGROUPS_MAX (32 voor Linux 2.6.4; 65536 sinds Linux 2.6.4). ENOMEM Geen geheugen meer. EPERM Het aanroepende proces heeft onvoldoende rechten (De aanroeper heeft niet de CAP_SETGID capaciteit in de gebruiker naamruimte waarin het zich bevind. EPERM (sinds Linux 3.19) Het gebruik van setgroups() wordt geweigerd in deze gebruiker naamruimte. Zie de beschrijving van /proc/pid/setgroups in user_namespaces(7). VERSIES C library/kernel verschillen Op kernel niveau, zijn gebruiker ID's en groep ID's een per-thread attribute. Hoewel POSIX vereist dat alle threads in een proces dezelfde identificatie hebben. De NPTL threading implementaties voldoen aan de POSIX eis door omwikkel functies voor de verschillende systeem aanroepen die de UID's en GID's veranderen te implementeren. Deze omwikkel functies (inclusief die voor setgroups()) gebruiken een op een signaal gebaseerde techniek om te verzekeren dat wanneer in een thread de identificatie verandert, alle andere threads in het proces ook hun identificatie veranderen. Voor details zie nptl(7). VOLDOET AAN getgroups() POSIX.1-2008. setgroups() Geen. GESCHIEDENIS getgroups() SVr4, 4.3BSD, POSIX.1-2001. setgroups() SVr4, 4.3BSD. Vanaf vereist setgroups() privileges. Dit is niet beschreven in POSIX.1. De originele Linux getgroups() systeem aanroep ondersteunde alleen 16-bit groep ID's. Vervolgens voegde Linux 2.4 getgroups32() toe, die 32-bit groep ID's ondersteunde. De glibc getgroups() omwikkel functie handelt de verschillen tussen kernel variaties transparant af. OPMERKINGEN Een proces kan tot NGROUPS_MAX aanvullende groep ID's hebben boven op het effectieve groep ID. De constante NGROUPS_MAX is gedefinieerd in . De verzameling van aanvullende groep ID's wordt geerfd van het ouder proces en blijft bewaard langs een execve(2). Het maximum aantal aanvullende groep ID's kan worden gevonden tijdens het uitvoeren door gebruik te maken van sysconf(3): long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX); De maximale uitvoer waarde van getgroups() kan niet groter zijn dan een meer dan deze waarde. Vanaf Linux 2.6.4, is het maximum aantal aanvullende groep ID's ook zichtbaar via het Linux specifieke alleen-lezen bestand /proc/sys/kernel/ngroups_max. ZIE OOK getgid(2), setgid(2), getgrouplist(3), group_member(3), initgroups(3), capabilities(7), credentials(7) VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blattermann en Luc Castermans Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar . Linux man-pages 6.06 31 oktober 2023 getgroups(2)