9 int listgroups(char *user)
16 pass = getpwnam(user);
19 printf("Unknown user '%s'\n", user);
23 if (initgroups(user, pass->pw_gid) != 0) {
28 ngroups = getgroups(0, NULL);
31 printf("Using is in no groups!\n");
35 grps = (gid_t *)malloc(ngroups * sizeof(gid_t));
37 if (getgroups(ngroups, grps) != ngroups) {
38 printf("Failed to get group list!\n");
42 grp = getgrgid(pass->pw_gid);
44 if (pass->pw_gid != grps[0]) {
45 printf("%5d %s\n", pass->pw_gid, grp?grp->gr_name:"UNKNOWN");
48 for (i=0;i<ngroups;i++) {
49 grp = getgrgid(grps[i]);
50 printf("%5d %s\n", grps[i], grp?grp->gr_name:"UNKNOWN");
57 int main(int argc, char *argv[])
60 printf("Usage: initgroups USERNAME\n");
65 printf("This program must be run as root\n");