หลังจากทำงานกับ Linux มาหลายปีและพบว่าตัวเองมีเวลาว่างฉันก็เลยตัดสินใจทบทวนพื้นฐาน ดังนั้นฉันจึงอ่านเนื้อหาเกี่ยวกับการอนุญาต (โดยไม่ตรวจสอบซอร์สโค้ด) และกรณีพิเศษสำหรับโฟลเดอร์และมาพร้อมกับวิธีใหม่ (สำหรับฉันอย่างน้อย ... ) วิธีคิดเกี่ยวกับการอนุญาตโฟลเดอร์ (สำหรับผู้ใช้เฉพาะ / กลุ่ม / อื่น ๆ ): ฉันนึกภาพโฟลเดอร์เป็นตารางที่มีสองคอลัมน์เช่น:
filename | inode
foo | 111
bar | 222
อ่านได้รับอนุญาตหมายความว่าคุณสามารถอ่าน (และรายการ) คอลัมน์ด้านซ้ายของโต๊ะเขียนได้รับอนุญาตสอดคล้องกับการเพิ่มและลบรายการในตารางและดำเนินการสอดคล้องกับการอนุญาตให้ความสามารถในการแปลจากชื่อไฟล์ inode; เช่นคุณสามารถเข้าถึงเนื้อหาของโฟลเดอร์
ฉันทำการทดลองบางอย่างและผลลัพธ์ทั้งหมดสอดคล้องกับ "มุมมองโลก" ของฉันนี้ แต่ข้อสรุปหนึ่งดูเหมือนจะหลีกเลี่ยงไม่ได้: โฟลเดอร์ที่ได้รับอนุญาตd-w-------
ไม่มีประโยชน์โดยสิ้นเชิง คำอธิบายเพิ่มเติม: คุณไม่สามารถแสดงรายการเนื้อหาของมันคุณไม่สามารถอ่านไฟล์ใด ๆ ที่คุณรู้ว่ามีอยู่ภายใน (เพราะคุณไม่สามารถแปลชื่อเป็น inodes) คุณไม่สามารถลบหรือเปลี่ยนชื่อหรือเพิ่มไฟล์เพราะอีกครั้งที่แปลว่าแปล และคุณไม่สามารถเพิ่มฮาร์ดลิงก์ได้ (เพราะฉันคาดเดาว่าจะหมายถึงการเพิ่มชื่อเช่นเดียวกับหมายเลขไอโหนดซึ่งหมายความว่าคุณจะรู้ทั้งคู่ซึ่งในทางกลับกันการคาดคะเนการละเมิดสิทธิ์ในการดำเนินการอีกครั้ง) . และแน่นอนถ้ามีเป็นไฟล์ในโฟลเดอร์ดังกล่าวหนึ่งแล้วคุณจะไม่สามารถลบโฟลเดอร์ที่ทั้งเพราะคุณไม่สามารถลบเนื้อหา
ดังนั้น ... ฉันอยากถามสองคำถาม:
- การเปรียบเทียบของฉันนี้ถูกต้องหรือเป็นความผิดพลาดครั้งใหญ่?
- โดยไม่คำนึงถึงคำตอบก่อนหน้ามีสถานการณ์ใดบ้างที่มีโฟลเดอร์ที่มีสิทธิ์ตามที่อธิบายไว้เหมาะสมหรือไม่?
mkdir foo ; chmod 200 foo ; touch foo/bar
touch: cannot touch ‘foo/bar’: Permission denied
สิ่งนี้เกิดขึ้นแม้ว่า foo / bar มีอยู่แล้ว ฉันกำลังทดสอบใน bash (Arch Linux)