我在 Active Directory (W2k8R2 DC) 环境中使用 openfiler 设备。我想让我的共享尽可能地看起来像我的用户的 Windows 共享。大多数东西都运行良好,但有些东西却让我抓狂。目前我最大的问题是让 Windows 客户端看到的 ACL 清晰:
Windows ACL 编辑器
如您所见,有以下条目:每个人,没有人,創作者 所有者和創作者群。我知道所有这些条目都是从我的 POSIX ACL 映射而来的,例如所有者:组:其他。对于大多数 Windows 用户来说,这很令人困惑,尤其是每个人有些人会感到害怕,因为他们认为每个人都有访问权限。我该如何摆脱这些条目,只保留:
- G-PM-PMFS01-ADM => 完全访问权限
- L-PM-PMFS01-DEPOT-C => 更改/修改
- L-PM-PMFS01-DEPOT-R => 只读
L-PM-PMFS01-DEPOT-R目前是唯一完全正确的群体吗?型号: PM-PMFS01-ADM虽然被列为特殊组,但它具有完全访问权限,因为它是 POSIX 中的“主要组”。L-PM-PMFS01-DEPOT-C被列为具有完全访问权限,因为它在 POSIX 上具有 rwx 权限。我尝试进行更改,acl map full control
但将其设置为 后,结果并无不同false
。
所以我的问题是,我应该在 smb.conf 中设置什么才能使 Samba 文件服务器看起来(和感觉)几乎 100% 像 Windows?
我知道这在 EMC 或 NetApp 的商业产品上是可以实现的,所以我认为应该有办法。
smb.conf 的当前共享部分
[depot]
comment = depot
path = /mnt/vg1/v001/depot
read only = no
writeable = yes
oplocks = yes
level2 oplocks = yes
force security mode = 0
dos filemode = yes
dos filetime resolution = yes
dos filetimes = yes
fake directory create times = yes
browseable = yes
csc policy = manual
veto oplock files = /*.mdb/*.MDB/*.dbf/*.DBF/
veto files = /*:Zone.Identifier:*/
create mode = 0770
directory mode = 2770
printable = no
guest ok = no
hosts allow = 172.16.10.0/24 172.16.30.0/24 172.16.10.0/24
hosts readonly allow =
store dos attributes = yes
map acl inherit = yes
inherit acls = yes
inherit owner = yes
inherit permissions = yes
当前 getfacl:
# file: mnt/vg1/v001/depot/
# owner: nobody
# group: g-pm-pmfs01-adm
# flags: -s-
user::rwx
group::rwx
group:l-pm-pmfs01-depot-c:rwx
group:l-pm-pmfs01-depot-r:r-x
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:l-pm-pmfs01-depot-c:rwx
default:group:l-pm-pmfs01-depot-r:r-x
default:mask::rwx
default:other::---
答案1
问题
您正在使用 POSIX ACL 映射来处理 Samba 的 ACL。这是默认行为(并且已经持续了很长时间),但如果您想要类似 Windows 的 ACL 体验,这是做错了由于 POSIX ACL 缺少 NTFS ACL 的许多概念和权利,因此映射将始终保持不完整并且“感觉错误”。
解决方案
您正在寻找的是禁用 acl 属性。这是一种将功能齐全的 NTFS ACL 存储在扩展属性中而不是尝试将它们映射到 POSIX ACL 中的方法。
缺点是相应的 xattr 仅由 Samba 评估,因此互操作性受到影响 - 通过 Samba 设置的 ACL 不再与您的 Linux 主机所看到的内容同步(并且可能通过 NFS 等其他方式公开),反之亦然 - 操作 Linux ACL 不会修改 NTFS ACL。
密码
[global]
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes
进一步阅读
答案2
如果你想获得在 Windows 中的感觉,你应该执行以下操作,
如果您使用 linux acl 或 windows acl 进行更改,openfiler 将会覆盖。
要列出完整的完全访问权限,您不应在组访问配置部分中检查主要组选项(针对您尝试列为完全访问权限的组)。相反,您只需单独检查 RW 选项。检查主要组选项中的其他组(在我的情况下,我已检查本地 unix 组)。
每个人、apache、nobody 组将是默认组,因为它们是从 openfiler 加载的。这些文件夹实际上并不是每个人都可以访问。只有允许的组才能访问,除非它不是公共访问文件夹。
如果你在任何发行版中只使用 samba 服务器,你可以使用 linux acl 来实现这一点