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

Linux密码不过期怎么设置?如何让密码永久生效

在Linux系统运维管理中,为了确保特定服务账号(如用于应用程序连接、计划任务或自动化脚本的账号)的长期稳定性,避免因密码过期导致服务中断,管理员经常需要将用户密码设置为永不过期,实现这一目标最核心、最标准的操作是通过修改用户的密码时效属性,是将密码最大有效期(Maximum Password Age)设置为无限,最直接且推荐的方法是使用chage命令将-M参数设置为-199999,或者直接编辑/etc/shadow文件将对应字段置空。

Linux密码不过期怎么设置?如何让密码永久生效

使用chage命令设置密码永不过期

chage(change age)命令是Linux系统中用于修改用户密码过期信息的标准工具,它提供了比直接编辑配置文件更安全、更直观的交互方式,要设置密码永不过期,核心在于调整“最大密码使用天数”。

对于需要长期运行的服务账号,建议执行以下命令:
chage -M -1 用户名

在上述命令中,-M选项用于设置密码最大有效天数,将其设置为-1在Linux系统中即代表“无限”或“永不过期”,执行该命令后,系统将不再强制要求该用户更改密码。

除了设置最大天数,为了确保账号的完整配置,通常还会配合其他参数使用,查看当前账号的密码时效信息,可以使用:
chage -l 用户名
此命令会列出密码过期时间、最小间隔天数、最大间隔天数、警告时间等详细信息,方便管理员确认设置是否生效。

若需要将账号恢复为默认的密码过期策略(例如设置为90天过期),只需将-M后的参数修改为具体的天数即可,如chage -M 90 用户名,这种操作方式的可逆性极强,便于运维管理。

直接修改/etc/shadow文件的高级操作

在Linux系统中,用户密码及其时效策略最终存储在/etc/shadow文件中,对于精通Linux底层机制的管理员,直接编辑该文件也是一种高效的解决方案,但需要格外谨慎,因为文件格式错误可能导致用户无法登录。

/etc/shadow文件中的每一行代表一个用户,由冒号分隔为九个字段,与密码过期直接相关的是第五个字段,该字段定义了密码最大有效天数。

Linux密码不过期怎么设置?如何让密码永久生效

要实现密码永不过期,可以按照以下步骤操作:

  1. 备份文件:在进行任何修改前,务必执行cp /etc/shadow /etc/shadow.bak进行备份,防止误操作导致系统崩溃。
  2. 编辑文件:使用vipwvi /etc/shadow命令编辑文件,建议使用vipw,因为它会锁定文件防止并发修改。
  3. 修改字段:找到目标用户所在的行,定位到第五个字段(冒号分隔的第五列),将该字段的内容留空(即两个连续的冒号)或者设置为99999(某些系统以此代表最大值)。

将用户appuser设置为永不过期,修改前后的行对比如下:
修改前:appuser:$6$hash...:18500:0:90:7::: 修改后:appuser:$6$hash…:18500:0::7:::

这里,第五个字段从90变成了空,表示密码永不过期,修改完成后,保存并退出即可,这种方法虽然底层,但在编写脚本批量处理大量用户时,通过sedawk命令结合此逻辑,往往能发挥出极高的效率。

批量处理与自动化脚本解决方案

在企业级环境中,可能存在多个服务账号需要统一设置为密码永不过期,逐个手动执行命令效率低下,此时可以利用Shell脚本结合chage命令实现批量自动化管理。

编写一个简单的脚本,读取包含用户名的列表文件,循环执行设置命令。

#!/bin/bash
# 读取用户列表文件
USER_LIST="users.txt"
while read -r username
do
    # 检查用户是否存在
    if id "$username" &>/dev/null; then
        echo "正在设置用户 $username 密码永不过期..."
        chage -M -1 "$username"
        if [ $? -eq 0 ]; then
            echo "用户 $username 设置成功。"
        else
            echo "用户 $username 设置失败。"
        fi
    else
        echo "用户 $username 不存在,跳过。"
    fi
done < "$USER_LIST"

这种脚本化的解决方案体现了专业运维的自动化思维,不仅提高了工作效率,还减少了人为操作失误的风险,将脚本纳入配置管理工具(如Ansible、SaltStack)中,可以实现跨服务器的统一策略下发。

安全考量与最佳实践建议

虽然设置密码永不过期能解决服务中断的问题,但从网络安全角度来看,这无疑增加了系统的潜在风险,长期不更换的密码一旦泄露,攻击者便拥有持久的访问权限,在实施“密码永不过期”策略时,必须配合其他安全措施来构建防御体系。

Linux密码不过期怎么设置?如何让密码永久生效

严格限制账号权限,对于设置为永不过期的账号,通常仅用于特定服务,应通过sudoers文件或文件权限控制,限制其仅能执行必要的命令,禁止拥有root shell权限。

使用SSH密钥认证替代密码认证,这是最推荐的专业做法,在服务器上禁用该账号的密码登录功能,仅允许通过SSH密钥对进行身份验证,这样,既避免了密码过期的问题,又大大提升了登录的安全性,可以在/etc/ssh/sshd_config中设置PasswordAuthentication no,并针对特定用户进行配置。

实施多因素认证(MFA),对于必须使用密码的关键账号,强制要求结合Google Authenticator等动态令牌进行二次验证,即使密码长期不变,被盗用的风险也能被有效控制。

相关问答

Q1:如何查看Linux系统中某个用户密码是否已设置为永不过期?
A: 可以使用chage -l 用户名命令来查看,在输出结果中,关注“Maximum password age”或“密码过期时间”这一项,如果显示为never或者-1,即表示该用户密码已被设置为永不过期,也可以查看/etc/shadow文件,如果该用户记录的第五个字段为空,同样代表永不过期。

Q2:设置了密码永不过期后,为什么用户登录时仍然提示密码过期?
A: 这种情况通常是因为账号的“账号过期时间”(Account expiration date)已到,而不仅仅是“密码过期时间”,密码永不过期仅解决了密码有效期的问题,但账号本身可能有生命周期限制,可以使用chage -E -1 用户名命令将账号过期时间也设置为永不过期,或者使用chage -l 用户名检查“Account expires”字段,确保其不是处于过去的时间点。
能帮助您更好地管理Linux系统的密码策略,如果您在实际操作中遇到不同发行版(如CentOS、Ubuntu、Debian)的兼容性问题,欢迎在评论区分享您的经验或提出疑问,我们可以共同探讨解决方案。

赞(0)
未经允许不得转载:好主机测评网 » Linux密码不过期怎么设置?如何让密码永久生效