访问Unix / Linux密码数据库(pwd)

Python标准库中的pwd模块提供对Unix / Linux操作系统中用户帐户的密码数据库的访问。此密码数据库中的条目被指定为类似元组的对象。元组的结构根据CPython API中的以下passwd结构pwd.h文件

指数属性含义
0pw_name登录名
1pw_passwd可选的加密密码
2pw_uid数字用户ID
3pw_gid数字组ID
4pw_gecos用户名或评论字段
5pw_dir用户主目录
6pw_shell用户命令解释器

pwd模块定义以下功能-

>>> import pwd
>>> dir(pwd)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'getpwall', 'getpwnam', 'getpwuid', 'struct_passwd']

getpwnam() -此函数返回密码数据库中与指定用户名相对应的记录

>>> pwd.getpwnam('root')
pwd.struct_passwd(pw_name s= 'root', pw_passwd = 'x', pw_uid = 0, pw_gid = 0, pw_gecos = 'root', pw_dir = '/root', pw_shell = '/bin/bash')

getpwuid() -此函数返回密码数据库中与给定UID对应的记录

>>> pwd.getpwuid(0)
pwd.struct_passwd(pw_name = 'root', pw_passwd = 'x', pw_uid = 0, pw_gid = 0, pw_gecos = 'root', pw_dir = '/root', pw_shell = '/bin/bash')

getpwall() -此函数返回一个元组列表。每个元组包含每个用户的密码结构信息。结构中的uid和gid项目是整数。如果找不到与传递的参数相对应的条目,则会引发KeyError异常。

>>> pwd.getpwnam('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'getpwnam(): name not found: hello'