Linux中的安全Python环境

2 投票
5 回答
1005 浏览
提问于 2025-04-15 11:43

有没有办法在Linux系统下创建一个安全的环境,让我们可以运行一些不可信的Python脚本?这些脚本可能是从不可靠的人那里得到的,而且可能太大,没法逐个检查。

一种非常简单粗暴的解决办法是创建一个虚拟机,每次运行不可信的脚本后都把它恢复到最初的状态。(这样做成本太高了。)

我在想,是否可以限制Python访问文件系统,或者和其他程序进行交互等等。

5 个回答

2

你可以使用jython,并利用JVM(Java虚拟机)中的沙箱机制。JVM的沙箱机制非常强大,大家对它的理解也很透彻,文档也写得比较清楚。你需要花一些时间来明确你想允许什么,想禁止什么,但通过这个机制,你应该能获得很强的安全性……

不过,jython和cPython并不是完全兼容的……

4

你可以尝试以下四种方法:

  • 正如你提到的,可以使用虚拟机或者其他形式的虚拟化技术(比如说,solaris zones可能比较轻量)。如果脚本在里面搞坏了操作系统,那你也不用担心。
  • 使用chroot,这个方法可以让你在一个虚拟的根目录下运行一个shell会话,这个根目录和主操作系统的根目录是分开的。
  • 使用systrace。可以把它想象成系统调用的防火墙。
  • 使用“监狱”(jail),这个是在systrace的基础上发展出来的,每个监狱都有自己独立的进程表等等。

不过要注意,systrace最近被攻破过,所以要小心。

4

可以考虑使用 chroot 监狱。这个方法不仅非常安全,而且得到了很好的支持和测试,另外它也适用于你从 Python 运行的外部应用程序。

撰写回答