linux中密码策略通过/etc/login.defs设全局默认值(仅影响新建用户)和chage命令为单个用户精细配置,配合pam模块启用复杂度与历史记录,无需重启服务即生效。

Linux系统中可通过/etc/login.defs全局配置和chage命令为单个用户精细控制密码有效期与强制更换策略,无需重启服务即可生效。
一、全局默认策略:修改 /etc/login.defs
该文件定义新创建用户的默认密码策略,对已有用户无效。关键参数如下:
-
PASS_MAX_DAYS:密码最长使用天数(如
90表示90天后必须更换) -
PASS_MIN_DAYS:密码最短使用天数(如
7表示7天内不可重复修改) -
PASS_WARN_AGE:密码过期前多少天开始警告用户(如
7表示提前7天提示)
修改后,新建用户自动继承该策略;已有用户需用chage单独设置。
二、为指定用户设置密码有效期
使用chage命令可精确控制任意用户密码生命周期,常用操作:
- 查看当前设置:
chage -l username - 设置密码90天后过期:
chage -M 90 username - 设置密码修改最小间隔为5天:
chage -m 5 username - 设置过期前10天开始提醒:
chage -W 10 username - 设定账号绝对过期日期(如2025-12-31):
chage -E "2025-12-31" username - 强制用户首次登录时修改密码:
chage -d 0 username(将上次修改时间设为0,触发强制更新)
三、启用密码复杂度与历史记录(增强安全性)
仅设有效期不够,建议配合PAM模块强化策略:
- 编辑
/etc/pam.d/common-password(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL/CentOS),添加或确认以下行: -
password requisite pam_pwquality.so retry=3 minlen=10 difok=3(要求至少10位、3类字符、与旧密码至少3位不同) -
password [success=1 default=ignore] pam_pwhistory.so use_authtok remember=5(记住最近5次密码,禁止重复使用)
保存后立即生效,下次修改密码时即受约束。
四、验证与日常维护
策略上线后应定期检查执行效果:
- 批量检查用户密码状态:
for u in $(cut -d: -f1 /etc/passwd); do echo "$u:"; chage -l "$u" 2>/dev/null | grep -E "(Password|Account)"; done - 用户登录时若密码过期,系统会提示
You are required to change your password immediately!并进入强制修改流程 - 管理员可随时重置用户密码并再次触发强制更新:
echo "newpass" | passwd --stdin username(RHEL)或passwd username后手动运行chage -d 0 username
策略合理搭配可显著提升账户安全水位,同时避免因设置不当导致用户无法登录。










