Man page - getgrouplist(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

getgrouplist

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
STANDARDS
HISTORIQUE
BOGUES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

NOM

getgrouplist - Obtenir la liste des groupes auxquels appartient un utilisateur

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <grp.h>

int getgrouplist(const char * user , gid_t group ,
gid_t *
groups , int * ngroups );

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

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

DESCRIPTION

La fonction getgrouplist () balaie la base de donnĂ©es des groupes (voir group (5)) pour obtenir la liste des groupes auxquels appartient l’utilisateur user . Jusqu’à *ngroups de ces groupes sont retournĂ©s dans le tableau groups .

S’il n’était pas parmi les groupes dĂ©finis pour l’utilisateur user dans la base de donnĂ©es des groupes, group est inclus dans la liste des groupes retournĂ©e par getgrouplist ; typiquement, cet argument est spĂ©cifiĂ© comme Ă©tant l’identifiant du groupe de l’utilisateur user pris dans l’enregistrement correspondant dans le fichier des mots de passe.

L’argument ngroups est un argument « valeur rĂ©sultat » : au retour, il contient toujours le nombre de groupes trouvĂ©s pour l’utilisateur user , incluant group ; cette valeur peut ĂȘtre supĂ©rieure au nombre de groupes enregistrĂ©s dans groups .

VALEUR RENVOYÉE

Si le nombre de groupes auquel l’utilisateur user appartient est infĂ©rieur ou Ă©gal Ă  *ngroups , la valeur *ngroups est renvoyĂ©e.

Si l’utilisateur appartient Ă  plus de *ngroups groupes, getgrouplist () renvoie -1. Dans ce cas, la valeur renvoyĂ©e dans *ngroups peut ĂȘtre utilisĂ©e pour redimensionner le tampon passĂ© Ă  un appel ultĂ©rieur Ă  getgrouplist ().

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3894140-1.png

STANDARDS

Aucune.

HISTORIQUE

glibc 2.2.4.

BOGUES

Avant la glibc\˜2.3.3, l’implĂ©mentation de cette fonction comportait un bogue de dĂ©bordement de tampon : elle renvoyait la liste complĂšte des groupes de l’utilisateur user dans le tableau groups , mĂȘme si le nombre de groupes Ă©tait supĂ©rieur Ă  *ngroups .

EXEMPLES

Le programme ci-dessous affiche la liste des groupes auxquels appartient l’utilisateur indiquĂ© comme premier argument de la ligne de commande. Le second argument indique la valeur ngroups Ă  passer Ă  getgrouplist (). La session shell suivante montre des exemples d’utilisation de ce programme :

$ ./a.out cecilia 0
getgrouplist() returned -1; ngroups = 3
$ ./a.out cecilia 3
ngroups = 3
16 (dialout)
33 (video)
100 (users)

Source du programme

#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
int ngroups;
struct passwd *pw;
struct group *gr;
gid_t *groups;
if (argc != 3) {
fprintf(stderr, "Utilisation : %s <user> <ngroups>\n", argv[0]);
exit(EXIT_FAILURE);
}
ngroups = atoi(argv[2]);
groups = malloc(sizeof(*groups) * ngroups);
if (groups == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
/* Extraire la structure passwd (contient le premier identifiant
de groupe de l’utilisateur). */
errno = 0;
pw = getpwnam(argv[1]);
if (pw == NULL) {
if (errno)
perror("getpwnam");
else
fprintf(stderr, "utilisateur inconnu\n");
exit(EXIT_FAILURE);
}
/* Récupérer la liste de groupes. */
if (getgrouplist(argv[1], pw->pw_gid, groups, &ngroups) == -1) {
fprintf(stderr, "getgrouplist() returned -1; ngroups = %d\n",
ngroups);
exit(EXIT_FAILURE);
}
/* Afficher la liste de groupes récupérés avec les noms de groupes. */
fprintf(stderr, "ngroups = %d\n", ngroups);
for (int j = 0; j < ngroups; j++) {
printf("%d", groups[j]);
gr = getgrgid(groups[j]);
if (gr != NULL)
printf(" (%s)", gr->gr_name);
printf("\n");
}
exit(EXIT_SUCCESS);
}

VOIR AUSSI

getgroups (2), setgroups (2), getgrent (3), group_member (3), group (5), passwd (5)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.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.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 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 .