원시 소켓을 생성하려면 어떤 권한을 할당해야 합니까?

원시 소켓을 생성하려면 어떤 권한을 할당해야 합니까?

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 실행 파일의 경로로 바꿉니다)

관련 정보