Linux系统强制密码含大小写字母和数字需配置pam_pwquality.so模块,在/etc/pam.d/common-password或system-auth中添加password requisite pam_pwquality.so retry=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1,并设置/etc/security/pwquality.conf对应参数。

Linux 系统中要让密码必须包含大小写字母与数字,关键在于启用并正确配置 pam_pwquality.so 模块(现代发行版如 RHEL 8+/Ubuntu 20.04+ 默认使用),而非依赖过时的 pam_cracklib.so。/etc/login.defs 中的 PASS_MIN_LEN 不起作用,真正生效的是 PAM 层的参数。
修改 /etc/pam.d/common-password 或 system-auth
这是最直接有效的入口。用 root 权限编辑对应文件:
- Debian/Ubuntu 系统通常改 /etc/pam.d/common-password
- RHEL/CentOS 8+ 推荐改 /etc/pam.d/system-auth 或通过
authselect工具管理 - 找到已有
password requisite pam_pwquality.so的行;若无,新增一行 - 确保该行包含必要参数,例如:
password requisite pam_pwquality.so retry=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1
确认 /etc/security/pwquality.conf 全局规则
该文件集中定义默认策略,可避免在多个 PAM 文件中重复写参数:
- 打开 /etc/security/pwquality.conf,取消注释并设置以下项:
-
minlen = 10(最小长度,建议 ≥10) -
ucredit = -1(至少 1 个大写字母) -
lcredit = -1(至少 1 个小写字母) -
dcredit = -1(至少 1 个数字) -
ocredit = 0(特殊字符不强制,若需才设为 -1)
验证与测试方法
配置后必须验证是否真正生效:
- 切换普通用户执行
passwd,尝试设弱密码如abc123或ABCdef,应被拒绝并提示原因 - 用
pwscore工具评分:echo "MyPass123" | pwscore,分值低于 50 通常不达标 - 检查日志:
journalctl -t pam_pwquality | tail -10,可看到拒绝详情 - 注意:不要同时启用
pam_pwquality.so和pam_cracklib.so同一行,会导致策略静默失效
不复杂但容易忽略。只要模块加载正确、参数用负值表示“必须存在”,且没有冲突配置,策略就会稳定生效。


















