Linux下如何修改密码有效期?
有时我们连接远程服务器的时候,提⽰密码过期,需要修改密码才能登录,这时可以⽤chage命令来调整下⽤户密码的有效期,使⽤户可以继续使⽤。
chage命令
chage命令⽤于查看以及修改⽤户密码的有效期信息,它是 change age 的缩写。当需要⽤户在指定时间内登录或者需要及时修改密码的时候可以使⽤此命令,通过此命令,我们可以查看帐号的各种信息,⽐如:最新⼀次修改密码⽇期、设置密码修改时间、在指定时间后锁定帐号。
我们可以通过 -h 选项查看chage的帮助信息
[root@ecs-centos-7 wl]# chage -h
Usage: chage [options] LOGIN
Options:
-d, --lastday LAST_DAY t date of last password change to LAST_DAY
-
E, --expiredate EXPIRE_DATE t account expiration date to EXPIRE_DATE
cancel的意思-h, --help display this help message and exit
-I, --inactive INACTIVE t password inactive after expiration
to INACTIVE
sxn什么意思-l, --list show account aging information
-m, --mindays MIN_DAYS t minimum number of days before password
change to MIN_DAYS
-M, --maxdays MAX_DAYS t maximum number of days before password
change to MAX_DAYS
-R, --root CHROOT_DIR directory to chroot into
-W, --warndays WARN_DAYS t expiration warning days to WARN_DAYS
选项说明
-l : 列出⽤户密码⽼化信息
-d : 设置最近⼀次修改密码的时间
-m : 设置密码修改的最⼩间隔时间(单位:天)
⼩于这个天数时将不允许修改密码
-W : 密码过期前⼏天开始警告
-M 选项
说明: 设置密码的最长有效期,单位:天。密码实际有效期是⽤最近⼀次修改密码的⽇期加上这⾥设置的最长天数,当最长有效期设置⼤于等于10000时是永久有效。
例如,⽤户密码最近修改时间是 2020-06-23,密码最长有效期是 2 天,则密码的过期时间是 2020-06-25 23:59:59。如果设置密码最长有效期是 10000 天,则密码是永久有效的。
-I 选项
说明: 密码过期之后的失效时间,以天为单位,密码过期⽇期加上这⾥设置的失效天数,结果表⽰密码失效的⽇期,也就是过了这个⽇期登陆,会强制要求修改密码,具体的密码失效提⽰如下:
You are required to change your password immediately (password aged)
Last login: Wed Jun 24 01:06:34 2020 from 27.27.27.27
Welcome to Huawei Cloud Service
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for ur wl.
Changing password for wl.
(current) UNIX password:
如果只是过了密码有效期,但是没有过密码过期之后的失效⽇期,登陆的时候不会强制要求修改密码,只会有⼀个密码过期的警告,具体提⽰如下:
Warning: your password will expire in 0 days
Last login: Wed Jun 24 01:17:01 2020 from 27.27.27.27
Welcome to Huawei Cloud Service
[wl@ecs-centos-7 ~]$
上⾯有两个概念⽐较容易混淆,⼀个是密码过期,⼀个是密码失效。设置的密码经过⼀段时间,过了密码的最⼤有效期,系统将密码设置为过期状态,⽤户登陆的时候,会提⽰⽤户修改密码,⼜经过了⼀段时间,如果⽤户没有修改密码,系统将密码设置为失效状态,此时⽤户⽆法通过此密码登陆
由于密码过期之后的失效⽇期是跟密码最⼤有效期相关联的,如果密码最⼤有效期设置为永不过期的话 (即 chage -M 10000 ur), 则当前密码过期之后的失效⽇
期统⼀变为永久有效的
当密码最⼤有效期重新修改回指定天数时(不是永久有效),密码过期之后的失效⽇期⼜重新变成当前密码最⼤有效期加上当前密码过期之后的失效天数了。我们假设密码过期失效天数1天 ( 即 chage -I 1 wl ),下⾯以实例来说明这⼀点
[root@ecs-centos-7 ~]# chage -l wl
Last password change : Jun 23, 2020
Password expires : Nov 08, 2047
Password inactive : Nov 09, 2047
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 9999
Number of days of warning before password expires : 7
在上⾯的例⼦中,⽤户 wl 的密码有效⽇期是 2047-11-08,密码过期之后失效天数设置为 1 天,那么密码过期之后失效⽇期是 2047-11-09,现在执⾏ chage -M 10000 wl 命令把⽤户 wl 的密码有效⽇期调整为永久有效,命令结果如下:
[root@ecs-centos-7 ~]# chage -M 10000 wl
[root@ecs-centos-7 ~]# chage -l wl
Last password change : Jun 23, 2020
Password expires : never
2015年12月六级Password inactive : never
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 10000
Number of days of warning before password expires : 7
angel中文意思可以看到,把密码最⼤有效⽇期设置为永久有效之后,密码过期之后失效⽇期也变为永久有效的了。执⾏ chage -M 9999 wl 命令把⽤户 wl 密码的有效天数重新修改为 9999 天,命令结果如下:
[root@ecs-centos-7 ~]# chage -M 9999 wl
[root@ecs-centos-7 ~]# chage -l wl
Last password change : Jun 23, 2020
Password expires : Nov 08, 2047
Password inactive : Nov 09, 2047
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 9999
Number of days of warning before password expires : 7
修改了密码最⼤有效天数之后,密码有效⽇期变成了 2047-11-08,密码过期之后失效⽇期变成了 2047-11-09 ,可以看到,密码过期之后的失效⽇期是随着密码有效⽇期改变⽽变化的。
-E 选项
说明: 设置账号过期时间,参数为具体的⽇期,账号过期之后就⽆法登陆了。
⽰例:以下是设置⽤户 wl 过期时间为 2020-06-23,当前时间为 2020-06-24
[root@ecs-centos-7 ~]# chage -E 2020-06-23 wl
戒牒
[root@ecs-centos-7 ~]# chage -l wl
Last password change : Jun 23, 2020
Password expires : Jun 23, 2020
Password inactive : Jun 24, 2020
Account expires : Jun 23, 2020
Minimum number of days between password change : 1
iwaki
Maximum number of days between password change : 0
Number of days of warning before password expires : 7
账号 wl 已经过期了, 再次登陆的时候会提⽰以下信息:
Your account has expired; plea contact your system administrator
新⽤户⾃动指定密码有效期
/etc/login.defs 配置⽂件中有以下⼏个关于密码⽼化的控制参数
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be ud.
# 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.
#
brown是什么意思
PASS_MAX_DAYS 1 #密码有效期
wvePASS_MIN_DAYS 0 #密码修改的最⼩间隔天数
原产地PASS_MIN_LEN 5 #可接受的最⼩密码长度
PASS_WARN_AGE 7 #密码过期之前多少天警告提⽰
⽰例:假如当前时间是 2020-06-24,我们修改 PASS_MAX_DAYS 为7天,创建新⽤户 tt,⽤ chage -l tt 命令查看⽤户 tt 密码的⽼化信息
[root@ecs-centos-7 home]# uradd tt
[root@ecs-centos-7 home]# chage -l tt
Last password change : Jun 24, 2020
Password expires : Jul 01, 2020
Password inactive : never
Account expires : never
尹民秀
Minimum number of days between password change : 0
Maximum number of days between password change : 7
Number of days of warning before password expires : 7
从以上结果可以看出,⽤户 tt 的密码有效期持续到 2020-07-01,过了有效期,⽤户必须要修改密码才能登录,⽤户修改密码之后,密码的有效期从修改密码当天⾃动往后增加 7 天。
修改 /etc/login.defs 中密码⽼化参数只针对修改之后创建的新⽤户有效,来源的⽤户密码⽼化信息维持不变,如果想⽼⽤户保持和新⽤户⼀致,需要⼿动修改⽼⽤户的密码⽼化信息
创建新⽤户⾃动指定密码有效期已经⼴泛的使⽤在云服务器上了,利⽤它可以强制⽤户过段时间修改⼀次密码,避免⽤户⽆意中泄漏密码使服务器处于安全隐患中。