## /etc/ldap.conf
##
## ::copy::
## ::maintainer::

# Il file /etc/ldap.conf viene usato dalle librerie nss
# per eseguire i lookup dei vari database di autenticazione
# e di configurazione della rete (/etc/nsswitch.conf).
#
# Questo file non e` da confondere con quello simile usato
# dai tools di OpenLDAP, che e` /etc/ldap/ldap.conf; la
# sintassi e` simile, il nome e` uguale, lo scopo essenzialmente
# lo stesso, ma sono due files diversi, e non e` garantito
# che in futuro la sintassi verra` mantenuta uguale.
#
# Quindi a scanso di problemi mantengo una copia separata
# di entrambi i files, anche se per ora le definizioni
# contenute sono simili.
#
# NOTA
# La documentazione (manpage) su ldap.conf riporta quella
# di OpenLDAP, non quello di nss. Per ora non ho trovato dove
# hanno nascosto la documentazione di *questo* file, immagino
# sia un mio problema, da qualche parte ci sara`.
# In ogni caso la documentazione di ldap.conf non riporta
# quasi nessuno dei parametri che e` possibile utilizzare,
# quindi i casi sono due: o ldap.conf di OpenLDAP ha molti
# meno parametri di quello di nss (ad esempio non esiste
# bind_timeout), oppure la manpage e` obsoleta.
# Al momento (2007.11.22) non ho approfondito la questione,
# modifichero` questi commenti appena l'avro` fatto.

# server ldap e base di default per tutte le ricerche; per
# minimizzare i problemi (DNS down) sarebbe bene usare un
# indirizzo invece che il nome logico per l'host
#
host ::ldap.server::
base ::ldap.base::

# timeout sulle ricerche
timelimit 20

# timeout sul tentativo di connessione al server
# senza questo timeout se il server non e` disponibile
# le queries attendono all'infinito
#
# NOTA
# ci sono problemi noti nell'uso di LDAP per l'autenticazione
# e non tutti sono risolvibili attraverso gli strumenti
# standard forniti tradizionalmente su unix/linux:
#
# . il server ldap puo' non essere raggiungibile perche`
#   e` down oppure la rete non e` attiva, in questo caso
#   probabilmente e` corretto che l'utente non abbia pieno
#   accesso alla sua workstation, ma dovrebbe essere possibile
#   accedere con un utente locale (ad esempio root o simile)
#   per eventuale manutenzione
#
# . configurando opportunamente PAM e` possibile forzare
#   l'autenticazione in modo che se questa ha successo a
#   livello locale (/etc/passwd) PAM non esegue lookup su
#   ldap; la documentazione fornita di solito non e` pero`
#   corretta, e la giusta sequenza per ottenere questo
#   risultato e` piuttosto contorta
#
# . sfortunatamente la cosa non vale per nss (/etc/nsswitch.conf)
#   in quando la sequenza classica (es: passwd  files ldap)
#   funziona correttamente per i database passwd e shadow, ma
#   NON per groups: infatti anche dopo un lookup locale andato
#   a buon fine (che dovrebbe TERMINARE la ricerca) le librerie
#   nss continuano la ricerca in cascata su tutti i db elencati;
#   il motivo e` che le ricerche su group sono in realta` due,
#   la prima per determinare l'esistenza del gruppo principale
#   di appartenenza dell'utente, e questa si ferma correttamente
#   se il lookup viene risolto in locale, la seconda e` una
#   ricerca estesa per determinare i gruppi aggiuntivi ai quali
#   appartiene l'utente. Una visione, a mio parere, distorta
#   della filosofia di questa ricerca fa si che l'implementazione
#   della libreria nss tenti una ricerca su *tutti* i database
#   definiti, sommando fra loro i risultati, invece che tentare
#   in sequenza i database e fermarsi al primo risultato positivo.
#   Questo, oltre a creare problemi di lookup in determinate
#   situazioni, e` anche formalmente sbagliato, in quanto MESCOLA
#   informazioni locali con quelle di rete, in contrasto con gli
#   altri tipi di lookup (sull'utente, o sulla password) dove
#   le informazioni locali SOSTITUISCONO quelle di rete.
#
# . in relazione al punto precedente, si crea una situazione
#   anomala, in quanto una macchina deve SEMPRE poter terminare
#   almeno le operazioni preliminari di boot (configurazione base
#   del sistema, mount delle principali periferiche, start dei
#   daemon di funzionamento base) anche in assenza di connettivita`
#   di rete; nel caso invece sia specificato il lookup su ldap
#   (in particolare su group) il sistema si blocca per un semplice
#   chown (operazione che viene fatta in piu` punti negli script
#   di startup base).
# 
#
# Impostare un timeout sulla connessione non risolve pienamente
# il problema ma almeno lo aggira, permettendo al sistema di
# continuare il boot dopo un periodo di attesa piu` o meno lungo.
#
# Al momento una soluzione migliore, da me adottata, e` quella
# di cancellare il file /etc/nsswitch.conf dal sistema appena
# possibile (attraverso uno script di startup sotto /etc/rcS.d)
# e di ripristinarlo solo dopo l'attivazione del network e il
# controllo che il server ldap sia effettivamente raggiungibile;
# la soluzione non e` ottimale, ma quella corretta sarebbe di
# modificare il comportamento delle librerie nss.
#
# 2009.09.21 lc01
#
# a quanto pare si sono accorti del problema del lookup dei gruppi,
# e nelle ultime versioni delle librerie LDAP hanno aggiunto la
# possibilita` di evitare il lookup per utenti definiti, vedi
# ''nss_initgroups_minimum_uid 10000'' in fondo a questo file
# 
bind_timelimit 10
bind_policy soft
network_timeout 10

# unix root -> ldap manager binding
#
# this is mandatory for tools like webmin or smbldap-tools to
# access ldap as managers, they doesn't use own configs for this
#
# password can be stored in /etc/ldap.secret (mode 600)
#rootbinddn cn=admin,dc=myorg
#
___ROOTBINDDN___


# NSS_LDAP SETTINGS

nss_base_passwd ou=::ldap.slot_users::,::ldap.base::
nss_base_group ou=::ldap.slot_groups::,::ldap.base::

# istruisce nss_ldap di ignorare il groups lookup per gli
# utenti che hanno uid inferiore a questo
# (kusa db: ldap.nss_initgroups_minimum_uid)
# in realta` viene usato dallo script /usr/sbin/nssldap-update-ignoreusers
# di Canonical richiamata da /etc/init.d/libnss-ldap
#
nss_initgroups_minimum_uid ::ldap.nss_initgroups_minimum_uid::

# the follwing line will be auto update by nssldap-update-ignoreusers
#
nss_initgroups_ignoreusers 

# /etc/ldap.conf END
