1.9. 设置使用 Windows ACL 的共享

Samba 支持在共享和文件系统对象中设置 Windows ACL。这可让您:

  • 使用精细 Windows ACL
  • 使用 Windows 管理共享权限和文件系统 ACL

或者,您可以将共享配置为使用 POSIX ACL。

详情请参阅 设置使用 POSIX ACL 的 Samba 文件共享

这个部分的内容基于 Samba Wiki 中发布的 Setting up a Share Using Windows ACLs 文档。许可证: CC BY 4.0。作者和贡献者:请参阅 Wiki 页面上的历史选项卡。

1.9.1. 授予 SeDiskOperatorPrivilege 特权

只有被赋予了 SeDiskOperatorPrivilege 特权的用户和组才能对使用了 Windows ACL 的共享配置权限。

流程

  1. 例如,要对 DOMAIN\Domain Admins 组赋予 SeDiskOperatorPrivilege 特权:

    # net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.
    注意

    在域环境中,对域组赋予 SeDiskOperatorPrivilege。这可让您通过更新用户的组成员资格来集中管理特权。

  2. 列出所有被赋予了 SeDiskOperatorPrivilege 的用户和组:

    # net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMAIN\administrator"
    Enter administrator's password:
    SeDiskOperatorPrivilege:
      BUILTIN\Administrators
      DOMAIN\Domain Admins

1.9.2. 启用 Windows ACL 支持

要配置支持 Windows ACL 的共享,您必须在 Samba 中启用此功能。

先决条件

  • 在 Samba 服务器中配置了一个用户共享。

流程

  1. 要全局启用所有共享,请在 /etc/samba/smb.conf 文件的 [global] 部分添加以下设置:

    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes

    或者,您可以通过将相同的参数添加到共享部分来启用对单个共享的 Windows ACL 支持。

  2. 重启smb服务:

    # systemctl restart smb

1.9.3. 添加使用 Windows ACL 的共享

您可以创建一个名为 example 的共享,其共享 /srv/samba/example/ 目录的内容,并使用 Windows ACL。

流程

  1. 如果不存在,请创建文件夹。例如:

    # mkdir -p /srv/samba/example/
  2. 如果您在enforcing模式下运行 SELinux,请在目录中设置samba_share_t上下文:

    # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    # restorecon -Rv /srv/samba/example/
  3. 将示例共享添加到/etc/samba/smb.conf文件中。例如,添加启用了共享的写操作:

    [example]
    	path = /srv/samba/example/
    	read only = no
    注意

    无论文件系统 ACL 是什么;如果您没有设置read only = no,Samba 会以只读模式共享该目录。

  4. 如果您没有在[global] 部分中对所有共享启用 Windows ACL 支持,那么请在 [example] 部分中添加以下参数来为这个共享启用此特性:

    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes
  5. 验证/etc/samba/smb.conf文件:

    # testparm
  6. 打开所需的端口,并使用firewall-cmd工具重新加载防火墙配置:

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  7. 重启smb服务:

    # systemctl restart smb

1.9.4. 管理使用 Windows ACL 的共享的共享权限和文件系统 ACL

要在使用 Windows ACL 的 Samba 共享上管理共享权限和文件系统 ACL,请使用 Windows 应用程序,如 计算机管理。详情请查看 Windows 文档。或者,使用 smbcacls 工具来管理 ACL。

注意

要从 Windows 修改文件系统权限,您必须使用赋予了 SeDiskOperatorPrivilege 特权的帐户。