使用 setcap 功能运行时 JLI_InitArgProcessing 的 Java“符号查找错误”

2024-05-07

我们在服务器上安装了 Java 11,旨在监视网络接口的流量。

初始安装后(yum install java-11-openjdk-devel.x86_64) the java命令对两者都适用root and a 普通用户。

但是,我们的 Java 应用程序不会以 root 身份运行。然后我们跑:

setcap cap_net_raw,cap_net_admin=eip /path/to/java

它设置功能并运行java -version as root工作正常。

但是运行setcap后,当我尝试跑步时java -version作为普通用户,我看到:

java: symbol lookup error: java: undefined symbol: JLI_InitArgProcessing

这似乎是一种有意的安全保护,如下所述:Linux 功能 (setcap) 似乎禁用 LD_LIBRARY_PATH https://stackoverflow.com/questions/9843178/linux-capabilities-setcap-seems-to-disable-ld-library-path

但我的问题是:我怎样才能允许java在普通用户帐户下使用这些功能(网络数据包捕获)?

Note:通过取消设置功能setcap -r /path/to/java允许普通用户运行java再次 - 所以问题与功能无关。


我可以通过添加此文件来解决此问题:

/etc/ld.so.conf.d/java.conf

单行内容:

/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.0.1.el7_6.x86_64/lib/jli

并重新启动服务器。

显然,该目录路径应该指向您的特定 JDK

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 setcap 功能运行时 JLI_InitArgProcessing 的 Java“符号查找错误” 的相关文章

随机推荐