更改密碼時如何更改/停用密碼複雜性測試?

更改密碼時如何更改/停用密碼複雜性測試?

我知道這是一個“壞”主意,我知道它不安全,我知道。我在網路上搜尋答案,但我看到的只是抱怨這不好。但我喜歡使用 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 模組所需的選項。

我剛剛刪除了晦澀的選項並添加了 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

如果是一次性的,以 root 身分使用 passwd 命令,您可以透過簡單地輸入所需的值來為使用者設定一個簡單的密碼,然後在提示時輸入密碼兩次。

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 將雜湊值從該電腦複製/貼上到另一台電腦。嚴格的 PAM 並沒有阻止這一點,而且它確實有效。 (是的,我知道它也會複製鹽)

相關內容