ถ้าฉันมีรูทโฟลเดอร์ที่มีสิทธิ์ จำกัด บางอย่างสมมติว่า 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