Perché questo comando ldapadd si chiude con un errore "Sintassi non valida"?


15

Sono molto nuovo su openldap ma estremamente esperto nell'ambiente linux / unix. Sto cercando di configurare il mio primo ambiente openldap di prova usando la guida qui . Ho anche letto la maggior parte della guida per l'amministratore qui e devo ammettere che è molto da prendere.

Quindi seguendo la guida all'installazione di base di Ubuntu ho creato un file ldif che assomiglia a questo:

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

Ogni volta che ho provato ad aggiungerlo usando:

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

Ottengo il seguente errore:

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

I risultati in google per questo errore non forniscono alcun suggerimento utile. Cosa potrei fare di sbagliato qui?


Cosa succede se non hai il trattino nel tuo dominio? Potrebbe essere la causa ...
Nathan C

@NathanC proverà a cambiarlo adesso ...
hax0r_n_code

@NathanC stessa cosa ... la mia ipotesi è che non riesca a trovare posixGroup. Come posso effettuare una query per gli objectClasses disponibili ?
hax0r_n_code

@NathanC anche io non ho questa /etc/ldap/slapd.d/directory. Ho installato openldap dal sorgente.
hax0r_n_code

Non ho abbastanza familiarità con openldap per rispondere ... qualcun altro qui potrebbe essere però.
Nathan C

Risposte:


12

Il problema è senza dubbio la necessità di caricare lo nisschema nel server LDAP. La procedura dipende dal fatto che si stia utilizzando il slapd.conffile di configurazione legacy o la configurazione dinamica più recente ospitatacn=config e supportata da una slapd.ddirectory.

utilizzando slapd.conf

Avrai bisogno includedella definizione dello schema nel tuo slapd.confaggiungendo una linea lungo le linee di:

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

Questo presuppone che il nis.schema file si trovi in ​​quel percorso; in caso contrario, modificare il percorso in modo appropriato.

Dovrai riavviare slapd per attivare il nuovo schema.

utilizzando slapd.d

(Lo sto includendo per completezza, anche se non è direttamente pertinente alla tua attuale configurazione).

Per caricare uno schema in slapdse si utilizza la cn=configconfigurazione dinamica , è necessario utilizzare ldapadd. A seconda di come sono configurati i tuoi ACL, il comando potrebbe apparire così:

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

Ciò presuppone che la propria corsa slapddisponga di un ACL che consente l'autenticazione delle "credenziali peer" root. Se il problema persiste, è necessario fornire un DN e una password di bind appropriati utilizzando -De -W.

Non è necessario il riavvio in questo caso.


Grazie! Se avessi scaricato e installato l'ultima versione del openldapperché non dovrei essere configurato per l'uso slapd.d?
hax0r_n_code

Forse il programma di installazione utilizza automaticamente il file di configurazione legacy? In ogni caso la documentazione contiene istruzioni per la conversione da slapd.confa slapd.d.
Larks

Questa risposta è stata molto utile. Ho dovuto aggiungere alcuni schemi richiesti per farlo funzionare per me. Grazie per la risposta!
Senthil Kumar,

1
Come sapevi che mancava il nis.schema e non qualche altro schema? Come hai analizzato l'errore?
Mike Shultz,

1
L'errore si lamenta della classe di oggetti per cn = engineer, che è "posixGroup". Da questo è relativamente facile da capire in quale schema viene definito tale classe di oggetti.
Larsks,


1

Lo risolvo eliminando ciò file.ldifche voglio caricare in openldap (ad esempio:) data.ldifperché l'editor di testo a vivolte inserisce caratteri invisibili per errore o bug e questo influisce sul tuo file ldif. Quindi cancellalo e ne crei un altro e prova a caricare ogni istruzione uno per uno e controlla con il comando ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, arrivederci e spero di aiutarti con questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.