应分配哪些权限来创建原始套接字

应分配哪些权限来创建原始套接字

我想运行 ICMP 命令来 ping Java 上的 IP 地址:

InetAddress.getByAddress("XXX.XXX.XXX.XXX".getBytes()).isReachable(1000);

但是有一个安全限制:

Normal users are allowed to create raw sockets. 

所以我无法运行它。我不想以 root 身份运行我的应用程序。那么,我应该为运行应用程序以获得 CAP_NET_RAW 功能的用户分配哪些权限?

答案1

正如您的答案的评论中提到的,您必须为 Java 可执行文件设置该功能。这是一个工作示例:

sudo setcap cap_net_raw+epi /usr/lib/jvm/jdk-19/bin/java

(将路径替换为 Java 可执行文件的路径)

相关内容