В Linux, есть ли способ получить доступ к файлам в смонтированной файловой системе, которые были «затенены», когда другая файловая система была смонтирована в подкаталоге?
Например
cd /
mkdir /foo
touch /foo/bar
mount /dev/sda1 /foo
# now, can I still get to /foo/bar on the / filesystem?
Решение моей мечты не потребует повышенных разрешений или специфического для определенной файловой системы, но я возьму все, что смогу, не рискуя испортить файловую систему.
mount --bind
был ответ. Но я не был уверен.Если у вас есть root, вы можете
mount --move
смонтировать файловую систему поверх временной директории, а затем переместить ее обратно.Наличие root также позволяет напрямую обращаться к базовым блочным устройствам, если таковые имеются. Для ext4 вы можете использовать
debugfs
для экспорта файлов.Доступ только для чтения никогда не может повредить файловую систему.
Каталоги могут иметь дескрипторы или дескрипторы файлов, полученные для них. «Текущий каталог» тоже дескриптор, а не путь. Если у вас есть дескриптор каталога, вы можете получить доступ к файлам внутри, даже если это место было смонтировано поверх. Для этого не нужны особые привилегии, только специальная подготовка.
источник