Configurare Samba come Primary Domain Controller


Ovviamente, do per scontata l’installazione di samba sul pc:

Le possibilità di interoperabilità fra client e server Windows, e Samba in una rete locale per la condivisione dei file sono varie.

Nell’utilizzo di SMB/CIFS le possibilità sono varie:

  • Windows File server con client misti Windows, Linux/Unix, MacOS
  • Linux/Unix Samba File server con client misti.

E’ possibile configurare Samba per:

  • Operare come Primary Domain Controller 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 di un PDC di dominio NT. Il supporto delle Active Directory, invece, non è completo ed è presente solo da Samba 3.0. In un simile scenario, a parte la configurazione del server Linux è necessario operare sulle macchine Windows e, in alcuni casi, intervenire sul registro. La procedura, seppur macchinosa, non è complessa e va fatta una volta soltanto.
  • 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 normale File Server per client misti. I metodi di autenticazione possono essere vari e a seconda del metodo possono essere necessarie diversi interventi sul server e sui client: ci si può appoggiare ad un PDC esterno (Windows o Linux), ad un database di login locale, può essere rimossa ogni forma di autenticazione o, come sopra specificato, ci si può appoggiare ad un PDC locale.

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

Samba come Primary Domain Controller (PDC):

Samba puo` svolgere le attivita` di PDC (Primary Domain Controller) in una rete di client Windows o mista. Le funzionalita` supportate sono:

  • login nel dominio (domain logon) per client Windows NT/2000/XP
  • sicurezza a livello utente per client Windows 98/ME (questi client non hanno il concetto di dominio, ma supportano il login su un dominio)
  • Roaming Profiles, cioe` memorizzazione lato server dei profili utenti che cosi` possono loggarsi su client diversi mantenendo il proprio ambiente
  • Browse list e Master Browser
  • Possibilita` di ottenere la lista degli utenti/gruppi presenti sul PDF Samba

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:

    • Installare Samba su un server Linux/Unix (tramite sorgenti o RPM)
    • Configurare smb.conf
    • Creare directory per i roaming profile e i domain logons
    • Aggiungere le login e le password per gli utenti e le macchine del dominio
    • 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.

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
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 Windows
[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
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.

Esempio di file “netlogon.bat”
   @ECHO OFF   net use P: \\Server\%U   net use T: \\Server\Transito   net use L: \\Server\Dati   net use M: \\Programmazi

Visto che questo file deve essere eseguito al momento del logon su macchine windows, e` bene trasformarlo in un file windows:

   [root@sambaserver root]# unix2dos /home/netlogon/netlogon.bat

4 thoughts on “Configurare Samba come Primary Domain Controller

  1. allupo

    six110 ti faccio i miei complimenti. Sei stato breve, esauriente e completo, un ottimo articolo, ci sono riuscito al primo colpo. Grazie mille.

  2. dicoilvero

    Beh copiare da altri siti son tutti bravi! Almeno abbi l’educazione di citare la FONTE!

  3. Ho approvato il tuo commento perché, se stai affermando il vero, ti prego di segnalarmi il link dal quale avrei copiato l’articolo e io citerò la fonte. Ovviamente non mi sono svegliato una mattina sapendo configurare samba, sicuramente mi sono documentato… ma dire che ho copiato tutto… attendo una tua risposta e, come vedi, se avessi “il culo sporco” non avrei approvato il tuo commento!

  4. Bisco

    Ottima guida!P.S: Anche se hai copiato o preso spunto da blog o forum, hai messo ordine all’universo di guide per la configurazione di SAMBA!

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s