ルートでなくても、指定されたファイルと標準出力へのプロセスのアクセスを制限できますか?

ルートでなくても、指定されたファイルと標準出力へのプロセスのアクセスを制限できますか?

学生がCコードをアップロードできるサーバーを設定したいです。サーバーはCコードをコンパイルしてバイナリを実行した後、生徒に出力を表示します。

これでセキュリティ上の問題が発生しました。学生は任意のコードをアップロードできますが、指定された2つのファイル(1つの読み取り用、1つの書き込み用fopen)とstdoutにのみアクセスできることを願っています。私は彼らがインターネットやシステム上の他のファイルにアクセスしたくありません。

私のサーバーはコンテナ化されたLinuxで、ルートはありません。

私は次の解決策を考えました。

  1. chrootまたは firejail。 (サーバーのルートはありません。コンテナ化されており、euidの設定は許可されていません。)

  2. 特定gccのオプション、.hファイル、または C ライブラリの制限を使用します。 (私はコンパイルについてほとんど知りません。理論的には、ヘッダファイルやライブラリを使用せずにCで何でもできます。)

  3. straceまたは、同じものを使用してptraceプロセスを監視し、私が望ましくない操作を実行したい場合は、プロセスを終了します。

これは可能ですか?

関連情報