在Linux系統管理中,有時候需要設定賬号密碼複雜度(長度)、密碼過期政策等,這個主要是由/etc/login.defs參數檔案中的一些參數控制的的。它主要用于使用者賬号限制,裡面的參數主要有下面一些:
/etc/login.defs:
修改了 /etc/login.defs下參數時,會立即生效,但是它隻對修改後建立的使用者生效。例如修改了PASS_MAX_DAYS參數等後,我們建立一個使用者test。
<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160620145138131-771836345.png"></a>
<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160620145139787-1078800046.png"></a>
因為CREATE_HOME為yes,是以建立使用者test後,就會預設在/home目錄下建立test目錄,這個可以在添加使用者的規則檔案/etc/default/useradd裡面檢視或修改
如果此時,假如使用者test有特殊需求,要求這個賬号的密碼永不過期,此時就可以使用chage指令來處理(關于chage指令,此處不做展開)
<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160620145141084-425091089.png"></a>
如上所示/etc/login.defs隻是控制了賬号的最小長度以及控制密碼的有效期等,那麼Linux是如何實作對使用者的密碼的複雜度的檢查的呢?其實系統對密碼的控制是有兩部分組成:
1 cracklib
2 /etc/login.defs
pam_cracklib.so 才是控制密碼複雜度的關鍵檔案/lib/security/pam_cracklib.so, Redhat公司專門開發了cracklib這個安裝包來判斷密碼的複雜度。如果你想檢視pam_cracklib的一些參數,那麼就使用下面指令
[root@DB-Server security]# man pam_cracklib
例如在/etc/pam.d/system-auth 在password使用pam_cracklib.so設定的最後附加dcredit=3 ucredit=2
此時如果你建立使用者的密碼不符合密碼複雜度,就會出現BAD PASSWORD: it is based on a dictionary word提示。
參考資料:
<a href="http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html">http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html</a>
<a href="http://blog.csdn.net/lhfeng/article/details/6033598">http://blog.csdn.net/lhfeng/article/details/6033598</a>