我在使用Bindfs和chroot时遇到了一个特殊问题(可能是一个错误) 。我创建了一个示例沙箱目录,其中包含nodejs及其所有依赖项,以便能够在 chroot 监狱中运行。
好吧,我所做的是创建一个临时目录,在其中我从示例沙箱中挂载以下目录
- 垃圾桶
- 开发者
- ETC
- 包括
- 库
- 库64
- 执行程序
- 用户
要挂载我的目录,我使用bindfs,使用以下命令模板
bindfs -u nobody -g nobody -p a-w:a+rx --chown-ignore --chgrp--ignore --chmod-ignore :sample-sandbox/:dir :new-sandbox/:dir
所以,我通过执行以下命令进入上述目录cd :new-sandbox
(65534是nobody的uid)
chroot --userspec=65534 . node
我收到以下错误响应
chroot: failed to run command `node': Permission denied
当我运行时chroot . node
,我应该得到节点控制台。有趣的是,当我ls
在目录中运行时,我得到以下响应,表明文件和文件夹归用户所有nobody
(正如我在 bindfs 命令中声明的那样)。
total 32
dr-xr-xr-x 4 nobody nobody 4096 Apr 15 12:46 bin
dr-xr-xr-x 2 nobody nobody 4096 Apr 10 14:56 dev
dr-xr-xr-x 2 nobody nobody 4096 Apr 15 16:33 etc
dr-xr-xr-x 5 nobody nobody 4096 Apr 12 02:21 include
dr-xr-xr-x 9 nobody nobody 4096 Apr 12 02:21 lib
dr-xr-xr-x 4 nobody nobody 4096 Apr 12 02:22 lib64
dr-xr-xr-x 3 nobody nobody 4096 Apr 12 02:22 libexec
dr-xr-xr-x 6 nobody nobody 4096 Apr 12 02:22 usr
当我尝试在原型沙箱中执行相同的操作时,该沙箱具有原始文件夹而不是安装了 bindfs 的文件夹,一切正常,即使以用户 nobody 执行也是如此。
您知道为什么会发生这种情况以及如何解决吗?非常感谢。
PS 请不要提示我使用 Linux 容器或虚拟机或我想使用的任何其他替代技术。