侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux chage命令教程:如何管理用户密码的过期信息(附实例详解和注意事项)

Linux chage命令介绍

chage命令是change age的缩写,它用来修改用户账号的密码过期信息。它可以设置密码的有效期限,以及密码过期前的警告时间。它还可以设置账号的过期日期,以及账号被禁用后的宽限期。chage命令可以帮助系统管理员管理用户账号的安全性和有效性。

Linux chage命令适用的Linux版本

chage命令是一个标准的Linux命令,它适用于大多数的Linux发行版,如Ubuntu, Debian, CentOS, Fedora, Red Hat等。如果某些Linux发行版没有预装chage命令,可以使用以下命令来安装:

  • 对于基于Debian的发行版,如Ubuntu,可以使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install passwd
  • 对于基于Red Hat的发行版,如CentOS,可以使用yum命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install passwd
  • 对于基于Arch的发行版,如Manjaro,可以使用pacman命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S passwd

Linux chage命令的基本语法

chage命令的基本语法格式如下:

chage [选项] 用户名

其中,用户名是要修改密码过期信息的用户账号。选项可以用来指定不同的修改参数,如密码的最小、最大、最后更改日期等。

Linux chage命令的常用选项或参数说明

chage命令有很多选项或参数,可以用来修改不同的密码过期信息。以下是一些常用的选项或参数:

选项或参数说明
-d, --lastday 日期设置密码的最后更改日期,日期可以是YYYY-MM-DD的格式,也可以是距离今天的天数,如0表示今天,-1表示昨天,+1表示明天等
-E, --expiredate 日期设置账号的过期日期,日期的格式同上
-h, --help显示帮助信息
-I, --inactive 天数设置账号被禁用后的宽限期,即在密码过期后,多少天内可以重新激活账号,如果为0,则账号被禁用后立即失效,如果为-1,则账号被禁用后永不失效
-l, --list显示用户账号的密码过期信息
-m, --mindays 天数设置密码的最小有效期,即在密码更改后,多少天内不能再次更改密码,如果为0,则可以随时更改密码,如果为-1,则禁止更改密码
-M, --maxdays 天数设置密码的最大有效期,即在密码更改后,多少天内必须再次更改密码,如果为0,则密码永不过期,如果为-1,则禁止登录
-W, --warndays 天数设置密码过期前的警告时间,即在密码过期前,多少天内会提示用户更改密码

Linux chage命令的实例

以下是一些使用chage命令的实例,结合了最常搜索的关键词,如chage list, chage expire, chage password等。

实例1:显示用户账号的密码过期信息

使用chage -l 或者 chage --list 选项,可以显示用户账号的密码过期信息,如最后更改日期,最小、最大、警告、宽限期等。例如,要显示root用户的密码过期信息,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 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

这里可以看到,root用户的密码最后更改日期是2023年12月18日,密码永不过期,账号永不过期,密码最小有效期是0天,密码最大有效期是99999天,密码过期前的警告时间是7天。

实例2:设置密码的最大有效期

使用chage -M 或者 chage --maxdays 选项,可以设置密码的最大有效期,即在密码更改后,多少天内必须再次更改密码。例如,要设置root用户的密码最大有效期为90天,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -M 90 root

这样,root用户的密码在更改后的90天内,必须再次更改,否则会过期。可以使用chage -l 选项来查看修改后的密码过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 2023
Password expires					: Mar 18, 2024
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7

这里可以看到,root用户的密码过期日期是2024年3月18日,即从最后更改日期开始算起的90天后。

实例3:设置密码的最小有效期

使用chage -m 或者 chage --mindays 选项,可以设置密码的最小有效期,即在密码更改后,多少天内不能再次更改密码。例如,要设置root用户的密码最小有效期为30天,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -m 30 root

这样,root用户的密码在更改后的30天内,不能再次更改,否则会提示错误。可以使用chage -l 选项来查看修改后的密码过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 2023
Password expires					: Mar 18, 2024
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 30
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7

这里可以看到,root用户的密码最小有效期是30天。

实例4:设置密码过期前的警告时间

使用chage -W 或者 chage --warndays 选项,可以设置密码过期前的警告时间,即在密码过期前,多少天内会提示用户更改密码。例如,要设置root用户的密码过期前的警告时间为10天,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -W 10 root

这样,root用户的密码在过期前的10天内,会收到系统的提示,建议更改密码。可以使用chage -l 选项来查看修改后的密码过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 2023
Password expires					: Mar 18, 2024
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 30
...

实例5:设置账号的过期日期

使用chage -E 或者 chage --expiredate 选项,可以设置账号的过期日期,即在该日期后,账号不能再登录系统。例如,要设置root用户的账号过期日期为2024年1月1日,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -E 2024-01-01 root

这样,root用户的账号在2024年1月1日后,就不能再登录系统。可以使用chage -l 选项来查看修改后的账号过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 2023
Password expires					: Mar 18, 2024
Password inactive					: never
Account expires						: Jan 01, 2024
Minimum number of days between password change		: 30
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 10

这里可以看到,root用户的账号过期日期是2024年1月1日。

实例6:设置账号被禁用后的宽限期

使用chage -I 或者 chage --inactive 选项,可以设置账号被禁用后的宽限期,即在密码过期后,多少天内可以重新激活账号。例如,要设置root用户的账号被禁用后的宽限期为7天,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -I 7 root

这样,root用户的账号在密码过期后的7天内,可以通过更改密码来重新激活账号,否则账号就会失效。可以使用chage -l 选项来查看修改后的账号过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 18, 2023
Password expires					: Mar 18, 2024
Password inactive					: 7
Account expires						: Jan 01, 2024
Minimum number of days between password change		: 30
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 10

这里可以看到,root用户的账号被禁用后的宽限期是7天。

实例7:设置密码的最后更改日期

使用chage -d 或者 chage --lastday 选项,可以设置密码的最后更改日期,即在该日期后,密码就算是更改过的。这个选项可以用来重置密码的有效期,或者强制用户更改密码。例如,要设置root用户的密码的最后更改日期为2023年12月1日,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -d 2023-12-01 root

这样,root用户的密码的最后更改日期就变成了2023年12月1日,而不是实际更改的日期。这意味着,密码的有效期会从这个日期开始计算,而不是从实际更改的日期开始计算。可以使用chage -l 选项来查看修改后的密码过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: Dec 01, 2023
Password expires					: Mar 01, 2024
Password inactive					: 7
Account expires						: Jan 01, 2024
Minimum number of days between password change		: 30
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 10

这里可以看到,root用户的密码的最后更改日期是2023年12月1日,密码过期日期是2024年3月1日,而不是之前的2024年3月18日。

实例8:交互式地修改用户账号的密码过期信息

如果不使用任何选项或参数,chage命令会进入交互式模式,提示用户输入要修改的密码过期信息。例如,要交互式地修改root用户的密码过期信息,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage root
Changing the aging information for root
Enter the new value, or press ENTER for the default

	Minimum Password Age [30]: 
	Maximum Password Age [90]: 
	Last Password Change (YYYY-MM-DD) [2023-12-01]: 
	Password Expiration Warning [10]: 
	Password Inactive [-1]: 
	Account Expiration Date (YYYY-MM-DD) [2024-01-01]: 

这里,用户可以输入新的值,或者按回车键保持默认值。如果输入的值不合法,会提示错误,并要求重新输入。输入完成后,用户可以使用chage -l 选项来查看修改后的密码过期信息。

实例9:强制用户在下次登录时更改密码

如果要强制用户在下次登录时更改密码,可以使用chage -d 0 或者 chage --lastday 0 选项,将密码的最后更改日期设置为0,即今天。这样,密码的有效期就从今天开始计算,而不是从实际更改的日期开始计算。例如,要强制root用户在下次登录时更改密码,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -d 0 root

这样,root用户在下次登录时,就会收到以下提示,要求更改密码:

[linux@bashcommandnotfound.cn ~]$ su - root
Password: 
You are required to change your password immediately (password aged)
Changing password for root.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 

实例10:禁止用户更改密码

如果要禁止用户更改密码,可以使用chage -m -1 或者 chage --mindays -1 选项,将密码的最小有效期设置为-1。这样,用户就不能再次更改密码,否则会提示错误。例如,要禁止root用户更改密码,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -m -1 root

这样,root用户就不能再次更改密码,如果尝试更改密码,会收到以下提示:

[linux@bashcommandnotfound.cn ~]$ passwd root
Changing password for user root.
Current password: 
passwd: Password change denied. Password must be changed after 0 days.

实例11:禁止用户登录

如果要禁止用户登录,可以使用chage -M -1 或者 chage --maxdays -1 选项,将密码的最大有效期设置为-1。这样,用户的密码就会立即过期,而且不能再次更改密码,也不能重新激活账号。例如,要禁止root用户登录,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -M -1 root

这样,root用户就不能再登录系统,如果尝试登录,会收到以下提示:

[linux@bashcommandnotfound.cn ~]$ su - root
Password: 
Your account has expired; please contact your system administrator
su: Authentication failure

实例12:恢复用户的默认密码过期信息

如果要恢复用户的默认密码过期信息,可以使用chage -d -1 或者 chage --lastday -1 选项,将密码的最后更改日期设置为-1,即从未更改过。这样,用户的密码过期信息就会恢复为系统的默认设置,如/etc/login.defs文件中定义的。例如,要恢复root用户的默认密码过期信息,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo chage -d -1 root

这样,root用户的密码过期信息就会恢复为系统的默认设置,可以使用chage -l 选项来查看恢复后的密码过期信息,如下:

[linux@bashcommandnotfound.cn ~]$ sudo chage -l root
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
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

这里可以看到,root用户的密码过期信息都显示为password must be changed,表示用户必须更改密码才能登录系统。

实例13:修改多个用户账号的密码过期信息

如果要修改多个用户账号的密码过期信息,可以使用for循环和chage命令结合,一次修改多个用户的密码过期信息。例如,要修改user1, user2, user3三个用户的密码最大有效期为60天,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ for user in user1 user2 user3; do sudo chage -M 60 $user; done

这样,user1, user2, user3三个用户的密码最大有效期都会被修改为60天。

实例14:使用chage命令的快捷键

chage命令有一些快捷键,可以方便地修改用户账号的密码过期信息。以下是一些常用的快捷键:

快捷键说明
Ctrl+A移动光标到行首
Ctrl+E移动光标到行尾
Ctrl+U删除光标前的所有字符
Ctrl+K删除光标后的所有字符
Ctrl+W删除光标前的一个单词
Ctrl+Y粘贴最近删除的字符
Ctrl+L清屏

实例15:使用man命令查看chage命令的帮助文档

如果要查看chage命令的更多信息,可以使用man命令查看chage命令的帮助文档,如用法,选项,参数,示例,错误,文件,作者等。例如,要查看chage命令的帮助文档,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ man chage

这样,就会打开chage命令的帮助文档,如下:

CHAGE(1)                        User Commands                       CHAGE(1)

NAME
       chage - change user password expiry information

SYNOPSIS
       chage [options] LOGIN

DESCRIPTION
       The chage command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change their password.

OPTIONS
       The options which apply to the chage command are:

       -d, --lastday LAST_DAY
           Set the number of days since January 1st, 1970 when the password was last changed. The date may also be expressed in the format YYYY-MM-DD (or the format more commonly used in your area). If the LAST_DAY is set to 0 the user is forced to change their password at the next login attempt.

...

Linux chage命令的注意事项

  • chage命令用于修改用户账户的密码过期信息,可以设置密码的有效期限、警告期限、失效期限等 。
  • chage命令需要root权限才能执行,普通用户只能查看自己的密码过期信息 。
  • chage命令的参数有很多,可以使用chage --helpman chage查看详细的用法 。
  • 如果系统中没有安装chage命令,可能会出现bash: chage: command not found的错误提示,这时可以使用sudo apt install passwdsudo yum install passwd等命令安装passwd包,该包包含了chage命令。
0

评论区