Warum wird dieser Befehl "ldapadd" mit dem Fehler "Ungültige Syntax" beendet?

15

Ich bin sehr neu in openldap, aber sehr gut vertraut mit der Linux / Unix-Umgebung. Ich versuche, meine erste Test-Openldap-Umgebung mithilfe der Anleitung hier einzurichten . Ich habe auch den größten Teil des Administratorhandbuchs hier gelesen und muss zugeben, dass es eine Menge zu tun gibt.

Entsprechend der Anleitung zur Einrichtung von Ubuntu habe ich eine ldif-Datei erstellt, die so aussieht:

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

Wann immer ich versuchte es hinzuzufügen mit:

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

Ich erhalte folgenden Fehler:

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

Die Ergebnisse in Google für diesen Fehler enthalten keine hilfreichen Vorschläge. Was könnte ich hier falsch machen?

hax0r_n_code
quelle
Was passiert, wenn Sie keinen Gedankenstrich in Ihrer Domain haben? Das könnte es verursachen ...
Nathan C
@ NathanC werde versuchen, das jetzt zu ändern ...
hax0r_n_code
@ NathanC gleiche Sache ... meine Vermutung ist, dass es nicht finden kann posixGroup. Wie frage ich nach den verfügbaren objectClasses?
hax0r_n_code
@ NathanC auch ich habe dieses /etc/ldap/slapd.d/Verzeichnis nicht. Ich habe openldap aus dem Quellcode installiert.
hax0r_n_code
Ich kenne mich mit openldap nicht gut genug aus, um zu antworten. Vielleicht ist jemand anderes hier.
Nathan C

Antworten:

12

Ihr Problem ist zweifellos, dass Sie das nisSchema in Ihren LDAP-Server laden müssen . Wie Sie dies tun, hängt davon ab, ob Sie die alte slapd.confKonfigurationsdatei oder die neuere dynamische Konfiguration verwenden, die in cn=configeinem slapd.dVerzeichnis gehostet und von diesem gesichert wird .

Verwenden slapd.conf

Sie müssen includedie Schemadefinition in Ihrem slapd.confhinzufügen, indem Sie eine Zeile entlang der folgenden Zeilen einfügen:

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

Dies setzt voraus, dass sich die nis.schemaDatei an diesem Pfad befindet. Wenn nicht, ändern Sie den Pfad entsprechend.

Sie müssen neu starten slapd, um das neue Schema zu aktivieren.

Verwenden slapd.d

(Ich füge dies der Vollständigkeit halber hinzu, obwohl es für Ihre aktuelle Konfiguration nicht direkt relevant ist).

Um ein Schema in zu laden, slapdwenn Sie die dynamische cn=configKonfiguration verwenden, würden Sie verwenden ldapadd. Je nachdem, wie Ihre ACLs konfiguriert sind, sieht der Befehl möglicherweise folgendermaßen aus:

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

Dies setzt voraus, dass Ihre Ausführung slapdeine Zugriffssteuerungsliste hat, die die Authentifizierung "Peer-Anmeldeinformationen" für zulässt root. Wenn das nicht funktioniert, würde benötigen Sie eine entsprechende Bind - DN und das Kennwort zur Verfügung zu stellen mit -Dund -W.

In diesem Fall ist kein Neustart erforderlich.

larsks
quelle
Vielen Dank! Wenn ich die neueste Version heruntergeladen und installiert habe, openldapwarum wäre ich dann nicht für die Verwendung konfiguriert slapd.d?
hax0r_n_code
Möglicherweise verwendet das Installationsprogramm standardmäßig die alte Konfigurationsdatei? In jedem Fall enthält die Dokumentation Anweisungen zum Konvertieren von slapd.confnach slapd.d.
Larsks
Diese Antwort war eine sehr hilfreiche Zeit. Ich musste einige erforderliche Schemata hinzufügen, damit es für mich funktioniert. Danke für die Antwort!
Senthil Kumar
1
Woher wusstest du, dass das nis.schema fehlt und nicht irgendein anderes Schema? Wie haben Sie den Fehler analysiert?
Mike Shultz
1
Der Fehler beklagt sich über die Objektklasse für cn = engineers, die "posixGroup" ist. Daraus lässt sich relativ leicht ableiten, in welchem ​​Schema diese Objektklasse definiert ist.
Larsks
1

Ich bin kürzlich auf dieses Problem gestoßen, als ich dem Ubuntu OpenLDAP Server-Tutorial gefolgt bin . Das Problem wurde behoben, indem alle nachgestellten Leerzeichen aus meinen Zeilen entfernt wurden.

jamzsabb
quelle
1
Vielen Dank dafür, ich hatte gerade mit diesem Fehler zu kämpfen!
TylerDurden
1

Ich file.ldifbehebe es, das zu löschen, das ich in openldap aufladen möchte (zum Beispiel:), data.ldifweil der Texteditor vimanchmal aus Versehen oder durch einen Fehler unsichtbare Zeichen einfügt und dies Ihre ldif-Datei beeinflusst. Also lösche es und erstelle ein neues und versuche, jede Aussage einzeln hochzuladen und überprüfe mit dem Befehl ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, auf Wiedersehen und ich hoffe, dir dabei zu helfen.

hansel1
quelle