Server OpenLDAP

LDAP è un acronimo per "Lightweight Directory Access Protocol", una versione semplificata del protocollo X.500. La directory impostata in questa sezione sarà usata per l'autenticazione. LDAP può comunque essere usato in diversi modi: autenticazione, directory condivisa (per i client mail), rubrica indirizzi. ecc...

Per descrivere LDAP velocemente, tutte le informazioni vengono archiviate in una struttura ad albero. Con OpenLDAP si ha la libertà di scegliere lo sviluppo dell'albero delle directory (il "Directory Information Tree", DIT). Per iniziare, si prende un esempio di un albero basilare con due nodi al di sotto della radice.

  • Il nodo «People» è dove i propri utenti vengono salvati

  • Il nodo «Groups» è dove i propri gruppi vengono salvati

Prima di iniziare, è necessario determinare quale sarà la radice della propria directory LDAP. In modo predefinito, l'albero sarà determinato dal proprio FQDN (Fully Qualified Domain Name), se il domino è "example.com" (usato in questo esempio), la radice sarà "dc=example,dc=com".

Installazione

Per prima cosa, installare il demone server OpenLDAP slapd e ldap-utils, un pacchetto contenente le utilità di gestione LDAP:

sudo apt-get install slapd ldap-utils

Il processo di installazione chiederà la password di amministratore della directory LDAP e la conferma.

Il suffisso della directory, in modo predefinito, corrisponde al nome del dominio del server. Per esempio, se il FQDN (Fully Qualified Domain Name) è ldap.example.it, il suffisso predefinito sarà dc=example,dc=it. Se è necessario averne uno diverso, la directory può essere configurata usando dpkg-reconfigure. In un terminale, digitare quanto segue:

sudo dpkg-reconfigure slapd

Viene visualizzato un dialogo di configurazione che consente di configurare diverse opzioni di slapd.

Configurazione

OpenLDAP utilizza un database separato che contiene il cn=config DIT (Directory Information Tree). Il cn=config DIT è usato per configurare dinamicamente il demone slapd, che consente la modifica delle definizioni schema, gli indici, ACL, ecc... senza dover fermare il servizio.

L'albero cn=config può essere manipolato usando le utilità presenti nel pacchetto ldap-utils. Per esempio:

  • Usare ldapsearch per visualizzare l'albero, inserendo la password dell'amministratore impostata durante l'installazione o la riconfigurazione:

    ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
    
    Enter LDAP Password: 
    dn: olcDatabase={1}hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {1}hdb
    olcDbDirectory: /var/lib/ldap
    olcSuffix: dc=example,dc=com
    olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=exampl
     e,dc=com" write by anonymous auth by self write by * none
    olcAccess: {1}to dn.base="" by * read
    olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * read
    olcLastMod: TRUE
    olcDbCheckpoint: 512 30
    olcDbConfig: {0}set_cachesize 0 2097152 0
    olcDbConfig: {1}set_lk_max_objects 1500
    olcDbConfig: {2}set_lk_max_locks 1500
    olcDbConfig: {3}set_lk_max_lockers 1500
    olcDbIndex: objectClass eq
    
    

    L'output precedente sono le opzioni della configurazione per il backend hdb del database che in questo caso contiene il suffisso dc=example,dc=com.

  • È possibile migliorare la ricerca fornendo un filtro che magari mostri solo quali attributi sono indicizzati:

    ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb olcDbIndex
    
    Enter LDAP Password: 
    dn: olcDatabase={1}hdb,cn=config
    olcDbIndex: objectClass eq
    
    
  • Come esempio per modificare un albero cn=config, aggiungere un altro attributo all'indice usando il comando ldapmodify:

    ldapmodify -x -D cn=admin,cn=config -W
    
    Enter LDAP Password:
    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: cn eq,pres,sub
    
    modifying entry "olcDatabase={1}hdb,cn=config"
    
    

    Una volta completata la modifica, premere Ctrl+D per uscire dall'utilità:

  • ldapmodify è anche in grado di leggere le modifica da un file. Copiare e incolalre quanto segue in un file chiamato uid_index.ldif:

    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: uid eq,pres,sub
    

    Eseguire ldapmodify:

    ldapmodify -x -D cn=admin,cn=config -W -f uid_index.ldif
    
    Enter LDAP Password: 
    modifying entry "olcDatabase={1}hdb,cn=config"
    
    

    Qusto metodo è molto utile per applicare grandi modifiche.

  • Aggiungere schemas aggiuntivi a slapd richiede di convertire lo schema nel formato LDIF ed è possibile farlo attraverso l'uso del programma slapd. L'esempio che segue, aggiunge lo schema misc.schema:

    1. Creare un file di conversione schema_convert.conf contenente le seguenti righe:

      include /etc/ldap/schema/core.schema
      include /etc/ldap/schema/collective.schema
      include /etc/ldap/schema/corba.schema
      include /etc/ldap/schema/cosine.schema
      include /etc/ldap/schema/duaconf.schema
      include /etc/ldap/schema/dyngroup.schema
      include /etc/ldap/schema/inetorgperson.schema
      include /etc/ldap/schema/java.schema
      include /etc/ldap/schema/misc.schema
      include /etc/ldap/schema/nis.schema
      include /etc/ldap/schema/openldap.schema
      include /etc/ldap/schema/ppolicy.schema
      
    2. Creare una directory temporanea in cui salvare l'output:

      mkdir /tmp/ldif_output
      
    3. Ora, usando slaptest, convertire i file schema in LDIF:

      slaptest -f schema_convert.conf -F /tmp/ldif_output
      

      Nel caso i nomi della directory temporanea e del file siano diversi, modificarli di conseguenza. Potrebbe essere comunque utile mantenere la directory ldif_output per aggiungere altri schema in un secondo momento.

    4. Aprire il file /tmp/ldif_output/cn=config/cn=schema/cn={8}misc.ldif e modificare i seguenti attributi:

      dn: cn=misc,cn=schema,cn=config
      ...
      cn: misc
      

      Rimuovere le seguenti righe dalla fine del file:

      structuralObjectClass: olcSchemaConfig
      entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
      creatorsName: cn=config
      createTimestamp: 20080826021140Z
      entryCSN: 20080826021140.791425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080826021140Z
      
      [Nota]

      I valori degli attributi possono variare, basta solo assicurarsi che gli attributi siano rimossi.

    5. In fine, usando l'utilità ldapadd, aggiugnere il nuovo schema alla directory:

      ldapadd -x -D cn=admin,cn=config -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{8\}misc.ldif
      

    Dovrebbe esserci una voce dn: cn={4}misc,cn=schema,cn=config nell'albero "cn=config".

Popolare LDAP

La directory è stata creata durante l'installazione e la riconfigurazione, ora è necessario popolarla. Verrà riempita con uno schema "classico", compatibile con le applicazioni di rubrica e con gli account Unix Posix. Gli account posix consentono l'autenticazione di varie applicazioni, come quelle web, applicazioni emal MTA (Mail Transfer Agent), ecc...

[Nota]

Affinché le applicazioni esterne possano autenticarsi via LDAP, è necessario che siano configurate a tal fine. Per come fare, fare riferimento alla documentazione di ogni singola applicazione.

Le directory LDAP possono essere popolate attraverso l'uso di file LDIF (LDAP Directory Interchange Format). Copiare l'esempio seguente, chiamandolo example.com.ldif, nel proprio sistema:

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

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: 1000
gidNumber: 10000
userPassword: password
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: john.doe@example.com
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress: 
initials: JD

dn: cn=example,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: example
gidNumber: 10000

In questo esempio sono stati impostati la struttura della directory, un utente e un gruppo. In altri esempi potrebbe essere possibile notare, in ogni voce, l'elemento objectClass: top, ma dato che è il comportamento predefinito, non è necessario inserirlo esplicitamente.

Per aggiungere delle voce alla directory LDAP, usare l'utilità ldapadd:

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

È possibile verificare che il contenuto è stato aggiunto correttamente con gli strumenti presenti nel pacchetto ldap-utils . Per eseguire una ricerca nella directory LDAP:

ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cn

dn: uid=john,ou=people,dc=example,dc=com
cn: John Doe
sn: Doe
givenName: John

Una semplice spiegazione:

  • -x: non usa il metodo di autenticazione, predefinito, SASL.

  • -LLL: disabilita la stampa di informazioni sullo schema LDIF.

Replicazione di LDAP

LDAP diventa spesso un servizio altamente critico all'interno della rete e diversi sistemi possono dipendere su LDAP per autenticazione, autorizzazioni, configurazione, ecc... In questi casi è molto utile impostare un sistema ridondante attraverso l'uso della replicazione.

La replicazione è ottenuta utilizzando il motore Syncrepl. Syncrepl consente alla directory di essere sincronizzata utilizzando un sistema push o pull. In una configurazione "push" un server «primario» eseguirà il "push" degli aggiornamento a un server «secondario», mentre un approccio "pull" consente la replicazione via sincronizzazione a intervalli di tempo.

Quello che segue è un esempio di una configurazione Multi-Master. In questo caso, il server OpenLDAP è configurato sia come replica di "push" che di "pull".

  1. Configurare il server affinché sincronizzi il database cn=config. Copiare quanto segue in un file chiamato syncrepl_cn-config.ldif:

    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: syncprov
    
    dn: cn=config
    changetype: modify
    replace: olcServerID
    olcServerID: 1 ldap://ldap01.example.com
    olcServerID: 2 ldap://ldap02.example.com
    
    dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
    
    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcSyncRepl
    olcSyncRepl: rid=001 provider=ldap://ldap01.example.com binddn="cn=admin,cn=config" bindmethod=simple
      credentials=secret searchbase="cn=config" type=refreshAndPersist
      retry="5 5 300 5" timeout=1
    olcSyncRepl: rid=002 provider=ldap://ldap02.example.com binddn="cn=admin,cn=config" bindmethod=simple
      credentials=secret searchbase="cn=config" type=refreshAndPersist
      retry="5 5 300 5" timeout=1
    -
    add: olcMirrorMode
    olcMirrorMode: TRUE
    
  2. Aprire il file modificando:

    • ldap://ldap01.example.com e ldap://ldap02.example.com con i nomi host dei propri server LDAP.

      [Nota]

      È possibile avere più di due server LDAP e quando viene applicata una modifica su uno, verrà sincronizzata con l'altro. Assicurarsi di incrementare il valore olcServerID per ogni server e rid per ogni voce olcSyncRepl.

    • Modificare credentials=secret con la propria password di amministratore.

  3. Aggiungere il file LDIF usando l'utilità ldapmodify:

    ldapmodify -x -D cn=admin,cn=config -W -f syncrepl_cn-config.ldif
    
  4. Copiare il file syncrepl_cn-config.ldif nel secondo server LDAP e ripetere il comando ldapmodify precedente.

  5. Poiché è stato aggiunto un nuovo modulo, il demone slapd, su tutti i server replicati, deve essere riavviato:

    sudo /etc/init.d/slapd restart
    
  6. Ora che il database di configurazione è sincronizzato tra i server, è necessario sincronizzare anche il backend del database. Copiare e incollare quanto segue in un file LDIF chiamato syncrepl_backend.ldif:

    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcRootDN
    olcRootDN: cn=admin,dc=example,dc=edu
    -
    add: olcSyncRepl
    olcSyncRepl: rid=003 provider=ldap://ldap01.example.com binddn="cn=admin,dc=example,dc=com" 
     bindmethod=simple credentials=secret searchbase="dc=example,dc=com" type=refreshOnly 
     interval=00:00:00:10 retry="5 5 300 5" timeout=1
    olcSyncRepl: rid=004 provider=ldap://ldap02.example.com binddn="cn=admin,dc=example,dc=com" 
     bindmethod=simple credentials=secret searchbase="dc=example,dc=com" type=refreshOnly 
     interval=00:00:00:10 retry="5 5 300 5" timeout=1
    -
    add: olcMirrorMode
    olcMirrorMode: TRUE
    
    dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
    
  7. Come per il file precedente, modificare:

    • searchbase="dc=example,dc=com" con la directory della searchbase.

    • Se si usa un utente di amministrazione diverso, modificare binddn="cn=admin,dc=example,dc=com".

    • Inoltre, sostituire credentials=secret con la propria password di amministrazione.

  8. Aggiungere il file LDIF:

    ldapmodify -x -D cn=admin,cn=config -W -f syncrepl_backend.ldif
    

    Poiché la configurazione dei server è già sincronizzata, non è necessario copiare questo file LDIF sugli altri server.

La configurazione e il backend dovrebbero ora essere sincronizzati. Nel caso sia necessario, è possibile aggiungere altri server usando l'utilità ldapmodify. Per maggiori informazioni, consultare la sezione chiamata «Configurazione».

[Nota]

Il demone slapd invia le proprie registrazioni verso /var/log/syslog, se qualche cosa non funziona correttamente, controllare lì per gli eventuali errori o altre informazioni utili alla risoluzione dei problemi.

Impostare ACL

L'autenticazione richiede accesso al campo della password che non dovrebbe essere accessibile in modo predefinito. Inoltre, affinché gli utenti possa cambiare la loro password usando passwd o altre utilità, shadowLastChange deve essere accessibile una volta che l'utente si è autenticato.

Per visualizzare l'ACL (Access Control List), usare l'utilità ldapsearch:

ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase=hdb olcAccess
Enter LDAP Password: 
dn: olcDatabase={1}hdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=exampl
 e,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * read

TLS e SSL

Durante la fase di autenticazione a un server OpenLDAP, è raccomandato usare una sessione cifrata. Questo può essere ottenuto usando TLS (Transport Layer Security) o SSL (Secure Sockets Layer).

La prima cosa da fare consiste nell'ottenere o creare un certificato. Per maggiori informazioni, consultare la sezione chiamata «Certificati» e la sezione chiamata «Autorità di Certificazione».

Una volta ottenuto un certificato, la chiave e si è installato il tutto, usare ldapmodify per aggiungere le nuove opzioni di configurazione:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/server.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/server.key

modifying entry "cn=config"

[Nota]

Modificare i nomi dei file server.crt, server.key e cacert.pem nel caso i propri siano diversi.

Aprire il file /etc/default/slapd e togliere il commento dall'opzione SLAPD_SERVICES:

SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"

Garantire accesso al certificato all'utente openldap:

sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/server.key
[Nota]

Se la directory /etc/ssl/private e il file /etc/ssl/private/server.key hanno permessi diversi, modificare i comandi secondo le proprie esigenze.

In fine, riavviare slapd:

sudo /etc/init.d/slapd restart

Il demone slapd dovrebbe ora essere in ascolto per le connessioni LDAPS e dovrebbe essere in grado di usare STARTTLS nella fase di autenticazione.

Replicazione TLS

Se è stato impostato Syncrepl tra i server è utile cifrare il traffico di replicazione usando TLS (Transport Layer Security). Per maggiori informazioni su come impostare la replicazione, consultare la sezione chiamata «Replicazione di LDAP».

Una volta impostata e configurata, seguire le istruzioni in la sezione chiamata «TLS e SSL». È comunque utile tenere in considerazione alcune delle possibili conseguenze:

  • La configurazione necessita di essere modificata su un server.

  • I percorsi al certificato e la chiave devono essere gli stessi in tutti i server.

In ogni server replicato: installare un certificato, modificare il file /etc/default/slapd e riavviare slapd.

Una volta configurato TLS su ogni server, modificare la replicazione cn=config inserendo quanto segue in un terminale:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password: 
dn: olcDatabase={0}config,cn=config
replace: olcSyncrepl
olcSyncrepl: {0}rid=001 provider=ldap://ldap01.example.com binddn="cn=admin,cn
 =config" bindmethod=simple credentials=secret searchbase="cn=config" type=refre
 shAndPersist retry="5 5 300 5" timeout=1 starttls=yes
olcSyncrepl: {1}rid=002 provider=ldap://ldap02.example.com binddn="cn=admin,cn
 =config" bindmethod=simple credentials=secret searchbase="cn=config" type=refre
 shAndPersist retry="5 5 300 5" timeout=1 starttls=yes

modifying entry "olcDatabase={0}config,cn=config"

Sistemare la replica del backend del database:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
replace: olcSyncrepl
olcSyncrepl: {0}rid=003 provider=ldap://ldap01.example.com binddn="cn=admin,dc=example,dc=
 com" bindmethod=simple credentials=secret searchbase="dc=example,dc=com" type=r
 efreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 starttls=yes
olcSyncrepl: {1}rid=004 provider=ldap://ldap02.example.com binddn="cn=admin,dc=example,dc=
 com" bindmethod=simple credentials=secret searchbase="dc=example,dc=com" type=r
 efreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 starttls=yes

modifying entry "olcDatabase={1}hdb,cn=config"

Se il nome host del server LDAP non corrisponde al FQDN (Fully Qualified Domain Name) nel certificato, potrebbe essere necessario modificare il file /etc/ldap/ldap.conf e aggiungere le seguenti opzioni TLS:

TLS_CERT /etc/ssl/certs/server.crt
TLS_KEY /etc/ssl/private/server.key
TLS_CACERT /etc/ssl/certs/cacert.pem

Riavviare slapd su ogni server:

sudo /etc/init.d/slapd restart

Autenticazione LDAP

Una volta ottenuto un server LDAP funzionante, i pacchetti auth-client-config e libnss-ldap consentono di configurare facilmente un client Ubuntu affinché utilizzi l'autenticazione LDAP. Per installare questi pacchetti, digitare:

sudo apt-get install libnss-ldap

Durante la fase di installazione un dialogo richiederà i dettagli relativi alla connessione al server LDAP.

Nel caso si commetta un errore durante l'inserimento delle informazioni, è possibile rieseguire la configurazione tramite il comando:

sudo dpkg-reconfigure ldap-auth-config

I risultati della configurazione possono essere visualizzati nel file /etc/ldap.conf. Se il server richiede delle opzioni non contemplate durante la fase di configurazione. modificare il file secondo le proprie esigenze.

Ora che libnss-ldap è configurato, abilitare il profilo auth-client-config LDAP digitando:

sudo auth-client-config -a -p lac_ldap
  • -a: applica il profilo specificato.

  • -p: nome del profilo da abilitare, disabilitare, ecc...

  • lac_ldap: il profilo auth-client-config parte del pacchetto ldap-auth-config.

Ora dovrebbe essere possibile eseguire l'accesso utilizzando le credenziali presenti nella directory LDAP.

Gestire utenti e gruppi

Il pacchetto ldap-utils contiene diverse utilità per la gestione di directory, ma le molte opzioni necessarie possono rendere queste utilità di difficile utilizzo. Il pacchetto ldapscripts contiene degli script configurabili per gestire facilmente utenti e gruppi LDAP.

Per installare il pacchetto, da un terminale:

sudo apt-get install ldapscripts

Aprire il file /etc/ldapscripts/ldapscripts.conf e togliere il commento o aggiungere quanto segue in base alle proprie esigenze:

SERVER=localhost
BINDDN='cn=admin,dc=example,dc=com'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=example,dc=com'
GSUFFIX='ou=Groups'
USUFFIX='ou=People'
MSUFFIX='ou=Computers'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

Creare il file ldapscripts.passwd per consentire l'accesso autenticato alla directory:

sudo sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
[Nota]

Sostituire «secret» con la password dell'amministratore LDAP.

Le applicazioni in ldapscripts sono ora pronte per la gestione delle directory. Quelli che seguono sono degli esempi sull'utilizzo di questi script:

  • Creare un nuovo utente:

    sudo ldapadduser mario example
    

    Viene creato un utente con UID mario e imposta il gruppo primario (GID) dell'utente a example

  • Cambiare la password di un utente:

    sudo ldapsetpasswd mario
    Changing password for user uid=mario,ou=People,dc=example,dc=com
    New Password: 
    New Password (verify): 
    
  • Eliminare un utente:

    sudo ldapdeleteuser mario
    
  • Aggiungere un gruppo:

    sudo ldapaddgroup qa
    
  • Eliminare un gruppo:

    sudo ldapdeletegroup qa
    
  • Aggiungere un utente a un gruppo:

    sudo ldapaddusertogroup george qa
    

    Dovrebbe essere possibile visualizzare un attributo memberUid per il gruppo qa con un valore di mario.

  • Rimuovere un utente da un gruppo:

    sudo ldapdeleteuserfromgroup george qa
    

    L'attributo memberUid dovrebbe ora essere rimosso dal gruppo qa.

  • Lo script ldapmodifyuser consente di aggiungere, rimuovere o replicare gli attributi di un utente. Lo script utilizza la stessa sintassi dell'utilità ldapmodify. Per esempio:

    sudo ldapmodifyuser george
    # About to modify the following entry :
    dn: uid=george,ou=People,dc=example,dc=com
    objectClass: account
    objectClass: posixAccount
    cn: george
    uid: george
    uidNumber: 1001
    gidNumber: 1001
    homeDirectory: /home/george
    loginShell: /bin/bash
    gecos: george
    description: User account
    userPassword:: e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk=
    
    # Enter your modifications here, end with CTRL-D.
    dn: uid=george,ou=People,dc=example,dc=com
    replace: gecos
    gecos: Mario Rossi
    

    L'utente gecos dovrebbe ora essere «Mario Rossi».

  • Un'altra utile caratteristica di ldapscripts è il sistema dei modelli. I modelli consentono di personalizzare gli attributi di un utente, gruppo e degli oggetti macchina. Per esempio, per abilitare il modello user aprire il file /etc/ldapscripts/ldapscripts.conf modificando:

    UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
    

    Diversi esempi sono disponibili nella directory /etc/ldapscripts. Copiare o rinominare il file ldapadduser.template.sample in /etc/ldapscripts/ldapadduser.template:

    sudo cp /etc/ldapscripts/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
    

    Modificare il modello per aggiungere gli attributi desiderati. In questo esempio viene creato un nuovo utente con una objectClass di inetOrgPerson:

    dn: uid=<user>,<usuffix>,<suffix>
    objectClass: inetOrgPerson
    objectClass: posixAccount
    cn: <user>
    sn: <ask>
    uid: <user>
    uidNumber: <uid>
    gidNumber: <gid>
    homeDirectory: <home>
    loginShell: <shell>
    gecos: <user>
    description: User account
    title: Employee
    

    Notare l'opzione <ask> utilizzata per il valore cn. Usando <ask> viene configurato ldapadduser per chiedere il valore dell'attributo durante la creazione dell'utente.

Sono presenti molti altri script nel pacchetto. Per un elenco completo usare il comando: dpkg -L ldapscripts | grep bin

Risorse

  • Per maggiori informazioni, consultare il sito web di OpenLDAP

  • Anche se un po' datata, un'ottima fonte di informazioni riguardo LDAP è LDAP System Administration di O'Reilly.

  • Il libro di Packt, Mastering OpenLDAP, è un'ottima fonte che copre anche le nuove versioni di OpenLDAP.

  • Per maggiori informazioni su auth-client-config, consultare la pagina di manuale: man auth-client-config.

  • Per maggiori informazioni riguardo il pacchetto ldapscripts, consultare le pagine di manuale: man ldapscripts, man ldapadduser, man ldapaddgroup, ecc...