Openldap

在openldap上創建自己的屬性的問題

  • December 15, 2018

我在創建自己的屬性(例如 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

您已將該屬性標記為可操作(使用USAGE directoryOperation),因此出現錯誤。

操作屬性不應該被使用者修改;它們需要在 OpenLDAP 中執行的程式碼才能根據某種事件更新它們。

另外,我建議不要更改標準架構,例如 inetOrgPerson 等,您應該創建自己的架構。

每個屬性類型和對像類都必須分配唯一的 OID。

您正在重用分配給標準屬性createTimestamp的 OID 2.5.18.1

您還使用了 OID 2.5.6.6.1,這是一個您不應該使用的 OID 弧,因為其他人可能會在其中分配 OID。

另請參閱:OpenLDAP 常見問題解答:我是否需要為每個模式項分配 OID?

你的對象班宿舍很好STRUCTURAL。無法將此添加到現有條目中。改用種類AUXILIARY

引用自:https://unix.stackexchange.com/questions/363721