Можно ли ограничить доступ процесса только к определенным файлам и стандартному выводу без прав root?

Можно ли ограничить доступ процесса только к определенным файлам и стандартному выводу без прав root?

Я хочу настроить сервер, на который студенты смогут загружать код на языке C. Сервер компилирует код на языке C, запускает двоичный файл и показывает вывод студентам.

Теперь у меня возникли опасения по поводу безопасности. Студенты могут загружать любой код, но я хочу, чтобы они могли получить доступ fopenтолько к 2 указанным файлам (1 для чтения и 1 для записи с помощью ) и stdout. Я не хочу, чтобы они имели доступ к Интернету или любым другим файлам в системе.

У меня есть контейнеризованный сервер Linux, и у меня нет прав root.

Я думал о следующих решениях:

  1. chrootили firejail. (У меня нет root сервера. Он контейнеризирован, установка euid не допускается)

  2. используйте некоторые gccопции, или .hфайлы, или ограничение библиотеки C. (У меня мало знаний о компиляции. Теоретически люди могут делать с C все что угодно, не используя никаких заголовочных файлов или библиотек)

  3. используйте что-то вроде straceили , ptraceчтобы контролировать процесс и завершать его, если он захочет сделать то, что мне не нужно.

Возможно ли это сделать?

Связанный контент