AD 加入的 Samba 共享与 Windows XACL 访问被拒绝

AD 加入的 Samba 共享与 Windows XACL 访问被拒绝

概述

  • 我有一个文件服务器和域控制器,都运行 Samba 4.15.9。
  • 森林里只有 DC 一个人。
  • DC、文件服务器和 Windows 10 客户端加入了同一个域。
  • 在文件服务器上,我按照 Samba wiki 设置了 ADS 安全性、AD idmap 和 Windows ACL 共享 (域加入AD idmapWindows ACL)。
  • 我已经验证可以在文件服务器上枚举所有相关的域用户和组。
  • 我可以作为拥有组 ( Unix Admins) 的成员连接并浏览共享,但不能作为Domain Users; ACL 应该允许访问的成员连接并浏览共享。

领域

  • 域中存在两个相关组;Unix AdminsDomain Users,它们均gidNumber在 idmap 范围内设置为唯一值。
  • 域中有两个相关用户;AdminUser,两者都已uidNumber设置为 idmap 范围内的唯一值。这两个用户都是 的成员Domain Users
    • Admin是 的成员Unix Admins

文件服务器

  • 文件服务器上的Samba配置如下(域名更改):

    [global]
       security = ADS
       workgroup = WORKGROUP
       realm = REALM.WORKGROUP.COM
       server string = %h
    
       log file = /var/log/samba/log.%m
    
       max log size = 1000
       logging = file
    
       panic action = /usr/share/samba/panic-action %d
    
       idmap config * : backend = tdb
       idmap config * : range = 3000 - 7999
       idmap config REALM.WORKGROUP.COM : backend = ad
       idmap config REALM.WORKGROUP.COM : unix_nss_info = yes
       idmap config REALM.WORKGROUP.COM : range = 10000 - 999999
       idmap config REALM.WORKGROUP.COM : schema_mode = rfc2307
    
       vfs objects = acl_xattr
       map acl inherit = yes
    
       template shell = /bin/bash
       template homedir = /shares/user/%U
    
       username map = /etc/samba/user.map    # Only map is Administrator -> root
       winbind use default domain = yes
       winbind enum users = yes
       winbind enum groups = yes
    
       server role = member server
       map to guest = never
    
       server min protocol = SMB2_10
       server smb encrypt = required
    
    [users$]
       path = /shares/user/
       read only = no
       acl_xattr:ignore system acls = yes
       comment = User Shares
    
    [shared]
       path = /shares/shared/
       read only = no
       acl_xattr:ignore system acls = yes
       comment = Shared Folders
    
    [service]
       path = /shares/service/
       read only = no
       acl_xattr:ignore system acls = yes
       comment = Service Shares
    
  • Unix AdminsSeDiskOperatorPrivilege在文件服务器上获得授权。

  • 共享目录的 POSIX 权限均为 771,所有者为root:"unix admins"

  • 共享目录根目录()的 Windows ACL/shares设置如下:

    • 所有者:Unix Admins
    • 允许:Unix 管理员:完全控制:此文件夹、子文件夹和文件
    • 允许:创建者所有者:修改:仅限子文件夹和文件
    • 允许:域用户:读取和执行:此文件夹、子文件夹和文件
    • 允许:系统:完全控制:此文件夹、子文件夹和文件
  • 所有相关共享的“共享权限”允许“所有人”拥有“完全访问”权限。

问题

根据上述 ACL,我期望用户User能够浏览共享,因为他们是 的成员Domain Users。事实上,计算 的有效访问权限User表明他们具有预期的权限。但是,尝试连接到共享会User产生权限错误。

解决方法

设置整个/shares目录树的 POSIX 权限以775允许用户按预期访问共享,同时777允许用户使用适当的 ACL 进行写入。

然而,我觉得这并不理想,我关注的维基页面似乎显示设置共享,Domain Users并将 POSIX 权限设置为770

相关内容