阻止访问给定工作目录之外的文件

时间:2012-07-05 13:30:16

标签: c

我试图阻止对给定工作目录之外的文件的访问 我的第一次尝试是使用chdirchroot,但chroot只能由root用户使用。

还有其他可能吗?我听说过另一个,但我不记得了。

可能是一个简单的函数来检查路径是否在工作目录或第二个参数之外。

有关该计划的一些细节:

  • 应在Linux上运行
  • 简单的shell程序,没有任何交互元素
  • 获取目录参数,即工作目录

感谢您的任何建议。

编辑:
经过一些研究,我发现了不同的方法,但我不能使用它们中的任何一种。

  • pivot_root
  • set_fs_root(linux kernel)

有可能使用它吗?

也许有可能打开给定目录所包含的文件。所以我用参数文件路径和“根”路径来调用函数。

2 个答案:

答案 0 :(得分:1)

我假设您使用的是Linux / MacOSX平台。有几种方法。一种是为拥有该目录的程序创建一个特殊用户,但对系统中的任何其他内容都没有写入权限*。另一种选择是使用像SELinux这样的程序只允许对程序进行某些操作,但这看起来有点矫枉过正。

*:您必须始终授予用户读取权限。如果没有glibc的读取权限,您的程序将如何运行?

答案 1 :(得分:1)

您可能想要查看受限制的shell;我认为大多数常见的shell都有限制模式的选项,可以禁用cd,防止更改某些环境变量,以及其他一些事情。对于pdksh,它将是/bin/ksh -r。但是,该选项因其他shell而异,请阅读相应的man页面。