Articolo di Fulvio Ferroni
adattato per OS.
http://didattica.swlibero.org/docs/linuxmagazine/ferroni24.html
In questo articolo voglio affrontare una problematica un po' particolare ma secondo me molto interessante: l'integrazione di una macchina Linux (ovviamente equipaggiata con Samba) in un dominio NT o in una active directory Windows 2000 grazie all'utilizzo di Winbind.
Per integrazione qui intendo l'eventualità che la macchina Linux entri a far parte effettivamente del dominio o della active directory ma anche e soprattutto che l'autenticazione degli utenti Linux (attenzione: utenti Linux, non utenti Samba) avvenga presso il Primary Domain Controller Windows.
Credo che questa possibilità sia molto interessante in quelle situazioni in cui si voglia introdurre Linux in un ambiente di rete già consolidato su piattaforma Windows, senza dover essere costretti a ridefinire tutti gli utenti nel nuovo ambiente.
Il contesto cui faccio riferimento è una rete scolastica, visto che è nelle scuole che svolgo la mia attività professionale, ma la soluzione prospettata può essere validamente attuata anche in altri ambienti.
Immagino già le obiezioni dei "puristi" circa l'opportunità di "convivere con il nemico" anziché sostituire i prodotti proprietari con software libero, da preferire per i motivi etici, filosofici, didattici, economici già più volte illustrati nelle pagine di questa rivista; il fatto è che molte volte questo non è possibile, o almeno non "subito". In certi casi è necessario almeno un periodo di "affiancamento" nel quale introdurre gradualmente Linux ed il software libero anche per permettere che nel frattempo si formi e si diffonda una "cultura" sufficiente per l'uso proficuo e la gestione di questi strumenti.
La procedura qui esposta è stata usata su una RedHat 7.3 ma è applicabile anche su altre distribuzioni.
Dalla versione 8.0 RedHat permette di configurare il login su un dominio NT direttamente tramite il comando custom authconfig
, rendendo queste operazioni decisamente più semplici.
CONFIGURARE GLI STRUMENTI NECESSARI
Winbind è un nuovo software entrato a far parte dell'insieme degli strumenti della suite Samba dalla versione 2.2.2 ed è contenuto nel pacchetto rpm samba-common. Ne fanno parte 2 librerie per il Name Service Switch (nsswitch) e il Pluggable Authentication Modules (PAM), un programma di utilità, wbinfo
ed un demone, winbindd
, che permettono agli utenti di accedere alla macchina Linux (e a quei servizi che prevedono l'autenticazione PAM) usando le informazioni di account già presenti in un Domain Controller Windows.
Più in dettaglio winbindd fornisce informazioni su utenti e gruppi NT a nsswitch che è un servizio presente ormai in tutte le moderne librerie C e che permette di ottenere i dati relativi ad utenti, gruppi ed host da vari tipi di fonti diverse (NIS, DNS e adesso anche Winbind); il servizio di autenticazione viene invece garantito dalla presenza di un apposito modulo PAM.
Vediamo le operazioni da compiere per raggiungere il risultato voluto (le prove sono state fatte su una macchina Linux con RedHat 7.3, Samba 2.2.3, inserita in una rete gestita da un PDC NT 4.0 denominato ANDREA:
1) Modifiche a smb.conf
Nel file di configurazione di Samba /etc/samba/smb.conf
, inserire nella sezione [global]
le seguenti direttive:
; nome del dominio NT
workgroup name = PALLADIO
; gestione password criptate
encrypt password = yes
; impostazioni sul server PDC
security = domain
password server = *
; impostazioni per il demone winbindd
winbind separator = +
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template shell = /bin/bash
template homedir = /home/%D/%U
Qualche commento sulle opzioni che permettono di configurare il demone winbindd:
con winbind separator
si imposta il carattere con cui si combinano nome di dominio e nome utente NT in modo da formare il nome utente Linux; è consigliato scegliere un carattere diverso da quello di default "\" che può dare problemi in quanto ha un significato speciale nella shell; la scelta del carattere "+" dovrebbe essere la migliore.
winbind uid
e winbind gid
permettono di impostare i range di ID utenti e gruppi che winbind utilizza per "rimappare" gli utenti e gruppi windows in utenti e gruppi Linux.
winbind enum users
e winbind enum groups
permettono di attivare l'enumerazione di gruppi e utenti.
template shell
e template homedir
permettono di definire rispettivamente la shell e la home directory degli utenti; si noti l'uso delle "variabili samba" %D = nome dominio NT e %U = nome utente NT (nel caso in esame l'utente PALLADIO+pippo avrà come home directory /home/PALLADIO/pippo).
2) Modifiche a nsswitch.conf
Nel file /etc/nsswitch.conf
, contenente la configurazione del servizio nsswitch, occorre aggiungere winbind tra le sorgenti dei dati riguardanti utenti e gruppi.
Quindi le relative righe, che solitamente appaiono nel seguente modo:
passwd: files
group: files
devono divenire:
passwd: files winbind
group: files winbind
L'ordine con cui vengono elencate le fonti è significativo e in questo caso viene opportunamente lasciata la priorità nel reperimento delle informazioni ai file di sistema (passwd e group).
3) Modifiche ai file di configurazione del PAM
Questa è la fase più delicata e "pericolosa": operazioni maldestre compiute sui file di configurazione contenuti in /etc/pam.d/
, possono condurre all'impossibilità di effettuare il login o a permettere a tutti di entrare senza password o ad altri inconvenienti simili. E' quindi opportuna una copia dei file che ci si accinge a modificare ed è anche consigliabile tenersi aperta una task di riserva come "root" in modo da poter tornare sui propri passi in caso i test non diano esiti positivi.
Sarebbe inoltre opportuno un approfondimento circa l'uso del PAM che è uno strumento molto versatile e potente ma che non è possibile effettuare in questa sede.
Vediamo quindi solo le modifiche che ho apportato nell'ambito delle mie prove:
nel file /etc/pam.d/system-auth
ho aggiunto la riga
auth sufficient /usr/lib/security/pam_winbind.so
dopo la prima riga auth già presente e ho trasformata la riga
auth sufficient /lib/security/pam_unix.so likeauth nullok
in
auth sufficient /lib/security/pam_unix.so likeauth nullok use_first_pass
nel file /etc/pam.d/login
ho aggiunto le seguenti due righe, rispettivamente come prima riga account e come ultima riga session required:
account sufficient /lib/security/pam_winbind.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
In particolare l'ultima è molto interessante in quanto fa si che venga creata automaticamente la home directory dell'utente nel momento in cui questo si collega per la prima volta alla macchina Linux; facendo riferimento alle impostazioni illustrate in precedenza, nel momento in cui si collega l'utente PALLADIO+pippo viene creata la sua home directory /home/PALLADIO/pippo (questo naturalmente se e solo se la directory /home/PALLADIO già esiste).
Un'ultima osservazione circa la modifica al file system-auth; essendo la sua configurazione usata in molti altri file di configurazione di PAM (e non solo in login) attraverso il modulo pam_stack, può essere una buona idea lasciarlo inalterato, copiarlo e modificare la copia nominandola ad esempio system-auth-winbind. Ovviamente i riferimenti al file system-auth contenuti nel file login dovranno essere opportunamente modificati.
4) Attivazione e test
Occorre prima di tutto inserire la macchina Linux nel dominio NT agendo sul server NT con il Server Manager ed eseguendo su Linux il seguente comando:
smbpasswd -j PALLADIO -r ANDREA -U Administrator
Se tutto va bene dopo aver digitato la password (che Administrator ha su NT) si ottiene il messaggio:
Joined domain PALLADIO
A questo punto si possono attivare i servizi smb e winbind e testare il buon funzionamento di quest'ultimo con i comandi
wbinfo -u
wbinfo -g
per ottenere rispettivamente l'elenco degli utenti e dei gruppi del dominio.
E' anche possibile avere un elenco di tutti gli utenti e gruppi sia quelli del dominio che quelli "nativi" di Linux con i comandi:
getent passwd
getent group
Infine si può procedere alla prova più importante cioè quella di accreditamento sulla macchina Linux di un utente già esistente nel dominio NT; al login si scrive il nome utente secondo la sintassi stabilita (nel nostro caso "PALLADIO+pippo" ) e la password di quell'utente nel dominio NT.
Nel mio caso, al login appare un messaggio di errore: "[: too many arguments" abbastanza misterioso; non sono riuscito a stabilirne l'origine anche dopo ricerche in Internet, comunque non influisce in alcun modo sul buon esito delle operazioni effettuate dall'utente.
E' anche possibile ottenere l'accreditamento degli utenti per altri tipi di servizi a patto che questi abbiano il supporto per il PAM; ad esempio nella macchina oggetto delle prove era attivo il login grafico con gdm e per ottenere che il meccanismo funzionasse anche in questa modalità è stato necessario aggiungere al file /etc/pam.d/gdm
la linea:
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
CONCLUSIONI
Grazie all'uso di Winbind in associazione con gli altri strumenti di Samba gli amministratori di rete hanno la possibilità di far convivere piattaforme diverse sfruttando il data base di utenti e gruppi definito in un preesistente ambiente Windows.
Questa è una ulteriore conferma della bontà della scelta di GNU/Linux, e del software libero in generale, a livello di "apertura" e di possibilità di integrazione tra ambienti diversi. E' inoltre una conferma dell'attenzione che gli sviluppatori di questi programmi dedicano a tali argomenti e del grande vantaggio che in questo settore il software libero ha nei confronti di molto software proprietario che molto spesso è caratterizzato da soluzioni chiuse se non addirittura "blindate".
Casi e situazioni comuni con rete miste Windows-Linux - WINS - PDC.
iscrizione
Vorrei fare iscrizione a winbind per giocare ai cavalli, attendo indirizzo del sito, grazie Mario
RispondiRe: Possibilità....
Con Suse, usando Yast, la cosa dovrebbe essere semplice. Basta modificare con Yast le impostazioni relative alla autenticazione degli utenti. Tutta la procedura di configurazione manuale qui descritta viene fatta automaticamente.
RispondiPossibilità di eseguire il medesimo lavoro con ditribuzione Suse
Io dovrei eseguire il lavoro che è stato descritto qui a lato, volevo sapere se è possibile eseguire lo stesso lavoro con la distribuizione SuSe 9.2 senza avere troppi problemi, oppure se i comandi per l'esecuzione delle cose cambiano...grazie
RispondiRe: Citare l'autore
La fonte è stata citata (parte Risorse su Internet). C'è probabilmente stato un malinteso (citare le fonti sono un prerequisito minimo a cui cerchiamo di attenerci sempre) e, oltretutto, non si usano mai articoli di terzi senza accordi preventivi.
Cmq, scusa se la fonte originaria è poco chiara e d'accordo con Sky procediamo con le correzioni del caso.
Citate l'autore
Sono l'autore dell'articolo in oggetto (vedere: http://didattica.swlibero.org/docs/linuxmagazine/ferroni24.html); non ho niente in contarario sul fatto che ne venga fatto qualsiasi uso, mi sembrerebbe però corretto citare sempre la fonte originale
RispondiLogin very very incorrect
Molto interessante tutto quanto, ma non funzia...
Dopo molti tentativi e altrettanta ansia, desistiamo. Grazie cmq....
Mi rispondo (in parte) da solo...
Per evitare di dover digitare anche il NOME_DOMINIO, basta mettere nel file smb.conf la direttiva "winbind use default domain = true".
Per quanto riguarda le condivisioni delle cartelle degli utenti, invece, continuo ad avere qualche problema, perché gli utenti che si loggano non diventano superuser del PC Linux e non riescono a fare il mount; e non posso neanche mountare la cartella //server/utenti a priori, perché non so con quale utente ci si loggherà al PC (e quindi con quali diritti qualificarsi presso il server NT...)
Grande!
Finalmente, dopo diversi giorni di ricerche, sono approdato a questo articolo che ha quasi risolto quello che vorrei fare...
L'autenticazione funziona, ma mi piacerebbe evitare di dover inserire l'utente digitando anche il nome del dominio (NOME_DOMINIO+NOME_UTENTE), e assumendo quindi che il nome del dominio venga preso di default (tanto sulla macchina Linux non ci saranno utenti locali, oltre a root).
Altra cosa interessante sarebbe quella di poter montare su /home la condivisione delle cartelle utenti (//server/utenti), in modo che chi si logga veda già i suoi documenti presenti sul server. Purtroppo qui ho trovato qualche difficoltà, sia perché il mount va fatto come root (e mi andrebbe bene a questo punto aggiungere una riga in /etc/fstab), sia perché non so con che utente autentificarmi per accedere alla risorsa condivisa del server: infatti l'utente di dominio (con cui sono entrato in Linux) riesce ad entrare nella sua cartella (dopo che la directory //server/utenti è stata montata, usando il suo username), ma non riesce a scrivere... sembra che solo root sia in grado di scrivere sulle directory montate con samba.
Suggerimenti?
Mai sentito parlare di SFU ?
Mai sentito parlare di SFU ?
Fa unacosa molto simile in ambiente MS
Tra l'altro da pochi giorni e' uscita anche l'ultima versione!
Mai sentito parlare di SFU ?
Mai sentito parlare di SFU ?
Fa unacosa molto simile in ambiente MS
Tra l'altro da pochi giorni e' uscita anche l'ultima versione!
Linux Panic!
Ho trovato questo box molto interessante, e naturalmente l' ho provato, passo passo, ma non funziona molto bene su Mandrake 8, Samba 2.2.3. Il problema è che con queste impostazioni non appena si riavvia linux non permette più il login da shell, sia locale che remoto (ad ogni tentativo di login, prima di richiedere la password, compare il messaggio "Login incorrect"), ma funziona accedendo alle cartelle condivise da una macchina Windows XP (il mio test è un po povero di risorse, ma ho solo 2 PC)