Se leggi la documentazione del modulo grp vedrai che grp.getgrnam(groupname) restituirà una voce dal database del gruppo, che è un oggetto simile a una tupla. Puoi accedere alle informazioni per indice o per attributo:
>>> import grp
>>> groupinfo = grp.getgrnam('root')
>>> print groupinfo[2]
0
>>> print groupinfo.gr_gid
0
Altre voci sono il nome, la password crittografata (di solito vuota, se si utilizza un file shadow, sarà un valore fittizio) e tutti i nomi dei membri del gruppo. Funziona bene su qualsiasi sistema Unix, incluso il mio laptop 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']
Il modulo offre anche un metodo per ottenere le voci tramite gid e, come hai scoperto, un metodo per eseguire il ciclo su tutte le voci nel database:
>>> grp.getgrgid(80)
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> len(grp.getgrall())
73
Ultimo ma non meno importante, python offre funzionalità simili per ottenere informazioni sulla password e sui file shadow, nei moduli pwd e spwd, che hanno un'API simile.
Vedi grp.getgrnam(name)
:
grp.getgrnam(name)
Restituisce la voce del database di gruppo per il nome di gruppo specificato. KeyError viene sollevato se la voce richiesta non può essere trovata.
Le voci del database di gruppo sono riportate come un oggetto simile a una tupla, i cui attributi corrispondono ai membri della struttura del gruppo:
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 del gruppo numerico è all'indice 2, o penultimo dall'ultimo, o all'attributo gr_gid
.
GID di root
è 0:
>>> grp.getgrnam('root')
('root', 'x', 0, ['root'])
>>> grp.getgrnam('root')[-2]
0
>>> grp.getgrnam('root').gr_gid
0
>>>