Samba e Active Directory (3 di 3): configurare pam per l’autenticazione locale

samba

Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell’ultimo esempio illustrato l’esito dell’interrogazione presentava un elenco del tutto simile al contenuto del file /etc/passwd che in ogni sistema Linux contiene le informazioni di accesso degli utenti. La riflessione nata spontaneamente è quindi se si può fare in modo che il sistema sia configurato per supportare l’autenticazione via Active Directory in fase di login. La riposta è sì, ecco spiegato come.

Condividere una cartella

La configurazione illustrata nel primo articolo della serie consente di autenticare l’accesso a cartelle condivise mediante le credenziali presenti nel Active Directory.
Per condividere una cartella è sufficiente aggiungere al file di configurazione di SAMBA /etc/samba/smb.conf una dichiarazione come la seguente:

[Test]
        comment = Test
        path = /samba/test
        write list = DOMINIO.IT/user1
        read list = @"DOMINIO.ITgruop1"
        read only = Yes
        browseable = Yes
        create mask = 0775
        directory mask = 0775

dopo aver effettuato il reload del servizio attraverso il comando:

$ /etc/init.d/samba reload

la directory, supponendo che l’indirizzo IP della macchina sia 192.168.0.100, sarà disponibile per l’accesso dalla rete all’indirizzo //192.168.0.100/Test. L’utente DOMINIO.ITuser1 (così andrà digitato alla schermata di login) avrà il permesso di scrittura mentre tutti gli utenti del gruppo DOMINIO.ITgroup1 potranno accedere in lettura alla condivisione.

Ma questa è solo la punta dell’iceberg. Come già detto, la configurazione di SAMBA permette di sfruttare il metodo di autenticazione in modo che il sistema stesso in fase di login si riferisca al dominio Active Directory.

PAM, brevemente

PAM (Pluggable Authentication Modules) definisce un metodo standard ad alto livello per gestire l’autenticazione. Questo strato è comune a tutti i sistemi Linux (sebbene le varie versioni non operino tutte allo stesso modo) e consente a coloro i quali sviluppano servizi con autenticazioni proprie di creare moduli che rispettino l’interfaccia di programmazione relativa a PAM.
In questo modo, potenzialmente, qualunque sistema di autenticazione può essere integrato con il login di sistema.
Una panoramica dettagliata di quello che è PAM e di come funziona è disponibile presso Kernel.org, precisamente a questo link: http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html.

Integrazione di winbind con PAM per il login via Active Directory

La configurazione di PAM all’interno del sistema è contenuta in una serie di file, in Debian Lenny, la distribuzione utilizzata in questa serie di articoli, tali file si trovano nella cartella /etc/pam.d:

$ ls -1 /etc/pam.d/
chfn
chsh
common-account
common-auth
common-password
common-session
cron
login
omauth
other
passwd
samba
ssh
su

In particolare i file interessati nella fase di login sono common-account, common-auth e common-session.

La componente SAMBA che gestisce l’interfacciamento con Active Directory è, come già spiegato, winbind. Il pacchetto fornito con le maggiori distribuzioni fornisce, fra gli altri, quello che è il file base per l’introduzione di Active Directory nel login di sistema: pam_winbind.so. Tale file dovrà essere introdotto all’interno della configurazione del sistema di login.

Il primo file ad essere modificato dovrà essere /etc/pam.d/common-account il cui contenuto dovrà essere il seguente:

account sufficient      pam_winbind.so
account required        pam_unix.so

Questo file di default controlla che la password dell’utente non sia scaduta. Con l’aggiunta della riga relativa a winbind inoltre assume come sufficiente la credenziale verificata da Active Directory.

Il secondo file da considerare sarà /etc/pam.d/common-auth che di default impone l’utilizzo del meccanismo UNIX standard per l’autenticazione. Tale file dovrà assumere questo contenuto:

auth    sufficient      pam_winbind.so
auth    required        pam_unix.so nullok_secure use_first_pass

Quanto inserito comunica al sistema di considerare sufficiente l’avvenuta autenticazione con winbind. Nella seconda riga viene aggiunto il parametro use_first_pass in modo che venga utilizzata la prima password inserita per autenticare l’utente e prevenire una doppia richiesta di inserimento per la parola d’ordine.

L’ultimo file che andrà modificato è /etc/pam.d/common-session che contiene le informazioni relative alle sessioni interattive e non che l’utente potrà avviare:

session required        pam_unix.so
session required        pam_mkhomedir.so skel=/etc/skel umask=0022

rispetto al default viene aggiunta la riga relativa al modulo pam_mkhomedir.so per fare in modo che il sistema per ogni utente identificato che non possiede una home directory ne crei una ex-novo partendo dalle specifiche presenti nel file di /etc/skel con i permessi di scrittura relativi.

Prova di login

A questo punto il sistema è pronto a permettere il login alle utenze Active Directory, relativamente a tutti i servizi, compreso ssh:

$ ssh "DOMINIO.IT\user1"@192.168.0.100
DOMINIO.ITuser1@192.168.0.100's password: 
Creating directory '/home/DOMINIO.IT/user1'.
Linux anomalia 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
DOMINIO.IT\user1@anomalia:~$

Essendo il primo tentativo di login effettuato e data la configurazione PAM precedentemente illustrata, il sistema ha creato la directory /home/DOMINIO.IT/user1.
Nella cartella /home/DOMINIO.IT verranno pertanto registrate tutte le home directories relative agli utenti:

$ ls -la /home/DOMINIO.IT/
totale 12
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 .
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 ..
drwxr-xr-x 2 DOMINIO.IT\user1 DOMINIO.IT\domain users 4096  9 apr 17:32 user1

L’accesso al sistema degli utenti Active Directory è garantito nella stessa medesima forma degli utenti di sistema standard.

Conclusioni

Questa panoramica di SAMBA ha voluto illustrare quello che è lo stato dell’arte dell’integrazione tra SAMBA e Microsoft Active Directory ad oggi, ma moltissime sono le novità che bollono in pentola dal team di sviluppo del progetto Samba. La versione 4 è ormai una realtà e sebbene la strada verso la prima release stabile sia lunga, le aspettative in merito sono altissime. Questa versione sarà la prima ad integrare la completa gestione di Active Directory ed un’altra serie di importanti novità che potranno, perché no, essere argomento di un prossimo articolo.

Articoli della serie

Samba e Active Directory (1 di 3): diventare parte di un Dominio
Samba e Active Directory (2 di 3): interrogare il dominio
Samba e Active Directory (3 di 3): configurare pam per l’autenticazione locale

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Tags: , ,