bios定制化操作后,临时用户无法立刻删除

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

问题描述

BIOS在做定制时创建了一个UserID为17临时用户,在完成BIOS定制后脚本会自动删除该用户。但是现在用户无法删除,返回值异常

该定制化脚本时华为那边直接写的,目前BMC这边分析没看出来问题。直接执行命令时可用删除用户的,但是定制化执行后,脚本调用同意的命令就失败了。工具端定制日志与BMC一键导出日志见附件,其中用户删除命令操作如下:

[root@localhost unicfg]# ipmicmd -k "f 00 06 45 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" smi 0 : 0f 07 00 45 00
0f 07 00 45 ff

del_BMC_USER_Fail_log.txt (6.6 KB)
DH-RS2297ted-G02_1_20260622-0759.tar.gz (5.3 MB)

答案内容由AI生成,仅供参考:
根据您的要求,从回答内容中提取的“结论”章节(包括标题和正文)如下:

结论

最可能的原因:临时用户被脚本创建后,由于某些定制化操作或未清理的在线会话,导致 OnlineDeletable 属性为 false,从而删除失败。这不是 BMC 功能缺陷,而是状态同步问题。

建议:

  1. 在脚本删除用户前,增加对 OnlineDeletable 和 IsOnline 属性的校验。
  2. 如果用户被判定为在线,可先通过 ipmicmd 或 Redfish 接口强制登出用户(如删除其所有会话)。
  3. 参考上下文中的解决方案:将日志级别从 debug 调整为 notice 以减少干扰,并检查是否有残留的 IPMI 或 KVM 会话。

若问题持续,请提供更详细的 BMC 日志(如 app.log 和 framwork.log),以便进一步定位是否存在其他组件异常(如 pci_e_device 或 account 启动失败)。

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

问题分析

根据您提供的描述和日志,并结合上下文中的相关信息,该问题可能由以下原因导致:

1. 用户处于在线状态,导致 OnlineDeletable 属性为 false

  • 上下文依据:在 【已评审】支持当前用户不可删除协作接口评审 中明确说明,OnlineDeletable 属性用于控制在线用户是否可删除,默认值为 true。当用户处于登录状态时(如 Web、SSH、KVM、Redfish 会话),该属性会被临时设置为 false,从而阻止删除操作。
  • 日志证据:您提供的调试日志中出现了 Delete user17's username (HKZYB) failed,这与上下文中描述的“概率性出现用户无法删除”现象高度一致。上下文中的日志片段(topic 5463)也显示类似错误:
    1922 2026-04-01 15:02:20 IPMI, N/A@HOST, iam, Delete user17's username (HKZYB) failed
    

2. 会话残留导致用户被误判为在线

  • 上下文说明:在 topic 5463 中,提问者提到 iam 资源树下 session 路径没有该用户的会话,但用户仍被判定为在线。这可能是因为其他通道(如 IPMI 或带外管理)残留了会话状态。
  • 您的日志中,删除命令通过 ipmicmd(即 IPMI 通道)执行,但用户可能之前通过其他方式(如 Redfish、SSH)登录过,且会话未被正确清理。IPMI 命令本身不会自动检查所有会话来源,但 iam 组件可能将用户标记为在线。

3. 定制化脚本与 BMC 状态未同步

  • 上下文提示:您的脚本通过 ipmicmd 发送 OEM 命令删除用户,但 OnlineDeletable 属性由 iam 组件管理,其状态可能受定制化操作影响。例如,BIOS 定制过程中可能通过特定接口修改了该属性(如设置为 false),而脚本未重新检查状态。
  • 解决方法:建议在删除前通过 Redfish 或 IPMI 查询 OnlineDeletable 和 IsOnline 属性,确保用户可删除。如果用户在线,先强制登出用户或等待会话超时。

4. 补充排查步骤(基于上下文已知方法)

  • 检查 OnlineDeletable 属性:可通过 Redfish 或 D-Bus 接口查看:
    busctl --user get-property bmc.kepler.AccountService /bmc/kepler/AccountService/Accounts/<user17> bmc.kepler.AccountService.ManagerAccount OnlineDeletable
    
  • 检查用户是否在线(IsOnline 属性):
    busctl --user get-property bmc.kepler.AccountService /bmc/kepler/AccountService/Accounts/<user17> bmc.kepler.AccountService.ManagerAccount IsOnline
    
  • 强制清理会话:如果用户在线但无明显会话,可尝试重启 iam 服务或执行 ipmcget -d dia 收集完整诊断日志进一步分析。

结论

最可能的原因:临时用户被脚本创建后,由于某些定制化操作或未清理的在线会话,导致 OnlineDeletable 属性为 false,从而删除失败。这不是 BMC 功能缺陷,而是状态同步问题。

建议:

  1. 在脚本删除用户前,增加对 OnlineDeletable 和 IsOnline 属性的校验。
  2. 如果用户被判定为在线,可先通过 ipmicmd 或 Redfish 接口强制登出用户(如删除其所有会话)。
  3. 参考上下文中的解决方案:将日志级别从 debug 调整为 notice 以减少干扰,并检查是否有残留的 IPMI 或 KVM 会话。

若问题持续,请提供更详细的 BMC 日志(如 app.log 和 framwork.log),以便进一步定位是否存在其他组件异常(如 pci_e_device 或 account 启动失败)。

。。这日志写得很清楚阿

移动定制化开启后对在线用户有不可删除策略,你想删除的用户挂着一个redfish会话