在Linux系统中,密码安全是保障系统整体安全的重要环节,为了确保用户密码的定期更新,降低密码泄露风险,Linux系统内置了密码过期策略机制,当用户密码到期时,系统会通过提示、强制修改等方式引导用户完成密码更新,这一机制对于企业级服务器和个人系统安全都至关重要,本文将从密码到期机制的工作原理、配置方法、用户交互及常见问题解决等方面进行详细说明。
Linux密码到期机制的工作原理
Linux系统的密码到期策略主要依赖于/etc/shadow文件中的用户密码信息,该文件存储了用户的加密密码、密码最后一次修改时间、密码有效期、密码过期宽限时间等关键信息,其中与密码到期相关的字段包括:
- 密码修改时间(第5字段):记录自1970年1月1日起,密码最后一次修改的天数。
- 密码有效期(第6字段):密码保持有效的天数,0表示密码永不过期,大于0的数值则表示密码在修改后该天数内有效。
- 过期宽限时间(第7字段):密码过期后允许用户登录的天数,若在此期间未修改密码,则账户将被锁定。
- 账户失效时间(第8字段):自1970年1月1日起,账户失效的天数,超过该日期账户将无法使用。
当用户登录系统时,login或sshd等服务会检查/etc/shadow中的密码有效期,若当前时间距离密码修改时间超过设定的有效期,系统将提示用户密码即将过期或已过期,并引导用户修改密码。
密码到期策略的配置方法
管理员可通过修改/etc/login.defs文件和chage命令来调整密码到期策略。
全局策略配置(/etc/login.defs)
该文件定义了系统默认的密码策略,常用参数包括:
PASS_MAX_DAYS:密码最大有效期(默认为99999天,约273年);PASS_MIN_DAYS:两次密码修改的最小间隔时间(默认为0,表示可随时修改);PASS_WARN_AGE:密码过期前开始提示的天数(默认为7天)。
要求所有用户密码每90天过期,且提前14天提示,可修改为:
PASS_MAX_DAYS 90 PASS_WARN_AGE 14
用户级策略配置(chage命令)
chage命令用于修改单个用户的密码策略,常用选项如下:
-M:设置密码有效期;-m:设置最小修改间隔;-W:设置提前提醒天数;-E:设置账户失效日期;-I:设置过期宽限时间。
设置用户test的密码有效期为60天,提前10天提醒,过期后5天内需修改密码,可执行:
sudo chage -M 60 -W 10 -I 5 test
查看用户当前密码策略信息:
sudo chage -l test
密码到期时的用户交互流程
当密码即将到期或已到期时,用户登录系统会经历不同的提示阶段:
| 阶段 | 提示信息 | 用户操作 |
|---|---|---|
| 正常期 | 无提示 | 正常使用系统 |
| 预警期(过期前) | “Warning: your password will expire in X days”(密码将在X天后过期) | 建议尽快执行passwd命令修改密码 |
| 宽限期(过期后) | “Account expires in X days; please change your password”(账户将在X天后失效) | 必须修改密码才能继续使用系统 |
| 锁定期 | “Authentication token manipulation error”或”Permission denied” | 需联系管理员解锁,或在宽限期内修改密码 |
用户修改密码时,需满足系统 complexity 要求(如长度、字符类型等),具体可通过/etc/pam.d/common-password文件配置。
常见问题与解决方案
-
用户忘记密码且已过期
- 若用户在宽限期内,可联系管理员重置密码;
- 若账户已锁定,需管理员手动解锁并重置密码(
sudo passwd -u test解锁,sudo passwd test重置)。
-
密码策略未生效
- 检查
/etc/shadow文件中对应用户的密码字段是否正确; - 确认
chage命令设置的参数是否覆盖了全局策略(用户级策略优先级高于全局)。
- 检查
-
临时禁用密码过期
对特定用户(如服务账户),可设置密码永不过期:sudo chage -M 99999 test
密码到期策略的最佳实践
- 平衡安全与便利:根据用户角色设置合理的有效期(如普通用户90天,管理员60天),避免因频繁修改密码导致用户使用困难。
- 定期审计:通过
awk -F: '($5 != "" && $5 < 90) {print $1 " " $5}' /etc/shadow命令定期检查即将过期的密码。 - 自动化提醒:结合
cron任务和邮件系统,定期向即将过期的用户发送提醒邮件,#!/bin/bash WARN_DAYS=7 for user in $(awk -v warn=$WARN_DAYS -F: '$5 > 0 && $5 <= warn {print $1}' /etc/shadow); do echo "Your password will expire in $WARN_DAYS days. Please change it soon." | mail -s "Password Expiration Warning" $user done
通过合理配置密码到期策略,Linux系统可以有效降低因长期使用弱密码或泄露密码带来的安全风险,为系统安全提供坚实保障,管理员需根据实际需求调整策略,并引导用户养成良好的密码管理习惯。



















