最推荐用 chage -l 查看密码过期信息,它输出清晰完整,含最后修改时间、绝对过期日、宽限期等;passwd -S 适合批量轻量判断;/etc/shadow 可辅助验证底层策略。

最直接、最推荐的方式是用 chage -l 命令,它专为查看密码生命周期设计,输出清晰、字段完整,且无需手动计算。
用 chage -l 查看详细过期信息
该命令显示密码最后修改时间、绝对过期日、宽限期、警告天数等全部策略项:
- 执行
sudo chage -l username(普通用户查自己可省略 sudo) - 关键字段示例:
Password expires : Oct 25, 2026 → 密码将在该日期失效
Password inactive : never → 过期后不自动禁用账户
Maximum number of days between password change : 90 → 密码最长可用90天 - 若显示
Password expires : never,说明该用户未启用密码过期策略
用 passwd -S 快速查看状态摘要
适合批量扫描或脚本中轻量判断,输出紧凑但需理解字段含义:
- 执行
sudo passwd -S username - 输出如:
zhangsan P 10/09/2026 0 90 7 7
第2列P表示密码启用(L为锁定,NP为无密码)
第3列是上次修改日期(格式 MM/DD/YYYY)
第5列90是最大有效期天数 → 结合第3列可推算出到期日:10/09/2026 + 90 天 = 约 2027年1月7日
直接读取 /etc/shadow 辅助验证
所有密码策略底层都存于此文件,适合排查或自动化脚本解析:
- 执行
sudo grep '^username:' /etc/shadow - 关注第4–8列(以冒号分隔):
第4列:上次改密距1970-01-01的天数(如19999→date -d "@$((19999*86400))"可转为日期)
第6列:最大有效期(天),即密码从第4列日起多少天后过期
第8列:账户绝对过期日(自1970年起的天数),设为0或空表示永不过期
注意权限与适用场景
非 root 用户只能查自己的密码状态;生产环境建议优先用 chage -l,它自动处理字段映射和日期换算,避免手动计算出错。对服务账户或长期无人登录的账号,定期运行 chage -l 巡检能提前发现潜在登录中断风险。


















