Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       getgroups,  setgroups  -  pobiera/ustawia  listę  identyfikatorów  grup
       dodatkowych

SKŁADNIA

       #include <sys/types.h>
       #include <unistd.h>

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

       #include <grp.h>

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

OPIS

       getgroups
              Zwraca w list maksymalnie size dodatkowych  ID  grup.  Nie  jest
              określone,  czy  efektywny  ID grupy procesu wywołującego będzie
              znajdować się na zwróconej liście. Tak więc,  aplikacja  powinna
              wywołać   również   getegid(2)  i  dodać  lub  usunąć  otrzymaną
              wartość.)   Jeśli  size  jest  równe  zero,  to  list  nie  jest
              modyfikowane,  lecz zwracana jest ogólna liczba dodatkowych grup
              procesu.

       setgroups
              Ustawia dodatkowe grupy procesu.  Jedynie  superużytkownik  może
              tego dokonać.

WARTOŚĆ ZWRACANA

       getgroups
              po  pomyślnym  zakończeniu  zwraca  liczbę grup dodatkowych.  Po
              błędzie zwracane jest -1 i odpowiednio ustawiane errno.

       setgroups
              po pomyślnym zakończeniu zwraca zero. Po błędzie  zwracane  jest
              -1 i odpowiednio ustawiane errno.

BŁĘDY

       EFAULT list ma nieprawidłowy adres.

       EPERM  Dla setgroups, użytkownik nie jest superużytkownikiem.

       EINVAL Dla  setgroups,  size  jest  większe niż NGROUPS (32 dla Linuksa
              2.0.32).  Dla getgroups, size  jest  mniejsze  niż  liczba  grup
              dodatkowych, ale niezerowe.

UWAGI

       Proces   może   posiadać   maksymalnie  co  najmniej  NGROUPS_MAX  grup
       dodatkowych oprócz efektywnego ID grupy. Zbiór  grup  dodatkowych  jest
       dziedziczony  po  procesie  rodzicielskim  i  może  zostać zmieniony za
       pomocą  setgroups.   Maksymalna  liczba  grup  dodatkowych   może   być
       odczytana za pomocą sysconf(3):
           long ngroups_max;
           ngroups_max = sysconf(_SC_NGROUPS_MAX);
       Maksymalna  zwracana  przez  getgroups wartość nie może być większa niż
       powiększona o jeden wartość otrzymana w powyższy sposób.

       Prototyp dla setgroups jest dostępny  jedynie,  gdy  zdefiniowane  jest
       _BSD_SOURCE    (bezpośrednio,   albo   pośrednio   -   nie   definiując
       _POSIX_SOURCE czy kompilując z włączoną flagą -ansi).

ZGODNE Z

       SVr4, SVID (tylko wydanie 4; wywołań tych nie  było  w  SVr3),  X/OPEN,
       4.3BSD.   Funkcja  getgroups  istnieje  w  POSIX.1.  Ponieważ setgroups
       wymaga przywilejów, nie jest opisana w POSIX.1.

ZOBACZ TAKŻE

       initgroups(3), getgid(2), setgid(2)