25.4. Gestione dei dati nella directory LDAP

OpenLDAP offre una serie di strumenti per l'amministrazione dei dati nella directory LDAP. I quattro strumenti più importanti per l'aggiunta, l'eliminazione, la ricerca e la modifica dei dati sono spiegati sinteticamente di seguito.

25.4.1. Inserimento dati in una directory LDAP

Una volta completata la configurazione del server LDAP in /etc/openldap/lsapd.conf (con le voci corrette per suffix, directory, rootdn, rootpw e index), procedere all'inserimento dei record. Per questa attività, OpenLDAP offre il comando ldapadd. Se possibile, aggiungere gli oggetti al database in gruppi per ragioni di ordine pratico. LDAP è in grado di elaborare il formato LDIF (LDAP data interchange format) a questo scopo. Un file LDIF è un semplice file di testo che può contenere un numero qualsiasi di coppie di attributo e valore. Per le classi e gli attributi oggetto disponibili, consultare i file di schema dichiarati in slapd.conf. Il file LDIF per la creazione di una struttura approssimativa per l'esempio della Figura 25.1, "Struttura di una directory LDAP" corrisponderà a quello dell'Esempio 25.7, "Esempio di file LDIF".

Esempio 25.7. Esempio di file LDIF

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]Codifica di file LDIF

LDAP funziona con UTF-8 (Unicode). Le dieresi devono essere codificate correttamente. Utilizzare un editor che supporti UTF-8, come Kate o le versioni recenti di Emacs. In caso contrario, evitare le dieresi o altri caratteri speciali, oppure utilizzare recode per ricodificare l'input in UTF-8.

Salvare il file con il suffisso .ldif, quindi passarlo al server con il seguente comando:

 
ldapadd -x -D <dn dell'amministratore> -W -f <file>.ldif 

-x disattiva in questo caso l'autenticazione con SASL. -D dichiara l'utente che chiama l'operazione. Il DN valido dell'amministratore viene immesso qui così come è stato configurato in slapd.conf. Nell'esempio corrente, si tratta di cn=admin,dc=suse,dc=de. -W consente di evitare l'immissione della parola d'ordine sulla riga di comando (in chiaro) e attiva un prompt separato per la parola d'ordine. Questa parola d'ordine è stata definita in precedenza in slapd.conf con rootpw. -f passa il nome del file. Per dettagli sull'esecuzione di ldapadd, vedere l'Esempio 25.8, "ldapadd con example.ldif".

Esempio 25.8. ldapadd con example.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif 

Enter LDAP password: 
adding new entry "dc=suse,dc=de" 
adding new entry "ou=devel,dc=suse,dc=de" 
adding new entry "ou=doc,dc=suse,dc=de" 
adding new entry "ou=it,dc=suse,dc=de"

I dati dei singoli utenti possono essere preparati in file LDIF distinti. L'Esempio 25.9, "Dati LDIF per Tux" aggiunge Tux alla nuova directory LDAP.

Esempio 25.9. Dati LDIF per Tux

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
objectClass: inetOrgPerson
cn: Tux Linux
givenName: Tux
sn: Linux
mail: tux@suse.de
uid: tux
telephoneNumber: +49 1234 567-8

Un file LDIF può contenere un numero qualunque di oggetti. È possibile passare al server tutte le diramazioni della directory oppure parti di essa come mostrato nell'esempio dei singoli oggetti. Se è necessario modificare alcuni dati con relativa frequenza, si consiglia una precisa suddivisione di singoli oggetti.

25.4.2. Modifica dei dati nella directory LDAP

Lo strumento ldapmodify consente di modificare i dati. Il modo più semplice per eseguire questa operazione è modificare il file LDIF corrispondente, quindi passarlo al server LDAP. Per modificare il numero di telefono del collega Tux da +49 1234 567-8 a +49 1234 567-10, modificare il file LDIF come nell'Esempio 25.10, "File LDIF tux.ldif modificato".

Esempio 25.10. File LDIF tux.ldif modificato

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

Importare il file modificato nella directory LDAP con il seguente comando:

ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

In alternativa, passare gli attributi da modificare direttamente a ldapmodify. La relativa procedura è descritta di seguito:

  1. Avviare ldapmodify e immettere la propria parola d'ordine:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  2. Immettere le modifiche rispettando rigorosamente la sintassi nell'ordine esposto di seguito:

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

Informazioni dettagliate su ldapmodify e la relativa sintassi sono presenti nella manpage ldapmodify(1).

25.4.3. Ricerca o lettura di dati da una directory LDAP

Con ldapsearch, OpenLDAP fornisce uno strumento di riga di comando per la ricerca e la lettura di dati all'interno di una directory LDAP. Un'interrogazione semplice avrà la seguente sintassi:

ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

L'opzione -b determina la base di ricerca, ovvero la sezione dell'albero all'interno della quale dovrà essere eseguita la ricerca. Nel caso corrente, si tratta di dc=suse,dc=de. Per eseguire una ricerca avanzata in sottosezioni specifiche della directory LDAP (ad esempio solo all'interno del reparto devel), passare questa sezione a ldapsearch con -b. -x richiede l'attivazione dell'autenticazione semplice. (objectClass=*) dichiara che devono essere letti tutti gli oggetti contenuti nella directory. Questa opzione di comando può essere utilizzata dopo la creazione di un nuovo albero di directory per verificare che tutte le voci siano state registrate correttamente e che il server risponda come desiderato. Ulteriori informazioni sull'utilizzo di ldapsearch sono disponibili nella manpage corrispondente (ldapsearch(1)).

25.4.4. Eliminazione di dati da una directory LDAP

Eliminare le voci superflue con ldapdelete. La sintassi è simile a quella dei comandi descritti in precedenza. Ad esempio, per eliminare l'intera voce relativa a Tux Linux specificare il seguente comando:

ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \
Linux,ou=devel,dc=suse,dc=de