如何配置 SAMBA 文件服务器使其类似于 Windows?

如何配置 SAMBA 文件服务器使其类似于 Windows?

我在 Active Directory (W2k8R2 DC) 环境中使用 openfiler 设备。我想让我的共享尽可能地看起来像我的用户的 Windows 共享。大多数东西都运行良好,但有些东西却让我抓狂。目前我最大的问题是让 Windows 客户端看到的 ACL 清晰:

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

进一步阅读

https://wiki.samba.org/index.php/Shares_with_Windows_ACLs

答案2

如果你想获得在 Windows 中的感觉,你应该执行以下操作,

如果您使用 linux acl 或 windows acl 进行更改,openfiler 将会覆盖。

要列出完整的完全访问权限,您不应在组访问配置部分中检查主要组选项(针对您尝试列为完全访问权限的组)。相反,您只需单独检查 RW 选项。检查主要组选项中的其他组(在我的情况下,我已检查本地 unix 组)。

每个人、apache、nobody 组将是默认组,因为它们是从 openfiler 加载的。这些文件夹实际上并不是每个人都可以访问。只有允许的组才能访问,除非它不是公共访问文件夹。

如果你在任何发行版中只使用 samba 服务器,你可以使用 linux acl 来实现这一点

相关内容