質問: ユーザーが1024未満のポートをリッスンできるようにする (ルートとは異なる)ユーザーがポート80でリッスンするサーバーを実行できるようにする必要があります。これを行う方法はありますか?
回答: (これらの方法のいくつかは他の回答で言及されています;私はおおまかな順序でいくつかの可能な選択肢を与えています)低いポートを高いポートにリダイレクトし、高いポートでリッスンできます。iptables -t nat -a prerouting -p tcp --dport 80 -j redirect --to-ports 1080 rootとしてサーバーを起動し、特権ポートでのリッスンを開始した後で特権を削除できます。できれば、自分でコーディングするのではなく、ジョブを実行するラッパーからサーバーを起動してください。サーバーが接続ごとに1つのインスタンスを開始する場合は、 inetd (または xinetd などの同様のプログラム)から開始します。 inetdの場合、/etc/inetd.confで次のような行を使用します。http stream tcp nowait username:groupname /path/to/server/executable argv[0] argv[1]... サーバーが単一のインスタンスで待機する場合は、 authbind などのプログラムからサーバーを起動します。空のファイル/etc/authbind/byport/80を作成し、サーバーを実行しているユーザーが実行できるようにします。または/etc/authbind/byuid/1234を作成します。1234はサーバーを実行しているuidで、0.0.0.0/0:80,80という行が含まれています。サーバーの実行可能ファイルがケーパビリティをサポートするファイルシステムに格納されている場合は、それに cap_net_bind_service capability を与えることができます。機能はまだ比較的新しく、 まだいくつかのねじれがあります であることに注意してください。setcap cap_net_bind_service=ep /path/to/server/executable