국가를 추가하는 동안 "글로벌 우량 지식 없음"


14

organizationalunit새로 설치된 OpenLDAP (Ubuntu 12.04)에 다음과 같이 추가해야합니다 .

dn: ou=MYREGION, ou=MYAPP, ou=GROUPS, o=myorganization, c=fr
ou: MYREGION
objectClass: top
objectClass: organizationalunit

새로운 LDAP이므로 먼저 fr국가를 추가해야 하고 해당 파일을 작성 해야한다고 생각 합니다.

dn: c=fr
c: fr
objectClass: top
objectClass: country

이제 해당 명령으로 가져 오려고합니다 (해당 서버에 대한 도메인이 없습니다).

ldapadd -x -D cn=admin,dc=nodomain -W -f country_fr.ldif

그러나 OpenLDAP는 다음 명령을 사용하여 해당 명령을 거부합니다.

adding new entry "c=fr"
ldap_add: Server is unwilling to perform (53)
    additional info: no global superior knowledge

힌트가 있습니까?

답변:


20

오류 no global superior knowledgeslapd새 항목을 어디에 둘지 모르는 것을 의미합니다 . 이는 일반적으로 적절한 데이터베이스를 정의하지 않았 음을 의미합니다. 새로운 시스템 (사용하는 사람과 cn=config대신 slapd.conf), 일반적으로 먼저 새 데이터베이스를 추가하거나 사용하여 기존 데이터베이스 항목을 수정할 것 ldapaddldapmodify. 예를 들어, Fedora 17 시스템에서 기본 설치는 다음과 같은 데이터베이스를 호스팅하도록 설정합니다 dc=my-domain,dc=com.

dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
creatorsName: cn=config
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com

조직을 호스팅하려면 ( o=myorganization, c=fr) 다음 LDIF 파일을 만들어야합니다.

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization, c=fr
-
replace: olcRootDN
olcRootDN: cn=Manager,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write 
  by dn.base="cn=Manager,o=myorganization,c=fr" write
  by * none

그런 다음이 수정 사항을 다음과 같이로드합니다.

ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif

olcAccess구성에 다음 줄이 이미 있기 때문에 작동 합니다.

dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by * none

이 보조금은 root, 연락 slapd오버 ldapi:///받는 소켓, 암호 무료로 이용할 수 cn=config나무.

그런 다음 최상위 항목을로드합니다.

dn: o=myorganization, c=fr
objectclass: organization
o: myorganization

실행하여 :

ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif

이 데이터베이스에 비슷한 ACL을 추가했기 때문에 작동합니다. c=fr데이터베이스가 보류되도록 정의되었으므로 여기서 부터 시작할 필요는 없습니다.o=myorganization,c=fr


좋아, 고마워. 그러나 귀하의 답변을 올바르게 이해하면이 OpenLDAP 데이터베이스의 현재 접두사를 수정하십시오. 새로운 것을 추가하려면 어떻게해야합니까? (어쨌든 나는 당신의 추천을 테스트 할 것입니다. 궁금합니다.)
Anthony O.

1
사용 ldapadd대신에 ldapmodify, 그리고 모델로 기존 기록을 사용합니다.
larsks

이 답변으로 문제가 해결 되었다면 질문의 왼쪽 상단에있는 확인란을 클릭하여 문제를 수락 한 것으로 표시하십시오.
larsks

실제로, 그것은 나에게 많은 도움이되었지만, 내가 전달한 정확한 명령이 아니기 때문에 내 자신의 답장을 만들었습니다. 내가 olcAccess실제로 사용한 ldifs (특히 ) 및 명령 으로 수정하기 위해 답장을 감히 편집하지 않았지만 답장에서 복사 / 붙여 넣기로 편집하려면 허용 및 표시 할 수 있습니다. 내 제거 :)
Anthony O.

(내 생각에 답을 내려 놓을 이유가 아니라고 생각한다 ...)
Anthony O.

1

larsks answer 덕분에 여기 내가 한 일이 있습니다.

먼저 Ubuntu 12.04 (파일 /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif)를 사용한 기본 구성의 추출입니다 .

dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=nodomain" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=nodomain" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain

그래서 나는 다음을 만들었습니다 change_suffix.ldif.

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization,c=fr
-
replace: olcRootDN
olcRootDN: cn=admin,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,o=myorganization,c=fr" write by * none
olcAccess: {2}to * by self write by dn="cn=admin,o=myorganization,c=fr" write by * read

다음 명령으로 내 ldap에 추가했습니다.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f change_suffix.ldif

이제 다음을 사용하여 조직 노드를 만들어야했습니다 myorganization.ldif.

dn: o=myorganization,c=fr
objectclass: organization
o: myorganization

마지막으로 다음 명령으로 추가하십시오 (첫 번째 명령으로 인해 작동하지 않음 Insufficient access (50)).

ldapadd -x -D cn=admin,o=myorganization,c=fr -W -f myorganization.ldif

이제 조직 단위를 추가 할 수 있습니다.

dn: ou=GROUPS, o=myorganization,c=fr
ou: GROUPS
objectClass: top
objectClass: organizationalunit

dn: ou=MYAPP, ou=GROUPS, o=myorganization,c=fr
ou: MYAPP
objectClass: top
objectClass: organizationalunit

dn: ou=MYREGION, ou=MYAPP, ou=GROUPS, o=myorganization,c=fr
ou: MYREGION
objectClass: top
objectClass: organizationalunit

dn: olcDatabase={1}hdb,cn=config덕분에 나를 위해 핵심이었다
miguelfg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.