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

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

我已经设置了一台集成了 AD 和启用了 ACL 的文件系统的 Samba 3 主机。使用 Windows 客户端,我可以设置用户和组权限。

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

有人可以提示一下超越 POSIX ACL 并完全类似于 Windows ACE 的最佳方法是什么吗?

答案1

我一直都是这么做的,不太清楚我在哪里读过这个。

为了使 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

然后您需要做的就是为共享定义管理员用户,并使用该用户从 Windows 编辑安全设置。

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

唯一的问题可能与现有的 ACL(您“放弃”根并将所有权转移给 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

答案2

如果您不需要文件上的 POSIX ACL 真正可用(例如,当用户无法本地登录到您的 Samba 控制器时),您可以使用 vfs 拥有完整的 NT ACL:

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

答案3

您需要做两件事。

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

/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。

相关内容