Kann ich den Zugriff eines Prozesses ohne Root auf bestimmte Dateien und die Standardausgabe beschränken?

Kann ich den Zugriff eines Prozesses ohne Root auf bestimmte Dateien und die Standardausgabe beschränken?

Ich möchte einen Server einrichten, auf dem Studenten C-Code hochladen können. Der Server kompiliert C-Code, führt die Binärdatei aus und zeigt den Studenten die Ausgabe an.

Jetzt habe ich Sicherheitsbedenken. Studenten können jeden Code hochladen, aber ich möchte, dass sie fopennur auf 2 angegebene Dateien (1 zum Lesen und 1 zum Schreiben) und auf stdout zugreifen können. Ich möchte nicht, dass sie auf das Internet oder andere Dateien auf dem System zugreifen.

Der Server, den ich habe, ist ein Linux-Containerserver und ich habe kein Root-Recht.

Ich habe über diese Lösungen nachgedacht:

  1. chrootoder firejail. (Ich habe keinen Zugriff auf das Server-Root. Es ist in einem Container, das Festlegen der EUID ist nicht zulässig.)

  2. Verwenden Sie einige gccOptionen, .hDateien oder C-Bibliothekslimits. (Ich habe wenig Ahnung vom Kompilieren. Theoretisch können Leute mit C alles machen, ohne Header-Dateien oder Bibliotheken zu verwenden.)

  3. Verwenden Sie etwas wie straceoder, ptraceum den Prozess zu überwachen und ihn zu beenden, wenn er das tut, was ich nicht möchte.

Ist das möglich?

verwandte Informationen