man getgrouplist (Fonctions bibliothèques) - Lister les groupes auquels appartient un utilisateur.
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 getgroup%list().
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.
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.
CONFORMITÉ
Cette fonction est présente depuis GlibC 2.2.4.
EXEMPLE
/* Ceci plante avec la GlibC 2.3.2 */ #include <stdio.h> #include <stdlib.h> #include <grp.h> #include <pwd.h>
int main() { int i, ng = 0; char *user = "who"; /* nom d'utilisateur ici */ gid_t *groups = NULL; struct passwd *pw = getpwnam(user); if (pw == NULL) return 0;
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]);
return 0; }
VOIR AUSSI
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 14 décembre 2005.
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=en man 3 getgrouplist ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.