在 openldap 上创建自己的属性时出现问题

在 openldap 上创建自己的属性时出现问题

我在创建自己的属性(例如 dateOfExpire-广义时间)然后将此属性添加到自己的 ObjecClass(例如宿舍)时遇到问题,然后将此属性与 ObjectClass 添加到现有模式 inetorgperson 中。

这是我添加到 inetorgperson.ldif 文件中的内容:

olcAttributeTypes: ( 2.5.18.1 NAME 'dateOfExpire' DESC 'RFC4512: indicated the date of account expiry' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SINGLE-VALUE USAGE directoryOperation  SUBSTR cas eIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )

并将其添加到 inetorgperson.schema 文件中:

attributetype ( 2.5.18.1 NAME 'dateOfExpire'
    DESC 'RFC4512: indicated the date of account expiry'
    EQUALITY generalizedTimeMatch
    ORDERING generalizedTimeOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
    SINGLE-VALUE
    USAGE directoryOperation )

objectclass ( 2.5.6.6.1 NAME 'dormitory'
    DESC 'RFC2256: a person'
    SUP person
    STRUCTURAL
    MUST ( sn $ cn $ dateOfExpire $ name $ uid )
    MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

之后,我使用以下命令添加此架构:

ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f inetorgperson.ldif

但我只得到这个错误:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: olcAttributeTypes: "2.5.18.1" is operational

答案1

您已将该属性标记为可操作(使用USAGE directoryOperation),因此出现错误。

用户不应修改操作属性;它们需要在 OpenLDAP 中运行的代码来根据某种事件更新它们。

另外,我建议不要更改标准模式,例如 inetOrgPerson 等。您应该创建自己的模式。

答案2

每个属性类型和对象类必须分配有唯一的 OID。

您正在重复使用 OID2.5.18.1分配给标准属性创建时间戳

您还使用过 OID2.5.6.6.1这是一个您不应该使用的 OID 弧,因为其他人可能会在其中分配 OID。

也可以看看:OpenLDAP 常见问题解答:我需要为每个架构项分配 OID 吗?

你的对象类宿舍是善良的STRUCTURAL。无法将其添加到现有条目中。请使用 kindAUXILIARY来代替。

相关内容