dwww Home | Manual pages | Find package

getgroups(2)                  System Calls Manual                 getgroups(2)

NOM
       getgroups, setgroups - Lire et écrire la liste des groupes additionnels
       d'un processus

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <unistd.h>

       int getgroups(int size, gid_t list[]);

       #include <grp.h>

       int setgroups(size_t size, const gid_t *_Nullable list);

   Exigences de macros de test de fonctionnalités  pour  la  glibc  (consulter
   feature_test_macros(7)) :

       setgroups() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc 2.19 et antérieures :
               _BSD_SOURCE

DESCRIPTION
       getgroups() renvoie dans la liste list les identifiants des groupes ad-
       ditionnels du processus appelant. Le paramètre size  doit  indiquer  le
       nombre  maximal  d'éléments  qui  peuvent  être  stockés dans le tampon
       pointé par list. Si le processus appelant est membre de  plus  de  size
       groupes additionnels, cela génère une erreur.

       Il  n'est  pas précisé si l'ID du groupe effectif du processus appelant
       est inclus dans la liste renvoyée (ainsi, une  application  doit  aussi
       appeler getegid(2) et ajouter ou supprimer la valeur qui en résulte).

       Si  size  vaut  zéro,  list n'est pas modifiée, mais le nombre total de
       groupes additionnels pour le processus est renvoyé. Cela permet à l'ap-
       pelant de déterminer la taille d'une liste list allouée dynamiquement à
       utiliser dans un appel à getgroups() ultérieur.

       setgroups() définit des identifiants de groupe additionnel pour le pro-
       cessus  appelant.  Les  privilèges appropriés sont nécessaires (voir la
       description de EPERM ci-dessous). Le paramètre size indique  le  nombre
       d'identifiants de groupe additionnel du tampon pointé par list. Un pro-
       cessus peut supprimer tous ses groupes additionnels :

           setgroups(0, NULL);

VALEUR RENVOYÉE
       En cas de succès,  getgroups()  renvoie  le  nombre  d'identifiants  de
       groupe  additionnel. En cas d'erreur, -1 est renvoyé et errno est posi-
       tionné pour indiquer l'erreur.

       En cas de succès, setgroups() renvoie 0. En cas d'erreur, -1  est  ren-
       voyé et errno est positionné pour indiquer l'erreur.

ERREURS
       EFAULT list contient une adresse non autorisée.

       getgroups() peut également échouer avec les erreurs suivantes :

       EINVAL size  est inférieur au nombre d'identifiants de groupe addition-
              nel, 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 assez de mémoire.

       EPERM  Le  processus appelant n'a pas de privilèges suffisants (l'appe-
              lant n'a pas la capacité CAP_SETGID dans l'espace de noms utili-
              sateur où il réside).

       EPERM (depuis Linux 3.19)
              L'utilisation  de  setgroups()  est interdite dans cet espace de
              noms utilisateur. Voir  la  description  de  /proc/pid/setgroups
              dans user_namespaces(7).

STANDARDS
       getgroups() : SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.

       setgroups() :  SVr4,  4.3BSD.  Depuis  que setgroups() exige des privi-
       lèges, il n'est pas traité dans POSIX.1.

NOTES
       Un processus peut avoir jusqu'à NGROUPS_MAX identifiants de groupe  ad-
       ditionnel  en  plus de son identifiant de groupe effectif. La constante
       NGROUPS_MAX est définie  dans  <limits.h>.  Le  jeu  d'identifiants  de
       groupe  additionnel  est hérité du processus parent, et est préservé au
       travers des appels à execve(2).

       Le nombre maximal d'identifiants de groupe additionnel peut être obtenu
       pendant l'exécution au moyen de 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. Depuis Linux 2.6.4, le  nombre  maximal
       d’identifiants  de  groupe additionnel est aussi exposé à l’aide du fi-
       chier /proc/sys/kernel/ngroups_max en lecture seule et spécifique à Li-
       nux.

       L'appel système getgroups() originel de Linux ne gérait que des identi-
       fiants de groupe sur 16 bits. En conséquence, Linux 2.4 a  ajouté  get-
       groups32()  qui  prend  en charge des identifiants 32 bits. La fonction
       getgroups() de la glibc qui l'encapsule gère  de  manière  transparente
       ces différences entre noyaux.

   différences entre bibliothèque C et noyau
       Au  niveau  du noyau, les ID d'utilisateur et de groupe représentent un
       attribut par thread. Cependant, POSIX exige que tous les  threads  d'un
       processus partagent les mêmes droits. L'implémentation des threads NPTL
       gère les exigences de POSIX en  fournissant  des  fonctions  enveloppes
       pour  les appels système qui modifient les UID et les GID du processus.
       Ces fonctions enveloppes (dont  celle  de  setgroups())  utilisent  une
       technique  basée sur le signal pour s'assurer que quand un thread modi-
       fie les droits, tous les autres threads du processus  modifient  égale-
       ment leurs droits. Pour des détails, voir nptl(7).

VOIR AUSSI
       getgid(2),  setgid(2), getgrouplist(3), group_member(3), initgroups(3),
       capabilities(7), credentials(7)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Gué-
       rard <fevrier@tigreraye.org>, Jean-Luc  Coulon  (f5ibh)  <jean-luc.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>,  Cédric Boutillier <ce-
       dric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com>  et
       Jean-Philippe MENGUAL <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de  manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   5 février 2023                    getgroups(2)

Generated by dwww version 1.15 on Sat Jun 29 01:43:18 CEST 2024.