Linux 运维中怎么排查由于系统时间错乱导致 PAM 密码过期判断逻辑失效的故障

云晨小哥_9980

云晨小哥_9980

2026-09-26

716人浏览

原创

系统时间错乱会导致pam密码过期判断失准,因chage和pam_unix.so等模块依赖系统时间与/etc/shadow日期字段做算术比较;时间偏差数小时或跨天会使未过期密码被误判为过期,日志仅显示“authentication token is no longer valid”等模糊错误。

linux 运维中怎么排查由于系统时间错乱导致 pam 密码过期判断逻辑失效的故障

系统时间错乱会导致 PAM 的密码过期判断完全失准——因为 chage 和 PAM 模块(如 pam_unix.so、pam_faillock.so)在验证密码是否过期时,全部依赖系统当前时间与 /etc/shadow 中的日期字段(如 passwd_last_changed、passwd_max_days)做算术比较。一旦系统时间严重偏差(比如快了3个月或慢了2周),原本未过期的密码会被判定为“已过期”,或相反,过期密码被误认为仍有效。这种故障隐蔽性强,日志里常只显示模糊的 PAM authentication failed 或 Authentication token is no longer valid,却找不到密码策略变更痕迹。

确认系统时间是否异常

先排除硬件时钟和系统时钟不同步这个最常见源头:

  • 运行 date 查看当前系统时间,注意年月日、时分秒及时区(如 CST 或 UTC)
  • 运行 hwclock --show 查看硬件时钟(RTC)时间,对比两者是否一致(允许几秒误差,但不可差数小时或跨天)
  • 检查 NTP 服务状态:systemctl status chronyd(RHEL/CentOS 8+)或 systemctl status ntpd(旧版),确认服务正在运行且同步正常(chronyc tracking 中 System time 偏移应
  • 若使用 systemd-timesyncd:timedatectl status,关注 System clock synchronized: yes 和 NTP service: active

检查 /etc/shadow 中的时间字段是否被时间错乱“污染”

系统时间错误期间执行过 passwd 或 chage,可能导致 /etc/shadow 第三列(密码最后修改时间)写入错误值,后续即使时间修复,PAM 仍按错误基准计算过期:

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载
  • 用 sudo chage -l username 查看用户密码状态,重点关注 Last password change 和 Password expires 两行——如果显示的日期明显不合理(如 “Jan 01, 1970”、“Dec 31, 2025” 或未来一年),说明时间错乱期间更新过密码
  • 直接查看 /etc/shadow 对应用户的第三字段(用 sudo awk -F: '$1=="root"{print $3}' /etc/shadow),该值是自 Unix 纪元(1970-01-01)起的天数,可换算验证:例如 20100 ≈ 2025-01-15;若数值为 0、负数或极大值(>25000),基本可断定被错误写入

验证 PAM 是否因时间问题拒绝认证

时间错乱引发的 PAM 失效,通常会在认证日志中留下关键线索:

  • 查 /var/log/secure(CentOS/RHEL)或 /var/log/auth.log(Ubuntu/Debian),搜索关键词:password expired、Authentication token is no longer valid、account expired
  • 重点观察错误发生时的**日志时间戳**是否与你当前 date 输出不一致——比如日志里显示 Sep 10,但 date 是 Sep 15,说明系统时间已漂移,日志本身也不可信
  • 临时启用更详细 PAM 日志:编辑 /etc/pam.d/sshd,在第一行加入 auth [default=ignore] pam_echo.so debug msg="PAM auth start for ${USER}"(需安装 pam_echo),重启 sshd 后重试登录,观察输出是否与预期时间逻辑矛盾

修复与预防措施

时间错乱导致的密码过期误判,不能只改时间,还需清理残留影响:

  • 校准时间后,对所有受影响用户重置密码修改时间:sudo chage -d $(date +%Y-%m-%d) username(将 last password change 设为今天)
  • 若需长期禁用密码过期(如 root 用于自动化任务),用 sudo chage -M -1 username(-1 表示永不过期),而非单纯调大天数
  • 检查并加固 NTP 配置:确保 /etc/chrony.conf 或 /etc/ntp.conf 至少配置 3 个可靠上游服务器,添加 makestep 1 3(chrony)或 tinker stepout 120(ntpd)允许大步长校正
  • 部署时间监控:用 cron 每 5 分钟执行 if [ $(ntpstat | grep -c "synchronised") -eq 0 ]; then echo "NTP unsync at $(date)" | mail -s "NTP Alert" admin@example.com; fi

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3670

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3193

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2253

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5430

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5082

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3033

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2545

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2759

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习