C でユーティリティをサンドボックス化しようとしています。以下の手順に従いました。
file,directory, sharpoint
そのユーティリティのサンドボックス リソースをフォルダの下に作成しました/sandbox/myutil
。- 、と呼ばれる「c」コード
chdir("/sandbox/myutil")
からchroot("/")
。 - ユーティリティの実行可能ファイルが で入手可能で
/sandbox/myutil/bin/util.bin
あり、すべての依存ファイルが で入手可能であることを確認し/sandbox/myutil
ました。 - ユーティリティと呼ば
bin/util.bin
れるexecve("/bin/util.bin",arg, env);
ただし、/bin/util.bin
期待どおりに実行されていないため、プロセスはシグナル 18 を受信し、コード 13「EACCESS」を返します。
ただし、 を呼び出す代わりにchroot()
、chdir()
Cexecve()
コードchroot /sandbox/myutil /bin/util.bin
から、シェルから実行されるコマンドを使用すると、正常に動作します。
カーネル 2.6.17 を使用しています。