
Quero configurar um servidor para os alunos fazerem upload do código C. O servidor compila o código C, executa o binário e mostra a saída aos alunos.
Agora estou preocupado com a segurança. Os alunos podem fazer upload de qualquer código, mas quero que eles possam acessar 2 arquivos especificados (1 para leitura e 1 para gravação fopen
) e apenas stdout. Não quero que eles acessem a Internet ou quaisquer outros arquivos do sistema.
O servidor que tenho é Linux em contêiner e não tenho root.
Eu pensei sobre estas soluções:
chroot
oufirejail
. (Não tenho raiz do servidor. É conteinerizado, definir euid não é permitido)use algumas
gcc
opções, ou.h
arquivos ou limite da biblioteca C. (Tenho pouco conhecimento sobre compilação. Teoricamente, as pessoas podem fazer qualquer coisa com C sem usar nenhum arquivo de cabeçalho ou biblioteca)use algo como
strace
ouptrace
para monitorar o processo e encerrá-lo se quiser fazer o que eu não quero.
É possível fazer isso?