我已经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。