내 자신의 속성(예: dateOfExpire - 일반화된 시간)을 생성한 다음 이 속성을 내 ObjectClass(예: 기숙사)에 추가하고 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
속성을 작동 가능(used)으로 표시했으므로 USAGE directoryOperation
오류가 발생합니다.
사용자는 작동 속성을 수정해서는 안 됩니다. 일부 이벤트에 따라 업데이트하려면 OpenLDAP에서 실행되는 코드가 필요합니다.
또한 inetOrgPerson 등과 같은 표준 스키마를 변경하지 않는 것이 좋습니다. 자신만의 스키마를 만들어야 합니다.
답변2
각 속성 유형과 객체 클래스에는 고유한 OID가 할당되어야 합니다.
OID를 재사용하고 있습니다.2.5.18.1표준 속성에 할당됨타임스탬프 생성.
OID도 사용하셨습니다.2.5.6.6.1이는 다른 사람이 OID를 할당할 수 있으므로 사용해서는 안 되는 OID 아크입니다.
또한보십시오:OpenLDAP FAQ: 각 스키마 항목에 OID를 할당해야 합니까?
당신의 객체 클래스기숙사친절하게 대해 STRUCTURAL
. 기존 항목에 추가할 수 없습니다. 대신 종류를 사용해 주세요 AUXILIARY
.