Si lee la documentación del módulo grp, verá que grp.getgrnam(groupname) devolverá una entrada de la base de datos del grupo, que es un objeto similar a una tupla. Puede acceder a la información por índice o por atributo:
>>> import grp
>>> groupinfo = grp.getgrnam('root')
>>> print groupinfo[2]
0
>>> print groupinfo.gr_gid
0
Otras entradas son el nombre, la contraseña cifrada (generalmente vacía, si usa un archivo oculto, será un valor ficticio) y todos los nombres de los miembros del grupo. Esto funciona bien en cualquier sistema Unix, incluida mi computadora portátil 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']
El módulo también ofrece un método para obtener entradas por gid y, como descubrió, un método para recorrer todas las entradas en la base de datos:
>>> grp.getgrgid(80)
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> len(grp.getgrall())
73
Por último, pero no menos importante, python ofrece una funcionalidad similar para obtener información sobre la contraseña y los archivos ocultos, en los módulos pwd y spwd, que tienen una API similar.
Ver grp.getgrnam(name)
:
grp.getgrnam(name)
Devuelve la entrada de la base de datos del grupo para el nombre de grupo dado. Se genera KeyError si no se puede encontrar la entrada solicitada.
Las entradas de la base de datos del grupo se informan como un objeto similar a una tupla, cuyos atributos corresponden a los miembros de la estructura del grupo:
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
El ID de grupo numérico está en el índice 2, o en el penúltimo, o el atributo gr_gid
.
GID de root
es 0:
>>> grp.getgrnam('root')
('root', 'x', 0, ['root'])
>>> grp.getgrnam('root')[-2]
0
>>> grp.getgrnam('root').gr_gid
0
>>>