在Linux中修改密码过期时间的方法

好的,在 Linux 系统中修改密码过期时间是一项常见的系统管理任务,主要用于增强安全性。您可以根据需要为用户设置密码的有效期、过期前的警告天数等。

图片[1]_在Linux中修改密码过期时间的方法_知途无界

主要有两种方法:​使用 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

这里的 never99999 是默认值,表示密码永不过期。

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 文件包含了系统范围的密码和账户策略默认值。这些设置主要影响之后新创建的用户。对于已存在的用户,此方法不会影响,除非他们从未设置过密码策略(即使用默认值)。

操作步骤:

  1. 使用文本编辑器(如 vimnano) 打开文件: sudo vim /etc/login.defs
  2. 找到与密码过期相关的参数并进行修改: # 密码有效的最大天数(99999 表示永不过期) PASS_MAX_DAYS 99999 # 密码可更改的最小天数(0 表示随时可改) PASS_MIN_DAYS 0 # 密码过期前多少天开始警告用户 PASS_WARN_AGE 7
  3. 修改后保存并退出编辑器。
    • 例如,要将所有新用户的密码有效期改为 180 天,就将 PASS_MAX_DAYS 的值改为 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 作业定期审计即将过期的密码,提醒用户及时更新。
© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞73 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容