## 預設
在未設定密碼有效期前於 RHEL 中建立帳號時,預設密碼有效期皆為 99999 天,The Center for Internet Security (CIS) 為了安全性建議密碼最好低於 365 天。
## /etc/login.defs
我們可以在 `/etc/login.defs` 中設置新建立的帳號需遵守的密碼有效期。
```
# 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
```
但在此設置並不會修改已建立的帳號。
## /etc/shadow
在 `/etc/shadow` 中可以看到所有的帳號和密碼有效期先關的設定,但不是非常的直觀。
```
kurt:*:19619:7:90:7:::
```
## chage
使用 `chage` 指令就能對各個帳號作設置,也可以 show 出各個帳號目前的設置。
```
$ chage --list kurt
Last password change : Sep 19, 2023
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
$ chage --mindays 7 --maxdays 90 --warndays 7 kurt
$ chage --list kurt
Last password change : Sep 19, 2023
Password expires : Dec 18, 2023
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
```
設置後可以很直觀的看出帳號的密碼有效期相關設定。