Ist es möglich, auf Dateien zuzugreifen, die von einem Mount "beschattet" werden?

18

Gibt es unter Linux eine Möglichkeit, auf Dateien in einem bereitgestellten Dateisystem zuzugreifen, die "gespiegelt" wurden, als ein anderes Dateisystem über ein Unterverzeichnis bereitgestellt wurde?

Z.B

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

Die Lösung meiner Träume würde keine erhöhten Berechtigungen erfordern oder spezifisch für ein bestimmtes Dateisystem sein, aber ich werde alle möglichen Botschaften aufnehmen, ohne ein beschädigtes Dateisystem zu riskieren.

themel
quelle

Antworten:

28

Mit dem Befehl mount können Sie auf das zugrunde liegende Dateisystem zugreifen.

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

Dies ist kein Problem mit der Beschädigung, erfordert jedoch die Berechtigung zum Mounten des Dateisystems.

Paul
quelle
+1, ich dachte das wäre mount --binddie Antwort. Ich war mir aber nicht sicher.
Dan D.
1
+0,95, ich habe völlig vergessen, dass Bindungen standardmäßig nicht rekursiv sind. Das letzte Mal, als ich mich an einen anderen Ort gebunden habe, konnte ich die Bereitstellung jedoch nicht aufheben, ohne den Computer neu zu starten. Möglicherweise hat es eine GUI-Komponente gepackt. Hast du das getestet?
Grawity
Vielen Dank! Ich dachte für eine Sekunde darüber nach, Reittiere zu binden, aber ich dachte, sie würden auf der Grundlage des Umschreibens von Pfadnamen funktionieren und somit rekursiv sein ...
themel
5

Wenn Sie root haben, können Sie mount --movedas gemountete Dateisystem über einem temporären Verzeichnis ablegen und es anschließend zurückschieben.

mkdir /bar
mount --move /foo /bar

Wenn Sie über root verfügen, können Sie auch direkt auf die zugrunde liegenden Blockgeräte zugreifen, sofern vorhanden. Für ext4 können Sie debugfszum Exportieren von Dateien verwenden.

Schreibgeschützter Zugriff kann niemals das Dateisystem beschädigen.


Für Verzeichnisse können Handles oder Dateideskriptoren abgerufen werden. Das "aktuelle Verzeichnis" ist auch ein Handle, kein Pfad. Wenn Sie ein Handle für ein Verzeichnis haben, können Sie auf Dateien darin zugreifen, auch wenn dieser Speicherort über gemountet wurde. Dies erfordert keine besonderen Privilegien, nur eine besondere Vorbereitung.

Grawity
quelle