Czy Samba może obsługiwać pełne listy ACL systemu Windows?

12

Skonfigurowałem host Samba 3 z integracją AD i systemem plików obsługującym ACL. Za pomocą klienta Windows mogę ustawić uprawnienia użytkowników i grup.

Do tej pory Samba mapuje tylko uprawnienia rwx POSIX ACL, co uniemożliwia mi korzystanie z uprawnień „Modyfikuj” lub „Pełna kontrola” w systemie Windows. Przeczytałem także kilka rzeczy na temat Xattrs i obsługi ZFS ACL.

Czy ktoś może podpowiedzieć, jak najlepiej wyjść poza ACL POSIX, aby całkowicie przypominać ACE Windows?

fabiański
źródło

Odpowiedzi:

7

Tak zawsze to robiłem, nie do końca pewny, gdzie to czytam.

Aby mieć większość opcji Windows ACL na twoich udziałach Samba podłączonych do AD, musisz włączyć zarówno POSLAC ACL, jak i XATTRS:

/dev/sda2       /samba              ext3    user_xattr,acl  1   2

A w pliku smb.conf musisz włączyć idmapping, nt acls i mapowanie atrybutów w następujący sposób:

idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
idmap backend = idmap_rid:<domain_netbios_name>=16777216-33554431

nt acl support = yes
inherit acls = yes

map acl inherit = yes 
map archive = no
map hidden = no
map read only = no
map system = no
store dos attributes = yes
inherit permissions = yes

Następnie wszystko, co musisz zrobić, to zdefiniować użytkownika administratora udziału, a wraz z tym użytkownikiem edytować ustawienia zabezpieczeń z systemu Windows.

[public]
path = /share/Public
public = yes
writable = yes
printable = no
admin users = "DOMAIN\user"

Jedyne problemy mogą być związane z istniejącymi listami ACL („odrzucasz” uprawnienia roota i przenosisz własność na użytkownika Windows) i niezamapowanymi grupami użytkowników.

Aby ręcznie mapować grupy, musisz zrobić coś takiego:

net groupmap delete ntgroup="Domain Admins"
net groupmap delete ntgroup="Domain Users"
net groupmap delete ntgroup="Domain Guests"

net groupmap add ntgroup="Domain Admins" rid=512 unixgroup=root
net groupmap add ntgroup="Domain Users" rid=513 unixgroup=users 
net groupmap add ntgroup="Domain Guests" rid=514 unixgroup=nobody 

dla wbudowanych grup bezpieczeństwa.

A potem dla wszystkich twoich grup:

groupadd mygroup
net groupmap delete ntgroup="mygroup"   
net groupmap add ntgroup="DOMAIN\mygroup" rid=1000  unixgroup=mygroup   type=d
Bojan Markovic
źródło
2
Chciałbym zmienić admin userssię acl group controli zestaw force group = +DOMAIN\Admin-group, w ten sposób można mieć wiele z uprawnieniami administratora.
Hubert Kario
4

Jeśli nie potrzebujesz ACL-ów POSIX-a dla plików, aby były faktycznie użyteczne (na przykład, gdy użytkownicy nie mogą zalogować się lokalnie do twojego kontrolera Samby), możesz mieć pełne NT-ACL-y przy użyciu vfs:

[światowy]
  przechowuj atrybuty dos = tak
[dzielić]
  obiekty vfs = acl_xattr
Hubert Kario
źródło
1

Będziesz musiał zrobić dwie rzeczy.

Po pierwsze, twój system plików musi obsługiwać listy ACL. Oto przykład linii w pliku fstab, który włącza ACL, twoja oczywiście będzie inna:

/dev/mapper/VolGroup00-SambaVol /samba ext3 defaults,acl 0 0

Po wykonaniu tej czynności (ponownym zamontowaniu lub ponownym uruchomieniu) będziesz chciał włączyć nt acl w pliku smb.conf:

[share1]
   path = /samba/share1
   nt acl support = yes
   writeable = yes

Po wykonaniu obu tych czynności i ponownym uruchomieniu samby powinieneś mieć odpowiednie listy ACL.

Patrick Tescher
źródło