erlug
[Top] [All Lists]

[Erlug] mini ldap howto

To: erlug@xxxxxxxxxxxxxx
Subject: [Erlug] mini ldap howto
From: Maurizio Lemmo - Tannoiser <tann@xxxxxxxxx>
Date: Wed, 27 Mar 2002 19:23:52 +0100
PRE-PREMESSA:

Questo è un messaggio che ho mandato in altra ML, un pò di tempo fa.  Lo
recupero e posto così, come era, perchè non ho tantissima voglia di metterci
mano.

==========================================================================


Allora, in tempi non sospetti mi sono posto questo problema.

La risposta` c'e` e si chiama ldap, o nella sua incarnazione free,
openldap.

All'epoca il tema era: "come sassare fuori dai coglioni i signori lotus
notes dalla cgil, rimuovere un NT e installare linux quindi vivere
felici".

All'epoca l'unico nodo era appunto la "rubrica" condivisa (e aggiungo,
automagica).

Mi sono studiato la cosa, poi, non se ne fece nulla, ma conservo di
conseguenza qualche appunto.

Mini premessa aggiuntiva, non sto per dire cose clamorose ma solo
condivisione della lettura di openldap-howto e scambio di opinioni con
gente che lo usa.

---begin miniopenldap howto ma veriveriverimini

l'installazione di openldapd non dovrebbe essere particolarmente
problematica ma la macchina di prova su cui avevo testato/tentato cose
e` una macchina nota per avere problemi HW (eehehe) quindi ogni tanto mi
fa dei casini.

Ci gira sopra debian, e il debconf fece un po` di casino con il nome
server.
Per scrupolo ad installazione avvenuta, controllate che ci sia una riga
di questo tipo in /etc/openldapd/slapd.conf:

 suffix          "dc=pippo,dc=it"

ovvero il nome della macchina ;-)

ldap e` gerarchico "alla dns" e le informazioni, di base vengono
"retrivate" mediante il comando (utility) ldapsearch.

Ho perso tempo per niente quando mi sono accorto che non configuravo i
dati di default per i client ergo:

cat /etc/openldapd/ldap.conf
HOST pippo.it
PORT 389
BASE dc=pippo, dc=it

NOTA: ldap, ovvero lotus notes speravo di averlo buttato fuori dalla
porta andando via da teorema, invece mi e` rientrato dalla finestra. il
mio mutt fa interrogazioni al server ldap (lotus notes) in ritram,
mediante le utility ldapsearch e uno scriptazzo (non mio, ma che ho
dovuto modificare perche` non funzava - se serve posto), solo per il
gusto di poter usare e mutt e il completamento automagico della rubrica
condivisa.

ldapsearch e` lo strumentone che vi permette di consultare tutto il
server ha i soliti ventimila switch e opzioni.

Mi ero scritto questo:

con -s sub  che indica di  mostrare tutto 
l'albero ldap, e -L usa il formato ldif (quello rfc):

$ ldapsearch -L -s sub objectclass=\*
dn: dc=pippo, dc=it
objectclass: top
objectclass: domain
dc: badhouse

dn: ou=People, dc=pippo, dc=it
objectclass: top
objectclass: organizationalUnit
ou: People

dn: cn=admin, ou=People, dc=pippo, dc=it
objectclass: top
cn: admin

dn: ou=Roaming, dc=pippo,dc=it
objectclass: top
objectclass: organizationalUnit

Nota: le  ultime 3 righe dovrebbero riferirsi  al Netscape Directory 
Server che contiene gli indirizzi email (tipo bigfoot).

Nota2: si puo` visualizzare  l'albero ldap con una maggiore chiarezza 
con il programma (gtk) `gq'.

Si devono modificare sia /etc/nsswitch.conf sia /etc/pam_ldap.conf e sia
/etc/libnss-ldap.conf.

In documentazione c'e` scritto tutto direi, cmq:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

per nsswitch.conf e:

# ip del server ldap, che qui e` quello locale
host 127.0.0.0
# nome dell'host ldap-izzato
base ,dc=pippo,dc=it

per pam_ldap.conf e libnss-ldap.conf, cmq guaradateci.

ovviamente ldap permette di fare anche autenticazione e cosi` e`
possibile lavorare su /etc/pam.d/login per permettere l'autenticazione
ldap. more news sulla documentazione (spesso inguardabile) delle pam.

a questo punto si puo` anche testare. un bell'utente di prova con
password ad hoc:

$ mkpasswd -v prova
spawn passwd prova
passwd: Only root can specify a username
password for prova is 7xioeCI5q

La creazione dell'utente ldap, sia a fini d'autenticazione che ad uso
address book, che era poi quello che interessava a me e` la vera cosa
complicata dovendo essere assolutamente aderenti alle specifiche.

La soluzione IMHO e` automatizzarla. I dati li avevo presi dai Migration
Tools che ci sono sul sito www.padl.com. Comunque per provare si puo`
passare un file ldif con il comando ldapadd:

$ cat > /tmp/prova.ldif <<EOF
dn: uid=prova,ou=People,dc=pippo,dc=it
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
uid: prova
cn: prova
userPassword: {crypt}mdbhk7cG6ojsY
shadowLastChange: 11232
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1200
gidNumber: 100
homeDirectory: /home/prova
gecos: Utente di prova
EOF

Nota: shadowlastchange e`  la data di immissione di  questo utente in
giorni  dal  1-1-1970  (mi  pare). Poi si passa questo  file al server
ldap per  mezzo del comando ldapadd con  -D nome-ldap-admin e -W per la
password (quella di admin-ldap nell'installazione):

$ ldapadd -D cn=admin,ou=People,dc=pippo,dc=it -W -f \
 /tmp/prova.ldif
Enter LDAP Password:
adding new entry uid=prova,ou=People,dc=pippo,dc=it


Il gioco e` oramai fatto.
Ultime considerazioni; non ho visto un tool alla useradd, il che
comporta che per lavorare con gli utenti si deve giocoforza passare
dalle utils di ldap (ldapsearch, ldapadd, ldapmodify, ecc).

Se ci sono/fossero dei frontend il tutto sarebbe migliorabile, perche`
creare un file prova.ldif per ogni utente, due palle.

Non so se e come ci sono ma immagino che qualcosa ci sia, in realta` non
me ne sono pia` preoccupato.

il protocollo ldif e` uno standard documentato cosi` come ldap quindi
non credo che ci siano dei grossi problemi, cosi` come in definitiva,
non dovrebbe essere eventualmente troppo difficile cmq, crearsi un
script de caz (diciamo in perl) che ti faccia le domande e generi un
file in "formato" da passare poi a ldapadd (una sorta di
useradd-ldap.pl).

Come ho detto sono considerazioni veloci e appunti.

Hope userful.

ciao.

-- 
All your files have been destroyed (sorry).  Paul.

Maurizio - Tannoiser - Lemmo
STIGE Srl Servizi Informatici
Founder Member of ERLUG (Emilia Romagna Linux User Group)
http://erlug.linux.it


<Prev in Thread] Current Thread [Next in Thread>