一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎么配置系统账号策略:实现对已过期账号自动挂起锁定指南

时间:2026-06-20 10:16:46 编辑:袖梨 来源:一聚教程网

Linux中chage -E设账户过期日可自动挂起账号,系统内核级生效,无需脚本;配合usermod -s /sbin/nologin或-L可彻底阻断交互式入口,Windows域环境可用Set-ADUser -AccountExpirationDate模拟等效挂起。

直接让系统自动挂起已过期账号,关键不是“等它过期再处理”,而是把“过期”本身设为不可登录的触发条件——Linux 中 chage -E 设置的账户过期日期一到,用户就无法通过任何标准认证方式(密码、PAM、SSH 密码登录)进入系统,等效于自动挂起锁定。

用 chage 设定精确过期日,实现自动挂起

这是最轻量、最可靠的方式,无需脚本或定时任务,系统内核级生效:

  • 立即挂起指定用户:运行 sudo chage -E $(date -d "yesterday" +%Y-%m-%d) username,将过期日设为昨天,下次登录即提示 “Your account has expired” 并拒绝访问
  • 批量挂起一批账号:例如所有 90 天未登录用户,先用 lastlog -b 90 | awk '$3 != "**Never logged in**" {print $1}' | xargs -I{} sudo chage -E $(date -d "yesterday" +%Y-%m-%d) {}
  • 查看是否生效:执行 chage -l username,确认输出中 Account expires 字段为具体日期,且该日期已早于当前时间(2026-06-16)

配合 usermod 彻底阻断交互式入口

chage 过期可防登录,但若用户仍保有有效 shell(如 /bin/bash),部分非标准路径(如 cron、systemd 用户服务)可能绕过检查。建议叠加以下任一操作:

  • sudo usermod -s /sbin/nologin username —— 替换登录 shell,阻止所有交互式会话(包括 su 切换)
  • sudo usermod -L username —— 在 /etc/shadow 密码字段前加 !,禁用密码认证(注意:不影响 SSH 密钥登录)
  • 两者组合使用更稳妥:sudo chage -E 0 username && sudo usermod -s /sbin/nologin username

验证挂起效果与常见误区

挂起后用户行为表现及排查要点:

  • 尝试 SSH 密码登录 → 显示 Your account has expired 并断开连接
  • 尝试 SSH 密钥登录 → 若未改 shell,仍可能成功;必须配合 usermod -s /sbin/nologin 或清空其 ~/.ssh/authorized_keys
  • 用 root 执行 su - username → 提示 Authentication failure 或直接拒绝,不报错也不进 shell
  • 误以为 passwd -l 等同于挂起 → 实际只锁密码字段,chage -E 才是生命周期层面的账户停用

Windows 域环境等效做法

域控本身不提供“挂起”动作,但可通过属性+策略模拟:

  • 用 PowerShell 设置账户过期:Set-ADUser -Identity username -AccountExpirationDate "2026-06-15"(早于今日即生效)
  • 配合组策略禁用密码策略中的“用户不能更改密码”和“密码永不过期”,确保 chage 类逻辑能被 AD 正确识别
  • 登录时提示 “The referenced account is currently locked out…” 或 “Your password has expired” 视策略而定,本质等同挂起

热门栏目