Linux ไม่รองรับการสืบทอดสิทธิ์ ดังนั้นคุณจึงไม่สามารถทำในสิ่งที่คุณถามในหัวข้อคำถามได้
ดีที่สุดที่คุณสามารถทำได้คือการตั้งค่า POSIX ACL เริ่มต้น ซึ่งจะใช้กับไฟล์และไดเร็กทอรีที่สร้างขึ้นใหม่ทั้งหมด นี่ไม่ใช่การสืบทอด เป็นเพียงค่าเริ่มต้น:
setfacl -m ค่าเริ่มต้น:ผู้ใช้:<ชื่อผู้ใช้>:rwx <dir>
setfacl -m เริ่มต้น:group:<groupname>:rwx <dir>
หลังจากนี้ ถ้าใครสร้างไฟล์หรือไดเรกทอรีใน (ถ้าพวกเขาได้รับอนุญาตให้สร้างวัตถุที่นั่น แน่นอน) วัตถุนั้นจะได้รับ ACL เพิ่มเติม ผู้ใช้:<ชื่อผู้ใช้>:rwx
และ กลุ่ม:<ชื่อกลุ่ม>:rwx
. คุณสามารถตั้งค่าการอนุญาตเริ่มต้นสำหรับเจ้าของและเจ้าของกลุ่มได้โดยการตั้งค่า <username>
และ <groupname>
ว่างเปล่า.
"ค่าเริ่มต้น" นี้สามารถตั้งค่าได้เฉพาะในไดเร็กทอรีเท่านั้น เนื่องจากไม่มีประโยชน์ที่จะใช้สิ่งนี้กับไฟล์ สิทธิ์ที่ตั้งค่าด้วยวิธีนี้จะถูกปิดบังด้วย umasks ดังนั้นหากบางบิตถูกทิ้งใน umask บิตนี้จะถูกทิ้งจากการอนุญาต ตัวอย่างเช่น เมื่อคุณสร้างไฟล์ หากคุณไม่ให้บิตที่เรียกใช้งานได้ มันจะไม่สามารถเรียกใช้งานได้ (ตามที่คาดไว้) ไดเร็กทอรีย่อยที่สร้างขึ้นจะมีชุด ACL "เริ่มต้น" เหมือนกัน ดังนั้นลำดับถัดมาจะมีชุด ACL เหล่านี้ด้วย คุณต้องลบหรือเปลี่ยน ACL ในไดเร็กทอรีย่อยหลังจากสร้างเพื่อหยุดการแพร่กระจายนี้
ตรวจสอบบช.ด้วย getfacl <dir>
. แน่นอน อาจมีค่าเริ่มต้นหลายอย่าง (และดูเหมือนว่าคุณต้องลงเอยด้วยกฎหลายข้อ) อย่างน้อยข้อกำหนดที่ฉันพบกำหนดให้มี ACL กลุ่มเริ่มต้นอย่างน้อยสองรายการเสมอ)
คุณ ไม่ได้ ตั้งค่า "เจ้าของไฟล์เริ่มต้น" ด้วยวิธีนี้ เจ้าของจะถูกตั้งค่าให้สร้าง uid ของกระบวนการที่มีประสิทธิภาพเสมอ โดยค่าเริ่มต้น เจ้าของกลุ่มจะถูกตั้งค่าให้ประมวลผล gid แต่คุณสามารถเปลี่ยนได้โดยใช้ ตั้งค่า บิตในไดเร็กทอรีหลัก:
chmod g+s <dir>
หลังจากนั้น ออบเจกต์ใดๆ ที่สร้างขึ้นในไดเร็กทอรีนั้นจะคัดลอกเจ้าของกลุ่มตามค่าเริ่มต้น แม้ว่าการสร้างผู้ใช้จะไม่ได้อยู่ในกลุ่มนั้นก็ตาม บิต setgit นี้เผยแพร่ไปยังไดเร็กทอรีย่อย
เจ้าของสามารถตั้งค่าเจ้าของกลุ่มเป็นกลุ่มใด ๆ ที่พวกเขาเป็นสมาชิก หากพวกเขาไม่ได้อยู่ในกลุ่มที่ได้รับจาก setgid พวกเขาสามารถเปลี่ยนเจ้าของกลุ่มไฟล์เป็นกลุ่มใดก็ได้ที่พวกเขาเป็นสมาชิก แต่หลังจากนั้นพวกเขาจะไม่สามารถเปลี่ยนกลับเป็นค่า setgid ได้
ฉันต้องการทราบอีกครั้งอย่างชัดเจนนี่คือ ไม่ การสืบทอด นี่คือการตั้งค่าเริ่มต้นที่ไม่เหมือนกันทุกประการ หากคุณเปลี่ยนแปลงบางสิ่งบนออบเจกต์หลักหลังจากนั้น ออบเจ็กต์ที่สร้างไว้แล้วจะยังคงสิทธิ์ใน Linux เสมอ
ตัวอย่างเช่น ใน Windows เมื่อคุณตั้งค่า ACL ของอ็อบเจ็กต์ย่อยเป็น "สืบทอด" การเปลี่ยน ACL พาเรนต์จะส่งผลต่อลูกหลาน ซึ่งเป็นการสืบทอดที่เหมาะสม