Linuxでは、そもそも1024番以下のポート(特権ポートと呼ばれる)には、一般ユーザ権限では、Listenできないことを知らなかった。
サーバー上でroot権限のないユーザ権限では、80番ポートにバインドしたHttpサーバーを起動すると、Permission Denied
でエラーになる。これらの内容で検索すると、回避策としてrootで起動して起動後に別ユーザに切り替えることをプログラムでやる内容を良く見るが、以下のように特定のプログラムに特権ポートのListenする権限を与える方法をメモしておく。セキュリティが低下するが、少ない設定で可能になる。
設定には、setcap
というコマンドを使うため、libcap2-binをインストールし、以下のようにnode本体に対して権限を付与するだけでOK.
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node