이 ldapadd 명령이“잘못된 구문”오류로 종료되는 이유는 무엇입니까?


15

나는 openldap을 처음 접했지만 리눅스 / 유닉스 환경에 정통합니다. 나는 가이드를 사용하여 설정 내 최초의 시험과 openldap 환경을하려고 해요 여기 . 나는 또한 여기 에서 대부분의 관리자 안내서를 읽었으며 인정해야합니다.

우분투 기본 설정 가이드에 따라 다음과 같은 ldif 파일을 만들었습니다.

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=engineers,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: engineers
gidNumber: 5000

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

내가 사용하여 추가하려고 할 때마다 :

$ ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

다음과 같은 오류가 발생합니다.

adding new entry "cn=engineers,ou=Groups,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

adding new entry "uid=john,ou=People,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

이 오류에 대한 Google 결과는 유용한 제안을 제공하지 않습니다. 내가 여기서 뭘 잘못하고 있니?


도메인에 대시가 없으면 어떻게 되나요? 그 원인 일 수 있습니다 ...
Nathan C

@NathanC는 지금 그 변화를 시도 할 것입니다 ...
hax0r_n_code

@NathanC 같은 것 ... 내 추측으로는 찾을 수 없다는 것 posixGroup입니다. 사용 가능한 objectClasses 를 어떻게 쿼리 합니까?
hax0r_n_code

@NathanC 에도이 /etc/ldap/slapd.d/디렉토리 가 없습니다 . 소스에서 openldap을 설치했습니다.
hax0r_n_code

나는 대답하기에 openldap에 익숙하지 않습니다 ... 여기 다른 사람이있을 수 있습니다.
Nathan C

답변:


12

의심 할 여지없이 문제는 nis스키마를 LDAP 서버 에로드해야한다는 것 입니다. 이를 수행하는 방법은 레거시 slapd.conf구성 파일을 사용하는지 또는 디렉토리 에서 호스트 cn=config하고 백업 하는 최신 동적 구성을 사용하는지에 따라 다릅니다 slapd.d.

사용 slapd.conf

다음 라인을 따라 라인을 추가 include하여 스키마 정의 가 필요합니다 slapd.conf.

include /usr/local/etc/openldap/schema/nis.schema

nis.schema파일이 해당 경로에 있다고 가정합니다 . 그렇지 않은 경우 경로를 적절하게 수정하십시오.

slapd새 스키마를 활성화하려면 다시 시작해야합니다 .

사용 slapd.d

(현재 구성과 직접 관련이 없지만 완전성을 위해 이것을 포함시킵니다).

slapd동적 cn=config구성을 사용중인 경우 스키마를로드하려면 을 사용 ldapadd합니다. ACL 구성 방법에 따라 명령은 다음과 같습니다.

ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif

이는 slapd"피어 자격 증명"인증을 허용하는 ACL이 실행중인 것으로 가정합니다 root. 즉,하지 작업을 수행하는 경우, 적절한 바인드 DN과 암호를 사용하여 제공해야 -D하고 -W.

이 경우에는 다시 시작할 필요가 없습니다.


감사합니다! 최신 버전을 다운로드하여 설치 한 경우 openldap사용하도록 구성되지 않은 이유는 slapd.d무엇입니까?
hax0r_n_code 1

설치 프로그램이 기본적으로 레거시 구성 파일을 사용합니까? 어쨌든 설명서에는에서 slapd.conf로 변환하기위한 지침 이 slapd.d있습니다.
Larsks

이 답변은 매우 유용한 시간이었습니다. 나를 위해 필요한 스키마를 몇 개 추가해야했습니다. 답변 해주셔서 감사합니다!
Senthil Kumar

1
누락되었거나 다른 스키마가 아닌 nis.schema임을 어떻게 알았습니까? 오류를 어떻게 파싱 했습니까?
Mike Shultz 2016

1
cn = engineers의 객체 클래스 인 "posixGroup"에 대한 오류가 발생했습니다. 이것으로부터 objectclass가 정의 된 스키마를 알아내는 것이 상대적으로 쉽습니다.
larsks


1

텍스트 편집기가 때때로 오류 또는 버그로 보이지 않는 문자를 삽입하고 ldif 파일에 영향을 미치기 때문에 file.ldifopenldap에서 충전하려는 것을 삭제하여 수정합니다 (예 :). 그래서 그것을 삭제하고 다른 것을 만들고 각 문을 하나씩 업로드하고 명령으로 확인하십시오 . 안녕히 가십시오.이 도움이되기를 바랍니다.data.ldifvildapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.