讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux如何设置密码过期策略_Linux密码过期策略设置教程

落晨小哥_5941

落晨小哥_5941

发布时间:2026-04-15 10:56:06

|

281人浏览过

|

来源于php中文网

原创

linux如何设置密码过期策略_linux密码过期策略设置教程

chage 是设置单个用户密码过期策略的核心命令,但直接敲 chage -M 90 username 并不能让所有新用户自动继承该策略——它只改当前用户。真正起效的,是 `/etc/login.defs` 配置 + chage 补漏 + PAM 模块协同。

如何用 chage 快速修改已有用户的密码有效期

这是最常用、最直接的操作,适合运维人员临时调整或批量脚本处理。

  • chage -M 90 -m 7 -W 14 username:设密码最多用 90 天、最少隔 7 天才能改、到期前 14 天开始警告
  • chage -d 0 username:强制用户下次登录必须改密码(last password change 被设为 epoch 时间 0)
  • chage -E 2026-12-31 username:账户级硬截止(注意不是密码过期,是整个账号禁用)
  • 执行后务必用 chage -l username 核对输出,重点看 Password expiresAccount expires 两行是否符合预期
  • 常见错误:把 -M 设成 0 或负数,会导致密码立即过期;设成 9999910000 才算“永不过期”,-1-M 上无效

为什么改了 /etc/login.defs 新建用户还是不生效

因为部分发行版(如较新 Ubuntu)默认不读取 PASS_MAX_DAYS 等字段,而是依赖 PAM 的 pam_pwquality.sopam_unix.so 行为。

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载
  • 先确认创建用户时是否调用了 useradd:只有 useradd(非 adduser 交互脚本)会严格读取 /etc/login.defs
  • 检查 /etc/login.defs 中的 PASS_MAX_DAYSPASS_MIN_DAYSPASS_WARN_AGE 是否已取消注释并设值(如 PASS_MAX_DAYS 90
  • 若用 adduser,它可能绕过 /etc/login.defs,此时需在 /etc/adduser.conf 中同步配置 ADD_USER_CMD 或直接改用 useradd
  • 新建用户后立刻运行 chage -l newuser,如果 Maximum number of days between password change 显示 99999,说明 /etc/login.defs 没被读取

密码过期但用户无法改密码?检查 PAM account 堆栈

即使 chage 设置正确,用户登录后仍提示 Your password has expired. You must change it now. 却卡在无 TTY 环境(如 SSH 非交互式连接、cron 任务),本质是 PAM account 类型模块未启用过期检查。

  • 打开 /etc/pam.d/sshd(或 /etc/pam.d/login),确认存在这一行:account required pam_unix.so
  • 缺这行会导致系统跳过 /etc/shadow 中的过期字段校验,用户永远收不到过期提示,或提示了却无法触发改密流程
  • 某些最小化安装(如 Alpine、CoreOS)默认不启用该模块,需手动添加
  • 验证方式:用普通用户 SSH 登录一个已过期密码的账号,如果直接拒绝登录(而非弹出改密提示),大概率是 account 模块缺失

强制首次登录改密后,密码策略为何没生效

执行 passwd --expire usernamechage -d 0 username 后,用户确实会被迫改密,但新密码仍可能绕过复杂度要求——问题出在 PAM password 堆栈顺序和模块类型上。

  • pam_pwquality.so 必须放在 pam_unix.so 之前,否则 pam_unix.so 先写入密码,pam_pwquality.so 的校验就失效了
  • /etc/pam.d/common-password(Debian/Ubuntu)或 /etc/pam.d/system-auth(RHEL/CentOS)中,确保类似这行在靠前位置:password requisite pam_pwquality.so minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
  • 避免混用 pam_cracklib.sopam_pwquality.so,二者功能重叠且冲突,现代系统推荐只用后者
  • 改完配置后无需重启服务,PAM 规则即时生效;但已启动的 shell 进程不会重新加载,需新开终端测试
chage 参数本身简单,但真正落地时,/etc/login.defs 决定默认值、PAM account 模块决定是否检查、PAM password 模块决定是否强制复杂度——三者缺一不可。最容易被忽略的是 PAM account 行的缺失,它会让所有过期策略变成“纸上谈兵”。

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

9064

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

5501

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2015

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

3408

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4074

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

3191

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4537

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3542

2023.11.13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn