Если вы читаете grp module documentation вы увидите, что grp.getgrnam (Groupname) вернет одну запись из базы данных группы, которая представляет собой кортеж-подобный объект. Вы можете получить доступ к информации по индексу или по атрибутам:
>>> import grp
>>> groupinfo = grp.getgrnam('root')
>>> print groupinfo[2]
0
>>> print groupinfo.gr_gid
0
Другие записи являются имя, зашифрованный пароль (обычно пуст, при использовании теневого файла, это будет фиктивное значение) и всех членов группы имена. Это отлично работает на любой операционной системе Unix, включая мой Mac OS X ноутбук:
>>> import grp
>>> admin = grp.getgrnam('admin')
>>> admin
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> admin.gr_name
'admin'
>>> admin.gr_gid
80
>>> admin.gr_mem
['root', 'admin', 'mj']
Модуль также предлагает метод для получения записей от GID, и, как вы обнаружили, метод в цикле по всем записям в базе данных:
>>> grp.getgrgid(80)
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> len(grp.getgrall())
73
Последнее, но не менее, питон предлагает аналогичные функциональные возможности, чтобы получить информацию о паролях и теневых файлов, в pwd и spwd модулей, которые имеют подобный API.
Обратите внимание, что, поскольку существует ограничение на количество членов группы Unix, некоторые (большие) системы имеют несколько групп Unix с одним и тем же GID, но другое имя, например: 'admin',' admin2', 'admin3', и т. д. Возможно, вы не знаете об этом, потому что файлы хранятся с их числовым UID/GID, а инструменты, такие как 'ls', ищут GID и отображают первое имя, которое в моем примере было бы' admin'. Таким образом, вы можете быть удивлены, обнаружив, что указанная учетная запись пользователя не находится в группе 'admin', но на самом деле' admin2' или другой псевдоним. Вы должны отфильтровать все группы по GID, чтобы найти псевдонимы AFAICT. – RobM