아래와 같이 새 스키마를 만들었습니다.
attributetype ( 2.25.3236588
NAME 'x-candidateNumber'
DESC 'Candidate number'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.3536282
NAME 'x-candidateFullName'
DESC 'Candidate name'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.6587875
NAME 'x-candidateTitleBeforeName'
DESC 'Candidate title before name'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.6164147
NAME 'x-candidateTitleAfterName'
DESC 'Candidate title after name'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.1702122
NAME 'x-candidateBirthNumber'
DESC 'Candidate title after name'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.3134432
NAME 'x-candidateListedAt'
DESC 'Candidate listed at'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.3682754
NAME 'x-candidateErasedAt'
DESC 'Candidate erased at'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.5497561
NAME 'x-candidateNote'
DESC 'Candidate note'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.25.9736218
NAME 'x-candidateStatus'
DESC 'Candidate status'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
objectclass ( 2.25.1798306
NAME 'ekcrCandidate'
DESC 'RFC1274: simple security object'
SUP ( top $ person $ organizationalPerson $ inetOrgPerson )
STRUCTURAL
MUST (cn $ ou)
MAY ( x-candidateNumber $ x-candidateFullName $ x-candidateTitleBeforeName $
x-candidateBirthNumber $ x-candidateTitleAfterName $ x-candidateListedAt $
x-candidateErasedAt $ x-candidateNote $ x-candidateStatus
))
schema_convert.conf
이 스키마를 파일 에 추가합니다 .
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/pmi.schema
include /etc/ldap/schema/ekcrconcipient.schema
include /etc/ldap/schema/ekcrcandidate.schema
include /etc/ldap/schema/ekcrlegalofficer.schema
그런 다음 스키마를 ldif
파일 로 변환합니다.
slaptest -f schema_convert.conf -F /tmp/ldif_output
설명대로 수정한 파일이 생성되었습니다.여기4단계에서. 이제 생성된 cn={14}ekcrlegalofficer.ldif
파일은 다음과 같습니다.
dn: cn=ekcrlegalofficer
objectClass: olcSchemaConfig
cn: ekcrlegalofficer
olcAttributeTypes: {0}( 2.25.7702021 NAME 'x-legalOfficerNumber' DESC 'Legal o
fficer number' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
32768} )
olcAttributeTypes: {1}( 2.25.960171 NAME 'x-legalOfficerFullName' DESC 'Legal
officer name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3
2768} )
olcAttributeTypes: {2}( 2.25.196694 NAME 'x-legalOfficerTitleBeforeName' DESC
'Legal officer title before name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1
.1466.115.121.1.15{32768} )
olcAttributeTypes: {3}( 2.25.7643140 NAME 'x-legalOfficerTitleAfterName' DESC
'Legal officer title after name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.
1466.115.121.1.15{32768} )
olcAttributeTypes: {4}( 2.25.1064416 NAME 'x-legalOfficerListedAt' DESC 'Legal
officer listed at' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
1.15{32768} )
olcAttributeTypes: {5}( 2.25.1005975 NAME 'x-legalOfficerErasedAt' DESC 'Legal
Officer erased at' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
1.15{32768} )
olcAttributeTypes: {6}( 2.25.5513419 NAME 'x-legalOfficerNote' DESC 'Legal Off
icer note' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3276
8} )
olcAttributeTypes: {7}( 2.25.4535859 NAME 'x-legalOfficerStatus' DESC 'Legal O
fficer status' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
32768} )
olcObjectClasses: {0}( 2.25.6182638 NAME 'ekcrLegalOfficer' DESC 'RFC1274: sim
ple security object' SUP ( top $ person $ organizationalPerson $ inetOrgPerso
n ) STRUCTURAL MUST ( cn $ ou ) MAY ( x-legalOfficerNumber $ x-legalOfficerFu
llName $ x-legalOfficerTitleBeforeName $ x-legalOfficerTitleAfterName $ x-leg
alOfficerListedAt $ x-legalOfficerErasedAt $ x-legalOfficerNote $ x-legalOffi
cerStatus ) )
objectClass
그런 다음 이 새로운 내용 을 추가하려고 합니다.
ldapadd -D "cn=admin,cn=config" -W -f cn={14}ekcrlegalofficer.ldif
그 결과 이
ldap_add: Server is unwilling to perform (53)
additional info: no global superior knowledge
잘못된 데이터베이스에 새 레코드를 추가하려고 하면 이 오류가 발생할 수 있다는 점을 이해합니다. 하지만 새 개체 클래스를 만들려고 하므로 이러한 경우는 발생하지 않습니다.
과거에는 실제로 효과가 있었지만 다음을 사용하여 openLDAP 서버를 재구성했습니다.
dpkg-reconfigre slapd
그 이후로 나는이 문제에 직면하고 있습니다.
저는 지금 막힌 지 3일째인데 정말 절박합니다. 어떤 도움이라도 주시면 대단히 감사하겠습니다.
답변1
내가 본 첫 번째 문제는 다음과 같은 고유 이름을 가진 개체를 만들려고 한다는 것입니다.
dn: cn=ekcrlegalofficer
이는 유효하지 않습니다. 스키마는 기존 계층 구조 "내부"에 있어야 합니다. "글로벌 고급 지식 없음" 오류는 "이 개체를 어디에 배치해야 할지 모르겠습니다"를 의미합니다.
기존 스키마를 보면 다음과 같습니다.
dn: cn={0}core,cn=schema,cn=config
당신은 당신의 모습을 다음과 같이 만들고 싶을 수도 있습니다 dn
:
dn: cn=ekcrlegalofficer,cn=schema,cn=config