หนึ่งในสคริปต์ของฉันสร้าง symlink แบบไดนามิกดังนี้:
ln -s /home/hosting/projects/images /home/hosting/projects/demo/images
ฉันจะทำให้การเข้าถึงผ่านลิงก์เป็นแบบอ่านอย่างเดียวได้อย่างไร
หนึ่งในสคริปต์ของฉันสร้าง symlink แบบไดนามิกดังนี้:
ln -s /home/hosting/projects/images /home/hosting/projects/demo/images
ฉันจะทำให้การเข้าถึงผ่านลิงก์เป็นแบบอ่านอย่างเดียวได้อย่างไร
คำตอบ:
คุณสามารถสร้างแบบอ่านอย่างเดียวผูก-mount
mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest
ใช่ต้องดำเนินการในสองขั้นตอนในเมล็ดหลังจาก Linux เคอร์เนล 2.6.25 (ดูลิงก์ด้านบนเพื่อดูเหตุผล)
หรืออีกวิธีหนึ่งเป็น/etc/fstab
ตัวอย่างบรรทัดอ้างอิง :
/path/to/source/ /path/to/dest/ none bind,ro
ไม่ว่าจะด้วยวิธีใด bind mount จะอยู่ในเลเยอร์ระบบไฟล์เสมือน (VFS) ดังนั้นมันจึงไม่เจาะจงกับระบบไฟล์ใด ๆ โดยพื้นฐานแล้วนี่คือการสร้างลิงก์สัญลักษณ์ให้คุณ แต่สิ่งนี้จะไม่ปรากฏเช่นนี้
และเพื่อตอบความคิดเห็นด้านล่างเกี่ยวกับการสูญเสียข้อมูล ... ไม่คำแนะนำเหล่านี้จะไม่ลบไฟล์ใด ๆ ในกรณีที่คุณมีไฟล์อยู่บนเส้นทางปลายทางการเมานต์นี้จะอยู่เหนือสิ่งนี้ เพียงยกเลิกการต่อเชื่อมเพื่อแสดงรายการไฟล์ของคุณในพา ธ บนระบบไฟล์ที่อยู่ด้านล่าง ดียิ่งขึ้น โดยทั่วไปหลีกเลี่ยงการติดตั้งที่ด้านบนของเส้นทางปลายทางที่ไม่ว่างเปล่า
mount -o bind,remount,ro /path/to/dest
ดูlwn.net/Articles/637501จากชุดข้อความเดียวกัน
mount -o remount,ro /path/to/dest
ให้ฉันข้อผิดพลาดต่อไปนี้: mount: mount point is busy.
@gertvdijk
การเชื่อมโยงแบบอ่านอย่างเดียวด้วยคำสั่งเดียว:
mount --bind -r /path/to/source/ /path/to/dest/
เพื่อยกเลิกการต่อเชื่อม
umount /path/to/dest/