我使用 ApacheDS 作为目录服务器,用于 Gogs(GitLab 等 Git 服务器)等应用程序。我的想法是创建像 gogs-users
这样的组,并将登录限制在这些组中,这样只有属于该组成员的用户才能登录。我为此创建了一个 groupOfNames
和一个添加到 gogs 组的测试用户。
gogs-users
的类型是 groupOfNames
并且它有一个属性 member
包含我的用户的 DN (uid=testuser, ou=用户,DC=示例,DC=com)。所以我能够看到谁是该组的成员。
但我想查看用户 所属的所有组。当我打开 testuser 时,我看不到任何可以告诉我他是 gogs-users
成员的属性。我记得专有的 Active Directory 有一个名为 memberOf
的属性,可以在 (&(objectClass=inetOrgPerson)(memberOf=CN=gogs-user,DC=example,DC =com))
。那正是我所需要的。
如何在免费的 LDAP 实现中获得它?除了定义自定义属性外,我看不出有什么办法——我必须每次都维护它。这不好,我想有一个自动化的解决方案,可以保持这些属性。
我已经尝试过的事情
- https://stackoverflow.com/a/34502363/3276634没有变化
- https://morenews.blogspot.de/2010/12/adding-active-directory-properties-to.html也没有变化
注意:我在每次方案导入后都进行了完全重置,以确保我的测试不受之前更改的影响。
最佳答案
以下是两种方式均可执行但仅适用于 Microsoft Active Directory 的查询:
解决 all members (包括嵌套的)安全组(至少需要 Windows 2003 SP2):
(memberOf:1.2.840.113556.1.4.1941:=CN=gogs-user,DC=example,DC=com)
和 所有团体 User is a member of包括嵌套组
(member:1.2.840.113556.1.4.1941:=CN=UserName,CN=Users,DC=YOURDOMAIN,DC=NET))
关于linux - 在 LDAP 中获取用户所属的所有组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43722148/