Il primo passo è migrare i gruppi, al solito si usano gli script di migrazione del pacchetto migrationtools, con lo script migrate_group.pl si effettua la migrazione dei gruppi; il comando da utilizzare è:
[root@havnor migrationtools]# ./migrate_group.pl /etc/group group.ldifche crea le voci relative a tutti i gruppi presenti in /etc/group in group.ldif.
Il problema è che in /etc/group sono presenti anche tutti i gruppi di sistema (come mail, news, ecc.) che non ha senso migrare (e possono essere molto diversi da ditribuzione a distribuzione). Per questo motivo è opportuno modificare il file lasciando solo voci relative a gruppi effettivi; ad esempio per i gruppi personali degli utenti queste saranno della forma:
dn: cn=piccardi,ou=Group,dc=gnulinux,dc=it objectClass: posixGroup objectClass: top cn: piccardi userPassword: {crypt}x gidNumber: 1000mentre se abbiamo dei gruppi utilizzati come gruppi di lavoro avremo qualcosa del tipo di:
dn: cn=cvsusers,ou=Group,dc=gnulinux,dc=it objectClass: posixGroup objectClass: top cn: cvsusers userPassword: {crypt}x gidNumber: 103 memberUid: claudioc memberUid: dariar memberUid: diegods memberUid: francescog memberUid: marcop memberUid: paolomu memberUid: piccardi memberUid: riccardog memberUid: riccardom memberUid: simonepi
Una volta migrati i gruppi si potrà ripetere il procedimento con gli utenti, in questo caso lo script da utilizzare è migrate_passwd.pl, ed il comando usato è:
[root@havnor migrationtools]# ./migrate_passwd.pl /etc/passwd passwd.ldif
Anche in questo caso occorrerà provvedere ad eliminare dall'elenco tutti gli utenti di sistema (come root, daemon, ecc.) che di norma sono locali alle varie macchine e non devono (specie root) essere messi sul server. Un esempio di voce relativa ad un utente è la seguente:
dn: uid=simonepi,ou=People,dc=gnulinux,dc=it uid: piccardi cn::U2ltb25lIFBpY2NhcmRp objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$1$7IDw9Tn0$/QvjoR4CNuQptwLmtGIQA0 shadowLastChange: 11354 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1002 gidNumber: 1002 homeDirectory: /home/piccardi gecos: Simone Piccardi,,,
Una volta ripuliti entrambi i file si potrà passare alla immissione dei dati nell'elenco con il solito comando ldapadd, e cioè con i comandi:
ldapadd -x -D"cn=admin,dc=gnulinux,dc=it" -W -f group.ldif ldapadd -x -D"cn=admin,dc=gnulinux,dc=it" -W -f passwd.ldif
Dopo di che occorrerà abilitare il Name Server Switch a cercare l'informazione su LDAP; il primo passo è allora di modificare /etc/nsswitch.conf per abilitare la ricerca su LDAP, aggiungendo modificando le righe:
passwd: compat ldap group: compat ldap shadow: compat ldapdopo di che occorre settare /etc/libnss-ldap.conf per fargli mappare adeguatamente le informazioni sull'elenco con quelle che servono per i servizi, questo si fa con le righe:
nss_base_passwd ou=People,dc=chl,dc=it?one nss_base_shadow ou=People,dc=chl,dc=it?one nss_base_group ou=Group,dc=chl,dc=it?onee a questo punto si può verificare che le informazioni vengano viste correttamente con i comandi:
[root@havnor libpam-ldap]# getent passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh ... piccardi:x:1000:1000:Simone Piccardi,,,:/home/piccardi:/bin/bash claudioc:x:1001:1001:Claudio Cicali,,,:/home/claudioc:/bin/bash simonepi:x:1002:1002:Simone Piccardi,,,:/home/simonepi:/bin/bash ... [root@havnor libpam-ldap]# getent group root:x:0: daemon:x:1: bin:x:2: ... piccardi:x:1000: claudioc:x:1001: simonepi:x:1002: ... [root@havnor libpam-ldap]# getent shadow root:$1$jjGU2TK$jHJVQBp/Xb6bmUBzmT7ubjY:11376:0:99999:7::: daemon:*:11376:0:99999:7::: bin:*:11376:0:99999:7::: ... piccardi:$1$jJfMgLtBSmTK$jHJVQEzgr8QT7ujYj1:11348::99999:7:::0 claudioc:$1$isjGU2$GdeXZwMBqklTK$jHJVGeaEY0:11354::99999:7:::0 simonepi:$1$tGFJd$GPmBp/XVQEzgr8Qb6bmUBzHxl:11354::99999:7:::0 ...
Verificato che le informazioni sono raggiunte in maniera corretta si può passare ai settaggi relativi a LDAP; anzitutto occorre le opzioni relative a PAM in ldap.conf, queste sono:
pam_filter objectclass=posixAccount pam_login_attribute uid pam_member_attribute gid pam_template_login_attribute uid pam_password crypt
Infine occorre predisporre per l'uso di pam-ldap i vari servizi; per ciascuno di essi PAM prevede la presenza di un file nella directory /etc/pam.d, per abilitare il supporto per l'autenticazione su LDAP vanno aggiunte le righe:
auth sufficient pam_ldap.so account sufficient pam_ldap.so session sufficient pam_ldap.so password sufficient pam_ldap.soprima13 delle equivalenti che usano pam_unix.so, in modo da utilizzare le informazioni su LDAP se ci sono, e altrimenti passare al meccanismo classico di autenticazione di Unix.