如何在更改密码时更改/禁用密码复杂性测试?

如何在更改密码时更改/禁用密码复杂性测试?

我知道这是一个“坏”主意,我知道它不安全,我知道。我在网上搜索答案,看到的都是抱怨它不好。但我喜欢使用 Linux,因为它让我可以制作我想要和喜欢使用的系统。介绍结束。

我尝试更改密码:

user:~% passwd
Changing password for user.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
You must choose a longer password

如果我尝试,sudo passwd user那么我可以设置任何我想要的密码,这样我就不需要在我的系统上对 passwd 进行密码复杂性检查。

经过谷歌搜索,我发现应该有聚丙烯酰胺模块 pam_cracklib 测试密码的复杂性,并且可以配置。但我的 PAM 密码设置不包括 pam_cracklib:

% cat /etc/pam.d/passwd | grep '^[^#]'
@include common-password
% cat /etc/pam.d/common-password | grep '^[^#]'
password    [success=1 default=ignore]  pam_unix.so obscure sha512
password    requisite           pam_deny.so
password    required            pam_permit.so
password    optional    pam_gnome_keyring.so 

我猜 pam_unix 做了这个测试...哎呀...伙计们,在我写完这句话的那一刻,我得到了一个启示,并man pam_unix在终端中输入了我发现的 pam_unix 模块所需的选项。

我刚刚删除了选项 obscure 并添加了 minlen=1,现在我很高兴。所以现在我有了以下行/etc/pam.d/common-password

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

我可以设置任何密码。

我决定保留这个帖子,以便那些可能也需要这个解决方案的人能够看到。

答案1

好的,我会回答我的问题:)

我发现该pam_unix模块执行密码复杂性检查,并且可以进行配置。

man pam_unix

   minlen=n
       Set a minimum password length of n characters. The default value is
       6. The maximum for DES crypt-based passwords is 8 characters.

   obscure
       Enable some extra checks on password strength. These checks are
       based on the "obscure" checks in the original shadow package. The
       behavior is similar to the pam_cracklib module, but for
       non-dictionary-based checks.

解决方案:
pam_unix将文件中模块 中的行更改/etc/pam.d/common-password为:

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

它允许您设置最小长度为 1 的任意密码。

答案2

如果是一次性的,使用 passwd 命令作为 root 可以为用户设置一个简单的密码,只需输入所需的值,然后在提示符下输入密码两次。

john@workpad:~$ sudo bash
[sudo] password for john: 
root@workpad:/home/john# passwd john
New password: 
Retype new password: 
passwd: password updated successfully
root@workpad:/home/john# exit
exit
john@workpad:~$ 

答案3

打开common-password配置文件进行编辑:

sudo -H gedit /etc/pam.d/common-password

#通过在前面添加字符来注释此行,如下所示:

#password   [success=2 default=ignore]  pam_unix.so obscure use_authtok try_first_pass sha512

还请注释掉此行,否则密码设置将要求您输入大小写字母的混合:

#password   requisite           pam_passwdqc.so enforce=everyone max=18 min=disabled,8,8,1,1 retry=2 similar=deny

现在只需将此行添加到同一个文件中:

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

这应该可以……

答案4

我在一台安装了防操纵 PAM 的奇怪且非常严格的机器上尝试了所有方法。

在这台机器上,上述技巧都无法将本地帐户(没有 Windows 域)的密码更改为某个新值。即使使用 sudo passwd,PAM 规则也始终生效

/etc/pam.d/common-password 上的更改导致 passwd 因“操作错误”而完全失败。

我的解决方案是在另一台我也具有 root 访问权限的机器上设置密码,然后使用 sudo vi /etc/shadow 将 /etc/shadow 中的哈希值从该机器复制/粘贴到另一台机器。严格的 PAM 不会阻止这一点,而且它可以正常工作。(是的,我知道它还会复制盐)

相关内容