getgrouplist

Autres langues

Langue: fr

Version: 18 novembre 2003 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

NOM

getgrouplist - Lister les groupes auquels appartient un utilisateur

SYNOPSIS

#include <grp.h>

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

DESCRIPTION

La fonction getgrouplist() balaie la base de données group à la recherche de tous les groupes auquels user appartient. *ngroups identifiants de groupe correspondant à ces groupes sont enregistrés dans le tableau groups; la valeur de retour de la fonction est le nombre de GID actuellement enregistrés. Le groupe group est automatiquement inclus dans la liste des groupes renvoyée par getgrouplist().

VALEUR RENVOYÉE

Si *ngroups est plus petit que le nombre total de groupes trouvés, getgrouplist() renvoie -1. Dans tous les cas, le nombre actuel de groupes est enregistré dans *ngroups.

VERSIONS

Cette fonction est présente depuis glibc 2.2.4.

CONFORMITÉ

Cette fonction n'est pas standard ; elle apparait sur la plupart des BSD.

BOGUES

L'implémentation de cette fonction dans la glibc 2.3.2 est défectueuse : elle écrase la mémoire lorsque le nombre actuel de groupes est plus grand que *ngroups.

EXEMPLE

 /* Ceci plante avec la glibc 2.3.2 */
 #include <stdio.h>
 #include <stdlib.h>
 #include <grp.h>
 #include <pwd.h>
 
 int
 main(void)
 {
     int i, ng = 0;
     char *user = "who"; /* nom d'utilisateur ici */
     gid_t *groups = NULL;
     struct passwd *pw = getpwnam(user);
     if (pw == NULL)
         exit(EXIT_SUCCESS);
 
     if (getgrouplist(user, pw->pw_gid, NULL, &ng) < 0) {
         groups = (gid_t *) malloc(ng * sizeof (gid_t));
         getgrouplist(user, pw->pw_gid, groups, &ng);
     }
 
     for(i = 0; i < ng; i++)
         printf("%d\n", groups[i]);
 
     exit(EXIT_SUCCESS);
 }
 

VOIR AUSSI

getgroups(2), setgroups(2)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 20 juillet 2005 et révisée le 27 novembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 getgrouplist ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.