使用Python访问组数据库

要访问UNIX组数据库,我们应该使用grp模块。影子密码数据库条目就像元组一样的对象。

要使用grp模块,我们应该使用-导入它

import grp

grp数据库的属性是-

指数属性和说明
0gr_name
组名
1gr_passwd组
的加密密码。(通常是空的)
2gr_gid
组ID(数字)
3gr_mem
组用户列表

在组对象中,gid是整数。组名和密码是字符串。成员列表是字符串列表。

该模块的一些方法是-

方法grp.getgrgid(gid)

此方法将从给定的组ID返回组数据库条目。当没有对应于gid的组时,它将引发KeyError。

方法grp.getgrnam(name)

此方法将从给定的组名称返回组数据库条目。当没有对应于gid的组时,它将引发KeyError。

方法grp.getgrall()

此方法将返回所有组数据库条目。

范例程式码

import grp
print("ID: 4: " + str(grp.getgrgid(4)) + '\n') #Password detail using Group ID
   print("cdrom group: " + str(grp.getgrnam('cdrom')) + '\n') #Password detail using Group name
      for entry in grp.getgrall():
   print("Group Name: " + entry[0] + "\t\tMembers: " + str(entry.gr_mem))

输出结果

$ sudo python3 example.py
ID: 4: grp.struct_group(gr_name='adm', gr_passwd='x', gr_gid=4, gr_mem=['syslog', 'unix_user'])

cdrom group: grp.struct_group(gr_name='cdrom', gr_passwd='x', gr_gid=24, gr_mem=['unix_user'])

Group Name: root       Members: []
Group Name: daemon      Members: []
Group Name: bin       Members: []
Group Name: sys       Members: []
Group Name: adm       Members: ['syslog', 'unix_user']
Group Name: tty       Members: []
Group Name: disk       Members: []
Group Name: lp       Members: []
Group Name: mail       Members: []
Group Name: news       Members: []
Group Name: uucp       Members: []
Group Name: man       Members: []
Group Name: proxy       Members: []
Group Name: kmem       Members: []
Group Name: dialout     Members: []
Group Name: fax       Members: []
Group Name: voice       Members: []
Group Name: cdrom       Members: ['unix_user']
Group Name: floppy      Members: []
Group Name: tape       Members: []
Group Name: sudo       Members: ['unix_user']
Group Name: audio       Members: ['pulse']
Group Name: dip       Members: ['unix_user']
Group Name: www-data    Members: []
Group Name: backup      Members: []
………..
………..
………..