# `spwd` —— shadow 密码库

3.11 版后已移除: `spwd` 模块已被弃用（请参阅 PEP 594 了解详情及其替代品）。

该模块提供对 Unix shadow 密码库的访问能力。可用于各种 Unix 版本。

访问 shadow 密码数据库须拥有足够的权限（通常意味着必须采用 root 账户）。

shadow 密码库中的每条记录均表示为一个类似元组的对象，其属性对应着 `spwd` 结构的成员（下面列出了各属性字段，参见 ` `<shadow.h>`）。

索引 | 属性 | 含意
--- | --- | ---
0 | `sp_namp` | 登录名
1 | `sp_pwdp` | 加密后的密码
2 | `sp_lstchg` | 最后修改日期
3 | `sp_min` | 两次修改间隔的最小天数
4 | `sp_max` | 两次修改间隔的最大天数
5 | `sp_warn` | 提前警告用户密码过期的天数
6 | `sp_inact` | 密码过期至账户禁用之间的天数
7 | `sp_expire` | 账户过期的天数，自 1970-01-01 算起
8 | `sp_flag` | 保留字段

sp_namp 和 sp_pwdp 条目是字符串，其他的均为整数。 如果未找到所需条目则会触发 `KeyError`。

定义了以下函数：

`spwd.``getspnam`(name)

  返回指定用户名的 shadow 密码库记录。

  在 3.6 版更改: 如果当前用户权限不足，会触发 `PermissionError`，而非 `KeyError`。

`spwd.``getspall`()

  返回所有可用的 shadow 密码库记录列表，顺序随机。

参见

模块 `grp`

  针对用户组数据库的接口，与本模块类似。

模块 `pwd`

  访问普通密码库的接口，与本模块类似。