ฉันจะทำให้ Windows แก้ไข CIFS / ZFS ACLs 'ถูกต้อง' ได้อย่างไร


0

ฉันมีระบบ FreeNAS (FreeBSD) ที่มีการแชร์ CIFS (เรียกว่า "library") ซึ่งได้รับการสนับสนุนโดยระบบไฟล์ ZFS การแชร์ถูกตั้งค่าตาม FreeNAS GUI เพื่อใช้ ACL "Windows / Mac" ซึ่งฉันเชื่อว่าหมายถึง NFSv4 ACLs

นี่คือวิธีที่ฉันต้องการ ACL พื้นฐานที่จะเป็น:

nas# getfacl /mnt/big/library/test
# file: /mnt/big/library/test
# owner: DOMAIN\administrator
# group: DOMAIN\domain admins
            owner@:rwxpDdaARWcCo-:fd----:allow
            group@:rwxpDdaARWcCo-:fd----:allow
         everyone@:r-x---a-R-c---:fd----:allow

ซึ่งจาก GUI Windows 7 จะปรากฏเป็น "Full control" สำหรับ "DOMAIN \ administrator" และ "DOMAIN \ Domain Admins" และ "Read & execute" สำหรับ "ทุกคน" ที่สืบทอดมาจากรากของการแชร์ Windows จะจำเจ้าของได้ว่าเป็น "Administrator" อย่างถูกต้อง

ฉันมีสองปัญหาซึ่งฉันเชื่อว่าอาจเกี่ยวข้อง

ประการแรกถ้าฉันแก้ไขหรือสร้าง ACE บนวัตถุที่มีอยู่ (ไฟล์หรือไดเรกทอรี) Windows จะแทนที่owner@ACE ด้วยหนึ่งสำหรับgroup:DOMAIN\administratorและในกรณีของการเพิ่มมันจะสร้างกลุ่ม ACE สำหรับgroup:DOMAIN\joeผู้ใช้ ฉันไม่ได้สนใจอะไรมากความจริงที่ว่าผู้ใช้เป็นกลุ่ม (ตราบใดที่มันใช้งานได้) แต่การแทนที่เจ้าของ ACE เป็นเรื่องที่เจ็บปวดเพราะตอนนี้ถ้าฉันเปลี่ยนเจ้าของวัตถุ ACE จะยังคงมีอยู่ก่อนหน้านี้ เจ้าของ.

ความรำคาญครั้งที่สองคือเมื่อสร้างวัตถุใหม่ ACL จะมีลักษณะดังนี้:

nas2# getfacl /mnt/big/library/test/New\ folder/
# file: /mnt/big/library/test/New folder/
# owner: DOMAIN\joe
# group: DOMAIN\domain users
            owner@:rwxpDdaARWcCo-:fd----:allow
            group@:rwxpDdaARWcCo-:fd----:allow
         everyone@:r-x---a-R-c---:fd----:allow

แม้ว่าดูเหมือนว่าจะได้รับการสืบทอด ACE อย่างถูกต้อง แต่ก็ไม่ได้รักษาเจ้าของหรือกลุ่มของไดเรกทอรีหลัก มีวิธีสร้างด้วยคุณสมบัติของไดเรกทอรีที่มีหรือไม่

ดูmanfset setfaclมันระบุ:

 -d      The operations apply to the default ACL entries instead of access
         ACL entries.  Currently only directories may have default ACL's.
         This option is not applicable to NFSv4 ACLs.

สิ่งใดที่ฉันบอกเป็นนัยว่า NFSv4 ACLs ไม่รองรับ ACE เริ่มต้นซึ่งดูเหมือนจะเป็นสิ่งที่ฉันต้องการเพื่อแก้ไขปัญหาที่สองของฉัน ไม่มีใครรู้ว่าถูกต้องหรือไม่


ขอโทษสำหรับชื่อของคำถามฉันไม่สามารถคิดถึงวิธีใช้ถ้อยคำรวบรัดในเรื่องนี้ได้
Styne666

คำตอบ:


2

ดังนั้นฉันจึงไม่ได้เกี่ยวข้องอะไรกับเรื่องนี้มากนักและฉันอาจผิดอย่างยิ่ง แต่นี่เป็นเพียงส่วนเล็กน้อยที่อาจอธิบายได้:

  • NFSv4 ACLs คล้ายกัน แต่ไม่เหมือนกับ ACL ของ Windows / CIFS / NTFS

    ตัวอย่างเช่นรูปแบบ Windows ACL ไม่ได้แยกความแตกต่างระหว่าง SID 'ผู้ใช้' หรือ 'กลุ่ม' หรือ 'พิเศษ' เลย เนื่องจาก NAS ไม่ทราบว่าบัญชี Windows ของคุณมีบัญชีอะไรจึงไม่สามารถระบุ SID ที่เป็นผู้ใช้และกลุ่มได้ซึ่งต้องเดา

  • อย่างไรก็ตามในขณะที่ NFSv4 ACL ไม่รองรับ POSIX แบบ 'ACEs เริ่มต้น' แต่จะรองรับACE แบบWindows / CIFS แบบ 'สืบทอดได้' นั่นคือแต่ละรายการสามารถสืบทอดได้หรือไม่

    ใน FreeBSD getfaclคุณสามารถดูfและตั้งdค่าสถานะซึ่งสอดคล้องกับ "สืบทอดโดยไฟล์" และ "สืบทอดได้โดยไดเรกทอรี"

    นอกจากนี้ยังมีการตั้งค่าสถานะ "รับมรดกเท่านั้น" iซึ่งจะเทียบเท่ากับ ACEs 'เริ่มต้น' ที่แน่นอนใน POSIX ACL - นั่นคือ ACE สืบทอดเท่านั้น แต่ไม่ได้ใช้สำหรับไดเรกทอรีเอง

  • เมื่อสร้างไฟล์มันจะเป็นของผู้ใช้ที่สร้างมันเสมอ มันไม่สามารถสืบทอดได้

    หากเซิร์ฟเวอร์ CIFS กำลังเรียกใช้ Windows Server มันจะมีตัวเลือกในการสร้าง "ผู้ดูแลระบบ" ในกลุ่มเป็นเจ้าของไฟล์เริ่มต้น (อีกครั้งโปรดทราบว่าจะให้เจ้าของเป็นผู้ใช้หรือกลุ่มได้อย่างไรและขาดความเป็นเจ้าของกลุ่ม ')


1
"NAS ไม่ทราบว่าบัญชี Windows ของคุณมีระบบใด" - จริงๆแล้วมันทำ NAS คือ Samba AD DC สำหรับ "DOMAIN" ซึ่งเครื่อง Windows 7 นั้นได้เข้าร่วมด้วย ดังนั้นในทางทฤษฎีมันสามารถเข้าถึงได้อย่างเต็มรูปแบบหากต้องการเพื่อกำหนด SID ที่เป็นผู้ใช้และกลุ่มใด ฉันกำลังดูปัญหาเดียวกันอีกครั้งในสภาพแวดล้อมที่แตกต่างกันเล็กน้อยดังนั้นหวังว่าฉันจะสามารถก้าวหน้าได้ดีขึ้นกับสิ่งที่ฉันได้เรียนรู้ตั้งแต่ปี 2014!
Styne666
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.