商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > CentOS 7怎么设置密码最小长度

CentOS 7怎么设置密码最小长度

  发布于2026-08-22 阅读(0)

扫一扫,手机访问

在CentOS 7中,若要设置密码最小长度,需同时配置/etc/login.defs中的PASS_MIN_LEN参数以及/etc/pam.d/system-auth中的pam_pwquality.so模块的minlen参数。需要注意的是,前者仅对useradd创建的新用户初始密码起作用,而后者才是真正对所有passwd操作进行校验的关键,两者缺一不可。

CentOS 7怎么设置密码最小长度

CentOS 7 设置密码最小长度,不能只改一个地方 —— PASS_MIN_LEN/etc/login.defs 里只影响新建用户;真正拦住密码设置的,是 PAM 模块里的 pam_pwquality.so 配置。漏掉任意一处,都可能让弱密码通过。

修改 /etc/login.defs 中的 PASS_MIN_LEN

这个值仅在用 useradd 创建新用户时生效,对已有用户或 passwd 修改密码无约束力。

  • 编辑文件:sudo vi /etc/login.defs
  • 找到或添加这一行:PASS_MIN_LEN 8(不要写成 PASS_MIN_LENGTH,后者无效)
  • 注意:该参数最大支持 999,但实际生效依赖 PAM,单独设了不等于生效

配置 pam_pwquality.so 强制执行最小长度

这是真正起效的核心环节。CentOS 7 默认使用 pam_pwquality.so(不是旧版 pam_cracklib.so),必须在 /etc/pam.d/system-auth 中正确配置。

  • 打开文件:sudo vi /etc/pam.d/system-auth
  • 找到以 password requisite pam_pwquality.so 开头的行(通常在第 20 行左右)
  • 确保它包含 minlen=8,例如:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
  • 如果该行被注释(# 开头)或缺失,需取消注释或新增;重复出现的行会导致策略叠加失败
  • 改完后立即生效,无需重启服务

验证是否生效的几个关键点

光改配置不验证,等于没改。常见“以为生效了但其实没拦住”的情况,往往出在这里:

  • 测试命令:passwd 当前用户,尝试设 7 位纯数字密码 —— 应报错:password not accepted 或类似提示
  • 检查实际加载的参数:grep -v "^#" /etc/security/pwquality.conf | grep minlen,确认 minlen = 8 存在(authconfig 命令会写入此文件,但手动编辑 system-auth 优先级更高)
  • 注意 root 用户默认不受限:若要强制 root 也遵守,必须加 enforce_for_root 参数,否则 passwd root 可绕过
  • chage -l username 查看的是密码有效期,跟长度无关,别混淆

最容易被忽略的是:/etc/login.defs 的 PASS_MIN_LEN 和 PAM 的 minlen 是两套机制,前者只管新建用户初始密码生成逻辑,后者才真正校验每次 passwd 输入。生产环境务必两者都设,且以 PAM 配置为准。

本文转载于:https://www.php.cn/faq/3029607.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注