アプリをルートとして強制的に実行することなく、ポート 80 で実行する方法はありますか?
安全ではないため、ルートとしてプロセスを実行したくありません。また、ポート 80 を使用したいと考えています。アプリの前でプロキシを使用したくありません。
たとえば、Apache はルートとして起動し、権限を削除します。Mono でこれを実現する方法はありますか?
コンテキストについては、ServiceStack を実行していますが、一般的にも質問しています。
アプリをルートとして強制的に実行することなく、ポート 80 で実行する方法はありますか?
安全ではないため、ルートとしてプロセスを実行したくありません。また、ポート 80 を使用したいと考えています。アプリの前でプロキシを使用したくありません。
たとえば、Apache はルートとして起動し、権限を削除します。Mono でこれを実現する方法はありますか?
コンテキストについては、ServiceStack を実行していますが、一般的にも質問しています。
OK私は最終的にauthbindを使用してこれを達成しました
魅力のように働きました。mono は実際には別のプロセスを実行するため、スイッチを使用する必要があることに注意してください。それは1 時間ほど無駄--deep
にした厄介な落とし穴でした。
したがって、最終的なコマンドは次のようになります。
sudo -u myapp authbind --deep ./MyApp.exe
私は authbind の uid アプローチを使用したので、これが設定です:
/etc/authbind/byuser/999:
0.0.0.0,80-89
要するに、 Monoのみのコンテキストでこの質問に対する答えを見つけようとするのは無駄です。単に検索で を置き換えるだけ"Mono"
で"Java"
、Java/Tomcat のソリューションはほとんど Mono にも適用できます。
いいえ、これは OS の制限です。1024 未満のすべてのポートは特権ポートであり、プロセスがそれらにバインドするには有効な UID が 0 である必要があります。
Monoでこれを達成する方法は正確にはわかりませんが、Apacheについて説明していることはそれを行う方法です. 多くの場合、ポートがバインドされた後に子プロセスがフォークされます。