Назад | Перейти на главную страницу

Может ли Samba поддерживать полные Windows-ACL?

Я установил хост Samba 3 с интеграцией AD и файловой системой с поддержкой ACL. Используя клиент Windows, я могу устанавливать разрешения для пользователей и групп.

До сих пор Samba просто сопоставляется с разрешениями rwx POSIX ACL, что не позволяет мне использовать разрешения «Изменить» или «Полный доступ» в Windows. Я также прочитал кое-что о поддержке xattrs и ZFS ACL.

Может ли кто-нибудь подсказать, как лучше всего выйти за рамки списков ACL POSIX, чтобы полностью походить на ACE Windows?

Я всегда так делал, не совсем уверен, где это читал.

Чтобы большинство параметров Windows ACL на общих ресурсах Samba были подключены к AD, вам необходимо включить и POSIX ACL, и XATTRS:

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

И в вашем smb.conf вам нужно включить idmapping, nt acls и сопоставление атрибутов следующим образом:

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

Затем все, что вам нужно сделать, это определить пользователя-администратора для общего ресурса и с его помощью отредактировать параметры безопасности из Windows.

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

Единственные проблемы могут быть связаны с существующими ACL (вы «отказываетесь» от root и передаете право собственности своему пользователю Windows) и несопоставленными группами пользователей.

Чтобы сопоставить группы вручную, вам нужно сделать что-то вроде этого:

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 

для встроенных групп безопасности.

А затем для всех ваших групп:

groupadd mygroup
net groupmap delete ntgroup="mygroup"   
net groupmap add ntgroup="DOMAIN\mygroup" rid=1000  unixgroup=mygroup   type=d

Если вам не нужны POSIX ACL для файлов, чтобы их можно было использовать (например, когда пользователи не могут войти в ваш контроллер Samba локально), вы можете иметь полные NT ACL с помощью vfs:

[global]
  store dos attributes = yes
[share]
  vfs objects = acl_xattr

Вам нужно будет сделать две вещи.

Во-первых, ваша файловая система должна поддерживать ACL. Вот пример строки в файле fstab, которая включает ACL, ваша, конечно, будет другой:

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

После того, как вы это сделаете (и перемонтируете или перезагрузите), вы захотите включить nt acl в вашем файле smb.conf:

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

После того, как вы сделали и то, и другое и перезапустили самбу, у вас должны быть правильные ACL.