Apakah mungkin untuk mengakses file “dibayangi” oleh tunggangan?

18

Di Linux, apakah ada cara untuk mengakses file pada sistem file yang terpasang yang telah "dibayangi" ketika sistem file lain dipasang di atas subdirektori?

Misalnya

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

Solusi impian saya tidak akan memerlukan izin tinggi atau khusus untuk sistem file tertentu, tetapi saya akan mengambil memo apa pun yang bisa saya dapatkan tanpa membahayakan sistem file yang rusak.

themel
sumber

Jawaban:

28

Anda dapat menggunakan perintah mount untuk mengakses sistem file yang mendasarinya.

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

Tidak ada masalah dengan korupsi dalam melakukan hal ini, tetapi memang memerlukan izin untuk memasang sistem file.

Paul
sumber
+1, saya pikir mount --binditu jawabannya. Tapi saya tidak yakin.
Dan D.
1
+0.95, saya benar-benar lupa tentang binding menjadi non-rekursif secara default. Namun, terakhir kali saya melakukan bindmount / di tempat lain, saya tidak dapat melakukan umount tanpa me-reboot; mungkin beberapa komponen GUI meraihnya. Sudahkah Anda mengujinya?
user1686
Terima kasih! Saya berpikir tentang mengikat mount untuk sesaat, tetapi berpikir mereka akan bekerja berdasarkan penulisan ulang nama path dan dengan demikian bersifat rekursif ...
themel
5

Jika Anda memiliki root, Anda dapat mount --movememasang sistem file di atas direktori sementara, lalu memindahkannya kembali sesudahnya.

mkdir /bar
mount --move /foo /bar

Memiliki root juga memungkinkan mengakses perangkat blok yang mendasarinya, jika ada, secara langsung. Untuk ext4, Anda dapat menggunakannya debugfsuntuk mengekspor file.

Akses hanya-baca tidak pernah dapat merusak sistem file.


Direktori dapat memiliki pegangan, atau deskriptor file, yang diperoleh untuk mereka. "Direktori saat ini" adalah pegangan juga, bukan jalan. Jika Anda memiliki pegangan ke direktori, Anda dapat mengakses file di dalamnya bahkan jika lokasi itu telah di-mount. Ini tidak memerlukan hak istimewa khusus, hanya persiapan khusus.

pengguna1686
sumber