使用chage -E YYYY-MM-DD可精确设置账号到期时间,格式严格为四位年-两位月-两位日,如chage -E 2026-12-31 testuser;设为0立即失效,-1或空值表示永不过期;需sudo权限,生效后chage -l可验证。

直接用 chage -E YYYY-MM-DD 用户名 即可设置测试账号的精确到期时间,格式必须是四位年、两位月、两位日,中间用短横线连接,不能带空格或时间部分。
设置前先确认当前日期和目标时间
系统以 1970-01-01 为基准计算天数,但你不需要手动换算。chage 接受标准日期字符串,例如:
- chage -E 2026-12-31 testuser —— 账号在 2026 年 12 月 31 日 00:00 起彻底禁用,无法登录 SSH、su 或执行任何需认证的操作
- chage -E 2026-09-30 testuser —— 因当前是 2026 年 9 月 16 日,该账号将在 14 天后失效
- 设为 -E 0 表示立即失效;设为 -E -1 或留空则代表永不过期
避免常见格式错误
chage 对日期格式非常严格,以下写法都会失败:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 2026/12/31(斜杠不识别)
- 2026-12-31 23:59(含时间部分会被截断或报错)
- "2026-12-31"(加英文引号在多数 shell 下反而导致参数解析异常)
-
date +%F 直接拼接——虽然输出格式对,但未加命令替换语法
$(date +%F)就只是字面字符串
验证是否生效
执行后立刻用 chage -l 用户名 查看结果:
- 若显示 Account expires : Dec 31, 2026,说明已成功写入 /etc/shadow 第 8 字段
- 若仍显示 never,检查是否漏掉 sudo 权限(普通用户无权修改)
- 注意:-E 只控制账户整体可用性,不影响密码是否过期;如需同步限制密码生命周期,应额外加 -M、-W、-I 参数
测试账号建议搭配宽限期使用
对测试账号,常配合 -I 设置缓冲窗口,防止到期瞬间失联影响调试:
- chage -E 2026-10-15 -I 3 testuser —— 账户 10 月 15 日锁死,但如果密码提前过期,用户还有 3 天可登录并改密
- 单独设 -I 不生效,必须与 -M(密码最大有效期)共存才有意义
- 不要对 root 或关键服务账号设 -E,避免系统管理中断

















