/etc/login.defs 文件主要是控制密碼有效期的文件,密碼的複雜度的判斷是經過pam模塊控制來實現的,具體的模塊是pam_cracklib 測試
# vi /etc/login.defs ui
PASS_MAX_DAYS 99999 #密碼最大有效期時間,99999基本上是永久有效,通常能夠設置爲100天有效,到了100天就不能登陸了。
PASS_MIN_DAYS 0 #至少多少天后必須修改口令,通常設置0天,而到了最大有效期後就必須修改口令,不然到期鎖定了。
PASS_MIN_LEN 10 #密碼最少長度
PASS_WARN_AGE 7 #密碼失效前多少天在用戶登陸時通知用戶修改密碼 spa
保存 unix
修改命令 md5
# chage -l test ci
Last password change : Aug 07, 2015
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7 it
# chage -E 2015-09-01 test 設置test賬戶的到期時間爲2015年9月1日 io
# chage -l test
Last password change : Aug 07, 2015
Password expires : never
Password inactive : never
Account expires : Sep 01, 2015
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7 ast
# chage -M 100 test 設置test用戶口令的最大到期時間 test
# chage -l test
Last password change : Aug 07, 2015
Password expires : Nov 15, 2015
Password inactive : never
Account expires : Sep 01, 2015
Minimum number of days between password change : 0
Maximum number of days between password change : 100
Number of days of warning before password expires : 7
檢查控制密碼複雜度軟件包是否安裝
# rpm -qa|grep cracklib
cracklib-2.8.9-3.3
cracklib-dicts-2.8.9-3.3
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=5 minlen=10 ucredit=-1 lcredit=-3 dcredit=-1 ocredit=-1 dictpath=/usr/share/cracklib/pw_dict
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_deny.so
這裏要求最多嘗試5次超過鎖定,口令長度至少10位,至少1個大寫字母,至少3個小寫字母,至少1個數字,至少1個特殊字符,不能是字典中常見單詞
說明:
retry=5 嘗試次數爲5次
minlen=10 最少長度10位
ucredit=N:大寫字母,N>=0表示最多幾個大寫字母,N是負數表示至少幾個
lcredit=N:小寫字母,N>=0表示最多幾個小寫字母,N是負數表示至少幾個
dcredit=N:數字,N>=0表示最多幾個數字,N是負數表示至少幾個
ocredit=N:特殊字符,N>=0表示最多幾個特殊字符,N是負數表示至少幾個
使用root建立一個普通用戶test並設置test的初始口令
注意:root設置普通用戶的口令時,也會檢測口令長度和複雜度,可是即便不符合要求也能夠設置成功,由於root是Linux系統的God。
使用test用戶登陸,而後經過passwd命令修改本身的口令,此時口令長度、複雜度等等要求就都開始有效了
[test@SIT ~]$ passwd Changing password for user test. Changing password for test (current) UNIX password: New UNIX password: BAD PASSWORD: it is based on a dictionary word(提示包含了字典中的單詞,過於簡單) New UNIX password: BAD PASSWORD: it does not contain enough DIFFERENT characters(提示包含了過多重複的字母) New UNIX password: BAD PASSWORD: case changes only (這裏提示沒有大寫字母)