Ограничить выполнение пользовательского скрипта

У меня есть игровой движок, запущенный на сервере Debian. В игре участвуют боты, которые игроки кодируют на Python.

  1. Игрок записывает бота в Python
  2. После проверки код отправляется на сервер
  3. Сценарий Python выполняет код

Сценарий бота – это обычный скрипт Python, поэтому игроки могут делать все, что захотят. Я хочу, чтобы игрок мог импортировать модули, но не разбивать сервер (сканирование файловой системы сервера, удаление файлов или, что еще хуже ).

Как я могу убедиться, что сценарий не нарушает работу системы, зная, что:

  • Сценарий должен иметь возможность обмениваться данными в TCP / IP с движком игры (localhost)
  • Я хочу разрешить игрокам импортировать любой стандартный модуль Python
  • Позже игра будет поддерживать другие языки сценариев (Ruby, Perl, Lua, JS …)

Я подозреваю, что можно играть с пользователями и группами. Другой может быть чем-то похожим на тюрьмы FreeBSD. Я не знаком ни с одним из этих методов.

То, что вы хотите, может быть сделано с помощью chroot или, возможно, даже lxc в debian.

РЕДАКТИРОВАТЬ:
Вы можете использовать overlayfs или squashfs, чтобы сделать то, что вы делаете быстрее (мгновенно). Для этого вам нужны инструменты debootstrap и squashfs.

С помощью этих инструментов вы сможете предоставить своим пользователям разные версии исполнения или архивы на выбор. Для этого вам нужно qemu-user-static и ChrootDebootstrap .