Chapter 25. Samba

Table of Contents

25.1. Installazione e configurazione del server
25.2. Samba come server per il login
25.3. Installazione e configurazione con
25.4. Configurazione dei client
25.5. Ottimizzazione

Abstract

Con Samba è possibile trasformare un qualsiasi computer Unix in un server di file e stampa per client DOS, Windows ed OS/2: questo capitolo tratta le basi di una configurazione Samba ed illustra i moduli tramite i quali è possibile configurare Samba nella vostra rete.

Samba è ormai un prodotto maturo, e per questo motivo in questo capitolo possiamo trattare brevemente solo alcune delle sue funzionalità. Comunque il software viene fornito con documentazione completa in forma digitale composta da una parte da pagine di manuale — a causa del volume dovete immettere apropos samba sulla riga di comando — e dall'altra parte trovate ulteriore documentazione ed esempi sotto /usr/share/doc/packages/samba, dopo aver installato Samba. Nella sottodirectory examples trovate anche la configurazione esempio commentata smb.conf.SuSE.

Il pacchetto samba, è a vostra disposizione nella 3. versione. Ecco alcune delle principali novitàdel pacchetto:

[Tip]Migrare verso Samba3

Se intendete migrare da Samba 2.x verso Samba 3 dovete tenere presente alcune particolarità. A questo tema è stato dedicato un intero capitolo nella Samba-HOWTO-Collection. Dopo aver installato il pacchetto samba-doc l' HOWTO è reperibile sotto /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf.

Samba utilizza il protocollo SMB (Server Message Block), che si basa sui servizi di NetBIOS. Cedendo alle richieste della IBM, la Microsoft ha pubblicato il protocollo in modo da permettere anche ad altri fornitori di software di trovare il modo di collegarsi ad una rete Microsoft. Samba implementa il protocollo SMB su TCP/IP. Così su ogni client deve essere installato il protocollo TCP/IP. Noi consigliamo di utilizzare esclusivamente TCP/IP sui client.

NetBIOS è un'interfaccia software (API) progettata per la comunicazione tra client; viene messo a disposizione un name service ai fini della identificazione reciproca dei client. Non vi è una istanza centrale ad assegnare i nomi, ogni host nella rete può riservarsi un nome non ancora assegnato. L'interfaccia di NetBIOS può venire implementata su diverse architetture di rete. L'implementazione avviene ad un livello molto vicino all'hardware di rete e si chiama NetBEUI. NetBEUI viene spesso chiamato NetBIOS. Altri protocolli di rete con cui è stata implementato NetBIOS sono IPX (NetBIOS tramite TCP/IP) di Novell e TCP/IP.

I nomi NetBIOS che vengono anche assegnati all'implementazione di NetBIOS tramite TCP/IP non hanno niente a che vedere con i nomi assegnati nel file /etc/hosts o via DNS - NetBIOS dispone di un proprio “name space”. Per semplificare l'amministrazione è però consigliabile assegnare, almeno ai server, dei nomi NetBIOS che corrispondano al nome host DNS; per un server Samba ciò avviene di default.

Tutti i comuni sistemi operativi, come Mac OS X, Windows e OS/2 supportano il protocollo SMB. Sul client deve essere installato il protocollo TCP/IP. Samba mette a disposizione anche un client per le diverse versioni di UNIX. Per Linux esiste inoltre un modulo del kernel per il file system adatto a SMB che permette di integrare risorse SMB a livello del sistema Linux.

I server SMB mettono a disposizione dei loro client dello spazio su hard disk sotto forma di cosiddette “share”. Una share comprende una directory con tutte le sottodirectory sul server; viene esportata con un nome proprio e può venire indirizzata dai client sotto questo nome. A questo scopo, il nome della share può essere assegnato liberamente. Non deve corrispondere al nome della directory esportata. Allo stesso modo viene attribuito un nome ad una stampante esportata, attraverso il quale i client possono indirizzarla.

25.1. Installazione e configurazione del server

Se volete utilizzare Samba come server, installate il pacchetto samba. I servizi necessari a Samba vengono avviati manualmente con il comando rcnmb start && rcsmb start e fermarti con rcsmb stop && rcnmb stop.

Il file di configurazione centrale di Samba è /etc/samba/smb.conf che da un punto di vista logico si divide in due sezioni. Nella cosiddetta sezione [global] si effettuano le impostazioni principali e generali. La seconda sezione viene chiamata [share]. Qui vengono definite le singole share per file e stampante. In tal modo, i dettagli riguardanti la share possono essere impostati singolarmente, oppure uniformemente nella sezione [global]. Ciò risulta in una maggior chiarezza per quanto riguarda i file di configurazione.

25.1.1. Sezione global in una configurazione esempio

I seguenti parametri della sezione global devono essere adattati alle caratteristiche della vostra rete, affinché il vostro server Samba sia indirizzabile tramite SMB per gli altri sistemi in una rete Windows.

workgroup = TUX-NET

Con questa istruzione assegnate il server Samba ad un gruppo di lavoro. Adattate TUX-NET al gruppo di lavoro effettivamente esistente o configurate i client secondo i valori qui selezionati. Il server Samba in questa configurazione è visibile con il suo nome DNS nel gruppo di lavoro selezionato, sempre che il nome non sia stato già assegnato.

Se il nome è già stato assegnato, con netbios name = MIONOME può essere impostato un nome che differisce dal nome DNS. Per maggiori dettagli su questo parametro rimandiamo alla relativa pagina di manuale ovvero man smb.conf.

os level = 2

In base a questo parametro il server Samba decide se tentare di fungere da LMB (ingl. Local Master Browser) per il proprio gruppo di lavoro. Il valore utilizzato nell'esempio è stato scelto volutamente basso, per evitare che in una rete Windows si verifichino dei disturbi dovuti ad un server Samba configurato in modo errato. I dettagli su questo tema importante si trovano nei file BROWSING.txt e BROWSING-Config.txt nella sottodirectory textdocs della documentazione del pacchetto.

Se ancora non gira un server SMB — p.es. Windows NT, 2000 Server — ed il server Samba dovrà mettere a disposizione nella rete locale i nomi dei sistemi disponibili, aumentate il valore dell'os level ( p.es. 65), per fargli assumere il ruolo di LMB.

Siate cauti nel modificare questo valore, poiché potreste causare dei disturbi in una rete Windows. Consultatevi con il vostro amministratore di sistema, testate prima le modifiche in una rete isolata od in un momento poco critico.

wins support e wins server

Volete integrare un server Samba in una rete Windows esistente, con un server WINS in esecuzione: per fare questo dovete attivare il parametro wins server impostando questo parametro sull'indirizzo IP del server WINS.

Se i vostri sistemi Windows sono in esecuzione in sottoreti separate e devono essere visibili tra di loro vi serve un server WINS. Per impostare il server Samba quale server WINS impostate wins support = Yes. Assicuratevi assolutamente che questo parametro sia attivato solo sul server Samba.

Non abilitate mai contemporaneamente entrambe le opzioni wins server e wins support nel file di configurazione (smb.conf.)

25.1.2. Le share

Nei seguenti esempi vengono condivisi con client SMB il lettore di CD-ROM e le directory degli utenti, le homes.

[cdrom]

Per evitare di sharare inavvertitamente un lettore di CD-ROM, tutte le righe necessarie alla share sono disattivate (punto e virgola). Se volete che il lettore di CD-ROM venga condiviso tramite Samba, cancellate il punto e virgola( ';') a inizio riga.

Example 25.1. Sharare il lettore di CD-Rom

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

La voce [cdrom] è il nome share visibile ai client SMB. Con comment si può dare un nome espressivo alla share.

path = /media/cdrom

Con path viene esportata la directory media/cdrom .

Questo tipo di share è disponibile solo per gli utenti presenti sul sistema a causa della impostazione di default volutamente restrittiva. Se la share deve essere disponibile a tutti, bisogna aggiungere la riga guest ok = Yes. Visto che ognuno ha il permesso di lettura, questa impostazione dovrebbe essere maneggiata con estrema cautela, ed essere applicata solo a determinate share; particolar attenzione va fatta se si intende utilizzare tale parametro nella sezione [global].

[homes]

Per la share [homes] vale: se un utente sul server di file Linux ha un valido account ed una propria directory home, il suo client si può collegare immettendo un login e una password validi.

Example 25.2. Sharare gli home

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

Se non esiste una share esplicita con il nome share dell' utente che si connette, viene generata dinamicamente una share in base alla share [homes]. Il nome della share sarà identico a quello dell'utente.

valid users = %S

%S viene sostituito con il nome della share, una volta stabilito il collegamento. Visto che nel caso della share [homes] si tratta del nome dell'utente, gli utenti consentiti si limitano al proprietario della directory utente. Questo è un modo per consentire l'accesso solo al proprietario.

browseable = No

Con questa impostazione la share [homes] non è visibile nell'elenco delle share.

read only = No

Di default, Samba non consente l' accesso in scrittura a share esportate, read only = Yes. Se un indirizzario deve poter essere accessibile in scrittura, impostate il valore read only = No che equivale a writeable = Yes.

create mask = 0640

I sistemi Windows non conoscono il concetto dei permessi d'accesso Unix; non possono perciò indicare, alla creazione di un file quali permessi d'accesso essi abbiano. Il parametro create mask stabilisce con quali permessi di accesso debbano venire creati i file. Questo vale solo per share con accesso in scrittura. In questo caso, al proprietario viene dato il permesso di lettura e scrittura ed ai membri del gruppo primario del proprietario il permesso di lettura. Ricordate che valid users = %S non concede il permesso di lettura neanche se il gruppo ha il permesso di lettura. Di conseguenza si deve disabilitare la riga valid users = %S se si vuole concedere al gruppo l'accesso in lettura o scrittura.

25.1.3. Security Level

Il protocollo SMB proviene dal mondo di DOS/Windows e si riferisce direttamente la questione della sicurezza. Ogni accesso ad una share può venire protetto da una password. SMB conosce tre possibilità per verificare il permesso di accesso:

Share level security (security = share):

Qui viene attribuita una password ad una share. Chi la conosce, ha accesso alla share.

User level security (security = user):

Questa variante introduce il concetto di utente. Ogni utente deve fare il login sul server immettendo una password. Dopo di ciò il server può, in base al nome dell'utente, accordare l'accesso alle singoli share esportate.

Server level security (security = server):

Samba comunica al client di lavorare nel modo user level. In verità delega tutte le richieste di password ad un altro User Level Mode Server preposto all' autenticazione. Questa configurazione richiede un ulteriore parametro (password server =).

La distinzione fra share, user e server level security vale per l' intero server. Non è possibile esportare alcune share del server via share level security ed altre via user level security. Comunque su di un sistema potete avere un server Samba per ogni indirizzo IP configurato.

Per ulteriori informazioni rimandiamo alla Samba-HOWTO-collection. Se amministrate diversi server su di un sistema dovete considerare i parametri interfaces e bind interfaces only.

[Tip]Tip

Per una facile amministrazione del server Samba, vi inoltre il programma swat che mette a disposizione una semplice interfaccia web con la quale potete configurare comodamente il server Samba. Invocate in un browser http://localhost:901 ed eseguite il login come root. Badate che swat è da abilitare anche nei file /etc/xinetd.d/samba e /etc/services, impostate a riguardo in /etc/xinetd.d/samba il seguente parametro: disable su no. Per maggiori informazioni su swat consultate la pagina di manuale di swat.