Linux名前空間でchrootを実行する方法は?
Linuxの名前空間について読んだ後、他の多くの機能の中でも、chrootに代わるものであるという印象を受けました。たとえば、この記事では: [名前空間の]その他の用途には、単一ディレクトリ階層の一部へのプロセスの[...] chroot()スタイルの分離が含まれます。 ただし、たとえば次のコマンドを使用してマウント名前空間を複製すると、元のルートツリー全体が表示されたままになります。 unshare --mount -- /bin/bash 元のネームスペースと共有されていない新しいネームスペースで追加のマウントを実行できるようになったことを理解しているため、これにより分離が可能になりますが、ルート/etcは同じです。たとえば、両方のネームスペースで同じです。chrootルートを変更する必要がありますか、それとも代替手段がありますか? 私はこの質問が答えを提供することを期待していましたが、答えはchroot再びのみを使用します。 編集#1 に言及した削除済みのコメントがありましたpivot_root。これは実際にはの一部でlinux/fs/namespace.cあるため、実際には名前空間の実装の一部です。これはのみでルートディレクトリを変更することを示唆しているunshareとmount、より巧妙な- -のバージョンで可能ではありませんが、名前空間は自身を提供しますchroot。それでもchroot、ソースコードを読み取った後でも(セキュリティやより良い分離などの意味で)、それと根本的に異なるこのアプローチの主要なアイデアは得られません。 編集#2 これはこの質問の複製ではありません。回答からすべてのコマンドを実行した後、別の/tmp/tmp.vyM9IwnKuY(または同様の)がありますが、ルートディレクトリは同じままです。