"spwd" --- shadow 密碼資料庫
****************************

3.11 版後已棄用: "spwd" 模組 (module) 即將被棄用（詳情與替代方案請見
**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" 模組
     访问普通密码库的接口，与本模块类似。
