Available in

(2) (3) (2)/de (2)/es (2)/fr (2)/ja (2)/ko (2)/nl (2)/pl (2)/pt (2)/ru

Contents

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

DESCRIPTION

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 [AT] debian.org> et l’équipe francophone de traduction de Debian.

Veuillez signaler toute erreur de traduction en écrivant à <debian−l10n−french [AT] lists.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> ».

COMMENTS

blog comments powered by Disqus