在Linux系统中,密码管理是保障系统安全的重要环节,其中密码过期策略的设置直接关系到账户的安全性,默认情况下,许多Linux发行版会启用密码过期功能,强制用户定期更换密码,以降低密码泄露带来的风险,但在某些特定场景下,如服务账户、自动化脚本账户或测试环境账户,可能需要设置密码永不过期,以确保系统的稳定运行,本文将详细探讨Linux系统中密码不过期策略的设置方法、适用场景及注意事项。

密码过期策略的默认机制
Linux系统通过/etc/login.defs和/etc/shadow两个文件管理密码策略,在/etc/login.defs中,可以定义全局的密码过期参数,如PASS_MAX_DAYS(密码最长有效期)、PASS_MIN_DAYS(密码最小使用间隔)和PASS_WARN_AGE(密码过期前警告天数),这些参数对新创建的用户账户生效,但已存在的用户账户可能不受影响,而/etc/shadow文件则记录了每个用户的密码加密信息、上次修改密码时间、密码过期时间等,其中第7字段(密码过期时间)和第8字段(账号过期时间)分别控制密码和账户的失效时间。
当密码过期时间被设置为0时,表示密码已过期;若设置为99999,则代表密码永不过期,系统会在用户登录时检查这些字段,若密码已过期,将强制用户修改密码或拒绝登录。
设置密码永不过期的场景
- 服务账户:用于运行系统服务或应用程序的专用账户(如Apache、MySQL等),这类账户通常由系统或脚本自动管理,频繁更换密码可能导致服务中断或认证失败。
- 自动化脚本账户:用于执行定时任务或自动化运维的账户,若密码过期,可能导致脚本执行失败,影响业务流程。
- 测试环境账户:在开发或测试环境中,频繁更换密码可能增加开发人员的工作负担,影响测试效率。
- 历史遗留账户:某些长期运行的系统账户可能因业务需求需要保持密码稳定,此时可设置密码永不过期,但需配合其他安全措施(如访问控制、日志审计)。
设置密码永不过期的具体方法
使用chage命令修改单个用户
chage命令是Linux系统中修改用户密码策略的常用工具,要将用户testuser的密码设置为永不过期,可以执行以下命令:
sudo chage -M 99999 testuser
其中-M参数用于设置密码最大有效期,99999代表一个较大的数值,近似于永不过期,若需彻底移除过期限制,可使用:
sudo chage -M -1 testuser
/etc/shadow文件中对应用户的密码过期时间字段将被设置为空。

修改/etc/shadow文件(需谨慎操作)
直接编辑/etc/shadow文件可以实现更灵活的配置,但操作不当可能导致用户无法登录,步骤如下:
- 以root身份编辑文件:
sudo vi /etc/shadow
- 找到目标用户所在行,
testuser:$6$abc123...::0:99999:7::: - 将第7字段的数值修改为99999或清空(表示永不过期),保存退出。
新建用户时设置默认策略
通过修改/etc/login.defs文件,可以为新创建的用户设置默认的密码过期策略,添加以下行:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
这样,后续创建的新用户密码将默认在99999天后过期,且在过期前7天开始警告。
使用useradd命令的参数
在创建用户时,可通过-M和-k参数直接指定密码有效期。
sudo useradd -M 99999 testuser
密码永不过期的风险与应对措施
尽管密码永不过期在某些场景下具有便利性,但也会带来潜在的安全风险,如密码长期使用可能被破解、泄露或暴力破解,为降低风险,需采取以下措施:

- 限制账户权限:为密码不过期的账户分配最小必要权限,避免使用root账户。
- 启用双因素认证(2FA):结合密码和动态令牌或证书认证,提高账户安全性。
- 定期审计账户:通过
last、lastb命令检查用户登录记录,或使用logwatch、fail2ban等工具监控异常行为。 - 加密存储密码:确保密码以加密形式存储在
/etc/shadow中,避免明文泄露。 - 网络隔离:对于服务账户,可将其部署在隔离网络中,减少暴露面。
恢复密码过期策略的方法
若需将永不过期的密码恢复为默认策略,可使用chage命令重新设置有效期。
sudo chage -M 90 testuser # 设置密码90天后过期
可查看当前用户的密码策略信息:
sudo chage -l testuser
输出结果将显示密码上次修改时间、过期时间等详细信息。
Linux系统中密码不过期策略的设置需结合实际需求和安全要求权衡利弊,在必要场景下,通过chage命令或配置文件调整密码有效期,可以保障系统的稳定运行;但必须意识到潜在的安全风险,并辅以权限控制、审计监控等防护措施,无论采用何种策略,定期审查账户密码状态都是系统安全管理的重要环节,只有平衡便利性与安全性,才能构建既高效又可靠的Linux系统环境。




















