吐槽一下,本身在word上整理的,發現不能直接拷貝到CSDN,有些序號也改變了,很無奈。。
Test1~9,主要針對minlen、ucredit、lcredit、dcredit、ocredit、minclass這幾個參數的測試
Test10,主要針對difok參數的設置
Test11~13,主要對minlen測試
Teset1
- Ab1-kk √
- Ab1-k ×(score爲9,應該是由於字符個數小於6個導致的)
Teset2
- Ab1-kkkk√value=4*2+4=12
- Ab1-kkk × value=4*2+3=11
- Ab1kkkkkk ×字符種類不滿足
Teset3
- Ab1-kkkk √ value=4*2+4+1=13,”*2”表示四類字符,額外+1;
- Ab1-kkk √value=4*2+3+1=12,加1原因紅色框,當小於等於2個小寫時候,有幾個就額外加幾!!!
- Ab1-kk×value=4*2+3+1=11
Ab1kkkkkk ×
Teset4
- Ab1kkkkkk ×(雖然score爲13,但是缺少特殊字符,minclass其實沒用)
Teset5
Teset6
- Ab1-kkkk ×value=8(不會額外加1)
- Ab1-kkkkkkk × value=11(不會額外加1)
- Ab1-kkkkkkkk √value=12
Teset7
- qwertyuiopas√(不會校驗字符類別,但是會校驗不同的字符,具體密碼允許幾個不同字符還未知)
- qqqqqqqqqqqq x(應該有另外一條規則限定密碼都是相同字符的情況)
- q1q1q1q1q1q1 x
- qwerqwerqwer x(有4個不同字符失敗)
- qwertqwertqw√(有5個不同字符成功)
Teset8(驗證minclass)
含義是密碼所含有字符類型的個數。
- 如果四種字符都設置爲0,且minclass=2,則表示密碼至少含有2種字符。
- 如果四種字符都設置爲非0,且minclass=2,四種字符非0要求密碼有4種類型,而minclass=2要求至少有2種類型,綜合兩者,密碼需要四種類型。
- qwertyuiopasx(只有1種類型是失敗的,但如果不設置minclass=2,則是成功的)
- qwertyuiopaS√(兩種字符類型,則成功)
Teset9
- Ab1-x
- Ab1-kx
- abcdef—321 x (三類字符,所以失敗)
- Ab1-kk √ 密碼至少包含6個字符,pam默認規則;也必須包含四種字符。
Teset10(difok測試)
- 初始密碼qazwsxeedcRFV
- 改爲qazwsxedcRGB,x(2個字符不同)
- 改爲qazwsxedcTGB, √(3個字符不同)
Teset11
- 設置密碼qazwsxEDx(有點奇怪,score爲8爲啥失敗了??)
- 設置密碼qazwsxedcR√(score得分爲10纔可以,感覺minlen爲8失效了)
Teset12
- qazwsxedcx(score爲9)
- qazwsxedcr√(score爲10)
如果ucredit、lcredit、dcredit、ocredit都爲0,貌似pam要求score得分至少爲10,這有待確認。如果是這樣的話,minlen小於10無效。
Teset13
- qazwsxedcrfvtgx(score爲14)
- qazwsxedcrfvtgb√(score爲15)
與test12比較,如果ucredit、lcredit、dcredit、ocredit都設置爲0,minlen大於10是可以的生效的,測試的是15
總結:
- 密碼總共有四種字符
- 不具體設置ucredit、lcredit、dcredit、ocredit四種字符的個數,則默認爲1
- minlen不是所設置密碼的最小位數,實際是最小scores,pam會根據規則計算所設置密碼的“得分”情況;
- ucredit、lcredit、dcredit、ocredit的個數N,可見test3。
- 如果大於0,說明會存在extra add 1的情況,舉例
若ucredit=2lcredit=2dcredit=2ocredit=2,密碼爲”aaBB11-cD”,得分爲:
Value=密碼個數(9) +ucredit(2)+ lcredit(2)+dcredit (2)+ocredit(1) = 16
注1:網上各種博客所說的“N>0表示最多出現的次數”是不恰當的,實際表示的意思爲最多額外加的score,比如上述的的例子ucredit=2,所設置密碼有3個大寫字母,那麼score最多額外加2,這纔是“最多”的真正含義,當然ocredit=1,實際密碼出現了一個特殊字符,那麼也就額外加1了。
- 如果小於0,表示所設置的密碼至少存在N個,沒有額外加1的動作;
- Pam_cracklib.so還有隱含規則
- 密碼最小個數爲6
- 將四種字符個數都設置爲0的情況下,經過測試,密碼設置需要有至少5個不同字符。
- Minclass是要求最小類別的數量,如果ucredit、lcredit、dcredit、ocredit都非0,則該參數設置與否是失效的,因爲密碼要求四種字符。
- 參考文檔
http://www.linux-pam.org/Linux-PAM-html/sag-pam_cracklib.html