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

NUME

       getgroups, setgroups - obține/stabilește o listă de ID-uri de grupuri suplimentare

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       int getgroups(int size, gid_t list[]);

       #include <grp.h>

       int setgroups(size_t size, const gid_t *_Nullable list);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       setgroups():
           Începând cu glibc 2.19:
               _DEFAULT_SOURCE
           glibc 2.19 și versiunile anterioare:
               _BSD_SOURCE

DESCRIERE

       getgroups()  returnează  în  list  ID-urile  de grup suplimentare ale procesului apelant. Argumentul size
       trebuie să fie definit la numărul maxim de elemente care pot fi stocate în  memoria  tampon  indicată  de
       list.  În  cazul în care procesul de apelare este membru a mai mult de size grupuri suplimentare, apare o
       eroare.

       Nu este specificat dacă ID-ul efectiv al grupului procesului apelant  este  inclus  în  lista  returnată;
       (astfel, o aplicație trebuie să apeleze și getegid(2) și să adauge sau să elimine valoarea rezultată).

       Dacă  size  este  zero,  list  nu  este  modificat,  dar  se  returnează  numărul total de ID-uri de grup
       suplimentare pentru proces. Acest lucru permite apelantului să  determine  dimensiunea  unei  liste  list
       alocate dinamic, care va fi utilizată într-un apel ulterior la getgroups().

       setgroups()  stabilește  ID-urile  de grup suplimentare pentru procesul apelant. Sunt necesare privilegii
       corespunzătoare (a se vedea descrierea erorii EPERM, mai  jos).  Argumentul  size  specifică  numărul  de
       ID-uri  de  grup  suplimentare  din  memoria  tampon  indicată  de list. Un proces poate renunța la toate
       grupurile sale suplimentare odată cu apelul:

           setgroups(0, NULL);

VALOAREA RETURNATĂ

       În caz de succes, getgroups() returnează numărul de ID-uri de grup suplimentare. În  caz  de  eroare,  se
       returnează -1, iar errno este configurată pentru a indica eroarea.

       În  caz  de  succes,  setgroups()  returnează  0.  În  caz  de  eroare,  se returnează -1, iar errno este
       configurată pentru a indica eroarea.

ERORI-IEȘIRE

       EFAULT list are o adresă nevalidă.

       getgroups() poate eșua în plus cu următoarea eroare:

       EINVAL size este mai mic decât numărul de ID-uri de grup suplimentare, dar nu este zero.

       setgroups() poate eșua în plus cu următoarele erori:

       EINVAL size este mai mare decât NGROUPS_MAX (32 înainte de Linux 2.6.4; 65536 începând cu Linux 2.6.4).

       ENOMEM Memorie insuficientă.

       EPERM  Procesul apelant are privilegii insuficiente (apelantul nu are capacitatea CAP_SETGID  în  spațiul
              de nume al utilizatorului în care se află).

       EPERM (începând cu Linux 3.19)
              Utilizarea setgroups() este interzisă în acest spațiu de nume de utilizator. A se vedea descrierea
              /proc/pid/setgroups în user_namespaces(7).

VERSIUNI

   Diferențe între biblioteca C și nucleu
       La  nivelul  nucleului,  ID-urile de utilizator și ID-urile de grup sunt un atribut pentru fiecare fir de
       execuție. Cu toate acestea, POSIX impune ca toate firele dintr-un proces să  aibă  aceleași  credențiale.
       Implementarea „NPTL threading” se ocupă de cerințele POSIX prin furnizarea de funcții de învăluire pentru
       diferitele  apeluri  de  sistem  care  modifică  UID  și  GID ale proceselor. Aceste funcții învăluitoare
       (inclusiv cea pentru setgroups()) utilizează o tehnică bazată pe semnale pentru a se asigura  că,  atunci
       când un fir de execuție își schimbă acreditările, toate celelalte fire de execuție din proces își schimbă
       și ele acreditările. Pentru detalii, a se vedea nptl(7).

STANDARDE

       getgroups()
              POSIX.1-2008.

       setgroups()
              Niciunul.

ISTORIC

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

       setgroups()
              SVr4, 4.3BSD. Deoarece setgroups() necesită privilegii, nu este acoperit de POSIX.1.

       Apelul  de sistem original Linux getgroups() accepta numai ID-uri de grup pe 16 biți. Ulterior, Linux 2.4
       a adăugat getgroups32(), care acceptă ID-uri pe  32  de  biți.  Funcția  învăluitoare  glibc  getgroups()
       tratează în mod transparent variația dintre versiunile de kernel.

NOTE

       Un  proces  poate  avea  până  la  NGROUPS_MAX  ID-uri de grup suplimentare în plus față de ID-ul de grup
       efectiv. Constanta NGROUPS_MAX este definită în <limits.h>.  Setul de ID-uri de  grup  suplimentare  este
       moștenit de la procesul părinte și este păstrat prin intermediul unui execve(2).

       Numărul maxim de ID-uri de grup suplimentare poate fi aflat în timpul execuției folosind sysconf(3):

           long ngroups_max;
           ngroups_max = sysconf(_SC_NGROUPS_MAX);

       Valoarea maximă de returnare a lui getgroups() nu poate fi mai mare decât cu unu față de această valoare.
       Începând  cu  Linux  2.6.4,  numărul  maxim  de ID-uri de grup suplimentare este, de asemenea, expus prin
       intermediul fișierului de numai citire specific Linux, /proc/sys/kernel/ngroups_max.

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                       getgroups(2)