Czy można uzyskać dostęp do plików „ukrytych” przez wierzchowca?

18

Czy w systemie Linux istnieje sposób na dostęp do plików w zamontowanym systemie plików, które zostały „ukryte”, gdy inny system plików został zamontowany w podkatalogu?

Na przykład

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

Rozwiązanie moich marzeń nie wymagałoby podwyższonych uprawnień ani nie było specyficzne dla określonego systemu plików, ale wezmę wszelkie skrawki, które uda mi się uzyskać, nie ryzykując uszkodzonego systemu plików.

themel
źródło

Odpowiedzi:

28

Możesz użyć polecenia mount, aby uzyskać dostęp do bazowego systemu plików.

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

Nie ma w tym problemu z korupcją, ale wymaga zgody na podłączenie systemu plików.

Paweł
źródło
+1, myślałem, że to mount --bindbyła odpowiedź. Ale nie byłem pewien.
Dan D.
1
+0,95, całkowicie zapomniałem, że wiązania domyślnie nie są rekurencyjne. Jednak ostatnim razem, gdy dokonałem powiązania / gdzie indziej, nie mogłem odmontować go bez ponownego uruchomienia; mógł być jednak jakiś element GUI. Testowałeś to?
user1686
Dzięki! Przez chwilę myślałem o oprawach do
bindowania
5

Jeśli masz root, możesz mount --movepodłączyć system plików do katalogu tymczasowego, a następnie przenieść go z powrotem.

mkdir /bar
mount --move /foo /bar

Posiadanie katalogu root umożliwia również bezpośredni dostęp do podstawowych urządzeń blokowych. W przypadku ext4 możesz użyć debugfsdo eksportu plików.

Dostęp tylko do odczytu nigdy nie może uszkodzić systemu plików.


Katalogi mogą mieć dla nich uchwyty lub deskryptory plików. „Bieżący katalog” to także uchwyt, a nie ścieżka. Jeśli masz uchwyt do katalogu, możesz uzyskać dostęp do plików wewnątrz, nawet jeśli ta lokalizacja została zamontowana. Nie wymaga to specjalnych uprawnień, a jedynie specjalne przygotowanie.

użytkownik1686
źródło