コマンドラインから次のコマンドを実行します。
$ 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
これにより、ノードの実行可能ファイルが刑務所に存在していなくても機能するはずです。
返品、解説者として、sudoなしでchrootに特定のディレクトリを実行させる方法を知っている人がいればいいでしょう。
答え1
私はシンボリックリンクオプションを使います。
また、あなたの質問に答えるためにsudoersファイルを編集します。
次のように行を追加します。
SOMEUSER ALL=/usr/sbin/chroot /DIR/TO/JAIL