【发布时间】:2023-03-16 18:52:01
【问题描述】:
我们在用于监控网络接口流量的服务器上安装了 Java 11。
在初始安装 (yum install java-11-openjdk-devel.x86_64) 之后,java 命令对 root 和 普通用户均正常工作。
但是,我们的 Java 应用程序不会以 root 身份运行。然后我们跑了:
setcap cap_net_raw,cap_net_admin=eip /path/to/java
它设置功能,并以 root 身份运行 java -version 工作正常。
但是在运行 setcap 之后,当我尝试以普通用户身份运行 java -version 时,我看到了:
java: symbol lookup error: java: undefined symbol: JLI_InitArgProcessing
这似乎是一种预期的安全保护,如下所述:Linux capabilities (setcap) seems to disable LD_LIBRARY_PATH
但我的问题是:如何让java 在普通用户帐户下使用这些功能(网络数据包捕获)?
注意:通过setcap -r /path/to/java 取消设置功能允许普通用户再次运行java - 因此问题与功能无关。
【问题讨论】:
标签: java unix permissions packet-capture linux-capabilities