Linux系統下的用戶密碼的有效期
可以修改密碼可以通過login.defs文件控制。設置密碼過期期限(默認情況下,用戶的密碼永不過期。)
編輯 /etc/login.defs 文件,可以設置當前密碼的有效期限,具體變量如下所示:
sudo vi /etc/login.defs PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7 # 這些設置要求用戶每6個月改變他們的密碼,并且會提前7天提醒用戶密碼快到期了。
說明:
Password aging controls:
PASS_MAX_DAYS Maximum number of days a password may be used.
(密碼可以使用的最大天數。)
PASS_MIN_DAYS Minimum number of days allowed between password changes.
(密碼更改之間允許的最小天數。一般不要設置)
PASS_MIN_LEN Minimum acceptable password length.
(可接受的最小密碼長度。)
PASS_WARN_AGE Number of days warning given before a password expires.
(密碼過期前發出警告的天數。)
# 默認值 PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # 建議值 PASS_MAX_DAYS 90 PASS_MIN_DAYS 0 PASS_MIN_LEN 6 PASS_WARN_AGE 7
可以通過sed命令設置:
sed -r -i 's/(PASS_MAX_DAYS)s+([0-9]+)/1 90/' /etc/login.defs
以上將 PASS_MAX_DAYS 99999 設置為 PASS_MAX_DAYS 90(密碼有效期90天)
sed -r -i 's/(PASS_MIN_LEN)s+([0-9]+)/1 13/' /etc/login.defs
以上將 PASS_MIN_LEN 5 設置為 PASS_MIN_LEN 13(密碼字符長度13位)
Linux系統下的用戶密碼的復雜度規則
用戶密碼復雜度規則設定,需要通過/etc/pam.d/system-auth文件實施(針對的是普通用戶狀態下修改密碼會生效,root用戶狀態下無效),centos6中默認是通過pam_cracklib.so模塊控制,(在CentOS 7上實現密碼復雜度策略設置,主要是使用PAM pwquality模塊完成):
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@localhost ~]# vim /etc/pam.d/system-auth 將文件中的下面兩行: password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 改為: password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
上面文件中參數分別說明設置密碼的時候要遵循下面的規則:
retry=3 定義登錄/修改密碼失敗時,可以重試的次數;
type=xxx 當添加/修改密碼時,系統給出的缺省提示符是什么,用來修改缺省的密碼提示文本。默認是不修改的,如上例。
minlen=8 定義用戶密碼的最小長度為8位
ucredit=-2 定義用戶密碼中最少有2個大寫字母 (數字為負數,表示至少有多少個大寫字母;數字為正數,表示至多有多少個大寫字母;下面同理)
lcredit=-4 定義用戶密碼中最少有4個小寫字母
dcredit=-1 定義用戶密碼中最少有1個數字
ocredit=-1 定義用戶密碼中最少有1個特殊字符(除數字、字母之外)
remember=5 修改用戶密碼時最近5次用過的舊密碼就不能重用了
除了上面的幾個參數,還可以設定下面的參數規則
difok=N 此選項用來規定新密碼中必需有N個字符與舊密碼不同。如果新密碼中有1/2以上的字符與舊密碼不同時,該新密碼就會被接受。
difignore=N 此選項用來設定在difok之前收到多少個字符時,difok設置會被忽略,缺省為23。
minclass=N 此選項用來規定新密碼中的字符類別的最小數目,字符一般有四種類別:數字、大寫字母、小寫字母,以及特殊字符。
禁止使用舊密碼
在 /etc/pam.d/system-auth 里找到同時有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用過的5個密碼(己使用過的密碼會被保存在 /etc/security/opasswd 下面)。
sudo vi /etc/pam.d/system-auth password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
設置最短密碼長度
找到同時有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密碼長度為(10 - 類型數量)。這里的 “類型數量” 表示不同的字符類型數量。PAM 提供4種類型符號作為密碼(大寫字母、小寫字母、數字和標點符號)。如果你的密碼同時用上了這4種類型的符號,并且你的 minlen 設為10,那么最短的密碼長度允許是6個字符。
sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10
設置密碼復雜度(常用)
找到同時有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,它表示密碼必須至少包含一個大寫字母(ucredit),兩個小寫字母(lcredit),一個數字(dcredit)和一個標點符號(ocredit)。
sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
CentOS 7通用規則設置示例:
# 以root用戶登錄系統 cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak vim /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
retry=3 定義登錄/修改密碼失敗時,可以重試的次數;
minlen=12 密碼最小長度為8個字符。
lcredit=-1 密碼應包含的小寫字母的至少一個
ucredit=-1 密碼應包含的大寫字母至少一個
dcredit=-1 將密碼包含的數字至少為一個
ocredit=-1 設置其他符號的最小數量,例如@,#、! $%等,至少要有一個
enforce_for_root 確保即使是root用戶設置密碼,也應強制執行復雜性策略。
示例:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=13 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
鏈接:https://www.cnblogs.com/xiongzaiqiren/p/17027924.html
-
Linux
+關注
關注
87文章
11345瀏覽量
210396
原文標題:Linux系統設置用戶密碼規則(復雜密碼策略)方法
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論