¿Puedo limitar el acceso de un proceso a archivos específicos y a la salida estándar solo sin root?

¿Puedo limitar el acceso de un proceso a archivos específicos y a la salida estándar solo sin root?

Quiero configurar un servidor para que los estudiantes carguen código C. El servidor compila el código C, ejecuta el binario y muestra el resultado a los estudiantes.

Ahora tengo preocupaciones de seguridad. Los estudiantes pueden cargar cualquier código, pero quiero que puedan acceder a 2 archivos específicos (1 para lectura y 1 para escritura fopen) y solo salida estándar. No quiero que accedan a Internet ni a ningún otro archivo del sistema.

El servidor que tengo es Linux en contenedores y no tengo root.

He pensado en estas soluciones:

  1. chrooto firejail. (No tengo la raíz del servidor. Está en contenedores, no se permite configurar euid)

  2. use algunas gccopciones, .harchivos o límite de biblioteca C. (Tengo pocos conocimientos sobre compilación. En teoría, la gente puede hacer cualquier cosa con C sin utilizar ningún archivo de encabezado o biblioteca)

  3. use algo como straceo ptracepara monitorear el proceso y finalizarlo si quiere hacer lo que yo no quiero.

¿Es posible hacer eso?

información relacionada