假设inetOrgPerson
中有ou=people,dc=example,dc=com
个。例如:
dn: cn=John Doe,ou=people,dc=example,dc=com
objectClass: inetOrgPerson (structural)
objectClass: person (structural)
objectClass: top (abstract)
cn: John Doe
sn: Doe
givenName: John
mail: john.doe@example.com
uid: john.doe
此外,我有几个organization
s:
dn: o=foo,dc=example,dc=com
objectClass: organization (structural)
objectClass:top (abstract)
o: foo
dn: o=bar,dc=example,dc=com
objectClass: organization (structural)
objectClass:top (abstract)
o: bar
对于每个organization
,都有一个groupOfNames
:
dn: cn=users,o=foo,dc=example,dc=com
objectClass:groupOfNames (structural)
cn: users
member: cn=John Doe,ou=people,dc=example,dc=com
dn: cn=users,o=bar,dc=example,dc=com
objectClass:groupOfNames (structural)
cn: users
如您所见,cn=John Doe,ou=people,dc=example,dc=com
被列为member
cn=users,o=foo,dc=example,dc=com
但未列为dn: cn=users,o=bar,dc=example,dc=com
。
我想在inetOrgPerson
处注明会员资格。
memberOf
不在我目前用于用户的模式中。是否有可用的架构提供memberOf
?
member
是groupOfNames
的一部分,但此objectClass
与inetOrgPerson
冲突:
[LDAP: error code 65 - invalid structural object class chain (inetOrgPerson/groupOfNames)]
如何在cn=users,o=foo,dc=example,dc=com
上的cn=John Doe,ou=people,dc=example,dc=com
注明会员资格?
答案 0 :(得分:5)
如果您使用的是OpenLDAP,则需要使用'memberof'叠加层,该叠加层在操作属性中保留真正的“memberOf”属性。
请注意,它不会影响已存在的成员资格,只会影响首次加载覆盖图时的新成员资格。请参阅OpenLDAP文档。
答案 1 :(得分:3)
根据使用的服务器,memberOf
可能是虚拟属性,不会在条目中列出,而是由服务器生成。其他一些服务器使用isMemberOf
而不是memberOf
。将根据服务器的请求生成memberOf
或isMemberOf
。
可以搜索:
ldapsearch -h hostname -p port \
-b dc=example,dc=com -s sub \
'(memberOf=cn=users,o=foo,dc=example,dc=com)'
或
ldapsearch -h hostname -p port \
-b dc=example,dc=com -s sub \
'(isMemberOf=cn=users,o=foo,dc=example,dc=com)'
获取cn=users,o=foo,dc=example,dc=com
成员的专有名称。
获取已知专有名称所属的组:
ldapsearch -h hostname -p port \
-b dc=example,dc=com -s sub \
'(cn=Joe User)' isMemberOf
或
ldapsearch -h hostname -p port \
-b dc=example,dc=com -s sub \
'(cn=Joe User)' memberOf
发生对象类违规是因为groupofNames
和inetOrgPerson
都是结构对象类。每个对象只允许一个结构对象类。 一些损坏的目录服务器(例如DSEE)将允许每个对象有多个结构对象类,但。在您的一个示例中,person
和inetOrgPerson
显示在同一个对象中,这是另一种情况,因为inetOrgPerson
是person
的后代。