2

chroot 後に execlp (java) を呼び出す際に問題があります。

java プログラムは /usr/lib/jvm/default-java/jre/bin/java にインストールされます。

そして、実際のルートに到達できず、chroot(".") の後で Java プログラムを実行できません。

javaがインストールされているディレクトリ。

これが私の簡単なコードです。

    int pid = fork();

    if(pid == 0)
    {
        chroot(".");

        execlp("java","java","test",  NULL);  // cant run "test" java program
    }
    else{
           wait4(..............);
    }

chroot を削除すると、問題なく動作します。

問題は、「java」が /usr/lib/....... にあることです。

chroot を使用すると、実際のルートと Java に到達できません。

chroot と Java を一緒に使用するソリューションはありませんか??

4

2 に答える 2

1

chroot と Java を一緒に使用するソリューションはありますか?

はい。chroot ファイル システムに Java がインストールされていることを確認する必要があります。つまり、chroot ファイル システムの適切な場所にあるインストール ツリー内のすべてのファイルのコピーと、PATH からコマンドにアクセスできるようにするために必要なすべてのシンボリック リンクなどが必要です。

(少なくとも、それが理論です。実際にこれを達成するのがどれほど簡単かはわかりません。)

于 2013-08-07T06:58:42.063 に答える
0

http://en.wikipedia.org/wiki/Chroot

起動時に、プログラムは特定の事前設定された場所でスクラッチ スペース、構成ファイル、デバイス ノード、および共有ライブラリを見つけることを期待します。chroot されたプログラムを正常に起動するには、chroot ディレクトリにこれらのファイルの最小セットを設定する必要があります。これにより、chroot を一般的なサンドボックス メカニズムとして使用することが難しくなる可能性があります。

私が推測する実用的な用途は限られています

于 2013-08-07T07:00:11.220 に答える