最标准可靠的是用 chage -e 设置绝对截止日,账户从指定日期零点起彻底禁止登录;推荐使用 yyyy-mm-dd 格式,如 sudo chage -e 2026-12-31 username,并建议同步设置密码策略以避免登录异常。

直接用 chage -E 设置指定日期最标准可靠,账户会在该日期零点起彻底禁止登录。
用 chage -E 设置绝对截止日
这是内核级生效的做法,推荐使用 YYYY-MM-DD 格式:
- sudo chage -E 2026-12-31 username → 账户从 2026 年 12 月 31 日 00:00 开始无法登录
- sudo chage -E -1 username 或 sudo chage -E never username → 恢复为永不过期
- 避免用天数(如 19876),不易读且易出错
查看当前设置是否生效
执行命令确认状态:
- chage -l username → 关注输出中 Account expires 行
- 若显示 never,说明未设截止日;若显示具体日期,则以该日期为准
别只设截止日,要同步密码策略
单设 -E 不调密码参数,可能导致用户登录后立刻被强制改密甚至卡住:
- 稳妥做法是组合设置:sudo chage -E 2026-12-31 -M 90 -W 7 -I 5 username
- 含义:账户年底失效;密码 90 天一换,提前 7 天提醒,过期后还有 5 天宽限期可登录并改密
- -I 和 -E 是两回事:-I 控制密码过期后的宽限登录,-E 是整个账户禁用
批量设置普通用户需谨慎
对多个普通用户统一设截止日时:
- 先筛选 UID ≥1000 的普通用户:awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
- 再循环设置:for u in $(...); do sudo chage -E 2026-12-31 "$u"; done
- 执行前务必抽样运行 chage -l 验证,避开 nginx、mysql 等服务账户











