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
您已將該屬性標記為可操作(使用
USAGE directoryOperation
),因此出現錯誤。操作屬性不應該被使用者修改;它們需要在 OpenLDAP 中執行的程式碼才能根據某種事件更新它們。
另外,我建議不要更改標準架構,例如 inetOrgPerson 等,您應該創建自己的架構。
每個屬性類型和對像類都必須分配唯一的 OID。
您正在重用分配給標準屬性createTimestamp的 OID 2.5.18.1。
您還使用了 OID 2.5.6.6.1,這是一個您不應該使用的 OID 弧,因為其他人可能會在其中分配 OID。
另請參閱:OpenLDAP 常見問題解答:我是否需要為每個模式項分配 OID?
你的對象班宿舍很好
STRUCTURAL
。無法將此添加到現有條目中。改用種類AUXILIARY
。