
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:
chroot
ofirejail
. (No tengo la raíz del servidor. Está en contenedores, no se permite configurar euid)use algunas
gcc
opciones,.h
archivos 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)use algo como
strace
optrace
para monitorear el proceso y finalizarlo si quiere hacer lo que yo no quiero.
¿Es posible hacer eso?