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).
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)