สิทธิ์ไดเรกทอรีควรจะทำงานบน Linux อย่างไร


11

ฉันสร้างไดเรกทอรีที่สร้างแล้วมีสิทธิ์เหล่านี้ - ผู้ใช้รายอื่นมี

drwxr - r-- ผู้ใช้ 5 ราย 4096 2012-09-15 19:30 ไซต์

เมื่อใดที่ทำ ls -l ในไดเรกทอรีในฐานะผู้ใช้รายอื่น

ls -l / home / user / sites

นี่คือเอาต์พุตไดเร็กทอรี ฉันคิดว่าไม่มีการตั้งค่าบิต x ในไดเรกทอรีนั้นชื่อไฟล์จะไม่แสดงเลย

d????????? ? ? ? ?                ? dev.user.com  
-????????? ? ? ? ?                ? user.20120914_082804.sql.gz   
d????????? ? ? ? ?                ? shared  
-????????? ? ? ? ?                ? shared.tar.gz  
-????????? ? ? ? ?                ? www.20120914_083256.tar.gz
d????????? ? ? ? ?                ? www.user.com

มีความไม่สอดคล้องกันที่นี่บ้างไหม?

คำตอบ:


16

xช่วยให้คุณได้รับอนุญาตให้อยู่ในไดเรกทอรีและเข้าถึงไฟล์ในไดเรกทอรีrให้สิทธิ์ในการดูเนื้อหาของไดเรกทอรี

หากคุณย้อนกลับสถานการณ์ด้วยการให้ไดเรกทอรีxบิตและลบrบิตจากนั้นผู้ใช้สามารถเปิดshared.tar.gz(สมมติว่าสิทธิ์ที่เหมาะสมในไฟล์ตัวเอง) แต่ถ้าเขารู้ชื่อไฟล์ล่วงหน้าเพราะlsจะไม่สามารถแสดงรายการไฟล์ในไดเรกทอรี .


1
ฉันจะทดสอบสิ่งนี้และกลับไปหาคุณ ฉันมักจะพบแง่มุมต่าง ๆ ของการแชร์ไฟล์ Linux ที่ทำให้เกิดความสับสน
vfclists

พฤติกรรมนั้นไม่ซ้ำกับ Linux; มันย้อนกลับไปในวันแรกสุดของ UNIX - Linux ซึ่งเป็นระบบที่เข้ากันได้กับ UNIX ทำงานอย่างนั้น - และรายการ Windows NT ACL มีบิตสิทธิ์คล้ายกัน

2

การตีความการอนุญาตนี้ย้อนกลับไปสู่ระบบไฟล์ Unix รุ่นแรก ๆ ในตอนแรกมีเพียงไฟล์เท่านั้น (อืมและอุปกรณ์และท่อและ ... แต่ฉันพยายามเล่าเรื่องที่นี่ไม่ใช่ความแม่นยำ 100% อย่างเคร่งครัดนอกจากนี้มันเป็นความจริงสำหรับอุปกรณ์และท่อและทุกอย่างอื่นเพราะทุกอย่างเป็นไฟล์แม้แต่ ไดเรกทอรี)

ไดเรกทอรีเป็นเพียงไฟล์ที่ระบบไฟล์ใช้เพื่อเก็บข้อมูลเมตาที่อธิบายโครงสร้างไดเรกทอรีและไฟล์ที่มีอยู่ แต่ละไฟล์ในไดเรกทอรีอธิบายโดยโครงสร้างข้อมูลอย่างง่ายที่มีที่ว่างสำหรับชื่อไฟล์ (เดิมคือ 14 ตัวอักษร, IIRC) พร้อมกับหมายเลขไอโหนดซึ่งข้อมูลถูกเก็บไว้ขนาดของไฟล์การประทับเวลาและคำอนุญาต . ทุกไดเรกทอรีเริ่มต้นด้วยสองรายการที่มีชื่อ.และ..สิ่งแรกที่ชี้ไปที่ไอโหนดของไดเรกทอรีนี้มากและที่สองที่ไอโหนดของไดเรกทอรีหลัก

คำอนุญาตมีเก้าบิตเพื่ออธิบายการปฏิบัติต่อเจ้าของสมาชิกคนอื่น ๆ ในกลุ่มเดียวกันและโลก สามบิตสำหรับแต่ละแฟล็กว่าผู้ใช้ที่เกี่ยวข้องสามารถอ่านเขียนหรือเรียกใช้ไฟล์ (คุณอาจสังเกตเห็นว่ามีอีกห้าบิตในคำอนุญาตแบบ 16 บิตที่ฉันไม่สนใจในที่สุดพวกเขาก็ได้รับความหมายที่กำหนด แต่ไม่เกี่ยวข้องกับส่วนนี้ของเรื่องราว) (เช่นกันการตีความของเก้านี้ บิตยังคงเหมือนเดิมใน Unix รุ่นแรกรวมถึง Linux ด้วย)

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

ดังนั้นบิตการอ่านหมายความว่าผู้ใช้สามารถอ่านไดเร็กทอรีเองได้ นั่นทำให้ผู้อ่านเข้าถึงชื่อไฟล์, การประทับเวลาขนาดและหมายเลขไอโหนดของข้อมูลของไฟล์แต่ละไฟล์ โดยเฉพาะกับrชุดที่คุณสามารถใช้lsเพื่อดูชื่อของไฟล์ทั้งหมดในไดเรกทอรี แต่ที่ไม่เพียงพอที่จะเปิด (หรือใช้ในทางใด ๆ ) ใด ๆ ของไฟล์ที่ระบุไว้

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

บิตการเขียนหมายความว่าผู้ใช้สามารถเขียนไปยังไดเรกทอรี แต่เป็นสื่อกลางโดยระบบไฟล์เท่านั้นเอง นั่นหมายความว่าด้วยwชุดคุณสามารถสร้างไฟล์ใหม่ในไดเรกทอรีนั้นหรือแก้ไขรายการไดเรกทอรีของไฟล์ที่มีอยู่ แต่ถ้าไม่มีการxตั้งค่าคุณจะไม่สามารถใช้ไฟล์ใด ๆ ได้จริงและหากrคุณไม่เห็นไฟล์เหล่านั้น

เนื่องจากแบบจำลองที่ซับซ้อนมากขึ้นของข้อมูลประจำตัวของผู้ใช้มีการพัฒนาใน Unix และลูกหลานของมันคำอธิบายพื้นฐานเดียวกันเหล่านี้มีการจัดการเพื่อให้ไม่เปลี่ยนแปลงอย่างน่าทึ่ง

กล่าวโดยย่อrคือคุณสามารถดูเนื้อหาได้xหมายความว่าคุณสามารถใช้และwหมายความว่าคุณสามารถแก้ไขได้แม้จะเป็นไดเรกทอรี


ฉันสมมติว่าคุณสามารถอธิบายmode_tสิ่งต่าง ๆ ได้มากขึ้นเล็กน้อย (โดยเฉพาะส่วนที่สิทธิ์และประเภทไฟล์ถูกเก็บไว้ในฟิลด์ 32 บิตเดียวกัน)
SaveTheRbtz

1
ฉันเป็นผู้ใช้ unix และนักพัฒนาซอฟต์แวร์ในยุค 80 ฉันไม่ได้พยายามที่จะบอกเล่าเรื่องราวที่สมบูรณ์เกี่ยวกับสิ่งที่เป็นจริงทุกวันนี้ให้มากที่สุดเท่าที่จะเป็นไปในบริบททางประวัติศาสตร์และแสดงให้เห็นถึงความสนุกของฉันที่ปริศนาแบบเดียวกับที่ฉันเผชิญเมื่อเรียนรู้ยูนิกซ์ คำอธิบายเดียวกันที่ฉันได้รับจากกูรูท้องถิ่นในปี 1983 สิ่งที่เปลี่ยนแปลงมากขึ้นพวกเขายังคงเหมือนเดิมมากขึ้น ....
RBerteig
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.