生ソケットを作成するにはどのような権限を割り当てる必要がありますか?

生ソケットを作成するにはどのような権限を割り当てる必要がありますか?

JavaでIPアドレスをpingするためにICMPコマンドを実行したいと思います。

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実行可能ファイルのパスに置き換えます)

関連情報