Est-il possible d'accéder à des fichiers «masqués» par un montage?

18

Sous Linux, existe-t-il un moyen d'accéder à des fichiers sur un système de fichiers monté qui ont été "masqués" lorsqu'un autre système de fichiers a été monté sur un sous-répertoire?

Par exemple

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

La solution de mes rêves ne nécessiterait pas d'autorisations élevées ou ne serait pas spécifique à un certain système de fichiers, mais je prendrai tous les morceaux que je peux obtenir sans risquer un système de fichiers corrompu.

themel
la source

Réponses:

28

Vous pouvez utiliser la commande mount pour accéder au système de fichiers sous-jacent.

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

Cela ne pose aucun problème de corruption, mais cela nécessite l'autorisation de monter le système de fichiers.

Paul
la source
+1, je pensais que mount --bindc'était la réponse. Mais je n'étais pas sûr.
Dan D.
1
+0,95, j'ai complètement oublié que les liaisons ne sont pas récursives par défaut. Cependant, la dernière fois que j'ai monté / ailleurs, je ne pouvais pas le démonter sans redémarrer; peut-être qu'un composant de l'interface graphique l'a saisi. L'avez-vous testé?
user1686
Merci! J'ai pensé à lier les montages pendant une seconde, mais j'ai pensé qu'ils fonctionneraient sur la base de la réécriture des noms de chemin et seraient donc récursifs ...
themel
5

Si vous avez root, vous pouvez mount --moveplacer le système de fichiers monté au-dessus d'un répertoire temporaire, puis le déplacer ensuite.

mkdir /bar
mount --move /foo /bar

Avoir root permet également d'accéder directement aux périphériques de blocs sous-jacents, le cas échéant. Pour ext4, vous pouvez utiliser debugfspour exporter des fichiers.

L' accès en lecture seule ne peut jamais corrompre le système de fichiers.


Les répertoires peuvent avoir des descripteurs ou des descripteurs de fichiers pour eux. Le "répertoire courant" est aussi un handle, pas un chemin. Si vous avez un descripteur sur un répertoire, vous pouvez accéder aux fichiers à l'intérieur même si cet emplacement a été monté. Cela n'a pas besoin de privilèges spéciaux, seulement une préparation spéciale.

user1686
la source