Dlaczego nie mogę zamontować binda „/” w przestrzeni nazw użytkownika?


13

Dlaczego to nie działa?

$ unshare -rm mount --bind / /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error.

Te działają ok:

$ unshare -rm mount --bind /tmp /mnt
$ unshare -rm mount --bind /root /mnt
$

$ uname -r  # Linux kernel version
4.17.3-200.fc28.x86_64

Odpowiedzi:


16

Różnica polega na tym, że /ma elementy potomne. W przestrzeni nazw użytkownika nie wolno oddzielać odziedziczonych uchwytów od ich potomków. Bardziej oczywistym przykładem jest to, że nie wolno ci umount /proc. W przeciwnym razie może nagle dać ci dostęp do plików ukrytych pod innymi wierzchowcami. Overmount są czasami celowo stosowane jako środek bezpieczeństwa.

Zamiast tego możesz utworzyć rekurencyjne mocowanie wiązania, które zachowuje wszystkie podpięcia:

$ unshare -rm mount --rbind / /mnt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.