chage命令是Linux系统中用于修改用户密码过期信息的工具,所有操作都会直接更新/etc/shadow文件中对应用户的密码相关字段,是系统管理员管理用户账户生命周期的核心命令之一。

chage命令基础语法
chage命令的基本语法格式如下:
chage [选项] 用户名
其中选项是可选的参数,用于指定要修改的具体密码策略项,用户名是必须存在的系统用户,执行命令的用户需要有root权限,否则无法修改其他用户的密码策略。
常用参数说明
chage命令支持多个参数,每个参数对应shadow文件中的一个字段,常用参数及含义如下:
| 参数 | 含义 | 对应shadow字段 |
|---|---|---|
| -d, --lastday 最近日期 | 设置上次修改密码的日期,格式为YYYY-MM-DD或者距离1970-01-01的天数 | 第三个字段 |
| -E, --expiredate 过期日期 | 设置账户过期的日期,格式为YYYY-MM-DD或者距离1970-01-01的天数,过期后账户无法登录 | 第八个字段 |
| -I, --inactive 宽限天数 | 设置密码过期后多少天账户被禁用,0表示密码过期后立即禁用 | 第七个字段 |
| -l, --list | 列出指定用户的当前密码策略信息,不修改任何配置 | 无 |
| -m, --mindays 最小天数 | 设置两次修改密码之间的最小间隔天数,0表示随时可以修改 | 第四个字段 |
| -M, --maxdays 最大天数 | 设置密码的有效期,超过该天数后密码必须修改 | 第五个字段 |
| -W, --warndays 警告天数 | 设置密码过期前多少天开始提醒用户修改密码 | 第六个字段 |
参数使用注意事项
- 所有日期参数如果输入YYYY-MM-DD格式,命令会自动转换为距离1970-01-01的天数写入shadow文件
- 如果设置-E参数为-1,表示账户永不过期,对应shadow文件第八个字段为-1
- 如果不指定任何选项直接执行chage 用户名,会进入交互式配置模式,依次提示输入各个参数的值
- 修改root用户的密码策略时,同样需要root权限,普通用户只能查看自己的密码策略
实际操作示例
查看用户密码策略
使用-l参数可以查看指定用户的当前密码配置,示例如下:
# 查看用户test的密码策略 chage -l test
执行后会输出该用户的上次密码修改时间、密码过期时间、账户过期时间等信息。
设置密码有效期
假设需要设置用户test的密码最长使用90天,最短使用7天,密码过期前5天提醒,操作如下:
# 设置密码最短7天,最长90天,过期前5天提醒 chage -m 7 -M 90 -W 5 test
设置账户过期时间
如果需要设置用户test的账户在2024-12-31之后无法登录,操作如下:
# 设置账户过期时间为2024-12-31 chage -E 2024-12-31 test
重置密码修改时间
如果需要强制用户下次登录时修改密码,可以将上次密码修改时间设置为0,操作如下:
# 强制用户test下次登录修改密码 chage -d 0 test
交互式配置示例
如果不记得参数名称,可以直接执行chage加用户名进入交互模式:
# 进入交互式配置 chage test # 后续会依次提示输入以下信息,直接回车表示保持原配置 正在为 test 修改年龄信息 请输入新值,或直接敲回车键以使用默认值 最小密码年龄 [7]: 最大密码年龄 [90]: 密码过期警告 [5]: 密码失效 [-1]: 帐户过期 [-1]:
按照提示输入对应的值即可完成配置,不需要记住所有参数的全称。