好的,在 Linux 系统中修改密码过期时间是一项常见的系统管理任务,主要用于增强安全性。您可以根据需要为用户设置密码的有效期、过期前的警告天数等。
![图片[1]_在Linux中修改密码过期时间的方法_知途无界](https://zhituwujie.com/wp-content/uploads/2025/12/d2b5ca33bd20251212101344.png)
主要有两种方法:使用 chage 命令(推荐,功能强大直观)和直接编辑 /etc/login.defs 文件(用于设置系统全局默认值)。
方法一:使用 chage 命令(针对特定用户)
chage(change age)命令是专门用来管理用户密码过期信息的工具。它可以精确地设置单个用户的密码策略。
命令语法:
sudo chage [选项] 用户名
常用选项:
-l:列出用户的当前密码时效设置。-m days:密码可更改的最小天数。为零时允许立即更改。-M days:密码有效的最大天数。-d days:上次更改密码的日期(以天数表示,从 1970-01-01 算起)。-I days:密码过期后,账户被锁定的天数(宽限期)。-E date:账户到期的日期(YYYY-MM-DD 或天数)。-W days:密码过期前,开始警告用户的天数。
操作步骤与示例:
1. 查看当前用户的密码过期策略
在修改之前,最好先查看一下当前的设置。
sudo chage -l username
将 username 替换为实际的用户名(如 sudo chage -l alice)。
输出示例:
Last password change : Aug 01, 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
这里的 never 和 99999 是默认值,表示密码永不过期。
2. 设置密码最大有效期(例如,要求用户每 90 天更换一次密码)
sudo chage -M 90 username
这条命令将用户 username 的密码设置为 90 天后过期。
3. 设置密码最小有效期(例如,防止用户在一天内重复修改密码)
sudo chage -m 1 username
这条命令设置用户 username 必须在上次修改密码至少 1 天后才能再次修改。
4. 设置密码过期前的警告天数(例如,提前 14 天开始警告用户)
sudo chage -W 14 username
这条命令会在密码到期前 14 天,每次用户登录时向其发出警告。
5. 设置一个具体的过期日期(例如,账户在 2025-12-31 到期)
sudo chage -E 2025-12-31 username
6. 综合示例:为用户 bob 设置一套完整的密码策略
- 密码至少 7 天后才能修改
- 密码 60 天后过期
- 过期前 10 天开始警告
- 密码过期后 7 天内账户被锁定
sudo chage -m 7 -M 60 -W 10 -I 7 bob
7. 立即让用户密码过期,强制下次登录时修改
这是一个非常实用的场景,例如员工离职交接或初始密码发放后。
sudo chage -d 0 username
-d 0 表示将上次更改密码的日期设置为 Unix 纪元(1970-01-01),这会立即让密码过期。用户下次登录时会被强制要求更改密码。
方法二:修改 /etc/login.defs 文件(设置系统全局默认值)
/etc/login.defs 文件包含了系统范围的密码和账户策略默认值。这些设置主要影响之后新创建的用户。对于已存在的用户,此方法不会影响,除非他们从未设置过密码策略(即使用默认值)。
操作步骤:
- 使用文本编辑器(如
vim或nano) 打开文件:sudo vim /etc/login.defs - 找到与密码过期相关的参数并进行修改:
# 密码有效的最大天数(99999 表示永不过期) PASS_MAX_DAYS 99999 # 密码可更改的最小天数(0 表示随时可改) PASS_MIN_DAYS 0 # 密码过期前多少天开始警告用户 PASS_WARN_AGE 7 - 修改后保存并退出编辑器。
- 例如,要将所有新用户的密码有效期改为 180 天,就将
PASS_MAX_DAYS的值改为180。
- 例如,要将所有新用户的密码有效期改为 180 天,就将
重要提示:此修改不会影响现有用户。要批量修改现有用户的策略,可以结合 chage 命令和脚本,或者先修改此文件,然后让现有用户在下一次修改密码时应用新策略(但这不可控)。
总结与最佳实践
| 场景 | 推荐方法 | 命令示例 |
|---|---|---|
| 修改单个现有用户的策略 | **chage 命令** | sudo chage -M 90 alice |
| 查看用户的当前策略 | **chage 命令** | sudo chage -l alice |
| 强制用户下次登录修改密码 | **chage 命令** | sudo chage -d 0 alice |
| 设置系统新用户的默认策略 | 编辑 **/etc/login.defs** | 修改 PASS_MAX_DAYS 等参数 |
| 为新用户设置特定策略 | **useradd 命令** | sudo useradd -e 2025-12-31 newuser (设置账户到期日) |
最佳实践建议:
- 对于关键服务器或服务账户,建议设置较短的密码有效期(如 60-90 天)和较长的宽限期(如 7-14 天)。
- 对于个人桌面用户,可以根据安全需求适当延长有效期(如 180 天)。
- 始终使用
chage -l来验证您的更改是否已生效。 - 结合
cron作业定期审计即将过期的密码,提醒用户及时更新。

























暂无评论内容