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

yeg*_*256 7 linux permissions chroot

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

$ start-process --enable-dir=./sandbox --exec="some-script.sh"
Run Code Online (Sandbox Code Playgroud)

some-script.sh将无法做任何事情./sandbox.

Mar*_*gen 5

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

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


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

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

  • shell和一些shell实用程序,或busybox的变体.(这也包括下一步,如果您不打算部署一个单独的静态可执行文件).
  • Libc和其他依赖的共享库.
    • 您需要使用ldd或检查共享库依赖项objdump.出现的每个库都必须位于您的私有根目录中.对于您需要的每个可执行文件和库,此步骤可能会重复多次.需要注意的是一些库,这些库在系统运行时明确挂钩dlopen需要检查分开.
  • 取决于您计划chroot最小的/dev树.
    • 如果你打算chroot一个守护进程,这可能需要一些最小的文件,/devrandomzero.您可以使用该mknod命令创建它们.请参阅mknod 文档,以及有关哪些主要/次要编号应该具有哪些主要/次要编号的linux文档.
  • 也取决于你计划chroot是一个最小的/etc.其中所需的文件是:
    • 最小的passwd和shadow(不是你的系统passwd/shadow).
    • 最小mtab含量/.
    • 最小的group(同样,不是您的系统组文件).

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