Inserisci Infobox

Reti miste Windows - Linux

Casi e situazioni comuni con rete miste Windows-Linux - WINS - PDC.

Esempio di smb.conf per un Primary Domain Controller
Autore: al - Ultimo Aggiornamento: 2005-04-29 11:10:09 - Data di creazione: 2004-10-28 21:14:34
Tipo Infobox: SAMPLE - Skill: 3- INTERMEDIATE

Segue un esempio di configurazione di un PDC di un dominio NT4 che agisce anche da Master Browser e Wins Server.

[global]
        workgroup = LAB42
        server string = Samba Server PDC
        log file = /var/log/samba/%m.log
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        printcap name = /etc/printcap
# Segue una direttiva comoda per creare automaticamente degli account macchina su /etc/passwd quando un nuovo computer joina il dominio
        add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u
# Le direttive che indicano a Samba di fare il PDC e permettere il login sugli ost che fanno parte del dominio
        domain master = Yes
        domain logons = Yes
# Direttive riguardanti la funzionalità di Master Browser
        preferred master = Yes
        os level = 250
# Direttive riguardanti la funzionalità di Wins Server
        dns proxy = No
        wins support = Yes

        idmap uid = 16777216-33554431
        idmap gid = 16777216-33554431

[homes]
        comment = Home Directories
        read only = No
        browseable = No

[printers]
        comment = All Printers
        path = /var/spool/samba
        guest ok = Yes
        printable = Yes
        browseable = No

[Documenti]
        path = /tmp
        guest ok = Yes

[Privato]
        comment = Documenti Privati
        path = /var/log
        read only = No

Samba come Primary Domain Controller (PDC)
Autore: al - Ultimo Aggiornamento: 2005-04-29 11:43:32 - Data di creazione: 2004-06-11 14:43:58
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Samba può svolgere le attività di PDC, Primary Domain Controller, in una rete di client Windows (o mista).
Le funzionalità supportate sono:
- Login sul dominio (domain logon) per client Windows NT/2000/XP.
- Sicurezza a livello utente per client Windows 9x/ME (questi client non hanno il concetto di dominio, ma supportano il login su un dominio)
- Roaming profiles, per avere utenti che possono loggarsi su client diversi mantenendo il proprio ambiente.
- Browse list e master browser
- Policy di sistema in stile NT4
- Possibilità di ottenere la lista degli utenti/gruppi presenti sul PDC Samba
- Gestione Active Directory (introdotta, parzialmente, dalla versione 3.x)

Le funzionalità ancora non supportate sono:
- Possibilità di fare da Domain Controller in un dominio ADS (Active Directory)
- Utilizzo come BDC (Backup Domain Controller) in un dominio NT4 con PDC Windows.

Per configurare Samba come PDC di un dominio Windows è necessario:
1- Installare Samba su un server Linux/Unix (tramite sorgenti o RPM)
2- Configurare smb.conf
3- Creare directory per i roaming profile e i domain logons
4- Aggiungere le login e le password per gli utenti e le macchine del dominio
5- Configurare i client Windows per unirsi al dominio.

Le istruzioni che seguono si applicano sia alla versione 2 che alla 3, tranne per la parte relativa alla direttiva add machine script.

1- Installazione di Samba
L'installazione per un PDC non richiede particolari accorgimenti rispetto ad una normale installazione di Samba, tramite rpm o tar.gz.

2- Configurazione di smb.conf
Vediamo un esempio del file di configurazione di un Samba PDC. Varie impostazioni sono comuni a qualsiasi installazione Samba, alcune sono specifiche per un PDC (domain master = yes , security = user , encrypt passwords = yes), altre sono necessarie se si vuole supportare l'esecuzione sul client di uno script al login (logon script e condivisione [netlogon] ) o l'uso dei roaming profiles (logon path , condivisione [profiles]).
Valutare attentamente quest'ultima opzione: ha la comodità di separare l'uso di una singola macchina fisica da un singolo utente (tutti gli utenti possono usare tutte le macchine), ma comporta ad ogni login il caricamento o la sincronizzazione di tutti i "Documents and Settings" Windows fra il client e il server, con un potenziale carico sul network non indifferente e maggiori attese da parte dell'utente.
Fatto il login l'utente agirà sui file della macchina locale, che poi vengono a loro volta sincronizzati con quelli sul server al momento del logout.

[global] ; Settaggi generali (validi su ogni configurazione Samba)
    workgroup = intranet E' il nome del Dominio e/o del Workgroup
    netbios name = serverone E' il nome del server Samba
    server string = Samba PDC - Versione %v La descrizione del server
    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 Settings TCP consigliabili di default

    ; Settaggi per un PDC e un master browser
    os level = 64 Imposta il valore con cui partecipare alle elezioni per il Master Browser
    preferred master = yes Forza una elezione quando si avvia e vi partecipa con maggiori possibilità di successo
    local master = yes Fa partecipare Samba alle elezioni per il Local Master Browser
    domain master = yes La riga che indica a Samba di operare com PDC

    ; Gestione utenti e sicurezza
    security = user Impone di autenticare gli utenti localmente. E' necessario su un PDC Samba
    encrypt passwords = yes Cripta login e password in fase di autenticazione: obbligatorio su un PDC e necessario per interagire senza problemi con client Windows NT o successivi
    domain logons = yes Permette ai client Windows di loggarsi sul dominio autenticandosi con il server Samba
    hosts allow = 127.0.0.1 192.168.0.0/255.255.255.0 Permette l'accesso solo dal localhost e dalla rete 192.168.0.0/24
    add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u (Solo su Samba 3) Aggiunge automaticamente al sistema l'account di una nuova macchina che entra nel dominio

    ; Gestione logging
    log file = /var/log/samba/log.%m Definisce la posizione dei log e indica di creare log diversi on i nomi delle rispettive macchine client
    log level = 2 Imposta a 2 il livello di logging, visualizzando tutti i file letti e scritti
    max log size = 50 Imposta a 50 Kb la dimensione massima dei file di log

    ; User profiles, home directory e netlogon (a queste configurazioni in [global] vanno SEMPRE aggiunte le definizioni rispettivamente di [homes] , [profiles] e [netlogon] riportate più sotto
    logon home = \\%L\%U\.profile Definisce la posizione del file .profile (per client Win9x/ME) in \\nomeserver\nomeutente
    logon path = \\%L\profiles\%U Definisce la posizione della directory profiles (per client WinNT/2k/XP) in \\nomeserver\profiles\nomeutente
    logon drive = H: Crea l'unità di rete H: al login su client Windows
    logon script = netlogon.bat Specifica quale script eseguire sul client ad ogni login. Lo script viene cercato nella directory definita nella condivisione [netlogon]

[homes] Share speciale, che definisce la posizione delle home directory
    comment = Home Directory per ogni User Descrizione della condivisione
    browseable = no E' bene non rendere pubblicamente visibile le home dei singoli utenti
    writeable = yes Ogni utente deve poter scrivere nella sua home
    
[profiles] Share speciale dove vengono scritti i file di profilo per i gli utenti roaming. Ad ogni login e logout il suo contenuto viene sincronizzato con la cartella dei documenti sul computer locale (C:/Documenti/NomeUtente.dominio)
    path = /home/profiles La directory locale sul server Samba dove sono salvati i profili. Qui vengono, automaticamente, create delle sottodirectroy con i nomi degli utenti
    writeable = yes I profili sono sincronizzati con il client al login e al logout e devono essere scrivibili
    browseable = no Come per le home, anche i profili non devono essere visibili agli altri utenti
    create mask = 0600 La maschera con cui vengono creati i file: Pieni permessi all'owner, nessun permesso per gli altri utenti
    directory mask = 0700 La maschera con cui vengono create le directory: per l'owner devono essere anche eseguibili (sfogliabili)

[netlogon] Condivisione speciale che contiene gli script che vengono eseguiti sui client Windows al login sul dominio. Devono essere eseguibili su Windows e possono essere utilizzati per varie operazione di amministrazione centralizzata (backup di dati locali, aggiornamento programmi o antivirus, mappatura di nuove condivisioni di rete ecc.)
    path = /home/netlogon La directory sul server in cui sono contenuti, in sottodirectory con nome uguale al login dell'utente, gli script definiti con la direttiva "logon script"
    read only = yes Questi script devono essere accessbili solo in lettura...
    write list = @admin ... tranne agli utenti del gruppo (@) admin
    browseable = no Questa è una condivisione di servizio che è inutile mostrare agli altri utenti


3- Creazione delle directory supplementari
E' importante creare directory per i profile e i netlogon definiti in smb.conf con nomi e permessi corretti.
Sulla base della configurazione di esempio sopra riportata vanno eseguite le seguenti operazioni sul server Samba (come root):
[root@sambaserver root]# groupadd admin Si crea il gruppo admin, composto da utenti che possono editare gli script di logon. Considerare che questi script  sono particolarmente importanti, in termini di sicurezza, visto che vengono eseguiti sui client Window
[root@sambaserver root]# mkdir -m 0775 /home/netlogon Crea la directory /home/netlogon, leggibile ed eseguibile da utti gli utenti e modificabile solo da owner e ownergroup
[root@sambaserver root]# chown root.admin /home/netlogon Si imposta root come owner della directory e admin come gruppo (con permessi di scrittura)
[root@sambaserver root]# mkdir /home/profiles Si crea una directory per i profili (uguale a quella definita in smb.conf)
[root@sambaserver root]# chmod 1757 /home/profiles Si imposta lo sticky bit e si rende questa directory scrivibile da root e le sue sottodirectory gestibili dai rispettivi utenti, senza possibilità di modificare quelle degli altri


4- Aggiungere login e password
Gestire gli utenti di un dominio con Samba non è una procedura immediata e vanno considerati alcuni aspetti fondamentali:
- Samba utilizza come file delle password /etc/samba/smbpasswd (di default) che presenta una riga per ogni utente (sia di un dominio che di un server con normale autenticazione). In questo file è prevista una riga (con login , password criptata e altri dati) per ogni utente.
- Per ogni utente presente sul file smbpasswd DEVE essere presente un rispettivo utente sul normale file degli utenti Unix /etc/passwd. Questo perchè Samba agisce sul sistema locale come un normale processo Unix e, anche se viene eseguito come root, accede al filesystem con i permessi degli utenti secondo quanto configurato.
- Quando Samba agisce come PDC, oltre a creare una login (sia in /etc/samba/smbpasswd che in /etc/passwd) per ogni utente, si deve creare una login speciale per ogni macchina del dominio. Questa login, definita trust account o computer account ha il nome NetBios del computer seguito dal segno dollaro ($). Al primo login da parte del trust account viene generata una sorta di password che viene utilizzata per autenticare le comunicazioni fra il PDC e il client e assicurarsi che non ci siano altre macchine che possano unirsi al dominio con lo stesso nome NetBios.
- La gestione delle login (sia per gli utenti che per i computer, sia su smbpasswd che su passwd) può essere fatta in maniera manuale, con i comandi sotto riportati, o in maniera automatica, tramite l'uso della direttiva add user script
- Windows9x/ME anche se possono eseguire un login su un dominio, NON sono strutturati per essere dei client a pieno titolo di un dominio in quanto non ne rispettano le logiche di sicurezza e trust.
Per aggiungere un computer account al dominio manualmente seguire la seguente procedura:
[root@sambaserver root]# groupadd machines Crea un gruppo per tutte i computer account
[root@sambaserver root]#  useradd -g machines -d /dev/null -s /bin/false nomeNetBios$ Aggiunge al sistema una login, membro del gruppo machines, senza home directory, senza shell, con nome uguale al nome NetBios della macchina seguito dal segno $. Notare che questo account serve a Samba per agire sul sistema, ma è bene che non possa essere utilizzato per una normale login.
[root@sambaserver root]# passwd -l nomeNetBios$ Viene messo un lock sulla password, in modo da lasciarla nulla e non renderla modificabile se non da root
[root@sambaserver root]# smbpasswd -a -m nomeNetBios Si crea un nuovo computer account per /etc/samba/smbpasswd e si imposta la relativa password. L'opzione -a permette di crearlo, se non esiste, l'opzione -m indica che si tratta di un machine account, il nome NetBios della macchina da aggiungere NON va seguito da $, in questo caso, in quando questo carattere viene aggiunto automaticamente. Non è necessario ricordare la password inserita in quanto viene gestita direttamente fra PDC e client del dominio


Se si vuole evitare di aggiungere a mano un nuovo account per ogni macchina del dominio, si può provare ad aggiungere, come sopra indicato, la seguente riga a smb.conf (valida solo per Samba 3):
add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u
Verificare il path e la sintassi del comando useradd e assicurarsi di avere il gruppo machines già creato (groupadd machines).

Per aggiungere a mano le login degli utenti (non delle macchine) del dominio:
[root@sambaserver root]# useradd pippo Aggiunge l'utente al /etc/passwd di sistema
[root@sambaserver root]# passwd pippo Gli imposta la password. Se l'utente non deve accedere al sistema Unix, impostagli una shell nulla in /etc/passwd
[root@sambaserver root]# smbpasswd -a pippo Aggiunge l'utente pippo a /etc/samba/smbpasswd e gli imposta la password

NOTA: Quando si configura un client Windows NT/2k/XP per farlo diventare parte di un dominio, viene richiesta una password di amministratore. In questa situazione si deve usare la login di root con la relativa password, per cui è necessario aggiungere l'utente root anche al smbpasswd:
[root@sambaserver root]# smbpasswd -a root
Notare che se per caso si cambia la password di root con passwd e non la si aggiorna anche con smbpasswd, la password che fa testo è la seconda, quella presente in /etc/samba/smbpasswd.

Per questo ed altri motivi, una volta creato un utente è buona cosa fare in modo che la sua password sul sistema Unix sia allineata con quella usata da Samba via rete. Per fare in modo che una password cambiata tramite Samba si rispecchi anche sul /etc/passwd locale si devono aggiungere a smb.conf simili righe di configurazione:
    unix password sync = yes Imposta la sincronizzazione delle password fra Samba e il sistema Unix locale
    passwd program = /usr/bin/passwd %u La riga di comando per cambiare la password Unix. %u è la login dell'utente
    passwd chat = *New*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *Enter* new*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *passwd: *all* authentication*tokens*updated*successfully*
La procedura di matching per gestire le richieste in output di passwd. Assicurarsi che sul proprio sistema siano utilizzate le stesse parole
Purtroppo questa procedura non funziona al contrario: se si cambia con passwd una password Unix, si dovrà cambiarla a mano con smbpasswd per tenere sincronizzata la password Unix con la password Samba.

5- Configurazione dei client
La configurazione di un sistema Windows per unirsi ad un dominio, varia a seconda della versione:
Windows 95/98/ME:
- Verificare che sia installato il "Client per Reti Microsoft" fra le proprietà di rete
- Assicurarsi che il Client per Reti Microsoft sia selezionato come protocollo di rete primario (Pannello di Controllo -> Rete -> Logon di rete primario).
- Andare su Pannello di Controllo -> Rete -> Client per reti Microsoft -> Proprietà -> Logon su Dominio NT.
- Se si è configurata su smb.conf l'opzione "add user script", selezionare il checkbox Crea un Computer Account, altrimenti creare a mano sul server Samba un utente con il nome della macchina Windows.
- Inserire il nome del proprio dominio e cliccare OK.

Windows NT:
- Andare su Pannello di Controllo -> Rete -> Identificazione Rete -> Proprietà
- Selezionare Dominio e inserire il nome del prorio dominio
- Selezionare Crea un Computer Account
- Alla richiesta della password di un amministratore inserire la login e la password di root, ricordarsi che l'utente root deve essere aggiunto a smbpasswd.
- Dovrebbe comparire un messaggio che ci da il benvenuto sul dominio.

Windows 2000:
Le procedure sono uguali a quelle per Windows NT tranne che i settaggi di rete sono trovati sotto Pannello di Controllo -> Sistema -> Identificazione Rete (oppure, sul Desktop, cliccare col tasto destro del mouse sull'icona Risorse del Computer, selezionare Proprietà, cliccare sulla tab Identificazione Rete e sul tasto Proprietà).

Windows XP:
La procedura con Windows XP è più complessa (lamentele a Microsoft che usa cambiare le specifiche e le implementazioni dei suoi protocolli anche per rendere più complicata l'interoperabilità con soluzioni alternative).
Notare che solo XP Professional Edition può essere usato per far parte di un dominio, Windows XP Home Edition non può far parte di un dominio (Samba o Windows based).
- Aprire l'editor delle policy di Sicurezza Locale (Start->Pannello di controllo->Strumenti di Aministrazione->Criteri di protezione locali->Criteri locali->opzioni di protezione)
- Disabilitare la voce "Domain member: Digitally encrypt or sign secure channel (always)" (Membro di dominio: aggiunta crittografia of irma digitale ai dati del canale protetto (sempre) )
- Disabilitare la voce "Domain member: Disable machine account password changes" (Controller di dominio: rifiuta cambio password account computer)
- Disabilitare la voce "Domain member: Require strong (Windows 2000 or later) session key" (Membro di dominio: richiesta chiave di sessione avanzata (Windows 2000 o versioni successive) )
- Scaricare da Samba.org (http://de.samba.org/samba/ftp/docs/Registry/WinXP_SignOrSeal.reg) la patch per il registro WinXP_SignOrSeal. Per applicarla cliccare due volte sul file .reg e rispondere Si alle domande
- A questo punto ci si può unire al dominio come su Windows NT/2000: Tasto destro su Risorse del Computer, selezionare Proprietà, Nome del Computer e tasto Modifica uppure cliccare su Identificazione di Rete ed eseguire il Wizard.

Linux/Unix:
Anche dei sistemi Linux, ovviamente, possono unirsi ad un dominio con un PDC Samba e se sono dei file server, si può configurare Samba per permettere l'autenticazione tramite il dominio.
Su smb.conf ci devono essere le seguenti righe:
[global]
        workgroup =
        netbios name =
        security = DOMAIN
        encrypt passwords = Yes
        password server =
        preferred master = False
        domain master = False

Ovviamente sul PDC Samba deve essere creato un computer account per il nostro Samba locale (con il nome specificato in netbios name) e, anche in questo caso, il computer locale deve preventivamente unirsi al dominio, con una procedura che è paragonabile a quelle viste sopra per client Windows. Sul Linux/Unix locale basta scrivere:
smbpasswd -j -r -U root
Bisogna fornire la password di root del PDC Samba (ricordarsi che è la password salvata in smbpasswd e non in passwd/shadow, nel caso fossero diverse).

Livelli di interoperabilità fra Samba e reti Windows
Autore: al - Ultimo Aggiornamento: 2006-03-26 18:57:04 - Data di creazione: 2003-03-24 22:10:13
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Le possibilità di interoperabilità fra client e server Windows e Samba in una rete locale per la condivisione dei file sono varie e si possono raggruppare in due scenari di riferimento:
- Windows server con client misti (Windows, Linux/Unix, MacOS).
- Linux/Unix Samba server con client misti.

E' possibile configurare Samba per:
- Operare come Primary Domain Controller (PDC di un dominio NT, ma non Domain Controller di una Active Directory) di una rete mista, gestendo anche i profili di macchine Windows e il login sul dominio. Una simile opzione permette ad una macchina Linux con Samba di eseguire le stesse funzioni di un PDC di dominio NT.
- Operare come normale File Server per client misti. I metodi di autenticazione possono essere vari e a seconda del metodo utilizzato possono essere necessari diversi interventi sul server e sui client.
- Operare come Domain Member con le funzionaità di file server accessibili sulla base delle login e password del dominio. Samba può essere parte sia di un dominio NT (Samba 2 o superiori) che di una Active Directory (Samba 3 o superiori)

- Operare come WINS server (o essere configurato per utilizzare un altro WINS server). In questo caso la configurazione è semplice, rapida ed efficace, non presentando particolari problemi di compatibilità e interoperabilità.
- Operare come Master Browser in una rete mista.

Samba NON permette invece di gestire una macchina come Backup Domain Controller di un PDC Windows, non può essere un Backup Browser e non può essere un Secondary Wins Server.

Sul lato client, invece, non ci sono particolari problemi ad usare Samba per connettersi a server Windows o Linux: la condivisione di rete remota viene normalmente montata sul file system locale e ci si può normalmente accedere con i permessi concessi.

Integrare Linux in un dominio WinNT/2000 con Winbind
Autore: al - ( Revisione: al ) - Ultimo Aggiornamento: 2005-04-24 16:15:45 - Data di creazione: 2003-08-18 11:52:02
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

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".

Esempio di smb.conf per un server Linux domain member
Autore: al - Ultimo Aggiornamento: 2004-10-28 21:15:12 - Data di creazione: 2004-10-28 21:15:12
Tipo Infobox: SAMPLE - Skill:

[global]
        workgroup = LAB42
        server string = Samba Server - Si Autentica su PDC esterno
        security = domain
        password server = 10.42.42.173
        log file = /var/log/samba/%m.log
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        printcap name = /etc/printcap
        dns proxy = No
        idmap uid = 16777216-33554431
        idmap gid = 16777216-33554431
        add user script = /usr/sbin/adduser -d /dev/null -s /bin/false %u
[homes]
        comment = Home Directories
        read only = No
        browseable = No

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No

[Documenti]
        comment = Documenti Vari
        path = /tmp
        read only = No

Privacy Policy