Dlaczego to polecenie ldapadd kończy pracę z błędem „Niepoprawna składnia”?


14

Jestem bardzo nowy w openldap, ale bardzo dobrze zorientowany w środowisku linux / unix. Próbuję skonfigurować moje pierwsze testowe środowisko openldap, korzystając z przewodnika tutaj . Ja również czytać większość przewodniku administratora tutaj i muszę przyznać, że jest dużo do podjęcia w.

Tak więc, postępując zgodnie z przewodnikiem instalacji ubuntu, stworzyłem plik ldif, który wygląda następująco:

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

Ilekroć próbowałem dodać go za pomocą:

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

Otrzymuję następujący błąd:

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

Wyniki w Google dla tego błędu nie zawierają żadnych pomocnych sugestii. Co mogę tutaj robić źle?


Co się stanie, jeśli nie masz myślnika w swojej domenie? To może być przyczyną ...
— Nathan C

@NathanC spróbuje to teraz zmienić ...
— hax0r_n_code

@NathanC to samo ... zgaduję, że nie można tego znaleźć posixGroup. Jak zapytać o dostępne objectClasses?
— hax0r_n_code

@NathanC także nie mam tego /etc/ldap/slapd.d/katalogu. Zainstalowałem openldap ze źródła.
— hax0r_n_code

Nie znam wystarczająco dobrze openldap, aby odpowiedzieć ... ktoś może tu być.
— Nathan C,

Odpowiedzi:


11

Problem niewątpliwie polega na tym, że musisz załadować nisschemat na serwer LDAP. Jak to zrobić, zależy od tego, czy korzystasz ze starszego slapd.confpliku konfiguracyjnego, czy nowszej konfiguracji dynamicznej hostowanej cn=configi wspieranej przez slapd.dkatalog.

Za pomocą slapd.conf

Musisz includezdefiniować schemat w swoim slapd.conf, dodając linię wzdłuż linii:

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

Zakłada się, że nis.schemaplik znajduje się w tej ścieżce; jeśli nie, odpowiednio zmodyfikuj ścieżkę.

Musisz ponownie uruchomić, slapdaby aktywować nowy schemat.

Za pomocą slapd.d

(Podaję to dla kompletności, chociaż nie ma to bezpośredniego związku z twoją obecną konfiguracją).

Aby załadować schemat, slapdjeśli korzystasz z cn=configkonfiguracji dynamicznej , użyj ldapadd. W zależności od konfiguracji list ACL polecenie może wyglądać następująco:

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

Zakłada się, że Twój bieg slapdma listę ACL, która umożliwia uwierzytelnianie „poświadczeń równorzędnych” root. Jeśli to nie zadziała, musisz podać odpowiednią nazwę wyróżniającą powiązania i hasło, używając -Di -W.

W tym przypadku nie jest wymagane ponowne uruchomienie.


Dziękuję Ci! Jeśli pobrałem i zainstalowałem najnowszą wersję, openldapdlaczego nie zostałbym skonfigurowany do używania slapd.d?
— hax0r_n_code

Może instalator domyślnie korzysta ze starszego pliku konfiguracyjnego? W każdym przypadku dokumentacja zawiera instrukcje dotyczące konwersji od slapd.confdo slapd.d.
— larsks

Ta odpowiedź była bardzo pomocna. Musiałem dodać kilka wymaganych schematów, aby działały one dla mnie. Dziękuję za odpowiedź!
— Senthil Kumar

1
Skąd wiedziałeś, że brakowało nis.schema, a nie jakiegoś innego schematu? Jak przeanalizowałeś błąd?
— Mike Shultz

1
Błąd narzeka na klasę obiektów dla inżynierów cn = „posixGroup”. Na podstawie tego stosunkowo łatwo jest ustalić, w którym schemacie zdefiniowano tę klasę obiektów.
— larsks


1

file.ldifNaprawiam to, usuwając to, co chcę ładować w openldap (na przykład:), data.ldifponieważ edytor tekstu viczasami wstawia niewidoczny znak przez błąd lub błąd, a to wpływa na twój plik ldif. Więc usuń go, a utworzysz kolejne i spróbujesz przesłać każde zdanie jeden po drugim i sprawdź za pomocą polecenia ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, do widzenia i mam nadzieję, że ci w tym pomogę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.