无法在 OpenLDAP 中添加自定义属性

Joh*_*ohn 1 openldap ldap

我想在 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'
    )
Run Code Online (Sandbox Code Playgroud)

我添加到 slapd.conf

include         /usr/local/etc/openldap/schema/custom.schema
Run Code Online (Sandbox Code Playgroud)

现在我想将这个对象类分配给我在当前数据库中的每个 uid。所以我转储了数据库,向一些 uid 添加了对象类属性,并在导入 LDIF 时,ldap 说:

65) invalid structural object class chain (inetOrgPerson/customAttributes)
Run Code Online (Sandbox Code Playgroud)

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
...
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何添加这些自定义属性吗?

Jer*_*use 5

无效结构对象类链错误看来,存在违反 STRUCTURAL对象类规则。没有相反的声明,您的 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)
)
Run Code Online (Sandbox Code Playgroud)

为了进一步解释,我阅读了LDAP Guide中的常见错误原因。除此之外,您尝试创建的模式的粗略外观可能需要更多的思考来组织。通常建议在一棵树下有 objectClass 实体,在另一棵树下有 attributeType 实体以避免混淆和冲突。