Есть несколько разных возможностей, в зависимости от того, сколько изоляции вы хотите.
Самый простой - просто доверять коду. Похоже, об этом не может быть и речи, иначе вы бы об этом не спрашивали.
Следующим шагом является запуск кода в отдельной учетной записи пользователя, как предложил Vigneshwaren. Если вы хотите ограничить доступ к сети специально для конкретной учетной записи пользователя, это можно сделать с помощью сопоставления владельцев iptables. Когда это будет сделано, учетная запись пользователя может быть оставлена или удалена, и любые процессы, выполняющиеся от имени этого пользователя, могут быть полностью уничтожены.
Еще одним шагом вверх является добавление chroot-тюрьмы в отдельную учетную запись пользователя. Это может вызвать проблемы с библиотеками или конфигурационными файлами, которые должны быть на месте, но если это, например, простое упражнение на обработку чисел, это может быть практичным. Это гарантирует, что для этого кода будут доступны только те файлы, к которым у вас есть доступ к коду ученика.
Последний шаг - выполнение кода в совершенно отдельной среде. Представьте себе виртуальную машину, хотя отдельный физический компьютер может выполнить то же самое. Код может выполняться в полностью изолированной среде, в том числе с отключенным кабелем виртуальной сети, и любой ущерб, который он может нанести, в том числе заполнение диска или взрывная вилка, будет изолирован внутри виртуальной машины, и наихудшее, что может произойти, это что вам нужно принудительно отключить его. Поскольку у виртуальной машины будет полностью отдельная установка ОС, особенно если вы удалите сетевое соединение перед запуском программного обеспечения, это не может привести к утечке ваших конфиденциальных данных. С виртуальной машиной вы можете использовать моментальные снимки диска, чтобы вы могли быстро и легко вернуться в известное состояние после запуска программы каждого учащегося.
Все зависит от того, где по шкале «усилия против доверия» вы размещаете своих учеников. Меньшее доверие требует больше усилий с вашей стороны, чтобы ничего плохого не случилось.