在Linux上运行可执行文件最安全的方法是什么?

arb*_*ero 10 language-agnostic linux gcc sandbox

我正在尝试运行从未知来源的C代码编译的程序.我想确保程序不会损害我的系统.例如,system("rm -rf /")除非彻底检查代码,否则程序可能在源代码中有类似的内容,这是不可检测的.

我想到了以下两种方式

  1. 在像VMWare这样的VM中运行它
  2. 在linux上构建一个windows exe并运行wine

两者都不是非常优雅的解决方案,我不能自动化它们.而且,如果是1,它可能会损害VM.

任何帮助,将不胜感激.

我想在我们称之为"沙盒"的程序中运行该程序.

flo*_*rin 6

查看seccomp.它是为这个用例而设计的.


Jus*_*ack 5

我在这里写了一篇关于 Linux 上沙箱方法的概述(已存档)。在我看来,你最好使用 Linux 容器 (lxc) 或 selinux。您可以使用虚拟化解决方案并将其自动化,但这需要付出更多的努力。

lxc 将隔离您的进程、文件系统和网络,您可以在容器上设置资源限制。内核攻击的风险仍然存在,但已大大降低。


小智 4

Geordi使用 chroot 和拦截系统调用的组合来编译任意代码,然后将其沙箱化。