1

Можно ли выполнить chroot или иным образом создать несвязанный (в основной корневой файловой системе) каталог? Насколько я понимаю, ядро автоматически удаляет любой файл / папку, на которую нет ссылки в файловой системе, но есть ли способ получить второй корень?

1 ответ1

0

Да, и вполне возможно, что у вас уже есть несколько из них. Помните, что вы можете иметь несколько независимых файловых систем, смонтированных в разных местах - и каждая из них имеет свой собственный "корень".

Например, если отдельный раздел "data" смонтирован в /mnt/data , то этот каталог на самом деле является корневым каталогом файловой системы, и нет .. который будет указывать над ним. (То же самое относится и к внутренним файловым системам, таким как /sys или /dev.)

В Linux уровень VFS - "виртуальная файловая система" - делает эту работу. Это позволяет root 1 быть доступным в / и root 2 в /mnt/data , и это создает иллюзию ссылки /mnt/data/.. на /mnt .


(Опять же, в Linux у VFS есть несколько других интересных функций, обычно используемых для / . Например, когда ядро запускается, / присоединяется к пустой файловой системе "tmpfs", где initramfs распаковывается. В конце концов, основная корневая файловая система монтируется где-то в /new_root или около того и перемещается в / используя специальный pivot_root или более общий mount --move . Плюс, конечно, вы уже упомянули chroot .

Другими словами, корневой каталог VFS не обязательно рожден таким.

Можно иметь несколько корней VFS одновременно - не только с помощью chroot, но и с помощью пространств имен монтирования, где разные процессы могут видеть разные монтирования VFS полностью; это используется «контейнерами», такими как Docker.)


Однако неверно, что корень файловой системы не имеет ссылок. Он не имеет только ссылок сверху, но может легко содержать ссылки снизу - в обычных подкаталогах (таких как /bin) .. является реальной ссылкой, поэтому / будет иметь ссылки из /bin/.. , /etc/.. и так далее.

(Интересно, что именно поэтому вы можете переименовывать каталоги только для чтения, но не перемещать их в другое место, потому что последний потребует записи в каталог для обновления его .. ссылки.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .