Ubuntu/Debian 中应通过 pam-auth-update 工具而非手动编辑 /etc/pam.d/common-password 配置密码策略,它自动协调模块顺序与依赖;需启用 pwquality 和 password-history 策略包,并通过 /usr/share/pam-configs/ 下配置文件定义参数。

Ubuntu/Debian 中不推荐直接手动编辑 /etc/pam.d/common-password 来配置密码策略,而是应通过 pam-auth-update 工具统一管理——它能自动协调多个 PAM 模块的启用状态、加载顺序和依赖关系,避免冲突或静默失效。
确认系统支持 pam-auth-update 并启用基础模块
该工具是 libpam-runtime 包的一部分,Ubuntu 16.04+ 和 Debian 9+ 默认已安装。运行以下命令检查是否就绪:
-
查看当前启用的 PAM 配置项:
sudo pam-auth-update --package(显示已注册的策略包) -
列出所有可选策略:
ls /usr/share/pam-configs/,重点关注:
–pwquality(替代旧版 cracklib,提供 minlen/difok/ucredit 等细粒度控制)
–password-history(封装pam_pwhistory.so功能)
–unix(基础密码哈希与验证)
启用并配置 pwquality 密码强度策略
pam-auth-update 不直接写参数,而是通过配置文件定义规则。需先编辑策略模板:
- 创建或修改
/usr/share/pam-configs/pwquality,内容示例:
Name: Password quality limits Default: yes Priority: 256 Conflicts: cracklib Auth-Type: password Auth-Filename: common-password # 这行确保只在 password 段生效,且优先级高于 unix Module-Type: password Control: [success=1 default=ignore] Module: pam_pwquality.so Args: retry=3 minlen=12 difok=5 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 maxrepeat=3 reject_username enforce_for_root
- 保存后执行:
sudo pam-auth-update→ 用空格勾选 Password quality limits → 回车确认 - 工具会自动更新
/etc/pam.d/common-password,插入对应行,并维护注释标记# [PAM: pwquality]
启用密码历史记录(remember=N)
同理,确保 password-history 策略启用:
- 检查是否存在
/usr/share/pam-configs/password-history;若无,可手动创建(内容需含Module: pam_pwhistory.so和Args: remember=24 use_authtok) - 再次运行
sudo pam-auth-update,勾选 Password history - 手动创建历史存储文件:
sudo touch /etc/security/opasswd && sudo chmod 600 /etc/security/opasswd
验证与注意事项
配置生效后,无需重启服务。测试方式:
- 切换普通用户,执行
passwd,尝试设短密码、含用户名、无数字等,观察是否被拒 - 连续改密三次后,再试回第一个密码,应提示 The password has been used before
- 检查实际写入的 PAM 文件:
grep -A1 'pwquality\|pwhistory' /etc/pam.d/common-password
注意:pam-auth-update 会跳过已手动修改且无标准注释标记的行,因此切勿在 common-password 中直接写死规则;所有自定义策略都应走 /usr/share/pam-configs/ 路径注册。


















