Samba可以支持完整的Windows ACL吗?

我已经build立了一个具有AD集成function的Samba 3主机和一个支持ACL的文件系统。 使用Windows客户端,我可以设置用户和组的权限。

到目前为止,Samba只是映射到POSIX ACL的rwx权限,这阻止了我在Windows上使用“修改”或“完全控制”权限。 我还读了一些关于xattrs和ZFS ACL支持的内容。

有人可以提供什么是最好的方式超越POSIX ACLs完全类似于Windows ACE?

这是我一直这样做的,不太清楚我在哪里阅读。

为了让samba共享上的大多数windows ACL选项连接到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 

然后,您只需为共享定义pipe理员用户,然后使用该用户从Windows编辑安全设置即可。

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

唯一的问题可能与现有的ACL有关(你“拒绝”根和传输所有者ho您的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(例如,当用户无法在本地login您的Samba控制器时),则可以使用vfs拥有完整的NT ACL:

 [全球]
  存储dos属性=是
 [分享]
   vfs对象= acl_xattr

你需要做两件事情。

首先,你的文件系统必须支持ACL。 下面是一个启用ACL的fstab文件中的一行示例,您当然会有所不同:

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

完成之后(重新安装或重新启动),您需要在smb.conf文件中启用nt acl:

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

一旦你完成了并且重新启动了samba,你应该有适当的ACL。