我想在 OpenLDAP 中添加自定义属性,但我可能不理解这个概念。我所做的是:
我创建了custom.schema
attributetype ( 1.3.6.1.4.1.4203.666.100.122
NAME ( 'dateOfBirth' )
SUP name
)
attributetype ( 1.3.6.1.4.1.4203.666.100.123
NAME ( 'IPPhone' )
SUP name
)
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
DESC 'Custom attributes class'
)
我添加到了 slapd.conf
include /usr/local/etc/openldap/schema/custom.schema
现在我想将此对象类分配给当前数据库中的每个 uid。因此我转储了数据库,将 objectclass 属性添加到某个 uid,然后在导入 LDIF 时,ldap 提示:
65) invalid structural object class chain (inetOrgPerson/customAttributes)
LDIF 条目如下:
dn: dc=sss,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: sss.com
dc: sss
structuralObjectClass: organization
dn: ou=People,dc=sss,dc=com
objectClass: organizationalUnit
ou: People
structuralObjectClass: organizationalUnit
dn: uid=zzz,ou=People,dc=sss,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: customAttributes
structuralObjectClass: inetOrgPerson
...
您能否指导我如何添加这些自定义属性?
答案1
从无效的结构对象类链错误表明违反了 STRUCTURAL objectClass 规则。如果没有相反的声明,您的 customAttributes objectClass 将被视为 STRUCTURAL objectClass,但它不能与 inetOrgPerson 一起使用。我建议您尝试将您的架构更改为以下内容:
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
AUXILIARY
DESC 'Custom attributes class'
MAY (dateofBirth $ IPPhone)
)
为了进一步解释,我阅读了LDAP 指南。除此之外,粗略地看一下您尝试创建的模式,可能会对组织产生更多思考。通常建议将 objectClass 实体放在一棵树下,将 attributeType 实体放在另一棵树下,以避免混淆和冲突。
答案2
您的新对象类需要引用新属性。通常作为 MAY 子句完成
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
DESC 'Custom attributes class'
MAY (dateofBirth $ IPPhone)
)
可能还有其他要求。OpenLDAP 管理指南是最好的起点。这里是课程信息
答案3
您是否根据上述帖子修改了架构?此外,.schema 文件是否可读且具有正确的权限?
重新启动时,syslog(或 slapd 的日志文件)是否会给出任何错误?