Provided by: manpages-es_1.55-9_all bug

NOMBRE

       getgroups,  setgroups  -  obtiene/asigna  la  lista  de  IDs  de  grupo
       suplementarios

SINOPSIS

       #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);

DESCRIPCIÓN

       getgroups
              Se  devuelven  como  mucho   size   identificadores   de   grupo
              suplementarios   en   list.    Queda   sin   especificar  si  el
              identificador de grupo efectivo del proceso invocador se incluye
              en  la  lista  devuelta.  (Así,  una  aplicación  debería llamar
              también a getegid(2) y añadir o eliminar el  valor  resultante.)
              Si size es cero, list no se modifica, pero se devuelve el número
              total  de  identificadores  de  grupo  suplementarios  para   el
              proceso.

       setgroups
              Asigna  los  identificadores  de  grupo  suplementarios  para el
              proceso. Sólo el superusuario puede usar esta función.

VALOR DEVUELTO

       getgroups
              En  caso  de  éxito,   se   devuelve   el   número   de   grupos
              suplementarios.   En  caso de error, se devuelve -1 y se pone en
              errno un valor apropiado.

       setgroups
              En caso de éxito, se devuelve 0. Si hay un error, -1, y se  pone
              en errno un valor apropiado.

ERRORES

       EFAULT list tiene una dirección inválida.

       EPERM  Para setgroups, el usuario no es el superusuario.

       EINVAL Para  setgroups,  size  es más grande que NGROUPS (32 para Linux
              2.0.32).  Para getgroups, size es menor que el número de IDs  de
              grupos suplementarios, pero no es cero.

OBSERVACIONES

       Un proceso puede tener como máximo al menos NGROUPS_MAX identificadores
       de grupo suplementarios además  del  identificador  de  grupo  efectivo
       (EGID).   El  conjunto  de  identificadores  de grupo suplementarios es
       heredado del proceso padre y puede ser modificado usando setgroups.  El
       número   máximo   de  identificadores  de  grupo  suplementarios  puede
       averiguarse usando sysconf(3):
           long ngroups_max;
           ngroups_max = sysconf(_SC_NGROUPS_MAX);
       El valor máximo devuelto por getgroups no puede ser mayor que el  valor
       obtenido de esta manera más uno.

       El  prototipo  para  setgroups está disponible solamente si _BSD_SOURCE
       está definida (bien explícitamente,  o  implícitamente,  no  definiendo
       _POSIX_SOURCE o compilando con la opción -ansi).

CONFORME A

       SVr4,  SVID  (sólo  en  la distribución 4; estas llamadas al sistema no
       estaban presentes en SVr3), X/OPEN, 4.3BSD. La función  getgroups  está
       en  POSIX.1.   Puesto  que  setgroups  requiere  privilegios,  no  está
       cubierta por POSIX.1.

VÉASE TAMBIÉN

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