限制用户脚本执行

限制用户脚本执行

我有一个在 Debian 服务器上运行的游戏引擎。该游戏涉及机器人,由玩家用 Python 编码。

  1. 玩家用 Python 编写机器人
  2. 验证后,代码将发送到服务器
  3. Python 脚本执行代码

该机器人的脚本是常规的 Python 脚本,因此玩家可以在其中做任何他们想做的事情。我希望玩家能够导入模块,但不能破坏服务器(即扫描服务器文件系统,删除文件,或者更糟)。

我如何确保脚本不会破坏系统,因为知道:

  • 该脚本必须能够通过 TCP/IP 与游戏引擎 (localhost) 进行通信
  • 我想让玩家导入任何标准的Python模块
  • 稍后游戏将支持其他脚本语言(Ruby、Perl、Lua、JS...)

我怀疑一种方法应该是与用户和组一起玩。另一个可能是类似于 FreeBSD 监狱的东西。我对这些方法都不熟悉。

答案1

你想要的可以用chroot或者甚至可能长沙在 debian 中。

编辑:
您可能想使用overlayfs或squashfs来使您正在做的事情更快(瞬时)。为此,您需要debootstrap和squashfs-tools。

使用这些工具,您将能够为用户提供不同的运行时版本或架构以供选择。为此,您需要qemu-user-staticChrootDebootstrap

相关内容