Rechercher une page de manuel
getgrouplist
Langue: en
Version: 2007-07-26 (mandriva - 22/10/07)
Section: 3 (Bibliothèques de fonctions)
NAME
getgrouplist - list of groups a user belongs toSYNOPSIS
#include <grp.h>
int getgrouplist(const char *user, gid_t group,
gid_t *groups, int *ngroups);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
getgrouplist(): _BSD_SOURCE
DESCRIPTION
The getgrouplist() function scans the group database for all the groups user belongs to. Up to *ngroups group IDs corresponding to these groups are stored in the array groups; the return value from the function is the number of group IDs actually stored. The group group is automatically included in the list of groups returned by getgrouplist().RETURN VALUE
If *ngroups is smaller than the total number of groups found, then getgrouplist() returns -1. In all cases the actual number of groups is stored in *ngroups.VERSIONS
This function is present since glibc 2.2.4.CONFORMING TO
This function is non-standard; it appears on most BSDs.BUGS
The glibc 2.3.2 implementation of this function is broken: it overwrites memory when the actual number of groups is larger than *ngroups.EXAMPLE
/* This crashes with 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"; /* username here */ 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); }
SEE ALSO
getgroups(2), setgroups(2)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre