Получая группы, пользователю root принадлежит

0

Когда я пытаюсь найти groups для пользователя root в bash, я получаю root как результат (что ожидается и очевидно). Но затем я просматриваю /etc/group, я вижу, что ни один пользователь не упоминается в корневой группе. И когда я пытаюсь получить информацию о группе для root группы из кода следующим образом:

group* groupInfo = getgrgid(0);

Список членов группы groupInfo->gr_mem пуст.

Как не я могу получить список членов реальной группы и почему суперпользователя не упоминается ни в/и т.д./группы, ни в gm_mem членом group?

Для комментария mbratch: я столкнулся с этой проблемой на Open Suse и Ubuntu. Тем не менее, даже если пользователь принадлежит к группе с соответствующим именем, я пока не вижу способа определить этот факт.

  • 0
    В некоторых дистрибутивах Linux по умолчанию пользователь является членом группы по собственному имени, хотя это не указано в /usr/group . getgrgid следует за /etc/group . Что вы используете? Ubuntu? Fedora? ...
Теги:

1 ответ

2
Лучший ответ

Файл /etc/group используется для установки только второстепенных групп пользователей. Первичная группа сохраняется в /etc/passwd. Это причина, по которой пользователь root не входит в root группу в /etc/group: root является основной группой пользователей root.

Чтобы получить эту информацию, вы должны использовать getpwuid.

  • 0
    Спасибо за объяснение. Итак, если я хочу проверить, принадлежит ли пользователь какой-либо группе, мне нужно обратиться и к getgrgid для всех записей вторичной группы, и к getpwuid для основной, верно?
  • 0
    Именно так. getpwuid вернет вам структуру, содержащую все поля /etc/passwd для данного UID, одним из которых является GUID основной группы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню