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)