É possível acessar arquivos "sombreados" por uma montagem?

18

No Linux, existe uma maneira de acessar arquivos em um sistema de arquivos montado que foram "sombreados" quando outro sistema de arquivos foi montado sobre um subdiretório?

Por exemplo

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

A solução dos meus sonhos não exigiria permissões elevadas ou seria específica para um determinado sistema de arquivos, mas aceitarei todos os recados que puder obter sem arriscar um sistema de arquivos corrompido.

themel
fonte

Respostas:

28

Você pode usar o comando mount para acessar o sistema de arquivos subjacente.

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

Não há problema com corrupção ao fazer isso, mas requer permissão para montar o sistema de arquivos.

Paulo
fonte
+1, pensei que essa mount --bindfosse a resposta. Mas eu não tinha certeza.
Dan D.
1
+0,95, eu esqueci completamente que vinculações não são recursivas por padrão. No entanto, da última vez que montei em outro lugar, não consegui desmontá-lo sem reiniciar; pode ter sido algum componente da GUI agarrando-o. Você já testou isso?
user1686
Obrigado! Eu pensei sobre montagens de ligação para um segundo, mas pensei que eles iam trabalhar com base no nome do caminho reescrever e, assim, ser recursiva ...
themel
5

Se você possui root, pode mount --moveinstalar o sistema de arquivos em um diretório temporário e depois movê-lo de volta.

mkdir /bar
mount --move /foo /bar

Ter root também permite acessar diretamente os dispositivos de bloco subjacentes, se houver. Para ext4, você pode usar debugfspara exportar arquivos.

O acesso somente leitura nunca pode corromper o sistema de arquivos.


Os diretórios podem ter identificadores ou descritores de arquivos, obtidos para eles. O "diretório atual" também é um identificador, não um caminho. Se você tiver um identificador para um diretório, poderá acessar os arquivos dentro dele, mesmo que esse local tenha sido montado. Isso não precisa de privilégios especiais, apenas preparação especial.

user1686
fonte