我有一台运行Samba的Ubuntu 10.04.4 LTS服务器,并使用PBISjoin到我们的活动目录域(以前同样是开放的)。Samba被configuration为使用AD用户/组进行authentication,并且这是正常工作的。 此外,标准的Linux权限(用户,组,其他)与世界正确的Samba。 但是,Samba似乎完全忽略了使用扩展ACL设置的任何权限。
我已经尝试了各种smb.confconfiguration,我已经在其他地方推荐过,并没有一个似乎有任何效果。
机器设置:
[共享]
评论=,
nt acl support = yes
pipe理员用户=
强制用户=
强迫组= \域^ ^用户
创build蒙版= 0770
目录掩码= 0770
工作组= DNS代理=否 服务器string= 加载打印机=否 杯选项=原始 来宾帐户= pcguest 日志文件= /var/log/samba/%m.log 最大日志大小= 50 安全= ADS realm = 套接字选项= TCP_NODELAY SO_RCVBUF = 8192 SO_SNDBUF = 8192 interfaces = 172.16.0.20 10.4.1.20 127.0.0.1 只绑定接口=是 idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 映射到guest = Bad User
idmap backend = idmap_rid:= 16777216-33554431 nt acl support = yes inheritanceacls =是 地图acl inherit =是 map archive = no 地图hidden = no 地图只读=否 地图系统=否 存储dos属性=是 inheritance权限=是 模板shell = / bin / false winbind使用默认域= no
我在这里错过了什么,让Samba与扩展的ACL一起工作?
我有一个在桑巴共享文件夹。 共享本身在我们的域中是广泛开放的(“有效用户”设置被设置为AD域的“域用户”组)。在该共享中,我有一个在文件系统级拥有更多限制权限的文件夹由一个AD用户,将该组设置为一个AD组,其中只有几个人,并且权限chmod-ed为770)
问题是,我需要将该文件夹访问到另一个AD组,所以我运行“setfacl -mu :: rwx”来授予它们访问权限。 这在Linux内工作(如果我ssh中的哪一个用户,并导航到文件夹)…但如果我连接到SMB共享与同一用户,并尝试导航到该文件夹,访问被拒绝。
迟到这个问题,我仍然想指出官方的Samba文档来支持ACL 。 这对于Samba 4.0.0以上版本是有效的,在这个问题被问到的时候肯定是不可用的。 但是由于这个问题在search引擎中popup,这个链接可能会有所帮助。
基本步骤是:
1.确保文件系统支持acls(ext4默认情况下不需要额外的挂载选项)
2.确保Samba是通过ACL支持编译的。 (是的,在Ubuntu 14.04 LTS上是默认的):
smbd -b | grep HAVE_LIBACL
3.通过在/etc/samba/smb.conf的[global]部分中设置以下内容来启用ACL:
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
有关详细信息,请访问上面链接的官方文档。
这是因为force user , force group , create mask和directory mask强制使用传统的unix样式权限,这些权限不能与inheritanceACL相结合。 您的默认ACL必须驻留在不在samba共享上的文件夹的文件系统级别上,以便inheritance工作,但请注意,矛盾的权限总是会拒绝访问,例如。 当一个用户拥有用户的权限而不是组时,samba会禁止在使用ACL的时候访问(这在我看来就像一个bug),例如:用户nobody是nogroup的成员,那么ACL需要允许nobody & nogroup写权限,否则写访问是否认。 只有桑巴行为这样!
创build具有inheritance默认权限的文件夹的一种可能方式可能是:
me@myHost:/shares$ getfacl myShare/ # file: myShare/ # owner: JohnDoe # group: domain\040users user::rwx group::rwx #effective:rx group:domain\040users:rwx #effective:rx group:domain\040admins:rwx #effective:rx mask::rwx other::rx default:user::rwx default:group::rwx default:group:domain\040users:rwx default:group:domain\040admins:rwx default:mask::rwx default:other::rx
具有default:*值default:*的部分是inheritance的有趣部分,因为任何新的文件或文件夹将在myShare文件夹内创build时获得这些部分 。 有关设置默认值:文件或文件夹上的值的详细信息,请参阅setfacls手册页。 现在,在默认情况下使用create mask或directory mask的问题:ACL设置是samba会覆盖这些默认值,在大多数情况下,这些掩码语句只有在您需要整个文件夹时才有用,而且它的文件只包含单一的所有者和团体。 ACL很难configuration,但在Windows机器上通常提供更多的灵活性。 为了实现这些default:*:: samba default:*::权限inherit acls需要在[global]部分设置:
[global] ; Important if ACLs (eg: setfacl) contain default entries ; which samba honors only if this is set to 'yes'. inherit acls = yes [...] [myShare] comment = Put your files here path = /shares/myShare writeable = yes
这将允许共享,每个人都可以写入共享…但是( ! )并不意味着它在文件系统级别是允许的,因为myShare文件夹只允许域用户 。 无论如何,对于偏执狂来说,通过只允许特定的群体可以缩小共享权限:
write list = @"domain users"
这涉及到writeable=yes但仅限于在写入列表中定义的组。 确保共享和文件夹的权限没有矛盾,例如:
write list = @"other group"
将允许其他组写入共享,但由于myShare文件夹只允许域用户写它将明显失败。