Loading

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