/etc/login.defs是linux用户账户生命周期管理的“默认规则总开关”,仅影响新用户,为useradd、passwd等命令提供初始策略;关键参数包括pass_max_days 90、pass_min_days 7、pass_warn_age 14、pass_min_len 10、uid_min 1000、gid_min 1000、create_home yes、encrypt_method sha512、umask 077等。

直接查看密码复杂度策略是否合规,不能靠单条命令生成“报告”,而是通过组合检查关键配置项,比对等保或安全基线要求得出结论。核心是确认系统是否启用了有效策略、参数是否达标、是否对所有用户生效。
查 /etc/login.defs 中的全局密码生命周期策略
该文件定义新建用户的默认口令有效期规则:
-
PASS_MAX_DAYS:应 ≤ 90(如
90) -
PASS_MIN_DAYS:建议 ≥ 1(防频繁改密),等保未强制但推荐设为
1或7 -
PASS_WARN_AGE:应 ≥ 7(提前预警天数),常见设为
7
执行:grep -E "PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE" /etc/login.defs
查 PAM 密码强度模块配置(主路径)
实际生效的复杂度策略通常由 PAM 模块控制,优先检查以下两个文件(RHEL/CentOS 7+ 常用 pam_pwquality.so):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
/etc/pam.d/system-auth(影响本地登录、su、sudo 等) -
/etc/pam.d/password-auth(常被 sshd、login 等调用)
执行:grep -E "pam_pwquality\.so|pam_cracklib\.so" /etc/pam.d/system-auth /etc/pam.d/password-auth
若输出含类似行:password requisite pam_pwquality.so try_first_pass retry=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minlen=8
说明已启用且参数基本合规(四类字符各至少1个 + 长度≥8)。
查 /etc/security/pwquality.conf(RHEL 7+ 推荐方式)
这是 pam_pwquality 的集中配置文件,更直观:
- minlen = 8(最小长度)
- minclass = 4(必须含大小写字母、数字、特殊字符四类)
-
maxrepeat = 2(禁止连续3个相同字符,如
aaa) - gecoscheck = 1(禁止密码包含用户名或真实姓名)
执行:cat /etc/security/pwquality.conf 2>/dev/null | grep -E "^(minlen|minclass|maxrepeat|gecoscheck)"
验证策略是否实际生效
光看配置不够,需确认是否对用户起作用:
- 用
chage -l root查看 root 用户当前密码过期设置(反映login.defs是否应用) - 新建测试用户:
useradd testuser && passwd testuser,尝试设弱密码(如123456、abc),看是否被拒绝 - 检查
/etc/shadow中用户密码字段是否非空:awk -F: '$2==""{print $1}' /etc/shadow,结果为空才表示无空口令










