Capitolo 48. Samba

Sommario

48.1. Configurazione del server
48.2. Samba come server di login
48.3. Configurazione di un server Samba con YaST
48.4. Configurazione dei client
48.5. Ottimizzazione

Estratto

Con Samba è possibile configurare un computer Unix come file server e server di stampa per i computer che eseguono DOS, Windows e OS/2. L'evoluzione di Samba ha generato un prodotto completo e piuttosto complesso. Oltre a illustrare la funzionalità di base, in questo capitolo vengono introdotte le nozioni di base sulla configurazione di Samba e vengono descritti i moduli YaST che è possibile utilizzare per configurare Samba nella rete.

Ulteriori informazioni su Samba sono disponibili nella documentazione digitale. Nella riga di comando immettere apropos samba per visualizzare la documentazione oppure, se nel computer è installato Samba, sfogliare la directory /usr/share/doc/packages/samba per visualizzare esempi e altra documentazione in linea. Nella sottodirectory examples è disponibile una configurazione di esempio con commenti (smb.conf.SuSE).

Di seguito sono illustrate alcune importanti nuove funzionalità della versione 3 inclusa del pacchetto samba:

[Tip]Migrazione a Samba 3.

Per la migrazione da Samba 2.x a Samba 3 è necessario considerare alcuni aspetti specifici. Nella documentazione HOWTO di Linux su Samba è incluso un intero capitolo dedicato a questo argomento. Dopo l'installazione del pacchetto samba-doc, la documentazione HOWTO è disponibile nel percorso /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf.

Samba utilizza il protocollo SMB (Server Message Block) basato sui servizi NetBIOS. Microsoft ha rilasciato questo protocollo su pressione di IBM per consentire ad altri produttori di software di stabilire connessioni a una rete di domini Microsoft. Con Samba il funzionamento del protocollo SMB si basa sul protocollo TCP/IP, pertanto è necessario installare TCP/IP su tutti i client.

NetBIOS è un'interfaccia software (API) progettata ai fini della comunicazione tra computer, mediante la quale viene fornito un servizio nomi. Consente ai computer connessi alla rete di riservare nomi per se stessi, in modo che in seguito possano essere indirizzati per nome. Non è disponibile un processo centrale per il controllo dei nomi e qualsiasi computer della rete può riservare tutti i nomi necessari, se questi non sono già in uso. L'attuale interfaccia NetBIOS può essere implementata per diverse architetture di rete. Esiste un'implementazione che funziona relativamente a livello di hardware di rete, denominata NetBEUI, alla quale viene spesso fatto riferimento come NetBIOS. I protocolli di rete implementati con NetBIOS sono IPX di Novell (NetBIOS tramite TCP/IP) e TCP/IP.

I nomi NetBIOS inviati tramite TCP/IP sono completamente diversi dai nomi utilizzati nel file /etc/hosts o dai nomi definiti tramite DNS. NetBIOS utilizza infatti una convenzione di denominazione completamente indipendente. Per facilitare l'amministrazione, si consiglia tuttavia di utilizzare nomi corrispondenti ai nomi host DNS, utilizzati di default da Samba.

Il protocollo SMB è supportato da tutti i sistemi operativi comuni, ad esempio Mac OS X, Windows e OS/2. Il protocollo TCP/IP deve essere installato in tutti i computer. Con Samba viene fornito un client per le varie versioni di UNIX. Per Linux è disponibile un modulo del kernel per SMB che consente l'integrazione delle risorse di SMB nel livello sistema di Linux.

I server SMB forniscono spazio hardware al client per mezzo delle condivisioni. Una condivisione include una directory e le relative sottodirectory nel server. Viene esportata per mezzo di un nome ed è possibile accedervi utilizzando il relativo nome. Il nome della condivisione può essere un nome qualsiasi e non deve necessariamente corrispondere alla directory di esportazione. Viene assegnato un nome anche alla stampante, alla quale i client possono accedere utilizzando questo nome.

48.1. Configurazione del server

Se si prevede di utilizzare Samba come server, installare samba. Avviare i servizi richiesti per Samba con rcnmb start && rcsmb start e interromperli con rcsmb stop && rcnmb stop.

Il file di configurazione principale di Samba, /etc/samba/smb.conf, può essere diviso in due parti logiche. Nella sezione [global] sono presenti le impostazioni centrali e globali, mentre nelle sezioni [share] sono contenute le singole condivisioni di file e stampanti. Grazie a questo approccio è possibile impostare in modo diverso o globale i dettagli relativi alle condivisioni nella sezione [global] e migliorare la trasparenza strutturale del file di configurazione.

48.1.1. Sezione global

Per soddisfare i requisiti di configurazione della rete in modo che altri computer possano accedere al server Samba tramite SMB in un ambiente Windows, è necessario apportare alcune modifiche ai parametri della sezione [global] riportati di seguito.

workgroup = TUX-NET

In questa riga il server Samba viene assegnato a un gruppo di lavoro. Sostituire TUX-NET con un gruppo di lavoro appropriato all'ambiente di rete in uso. Il server Samba viene identificato con il relativo nome DNS, a meno che tale nome sia stato assegnato a un altro computer nella rete. Se il nome DNS non è disponibile, impostare il nome del server mediante netbiosname=MYNAME. Per ulteriori informazioni su questo parametro, vedere man smb.conf.

os level = 2

Questo parametro consente di definire se il server Samba tenterà di assumere il ruolo di LMB (Local Master Browser) per il gruppo di lavoro a cui appartiene. Scegliere un valore molto basso per evitare qualsiasi interferenza nella rete Windows esistente causata da un server Samba configurato in modo scorretto. Per ulteriori informazioni su questo importante argomento, vedere i file BROWSING.txt e BROWSING-Config.txt nella sottodirectory textdocs della documentazione relativa al pacchetto.

Se nella rete non sono presenti altri server SMB, ad esempio un server Windows NT o 2000, e si desidera che sul server Samba venga creato un elenco di tutti i sistemi presenti nell'ambiente locale, impostare il parametro os level su un valore più alto, ad esempio 65. Il server Samba verrà quindi scelto come LMB per la rete locale.

Quando si modifica questa impostazione, considerare con attenzione l'impatto che potrebbe avere su un ambiente di rete Windows esistente. Effettuare prima i test delle modifiche in un ambiente di rete isolato o in un'ora del giorno in cui il traffico di rete è limitato.

wins support e wins server

Per integrare il server Samba in una rete Windows esistente con un server WINS attivo, abilitare l'opzione wins server e impostare il relativo valore sull'indirizzo IP del server WINS.

Se i computer Windows sono connessi a sottoreti separate e devono continuare a riconoscersi reciprocamente, è necessario configurare un server WINS. Per convertire un server Samba in un server WINS, impostare l'opzione wins support = Yes. Assicurarsi che questa impostazione sia abilitata in un solo server Samba della rete. Le opzioni wins server e wins support non devono mai essere abilitate contemporaneamente nel file smb.conf.

48.1.2. Condivisioni

Negli esempi seguenti viene illustrato come rendere disponibili ai client SMB un'unità CD-ROM e le directory utente (homes).

[cdrom]

Per evitare che l'unità CD-ROM sia resa accidentalmente disponibile, queste righe sono disattivate mediante segni di commento (in questo caso punti e virgola). Rimuovere i punti e virgola nella prima colonna per condividere l'unità CD-ROM con Samba.

Esempio 48.1. Condivisione di un CD-ROM.

;[cdrom]
;       comment = Linux CD-ROM
;       path = /media/cdrom
;       locking = No
[cdrom] e comment

La voce [cdrom] corrisponde al nome della condivisione visibile a tutti i client SMB nella rete. Per descrivere la condivisione, è possibile aggiungere una voce comment.

path = /media/cdrom

path consente l'esportazione della directory /media/cdrom.

Per mezzo di una configurazione di default molto restrittiva questo tipo di condivisione viene reso disponibile solo agli utenti presenti nel sistema. Per rendere la condivisione disponibile a tutti gli utenti, aggiungere la riga guest ok = yes alla configurazione. Questa impostazione consente di assegnare autorizzazioni di lettura a tutti gli utenti della rete. Si consiglia di utilizzare questo parametro con la massima precauzione, specialmente nella sezione [global].

[homes]

La condivisione [home] è estremamente importante in questo caso. Se l'utente dispone di un account e di una password validi per il file server Linux e di una propria home directory, può essere connesso a tale condivisione.

Esempio 48.2. Condivisione homes.

[homes]
	comment = Home Directories
	valid users = %S
	browseable = No
	read only = No
	create mask = 0640
	directory mask = 0750
[homes]

A condizione che per nessun'altra condivisione venga utilizzato il nome di condivisione dell'utente che si connette al server SMB, viene generata dinamicamente una condivisione mediante le direttive della condivisione [homes]. Il nome della condivisione risultante è il nome utente.

valid users = %S

%S viene sostituito con il nome reale della condivisione non appena viene stabilita una connessione. Per una condivisione [homes] questo nome corrisponde sempre al nome utente. I diritti di accesso alla condivisione di un utente, di conseguenza, vengono limitati esclusivamente all'utente.

browseable = No

Questa impostazione rende la condivisione invisibile nell'ambiente di rete.

read only = No

Per default, Samba impedisce l'accesso in scrittura a tutte le condivisioni esportate per mezzo del parametro read only = Yes. Per rendere scrivibile una condivisione, impostare il valore read only = No che è sinonimo di writeable = Yes.

create mask = 0640

I sistemi non basati su Microsoft Windows NT non riconoscono il concetto di autorizzazioni di UNIX, pertanto non sono in grado di assegnare autorizzazioni durante la creazione di un file. Il parametro create mask definisce le autorizzazioni di accesso assegnate ai nuovi file creati. Questa impostazione viene applicata solo alle condivisioni scrivibili. In effetti significa che il proprietario dispone di autorizzazioni di lettura e scrittura, mentre i membri del gruppo primario del proprietario dispongono di autorizzazioni di lettura. valid users = %S impedisce l'accesso in lettura anche se al gruppo sono assegnate autorizzazioni di lettura. Per consentire l'accesso in lettura o scrittura al gruppo, disattivare la riga valid users = %S.

48.1.3. Livelli di sicurezza

Il protocollo SMB ha origine dall'ambiente DOS e Windows ed è direttamente correlato al problema della sicurezza. L'accesso a ogni condivisione può essere protetto mediante una password. Per il controllo delle autorizzazioni in SMB sono disponibili tre modi:

Sicurezza a livello di condivisione (security = share):

Una password viene assegnata stabilmente a una condivisione. Chiunque conosca questa password può accedere alla condivisione.

Sicurezza a livello utente (security = user):

Questa variazione introduce il concetto dell'utente in SMB. Ogni utente deve registrarsi nel server con la propria password, dopodiché il server può concedere l'accesso a singole condivisioni esportate in base ai nomi utente.

Sicurezza a livello di server (security = server):

Per i client il funzionamento del server Samba avviene apparentemente a livello di utente, mentre in realtà tutte le query relative alle password vengono passate a un altro server in modalità livello utente che procede all'autenticazione. Questa impostazione richiede un parametro aggiuntivo (password server =).

La distinzione tra sicurezza a livello di server, utente e condivisione si applica a tutto il server. Nella configurazione di un server non è possibile applicare la sicurezza a livello di condivisione a singole condivisioni e la sicurezza a livello di utente ad altre condivisioni. È tuttavia possibile eseguire un server Samba separato per ogni indirizzo IP configurato nel sistema.

Ulteriori informazioni su questo argomento sono disponibili nella documentazione HOWTO di Linux su Samba. Nel caso di più server in un sistema prestare attenzione alle opzioni interfaces e bind interfaces only.

[Tip]Suggerimento

Per le attività di amministrazione più semplici del server Samba è inoltre disponibile il programma swat che fornisce una semplice interfaccia Web con la quale configurare il server Samba in modo agevole. In un browser Web aprire http://localhost:901 ed eseguire il login come utente root. È tuttavia necessario attivare swat anche nei file /etc/xinetd.d/samba e /etc/services. Per eseguire questa operazione, in /etc/xinetd.d/samba modificare la riga disable in disable = no. Ulteriori informazioni su swat sono disponibili nella documentazione.