Linux中强制密码含大小写字母和数字需配置PAM模块pam_pwquality.so,在/etc/pam.d/system-auth或common-password中添加password requisite pam_pwquality.so minlen=10 ucredit=-1 lcredit=-1 dcredit=-1。

在 Linux 中强制密码包含大小写字母和数字,核心是通过 PAM(Pluggable Authentication Modules)模块实现,而不是靠 /etc/login.defs 里的 PASS_MIN_LEN 这类参数——它仅作参考,实际不生效。
确认使用哪个 PAM 模块
现代系统(RHEL 8+/CentOS 8+/Ubuntu 20.04+)默认用 pam_pwquality.so;老系统(如 CentOS 6/7)可能仍用 pam_cracklib.so。两者不能混用,否则策略可能静默失效。
- 检查是否已安装:
ls /lib64/security/pam_pwquality.so(RHEL/CentOS)或ls /lib/x86_64-linux-gnu/security/pam_pwquality.so(Ubuntu/Debian) - 未安装则补装:RHEL/CentOS 执行
sudo yum install libpwquality;Ubuntu/Debian 执行sudo apt install libpam-pwquality
配置密码必须含大小写+数字
编辑对应 PAM 配置文件:
- RHEL/CentOS/Fedora:修改
/etc/pam.d/system-auth或/etc/pam.d/password-auth - Ubuntu/Debian:修改
/etc/pam.d/common-password
在 password requisite 段添加或修改这一行(确保只有一条 pam_pwquality.so 或 pam_cracklib.so):
含义:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
minlen=10:密码至少 10 位 -
ucredit=-1:必须含至少 1 个大写字母 -
lcredit=-1:必须含至少 1 个小写字母 -
dcredit=-1:必须含至少 1 个数字
注意:不加 ocredit=-1 就不要求特殊字符,符合“只要求大小写+数字”的需求。
可选但推荐的增强项
让策略更实用、防绕过:
-
difok=4:新密码至少 4 个字符与旧密码不同,防简单改写(如Password1→Password2) -
maxrepeat=3:禁止连续 4 个相同字符(如aaaa) -
reject_username:密码不能包含用户名或其反转形式 -
retry=3:输错 3 次才拒绝,提升用户体验
完整示例:
password requisite pam_pwquality.so minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 difok=4 maxrepeat=3 reject_username retry=3
验证与生效
改完保存,无需重启服务。普通用户下次执行 passwd 时即受约束:
- 输入纯数字或纯小写密码,会提示 “BAD PASSWORD: is too simple”
- 输入
Abc123(6 位)会被拒,因长度不足 10 - 输入
MyPass1234(含大小写+数字,10 位)可通过
建议先用测试账户验证,避免锁住自己。

















