Я установил хост 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.