พยายามเข้าใจว่าแซมบ้าจัดการกับการอนุญาต UNIX อย่างไร


1

ฉันกำลังสร้างเซิร์ฟเวอร์สำรองโดยใช้ Linux, ZFS และ Samba ลูกค้าทั้งหมดที่ไม่ใช่ฉันจะใช้ Windows 10 ดังนั้นฉันจึงให้ความสำคัญกับการสนับสนุน Windows 10 อย่างถูกต้อง แต่นั่นไม่ได้หมายความว่าสิทธิ์ในฝั่ง Linux ควรได้รับอนุญาตให้ไม่ปลอดภัย (เช่นโลกที่สามารถอ่านและเขียนได้)

หลังจากลบ POSIX ACLs ในไฟล์ทั้งหมดโดยไม่ได้ตั้งใจคิดว่าเป็นสิ่งที่ตั้งค่าไว้เพื่ออนุญาตการเข้าถึงกลุ่มการอนุญาตทั้งหมดของไฟล์ในฝั่ง Windows เสีย

สิ่งนี้ได้รับการแก้ไขโดยการดูตัวเลือกในคู่มือและทำซ้ำการตั้งค่าที่ฉันคิดว่าตัวเลือกใดที่จะตั้งค่าเพื่อรับพฤติกรรมที่ฉันต้องการคือการตั้งค่าการอนุญาตด้าน Windows เพียงอย่างเดียวในขณะที่รักษาสิทธิ์ UNIX ไว้อย่างปลอดภัย ยังคง 2 สิ่งที่ฉันไม่เข้าใจเกี่ยวกับวิธีที่แซมบ้าจัดการกับสิทธิ์ UNIX

การตั้งค่าacl_xattr:ignore system acls = noทำให้สิทธิ์ UNIX เป็นรายการใน Windows ACLs (รายการ CREATOR, GROUP และ EVERYONE) ซึ่งฉันไม่ต้องการอย่างไรก็ตามเมื่อตั้งค่าyesเป็นเจ้าของกลุ่มและสิทธิ์ยังคงดูเหมือนว่าจะส่งผลกระทบต่อสิทธิ์ในฝั่ง Windows พวกเขา ยังคงถูกบังคับใช้โดย Samba หากไดเรกทอรีมีroot:backup 0660สิทธิ์แล้วสุ่มDomain Userจะไม่สามารถเข้าถึงไดเรกทอรีที่แม้ว่า ACL ของ Windows Domain Usersที่มีรายการสำหรับ เปลี่ยนกลุ่มจากbackupเป็นusersตำแหน่งที่usersแม็พกับกลุ่ม NT Domain Usersจากนั้นจะทำงาน เห็นได้ชัดว่าสิทธิ์ UNIX ยังคงมีการบังคับใช้

มีการตั้งค่าเพื่อให้ Windows ACLs ยับยั้งส่วนที่เหลือเช่นถ้า Windows ACL อนุญาตDomain Usersแล้วพวกเขาจะได้รับอนุญาตโดยไม่คำนึงถึงสิทธิ์ UNIX ที่อาจกล่าวได้อย่างไร หรือฉันจะปิดการใช้งาน Samba โดยใช้สิทธิ์ UNIX ได้หรือไม่

อีกคำถามคือ Samba เก็บสิทธิ์ UNIX ไว้อย่างไร inherit owner = yesในการกำหนดค่าใหม่ที่ฉันมี ดูเหมือนว่าจะทำงานได้ตามที่คาดหวังทั้ง Windows เป็น UNIX ยกเว้นเมื่อฉันพยายามเปลี่ยนกลุ่ม UNIX เป็นอย่างอื่น ในขั้นต้นบิต setgid ถูกตั้งค่าไว้ที่การแบ่งใช้johnซึ่งเป็นกลุ่มของพวกเขาการคิดinherit ownerจะมีผลกับเจ้าของเท่านั้นไม่ใช่กลุ่ม แต่เมื่อถอดบิต setgid จากหุ้นและการเปลี่ยนแปลงกลุ่มที่จะusersซ้ำกับinherit owner = yesไฟล์ใหม่และไดเรกทอรีที่ทำจากไคลเอนต์ Windows 10 johnก็ยังคงสร้างขึ้นด้วยกลุ่ม ไม่มีที่ใดในแผนผังไดเรกทอรีที่มีกลุ่มที่johnเหลืออยู่ฉันลองรีสตาร์ทไคลเอนต์ Windows ของฉันและเซิร์ฟเวอร์ Samba ในกรณีนี้ แต่นั่นไม่ได้เปลี่ยนแปลงอะไรเลย

แซมบ้าเก็บสิทธิ์ UNIX ไว้ที่อื่นดังนั้นการเปลี่ยนกลุ่ม UNIX ของฉันโดยตรงจากระบบไฟล์จะไม่ส่งผลกระทบต่อกลุ่มที่ติดตามโดย Samba หรือไม่ หรือสาเหตุใดที่แซมบ้ายังคงใช้กลุ่มเก่านี้สำหรับไฟล์และไดเรกทอรีใหม่

ด้านล่างคุณจะพบตัวเลือกที่อาจเกี่ยวข้องกับการกำหนดค่า Samba เวอร์ชั่น 4.7.6 หากต้องการข้อมูลเพิ่มเติมแจ้งให้เราทราบ

[global]
access based share enum = yes
acl group control = no
acl map full control = yes
acl_xattr:ignore system acls = yes
acl_xattr:default acl style = windows
create mask = 0775
directory mask = 0775
dos filemode = yes
dos filetime resolution = no
dos filetimes = yes
ea support = no
force create mode = 0600
force directory mode = 0600
force unknown acl user = no
guest account = nobody
guest ok = no
guest only = no
inherit acls = no
inherit owner = unix only
inherit permissions = no
invalid users = root
map acl inherit = yes
map archive = no
map hidden = no
map readonly = no
map system = no
map to guest = never
nt acl support = yes
obey pam restrictions = no
read only = yes
restrict anonymous = 2
security = user
server role = active directory domain controller
store dos attributes = yes
unix extensions = yes
vfs objects = dfs_samba4 acl_xattr shadow_copy2

[backups]
create mask = 0660
directory mask = 0770
ea support = yes
path = /mnt/pool/backups
read only = no

คำตอบ:


0

แซมบ้าเก็บสิทธิ์ UNIX ไว้ที่อื่นดังนั้นการเปลี่ยนกลุ่ม UNIX ของฉันโดยตรงจากระบบไฟล์จะไม่ส่งผลกระทบต่อกลุ่มที่ติดตามโดย Samba หรือไม่ หรือสาเหตุใดที่แซมบ้ายังคงใช้กลุ่มเก่านี้สำหรับไฟล์และไดเรกทอรีใหม่

ฉันสามารถค้นหาคำตอบสำหรับคำถามที่สองนี้เท่านั้น ในระหว่างการทดลองของฉันกับinherit ownerฉันจุดหนึ่งที่อยากจะรู้ว่าสิ่งที่มีค่าที่ถูกที่ถูกเก็บไว้เป็นส่วนหนึ่งของ NT ACLs ดังนั้นฉันตรวจสอบไดเรกทอรีที่มีsamba-tool ntacl get /path/to/dirและที่แปลกใจของฉันฉันเห็นเก่า GID group_sidเป็นค่าของ และเนื่องจากฉันไม่ได้มีการอ้างอิงอื่น ๆ กับ GID เก่าที่ใดในระบบไฟล์อีกต่อไปสิ่งนี้น่าจะเป็นสาเหตุที่ทำให้แซมบ้ายังคงอยู่ในกลุ่ม UNIX เก่าโดยเฉพาะอย่างยิ่งตั้งแต่เมื่อใดก็ตามที่ฉันตั้งค่าให้เจ้าของสืบทอดunix onlyหรือnoไม่ กลุ่ม UNIX เก่า เห็นได้ชัดว่าการตั้งค่าinherit ownerเป็นyes(เช่นunix and windows) ทำให้ Samba ตั้งค่ากลุ่ม UNIX เป็นกลุ่มที่เก็บไว้ใน NT ACL

ฉันยังคงรักคำตอบของคำถามแรก แต่ฉันได้พบวิธีแก้ปัญหาโดยการหาวิธีการที่จะmap กลุ่ม NT Domain Usersไปยังกลุ่มยูนิกซ์ของฉันแนะนำและการตั้งค่าสิทธิ์ของคนอื่น ๆ ถึง 0 ผ่าน POSIX setfacl -Rm d:o:---,o:--- /my/shareACLs:

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