是否可以访问被挂载“隐藏”的文件?

the*_*mel 24 linux mount

在 Linux 中,有没有办法访问已挂载的文件系统上的文件,当另一个文件系统挂载在子目录上时,这些文件已被“隐藏”?

例如

cd /
mkdir /foo
touch /foo/bar
mount /dev/sda1 /foo
# now, can I still get to /foo/bar on the / filesystem?
Run Code Online (Sandbox Code Playgroud)

我梦想中的解决方案不需要提升权限或特定于某个文件系统,但我会使用我能得到的任何碎片,而不会冒文件系统损坏的风险。

Pau*_*aul 32

您可以使用 mount 命令访问底层文件系统。

$ mkdir /mnt/root
$ sudo mount --bind / /mnt/root
$ cat /mnt/root/foo/bar
Run Code Online (Sandbox Code Playgroud)

这样做没有损坏问题,但它确实需要安装文件系统的权限。


use*_*686 5

如果您有 root 用户,您可以mount --move将挂载的文件系统放在临时目录之上,然后将其移回。

mkdir /bar
mount --move /foo /bar
Run Code Online (Sandbox Code Playgroud)

拥有 root 用户还可以直接访问底层块设备(如果有)。对于 ext4,您可以使用debugfs导出文件。

只读访问永远不会破坏文件系统。


目录可以有为它们获得的句柄或文件描述符。“当前目录”也是一个句柄,而不是一个路径。如果您有一个目录的句柄,即使该位置已被挂载,您也可以访问其中的文件。这不需要特别的特权,只需要特别的准备。