เป็นไปได้หรือไม่ที่จะเข้าถึงไฟล์“ shadowed” โดย mount


18

ใน Linux มีวิธีเข้าถึงไฟล์บนระบบไฟล์ที่เมาท์ซึ่งเป็น "เงา" เมื่อระบบไฟล์อื่นถูกเมานท์ผ่านไดเรกทอรีย่อยหรือไม่?

เช่น

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

วิธีแก้ปัญหาในฝันของฉันจะไม่ต้องการการยกระดับสิทธิ์หรือเฉพาะกับระบบไฟล์บางระบบ แต่ฉันจะจัดการกับเรื่องที่สนใจที่ฉันสามารถทำได้โดยไม่ต้องเสี่ยงกับระบบไฟล์ที่เสียหาย

คำตอบ:


28

คุณสามารถใช้คำสั่ง mount เพื่อเข้าถึงระบบไฟล์พื้นฐาน

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

ไม่มีปัญหากับความเสียหายในการทำเช่นนี้ แต่จะต้องได้รับอนุญาตในการติดตั้งระบบไฟล์


+1 ฉันคิดว่านั่นmount --bindเป็นคำตอบ แต่ฉันไม่แน่ใจ
Dan D.

1
+0.95 ฉันลืมเกี่ยวกับการผูกที่ไม่ได้เรียกซ้ำโดยปริยาย อย่างไรก็ตามครั้งล่าสุดที่ฉันผูก / ที่อื่นฉันไม่สามารถนับได้โดยไม่ต้องรีบูตเครื่อง; อาจเป็นเพราะองค์ประกอบของ GUI ได้รับมาบ้าง คุณทดสอบแล้วหรือยัง
user1686

ขอบคุณ! ฉันคิดเกี่ยวกับม้าผูกเป็นครั้งที่สอง แต่คิดว่าพวกเขาจะทำงานอยู่บนพื้นฐานของการเขียนชื่อเส้นทางและทำให้เป็น recursive ...
themel

5

หากคุณมีรูทคุณสามารถmount --moveติดตั้งระบบไฟล์ที่ด้านบนของไดเรกทอรีชั่วคราวแล้วย้ายมันกลับมาหลังจากนั้น

mkdir /bar
mount --move /foo /bar

การรูทยังอนุญาตให้เข้าถึงอุปกรณ์บล็อกพื้นฐานได้ถ้ามี สำหรับ ext4 คุณสามารถใช้debugfsเพื่อส่งออกไฟล์

การเข้าถึงแบบอ่านอย่างเดียวจะไม่ทำให้ระบบไฟล์เสียหาย


ไดเรกทอรีสามารถมีตัวจัดการหรือตัวอธิบายไฟล์ที่ได้มาสำหรับพวกเขา "ไดเรกทอรีปัจจุบัน" เป็นจุดจับเช่นกันไม่ใช่เส้นทาง หากคุณมีหมายเลขอ้างอิงไปยังไดเรกทอรีคุณสามารถเข้าถึงไฟล์ภายในแม้ว่าตำแหน่งนั้นจะถูกเมานท์ สิ่งนี้ไม่จำเป็นต้องมีสิทธิพิเศษ แต่เพียงการเตรียมเป็นพิเศษ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.