我在命令行运行此命令:
$ sudo chroot . node test/simple.js
我收到此错误:
chroot: failed to run command ‘node’: No such file or directory
这是有道理的,因为节点可执行文件位于 PWD 下面的文件中。那么,在 PWD 中获取节点可执行文件的好方法是什么?我应该对其进行符号链接吗?
然而最终,我最感兴趣的是允许所有可执行文件在 chroot 监狱中运行,但只允许读取和写入 chroot 监狱中的文件,又名:
randos/
node
a.js
jail/
foo/foo.js
所以说我这样做:
cd jail/foo
sudo chroot . ../randos/node ../randos/a.js
这应该会失败,因为我不应该能够读取 randos/a.js。 但如果我这样做:
cd jail/foo
sudo chroot . ../randos/node foo.js
那么它应该可以工作,即使节点可执行文件不是监狱中的文件。
还,作为旁白,如果有人知道如何让 chroot 在没有 sudo 的情况下运行某个目录,那就太好了。
答案1
我会使用符号链接选项。
另外,为了回答您的问题,我会编辑您的 sudoers 文件。
添加一行,如下所示:
SOMEUSER ALL=/usr/sbin/chroot /DIR/TO/JAIL