介紹如何在 Linux 系統中透過 /etc/login.defs 設定檔與 chage 指令,設定使用者密碼的使用期限。

相關文章:
Linux 停用使用者帳號、設定使用期限教學與範例
Linux 強制使用者下次登入修改密碼教學
Linux 不重複使用前三次密碼 PAM 設定教學與範例
Linux 強制密碼最低複雜度 pam_pwquality 設定教學與範例

/etc/login.defs 密碼設定檔

Linux 系統的下有一個 /etc/login.defs 密碼設定檔,在這個檔案中定義了 shadow 密碼的各種設定值,其中有三個設定跟密碼的使用期限有關:

# 密碼使用期限設定
# PASS_MAX_DAYS:密碼最長使用天數
# PASS_MIN_DAYS:密碼最短使用天數
# PASS_WARN_AGE:設定密碼過期前幾天,系統要發出警告
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_WARN_AGE   7

這三個參數的意義如下:

PASS_MAX_DAYS
密碼最長使用天數,如果密碼使用天數超過這個數值,就必須立即更換密碼。若沒有設定此選項,預設值是 -1,代表沒有使用期限(密碼永久有效)。
PASS_MIN_DAYS
密碼最短使用天數,也就是兩次變更密碼之間至少要間隔的天數,如果沒有達到此天數,就無法變更密碼。預設值是 -1,代表沒有最短使用天數的限制。
PASS_WARN_AGE
設定密碼過期前幾天,系統要發出警告,若設定為 0 則代表到期當天才發出警告,若設定為負值則代表完全不發出警告。預設值為不發出警告。

以上 PASS_MAX_DAYSPASS_MIN_DAYSPASS_WARN_AGE 三個選項的設定只會在新增帳號時被使用,更改這些設定值並不會影像系統上既有的帳號。

chage 指令

chage 指令可以用來設定使用者的密碼使用期限,-m--mindays 可以用來設定密碼最短使用天數:

# 設定 myuser 密碼最短使用天數為 7 天
chage -m 7 myuser

-M--maxdays 可以用來設定密碼最長使用天數:

# 設定 myuser 密碼最長使用天數為 90 天
chage -M 90 myuser

-W--warndays 則是可以設定密碼過期前幾天,系統要發出警告:

# 設定 myuser 密碼過期 7 天前系統發出警告
chage -W 7 myuser