linux用户密码策略通过pam实现,核心配置文件为/etc/pam.d/common-password或system-auth;启用pam_pwquality.so设置最小长度、字符多样性、禁止重复与用户名等;用pam_pwhistory.so限制24次旧密码重用;通过pam_unix.so配合chage管理有效期;须备份配置、测试验证并避免锁死系统。

Linux系统中用户密码策略主要通过PAM(Pluggable Authentication Modules)模块实现,核心配置文件是 /etc/pam.d/common-password(Debian/Ubuntu系)或 /etc/pam.d/system-auth(RHEL/CentOS/Fedora系)。修改前务必备份原文件,并确保至少有一个可用的root或sudo权限账户在线,避免锁死系统。
启用密码复杂度检查(pam_pwquality.so)
该模块替代老旧的 pam_cracklib.so,提供更灵活的强度控制。在对应PAM配置文件中添加或修改如下行(通常放在 password [success=1 default=ignore] 后):
password requisite pam_pwquality.so retry=3 minlen=12 difok=4 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 maxrepeat=2 reject_username enforce_for_root
参数说明:minlen=12 要求最小长度12位;difok=4 表示新密码至少4个字符不能与旧密码相同;dcredit/ucredit/lcredit/ocredit 分别限制数字、大写、小写、特殊字符的最少数量(负值表示“至少”);maxrepeat=2 禁止连续3个相同字符;reject_username 禁止密码包含用户名;enforce_for_root 对root用户同样生效。
限制密码重用历史(pam_pwhistory.so)
防止用户循环使用旧密码。需配合 /etc/security/opasswd 文件(首次启用时自动创建):
- 在PAM配置中添加:
password [success=1 default=ignore] pam_pwhistory.so remember=24 use_authtok
remember=24 表示保存最近24次旧密码哈希,新密码不得与其中任一重复;use_authtok 确保仅在密码修改时触发(不干扰登录认证)。注意:该模块必须放在 pam_pwquality.so 之后,否则可能跳过强度检查。
ShopNC单用户商城系统是面向独立卖家而开发的B2C商城系统。系统运行稳定高效,功能强大,突出个性化配置要求,可以根据不同的营销策略,从模板、栏目、功能上进行调整,满足各类客户的需要。系统部署快捷方便,减轻了使用者的技术负担,简单的维护操作免去了用户的后顾之忧。本系统前台开放源码,后台加密的。产品特点快速安装,维护简单 分布提示安装,即使不熟悉技术的用户也可以自主安装系统。后台融合数据库等功能管
设置密码有效期与提醒(pam_unix.so)
控制密码生命周期,通过 pam_unix.so 的 shadow 选项启用影子密码支持后,再配置 /etc/shadow 字段或直接在PAM中约束:
- 在
password [success=1 default=ignore]行添加:pam_unix.so sha512 shadow nullok obscure minlen=12 - 实际有效期由
chage命令管理,例如:chage -M 90 -W 7 username设置密码90天过期、提前7天提醒
注意:pam_unix.so 中的 minlen 是兼容性兜底参数,优先级低于 pam_pwquality.so;sha512 指定哈希算法,比默认的MD5更安全。
禁止空密码与即时生效验证
确保基础安全底线:
- 检查
/etc/pam.d/common-auth或system-auth中是否存在auth required pam_deny.so类错误配置; - 确认
/etc/pam.d/common-password中无permissive标志(会导致策略仅记录不拒绝); - 测试修改:用普通用户执行
passwd,输入弱密码(如"123456")应明确报错,而非静默接受; - 若策略未生效,检查是否被其他
password [default=bad]规则覆盖,或SELinux/AppArmor拦截了PAM调用。
不复杂但容易忽略。









