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

标签 linux permissions chroot

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

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

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

最佳答案

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

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


构建 chroot 环境的一些建议

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

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

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

关于linux - 我可以限制某个进程对某些文件的访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518334/

相关文章:

python - 尝试在 MAC 上使用 pip 时权限被拒绝?

ios - iOS 的 Facebook 登录未返回

gradle - OpenShift Online主文件夹没有写权限

linux - 如何在 Makefile 中使用 chroot?

linux - 无法在 Ubuntu 上找到 tomcat 进程的端口号

linux - 什么时候使用哪个函数修改 Linux 的 sysfs 上的文件?

c++ - clock_gettime 在带有 CLOCK_PROCESS_CPUTIME_ID 的 chrooted Debian eclipse 刻中失败

c - chroot() 需要 root 权限吗?

c++ - 了解Linux虚拟内存: valgrind's massif output shows major differences with and without --pages-as-heap

linux - 目录和所有子目录中的递归解压缩和删除