0

0

Linux系统用户密码复杂度策略设置及PAM模块配置入门教程

冰川箭仙

冰川箭仙

发布时间:2026-03-19 02:19:10

|

283人浏览过

|

来源于php中文网

原创

Linux系统通过PAM模块(如pam_pwquality.so或pam_cracklib.so)配置密码复杂度,需修改/etc/pam.d/common-password或system-auth文件,设置minlen、difok、ucredit等参数,并配合pam_pwhistory.so实现历史密码限制及chage命令配置过期策略。

linux系统用户密码复杂度策略设置及pam模块配置入门教程

Linux系统中设置用户密码复杂度策略,主要通过PAM(Pluggable Authentication Modules)模块实现,核心是配置 /etc/pam.d/common-password(Debian/Ubuntu)或 /etc/pam.d/system-auth(RHEL/CentOS)文件,配合 pam_pwquality.so(新版)或 pam_cracklib.so(旧版)模块生效。

确认系统使用的PAM密码模块

不同发行版默认启用的密码强度模块略有差异:

  • RHEL 8+/CentOS 8+、Ubuntu 20.04+ 默认使用 pam_pwquality.so,功能更完善,支持 Unicode、类字符统计、相似度检查等
  • 较老系统(如 CentOS 7、Ubuntu 16.04)可能仍用 pam_cracklib.so,语法相近但选项略少
  • 执行 grep -v '^#' /etc/pam.d/common-password | grep pwqualitygrep cracklib 可快速确认当前启用的模块

基础密码复杂度参数配置(以 pam_pwquality.so 为例)

在对应 PAM 配置文件中添加或修改这一行(通常位于 password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 之前):

password requisite pam_pwquality.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=3 reject_username enforce_for_root

各关键参数含义:

琅琅配音
琅琅配音

全能AI配音神器

下载
  • retry=3:密码输入错误最多重试3次才拒绝新密码
  • minlen=10:最小长度10位(注意:实际最小长度 = minlen + 类别数补偿,见下条说明)
  • difok=3:新密码至少有3个字符与旧密码不同
  • ucredit=-1:必须含至少1个大写字母(负值表示“至少”,正值表示“最多”)
  • lcredit=-1:必须含至少1个小写字母
  • dcredit=-1:必须含至少1个数字
  • ocredit=-1:必须含至少1个特殊符号
  • maxrepeat=3:禁止连续重复同一字符超过3次(如 aaabbb 允许,aaaa 拒绝)
  • reject_username:禁止密码包含用户名(大小写不敏感)
  • enforce_for_root:对 root 用户同样强制执行该策略

⚠️ 注意:minlen 不是绝对最小长度。若某类字符未满足(如缺数字),模块会自动加长最低要求——例如设 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1,但用户只输大小写字母,则实际要求至少13位(10+3类未达标)。建议搭配 minclass=4 更直观控制类别数。

验证与调试密码策略是否生效

配置保存后无需重启服务,下次改密即生效。推荐按以下步骤验证:

  • 切换到普通用户,运行 passwd 尝试设置弱密码(如 123456passwordaaaaaa123),观察提示信息是否符合预期
  • 查看日志辅助排查:sudo tail -f /var/log/auth.log(Debian/Ubuntu)或 sudo journalctl -u systemd-logind -f(RHEL 8+)
  • 临时启用调试模式:在 PAM 行末尾加 debug,例如 pam_pwquality.so debug minlen=10,日志中会输出详细校验过程
  • pwmake 128(来自 libpwquality-utils 包)生成符合当前策略的随机密码,反向验证策略强度

补充建议与常见注意事项

仅靠 PAM 设置不能覆盖所有安全场景,需配合其他机制:

  • 密码历史限制:在 pam_pwhistory.so 行中添加 remember=5,防止用户循环使用最近5次密码
  • 密码过期策略:用 chage -M 90 -m 7 -W 7 username 设置最长90天、最短7天、提前7天提醒
  • 避免配置冲突:确保同一类型(password)的 pam_pwquality.sopam_cracklib.so 只出现一次,重复会导致策略叠加异常
  • 容器或云镜像环境:若使用 cloud-init 或 Ansible 自动化部署,需将 PAM 配置纳入初始化流程,而非仅手动修改
  • SSH 密钥登录用户不受密码策略影响,但建议仍为 root 或 sudo 用户设置强密码作为兜底

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1584

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

717

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

801

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

588

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

314

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

400

2023.07.25

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

7

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.9万人学习

Git 教程
Git 教程

共21课时 | 4.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号