Linux密碼長度限制

在linux中我們可以設置密碼最短為多少,只需要修改/etc/login.defs文件中的PASS_MIN_LEN 參數就可以了。
但是最近我發現了另外一個問題,我明明設置了10幾位的密碼,但是最終系統登錄的時候只是查看前面的8位。查找了半天原因,原來是/etc/pam.d/system-auth的問題。
在老的版本默認password居然是使用shadow進行驗證的。而它所使用的算法是DES加密算法,這是一種64位加密算法,只能識別到前面八位。修改方法就是把system-auth修改成如下形式:

 #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session \[success=1 default=ignore\] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so 

這個修改完成后理論上是立刻生效的。但是我在實際使用過程中發現還是要把所有密碼重新設置一遍才會生效。
其實也可以通過修改/etc/pam.d/login來解決的,但是很多pam其實最終都是調用的system-auth的,所以修改system-auth還是一個比較好的方式。