chrootのすべてをキャプチャしたいのですが、完全なファイルシステム/保護者権限などを見るには、まずchrootに入る必要があるかどうかわかりません。 chrootの外から見ると、ルートのホームディレクトリを見逃すようです/root
。 VMを完全にキャプチャするかのようにchrootを完全にキャプチャする方法は? :
cd ~/mychroot
# Un-mount any previously mounted filesystems first?
# umount /proc
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev / cp ~/mychroot/mychoort.tar.gz /path/to/somewhere/safe
sudo chroot ~/mychroot
# Un-mount any previously mounted filesystems first?
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev / # Exit the chroot
exit
cp ~/mychroot/mychroot.tar.gz /path/to/somewhere/safe
答え1
tar操作を行うためにchrootする必要はありません。代わりにこのオプションを使用できます--numeric-owner
。 Chrootは、tarアーカイブに(正しい)所有者/グループ名を記録する場合にのみ必要です。この場合(/etc/passwd
などがtarの一部である場合)は必ずしも必要ではありません。
また、実際にchrootをせずに先にマウントなどをする必要がないので、/dev
面倒なことがなくなります。/proc
/sys
オプション--one-file-system
は偽の友達です。すべてのマウントポイントをスキップするため、不完全なtarが生成されます。たとえば、一部のシステムには、/dev
udevがマウントされる前に存在する静的デバイスノードがあり、システムが起動しない場合があります。
--one-file-system
したがって、不完全な結果を絶対に望まない限り使用しないでください。
別の方法は、例えばルートパーティションにマウントをバインドすることです。
mkdir /mnt/root
mount --bind / /mnt/root
バインドマウントはサブマウントには付属していないため、静的ノードやその他のコンテンツ(存在する場合)を/mnt/root
含むルートファイルシステムの完全なビューを提供します。/dev/
煩わしさ--one-file-system
と何十もの--exclude
オプションなしで、これらすべてを1つのパッケージに収めることができます。
答え2
すべて表示chroot(2)
(ユーザーコマンドはchroot(1)
システムコールを囲む薄いラッパーにすぎません):影響を受けるプロセスが表示する場所を変更するため、ターゲットディレクトリ/
外のファイルを(簡単に)エスケープ/アクセスできません。
「chroot」ディレクトリは単純な標準ディレクトリなので(おそらくおなじみのシステム管理者が特別な内容に設定したでしょう)、他と同様に操作できます。