Linux用户锁定与密码策略需分场景配置:临时冻结用passwd -l或usermod -L;失败自动锁定依赖pam_faillock.so三行规则(60秒内5次失败即锁,15分钟自动解锁);密码复杂度由pam_pwquality.so控制(最小10位、含四类字符等);生命周期用chage精细化管理(如90天过期、首登强制改密)。

Linux用户锁定和密码策略不是“设个参数就完事”,而是要分清场景、选对工具、配好组合。锁账户有临时冻结、永久禁用、失败自动锁三种路径;设密码策略则要兼顾复杂度、有效期、历史记录,且新旧用户生效逻辑不同。
临时锁定登录(不改密码,仅阻断认证)
适用于员工休假、审计隔离或怀疑账户异常等短期场景,操作快、可逆性强:
- passwd -l username:在 /etc/shadow 密码字段前加 !,使密码失效,用户无法通过密码登录
- usermod -L username:效果同上,本质也是修改 shadow 中密码字段(加 !!)
- 验证是否锁定:passwd -S username,输出中显示 LK(Locked)即生效
- 解锁只需 passwd -u username 或 usermod -U username
按失败次数自动锁定(防暴力破解)
这是生产环境必备的防护机制,依赖 PAM 的 pam_faillock.so 模块,需严格配置三行规则:
- 编辑对应 PAM 文件:/etc/pam.d/common-auth(Debian/Ubuntu)或 /etc/pam.d/system-auth(RHEL/CentOS)
- 在 auth 段开头插入(顺序不可调):
auth [default=ignore] pam_faillock.so preauth silent deny=5 unlock_time=900 fail_interval=60
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900 fail_interval=60
auth [default=ok] pam_faillock.so authsucc - 含义:60 秒内输错 5 次,账户即锁;15 分钟后自动解锁(unlock_time=900)
- 查状态:faillock --user username;手动解锁:faillock --user username --reset
强制密码复杂度与历史控制
防止弱口令的核心是 pam_pwquality.so,它在用户改密时实时校验,不追溯已有密码:
- 编辑 /etc/pam.d/common-password(Debian)或 /etc/pam.d/system-auth(RHEL),在 password 行前添加:
password requisite pam_pwquality.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=3 - 关键参数:10位最小长度;新旧密码至少3字符不同;必须含大小写字母、数字、特殊字符各1个;禁止4连相同字符
- 历史密码限制写在 /etc/security/pwquality.conf:
remember = 5 —— 用户不能重复使用最近5次用过的密码
统一管理密码生命周期与账户启用期
chage 直接操作 /etc/shadow,适合精细化管控每个账号:
- 设密码90天过期、提前7天提醒、过期后3天宽限:chage -M 90 -W 7 -I 3 username
- 强制用户下次登录必须改密(如重置后):chage -d 0 username
- 彻底停用账户(如离职):chage -E "2025-01-01" username(设为过去日期)
- 查看当前策略:chage -l username,重点关注 Password expires 和 Account expires 字段


















