我想以编程方式启动一个不受信任的应用程序,因此我想删除该程序访问文件、网络等的能力。本质上,我想限制它,以便它到计算机其余部分的唯一接口是stdin和stdout。
我可以这样做吗?最好是以跨平台的方式,但我希望每个操作系统都有不同的做法。我正在使用Python,但如果需要,我愿意用更低级或更多平台的集成语言来编写这一部分。
我需要这样做的原因是要编写一个分布式计算基础设施。它需要下载一个程序,执行它,通过管道将数据传输到stdin,并将它在stdout上接收到的数据返回到中央服务器。但是因为它下载的程序是不可信的,所以我想限制它只使用stdin和stdout。
发布于 2011-09-19 02:51:22
简短的回答是否定的。
长篇大论的答案不是真的。考虑一个C程序,该程序通过抓取下一个可用的文件描述符来打开一个日志文件。你的程序,为了阻止它,需要以某种方式监控它,并阻止它。根据不受信任程序的健壮性,这可能会导致致命的崩溃,或者阻止无害的功能。还有许多其他与此类似的问题会使您尝试做的事情变得困难。
我建议您研究一下已有的sandboxing解决方案。特别是,virtual machine对于测试不受信任的代码非常有用。如果您不能找到满足您需求的任何东西,那么最好的选择是在内核级别处理这个问题,或者使用一些更接近硬件的东西,比如C。
https://stackoverflow.com/questions/7460592
复制相似问题