web-dev-qa-db-ja.com

LinuxでTCPサーバーソケットを開くには、どの権限が必要ですか?

WebSocketサーバーを起動したいのですが、他のマシンから接続できません。ルート権限でWebSocketサーバーを起動した場合にのみ機能します。したがって、これは許可の問題のようです。

ユーザーがソケットを開くために必要な権限はどれですか?

3
K..

通常、ルートアクセスは1024未満のポートを開くために必要です。これは、web(80)、ssh(22)、ftp(21)などのよく知られたサービスのほとんどをカバーします。

一部のデーモンは、ポート1024を超える他のポートでリッスンするように構成できます。これにより、root以外の権限で使用できる場合がありますが、製品ごとに異なります。

CAP_NET_BIND_SERVICEを使用するなど、他の回避策もあります。これについては、より詳細に説明されています この回答では 、要約は、

簡単な答えはあなたがすることです:

setcap 'cap_net_bind_service=+ep' /path/to/program

そして、その後プログラムが実行されるときはいつでも、それはCAP_NET_BIND_SERVICE機能を持ちます。 setcapはdebianパッケージlibcap2-binに含まれています。

6
EightBitTony