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

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

学生が C コードをアップロードするためのサーバーをセットアップしたいと考えています。サーバーは C コードをコンパイルし、バイナリを実行して、出力を学生に表示します。

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

私が所有するサーバーはコンテナ化された Linux であり、ルート権限がありません。

私は以下の解決策について考えました:

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

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

  3. straceまたはのようなものを使用してptraceプロセスを監視し、望まない動作をしようとしている場合はプロセスを終了します。

それは可能ですか?

関連情報