linux修改用户密码到期时间(下如何修改密码有效期)(1)

有时我们连接远程服务器的时候,提示密码过期,需要修改密码才能登录,这时可以用chage命令来调整下用户密码的有效期,使用户可以继续使用。

命令简介

chage命令用于查看以及修改用户密码的有效期信息,它是 change age 的缩写。当需要用户在指定时间内登录或者需要及时修改密码的时候可以使用此命令,通过此命令,我们可以查看帐号的各种信息,比如:最新一次修改密码日期、设置密码修改时间、在指定时间后锁定帐号。 我们可以通过 -h 选项查看chage的帮助信息

[root@ecs-centos-7wl]#chage-h Usage:chage[options]LOGIN Options: -d,--lastdayLAST_DAY setdateoflastpasswordchangetoLAST_DAY -E,--expiredateEXPIRE_DATE setaccountexpirationdatetoEXPIRE_DATE -h,--help displaythishelpmessageandexit -I,--inactiveINACTIVE setpasswordinactiveafterexpirationtoINACTIVE -l,--list showaccountaginginformation -m,--mindaysMIN_DAYS setminimumNumberofdaysbeforepassword changetoMIN_DAYS -M,--maxdaysMAX_DAYS setMaximumnumberofdaysbeforepassword changetoMAX_DAYS -R,--rootCHROOT_DIR directorytochrootinto -W,--warndaysWARN_DAYS setexpirationwarningdaystoWARN_DAYS

选项说明

-l:列出用户密码老化信息 -d:设置最近一次修改密码的时间 -m:设置密码修改的最小间隔时间(单位:天) 小于这个天数时将不允许修改密码 -W:密码过期前几天开始警告

-M 选项

说明: 设置密码的最长有效期,单位:天。密码实际有效期是用最近一次修改密码的日期加上这里设置的最长天数,当最长有效期设置大于等于10000时是永久有效。

例如,用户密码最近修改时间是 2020-06-23,密码最长有效期是 2 天,则密码的过期时间是 2020-06-25 23:59:59。如果设置密码最长有效期是 10000 天,则密码是 永久有效的。

-I 选项

说明: 密码过期之后的失效时间,以天为单位,密码过期日期加上这里设置的失效天数,结果表示密码失效的日期,也就是过了这个日期登陆,会强制要求修改密码,具体的密码失效提示如下:

Youarerequiredtochangeyourpasswordimmediately(passwordaged) Lastlogin:WedJun2401:06:342020from27.27.27.27 WelcometoHuaweiCloudServiceWARNING:Yourpasswordhasexpired. Youmustchangeyourpasswordnowandloginagain! Changingpasswordforuserwl. Changingpasswordforwl. (current)UNIXpassword:

如果只是过了密码有效期,但是没有过密码过期之后的失效日期,登陆的时候不会强制要求修改密码,只会有一个密码过期的警告,具体提示如下:

Warning:yourpasswordwillexpirein0days Lastlogin:WedJun2401:17:012020from27.27.27.27 WelcometoHuaweiCloudService [wl@ecs-centos-7~]$

上面有两个概念比较容易混淆,一个是 密码过期,一个是密码失效。设置的密码经过一段时间,过了密码的最大有效期,系统将密码设置为过期状态,用户登陆的时候,会提示用户修改密码,又经过了一段时间,如果用户没有修改密码,系统将密码设置为失效状态,此时用户无法通过此密码登陆

由于密码过期之后的失效日期是跟密码最大有效期相关联的,如果密码最大有效期设置为永不过期的话 (即 chage -M 10000 user), 则当前 密码过期之后的失效日期 统一变为 永久有效的。

当密码最大有效期 重新修改回指定天数时(不是永久有效),密码过期之后的失效日期 又重新变成 当前密码最大有效期 加上 当前密码过期之后的失效天数了。我们假设密码过期失效天数1天 ( 即 chage -I 1 wl ),下面以实例来说明这一点

[root@ecs-centos-7~]#chage-lwl Lastpasswordchange :Jun23,2020 Passwordexpires :Nov08,2047 Passwordinactive :Nov09,2047 Accountexpires :never Minimumnumberofdaysbetweenpasswordchange:1 Maximumnumberofdaysbetweenpasswordchange:9999 Numberofdaysofwarningbeforepasswordexpires:7

在上面的例子中,用户 wl 的密码有效日期是 2047-11-08,密码过期之后失效天数设置为 1 天,那么密码过期之后失效日期是 2047-11-09,现在执行 chage -M 10000 wl 命令把 用户 wl 的密码有效日期调整为永久有效,命令结果如下:

[root@ecs-centos-7~]#chage-M10000wl[root@ecs-centos-7~]#chage-lwl Lastpasswordchange :Jun23,2020 Passwordexpires :never Passwordinactive :never Accountexpires :never Minimumnumberofdaysbetweenpasswordchange:1 Maximumnumberofdaysbetweenpasswordchange:10000 Numberofdaysofwarningbeforepasswordexpires:7

可以看到,把密码最大有效日期设置为永久有效之后,密码过期之后失效日期也变为永久有效的了。执行 chage -M 9999 wl 命令 把用户 wl 密码的有效天数重新修改为 9999 天,命令结果如下:

[root@ecs-centos-7~]#chage-M9999wl[root@ecs-centos-7~]#chage-lwl Lastpasswordchange :Jun23,2020 Passwordexpires :Nov08,2047 Passwordinactive :Nov09,2047 Accountexpires :never Minimumnumberofdaysbetweenpasswordchange:1 Maximumnumberofdaysbetweenpasswordchange:9999 Numberofdaysofwarningbeforepasswordexpires :7

修改了密码最大有效天数之后,密码有效日期变成了 2047-11-08,密码过期之后失效日期变成了 2047-11-09 ,可以看到,密码过期之后的失效日期是随着密码有效日期改变而变化的。

-E 选项

说明: 设置账号过期时间,参数为具体的日期,账号过期之后就无法登陆了。

示例:以下是设置用户 wl 过期时间为 2020-06-23,当前时间为 2020-06-24

[root@ecs-centos-7~]#chage-E2020-06-23wl[root@ecs-centos-7~]#chage-lwl Lastpasswordchange :Jun23,2020 Passwordexpires :Jun23,2020 Passwordinactive :Jun24,2020 Accountexpires :Jun23,2020 Minimumnumberofdaysbetweenpasswordchange:1 Maximumnumberofdaysbetweenpasswordchange:0 Numberofdaysofwarningbeforepasswordexpires:7

账号 wl 已经过期了, 再次登陆的时候会提示以下信息:

Youraccounthasexpired;pleasecontactyoursystemadministrator

新用户自动指定密码有效期

/etc/login.defs 配置文件中有以下几个关于密码老化的控制参数

#Passwordagingcontrols:# #PASS_MAX_DAYSMaximumnumberofdaysapasswordmaybeused. #PASS_MIN_DAYSMinimumnumberofdaysallowedbetweenpasswordchanges. #PASS_MIN_LEN Minimumacceptablepasswordlength. #PASS_WARN_AGE Numberofdayswarninggivenbeforeapasswordexpires. PASS_MAX_DAYS1#密码有效期 PASS_MIN_DAYS 0#密码修改的最小间隔天数 PASS_MIN_LEN 5#可接受的最小密码长度 PASS_WARN_AGE7#密码过期之前多少天警告提示

示例:假如当前时间是 2020-06-24,我们修改 PASS_MAX_DAYS 为7天,创建新用户 tt,用 chage -l tt 命令查看 用户 tt 密码的老化信息

[root@ecs-centos-7home]#useraddtt[root@ecs-centos-7home]#chage-ltt Lastpasswordchange :Jun24,2020 Passwordexpires :Jul01,2020 Passwordinactive :never Accountexpires :never Minimumnumberofdaysbetweenpasswordchange :0 Maximumnumberofdaysbetweenpasswordchange:7 Numberofdaysofwarningbeforepasswordexpires :7

从以上结果可以看出,用户 tt 的密码有效期持续到 2020-07-01,过了有效期,用户必须要修改密码才能登录,用户修改密码之后,密码的有效期从修改密码当天自动往后增加 7 天

修改 /etc/login.defs 中密码老化参数只针对 修改之后创建的新用户有效,来源的用户密码老化信息维持不变,如果想老用户保持和新用户一致,需要手动修改老用户的密码老化信息

创建新用户自动指定密码有效期已经广泛的使用在云服务器上了,利用它可以强制用户过段时间修改一次密码,避免用户无意中泄漏密码使服务器处于安全隐患中。

,