<返回更多

Linux 登录密码过期管理

2022-12-05  今日头条  zinyan
加入收藏


1. 介绍

今天登录自己的阿里云ECS服务器时(通过Xshell 利用用户名和密码登录的)。登录成功后,提示让我们修改root密码。

效果如下:

WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user root.
New password:

翻译之后:

警告:您的密码已过期。
您必须立即更改密码,然后再次登录!
更改用户root的密码。
新密码:

需要我更新root密码。在更新时,不用输入老密码了,直接输入新密码。然后 Retype new password:(再次输入新密码)

当密码修改完毕后就会输出:

passwd: all authentication tokens updated successfully.

Connection closed.

Disconnected from remote host(新建会话) at 10:01:21.

Type `help' to learn how to use Xshell prompt.
[C:~]$ 

密码修改完毕了,远程连接断开。我们需要重新开始链接。

这个时候,当我们再使用Xshell登录的时候,就会自动弹出密码输入界面(Xshell的会话属性界面)。在密码栏中输入我们的密码,就可以正确登录。

1.2 释疑

突然让我们改密码,是因为账户有风险被盗了么?在改密码的时候,其他人登录是不是也能直接改新密码?

当然不是这样,linux系统自带的安全验证机制中,有一个密码过期管理功能。当该账户密码过期了。那么我们使用该账户密码进行登录时系统就会提示让我们改密码了。(PS:也就是我上面出现的突然让我们创建新密码的情况)。

当密码过期后,并不代表这个账户不用密码就能登录了。而是老密码登录之后系统强制跳转到新密码更新操作中来。

所以也不用担心密码过期时就怀疑可能被攻击了。

从密码角度而言,一段时间后更新一遍密码。可以提高密码的安全性。(PS:只要每次不是都用相同的几个字母数字来回来组合)

2. 密码管理

默认情况下,Linux的账户密码过期时间是90天。从我们创建密码开始计算。90天后就会过期。

然后在90-7=83天前,就会在登录的时候进行提示。

如果账户状态为过期失效。那么在90天内还不进行修改,就会进入失效状态。无法登录。

密码失效也会无法登录,需要root账户进行修改后才能进行登录操作。

root账户也会有密码过期,但是账户不会失效。也就是说密码过期后我们仍然可以使用老密码登录,只是登录后需要修改密码。

2.1 chage 指令

PS: 你如果要使用该命令,请确保是root账户权限。普通用户没有操作Chage的权限。

查询当前账户的密码过期信息,例如我查下root用户的过期信息: chage -l [账户名]

[root@i0uh8g ~]# chage  -l root
Last password change                : Nov 09, 2022
Password expires                    : Feb 07, 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

上面的项目信息分别为:

Last password change:上次密码修改时间,例如我的是2022年11月9日。

Password expires:下次密码过期时间,例如 2023年2月07

Password inactive:密码失效 ,never (从不)。 因为我的账户是root所以不能失效

Account expires:账户过期,never(从不)。因为我的账户是root所以不能失效

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天(也就是密码过期之前提前7天开始警告)

我们可以通过chage 查询。那么也可以通过该指令进行修改相关信息。相关参数:

密码过期和密码失效账户失效 是不一样的概念。

当密码过期的时候,我们可以用老密码进行继续登录,登录成功后会提示:

You must change your password now and login again! 

我的秘密已经过期,会让我们输入新秘密进修过。

而如果账户或者密码失效,在登录的时候会提示:

Authentication failed.

账户过期,无法登录。

上面的示例,其实还可以拼接使用:

[root@i0uh8g ~]# chage -d 0 -m 7 -M 30 -W 5 -I 7 zinyan

2.2 login.defs配置文件

我们如果用户过多,不可能每次都通过chage指令进行修改。可以通过login.defs配置文件进行统一修改。

但是要注意:已经创建的用户,不会再受该配置文件的影响。要进行修改就只能通过chage指令进行修改了。

如果修改login.defs配置后,创建了一个新账户。然后再修改login.defs配置。后一次修改的效果不会在已创建的账户上生效哦。

该文件地址为: /etc/login.defs 通过vim 打开文件的效果如下:

[root@i0uh8g ~]# vim /etc/login.defs
    
    
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# 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   90
PASS_MIN_DAYS   7
PASS_MIN_LEN    5
PASS_WARN_AGE   7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts

    

比较重要的的几个配置项:

PASS_MAX_DAYS   90  # 过期时间,默认是90, 我们可以调整为9999 表示密码永不过期
PASS_MIN_DAYS   7  # 修改间隔,默认是7
PASS_MIN_LEN    5  # 密码长度,默认是5
PASS_WARN_AGE   7  # 告警天数,默认是7,即过期前7天进行提醒

2.3 useradd配置文件

上面的示例中,我们可以发现login.defs中关于密码过期的选项不够全。没有chage的操作全。例如

密码到期日期,密码停滞时间等。这些信息在useradd文件中进行配置。该文件地址:/etc/default/useradd。示例:

[root@i0uh8g ~]# vim /etc/default/useradd
    
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

其中的INACTIVE 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。-1就代表没有停滞时间,永远可用。

EXPIRE 帐号到期的日期。过了这天,此帐号将不可用。我们可以按照 YYYY-MM-DD 的格式进行配置。例如配置2023-11-11日所有账户过期。

问题和login.defs配置一样,只对之后创建的账户有效。已经创建的账户无效。需要通过chage指令进行修改。

3. 总结

到这里,关于Linux登录密码的过期逻辑和相关配置就总结的差不多了。

login.defs 和useradd配置文件,都是只针对之后创建的账户有效。而如果想让已有账户进行配置那么就需要chage命令进行修改了。

其次,chage命名。是需要权限才能进行操作的。不是所有账户都有该命令的权限。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>