草稿待审:chage -M/-m 与 passwd 实际改密基于文档核查,尚未实际执行。
普通用户只能查看自身口令状态;管理员才改全局策略。
查看当前口令状态
passwd -S 用户名 输出账户状态与最近改密日期。[1]
passwd -S huyuanwen huyyuanwen P 2026-06-08 0 99999 7 -1
各字段含义:
- 第 2 位 P:口令可用
- 第 3 位:最近改密日期
- 第 4 位:最小间隔天数
- 第 5 位:最大有效期天数
- 第 6 位:过期前几天警告
- 第 7 位:口令过期后账号禁用天数
chage -l 用户名 以可读形式列出有效期。[2]
chage -l huyuanwen
输出示例:
Last password change : Jun 08, 2026
Password expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
这两个命令均已在 WSL 实测。
设置口令有效期
chage 负责修改单用户口令过期信息,包括上次改密日期、最小间隔、最大有效期和警告期。[2]
# 设置 90 天过期
sudo chage -M 90 alice
# 设置 7 天警告
sudo chage -W 7 alice
# 设置最少间隔 1 天
sudo chage -m 1 alice
-M 最大天数、-W 警告天数、-m 最小间隔天数。这些参数均来自 chage(1) 手册页,在 WSL 中因 sudo 需要交互密码,未实际执行;语法与选项已验证通过官方 man page。
全局默认值
/etc/login.defs 为所有新用户设置默认值。[3] 当前 WSL 实测默认值:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
修改后新建用户才生效。PASS_MAX_DAYS 控制口令最长使用天数;PASS_WARN_AGE 控制过期前几天发出警告。
复杂度策略
口令复杂度由 PAM 的 pam_unix.so 控制。WSL 实测 /etc/pam.d/common-password:
password [success=1 default=ignore] pam_unix.so obscure yescrypt
obscure 启用基础复杂度检查(长度、字母数字混合),yescrypt 使用 yescrypt 哈希算法。如果需要更严格策略,可安装 libpam-pwquality 并在 common-password 中增加 pam_pwquality.so 行,并配置 /etc/security/pwquality.conf。
强制下次登录修改
chage -d 0 将上次改密日期设为 0,下次登录必须改密。[2]
sudo chage -d 0 alice
适合用于新账号启用或口令泄露后的强制重置。
排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
| 提示“口令过期” | chage -l 显示已过期 |
登录后立即改密,或管理员用 chage -E 延长 |
| 提示“太短” | PAM obscure 规则或 pam_pwquality |
用 passwd 输入 8 位以上混合字符 |
| 提示“改密间隔不足” | PASS_MIN_DAYS 或 -m 限制 |
等待间隔天数或用 root 重置 |
实测记录
- 测试机:WSL2 Ubuntu(内核 6.6.114.1-microsoft-standard)
- 日期:2026-11-02
- 已实测:
passwd -S、chage -l、/etc/login.defs、/etc/pam.d/common-password - 未实测:
chage -M/-m/-W/-d 0、passwd实际改密流程(sudo 需交互密码)
局限性
- WSL 未测 root 级
chage和useradd;实际效果以物理机/虚拟机为准。 - RPM 系(RHEL/CentOS/Fedora)PAM 文件路径不同,common-password 可能不存在,需看
/etc/pam.d/system-auth。[4]
参考资料
- [1] passwd-man(passwd-man)
- [2] chage-man(chage-man)
- [3] login-defs-man(login-defs-man)
- [4] redhat-blog(redhat-blog)
文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。