我想运行 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 可执行文件的路径)