Java에서 IP 주소를 ping하기 위해 ICMP 명령을 실행하고 싶습니다.
InetAddress.getByAddress("XXX.XXX.XXX.XXX".getBytes()).isReachable(1000);
그러나 보안 제한이 있습니다.
Normal users are allowed to create raw sockets.
그래서 실행할 수 없습니다. 내 응용 프로그램을 루트로 실행하고 싶지 않습니다. 그렇다면 CAP_NET_RAW 기능을 얻으려면 애플리케이션을 실행하는 사용자에게 어떤 권한을 할당해야 합니까?
답변1
답변에 대한 설명에서 언급했듯이 Java 실행 파일에 대한 기능을 설정해야 합니다. 다음은 실제 예입니다.
sudo setcap cap_net_raw+epi /usr/lib/jvm/jdk-19/bin/java
(경로를 Java 실행 파일의 경로로 바꿉니다)