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