Product SiteDocumentation Site

11.5. Configurare condivisioni Windows con Samba

Samba è una raccolta di strumenti per gestire il protocollo SMB (attualmente chiamato «CIFS») su Linux. Questo protocollo è utilizzato da Windows per le condivisioni di rete e le stampanti condivise.
Samba può anche agire come un controller di dominio NT. Questo è un ottimo strumento per garantire l'integrazione dei server Linux con le macchine desktop dell'ufficio che continuano ad utilizzare Windows.

11.5.1. Server Samba

Il pacchetto samba contiene i due server principali di Samba 3: smbd e nmbd.

11.5.1.1. Configurare con debconf

Questo pacchetto imposta una configurazione minimale basata sulle risposte ad alcune domande poste da Debconf durante l'installazione iniziale; questa fase di configurazione può essere ripetuta in seguito con dpkg-reconfigure samba-common samba.
La prima informazione richiesta è il nome del gruppo di lavoro a cui apparterrà il server Samba (la risposta nel nostro caso sarà FALCOTNET). Un'altra domanda chiederà se le password dovranno essere cifrate. La risposta è che dovranno esserlo poiché si tratta di un requisito per la maggior parte dei client Windows moderni, inoltre questo aumenta la sicurezza. Il rovescio della medaglia è che ciò richiede di gestire le password Samba separatamente dalle password Unix.
Il pacchetto propone inoltre di identificare il server WINS attraverso le informazioni fornite dal demone DHCP. Gli amministratori della Falcot Corporation rifiutano questa opzione, poiché intendono utilizzare lo stesso server Samba come server WINS.
La domanda successiva riguarda l'avvio del server: potrà essere avviato da inetd oppure come demoni autonomi. Utilizzare inetd è interessante solamente quando Samba è utilizzato di rado. Gli amministratori della Falcot prediligono quindi i demoni autonomi.
Quindi il pacchetto propone di creare il file /var/lib/samba/passdb.tdb per conservare le password cifrate. Questa opzione viene accettata poiché questo sistema è molto più efficiente del classico file testuale /etc/samba/smbpasswd.

11.5.1.2. Configurazione manuale

11.5.1.2.1. Modifiche a smb.conf
Le necessità della Falcot richiedono che altre opzioni siano modificate nel file di configurazione /etc/samba/smb.conf. Gli estratti seguenti riassumono le modifiche applicate alla sezione [global].
[global]

## Navigazione/Identificazione ###

# Imposta questo valore al gruppo di lavoro/dominio NT di cui il server Samba
# farà parte
   workgroup = FALCOTNET

# server string è l'equivalente del campo NT Description
   server string = %h server (Samba %v)

# Sezione dedicata a Windows Internet Name Serving Support:
# WINS Support - Comunica al componente NMBD di Samba di abilitare il suo
# server WINS
   wins support = yes 1

[...]

####### Autenticazione #######

# "security = user" è sempre una buona idea. Questa opzione richiede un
# account Unix nel server per ogni utente che vi accede. Si veda
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html 
# all'interno del pacchetto samba-doc per maggiori dettagli.
   security = user 2

# Si potrebbe preferire l'impiego di password cifrate.  Si veda la sezione su
# 'encrypt passwords' nel manuale smb.conf(5) prima di abilitare l'opzione.
   encrypt passwords = true

# Se si utilizzano password cifrate, Samba deve sapere quale tipo di
# database per password stai utilizzando.
   passdb backend = tdbsam guest

[...]

########## Stampa ##########

# Se si desidera caricare automaticamente una lista di stampanti anziché
# impostarle individualmente è necessario attivare quest'opzione
   load printers = yes 3

# Stampa lpr(ng). Si potrebbe decidere di sovrascrivere la posizione del
# file printcap
;   printing = bsd
;   printcap name = /etc/printcap

# Stampa CUPS. Si veda la pagina di manuale cupsaddsmb(8) del
# pacchetto cups-client.
   printing = cups 4
   printcap name = cups
   
[...]

######## Condivisione File ########

# Opzioni per la manipolazione dei nomi
;   preserve case = yes
;   short preserve case = yes

unix charset=ISO8859-1 5

1

Indica che Samba agirà come name server Netbios (WINS) per la rete locale.

2

Questo è il valore predefinito per questo parametro. Ad ogni modo, poiché è un punto chiave per la configurazione di Samba, è raccomandato indicare esplicitamente la propria scelta. Ogni utente deve autenticarsi prima di accedere a qualsiasi condivisione.

3

Comunica a Samba di condividere automaticamente tutte le stampanti locali configurate su CUPS. Rimane possibile restringere l'accesso a queste stampanti aggiungendo delle sezioni appropriate.

4

Specifica il sistema di stampa in uso, CUPS nel nostro caso.

5

Specifica il set di caratteri e la codifica utilizzata per il nome dei file in Linux. Il valore predefinito è UTF8 (Unicode).
11.5.1.2.2. Aggiungere utenti
Ogni utente Samba necessita di un account sul server. L'account Unix dev'essere creato per primo, quindi l'utente dev'essere registrato nel database di Samba. La creazione dell'account Unix viene eseguita normalmente (utilizzando per esempio adduser).
Un utente esistente viene aggiunto al database di Samba con il comando smbpasswd -a utente: questo comando chiede di inserire la password in modalità interattiva.
Un utente può essere cancellato con il comando smbpasswd -x utente. Un account Samba può anche essere disabilitato temporaneamente con smbpasswd -d utente ed essere riabilitato in seguito con smbpasswd -e utente.
11.5.1.2.3. Passare al controller di dominio
Questa sezione documenta come gli amministratori della Falcot sono andati oltre trasformando il server Samba in un controller di dominio che fornisce profili in roaming (cosa che consente agli utenti di trovare il proprio desktop indipendentemente dalla macchina a cui si collegano).
Inizialmente hanno aggiunto alcune direttive extra nella sezione [global] del file di configurazione:
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

Abilita la funzionalità controller di dominio

2

Specifica la posizione delle directory home per gli utenti. Queste sono conservate in una condivisione dedicata, cosa che permette di abilitare opzioni specifiche (in particolare le acl per il profilo, un requisito per la compatibilità con Windows 2000, XP e Vista).

3

Specifica lo script batch (non interattivo) che sarà eseguito sulla macchina Windows client ogniqualvolta viene aperta una sessione. In questo caso /var/lib/samba/netlogon/scripts/logon.bat. Lo script dev'essere in formato DOS dove le linee sono separate da un carattere di ritorno carrello e da un carattere per l'avanzamento di riga. Se il file è stato creato con Linux eseguire unix2dos lo convertirà.
I comandi utilizzati più comunemente in questi script permettono la creazione automatica dei dischi di rete e la sincronizzazione di data ed ora sul sistema.

Esempio 11.28. Il file logon.bat

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils

Vengono inoltre create due condivisioni aggiuntive, e le relative directory associate:
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
Devono anche essere create le directory home per tutti gli utenti (come /var/lib/samba/profiles/utente) ed ognuna dev'essere di proprietà dell'utente corrispondente.

11.5.2. Client Samba

Le funzionalità client in Samba permettono ad una macchina Linux di accedere alle condivisioni Windows ed alle stampanti condivise. I programmi richiesti sono disponibili nei pacchetti smbfs e smbclient.

11.5.2.1. Il programma smbclient

Il programma smbclient interroga i server SMB. Accetta una opzione -U utente per connettersi al server attraverso una specifica identità. smbclient //server/condivisione accede alla condivisione con una modalità interattiva simile alla riga di comando dei client FTP. smbclient -L server elenca tutte le condivisioni disponibili (e visibili) sul server.

11.5.2.2. Montare le condivisioni Windows

Il comando smbmount permette di montare una condivisione Windows all'interno della gerarchia di un filesystem Linux.

Esempio 11.29. Montare una condivisione Windows

smbmount //arrakis/shared /shared -o credentials=/usr/local/etc/smb-credentials

Il file /usr/local/etc/smb-credentials (che non dev'essere leggibile dagli utenti) ha il seguente formato:
username = utente
password = password
Altre opzioni possono essere specificate sulla riga di comando. La lista completa è disponibile nella pagina di manuale smbmount(1). Due opzioni in particolare possono risultare interessanti: uid e gid consentono di forzare il proprietario ed il gruppo dei file disponibili nella condivisione montata, così da non limitare l'accesso a root.
Il comando smbumount smonta una condivisione SMB.

11.5.2.3. Stampare su una stampante condivisa

CUPS è una soluzione elegante per stampare da una workstation Linux su di una stampante condivisa da una macchina Windows. Quando il smbclient è installato, CUPS consente l'installazione automatica delle stampanti Windows condivise.
Seguono i passi richiesti:
  • Entrare nell'interfaccia di configurazione di CUPS:
    http://localhost:631/admin.
  • Cliccare su «Aggiungi stampante» quindi inserire i dati relativi a questa stampante.
  • Quando scegli la periferica per la stampante scegli “Windows Printer via SAMBA”.
  • L'URI che descrive la stampante è simile al seguente:
    smb://utente:password@server/stampante.
Voilà, la stampante è operativa!