组映射不适用于 AD 组

Ale*_*sar 5 linux active-directory ldap samba winbind

我们有一个 ActiveDirectory,我们可以从中获取用户。因此 Linux 机器上的身份验证通过 pam 进行。

到目前为止,我们已经成功地完成了这部分工作,但我们需要所有用户都成为本地组“users”的一部分。据我所知,这对于组映射是有效的。

我的 SID 是:

SID for local machine MYSERVER is: S-1-5-21-1487948860-3705201071-3703638889  
SID for domain MYDOMAIN is: S-1-5-21-1960408961-115176313-682003330
Run Code Online (Sandbox Code Playgroud)

我使用以下命令创建了组映射:

myserver:~# net groupmap add ntgroup="Domain Users" rid=513 unixgroup=users
Run Code Online (Sandbox Code Playgroud)

组映射如下所示:

myserver:~# net groupmap list -v

Domain Users
        SID       : S-1-5-21-1487948860-3705201071-3703638889-513
        Unix gid  : 100
        Unix group: users
        Group type: Domain Group
        Comment   : Domain Unix group
Administrators
        SID       : S-1-5-32-544
        Unix gid  : 10029
        Unix group: BUILTIN\administrators
        Group type: Local Group
        Comment   :
Users
        SID       : S-1-5-32-545
        Unix gid  : 12929
        Unix group: BUILTIN\users
        Group type: Local Group
        Comment   :
Run Code Online (Sandbox Code Playgroud)

但是当我以 AD 用户身份登录时,我不在用户组中。所有 AD 组均显示正确,并且还显示组“BUILTIN\users”和“BUILTIN\administrator”,但没有组“users”

我也尝试过

myserver:~# net groupmap delete ntgroup="Domain Users"
myserver:~# net groupmap delete ntgroup="Users"
myserver:~# net groupmap add ntgroup="Users" rid=545 unixgroup=users
Run Code Online (Sandbox Code Playgroud)

但这似乎没有效果(smbd重启,winbindd重启执行)。用户仍在“BUILTIN\users”组中,并且没有“users”条目

我想我错过了一些重要的配置步骤,但不知道这可能是什么。非常感谢任何帮助!

我们在 SLES 11 内核 3.0.76 上使用 samba 版本 3.6.3

==编辑== 07.04.2016 15:34

我尝试映射两个非标准组。AD组是grp_Production,本地linux组应该是games

myserver:~# net groupmap add ntgroup="grp_production" rid=20443 unixgroup=games
Run Code Online (Sandbox Code Playgroud)

结果是

myserver:~# net groupmap list -v
..
grp_production (S-1-5-21-1960408961-115176313-682003330-20443) -> games
..
Run Code Online (Sandbox Code Playgroud)

然后我以用户(AD 组 grp_product 的成员)身份登录 Linux 计算机。

myserver:~# groups | grep games
Run Code Online (Sandbox Code Playgroud)

找不到游戏组:-(

==编辑 08.04.2016 07:39==
我在日志中发现的唯一错误是在 /var/log/samba/log.winbindd-idmap

[2016/04/07 13:54:25.146170,  1] ../librpc/ndr/ndr.c:284(ndr_print_function_debug)
       wbint_Sid2Gid: struct wbint_Sid2Gid
          in: struct wbint_Sid2Gid
              dom_name                 : NULL
              sid                      : *
                  sid                      : S-1-5-21-1960408961-115176313-682003330-28693
[2016/04/07 13:54:25.146221, 10] winbindd/idmap_util.c:234(idmap_sid_to_gid)
  idmap_sid_to_gid: sid = [S-1-5-21-1960408961-115176313-682003330-28693], domain = ''
[2016/04/07 13:54:25.146247, 10] winbindd/idmap.c:507(idmap_backends_sid_to_unixid)
  idmap_backends_sid_to_unixid: domain = '', sid = [S-1-5-21-1960408961-115176313-682003330-28693]
[2016/04/07 13:54:25.146267, 10] winbindd/idmap.c:376(idmap_find_domain)
  idmap_find_domain called for domain ''
[2016/04/07 13:54:25.146290,  1] winbindd/idmap.c:209(idmap_init_domain)
  invalid range '100' specified for domain '*'
[2016/04/07 13:54:25.146308, 10] winbindd/idmap_util.c:260(idmap_sid_to_gid)
  idmap_backends_sid_to_unixid failed: NT_STATUS_NONE_MAPPED
[2016/04/07 13:54:25.146330, 10] lib/gencache.c:183(gencache_set_data_blob)
  Adding cache entry with key = IDMAP/SID2GID/S-1-5-21-1960408961-115176313-682003330-28693 and timeout = Thu Apr  7 13:56:25 2016
Run Code Online (Sandbox Code Playgroud)

我“grepped”了“games”和“grp_Production”的所有日志,但没有结果。

Sum*_*min 1

它们是众所周知的内置组的 sids - 但我认为如果存在域信任,即有 2 个或更多内置/用户,它们可以被抵消

您可以在 Powershell 中验证 AD 组的 sid

Get-ADGroup -Identity users | select sid
Run Code Online (Sandbox Code Playgroud)

查看 samba 服务器上列出用户是否存在任何问题

net usersidlist
Run Code Online (Sandbox Code Playgroud)

另一件事是 - 用户组是否已经映射到某个东西?

net groupmap list
Run Code Online (Sandbox Code Playgroud)

如果该组已经映射到某个东西,那么您就不会传递rid值,rid用于“添加”组,如果您只是“修改”则删除rid

 net groupmap modify ntgroup='Domain Users' unixgroup='users'
Run Code Online (Sandbox Code Playgroud)