Я хочу создать веб-приложение, которое позволит пользователю загружать некоторый код на C и видеть результаты его выполнения (код будет скомпилирован на сервере). Пользователям не доверяют, что, очевидно, имеет огромное значение для безопасности.
Так что мне нужно создать какую-то песочницу для приложений. На самом базовом уровне я бы хотел ограничить доступ к файловой системе некоторыми указанными каталогами. Я не могу использовать chroot-тюрьмы напрямую, поскольку веб-приложение не запускается как привилегированный пользователь. Я предполагаю, что выполнимый suid, который устанавливает тюрьму, был бы выбором.
Загруженные программы будут довольно маленькими, поэтому они должны выполняться быстро (не более пары секунд). Следовательно, я могу завершить процесс после заданного времени ожидания, но как я могу гарантировать, что он не порождает новые процессы? Или, если я не могу, является ли уничтожение всего pgid надежным методом?
Как лучше всего это сделать, кроме как "вообще не делай этого"? :) Какие еще явные проблемы с безопасностью я пропустил?
FWIW, веб-приложение будет написано на Python.