Samba 4 中的 NT 到 UNIX 组映射

Samba 4 中的 NT 到 UNIX 组映射

我想将 NT 组映射Domain Users到与 Samba 4.7.6 Active Directory 域控制器不同的 UNIX 组users,但是当我尝试执行此操作时,失败,如下所示:

> net groupmap modify ntgroup='Domain Users' unixgroup='share' type=domain
Could not update group database
[255]

我读到您现在可以使用 winbind 来执行此操作,因此我尝试了,但随后出现了以下错误。

> wbinfo --set-gid-mapping=1000,S-1-5-21-...-513
failed to call wbcSetGidMapping: WBC_ERR_NOT_IMPLEMENTED
Could not create or modify gid to sid mapping
[1]

在 Samba 4 中管理 NT 到 UNIX 组映射的正确方法是什么?

编辑:在 Samba 邮件列表中,我发现有人类似问题,那么我是否可以通过直接修改内部 LDAP 服务器来解决这个问题?例如:

ldbadd /var/lib/samba/private/sam.ldb.d/metadata.tdb ...

不幸的是,我没有使用 LDAP 的经验,所以我不知道如何为我的用例提供有效的 LDIF 文件。

编辑2:得益于有关 LDAP 中的 Samba 4 用户和组管理的博客文章之后,我设法编辑了 NT 组映射到的 UNIX 组:

> ldbedit -e nano -H /var/lib/samba/private/idmap.ldb '(objectSid=S-1-5-21-1580746459-3543417057-3597883204-513)'

> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:100:

> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> share

因此,现在报告了正确的组net groupmap,但wbinfo仍报告旧值,因此它可能不会从该数据库中获取数据。我不确定wbinfo报告正确的组对我的用例有多重要,但在将其用作答案并将其标记为已解决之前,我会看看是否也可以更改它。

答案1

据我所知,除了直接编辑内置 LDAP 服务器之外,Samba 4 中似乎没有可用的工具可以让您正确配置此功能。

net工具似乎不能很好地与内置 LDAP 服务器配合使用,只有某些操作成功,例如列出组映射和授予权限工作,但列出组成员或修改组映射不起作用(如我的问题所示)。

为了修改映射,我以 root 身份运行了以下命令。首先,我们必须检索 的 SID Domain Users,因为它对于 Samba 服务器的每次配置都是唯一的。

root> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> users

xidNumber: 100然后我们通过使用预期的 UNIX GID进行更新来更新内置 LDAP 服务器的 SID 记录:

root> ldbedit -e nano -H /var/lib/samba/private/idmap.ldb '(objectSid=S-1-5-21-1580746459-3543417057-3597883204-513)'
# 0 adds  1 modifies  0 deletes

假设您将其更改为250名为 的 UNIX 组的GID share,则调用net groupmap将导致报告的组为share

root> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> share

然而wbinfo仍然winbindd会报告旧的 GID:

root> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:100:

因此,我们必须使 的缓存条目无效Domain Users。经过一些实验,我设法通过要求它查找更新的 GID 来实现这一点:

root> wbinfo --gid-info 250
AD.EXAMPLE\domain users:x:250:

然后也会由以下人员正确报告--group-info

root> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:250:

相关内容