Linux 账号密码生命周期
简介
Linux账号的密码从创建到过期再到失效有几个节点,这几个节点分别对应了几个程序内的变量。
LAST_DAY 密码最后修改日期
EXPIRE_DATE 密码过期日期
INACTIVE 密码过期后多少天后密码失效
MIN_DAYS 两次密码修改间隔(天)
MAX_DAYS 多久需要修改一次密码
WARN_DAYS 密码过期前多少天开始告警
以上变量并不是环境变量,只是 passwd、chage 等程序中用到的变量,同时程序也提供了接口修改这些变量来控制密码生存周期。
我们一般需要知道系统中有多少帐号的密码处于锁定或开放状态。处于密码锁定的帐号无法通过密码登陆,账号的密码状态可以通过 passwd 命令进行查看。
1 2 3 4 5 6 | $ passwd -S -a root P 05/11/2023 0 99999 7 -1 daemon L 04/24/2013 0 99999 7 -1 bin L 04/24/2013 0 99999 7 -1 sys L 04/24/2013 0 99999 7 -1 |
其中 -S 是查看状态的意思,-a 是显示所有账号,打印出的数据有7列分别是:
- 登录名
- 锁定状态(锁定 L、无密码 NP、密码可用 P)
- 最后一次更改密码的日期
- 密码最小年龄(两次密码修改间隔,小于间隔无法修改密码)
- 密码最大年龄(多久需要修改一次密码)
- 密码警告期(密码过期前多久进行警告)
- 密码禁用期(密码过期几天后禁用密码)
比如以下账号状态:
1 2 3 | $ passwd -S root root P 05/11/2023 0 99999 7 -1 |
7个字段分别表示 root 账号有密码,且于2023-05-11日修改过密码,两次密码修改间隔为0,即随时可以修改密码;最长99999天需要修改一次密码,密码过期前7天进行警告,密码过期后不锁定账号密码。
这个账号密码状态中的值(0 99999 7)是在账号创建时就定义好的,对应的值在以下文件中定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ cat /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_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7 |
最后一个字段 -1 是在以下文件中定义的: