Когда я пытаюсь найти groups
для пользователя root в bash, я получаю root
как результат (что ожидается и очевидно). Но затем я просматриваю /etc/group
, я вижу, что ни один пользователь не упоминается в корневой группе. И когда я пытаюсь получить информацию о группе для root
группы из кода следующим образом:
group* groupInfo = getgrgid(0);
Список членов группы groupInfo->gr_mem
пуст.
Как не я могу получить список членов реальной группы и почему суперпользователя не упоминается ни в/и т.д./группы, ни в gm_mem
членом group
?
Для комментария mbratch: я столкнулся с этой проблемой на Open Suse и Ubuntu. Тем не менее, даже если пользователь принадлежит к группе с соответствующим именем, я пока не вижу способа определить этот факт.
Файл /etc/group
используется для установки только второстепенных групп пользователей. Первичная группа сохраняется в /etc/passwd
. Это причина, по которой пользователь root
не входит в root
группу в /etc/group
: root
является основной группой пользователей root
.
Чтобы получить эту информацию, вы должны использовать getpwuid
.
getgrgid
для всех записей вторичной группы, и к getpwuid
для основной, верно?
getpwuid
вернет вам структуру, содержащую все поля /etc/passwd
для данного UID, одним из которых является GUID основной группы.
/usr/group
.getgrgid
следует за/etc/group
. Что вы используете? Ubuntu? Fedora? ...