この「chroot」/ tmpディレクトリの作成を説明できますか?

この「chroot」/ tmpディレクトリの作成を説明できますか?

以下のリンク記事では、「chroot」/ tmpディレクトリを作成する方法について説明します。私は彼らが何をしているのか少し混乱しています。次のコマンドの機能を説明できる人はいますか?

Noexecおよび/tmpのトラブルシューティング

1. # mkdir -p /root/chroot /root/tmp 
2. # mount --bind / /root/chroot 
3. # mount --bind /root/tmp /root/chroot/tmp
4. # chroot /root/chroot

最初のステップ、なぜ作ったのですか?/root/tmpまさか/root/chroot/tmp

最初のインストールコマンドは2番目のインストールコマンドに影響しますか? 2番目のステップでは、新しいディレクトリをバインドします。/root/chrootルートディレクトリに。これは第三段階で/root/tmp実際に以下を指す/root/chroot/root/tmp?どこ/root/chroot/tmpから?これが私を混乱させる部分です。

これの論理は何ですか?

答え1

mkdir -p /root/chroot /root/tmp

chroot環境用のディレクトリを作成します。/root/chrootchroot 環境のルートディレクトリになります。 chroot 環境/root/tmpとして機能するディレクトリです。/tmp

mount --bind / /root/chroot

/これにより、ディレクトリが表示されます/root/chroot。ディレクトリを/ミラーディレクトリとして扱います/root/chroot(実際にはミラーではありませんが、そのディレクトリへのポインタです/)。

mount --bind /root/tmp /root/chroot/tmp

これにより、chroot環境のディレクトリを介してカスタム/root/tmpディレクトリにアクセスできます。/tmpこれにより、chroot環境のディレクトリがシステム/tmp/tmp/tmp/tmp

chroot /root/chroot

ここでchroot環境を入力してください。

今あなたの質問:

  1. 最初のインストールコマンドは2番目のインストールコマンドに影響しますか?

    はい。ディレクトリ/root/chrootをバインドする前に、chroot環境のルートディレクトリ()をバインドマウントする必要があります/tmp。にバインドされるまでは存在しません/root/chroot/tmp//root/chroot

  2. 2番目のステップでは、新しいディレクトリを/root/chrootルートディレクトリにバインドします。これは、ステップ3が/root/tmp実際にそれを指すことを意味しますか/root/chroot/root/tmp

    はい。のすべてのコンテンツ/を経由してアクセスできます/root/chroot

  3. それはどこから出たの/root/chroot/tmp

    /root/chroot/tmpステップ2でバインドした/後は存在します。/root/chroot

答え2

ステップ2では//root/chroot

手順2.5を作成すると、システムディレクトリを含むリストされているls /root/chrootすべてのディレクトリを見つけることができます。//tmp

出力でもtouch /root/chroot/testこの内容を見ることができます。ご存知のように、それも出てきます。とはまったく同じ場所です。testls /rm /test/root/chroot///root/chroot/

詳しくは、実行するstat /stat /root/chroot両方が同じものを返すことがわかりますInode。 Anは、Inodeディスク上の特定のファイル/ディレクトリを参照するデータ構造です。どちらも同じコンテンツを返すので、Inode両方のパスはまったく同じディレクトリを指します。

したがって、手順3では、バインドマウントされたシステムディレクトリにディレクトリをマウントします/root/tmp/tmp/root/chroot

chroot手順4を実行すると、/システム全体のディレクトリの代わりにinディレクトリを使用して/tmpchroot状態に入ります。このようにして、chrootはシステムの他のすべてのユーザーと共有されません。/root/tmp/tmp

関連情報