服务器测评网
我们一直在努力

Linux密码到期了怎么修改?教你解决密码过期登录问题

在Linux系统中,密码安全是保障系统整体安全的重要环节,为了确保用户密码的定期更新,降低密码泄露风险,Linux系统内置了密码过期策略机制,当用户密码到期时,系统会通过提示、强制修改等方式引导用户完成密码更新,这一机制对于企业级服务器和个人系统安全都至关重要,本文将从密码到期机制的工作原理、配置方法、用户交互及常见问题解决等方面进行详细说明。

Linux密码到期机制的工作原理

Linux系统的密码到期策略主要依赖于/etc/shadow文件中的用户密码信息,该文件存储了用户的加密密码、密码最后一次修改时间、密码有效期、密码过期宽限时间等关键信息,其中与密码到期相关的字段包括:

  • 密码修改时间(第5字段):记录自1970年1月1日起,密码最后一次修改的天数。
  • 密码有效期(第6字段):密码保持有效的天数,0表示密码永不过期,大于0的数值则表示密码在修改后该天数内有效。
  • 过期宽限时间(第7字段):密码过期后允许用户登录的天数,若在此期间未修改密码,则账户将被锁定。
  • 账户失效时间(第8字段):自1970年1月1日起,账户失效的天数,超过该日期账户将无法使用。

当用户登录系统时,loginsshd等服务会检查/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文件配置。

常见问题与解决方案

  1. 用户忘记密码且已过期

    • 若用户在宽限期内,可联系管理员重置密码;
    • 若账户已锁定,需管理员手动解锁并重置密码(sudo passwd -u test解锁,sudo passwd test重置)。
  2. 密码策略未生效

    • 检查/etc/shadow文件中对应用户的密码字段是否正确;
    • 确认chage命令设置的参数是否覆盖了全局策略(用户级策略优先级高于全局)。
  3. 临时禁用密码过期
    对特定用户(如服务账户),可设置密码永不过期:

    sudo chage -M 99999 test

密码到期策略的最佳实践

  1. 平衡安全与便利:根据用户角色设置合理的有效期(如普通用户90天,管理员60天),避免因频繁修改密码导致用户使用困难。
  2. 定期审计:通过awk -F: '($5 != "" && $5 < 90) {print $1 " " $5}' /etc/shadow命令定期检查即将过期的密码。
  3. 自动化提醒:结合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系统可以有效降低因长期使用弱密码或泄露密码带来的安全风险,为系统安全提供坚实保障,管理员需根据实际需求调整策略,并引导用户养成良好的密码管理习惯。

赞(0)
未经允许不得转载:好主机测评网 » Linux密码到期了怎么修改?教你解决密码过期登录问题