LDAP 如何处理补充/次要用户组?

LDAP 如何处理补充/次要用户组?

我曾经看到过与配置 Apache 通过 LDAP 进行身份验证相关的类似问题,但是这个基本问题仍然让我感到困惑。

在我的设置中,我创建了具有相同主 GID 的用户,然后将用户添加到各种(补充/次要)组。我已经测试了这些用户帐户,在大多数情况下,一切正常 - 我基于补充组成员身份的权限正在运行。我使用该smbldap-tools软件包配置我的用户和组,特别是我曾经将smbldap-usermod -G +NEW_GROUP user用户添加到补充组。

如果我这样做,getent group我就会看到那些补充组及其成员。很好。

如果我查看其中一个补充组的 LDAP 条目,我会看到列出的所有用户均符合预期。

然而,当我查看每个用户的 LDAP 条目时,只gidNumber列出了与主要组相对应的条目。也就是说,每个用户的 LDAP 条目只列出了主要组,而没有提及次要组。

Samba/LDAP(使用 smbldap-tools)如何处理补充/次要组?

此外,我如何形成搜索过滤器来识别补充组的成员?

答案1

LDAP 只是一个信息目录。如何存储和检索这些信息取决于应用程序。在这种情况下,posix 用户和组以 /etc/passwd 和 /etc/group 文件为模型。每个用户条目都列出了其主要组的 gid。每个组都列出了其所有成员(通常不包括将其列为其主要组的成员)。

Samba 和各种用于在 LDAP 中存储用户和组信息的 nss 插件都会进行搜索,以查找用户登录时所属的组。应该对 memberUid 属性进行索引,以快速进行组成员身份搜索。对于给定的用户帐户,搜索过滤器如下所示:

(&(objectclass=posixGroup)(memberUid=$user))

如果你想查看特定组中的用户,你可以使用以下命令进行搜索:

(&(objectclass=posixGroup)(cn=$group))

这假设您的所有组都属于 posixGroup 对象类。

答案2

我不是 OpenLDAP 的忠实用户,但如果这是 Active Directory 环境,我会使用每个用户帐户对象中存在的“memberOf”属性。在 OpenLDAP 世界中,它看起来像成员覆盖会做你想要的。我怀疑这个问题将告诉您完成此操作所需了解的信息。

相关内容