在C中沙箱化可执行文件

时间:2012-03-25 20:30:55

标签: c security sandbox

我正在开发一个用C语言编写的应用程序,需要在内部运行可执行文件,因为应用程序的性质我需要限制exe文件读取或写入任何东西到计算机。

如何限制文件访问或更改计算机上的文件?

2 个答案:

答案 0 :(得分:3)

我认为这不一定是C问题。

一种常见的技术是在'chroot jail'中运行该程序。

如果您想自己从C程序中执行此操作,请使用chroot系统调用(man 2 chroot)。

这两种方法都限制程序在文件系统的有限(叶子或树枝)部分运行。这会将程序限制为您希望放入该目录和子目录中的尽可能少的程序。它不能超过chroot的目录,因此系统相对安全。

这可能需要非常谨慎才能正确编程,所以我建议先尝试使用chroot命令。

不知道Windows是否具有simlar机制,但* NIX和Mac可以。

如果这是'真实的',请查看一些越狱参考,例如 http://www.unixwiz.net/techtips/chroot-practices.html

答案 1 :(得分:0)

到目前为止,最简单的方法是创建一个权限很少的新用户,然后以该用户身份运行该程序。

但是,执行此操作的方法因系统而异,linux可以运行useradd,并且几乎可以通过windows api实现Windows。