ถ้าฉันมีรูทโฟลเดอร์ที่มีสิทธิ์ จำกัด บางอย่างสมมติว่า 600 และถ้าโฟลเดอร์ย่อย / ไฟล์มีสิทธิ์ 777 ทุกคนจะสามารถอ่าน / เขียน / เรียกใช้ไฟล์ย่อยแม้ว่าโฟลเดอร์รูทจะมี 600 หรือไม่
ถ้าฉันมีรูทโฟลเดอร์ที่มีสิทธิ์ จำกัด บางอย่างสมมติว่า 600 และถ้าโฟลเดอร์ย่อย / ไฟล์มีสิทธิ์ 777 ทุกคนจะสามารถอ่าน / เขียน / เรียกใช้ไฟล์ย่อยแม้ว่าโฟลเดอร์รูทจะมี 600 หรือไม่
คำตอบ:
กฎที่ถูกต้องคือ: คุณสามารถเข้าไปในไดเรคทอรีหากคุณมีสิทธิ์ดำเนินการ
ดังนั้นตัวอย่างเช่นในการเข้าถึงdir/subdir/fileคุณต้องดำเนินการอนุญาตdirและdir/subdirรวมถึงสิทธิ์fileสำหรับประเภทการเข้าถึงที่คุณต้องการ ในกรณีมุมฉันไม่แน่ใจว่ามันเป็นสากลที่คุณต้องใช้สิทธิ์ในไดเรกทอรีปัจจุบันเพื่อเข้าถึงไฟล์ผ่านทางญาติ (คุณทำบน Linux)
วิธีที่คุณเข้าถึงไฟล์มีความสำคัญ ตัวอย่างเช่นหากคุณมีสิทธิ์ดำเนินการ/foo/barแต่ไม่เปิด/fooแต่ไดเรกทอรีปัจจุบันของคุณคือ/foo/barคุณสามารถเข้าถึงไฟล์/foo/barผ่านเส้นทางสัมพัทธ์ แต่ไม่ผ่านเส้นทางสัมบูรณ์ คุณไม่สามารถเปลี่ยนเป็น/foo/barในสถานการณ์นี้ กระบวนการที่มีสิทธิพิเศษมากขึ้นได้ทำอย่างน่าcd /foo/barจะเป็นไปได้ก่อนที่จะไม่มีผู้ด้อยโอกาส หากไฟล์มีฮาร์ดลิงก์หลายรายการพา ธ ที่คุณใช้เพื่อเข้าถึงไฟล์จะเป็นตัวกำหนดข้อ จำกัด การเข้าถึงของคุณ
ลิงก์สัญลักษณ์ไม่มีอะไรเปลี่ยนแปลง เคอร์เนลใช้สิทธิ์การเข้าถึงของกระบวนการที่เรียกเพื่อเข้าไปสำรวจ ตัวอย่างเช่นหากsymการเชื่อมโยงสัญลักษณ์ไปยังไดเรกทอรีdirคุณจะต้องดำเนินการในวันที่ได้รับอนุญาตในการเข้าถึงdir sym/fooการอนุญาตบน symlink นั้นอาจขึ้นอยู่กับระบบปฏิบัติการและระบบไฟล์ (บางคนก็เคารพบางคนก็ไม่สนใจมัน)
การลบการเรียกใช้งานการอนุญาตจากไดเรกทอรีรูทจะ จำกัด ผู้ใช้ให้เป็นส่วนหนึ่งของแผนผังไดเร็กทอรีได้อย่างมีประสิทธิภาพ ต้องใช้รายการควบคุมการเข้าถึงเพื่อใช้งาน ตัวอย่างเช่นหาก/และ/homeมีข้อ จำกัด ในการjoe( setfacl -m user:joe:0 / /home) และ/home/joeเป็นjoeโฮมไดเรกทอรีของคุณjoeจะไม่สามารถเข้าถึงส่วนที่เหลือของระบบ (รวมถึงการเรียกใช้เชลล์สคริปต์ด้วย/bin/shหรือไบนารีที่เชื่อมโยงแบบไดนามิกที่จำเป็นต้องเข้าถึง/libดังนั้นคุณจึง ' จำเป็นต้องเจาะลึกเพื่อการใช้งานจริงเช่นsetfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib)
อ่านสิทธิ์ในไดเรกทอรีให้สิทธิในการระบุรายการ การให้สิทธิ์ดำเนินการโดยไม่ให้สิทธิ์การอ่านมีประโยชน์บางครั้ง: ชื่อของรายการใช้เป็นรหัสผ่านเพื่อเข้าถึง ฉันไม่สามารถคิดถึงการใช้งานใด ๆ ในการให้สิทธิ์ในการอ่านหรือเขียนไปยังไดเรกทอรีโดยไม่ได้รับอนุญาต
ไม่ได้สิทธิ์ในการรูทโฟลเดอร์จะ จำกัด สิทธิ์ของไฟล์รอง คุณสามารถลอง
$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile
ฉันได้รับสิ่งนี้:
$ cat: ./rootfolder/childfile: permission denied
คุณสามารถทำให้ไดเรกทอรีลูกเขียนได้แม้ไดเรกทอรีแม่ไม่ได้ ฉันทำสิ่งนี้เพื่อกลุ่ม
ตัวอย่างเช่น: ไดเรกทอรีหลักเป็นเจ้าของโดย coder กลุ่ม
drwxr-sr-x
ไดเรกทอรีลูก
drwxrwsr-x
คุณ (สมาชิกใด ๆ ของกลุ่ม coder) ยังคงสามารถเขียนไปยังไดเรกทอรีลูก แต่ไม่ไปยังไดเรกทอรีหลัก
คุณสามารถสร้างฮาร์ดลิงก์เพื่อเข้าถึงไฟล์แม้ว่าคุณจะไม่มีสิทธิ์ดำเนินการในไดเรกทอรีหลัก แต่ catch ที่นี่คือคุณต้องสร้างการเชื่อมโยงอย่างหนักก่อนที่คุณจะสูญเสียสิทธิในการดำเนินการในไดเรกทอรีแม่
$ ln foo/bar/test_privs privs_test_checking