我有一个在 Debian 服务器上运行的游戏引擎。该游戏涉及机器人,由玩家用 Python 编码。
- 玩家用 Python 编写机器人
- 验证后,代码将发送到服务器
- Python 脚本执行代码
该机器人的脚本是常规的 Python 脚本,因此玩家可以在其中做任何他们想做的事情。我希望玩家能够导入模块,但不能破坏服务器(即扫描服务器文件系统,删除文件,或者更糟)。
我如何确保脚本不会破坏系统,因为知道:
- 该脚本必须能够通过 TCP/IP 与游戏引擎 (localhost) 进行通信
- 我想让玩家导入任何标准的Python模块
- 稍后游戏将支持其他脚本语言(Ruby、Perl、Lua、JS...)
我怀疑一种方法应该是与用户和组一起玩。另一个可能是类似于 FreeBSD 监狱的东西。我对这些方法都不熟悉。