Чому я не можу прив’язати «/» в просторі імен користувача?


13

Чому це не працює?

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

Це добре:

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

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

Відповіді:


16

Різниця полягає в тому, що /у дітей є кріплення. Всередині простору імен користувачів вам не дозволяється відокремлювати успадковані версії від їх дочірніх версій. Більш очевидний приклад - вам не дозволено umount /proc. В іншому випадку це може раптом надати вам доступ до файлів, які були приховані під іншими кріпленнями. Перевитрати іноді навмисно використовуються як захід безпеки.

Вам дозволяється створити замість цього рекурсивне кріплення, яке зберігає всі додаткові версії:

$ unshare -rm mount --rbind / /mnt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.