特に Linux/POSIX の世界では、一時的な初期化のみを目的として (たとえば、root が所有する秘密鍵ファイルを読み取る、1024 未満のポートを開く、またはリソース制限を引き上げる) ための root 機能を必要とするデーモンは、多くの場合、setuid()
/setresuid()
やsetgid()
/などの関数呼び出しで資格情報を変更しsetresgid()
、呼び出しfork()
て実際のプログラムをその子として実行する設計パターンに従います。fork()
-ing は「万が一に備えて」行われると思われますが、そうするための実際のセキュリティ上の考慮事項は何ですか?
setgroups(0, NULL)
そして、それをフォローアップするために、( 、setresgid(GID_NOBODY, GID_NOBODY, GID_NOBODY)
およびに加えて) プログラムがLinux の機能setresuid(UID_NOBODY, UID_NOBODY, UID_NOBODY)
を積極的に制限している場合、その理由はまだ関連していますか?cap_set_proc()