由于某种原因,当我链接到 Oracle GSS 时,其行为开始有所不同 (Solaris)

发布于 2024-11-26 17:33:34 字数 552 浏览 6 评论 0原文

我的测试程序运行良好。我可以创建一个客户端和一个服务器并相互运行它们。我可以设置 KRB5_CONFIG 环境变量并使用本地配置进行测试。

由于某种原因,当我将代码放入我们的生产软件中时,它失败了。即使我将 main() 函数剥离为仅使用硬编码名称调用 gss_import_name() ,我最终也会收到消息“无法打开配置文件”。

如果我运行 truss,那么我会看到很多 Oracle 正在运行。它尝试打开许多不同的 Oracle 跟踪文件。它还尝试打开

/krb5/krb.conf

而不是我指定的文件。

这就好像 Oracle 给了我们错误的 gss,或者在我们庞大而复杂的构建系统中提供了一些其他选项。我注意到 -L/usr/lib/sparcv9 虽然这是在我的 -lgss 之后,如果这很重要的话(自从我定期使用 C 工作以来已经太久了!)。该目录中的 libgss.so.1 比 /usr/lib 中的 libgss.so.1 大 - 尽管将该选项放入我的测试程序的链接命令中并不会破坏它。

有什么帮助吗?

谢谢 ——理查德

My test program works fine. I can create a client and a server and run them against each other. I can set my KRB5_CONFIG environment variable and use a local configuration for testing.

For some reason when I place the code in our production software it fails. Even if I strip our main() function to just calling gss_import_name() with a hard coded name I end up with the message "Cannot open configuration file".

If I run truss then I see a lot of Oracle going on. It tries to open lots of different Oracle trace files. It also tries to open

/krb5/krb.conf

instead of the file I specify.

It's as if Oracle is giving us the wrong gss, or maybe some other option in our huge and complex build system. I note -L/usr/lib/sparcv9 though this is after my -lgss now if that matters (too long since I worked in C on a regular basis!). The libgss.so.1 in that directory is larger than the one in /usr/lib - though putting that option into my test program's link command does not break it.

Any help?

Thanks
- Richard

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

隱形的亼 2024-12-03 17:33:34

这解决了我们看来类似的问题:

export KRB5_CONFIG=/etc/krb5.conf

如果尚未设置,Oracle 确实可能错误地设置了此环境变量。

$ grep -r KRB5_CONFIG $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches 
$ grep -r '/krb5/krb.conf' $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches

This fixed what appeared to be a similar problem for us:

export KRB5_CONFIG=/etc/krb5.conf

It does appear likely that Oracle sets this env var incorrectly if it's not already set.

$ grep -r KRB5_CONFIG $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches 
$ grep -r '/krb5/krb.conf' $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches
凑诗 2024-12-03 17:33:34

我发现 Oracle 库包含 GSS 的实现。为了使我的代码正常工作,我确保在链接任何 Oracle 库之前链接了“-lgss”。

我没有测试过这是否会扰乱 Oracle 的单点登录,因为我们使用 Oracle 的用户名和密码。效果很好。

I found that the Oracle libraries contained an implementation of GSS. To make my code work I ensured I linked "-lgss" before linking any of the Oracle libraries.

I've not tested to see if this upsets Oracle in single sign-on, because we use Oracle with user name and password. That works fine.

疾风者 2024-12-03 17:33:34

我在 HP-UX 11.31 上使用 Oracle 11.2.0.4.0 时遇到了同样的问题,并为此浪费了几乎一整天的时间。事实上,蹩脚的 Oracle lib 使用 /opt/krb5/krb.conf 执行 putenv,而 Richard Corfield 的提示甚至使应用程序崩溃。唯一的解决方法是创建符号链接。我已针对该问题向 Oracle 创建了服务请求。

更新 (2014-06-02):我收到了来自 Oracle 的更新。他们确认了该错误。似乎有一个私有的 GSS-API 正在重新定义符号。

Bug 10184681 - ORACLE NEEDS TO USE VERSIONED SYMBOLS TO AVOID EXTERNAL SYMBOL CONFLICTS

此问题自 2010 年 10 月以来一直开放。糟糕的。

I ran in to the very same issue with Oracle 11.2.0.4.0 on HP-UX 11.31 and wasted almost an entire day for that. Indeed, the crappy Oracle lib peforms a putenv with /opt/krb5/krb.conf and the tip from Richard Corfield makes the app even crash. The only workaround is to create a symbolic link. I have created a service request with Oracle for that issue.

Update (2014-06-02): I have received an update from Oracle. They confirmed the bug. It seems like there is a private GSS-API which is redefining symbols.

Bug 10184681 - ORACLE NEEDS TO USE VERSIONED SYMBOLS TO AVOID EXTERNAL SYMBOL CONFLICTS

This issue has been open since 2010-10. Terrible.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文