Capitolo 5. Creazione e manutenzione del database

Questa sezione spiega come generare un database slapd da zero. Ci sono due modi per creare un database. In primo luogo, si può creare il database on line usando LDAP . Con questo metodo si avvia semplicemente slapd e si aggiungono i campi usando il client LDAP di propria scelta. Questo metodo è valido per database relativamente piccoli (poche centinaia o migliaia di campi, secondo le proprie esigenze). Questo metodo funziona per i tipi di database che supportano gli aggiornamenti.

Il secondo metodo di creazione del database è farlo off-line usando programmi di utilità speciali forniti da slapd. Questo metodo è il migliore se si devono creare molte migliaia di campi, che richiederebbe un tempo inaccettabilmente lungo usando il metodo LDAP, o se si desidera assicurare l'inaccessibilità del database in fase di creazione. Si noti che non tutti i tipi di database supportano queste utilitità.

5.1. Creazione di un database on line

ll pacchetto di programmi OpenLDAP, è munito di una utilità denominata ldapadd, usata per aggiungere i campi durante il funzionamento del server LDAP. Se si sceglie di creare il Database on line, si può utilizzare lo strumento ldapadd per aggiungere i campi (si possono anche usare altri client forniti fuori dal pacchetto OpenLDAP per aggiungere i campi, come il Browser Ldap). Dopo l'aggiunta dei primi campi, si può ancora usare ldapadd per aggiungerne ancora. Bisogna essere sicuri di aver messo le seguenti opzioni di configurazione sul proprio file sladp.conf prima di far partire slapd:

suffix <dn> 

Come descritto nella la Sezione 3.4, questa opzione comunica quali campi devono essere tenuti da questo database. Bisogna impostare questo al DN della radice del sotto-albero che si sta provando a generare. Per esempio:

suffix "o=TUDelft, c=NL" 

Si dovrebbe essere sicuri di specificare una directory in cui i file di indice verranno creati:

directory /usr/local/tudelft 

Bisogna generare questa directory con i permessi appropriati, così che lo slapd possa scrivere in essa.

Bisogna configurare slapd in modo da poterlo connettere come utente della directory con permesso di aggiungere oggetti. Si può configurare la directory per supportare uno speciale super-utente o utente root, proprio per questo fine. Ciò è fatto con le seguenti due opzioni nella definizione del database:


rootdn <dn> 
rootpw <passwd>   /* Remember to use a SHA password here !!! */ 

Queste opzioni specificano un DN e una password che possono essere usati per autenticarsi come campo "superutente" nel database (cioè, l'oggetto che può fare tutto). Il DN e la password specificati qui funzioneranno sempre, senza verificare se l'oggetto chiamato realmente esiste o abbia la password data. Questo risolve il problema dell'uovo e della gallina , cioè quello di autenticare ed aggiungere gli oggetti prima che tutti gli oggetti tuttavia esistano.

Slapd capisce nativamente se si usa una password cifrata SHA-1 sulla direttiva rootpw. Io uso una classe Java che genera le password SHA-1, ma è possibile usare il comando slappasswd per generare le password:

slappasswd -h {SHA}
rootpw    "{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ="

Per esempio:


        rootdn "cn=Manager,dc=example,dc=com"
        rootpw "{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ="

L'output di default per slappasswd è di generare password Secure Hash {SSHA}, in questo caso non è necessario passare il parametro -h, solo chiamare direttamente slappasswd.

Se si sta usando SASL come meccanismo di autenticazione verso LDAP, la linea del rootpw può essere scartata. Dare uno sguardo sulla la Sezione 3.4 e sulla la Sezione 6.2 per maggiori dettagli.

Per concludere, dovreste assicurarvi che la definizione di database contenga le definizioni di indice desiderate:

index {<attrlist> | default} [pres,eq,sub,none] 

Per esempio, per indicizzare gli attributi cn, sn, uid e objectclass, possono essere usate le seguenti linee di configurazione dell'indice.


index cn,sn,uid pres,eq,sub
index objectClass pres,eq

Nota:Si noti che non tutti i tipi di indice sono disponibili con tutti i tipi di attributo. Si dia uno sguardo su la Sezione 3.6 per gli esempi.

Una volta che si sono configurate le cose a proprio gradimento, avviare slapd, collegarsi con il proprio client LDAP, e iniziate ad aggiungere gli oggetti. Per esempio, per aggiungere il campo TUDelft seguito da un campo postmaster per mezzo dello strumento ldapadd, si può creare un file denominato /tmp/newentry contenente:


o=TUDelft, c=NL 
objectClass=organization 
description=Technical University of Delft Netherlands 

cn=Postmaster, o=TUDelft, c=NL 
objectClass=organizationalRole 
cn=Postmaster 
description= TUDelft postmaster - postmaster@tudelft.nl 

e poi usare un comando come questo per creare realmente l'oggetto:

ldapadd -f /tmp/newentry -x -D "cn=Manager, o=TUDelft, c=NL" -w secret 

Il precedente comando suppone che si sia impostato il rootdn a "cn=Manager, o=TUDelft, c=NL" e rootpw a "segreto" (forse SHA-1 cifrato su slapd.conf). Se non si vuole scrivere la password sulla linea di comando, usare l'opzione -W per il comando ldapadd invece di -w "password". Comparirà la richiesta di digitare la password:


ldapadd -f /tmp/newentry -x -D "cn=Manager, o=TUDelft, c=NL" -W 
Enter LDAP Password: