ความสัมพันธ์ใดที่ผูกหน้ากาก ACL และสิทธิ์กลุ่มมาตรฐานไว้ในไฟล์


17

ตอนแรกฉันสร้างไฟล์และตรวจสอบว่าเป็นสิทธิ์มาตรฐานและรายการ ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

จากนั้นฉันจะตั้งค่าหน้ากาก ACL บนไฟล์และตรวจสอบอีกครั้งว่าเป็นสิทธิ์มาตรฐานและรายการ ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

โปรดทราบว่าพร้อมกับสิทธิ์กลุ่มมาตรฐานหน้ากาก ACL ในไฟล์ก็เปลี่ยนไป

  1. การเชื่อมต่อใดที่มีอยู่ระหว่าง ACL mask และสิทธิ์กลุ่มมาตรฐาน?
  2. เหตุผลของการมีเพศสัมพันธ์ ACL หน้ากากและสิทธิ์กลุ่มไฟล์คืออะไร? ตรรกะอะไรที่อยู่ข้างหลังมัน?

การแจกแจงในคำถามคือ Debian Linux 7.6 และ CentOS 7


แก้ไข

เมื่อมาถึงจุดนี้ฉันแค่ต้องการแบ่งปันสิ่งที่ฉันค้นพบขณะที่ทำการค้นคว้าความสัมพันธ์ระหว่างการอนุญาตกลุ่มไฟล์มาตรฐานและมาสก์ ACL นี่คือการสังเกตเชิงประจักษ์ที่ฉันพบ:

  1. หน้ากาก ACL สามารถเปลี่ยนแปลงได้:

    1. โดยการตั้งค่าโดยตรงด้วยsetfacl -m m:<perms>คำสั่ง;
    2. โดยการเปลี่ยนการอนุญาตกลุ่มไฟล์ด้วยchmodคำสั่ง (ถ้ามีหน้ากาก ACL อยู่แล้วอาจไม่ปรากฏเพราะเป็นทางเลือกถ้าไม่มีผู้ใช้ที่มีชื่อหรือสิทธิ์การใช้กลุ่ม ACL ในไฟล์);
    3. โดยการเพิ่มชื่อผู้ใช้หรือรายการ ACL กลุ่ม (มาสก์จะถูกคำนวณใหม่โดยอัตโนมัติ)
  2. มาสก์จะบังคับใช้สิทธิ์การเข้าถึงสูงสุด (หากมีรายการ ACL ที่มีการอนุญาตที่เกินกว่าการอนุญาตให้ใช้หน้ากาก ACL) เฉพาะเมื่อมีการตั้งค่ามาสก์โดยตรงโดย setfacl หรือโดยการแก้ไขการอนุญาตกลุ่มไฟล์ด้วย chmod (ไม่ใช่การคำนวณอัตโนมัติ) การเปลี่ยนแปลงใด ๆ ในรายการ ACL จะทริกเกอร์การคำนวณใหม่โดยอัตโนมัติของ ACL mask และปิดโหมด "บังคับใช้" อย่างมีประสิทธิภาพ

  3. มีผลข้างเคียงสองสามอย่างโดยนัยที่มีผลต่อสิทธิ์กลุ่มไฟล์มาตรฐานเมื่อใช้ ACLs:

    1. ชื่อผู้ใช้หรือรายการ ACL กลุ่มที่ใช้กับไฟล์สามารถเปลี่ยนรูปแบบ ACL (เพิ่มสิทธิ์มัน) และด้วยเหตุนี้การอนุญาตกลุ่มไฟล์ที่มีประสิทธิภาพ ตัวอย่างเช่นหากคุณในฐานะเจ้าของไฟล์มีสิทธิ์ "rw-r - r-- jim students" ตั้งอยู่บนนั้นและคุณให้สิทธิ์ rw แก่ผู้ใช้ "แจ็ค" ด้วยคุณจะต้องให้สิทธิ์ rw แก่ผู้อื่นโดยปริยาย จากกลุ่ม "นักเรียน"
    2. รูปแบบที่เข้มงวด (สิทธิ์น้อยกว่า) ACL mask สามารถลบสิทธิ์กลุ่มไฟล์มาตรฐานที่เกี่ยวข้องได้อย่างถาวร เช่นถ้าคุณมีไฟล์ที่มีสิทธิ์กลุ่มไฟล์มาตรฐาน rw และคุณใช้หน้ากาก ACL แบบอ่านอย่างเดียวกับไฟล์การอนุญาตกลุ่มจะลดลงเป็นแบบอ่านอย่างเดียว จากนั้นหากคุณลบรายการ ACL ที่ขยายทั้งหมด (พร้อมsetfacl -bคำสั่ง) สิทธิ์ของกลุ่มจะยังคงเป็นแบบอ่านอย่างเดียว สิ่งนี้ใช้ได้เฉพาะกับรูปแบบที่เข้มงวดของ ACL, รูปแบบที่อ่อนนุ่มของ ACL (การอนุญาตเพิ่มเติม) จะไม่เปลี่ยนแปลงการอนุญาตกลุ่มไฟล์ดั้งเดิมอย่างถาวรหลังจากลบออก

ฉันคิดว่าคุณสามารถใช้หน้าต่อไปนี้สำหรับการอ้างอิงwww-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/ …
kundy

คำตอบ:


11

มันไม่สมเหตุสมผลหากการอนุญาตไฟล์ unix ไม่เห็นด้วยกับรายการ acl และในทางกลับกัน ดังนั้นหน้าคู่มือ ( acl(5)) บอกสิ่งที่คุณขอ:

CORRESPONDENCE ระหว่างรายการ ACL และใบอนุญาตไฟล์

สิทธิ์ที่กำหนดโดย ACLs เป็นชุดของสิทธิ์ที่ระบุโดยบิตสิทธิ์ของไฟล์

มีการโต้ตอบระหว่างเจ้าของไฟล์กลุ่มและสิทธิ์อื่น ๆ และรายการ ACL ที่เฉพาะเจาะจง: สิทธิ์ของเจ้าของสอดคล้องกับสิทธิ์ของรายการ ACL_USER_OBJ ถ้า ACL มีรายการ ACL_MASK สิทธิ์กลุ่มจะสอดคล้องกับสิทธิ์ของรายการ ACL_MASK มิฉะนั้นหาก ACL ไม่มีรายการ ACL_MASK สิทธิ์กลุ่มจะสอดคล้องกับสิทธิ์ของรายการ ACL_GROUP_OBJ สิทธิ์อื่น ๆ สอดคล้องกับสิทธิ์ของรายการ ACL_OTHER_OBJ

เจ้าของไฟล์กลุ่มและสิทธิ์อื่น ๆ ตรงกับสิทธิ์ของรายการ ACL ที่เกี่ยวข้องเสมอ การแก้ไขบิตสิทธิการใช้งานไฟล์จะส่งผลให้มีการแก้ไขรายการ ACL ที่เกี่ยวข้องและการแก้ไขรายการ ACL เหล่านี้จะส่งผลให้มีการแก้ไขบิตสิทธิ์การใช้งานไฟล์

ภาคผนวกในการตอบสนองต่อการอภิปราย:

เหตุผลของการมีเพศสัมพันธ์ ACL หน้ากากและสิทธิ์กลุ่มไฟล์คืออะไร? ตรรกะอะไรที่อยู่ข้างหลังมัน?

คำอธิบายที่ดีคือที่นี่ ในสาระสำคัญหน้ากากเป็น

[... ] ขอบบนของสิทธิ์ที่รายการใด ๆ ในกลุ่มชั้นจะให้

คุณสมบัติขอบเขตบนนี้ช่วยให้มั่นใจได้ว่าแอปพลิเคชัน POSIX.1 ที่ไม่รู้จัก ACLs จะไม่เริ่มต้นทันทีโดยไม่คาดคิดและให้สิทธิ์เพิ่มเติมเมื่อ ACL ได้รับการสนับสนุน

ใน ACL ขั้นต่ำสิทธิ์คลาสกลุ่มจะเหมือนกับสิทธิ์กลุ่มที่เป็นเจ้าของ ใน ACL เพิ่มเติมคลาสกลุ่มอาจมีรายการสำหรับผู้ใช้หรือกลุ่มเพิ่มเติม ซึ่งส่งผลให้เกิดปัญหา: รายการเพิ่มเติมเหล่านี้บางอย่างอาจมีสิทธิ์ที่ไม่ได้อยู่ในรายการกลุ่มที่เป็นเจ้าของดังนั้นสิทธิ์ในการเป็นเจ้าของกลุ่มรายการอาจแตกต่างจากสิทธิ์ระดับกลุ่ม

ปัญหานี้แก้ไขได้ด้วยข้อดีของการปิดบัง ด้วย ACL ที่น้อยที่สุดสิทธิ์ระดับกลุ่มจะจับคู่กับสิทธิ์ในการเข้าเป็นเจ้าของกลุ่ม ด้วย ACL ที่ขยายเพิ่มสิทธิ์ระดับกลุ่มจะจับคู่กับสิทธิ์ในการเข้ารูปแบบรายการในขณะที่รายการกลุ่มที่เป็นเจ้าของยังคงกำหนดสิทธิ์ของกลุ่ม การแมปของการอนุญาตระดับกลุ่มจะไม่คงที่อีกต่อไป


สิ่งที่คุณกำลังจะบอกว่านำไปใช้กับการส่งออก getfacl ต่อไปนี้: ผู้ใช้ :: กลุ่ม rw- :: r-- อื่น ๆ 3 บรรทัดเหล่านั้นจะเปลี่ยนแปลงหากคุณใช้chmodคำสั่งเพื่อแก้ไขการอนุญาตมาตรฐานและในทางกลับกันเมื่อคุณดำเนินการพูดgetfacl -m u:someuser:rwxการอนุญาตไฟล์มาตรฐานสำหรับเจ้าของไฟล์จะเปลี่ยนไปและการเปลี่ยนแปลงจะมีผลในls -lเอาต์พุต ทั้งหมดนี้เป็นเรื่องจริง แต่ฉันไม่เห็นว่าจะตอบคำถามของฉันได้อย่างไร
golem

ดูการแก้ไขของฉันสำหรับเรื่องเต็ม
โต้

1
คำตอบที่แก้ไขของคุณบอกว่ามีการเชื่อมต่อระหว่างสิทธิ์กลุ่มไฟล์และมาสก์ ACL โดยการออกแบบ คำถามที่ว่าอะไรคือสาเหตุของการมีเพศสัมพันธ์ ACL mask และการอนุญาตกลุ่มไฟล์ยังคงเปิดอยู่ ตรรกะอะไรที่วางอยู่ข้างหลังมันไม่ชัดเจนสำหรับฉัน
golem

1
อาจมีความรู้สึก มันขึ้นอยู่กับคำจำกัดความและการใช้งาน ตามคำจำกัดความของไฟล์ลินุกซ์ ACL ซึ่งถูกนำไปใช้งานในตอนนี้เป็นชุดของการอนุญาตไฟล์มาตรฐานซึ่งรวมไว้ด้วย ดังนั้นพวกเขาจึงไม่สามารถ "แย้ง" นี่คือกรณีการใช้งาน หากฉันกำหนดสิทธิ์ rwx ให้กับ "testuser" สำหรับไฟล์ที่มี-rw-r--r-- 1 user userสิทธิ์เริ่มต้นผู้ใช้ที่มีชื่อ ACL จะได้รับการยอมรับและมาสก์ ACL (พร้อมกับสิทธิ์กลุ่มไฟล์) จะถูกเปลี่ยนเป็น rwx เช่นกัน --- [ดูความคิดเห็นต่อไปว่าเป็นความต่อเนื่อง]
golem

1
ตอนนี้สิทธิ์ rwx ของ "testuser" ขัดแย้งกับการ-rw-rwxr-- 1 user userอนุญาตใหม่ของไฟล์หรือไม่ คุณจะตัดสินความขัดแย้งได้อย่างไร? โดยเปรียบเทียบสิทธิ์ ACL ของ testus กับสิทธิ์กลุ่มไฟล์มาตรฐาน? ตรรกะอะไรที่ทำให้คุณเปรียบเทียบสิทธิ์กลุ่มกับสิทธิ์ผู้ใช้ พวกมันไม่ใช่เอนทิตี้ที่แตกต่างกันเหรอ? มันใช้ง่ายหรือไม่? มันอาจจะชัดเจนสำหรับคุณ แต่ฉันยังคงดิ้นรนที่จะเข้าใจมัน
golem

3

ในที่สุดฉันก็เข้าใจว่าเกิดอะไรขึ้นเมื่อฉันเห็นลิงค์นี้จัดการ ACL

โดยเฉพาะมาสก์นั้นจะเข้าแทนที่และฟังก์ชันเพื่อแทนที่ NAMED USER และการอนุญาตกลุ่มทั้งหมด หมายความว่าถ้าคุณ:

  1. ปรับหน้ากากคุณเปลี่ยนสิทธิ์กลุ่มสูงสุด
  2. ถ้าคุณเปลี่ยนสิทธิ์กลุ่มใด ๆ ด้วยรูปแบบที่มีอยู่รูปแบบจะใช้สิทธิ์กลุ่มสูงสุดของสิทธิ์กลุ่มทั้งหมด
  3. สิทธิ์ในการอ่านเขียนและดำเนินการของกลุ่มจะถูกกำหนดตามรูปแบบหากมี

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่านี่จะช่วยได้


มีคำอธิบายที่ดีมากของมาสก์ในหน้าเว็บที่คุณอ้างถึง (อ้างอิงจากส่วน27.3.3. ไดเรกทอรีที่มี Access ACL ): mask กำหนดสิทธิ์การเข้าถึงที่มีประสิทธิภาพสูงสุดสำหรับรายการทั้งหมดในคลาสกลุ่ม ซึ่งรวมถึงผู้ใช้ที่มีชื่อกลุ่มที่มีชื่อและกลุ่มที่เป็นเจ้าของ .
patryk.beza

-1

ตรรกะอะไรที่อยู่ข้างหลังมัน?

ตรรกะเสียอย่างสมบูรณ์และทำให้ POSIX ACL เป็นเรื่องไร้สาระและไร้ประโยชน์

หากพวกเขากำลังเล็งที่จะรักษาความเข้ากันได้กับแอปที่ไม่ได้มีความคิดของ ACL ของยกเว้นมาตรฐานดั้งเดิมยูนิกซ์' อูโก "รุ่นที่พวกเขาจริงล้มเหลวในการเริ่มต้นเพราะตอนนี้ทุก app ที่สิทธิ์ล้างกลุ่มอย่างมีประสิทธิภาพถอนการเข้าถึงที่เพิ่มขึ้นโดย ACL ของ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.