禁用密码复杂性检查 (PAM)

禁用密码复杂性检查 (PAM)

我安装了一个基于 Linux 的系统,密码为空。我想将密码更改为简单的密码,但是使用passwd并将密码设置为单个符号之类的密码会出现“密码是回文”的错误。

如何禁用密码复杂性检查?

答案1

我发现我的系统(就像大多数现代 Linux 一样)使用PAM(可插拔身份验证模块)和pam_cracklib其中的模块。pam_cracklib无论参数如何,都强制执行 6 个符号的最小长度,因此解决方案是将其关闭。

我读过的一个链接讨论了编辑password-acsystem-ac文件/etc/pam.d,两个文件的内容相同,并且没有解释它们各自的作用。

经过研究PAM文档(Linux-PAM 系统管理员指南 | linux-pam.org),我了解到PAMLINUX 服务的配置位于该/etc/pam.d目录中的单独文件中。我看到passwd文件,它只找到system-ac提到的文件(通过substack关键字添加),所以在我的系统上我只需要编辑system-ac.

制作pam_cracklib optional没有任何区别(我猜这是因为pam_cracklib没有将输入和拒绝的密码传递给堆栈中的下一个模块 - pam_unix)并且注释行会pam_cracklib导致passwd运行期间出现错误。我注意到,普通的下一行pam_unix有选项use_authtok(文档:强制模块将新密码设置为先前堆叠的模块提供的密码)。在我删除该选项并注释行后,pam_cracklib我现在可以使用 来设置短密码passwd

答案2

有几个 PAM 模块可以进行密码强度检查。至少有pam_cracklib许多发行版都附带了pam_passwdqc来自开放墙(打包在例如 Debian 中)。此外,常见的基于文件的身份验证模块的某些版本pam_unix具有与密码强度相关的选项,例如minlen最小密码长度,并且obscure这会进行一些测试以将新密码与旧密码进行比较。 (该名称来自“原始影子包中的“模糊”检查”。)

您需要检查 PAM 配置中是否有任何此类模块,然后禁用或卸载它们。查找以与password密码更改相关的模块的关键字开头的行。配置的确切结构可能取决于分布。

此外,如果您将用户存储在 LDAP 或其他此类基于网络的系统上,则服务器本身也可能要求用户密码。在这种情况下,客户端上的 PAM 配置将不相关。例如 OpenLDAP 有一个密码策略覆盖模块

答案3

改变/etc/pam.d/common-password这一行:

password requisite pam_pwquality.so retry=3

password requisite pam_pwquality.so dictcheck=0 retry=3 

意思是设置dictcheck=0,它将忽略字典检查

答案4

sudo apt autoremove libpam-sss

问题解决了

相关内容