最近bind()
、ポートを1024未満にするために、アプリをより高い特権レベルに昇格させる必要があることがわかりました。
私はそれをで実行してきましたがsudo
、これは内部テストには問題ありませんが、rootとして実行してデプロイすることは一般的に非常に悪い考えです。
setuid rootについて聞いたことがありますがlighthttpd
、たとえばソースコードを見ると、次のように表示されます。
#ifdef HAVE_GETUID
if (!i_am_root && issetugid()) {
/* we are setuid-root */
log_error_write(srv, __FILE__, __LINE__, "s",
"Are you nuts ? Don't apply a SUID bit to this binary");
server_free(srv);
return -1;
}
#endif
それでは、特権ポートへのバインドを許可するために一般的に受け入れられている方法は何ですか?バインドには、より高い特権のみが必要です。その後、通常のユーザーとして実行できます。
これらは私が聞いたことがあるものですが、ほとんどのソフトウェアが使用しているものではないようです。そのため、私はこの質問をしています。
- setuid-root
- setcap