คำถามของ OP mount --bind
กล่าว ตรวจสอบอย่างรวดเร็วแสดงให้เห็นว่ามันไม่ได้แก้ไขการเชื่อมโยงนับสำหรับไดเรกทอรีที่ติดตั้ง การเชื่อมโยงถาวรจะแก้ไขการนับลิงก์ซึ่งคุณสามารถดูls -ld
ได้ตลอดเวลา
โดยปกติ (ระบบ Unix-like ส่วนใหญ่) จำนวนฮาร์ดลิงก์ไปยังไดเรกทอรีจะเป็นจำนวนไดเรกทอรีที่เชื่อมต่อกับชื่อนั้นเช่น
".."
(ไดเรกทอรีแม่)
"."
(ไดเรกทอรีเอง)
- ไดเรกทอรีย่อย
หากคุณอ่านหน้าข้อมูลที่ให้ข้อมูลมากขึ้น (โดยปกติ) คุณอาจค้นพบว่าคนอื่น ๆได้ทำ:
Oh great, one spends hours tying to find what is wrong only to
discover,
$ info ln
On all existing implementations, you cannot make a hard link to a
directory, and hard links cannot cross filesystem boundaries. (These
restrictions are not mandated by POSIX, however.)
Therefore, kindly say everywhere you say super-user only,
instead say "few systems, super-user only".
แม้ว่ามันจะถูกใช้ในปัจจุบัน
ระบบส่วนใหญ่ห้ามทำการสร้างฮาร์ดลิงก์ไปยังไดเรกทอรี ผู้ที่ได้รับอนุญาตมีเพียงผู้ใช้ขั้นสูงเท่านั้นที่สามารถทำได้ (และด้วยความระมัดระวังเนื่องจากการสร้างวงจรจะทำให้เกิดปัญหากับโปรแกรมอรรถประโยชน์อื่น ๆ ) ฮาร์ดลิงก์ไม่สามารถข้ามขอบเขตระบบไฟล์ได้ (ข้อ จำกัด เหล่านี้ไม่ได้รับคำสั่งจาก POSIX)
การสร้าง (และลบ) ฮาร์ดลิงก์ไปยังไดเรกทอรีเป็นคุณสมบัติที่ จำกัด เพื่อป้องกันการสูญเสียไฟล์หากไม่มีการลิงก์ไดเรกทอรี เนื่องจากการดำเนินการ link / unlink ที่อินเตอร์เฟสของระบบปฏิบัติการ C นั้นมีความสมมาตรการลิงก์ไปยังไดเร็กทอรีจึงทำได้โดยปกติในการเรียก mkdir / rmdir เท่านั้น
โปรดจำไว้ว่า coreutils ของ GNU ส่วนใหญ่เขียน (และจัดทำเอกสาร) เมื่อ 20-30 ปีที่แล้วเมื่อบางส่วนของพิพิธภัณฑ์ที่แท้จริงยังใช้อยู่ ตามที่ระบุไว้ในเกี่ยวกับการเชื่อมโยงอย่างหนักแต่เดิมมีอยู่ไม่มีการโทร mkdir / rmdir; ไดเรกทอรีถูกสร้างขึ้น (เป็นการดำเนินการพิเศษ) โดยใช้ฮาร์ดลิงก์ สิ่งเหล่านี้ทั้งหมดหายไปเมื่อมีการเพิ่มการเรียกของระบบเพื่อแก้ไขปัญหาที่กล่าวถึง แต่เอกสารอ้างอิงยังคงอ้างอิงถึงระบบเหล่านี้ผ่านหน่วยความจำของผู้ดูแล ตัวเลือกที่ถูกสอบปากคำนั้นอยู่ในรุ่นก่อนfileutils
(ซึ่งรวมกับtextutils
และshellutils
ในช่วงกลางทศวรรษที่ 1990 ถึงรูปแบบcoreutils
) รายการจากการเปลี่ยนแปลงบางอย่างอาจช่วยอธิบายที่มาของคุณสมบัติ:
Mon Jul 23 16:57:44 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* cp.c (copy): Make +update operate silently, like +one-file-system.
* ln.c: Add -F as synonym for -d, for SunOS compatibility.
Wed Feb 21 11:13:26 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* ln.c (error): New function.
(main, do_link): Call error instead of fprintf and exit.
(main): Recognize new -d +directory option to allow superuser to
make hard links to dirs, like the BSD ln -f option.
(do_link): Don't allow hard links to dirs (they are hard to
get rid of -- rmdir and unlink don't do it), unless -d was given.
(usage): Mention -d +directory option.
ดังนั้นคุณสามารถดูตัวอย่างว่าหนึ่งในโบราณวัตถุซึ่งคุณสมบัตินี้สามารถใช้งานได้คือ SunOS หน้าคู่มือที่เกี่ยวข้องกล่าวว่า:
OPTIONS
-f Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
SYSTEM V OPTIONS
-f Force files to be linked without displaying permissions, asking
questions or reporting errors.
-F Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
ตามที่ระบุไว้ในเอกสารประกอบคุณลักษณะนี้ (และตัวเลือกที่สอดคล้องกันไม่ได้อยู่ใน POSIX (และดูเหตุผลส่วนซึ่งอธิบายว่าทำไม). แต่คุณลักษณะถูกย้ายไปที่คำสั่งใหม่ (ให้ได้โดย coreutils GNU) เรียกว่าlink
. คำอธิบายของ คำสั่งนั้นคลุมเครือคุณต้องอ่านคำอธิบายของการเรียกใช้ฟังก์ชั่นเพื่อรับการใช้งานจากมาตรฐานอย่างไรก็ตามมาตรฐานไม่ได้ชี้แจงเงื่อนไขที่คำสั่งจะใช้งานได้ ด้วยเหตุนี้คุณต้องไปที่คุณสมบัติที่ขึ้นกับระบบนอกมาตรฐาน:
การลิงก์ไปยังไดเรกทอรีนั้นถูก จำกัด ไว้ที่ superuser ในการนำไปใช้ในอดีตส่วนใหญ่เนื่องจากความสามารถนี้อาจสร้างลูปในลำดับชั้นของไฟล์หรือทำให้ระบบไฟล์เสียหาย ปริมาณของ POSIX.1-2008 นี้ยังคงปรัชญาดังกล่าวโดยการห้ามlink()
และไม่ให้unlink()
ทำเช่นนี้ ฟังก์ชั่นอื่น ๆ สามารถทำได้หากผู้ดำเนินการออกแบบส่วนขยายดังกล่าว
มีเป็นระบบที่ใช้ hardlinks ไดเรกทอรีเกินจำนวนตามปกติ (2 บวกไดเรกทอรีย่อย)
OSX ใช้ฮาร์ดลิงก์หลายรายการไปยังไดเรกทอรีสำหรับไฟล์ทั่วไป ไม่รองรับการใช้สิ่งนี้ln
(ดูหน้าคู่มือ ) ตามที่Time Machine ใช้งาน Magicมันทำสิ่งนี้เพื่อให้รุ่นที่ใช้สำหรับการสำรองข้อมูล Time Machine
อ่านเพิ่มเติม: