ルート刑務所を作成できません

ルート刑務所を作成できません

一時ルート刑務所を作成するために、テスト目的でchrootコマンドを使用してみましたが、成功しませんでした。プラットフォームはCentOS 6.4です。今回を除いてこれまで何度もやってきました。私は次の順序でプログラムを実行しました。

  1. bin、、、etcおよびディレクトリhomeを作成します。libvar
  2. ldd /bin/bash
  3. lib上記のディレクトリ内のすべてのライブラリをコピーしてください。/bin/bashbin
  4. これにより、実行がchroot /path/to/the/jail次のように表示されます。

    chroot: failed to run command `/bin/bash': No such file or directory
    

このエラーがどこで発生するのかわからず、以前はこのような問題が発生したことはありません。 Ubuntuサーバーでも同じプロセスがうまく機能します。問題は、この特定のサーバーでのみ発生します。

以下の説明に基づいて、デバッグコマンドのいくつかの出力は次のとおりです。

[root@localhost chroot]# find -printf '%M %p\n'
 drwxr-xr-x。
 drwxr-xr-x ./bin
 -rwxr-xr-x ./bin/bash
 drwxr-xr-x ./var
 drwxr-xr-x ./var/var
 drwxr-xr-x ./home
 drwxr-xr-x ./lib
 -rwxr-xr-x ./lib/libdl.so.2
 -rwxr-xr-x ./lib/libc.so.6
 -rwxr-xr-x ./lib/libtinfo.so.5
 -rwxr-xr-x ./lib/ld-linux-x86-64.so.2
 drwxr-xr-x ./etc.
[root@localhost bin]# ldd /mnt/proba1/chroot/bin/bash
 linux-vdso.so.1 => (0x00007fff6fe00000)
 libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f12cdd40000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00007f12cdb38000)
 libc.so.6 => /lib64/libc.so.6 (0x00007f12cd7a0000)
 /lib64/ld-linux-x86-64.so.2 (0x00007f12cdf70000)

答え1

出力は、対応するライブラリがではなく見つかると予想されることをldd示しています。また、これはそのライブラリをコピーする必要があることを意味します。bash/lib64/lib~から /lib64刑務所内で適切なディレクトリを入力します。で見つかったのと同じファイルは/lib機能しません。

答え2

私がしたことは、これに "mount --bind"を使用することでした。読み取り専用に設定することもできます。たとえば、

mkdir test
cd test
mkdir bin sbin usr etc
mount --bind -o ro /bin bin
mount --bind -o ro /sbin sbin
mount --bind -o ro /usr usr
mount --bind -o ro /etc etc
chroot .

そこまでではありませんが、ポイントがわかります。 「aufs」も使えば本当に素敵です。読み取り可能なレイヤーの上に書き込み可能なレイヤーを配置できます。これにより、コピーして読み取り専用にバインドマウントする必要はありませんが、それでも書き込み可能になり、すべての書き込みが一部のプレースホルダに保存されます。もう一度試すもう1つの方法は、「c​​p -l」リンクコピーを使用することです。次に、記録中のコピーを意味する「牛」があります。それがすることは、まずコピーを作成することです。ただし、すべてのディレクトリエントリはディスク上の同じノードを指します。コピーのように見えますが、すべて接続されています。シンボリックリンクではなくハードリンクです。牛はファイルに書き込もうとすると、ファイルの実際の内容が最初にコピーされ、次に変更されます。

関連情報