ユーザーが C コードをアップロードして実行結果を確認できる Web アプリケーションを作成したいと考えています (コードはサーバー上でコンパイルされます)。ユーザーは信頼されていません。これは明らかにセキュリティに大きな影響を与えます。
そのため、アプリ用にある種のサンドボックスを作成する必要があります。最も基本的なレベルでは、ファイル システムへのアクセスを特定のディレクトリに制限したいと考えています。Web アプリは特権ユーザーとして実行されていないため、chroot 監獄を直接使用することはできません。刑務所を設定する suid 実行可能ファイルがオプションになると思います。
アップロードされたプログラムはかなり小さいので、すぐに実行されるはずです (せいぜい数秒)。したがって、事前設定されたタイムアウト後にプロセスを強制終了できますが、新しいプロセスが生成されないようにするにはどうすればよいでしょうか? または、できない場合、pgid全体を殺すことは信頼できる方法ですか?
「まったくやらない」以外に、これを行う最善の方法は何でしょうか? :) 私が見逃した他の明白なセキュリティ問題は何ですか?
FWIW、Web アプリは Python で作成されます。