NOM
getgroups, setgroups - Lire/écrire la liste des groupes supplémentaires
d’un processus
SYNOPSIS
#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);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
setgroups() : _BSD_SOURCE
getgroups() renvoie dans la liste list les identifiants des groupes
additionnels du processus appelant. Le paramètre size doit indiquer le
nombre maximum d’éléments qui peuvent être stockés dans le tampon
pointé par list. Si le processus appelant a plus que size groupes
additionnels, cela génère une erreur. Il n’est pas spécifié si
l’identifiant du groupe effectif du processus appelant est inclus dans
la liste renvoyée (ainsi une application devrait également appeler
getegid(2) et ajouter ou supprimer la valeur résultante).
Si size vaut zéro, list n’est pas modifiée, mais le nombre total de
groupes additionnels pour le processus est renvoyé. Ceci permet à
l’appelant de déterminer la taille d’une liste list allouée
dynamiquement à utiliser dans une appel à getgroups() ultérieur.
setgroups() fixe des identifiants de groupes additionnels pour le
processus appelant. Les privilèges appropriés (sous Linux : la capacité
CAP_SETGID) sont nécessaires. Le paramètre size indique le nombre
d’identifiants de groupes additionnels du tampon pointé par list.
VALEUR RENVOYÉE
En cas de succès, getgroups() renvoie le nombre d’identifiants de
groupes additionnels. En cas d’erreur, -1 est renvoyé et errno contient
le code d’erreur.
En cas de succès, setgroups() renvoie 0. En cas d’erreur, -1 est
renvoyé et errno contient le code d’erreur.
ERREURS
EFAULT list pointe en dehors de l’espace d’adressage accessible.
getgroups() peut également échouer avec les erreurs suivantes :
EINVAL size est inférieur au nombre d’identifiants de groupes
additionnels, et n’est pas nul.
setgroups() peut également échouer avec les erreurs suivantes :
EINVAL size est plus grand que NGROUPS_MAX (32 avant Linux 2.6.4 ;
65536 depuis Linux 2.6.4).
ENOMEM Plus de mémoire disponible.
EPERM L’appelant n’a pas les privilèges nécessaires.
CONFORMITÉ
SVr4, BSD 4.3. getgroups() est conforme à POSIX.1-2001. Comme
setgroups() nécessite des privilèges, il n’est pas couvert par
POSIX.1-2001.
NOTES
Un processus peut avoir jusqu’à NGROUPS_MAX identifiants de groupes
additionnels en plus de son identifiant de groupe effectif. Le jeu
d’identifiants de groupes additionnels est hérité du processus parent,
et est préservé au travers des appels à execve(2).
Le nombre maximal d’identifiants de groupes additionnels peut être
obtenus avec sysconf(3) :
long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);
La valeur de retour maximale de getgroups() ne peut pas être plus
grande que 1 plus cette valeur.
VOIR AUSSI
getgid(2), setgid(2), getgrouplist(3), initgroups(3), capabilities(7),
credentials(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».