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?

hax0r_n_code
źródło
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.

Larsks
źródło
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

Ostatnio napotkałem ten problem podczas korzystania z samouczka Ubuntu OpenLDAP Server . Rozwiązano go, usuwając wszystkie końcowe spacje z moich wierszy.

jamzsabb
źródło
1
Wielkie dzięki za to, właśnie zmagałem się z tym błędem!
TylerDurden,
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ę.

hansel1
źródło