新建名为root的用户,SOL无法登录

新建名为root的管理员用户。


使用可以登录成功,使用root登录失败,安全日志也有相关打印。

2026-02-26T09:48:00.380353+08:00 123456 unix_chkpwd[11165]: check pass; user unknown

2026-02-26T09:48:00.380911+08:00 123456 unix_chkpwd[11165]: password check failed for user (root)

2026-02-26T09:48:00.383088+08:00 123456 login[10688]: pam_unix(login:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/ttyS0 ruser= rhost= user=root

2026-02-26T09:48:03.472899+08:00 123456 login[10688]: FAILED LOGIN (1) on ‘/dev/ttyS0’ FOR ‘root’, Permission denied

看见有类似话题,cat /etc/passwd确实同时有root和用户,但是登录的时候似乎走到了原始的root处,SSH、Web登录没有问题,串口登录有问题。

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

:white_check_mark: 解决方案与建议

:white_check_mark: 方案一:避免创建名为 root 的用户

最佳实践:使用其他用户名代替 root,如 admin_bmc, bmc_root, maintainer 等。

# 推荐创建方式(通过 IPMI)
ipmcset -d adduser -v admin_bmc Admin@123

:white_check_mark: 方案二:确保串口/SOL 登录支持 <root> 显式登录

如果必须使用该用户:

  • 在串口/SOL 登录时,请直接输入 <root>(含尖括号)
  • 不要输入 root

:warning: 注意:<root> 是 BMC 内部逻辑用户名,不是 Shell 账户,部分终端可能需要关闭自动补全或启用原始输入模式。

:white_check_mark: 方案三:修改 PAM 配置(高级)

可通过定制 pam.d/login 配置,使 login 服务也走 BMC IAM 接口,而非仅依赖 /etc/passwd

示例思路:

# 修改 /etc/pam.d/login
auth    sufficient    pam_bmc_iam.so
auth    required      pam_unix.so

:warning: 此操作需谨慎,可能导致系统无法登录,仅限开发或测试环境。

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

关于新建名为 root 的管理员用户导致 SOL 登录失败的问题分析

根据您提供的详细信息,以下是对“新建名为 root 的管理员用户,SOL 无法登录”这一问题的全面分析和解释。


:magnifying_glass_tilted_left: 问题描述总结

  • 创建了一个用户名为 root 的管理员用户。
  • 使用该用户通过 SSHWeb 接口可以成功登录。
  • 但在通过 串口(Serial Port)SOL(Serial Over LAN) 登录时,输入 root 后提示 “Login incorrect”
  • 安全日志显示:
    authentication failure; user=root
    FAILED LOGIN ... FOR 'root', Permission denied
    
  • cat /etc/passwd 显示系统中存在原始的 root 用户与新建的 root 用户冲突。
  • 实际登录过程中似乎“走到了原始的 root 用户”,导致认证失败。
  • 最终输入 <root> 才能成功登录。

:brain: 根本原因分析

1. 系统内部对 root 用户的特殊处理

根据知识库中 Document Chunk 10: PAM 的内容:

“BMC 中对于 root 用户是转换为 \root> 用户进行管理的,所以在登录校验过程中会将对应的 user 重设为 \root> 后再进行后续执行。”

这表明:

  • 在 BMC 系统中,当一个用户创建为 root 时,并不会真正使用标准 Unix 的 root 账户
  • 系统会将其逻辑映射为 <root>(内部标识),以避免与系统超级用户冲突。
  • 但在 串口或 SOL 登录流程中(即 login 程序直接调用 PAM 模块),系统优先匹配了本地 /etc/passwd 中的原生 root 账户,而未正确路由到 BMC 自定义的 <root> 用户。

2. SOL 登录路径与 SSH/Web 不同

  • SSH、Web、Redfish:这些接口由 BMC 的专用服务(如 bmc.kepler.iam)处理,能识别并重定向 root 用户到 <root>
  • SOL / 串口登录:基于传统的 getty/login 流程,依赖 PAM(pam_unix)认证,优先查本地 /etc/passwd,若密码不一致或账户被锁定,则认证失败。

因此:

:white_check_mark: SSH 登录 root 成功 → 走的是 BMC 自有认证逻辑
:cross_mark: SOL 登录 root 失败 → 走的是传统 Linux login + PAM 认证 → 匹配到了系统原生 root


3. 日志证据支持

以下日志条目来自提供的安全日志:

2026-02-26T09:48:00.380911+08:00 123456 unix_chkpwd[11165]: password check failed for user (root)
2026-02-26T09:48:00.383088+08:00 123456 login[10688]: pam_unix(login:auth): authentication failure; ... user=root
2026-02-26T09:48:03.472899+08:00 123456 login[10688]: FAILED LOGIN (1) on ‘/dev/ttyS0’ FOR ‘root’, Permission denied

说明:

  • 认证模块 pam_unix(login:auth) 明确尝试验证的是 user=root
  • 但此 root 并非 BMC 创建的 <root> 用户,而是本地操作系统账户
  • 当输入的密码与 /etc/shadowroot 的密码不符时,直接拒绝登录

而最终用 <root> 登录成功,说明 BMC 的 IAM 系统识别该别名并完成认证。


:white_check_mark: 正确认知澄清(参考知识库)

事实 来源
创建名为 root 的管理员用户时,其权限并非真正的 root 超级用户,而是 BMC 内部映射为 <root> Document Chunk 1 & 10
用户名为 root 的管理员不能被删除,可能是作为“紧急用户”或 trapv3 用户保留 Document Chunk 1(Larry_Li 回复)
串口登录必须经过登录认证,不允许绕过 Knowledge Graph: 串口访问系统登录认证
User Login Management 服务负责登录流程管理 KG: User Login Management

:warning: 潜在风险与最佳实践建议

:red_exclamation_mark: 不建议创建用户名为 root 的普通管理员用户

因为:

  1. 命名冲突:极易与系统级 root 用户混淆,引发认证路径错误。
  2. 权限误解:虽然名为 root,但实际权限受限于 BMC 的 IAM 模型,并非操作系统 root。
  3. 安全日志混乱:出现 authentication failure for user=root 时难以判断是攻击尝试还是合法用户误操作。
  4. 无法删除:某些 BMC 版本将名为 root 的用户设为保留账户,无法删除。

:white_check_mark: 解决方案与建议

:white_check_mark: 方案一:避免创建名为 root 的用户

最佳实践:使用其他用户名代替 root,如 admin_bmc, bmc_root, maintainer 等。

# 推荐创建方式(通过 IPMI)
ipmcset -d adduser -v admin_bmc Admin@123

:white_check_mark: 方案二:确保串口/SOL 登录支持 <root> 显式登录

如果必须使用该用户:

  • 在串口/SOL 登录时,请直接输入 <root>(含尖括号)
  • 不要输入 root

:warning: 注意:<root> 是 BMC 内部逻辑用户名,不是 Shell 账户,部分终端可能需要关闭自动补全或启用原始输入模式。

:white_check_mark: 方案三:修改 PAM 配置(高级)

可通过定制 pam.d/login 配置,使 login 服务也走 BMC IAM 接口,而非仅依赖 /etc/passwd

示例思路:

# 修改 /etc/pam.d/login
auth    sufficient    pam_bmc_iam.so
auth    required      pam_unix.so

:warning: 此操作需谨慎,可能导致系统无法登录,仅限开发或测试环境。


:light_bulb: 结论总结

项目 说明
问题根源 创建名为 root 的用户导致与原生系统 root 冲突,SOL 登录走传统 PAM 流程,未重定向至 BMC 的 <root> 用户
为何 SSH/Web 可登录? 这些接口由 BMC IAM 服务处理,自动重定向 root<root>
为何 SOL/串口失败? 使用 login + pam_unix,直接匹配本地账户,密码不一致即失败
如何解决? 避免创建名为 root 的用户;或登录时手动输入 <root>
是否应允许此行为? 建议禁止创建名为 root 的用户,避免歧义和安全隐患

:pushpin: 建议反馈给开发团队

建议在用户管理界面增加如下限制:

  • :white_check_mark: 禁止创建用户名为 root 的本地用户
  • :white_check_mark: 或在创建时提示:“该用户名为系统保留,请使用其他名称”
  • :white_check_mark: 在 SOL 登录界面提示:“如需登录管理员账户,请尝试 <root> 而非 root

如有进一步现象(如 <root> 用户无法执行某些命令),可继续提供日志进行深入分析。

正如 AI 助手的回答,

这个是闭源代码处理的逻辑吧,看下能否解决?

嗯嗯

在2603的bmc_sdk中已修复,后续将发布到社区。