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

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

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

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

Solutions Collecting From Web of "我可以限制某个进程的某些文件的访问吗?"

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

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


一些建立chroot环境的指针

当为一些程序或守护进程建立一个chroot时,你必须为你想要chroot的程序提供一个完整的环境。 这意味着你必须在目录中提供一个最小系统。 这可能包含:

  • 一个shell和一些shell实用程序,或者一个busybox的变种。 (这也包括下一步,如果你不打算部署一个单一的静态可执行文件)。
  • Libc和其他相关的共享库。
    • 您需要使用lddobjdump来检查共享库依赖关系。 每个出现的库都必须位于私有根目录中。 对于您需要的每个可执行文件和库,此步骤可能会重复多次。 请注意,某些库在运行时使用dlopen显式链接,需要单独检查。
  • 取决于你打算做什么来裁剪最小/dev树。
    • 如果你计划chroot一个守护进程,这可能需要一些最小的文件在/dev ,如randomzero 。 您可以使用mknod命令创建这些文件。 请参阅mknod 文档以及哪些设备应具有的主要/次要编号的linux文档。
  • 也取决于你打算做什么是一个最小的/etc 。 这里需要的文件是:
    • 一个最小的passwd和shadow( 不是你的系统passwd / shadow)。
    • 包含/的最小mtab
    • 一个最小的group (再次, 不是你的系统组文件)。

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

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

请参阅如何chroot 。