我想从网上下载/编译/运行各种 c/c++ 库。这些库大多是半生不熟、鲜为人知和/或被遗弃的项目,其中一些来自可疑来源。我如何确保它们在安全的“沙盒”类型的环境中运行?我的意思是它们不会触及文件系统/网络资源。它们应该只返回我对它们进行的函数调用的值。
最好有一个适用于 Win/Linux 的解决方案,但至少适用于 Linux
答案1
对于 Linux,这是容器的理想工作负载。您只需使用 Docker (http://docker.io)这使得容器可以在几秒钟内轻松创建和销毁 - 比虚拟机快得多。
对于 Windows,据我所知,您只能使用 VM。
答案2
以非特权用户身份运行软件通常就足够了。除非您使用的内核容易受到 root 权限提升的影响。
sudo adduser SandBoxGuy
sudo passwd SandBoxGuy
现在以 SanBoxGuy 身份登录并运行您的软件,该软件将无法访问其他用户的文件或对 SandBoxGuy 用户目录之外造成任何损害。
所有这些都假设你的内核不易受到根权限提升的影响。
更大的答案可能是找到这里。它是针对 Raspberry Pi + Xserver 编写的,但它或多或少适合任何 Linux 系统。