2

是否可以创建一个环境以在 Linux 下安全地运行任意 Python 脚本?这些脚本应该是从不受信任的人那里收到的,并且可能太大而无法手动检查它们。

一个非常暴力的解决方案是创建一个虚拟机并在每次启动不受信任的脚本后恢复其初始状态。(太贵了。)

我想知道是否可以限制 Python 访问文件系统和与其他程序交互等等。

4

5 回答 5

4

考虑使用 chroot 监狱。这不仅非常安全、得到很好的支持和测试,而且还适用于从 python 运行的外部应用程序。

于 2009-05-20T09:05:05.617 回答
4

您可以尝试 4 件事:

  • 正如您已经提到的,使用虚拟机或其他形式的虚拟化(也许 solaris 区域足够轻量级?)。如果脚本破坏了那里的操作系统,那么你不在乎。
  • 使用 chroot,它将 shell 会话放入虚拟根目录,与主 OS 根目录分开。
  • 使用系统跟踪。将其视为系统调用的防火墙。
  • 使用建立在 systrace 之上的“监狱”,为每个监狱提供自己的进程表等。

Systrace 最近遭到入侵,因此请注意这一点。

于 2009-05-20T09:48:15.233 回答
2

您可以运行 jython 并使用 JVM 中的沙盒机制。JVM 中的沙盒功能非常强大,非常好理解,并且或多或少有据可查。需要一些时间来准确定义您想要允许的内容以及您不想允许的内容,但是您应该能够从中获得非常强大的安全性......

另一方面,jython 不是 100% 兼容 cPython ...

于 2009-05-20T09:44:35.193 回答
1

尝试搜索“sandboxing python”,例如:

http://wiki.python.org/moin/SandboxedPython

http://wiki.python.org/moin/How%20can%20I%20run%20an%20untrusted%20Python%20script%20safely%20(即%20Sandbox)

于 2009-05-20T08:54:45.980 回答
1

你能不能以除了该目录中的脚本之外无权访问任何东西的用户身份运行吗?

于 2011-03-13T14:18:06.990 回答