# `spwd` --- shadow 密碼資料庫

自從版本 3.11 後不推薦使用，將會自版本 3.13 中移除。: `spwd` 模組 (module) 即將被棄用（詳情與替代方案請見 PEP 594）。

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

可用性: 非 Emscripten，非 WASI。

此模块在 WebAssembly 平台 `wasm32-emscripten` 和 `wasm32-wasi` 上不适用或不可用。 请参阅 WebAssembly 平台 了解详情。

访问 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` 模組

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