Provided by: manpages-es_1.55-10_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)