É possível acessar arquivos “sombreados” por uma montagem?

16

No Linux, existe uma maneira de acessar arquivos em um sistema de arquivos montado que foram "sombreados" quando outro sistema de arquivos foi montado em 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 de um determinado sistema de arquivos, mas eu pegaria qualquer recado que conseguir sem arriscar um sistema de arquivos corrompido.

    
por themel 13.02.2012 / 09:56

2 respostas

26

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á nenhum problema com a corrupção ao fazer isso, mas requer permissão para montar o sistema de arquivos.

    
por 13.02.2012 / 10:35
5

Se você tem root, você pode mount --move do sistema de arquivos montado sobre um diretório temporário, e depois movê-lo de volta.

mkdir /bar
mount --move /foo /bar

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

Acesso somente leitura pode nunca corromper o sistema de arquivos.

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

    
por 13.02.2012 / 10:38

Tags