Я попытался разрешить отображение всех пользователей, принадлежащих к группе, указанной в качестве параметра (optarg).C - Пользователи, принадлежащие к группе - Linux
Я написал первый случай, который показывает всех пользователей и под ним их группы, и теперь я хочу создать b-код с параметром optarg, содержащим имя группы.
Я не могу использовать gr_mem, потому что я не корень.
struct passwd *p;
gid_t *groups = NULL;
int ng = 0;
struct group *gr;
int i, opt;
while((opt = getopt (argc, argv, "a")) != -1){
switch(opt){
case 'a':
setpwent();
while ((p=getpwent()) != NULL){
printf("%s\n", p->pw_name);
if(getgrouplist(p->pw_name, p->pw_gid, groups, &ng) < 0){
groups = (gid_t*) malloc(ng * sizeof (gid_t));
getgrouplist(p->pw_name, p->pw_gid, groups, &ng);
}
for(i = 0; i<ng; i++){
gr = getgrgid(groups[i]);
printf("%s\n", gr->gr_name);
}
}
endpwent();
return 0;
}
}
setpwent();
while ((p=getpwent()) != NULL)
printf("%s\n", p->pw_name);
endpwent();