mount -o bindを使用して、chroots内のディレクトリをマウントします。問題は、これらのバインドマウントされたディレクトリの一部をchrootでのみ読み取ることです。
出来ますか?そうでない場合-それを達成する他の方法は?
ローカルホストのマウントにNFSを使用することを考えていましたが、やり過ぎのようです。
mount -o bindを使用して、chroots内のディレクトリをマウントします。問題は、これらのバインドマウントされたディレクトリの一部をchrootでのみ読み取ることです。
出来ますか?そうでない場合-それを達成する他の方法は?
ローカルホストのマウントにNFSを使用することを考えていましたが、やり過ぎのようです。
回答:
Squeezeでは、以前は次のもののみを処理していました。
mount --bind /src /dst
その後
mount -o remount,ro /dst
Debian Wheezyでは、次のことを行う必要があります。
mount -o remount,ro,bind /dst
リソースビジーメッセージを取り除くために:
編集:Debian Jessieでは、mountはスマートになり、サブディレクトリをマウントします。すでにバインドされている場合は再帰的になり、悪いことが起こります:)
util-linuxを強制的に再び「愚か」にする特別なオプションがあります。ソリューションはこれです:
mount --bind --make-rprivate /sbin/ $prefix/sbin/
mount -o remount,ro,bind $prefix/sbin/
その後、-bind $ prefix / sbinを別のディレクトリにマウントできます。
manページから:
共有サブツリー操作。Linux 2.6.15以降、マウントとそのサブマウントを共有、プライベート、スレーブ、またはバインド不可としてマークすることができます。共有マウントは、そのマウントのミラーを作成する機能を提供し、いずれかのミラー内のマウントとアンマウントが他のミラーに伝播するようにします。スレーブマウントはマスターから伝播を受け取りますが、その逆は受けません。プライベートマウントには、伝播機能はありません。バインドできないマウントは、バインド操作でクローンを作成できないプライベートマウントです。詳細なセマンティクスは、カーネルソースツリーのDocumentation / filesystems / sharedsubtree.txtファイルに記載されています。サポートされる操作は次のとおりです。
mount --make-shared mountpoint mount --make-slave mountpoint mount --make-private mountpoint mount --make-unbindable mountpoint
次のコマンドを使用すると、特定のマウントポイントの下にあるすべてのマウントのタイプを再帰的に変更できます。
mount --make-rshared mountpoint mount --make-rslave mountpoint mount --make-rprivate mountpoint mount --make-runbindable mountpoint
--make- *操作が要求された場合、mount(8)はfstab(5)を読み取りません。必要な情報はすべてコマンドラインで指定する必要があります。Linuxカーネルは、単一のmount(2)syscallで複数の伝播フラグを変更することを許可しておらず、フラグを他のマウントオプションと混在させることはできません。
util-linux 2.23以降、mountコマンドでは、いくつかの伝播フラグを一緒に使用したり、他のマウント操作と一緒に使用したりできます。この機能は実験的なものです。伝播フラグは、前のマウント操作が成功したときに、追加のmount(2)システムコールによって適用されます。この使用例はアトミックではないことに注意してください。fstab(5)の伝播フラグをマウントオプションとして指定できます(プライベート、スレーブ、共有、バインド不可、rprivate、rslave、rshared、runbindable)。
mount --bind / vital_data / untrusted_container / vital_data
mount -o remount、ro、bind / untrusted_container / vital_data
2番目のマウントでは、「remount、ro、bind」を使用する必要があります。そうしないと、/ vital_dataの他のすべてのインスタンスも読み取り専用になります。
man 2 mount
それbind
が必要であることを示しています: "Linux 2.6.26以降、このMS_REMOUNT
フラグはMS_BIND
マウントポイントごとのフラグのみを変更するために使用できます。これは、" read基になるファイルシステムを変更せずにマウントポイントの-only "フラグを指定します。mountflagsas:MS_REMOUNT | MS_BIND | MS_RDONLY
を指定すると、他のマウントポイントに影響を与えることなく、このマウントポイントを読み取り専用でアクセスできるようになります。(Ubuntu 19.10、Linux man-pages
リリース5.0.2、日付:2019-08-02)
libmount
の呼び出しmount()
機能二回の単一の呼び出し中/usr/bin/mount
のプログラム。したがってlibmount
、の2つの呼び出し/usr/bin/mount
が必要かどうかを決定するのは、カーネルバージョンではなくのバージョンです。
bind
オプションを追加する必要性をどこで経験しましたか?