我安装了一个基于 Linux 的系统,密码为空。我想将密码更改为简单的密码,但是使用passwd
并将密码设置为单个符号之类的密码会出现“密码是回文”的错误。
如何禁用密码复杂性检查?
答案1
我发现我的系统(就像大多数现代 Linux 一样)使用PAM
(可插拔身份验证模块)和pam_cracklib
其中的模块。pam_cracklib
无论参数如何,都强制执行 6 个符号的最小长度,因此解决方案是将其关闭。
我读过的一个链接讨论了编辑password-ac
和system-ac
文件/etc/pam.d
,两个文件的内容相同,并且没有解释它们各自的作用。
经过研究PAM
文档(Linux-PAM 系统管理员指南 | linux-pam.org),我了解到PAM
LINUX 服务的配置位于该/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
问题解决了