2

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

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

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

关于程序的一些细节:

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

感谢您的任何建议。

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

  • 枢轴根
  • set_fs_root(Linux内核)

有没有可能使用它?

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

4

2 回答 2

1

您可能想查看受限外壳;我认为大多数常见的 shell 都有限制模式的选项,即禁用cd、阻止对某些环境变量的更改以及其他一些事情。因为pdksh,它会/bin/ksh -r。但是,对于其他 shell,该选项会有所不同,因此请阅读相应的manual 页面。

于 2012-07-05T14:01:43.453 回答
1

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

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

于 2012-07-05T13:43:34.093 回答