我们有一个 ActiveDirectory,可以从中获取用户。因此,Linux 机器上的身份验证通过 pam 进行。
到目前为止,我们已经成功完成了这一部分的工作,但我们需要所有用户都成为本地组“用户”的一部分据我了解,这与组映射有关。
我的 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
我使用以下方法创建了组映射:
myserver:~# net groupmap add ntgroup="Domain Users" rid=513 unixgroup=users
组映射如下所示:
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 :
但是当我以 AD 用户身份登录时,我不在用户组中。所有 AD 组均显示正确,并且显示了“BUILTIN\users”和“BUILTIN\administrator”组,但没有显示“用户”组
我也试过
myserver:~# net groupmap delete ntgroup="Domain Users"
myserver:~# net groupmap delete ntgroup="Users"
myserver:~# net groupmap add ntgroup="Users" rid=545 unixgroup=users
但这似乎没有效果(smbd restart、winbindd restart 已执行)。用户仍在“BUILTIN\users”组中,并且没有“用户”条目
我想我错过了一些重要的配置步骤,但不知道这可能是什么。任何帮助都非常感谢!
我们在 SLES 11 内核 3.0.76 上使用 samba 版本 3.6.3
==编辑== 2016 年 4 月 7 日 15:34
我尝试映射两个非标准组。AD 组是 grp_production,本地 Linux 组应该是 games
myserver:~# net groupmap add ntgroup="grp_production" rid=20443 unixgroup=games
结果是
myserver:~# net groupmap list -v
..
grp_production (S-1-5-21-1960408961-115176313-682003330-20443) -> games
..
然后我以用户(AD 组 grp_production 的成员)的身份登录 Linux 机器。
myserver:~# groups | grep games
未找到游戏组 :-(
==编辑于 2016 年 4 月 8 日 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
我搜索了“games”和“grp_production”的所有日志,但没有结果。
答案1
它们是内置组的众所周知的 sid - 但我认为,如果存在域信任,它们可以被抵消,即存在 2 个或更多内置/用户
你能在 Powershell 中验证 AD 组的 sid 吗
Get-ADGroup -Identity users | select sid
查看 samba 服务器上列出用户是否存在问题
net usersidlist
另一件事是 - 用户组是否已经映射到某个东西?
net groupmap list
如果该组已经映射到某个东西,那么您就不需要传递 rid 值,rid 用于“添加”组,如果您只是“修改”,则删除 rid
net groupmap modify ntgroup='Domain Users' unixgroup='users'
答案2
您的net groupmap add
命令将本地计算机的 SID 前缀添加到您的 RID,因此它实际上映射了本地计算机的“域用户”组,这没有任何意义。
通过指定适当的选项告诉net
命令你的 RID 引用域type
:
net groupmap add ntgroup="Domain Users" rid=513 type=domain unixgroup=users
或者指定完整的 SID:
net groupmap add ntgroup="Domain Users" sid=S-1-5-21-1960408961-115176313-513 unixgroup=users
您可能必须先删除错误的映射。