17

В Linux, есть ли способ получить доступ к файлам в смонтированной файловой системе, которые были "затенены", когда другая файловая система была смонтирована в подкаталоге?

Например

cd /
mkdir /foo
touch /foo/bar
mount /dev/sda1 /foo
# now, can I still get to /foo/bar on the / filesystem?

Решение моей мечты не потребует повышенных разрешений или специфического для определенной файловой системы, но я возьму все, что смогу, не рискуя испортить файловую систему.

2 ответа2

27

Вы можете использовать команду mount для доступа к базовой файловой системе.

$ mkdir /mnt/root
$ sudo mount --bind / /mnt/root
$ cat /mnt/root/foo/bar

При этом не возникает проблем с повреждением, но для этого требуется разрешение на монтирование файловой системы.

5

Если у вас есть root, вы можете mount --move смонтированной файловой системы поверх временной директории, а затем переместить ее обратно.

mkdir /bar
mount --move /foo /bar

Наличие root также позволяет напрямую обращаться к базовым блочным устройствам, если таковые имеются. Для ext4 вы можете использовать debugfs для экспорта файлов.

Доступ только для чтения никогда не может повредить файловую систему.


Каталоги могут иметь дескрипторы или дескрипторы файлов, полученные для них. "Текущий каталог" тоже дескриптор, а не путь. Если у вас есть дескриптор каталога, вы можете получить доступ к файлам внутри, даже если это место было смонтировано. Для этого не нужны особые привилегии, только специальная подготовка.

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