私はこれを行うために正常にマウントを使用しました。
sudo mount -o bind dir dir &&
sudo mount -o remount,bind,suid dir
2回の呼び出しが必要ですmount
。短時間で作業を実行することはできません。とにかく、マニュアルは2つのマウントシステムコールが必要であると述べています。
しかし、何を入れるべきかわかりません/etc/fstab
。
私が試したことは次のとおりです。
/home/system/dir /home/system/dir none bind
/home/system/dir /home/system/dir none remount,bind,suid
そして
/home/system/dir /home/system/dir none remount,bind,suid
ベストアンサー1
バインドマウントの期待される動作をトリガーするために単一の項目を使用する構文解決方法を考えました/etc/fstab
。それ以外の場合、forはトリガーされませんsuid
(ただしforはトリガーされますnosuid
)。辛抱強くなければ、答えの最後の行に行くことができます。
/etc/fstab
渡すシステム起動時と経由山将来的には重複項目はサポートされません。システム各項目をインストール単位に変換します。同じ名前の2つのユニットがあると問題が発生するようです。山独自に同じ問題がある可能性があります。同じ名前の2つの項目を区別する方法がないため、最初の項目しか存在できませんが、
/etc/fstab
とにかく異なる動作を期待できます。したがって、次の方法でこの問題を処理してみてください。二つ入学は
/etc/fstab
難しいようです。これ山コマンド(単独でまたは一緒にシステム)反対の場合にのみうまく処理する。
「否定的」オプション(
nosuid
バインドマウントなど)を指定する場合は、最新のオプションで十分です。山コマンド(またはシステムそうでない場合山)正しく2つを放出します。mount(2)
システムコールの2番目の呼び出しは追加のMS_REMOUNT
フラグを使用します。 「ポジティブ」オプションのみが指定されている場合(システムコールから欠落しているフラグに変換される)、以前の「ネガティブ」オプションを復元する意図があっても、単一のマウントシステムコールが実行されます。たとえば、2つのシステムコールの動作をトリガーする別のオプションを指定すると、追加の
bind,nodev
「攻撃的な」オプション(suid
withbind,nodev,suid
など)も2番目のマウントシステムコールから始まります(反対フラグがないため)。suid
これはstraceの例でうまく機能します。743790 mount("/home/system/dir", "/home/system/dir", 0x563792444220, MS_NODEV|MS_BIND, NULL) = 0 743790 mount("none", "/home/system/dir", NULL, MS_NODEV|MS_REMOUNT|MS_BIND, NULL) = 0
存在しない
MS_NOSUID
ためMS_REMOUNT
、マウントポイントがに設定されますsuid
。これはまた、親マウントに設定されている他のすべてのデフォルトオプションが、関連付けられたバインドマウントに対して明示的に書き換えられなければならないことを意味します。それ以外の場合、そのオプションは消えます。ここでオプションを指定しないと、suid
バインドマウントが再マウントされます。スエイドMS_NOSUID
どちらの場合も、2番目のマウントシステムコールでフラグが欠落しているためです。 2番目のシステムコールをトリガーするオプションはまだ存在しなければならず、そうでなければまったく実行されません。
OPの意図はここでルートレスコンテナを実行することであると推測されるので、この動作を実行し続けるには無害なオプションを使用する必要があります。私が見つけることができる唯一の候補者mount(2)
wasMS_NOATIME
またはMS_NODIRATIME
and MS_RELATIME
、最後は今日のデフォルト値であり、確かに既に存在します。
Linux 2.4以降、上記の一部フラグはインストールごとに設定できます。、他のものはマウントされたファイルシステムのスーパーブロックに適用されます。これは、同じファイルシステム内のすべてのマウントがこれらのフラグを共有することを意味します。 (以前はすべてのフラグがスーパーブロックごとに行われました。)
これ各取付点の表示以下に示すように:
- Linux 2.4以降:
MS_NODEV
とフラグMS_NOEXEC
はMS_NOSUID
マウントポイントごとに設定できます。- また、Linux 2.6.16以降:
MS_NOATIME
とMS_NODIRATIME
。- またLinux 2.6.20から:
MS_RELATIME
。[...]
Linux 2.6.16以降、
MS_RDONLY
スーパーブロックはデフォルトのファイルシステムだけでなく、マウントポイントごとに設定または消去できます。[...]
したがって、今日実行された項目の最終的に予想される効果は次のとおりです。
/home/system/dir /home/system/dir none bind,relatime 0 0
単にリセットするrelatime
と、2番目のマウントsyscallがトリガーされ、変更が再び許可されますsuid
。この場合、/home
フラグがあると通常rw,nosuid,relatime
どおり処理されるという/home/system/dir
フラグがあります。rw,relatime
設定値バイナリ、他は変更されていません。
suid
ただし、一貫性、文書化/理解のため、および将来の変更/改善を防ぐために、目的の目的を明確に指定することが最善です。
/home/system/dir /home/system/dir none bind,relatime,suid 0 0