我可以限制某个进程的某些文件的访问权限吗?

时间:2010-12-23 11:28:40

标签: linux permissions chroot

是否可以在Linux中启动进程,并限制其对某些文件/目录的访问?例如:

$ start-process --enable-dir=./sandbox --exec="some-script.sh"

some-script.sh将无法执行./sandbox以外的任何操作。

2 个答案:

答案 0 :(得分:5)

您可以使用chroot设置进​​程树的根目录。但是,这意味着该进程的所有依赖关系必须在它的新根目录中可用。

有许多软件包可以帮助您根据需要设置chroot环境。谷歌是你的朋友;)


关于构建chroot环境的一些指示

为某些程序或守护程序构建chroot时,必须为要 chroot 的程序提供完整的环境。这意味着您必须在目录中提供最小系统。这可能包含:

  • shell和一些shell实用程序,或busybox的变体。 (如果您不打算部署一个单独的静态可执行文件,这也包含下一步。)
  • Libc和其他相关的共享库。
    • 您需要使用lddobjdump检查共享库依赖项。出现的每个库都必须位于私有根目录中。对于您需要的每个可执行文件和库,此步骤可能会重复多次。请注意,某些在运行时使用dlopen显式链接的库需要单独检查
  • 取决于您计划 chroot 最小/dev树的内容。
    • 如果您打算chroot一个守护进程,这可能需要/dev中的一些最小文件,例如randomzero。您可以使用mknod命令创建它们。请参阅mknod documentation,以及有关哪个主要/次要号码设备have的linux文档。
  • 另外,根据您对 chroot 的计划,这是一个最小的/etc。其中所需的文件是:
    • 最小密码和阴影(您的系统密码/影子)。
    • 包含mtab的最小/
    • 最小group(再次,您的系统组文件)。

你必须从某个地方开始,所以最好从你编程的先决条件开始。有关详细信息,请参阅文档

答案 1 :(得分:1)

通常,您希望chroot进程,以便它只能访问目录及其子目录,并且只执行一些已定义的命令。

请参阅How to chroot