Вы можете получить группу пользователей, используя getpwnam
или getpwuid
, затем используйте getgrgid
, чтобы получить имя группы из gid.
Это функции C в стандартной библиотеке.
- РЕДАКТИРОВАТЬ: Вот короткий, плохо закодированный пример C ---
Вот небольшой пример, на Mac OS в терминале он должен быть собран с использованием make (если вы назоветефайл getpwnam_example.c
вы можете сделать $ make getpwnam_example
в том же каталоге, что и файл c).
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <strings.h>
#include <pwd.h>
#include <grp.h>
int main(int argc, char **argv) {
uid_t current_user_id = getuid();
printf("My Current UID is %d\n", current_user_id);
struct passwd *pwentry = getpwuid(current_user_id);
printf("My Current Name is %s\n", pwentry->pw_gecos);
printf("My Current Group ID is %d\n", pwentry->pw_gid);
struct group *grentry = getgrgid(getgid());
printf("My Current Group Name is %s\n", grentry->gr_name);
printf("Am I an admin? ");
struct group *admin_group = getgrnam("admin");
while(*admin_group->gr_mem != NULL) {
if (strcmp(pwentry->pw_name, *admin_group->gr_mem) == 0) {
printf("yes!\n");
}
admin_group->gr_mem++;
}
return 0;
}