我知道这是一个“坏”主意,我知道它不安全,我知道。我在网上搜索答案,看到的都是抱怨它不好。但我喜欢使用 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 不会阻止这一点,而且它可以正常工作。(是的,我知道它还会复制盐)