Chr*_*ams 16 ldap nested-groups
我将LDAP作为在工作中管理访问服务器和源代码的可能工具,虽然我已经能够掌握基本概念,例如将用户和机器表示为实体,创建属性,以及定义哪些属性应该应用于基于应用于它们的objectClasses的实体,有一些错误对我来说仍然没有意义,我希望有人可以帮助解释它们是如何工作的.
我可以理解ou
(组织单位)是什么,我可以理解将人们置于其中,并使用groupOfNames类作为成员的容器,例如来自zytrax的 LDIF片段:
# create FIRST Level groups branch
dn: ou=groups,dc=example,dc=com
objectclass:organizationalunit
ou: groups
description: generic groups branch
# create the itpeople entry under groups
dn: cn=itpeople,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: itpeople
description: IT security group
member: cn=William Smith,ou=people,dc=example,dc=com
# create the hrpeople entry under groups
dn: cn=hrpeople,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: hrpeople
description: Human Resources group
member: cn=Robert Smith,ou=people,dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
我所追求的是这里的伪代码:
ou='Projects' /
description: This top level group has a few people in it that can create new groups, and control who's in them
member: cn=Robert Smith,ou=people,dc=example,dc=com
-- somethingsomethingAbitrarilyNestedGroup='project-name'
member: cn=Robert Smith,ou=people,dc=example,dc=com
-- groupOfNames = 'project-name development'
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server1$,ou=servers,dc=example,dc=com
-- groupOfNames = 'project-name staging'
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server2$,ou=servers,dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
我没有看到在这里进行任意组嵌套的简单方法 - 在可用的普通类中,不使用昂贵的闭源工具,但感觉它不应该是这么复杂.
这通常是使用像OpenLDAP这样的工具完成的,让其他ldap客户端在被认证为具有正确权限的用户后控制组成员身份??
小智 15
你的问题有点困惑 - 我不确定你的意思是"现在授予访问这个群组的最佳方法是什么"在最初几段的背景下.
嵌套组很简单.如果您正在使用groupOfNames objectClass,则只需将另一个member
属性添加到父组,其值为子组的DN.
从您的伪代码:
# Assuming your "groups" OU already exists...
# First create the child groups
dn: cn=project-name development,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: project-name development
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server1$,ou=servers,dc=example,dc=com
dn: cn=project-name staging,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: project-name development
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server2$,ou=servers,dc=example,dc=com
# Now create the parent group
dn: 'project-name,ou=groups,dc=example,dc=com'
objectclass: groupofnames
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=project-name staging,ou=groups,dc=example,dc=com
member: cn=project-name development,ou=groups,dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
OU中的Hiearchy实际上只是根据组织的结构将LDAP树分成"逻辑"段.因此,举例来说,您可以将所有组织都放在自己的OU中管理"开发部门",这样就可以清楚地了解它们的相关内容.对象可以相互引用,并通过使用适当的属性(在本例中member
)相互引用来非常愉快地嵌套.