导读:本期聚焦于小伙伴创作的《Linux用户密码过期时间设置教程:从永久不过期到指定周期管理》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux用户密码过期时间设置教程:从永久不过期到指定周期管理》有用,将其分享出去将是对创作者最好的鼓励。

Linux设置用户密码过期时间或永不过期的具体方法

在Linux系统运维过程中,合理设置用户密码的过期时间是保障系统安全的重要措施。密码过期可以强制用户定期更新密码,降低密码泄露带来的安全风险;而针对一些特殊场景(如服务账户、自动化脚本使用的账户),设置密码永不过期则可以避免因为密码过期导致服务中断。本文将详细介绍不同场景下设置用户密码过期时间的操作方法。

一、查看当前用户密码过期信息

在修改密码过期时间之前,我们可以先查看当前用户的密码过期相关配置,常用的查看命令有两个:

  • chage -l 用户名:查看指定用户的密码策略详细信息,包括密码最后修改时间、过期时间、过期前警告天数等。

  • passwd -S 用户名:查看用户密码的状态,包含密码是否设置、密码过期相关的基础信息。

例如查看用户test的密码策略,执行以下命令:

chage -l test

命令输出会包含以下信息:

  • Last password change:密码最后修改时间

  • Password expires:密码过期时间

  • Password inactive:密码失效时间(过期后多久账户被禁用)

  • Account expires:账户过期时间

  • Minimum number of days between password change:密码最短使用天数,即修改密码后多少天内不能再次修改

  • Maximum number of days between password change:密码最长使用天数,即密码过期周期

  • Number of days of warning before password expires:密码过期前警告天数

二、设置用户密码永不过期

如果需要将某个用户的密码设置为永不过期,有两种常用方法:

方法1:使用chage命令设置

chage命令是管理用户密码过期策略的专用工具,通过修改密码最长使用天数为99999(Linux系统中通常将99999视为永不过期的标识),即可实现密码永不过期。

执行以下命令设置用户test密码永不过期:

chage -M 99999 test

参数说明:-M后面跟的参数是密码的最大使用天数,设置为99999后,密码基本不会过期。

设置完成后,可以再次执行chage -l test查看配置,此时Password expires项会显示为never。

方法2:修改/etc/shadow文件

/etc/shadow文件存储了系统所有用户的密码相关策略信息,每一行对应一个用户,格式为:

用户名:加密密码:最后修改密码的天数:密码最短使用天数:密码最长使用天数:警告天数:失效天数:账户过期天数:保留字段

要将用户密码设置为永不过期,只需要将第5个字段(密码最长使用天数)修改为99999即可。例如用户test在/etc/shadow中的行原本为:

test:$6$xxxxxx:19800:0:90:7:10::

将第5个字段的90修改为99999:

test:$6$xxxxxx:19800:0:99999:7:10::

注意:修改/etc/shadow文件需要root权限,且修改前建议备份该文件,避免误操作导致用户无法登录。

三、设置用户密码指定时间后过期

如果需要让用户密码在指定的天数后过期,同样可以使用chage命令或者修改/etc/shadow文件实现。

方法1:使用chage命令设置

假设需要设置用户test的密码在30天后过期,执行以下命令:

chage -M 30 test

如果需要同时设置密码过期前7天开始警告,密码过期后3天账户失效,可以执行:

chage -M 30 -W 7 -I 3 test

参数说明:

  • -M:密码最大使用天数

  • -W:密码过期前警告天数

  • -I:密码过期后多少天账户失效

方法2:修改/etc/shadow文件

例如设置用户test密码30天后过期,过期前7天警告,过期后3天失效,只需要将/etc/shadow中test对应的行第5个字段改为30,第6个字段改为7,第7个字段改为3即可:

test:$6$xxxxxx:19800:0:30:7:3::

四、批量设置用户密码过期策略

如果需要批量修改多个用户的密码过期时间,可以通过shell脚本实现。例如批量将用户列表中的用户密码设置为90天过期:

#!/bin/bash
# 用户列表文件,每行一个用户名
USER_LIST="user_list.txt"

if [ ! -f "$USER_LIST" ]; then
    echo "用户列表文件不存在"
    exit 1
fi

while read -r user; do
    if id "$user" >/dev/null 2>&1; then
        chage -M 90 "$user"
        echo "已设置用户 $user 密码90天过期"
    else
        echo "用户 $user 不存在,跳过设置"
    fi
done < "$USER_LIST"

将上述脚本保存为set_password_expire.sh,创建user_list.txt文件写入需要设置的用户名,赋予脚本执行权限后运行即可:

chmod +x set_password_expire.sh
./set_password_expire.sh

五、注意事项

  • 所有修改密码过期策略的操作都需要root权限,普通用户无权限执行。

  • 修改/etc/shadow文件前务必备份,避免格式错误导致所有用户无法登录。

  • 服务账户、自动化任务使用的账户建议设置密码永不过期,避免密码过期导致服务中断。

  • 普通用户账户建议设置合理的密码过期周期(如30-90天),平衡安全性和使用便利性。

Linux密码过期chage命令shadow文件用户管理密码策略

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。