You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

32位IBM Informix SE在64位RHEL 8.7结合SSSD+AD时的认证错误问题排查及求助

32位IBM Informix SE在64位RHEL 8.7结合SSSD+AD时的认证错误问题排查及求助

我目前碰到了一个头疼的问题,环境是64位RedHat 8.7 Linux上运行32位IBM Informix SE DBMS,具体情况如下:

正常使用场景

本地定义的用户(比如UID为505的billd)使用完全正常,执行命令:

dbaccess stores7 sel_order

可以顺利从Informix自带的演示数据库stores7中获取正确结果。

异常报错场景

系统通过SSSD集成了微软Active Directory(AD)服务,AD用户(比如用户名willaim.donaldson@researchgroup.example.com,UID为507735929)登录后,执行同样的dbaccess命令,会触发Informix错误:

25590 - "authentication error"

官方对该错误的说明是:

This error indicates that an invalid user ID or password was used to connect to the database server. Redefine a valid user ID and password.

自我排查思路

我用strings工具检查了dbaccess二进制文件,发现它调用了getpwuid和getpwnam这两个用户信息查询函数,因此怀疑问题可能出在以下几个方面:

  • UID位数兼容问题:本地用户的UID(505)可以放进16位整数,但AD用户的UID(507735929)需要32位整数,会不会32位的Informix程序对UID的处理存在位数限制?
  • 用户名长度限制:AD用户名长度达到32字符,会不会超过了Informix预期的用户名长度上限(比如10字符以内)?
  • 本地用户条目缺失:AD用户的信息是通过SSSD动态获取的,/etc/passwd中没有对应的静态条目,会不会Informix依赖本地passwd文件的记录?
  • 32位SSSD依赖缺失:系统是64位的,可能缺少让32位程序正常调用SSSD服务的32位依赖库?
  • 其他未想到的系统兼容问题

最新排查进展

我编译了一个简单的用户信息查询程序(核心逻辑是通过geteuid()获取当前用户UID,再调用getpwuid()查询用户信息),分别生成了32位(编译命令:gcc -m32)和64位版本:

  • 本地用户测试:两个版本都能正常返回用户信息
  • AD用户测试:64位版本正常,但32位版本中getpwuid(uid)返回空结果

这应该就是问题的根源了,但我不确定是否遗漏了某些系统配置或依赖包,想请教各位:这个问题是否有解?有没有可行的修复方向或排查建议?

备注:内容来源于stack exchange,提问作者RedGrittyBrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:43:04