インストールソースを独自にバインド

インストールソースを独自にバインド

mount --bind /dir1 /dir1効果は何ですか?私は読んだhttps://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txtしかし、明確な説明はしませんでした。ディレクトリだけでなくファイルでも動作するようです。

ベストアンサー1

これは一般的なものとまったく同じですmount --bind /dir1 /dir2。特別なケースについて知る必要があるのは、それが明確に定義されており、無限に繰り返されないことです。

(たとえば、ファイルは独自のバンドルインストールが可能なので、ファイルも独自のバンドルインストールが可能です。)

この特別なケースは、2つの理由で最初に聞こえるように無意味ではありません。

1. 可能なジョブ制限など、バインドマウントオプションを設定できます。

この呼び出しの後、両方の場所で同じコンテンツにアクセスできます。個々のファイルを(単一ファイルに)再マウントすることも可能です。バインドマウントを使用して通常のディレクトリにマウントポイントを作成することもできます。例:

      mount --bind foo foo

バインドマウント呼び出しは、可能なサブマウントではなく、単一のファイルシステム(の一部)のみを接続します。サブインストールを含む完全なファイル階層は、次のコマンドを使用して2番目の場所に追加されます。

      mount --rbind olddir newdir

ファイルシステムのマウントオプションは、元のマウントポイントのオプションと同じままです。

v2.27以降、mount(8)を使用すると、--bindと共に関連オプションを渡してマウントオプションを変更できます。たとえば、

      mount -o bind,ro foo foo

Linuxカーネルはこの機能をサポートしていません。これは、追加の mount(2) remount システムコールを介してユーザー空間で実装されます。この解決策は原子的ではありません。

読み取り専用のバインドマウントを作成する代替(従来の)方法は、再マウント操作を使用することです。たとえば、次のようになります。

      mount --bind olddir newdir
      mount -o remount,bind,ro olddir newdir

読み取り専用バインドは読み取り専用マウントポイント(VFSエントリ)を生成しますが、ソースファイルシステムのスーパーブロックはまだ書き込み可能です。つまり、olddirは書き込み可能ですが、newdirは読み取り専用です。

nosuid、nodev、noexec、noatime、nodiratime、およびrelatime VFSエントリフラグは、「remount、bind」操作によって変更することもできます。インストールオプションを繰り返し変更することはできません(例:-orbind、roを使用)。

マウントオプションの別の用途は、「伝播フラグ」を設定することです。具体的な説明は次のとおりですsharedsubtree.txt。間違いなく混乱する可能性があります。また、に簡単に説明されていますman mount

私が提供するヒントは1つだけです。この資料では、リムーバブルデバイスのインストールを「スレーブ」インストールの名前空間に伝播するには、共有サブツリーが必要であると主張しています。しかし、より重要な動機は、次のことができることです。削除「スレーブ」インストールは、名前空間でサンドボックスプロセスを開始した後のリムーバブルデバイスです。

2. ファイルを移動またはリンクできない境界を作成します。

明らかにこれは部分的に予想される上記の制限をバイパスしないようにするには、ハードリンクが部分的にセキュリティに悪いため、一部の制限を適用すると便利です。

おすすめ記事