【求助】【密码有效期问题】配置密码有效期为12天,密码最短使用期为1天,但超时后用户仍然可以正常登录

// 此模板仅供参考,如果不适用可以修改

问题描述

配置用户密码有效期为12天,密码最短使用期为1天,但超时后密码仍然有效,用户仍然可以正常登录

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2512]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. 在web页面“用户&安全”→“安全配置”→“安全增强”界面下的“密码设置”栏下,配置“密码有效期”为12天,“密码最短使用期”为1天:

  2. 登陆host OS下,执行修改RTC时间并使能bmc同步RTC时间:

  3. 注销BMC web用户登录,并重新登录BMC web:

期望结果

密码过期后,无法使用该用户名和密码通过redfish,BMC web,ipmi命令访问BMC

实际结果

密码过期后,该用户名和密码通过redfish,BMC web,ipmi命令访问BMC仍能正常访问

passwd-MK1041_PR210K210811SZ00013_20260606-1031.rar.tar (9.5 MB)

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

答案内容由AI生成,仅供参考:

总结

可能原因 说明
用户是紧急登录用户 紧急用户不受密码有效期限制,符合当前现象
有效期配置未应用 全局或用户级PasswordExpiration未更新,仍为默认无限制
系统时间不准 时间不同步导致过期判断失效
软件缺陷 特定版本可能存在密码过期策略未强制实施的问题

建议优先检查 紧急登录用户设置用户实际的PasswordExpiration值,这通常是导致"密码过期仍能登录"的直接原因。

点击此处查看详细分析解答

问题分析

根据您提供的问题描述(密码有效期配置为12天,最短使用期1天,但过期后用户仍能正常登录),结合所提供的知识库上下文,可能的原因如下:

1. 用户被设置为“紧急登录用户”

知识库(文档块1、搜索结果第2条)明确指出:

紧急登录用户:必须为管理员用户,设置某个管理员用户为紧急登录用户后,该用户不受密码有效期、登录规则和登录接口限制,用于紧急情况下登录BMC。

如果您的登录用户(如Administrator)已被配置为“紧急登录用户”,则即使密码已过期,系统也不会强制要求修改密码或阻止登录。请检查 用户&安全 → 安全配置 → 安全增强 页面中的“紧急登录用户”设置是否包含了该用户。

2. 密码有效期配置未正确应用到用户账户

  • 在openUBMC中,密码有效期由 MaxPasswordValidDays(全局最大有效期)和每个用户的 PasswordExpiration(剩余天数)共同控制。
  • 知识库显示 PasswordExpiration 默认值为 4294967295(即无限制),且 PasswordValidityDays 在某些场景下可能为 null(不强制执行)。
  • 如果仅修改了全局 MaxPasswordValidDays,而未同步更新对应用户的 PasswordExpiration,可能导致过期策略未生效。
  • 建议通过命令查询当前配置:
    busctl --user get-property bmc.kepler.account /bmc/kepler/AccountService bmc.kepler.AccountService MaxPasswordValidDays
    busctl --user get-property bmc.kepler.account /bmc/kepler/AccountService/Accounts/1 bmc.kepler.AccountService.ManagerAccount PasswordExpiration
    

3. 系统时间不同步导致过期判断错误

  • 密码有效期的计算依赖系统时钟。如果BMC时间与RTC(硬件时钟)不一致,或NTP服务未正确同步,可能导致“当前时间”与“上次密码修改时间”的差值计算错误,使得密码看似未过期。
  • 操作步骤中提到了“修改RTC时间并使能BMC同步RTC时间”,若同步失败或时间跳跃,可能造成过期判断异常。请检查BMC的当前时间是否准确。

4. 已知版本缺陷

  • 知识库中提到,openUBMC 25.09 版本曾出现“不保留配置升级后带外IPMI命令发不通”等问题,涉及密码认证的静默拒绝。虽然与您的问题不完全一致,但说明该版本可能存在密码策略相关的实现缺陷。
  • 您使用的环境是 OpenUBMC 2512 版本,可查阅该版本已知问题列表,或尝试升级到最新修复版本。

建议排查步骤

  1. 确认用户是否为紧急登录用户
    登录BMC Web界面,进入 用户&安全 → 安全配置 → 安全增强,查看“紧急登录用户”列表中是否包含您正在使用的用户名。

  2. 检查密码有效期实际值
    使用以下命令查看当前有效期设置:

    # 查看全局最大有效期
    busctl --user get-property bmc.kepler.account /bmc/kepler/AccountService bmc.kepler.AccountService MaxPasswordValidDays
    
    # 查看某个用户的剩余有效期(需替换用户路径)
    busctl --user get-property bmc.kepler.account /bmc/kepler/AccountService/Accounts/1 bmc.kepler.AccountService.ManagerAccount PasswordExpiration
    
  3. 验证系统时间同步
    执行命令 timedatectldate 查看BMC当前时间,确认与预期时间一致。

  4. 尝试重新保存配置或重启服务
    在Web界面操作后,建议保存并退出,再重新登录确认配置是否持久化。必要时可重启BMC服务或整个设备。


总结

可能原因 说明
用户是紧急登录用户 紧急用户不受密码有效期限制,符合当前现象
有效期配置未应用 全局或用户级PasswordExpiration未更新,仍为默认无限制
系统时间不准 时间不同步导致过期判断失效
软件缺陷 特定版本可能存在密码过期策略未强制实施的问题

建议优先检查 紧急登录用户设置用户实际的PasswordExpiration值,这通常是导致“密码过期仍能登录”的直接原因。

@baode_chiweike 测试方法有误。 OS 修改时间, bmc 感知到时间跳变后, 业务的计时也会跟着跳变, 因此密码有效期会从跳变后的时间重新算起。

要测试这个, 先BMC重启, 在BMC重新启动前,在OS侧修改时间。

好,我验证试试

嗯,试了,反馈下结果

重启bmc 期间,修复os 侧时间,起来要等一会才可以提示密码过期。bmc 刚起来马上登录会登录成功,估计是还没有跑完所有业务?

会登录成功, 是web登录么?

密码过期的业务是在account组件,你有时间也可以看下源码实现。

刚起来,登录是可以成功,再次退出来登录就提示密码过期

user_time_monitor_func方法里, 在启动2分钟之后才开启的轮询检查。

嗯嗯,好的,多谢。看到这个代码了。