1.3. LDAP backend, oggetti e attributi

Il demone del server LDAP è chiamato Slapd. Slapd supporta una varietà di differenti database backends utilizzabili.

Essi includono come scelta primaria BDB, un database backend transazionale ad alte prestazioni; LDBM, un backend leggero basato su DBM; SHELL, un’interfaccia di backend per script di shell arbitrari e PASSWD, una semplice interfaccia di backend per il file passwd(5).

BDB utilizza Sleepycat Berkeley DB 4. LDBM utilizza Berkeley DB o GDBM.

Il backend transazionale BDB è adatto per l’accesso a database di lettura/scrittura in modalità multiutente, con qualunque mix di operazioni lettura/scrittura. BDB è usato nelle applicazioni che richiedono:

In questo documento si suppone che venga scelto il database BDB.

Per importare ed esportare le informazioni tra directory server basati su LDAP, o per descrivere un insieme di cambiamenti da apportare alla directory, si usa tipicamente il formato file LDIF (LDAP Data Interchange Format). Un file LDIF memorizza informazioni in strutture gerarchiche orientate agli oggetti. Il pacchetto di programmi di LDAP che si avrà è fornito di un programma di utilità per convertire i files LDIF in formato BDB.

Un file LDIF comune è simile a questo:


dn: o=TUDelft, c=NL
o: TUDelft
objectclass: organization
dn: cn=Luiz Malere, o=TUDelft, c=NL
cn: Luiz Malere
sn: Malere
mail: malere@yahoo.com
objectclass: person

Come si può vedere ogni voce è identificata unicamente in base a un nome distinto, o DN. Il DN è composto dal nome della voce più un percorso di nomi che risalgono dalla voce all’indietro fino in cima alla struttura gerarchica della directory (come in un albero).

In LDAP, una classe oggetto definisce la collezione degli attributi che possono essere usati per definire una voce. Lo standard di LDAP fornisce questi tipi base di classi oggetto:

Una voce può appartenere a più di una classe oggetto. Per esempio, la voce per una persona è definita dalla classe oggetto person, ma può anche essere definita dagli attributi delle classi inetOrgPerson, groupOfNames e organization. La struttura di classi oggetto del server (il suo schema) determina la lista totale degli attributi obbligatori e permessi per ogni singola voce.

I dati della directory sono rappresentati come coppie di attributi-valori. Qualsiasi informazione specifica è associata a un attributo descrittivo.

Per esempio, l’attributo commonName, o cn, è usato per immagazzinare il nome della persona. Una persona chiamata Jonas Salk può essere rappresentata nella directory come

cn: Jonas Salk

Ogni persona che è inserita nella directory è definita da una serie di attributi nella classe person. Altri attributi usati per definire questa voce potrebbero essere:


givenname: Jonas
surname: Salk
mail: jonass@airius.com

Gli attributi obbligatori includono gli attributi che devono essere presenti nella voce in quanto appartenenti ad una specifica classe. Tutte le voci richiedono l’attributo objcetClass, che elenca le classi cui l’oggetto appartiene.

Gli attributi consentiti includono gli attributi che possono essere presenti nelle voci che usano una classe oggetto. Per esempio, nella classe oggetto person, gli attributi cn e sn sono obbligatori. Gli attributi descrizione, telephoneNumber, seeAlso e userpassword sono consentiti ma non sono obbligatori.

Ogni attributo ha una corrispondente definizione di sintassi. La definizione di sintassi descrive il tipo di informazione fornita dall’attributo, per esempio:

Nota: di solito le definizioni delle classi oggetto e degli attributi risiedono nei file di schema, nella sottodirectory schema sotto la directory di installazione di OpenLDAP.