Si vous lisez la documentation du module grp, vous verrez que grp.getgrnam(groupname) renverra une entrée de la base de données du groupe, qui est un objet de type tuple. Vous pouvez accéder aux informations soit par index, soit par attribut :
>>> import grp
>>> groupinfo = grp.getgrnam('root')
>>> print groupinfo[2]
0
>>> print groupinfo.gr_gid
0
Les autres entrées sont le nom, le mot de passe crypté (généralement vide, si vous utilisez un fichier fantôme, ce sera une valeur fictive) et tous les noms des membres du groupe. Cela fonctionne bien sur n'importe quel système Unix, y compris mon ordinateur portable 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']
Le module propose également une méthode pour obtenir les entrées par gid, et comme vous l'avez découvert, une méthode pour boucler sur toutes les entrées de la base de données :
>>> grp.getgrgid(80)
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> len(grp.getgrall())
73
Enfin, python offre des fonctionnalités similaires pour obtenir des informations sur les fichiers de mot de passe et d'ombre, dans les modules pwd et spwd, qui ont une API similaire.
Voir grp.getgrnam(name)
:
grp.getgrnam(name)
Renvoie l'entrée de la base de données de groupe pour le nom de groupe donné. KeyError est déclenché si l'entrée demandée est introuvable.
Les entrées de la base de données de groupe sont signalées sous la forme d'un objet de type tuple, dont les attributs correspondent aux membres de la structure de groupe :
Index Attribute Meaning
0 gr_name the name of the group
1 gr_passwd the (encrypted) group password; often empty
2 gr_gid the numerical group ID
3 gr_mem all the group member’s user names
L'ID de groupe numérique est à l'index 2, ou 2e à partir du dernier, ou l'attribut gr_gid
.
GID de root
vaut 0 :
>>> grp.getgrnam('root')
('root', 'x', 0, ['root'])
>>> grp.getgrnam('root')[-2]
0
>>> grp.getgrnam('root').gr_gid
0
>>>