2009-05-20 57 views
2

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

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

我想知道是否有可能限制Python访问文件系统并与其他程序进行交互等等。

+0

类似Qs的在Linux或Unix沙盒/监禁过程: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/3859710/94687 * http://stackoverflow.com/q/4410447/94687 * http://stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 – 2011-03-13 13:46:53

回答

4

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

2

您可以运行jython并使用JVM的沙盒机制。 JVM中的沙箱非常强大,非常了解,并且或多或少地有文档记载。需要一些时间才能准确定义你想要允许的内容以及你想要允许的内容,但是你应该能够从中获得非常强大的安全性......

另一方面,jython不是100与%兼容CPython的...

4

有4个东西,你可以尝试:

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

Systrace已经失密最近,所以要意识到这一点。

1

难道你不能只是作为一个用户,而不能访问除目录中的脚本之外的任何东西吗?