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


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

索引属性含义
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() - 此函数返回一个元组列表。每个元组包含每个用户的 passwd 结构信息。结构中的 uid 和 gid 项目是整数。如果找不到对应于传递参数的条目,则会引发 KeyError 异常。

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

更新于: 2020-06-27

292 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告