Gentoo Logo

Disclaimer : La versione originale di questo articolo è stata pubblicata da IBM developerWorks ed è di proprietà di Westtech Information Services. Questo documento è una versione aggiornata dell'articolo originale, e contiene numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.


Introduzione a Samba, Parte 1

1.  Concetti chiave

Samba

Per prima cosa, si mostreranno alcuni screenshot di uno dei miei pc con Windows NT, chiamato kompressor. Questi screenshot dimostrano come appare un sistema con Samba completamente configurato dal lato Windows. Fanno comprendere ciò che Samba può fare nel mondo reale.

Attualmente ci sono tre macchine configurate nella mia LAN interna:

  • ntbox (una Workstation Windows NT)
  • freebox (un server FreeBSD)
  • kompressor (la workstation Windows NT utilizzata come desktop principale

In questo ambiente, si utilizza Samba in maniera estensiva per condividere file, stampare, e perfino utilizzare applicazioni Windows direttamente da freebox (Unix). Segue uno screenshot che mostra il contenuto delle risorse di rete di kompressor:


Figura 1.1: Risorse di rete di kompressor

Fig. 1

Come è possibile vedere, sia ntbox che kompressor sono visibili, il che non sorprende poiché entrambi sono Workstation NT. Quello che è piuttosto inusuale, tuttavia, è il fatto che è possibile vedere pure freebox. Poiché freebox sta facendo girare Samba, è possibile vederlo nelle risorse di rete di ogni macchina Windows che sia parte del mio workgroup Windows "GENTOO".

Ora è il momento di dare un'occhiata a cosa c'è "dentro" freebox. La finestra seguente compare dopo un doppio click sull'icona freebox:


Figura 1.2: Condivisioni SMB/CIFS su freebox

Fig. 2

In questa finestra potete notare una lista di quelle che sono chiamate "condivisioni". Più in specifico, sono chiamate condivisioni SMB/CIFS e contengono le parti del filesystem di freebox che sono accessibili via rete.

Nota: E' doveroso menzionare che SMB sta per Server Message Block (Blocco di Messaggi del Server), il nome originale del protocollo utilizzato per condividere file sotto windows. CIFS sta per Common Internet File System (File System Internet Condiviso), il nuovo acronimo di Microsoft che descrive la versione più recente di questo protocollo.

Su freebox, Samba è stata specificamente configurata per creare solo quelle condivisioni che vedete di sopra. La condivisione drobbins contiene il contenuto della mia directory home. Mi piace memorizzare tutti i miei file su freebox (sotto Unix) per mantenere le cose centralizzate e facili da gestire. Una delle cose stupende riguardanti Samba è che consente agli amministratori di centralizzare lo spazio per i file utente piuttosto che fornire agli utenti due locazioni separate per i file sotto Windows e sotto Unix.

Stampa tramite Samba

Oltre alle condivisioni standard (che operano come directory virtuali), è possibile vedere inoltre una condivisione chiamata nec. Un'altra caratteristica molto importante di Samba è che è possibile condividere una stampante allo stesso modo di come si può condividere da qualsiasi pc Windows. nec è la mia stampante laser NEC SuperScript 870, che è collegata a freebox ed è configurata come una stampante standard Unix basata su lpd. Samba consente a questa stampante di essere usata da client Windows proprio come sarebbe consentito da una stampante di rete standard di Windows.

Ci si potrebbe chiedere come sia gestita la questione dei driver di stampa, visto che la stampante sta operando in ambiente Unix. Buona domanda. Su freebox, nec è configurata come una stampante standard basata su porta parallela che opera in modalità "raw". In altre parole, tutti i job di stampa inviati a nec sono inviati direttamente alla stampante così come sono, senza nessuna operazione di filtraggio o manipolazione dei dati.

Su kompressor, nec è configurata come una stampante di rete NEC SuperScript 870. Quando gli viene inviata una stampa, il driver di stampa locale di NT genera i dati binari appropriati per nec, che sono automaticamente inviati tramite la rete a Samba su freebox. Samba inserisce automaticamente questi dati, senza toccarli, nella coda di nec, e la stampante incomincia a stampare il job.

E' necessario far notare che sfortunatamente la mia NEC SuperScript 870 non è una stampante Postscript; utilizza la tecnologia proprietaria di Adobe PrintGear. Sebbene tale stampante non sia completamente supportata sotto Unix, lavora comunque perfettamente quando si stampa da Windows (questo poiché tutti i dati generati specificamente per la stampante sono generati dal lato Windows, usando il driver di Windows). Ironicamente, siccome GhostScript (un interprete compatibile con PostScript liberamente disponibile sotto Unix) non conosce come produrre output compatibile con PrintGear, è possibile stampare solamente testo ASCII puro o documenti basati su PCL4 da 300 dpi dal lato Unix; ma dal lato Windows, il driver di Windows NT consente di stampare a 600 dpi pieni. Al momento non risulta scomodo, poiché la maggior parte delle stampe vengono inviate da Windows. Ad ogni modo, in futuro sarebbe bello avere una stampante che supporta Postscript così da poter sfruttare tutte le funzionalità di tale stampante anche da Unix.

Condivisioni Samba

OK, è ora di muoversi allo screenshot successivo. Questo mostra i contenuti della condivisione drobbins su freebox, che è configurato in modo tale da condividere la mia home directory sotto Unix. Tutti i file mostrati nella finestra risiedono in realtà su freebox ma sono accessibili direttamente dalle macchine client Windows NT. E' una cosa incredibile essere in grado di integrare Windows e Unix!


Figura 1.3: La mia directory home su freebox, acceduta da kompressor

Fig. 3

Comprendere Samba

Per mostrare altro riguardo a come funziona Samba internamente, si provvederà a dare una spiegazione molto semplificata di cosa è successo dietro le quinte quando si è curiosato nelle Risorse di Rete. Bisognerebbe spiegare prima qualcosa riguardo la sessione di Windows corrente. Siccome si sta utilizzando Windows Workstation NT, è stato necessario autenticarsi per poter accedere alla macchina. Per questa sessione NT ci si è autenticati sulla macchina locale con il nome utente "Administrator" e la password "miapassword". Se si fosse utilizzato Windows 95 o 98, il driver standard di rete avrebbe chiesto nome utente e password allo stesso modo. Sotto Windows 95 e 98, questa password non è realmente utilizzata per determinare chi può accedere alla macchina locale; più propriamente, è memorizzata ed utilizzata per connettersi alle risorse di rete.

Naturalmente, Windows NT è estremamente sicuro se comparato con Windows 95 e 98 e non consente di utilizzare le macchine a meno che non si fornisca un nome utente ed una password validi. Dopo che kompressor ha verificato nome utente e password consultando il suo database locale per la sicurezza, ha consentito di iniziare ad usare windows. Kompressor utilizza allo stesso modo il nome utente e la password per provare automaticamente ad autenticarsi quando ci si connetterà alle risorse di rete protette da password.

Esplorare la Rete

Dopo aver cliccato su Risorse di Rete, è comparsa una finestra contenente tutte le macchine compatibili con Windows presenti nella mia rete. Affinché ciò accadesse, kompressor ha contattato dietro le quinte freebox, per ottenere una lista navigabile di tutte le macchine compatibili con Windows presenti sulla sottorete. Kompressor ha contattato freebox poiché si è configurato Samba su freebox in modo che egli divenisse il "local master browser" della mia rete (che significa che freebox gestisce la lista delle risorse di rete che appaiono in Risorse di Rete).

La cosa fatta successivamente è stata fare un doppio click su freebox, che ha fatto sì che una nuova finestra comparisse e mostrasse tutte le condivisioni presenti su freebox. Affinché kompressor ricevesse queste informazioni, si è connesso ad una condivisione speciale nascosta su freebox (chiamata IPC$) come utente guest (ospite) e ha scaricato tutti i nomi ed i tipi di tutte le condivisioni disponibili. Nel prossimo articolo, quando si configurerà Samba, sarà necessario inserire un'opzione nella configurazione di Samba che specifica quale account Unix è equivalente all'utente "guest" di NT. Se non è impostata correttamente, non si sarà in grado di esplorare nessuna delle risorse su una macchina su cui gira Samba. E' importante menzionare ciò poiché chiarisce che non è necessario nessun permesso speciale per vedere le condivisioni SMB/CIFS su un server Samba, degno di nota per fini di sicurezza.

Si è ora in grado di cliccare sulla condivisione drobbins per mostrare il contenuto della mia home directory. Mentre ciò è accaduto automaticamente senza preoccuparsi di nulla, è importante comprendere la conversazione nascosta avvenuta tramite freebox e kompressor che alla fine ha consentito l'accesso alla condivisione drobbins. Ma prima di addentrarci in tutto ciò, si discuterà velocemente qualche problematica di sicurezza riguardante Samba.

Sicurezza in Samba

Quando è stato configurato Samba, si è configurata la condivisione drobbins in modo da essere protetta da password; anche se sono sulla mia LAN privata, mi piace comunque mantenere le cose protette fino ad un certo livello. Allo stesso tempo, si sono configurati due utenti Samba: drobbins e administrator. Le loro password sono state configurate in modo da corrispondere a quelle della mia Workstation NT per motivi di consistenza. Per la condivisione drobbins, la mia politica di sicurezza è come segue: se si è un utente Samba valido, e si fornisce la password corretta per tale utente, sarà consentito l'accesso alla condivisione drobbins. Quindi, sia administrator che drobbins avranno l'accesso consentito ogni qual volta che l'utente fornirà la password corretta per il loro account.

Ora, si torni indietro alla conversazione tra freebox e kompressor. Poiché ci si è loggati come administrator, un doppio click sulla condivisione drobbins ha fatto si che Windows NT provasse automaticamente ad autenticarsi con Samba inviando il nome utente "administrator" e la password "miapassword" a freebox. Samba ha poi controllato questi valori con quelli nel suo database di sicurezza interno (che è separato dal database standard Unix passwd), verificando quindi il nome utente e la password. Dopo aver verificato che la combinazione nome utente/password fosse corretta, Samba ha acconsentito l'accesso.

Ci si potrebbe chiedere perché Samba ha un suo unico database delle password. Perché non si limita ad utilizzare la password standard di Unix per autenticare l'utente administrator? Mentre era possibile fare ciò quando Windows trasmetteva le password in plain-text, tutte le versioni moderne di Windows trasmettono ora le password SMB/CIFS in una forma criptata che non è compatibile con l'hash standard delle password Unix. In altre parole, non c'è modo per Samba di usare l'hash standard passwd di Unix per verificare che una password criptata di Windows sia corretta. Fortunatamente, Samba offre numerosi modi per sincronizzare questi database così che la vita di un amministratore di sistema non diventi troppo confusa.

Samba dal lato Unix

Ora che si è visto Samba dal lato Windows, è il momento di dare uno sguardo a Samba dal lato Unix. Per incominciare, qualche informazione generale. Il sito principale di Samba è http://fi.samba.org, e la versione di produzione corrente di Samba è la 2.0.7, in data 25 aprile 2000, ed è quella che utilizzeremo in questa serie. Siccome qualcuno potrebbe star installando Samba da un RPM, altri potrebbero star provando a far girare Samba sotto FreeBSD o Solaris (piuttosto che GNU/Linux), e un buon numero di voi potrebbe star compilando Samba dai sorgenti, è possibile che ci siano alcune differenze nelle posizioni dei file. (Le posizioni di default dei file di Samba sono configurabili a tempo di compilazione). Su alcuni sistemi certi file saranno in /usr/local/, mentre su altri sistemi potrebbero finire altrove. Ci si riferirà ai file di configurazione tramite il loro nome (piuttosto che il percorso completo) per evitare alcuna inconsistenza.

Se si compila e installa Samba dai sorgenti originali, i file di configurazione di Samba si possono trovare in /usr/local/samba/etc/smb.conf. Tuttavia, se si installa il software da un RPM binario o da un altro formato di pacchetizzazione GNU/Linux, si troverà probabilmente smb.conf in /etc. Tutto ciò diventa confuso molto in fretta. In modo da rendere tutto più facile, si tratteranno le locazioni dei file quando Samba è compilato dai sorgenti ed ogni cosa è installata nella sua posizione in /usr/local/samba. Si prega di notare che il fine di questa sezione è semplicemente quello di diventare familiari con la configurazione di Samba dal lato Unix e non intende guidare passo passo attraverso il processo di compilazione, che sarà trattato nell'articolo successivo. Al momento ci si sta solamente scaldando! Seguono le locazioni standard dei file dopo una compilazione ed installazione pulita di Samba:

/usr/local/samba/bin contiene tutti gli eseguibili binari di Samba. Nella versione 2.0.7, i principali eseguibili di Samba si chiamano smbd e nmbd. smbd è designato per offrire i servizi di condivisione dei file SMB/CIFS, mentre nmbd svolge funzionalità relative a WINS per agevolare la risoluzione degli indirizzi IP in nomi NetBIOS. C'è spazio inoltre per altre utilità, inclusa smbclient, un tool ftp-like che può essere utilizzato per connettersi ed interagire con condivisioni SMB/CIFS, e testparm, una pratica utilità che si accerta che il principale file di configurazione di Samba abbia una sintassi corretta.

/usr/local/samba/etc contiene smb.conf, il principale file di configurazione di Samba. smb.conf è un file molto importante, contenente quasi tutte le opzioni di configurazione di Samba. In questo file si troveranno i settaggi per controllare le funzionalità globali di Samba come pure le opzioni di configurazione per abilitare la condivisione di specifici alberi di directory e stampanti. Non appena si farà esperienza con Samba, si aggiungeranno al proprio smb.conf ulteriori opzioni di configurazione che metteranno a punto Samba per il proprio server.

Una delle maggiori lamentele riguardanti Samba è che il file smb.conf ha una curva di apprendimento piuttosto ripida. Anche se ciò è vero, ci si ricordi che Samba non è solamente un semplice programma per la condivisione di file. Ha la responsabilità di integrare sensatamente due sistemi significativamente differenti: Windows e Unix. Qualche volta il processo di configurazione sembrerà complicato, ma non si abbia paura. Quando si avrà ogni cosa perfettamente funzionante, ne sarà valsa la pensa!

/usr/local/samba/private contiene smbpasswd, il file criptato delle password di Samba.

Nota: In smb.conf, Samba può essere configurato in modo tale da rimanere in ascolto di connessioni su particolari interfacce di rete o accettare connessioni solamente da particolari sottoreti o indirizzi IP. Questi metodi possono essere utilizzati per migliorare ulteriormente la sicurezza.

Si è precedentemente detto che Samba ha il suo personale spazio di memorizzazione delle password che è unico e separato dal database standard Unix passwd. Nel file smbpasswd Samba memorizza tutti gli utenti e le workstations (e le password a loro associate) ai quali è consentito di accedere alle condivisioni Samba. Condivisioni individuali possono essere ulteriormente limitate a particolari utenti e gruppi. Per modificare il file smbpasswd, si utilizza l'omonimo eseguibile binario smbpasswd.

/usr/local/samba/var contiene i due file di log di Samba, log.smb e log.nmb. Come si potrà immaginare, log.smb è il file di log di smbd mentre log.nmb è il file di log di nmbd.

/usr/local/samba/swat contiene i file usati da SWAT. SWAT è il tool di amministrazione Web di Samba, ed è una fantastica piccola applicazione web che consente agli amministratori di gestire la loro rete Samba remotamente. Non tratteremo SWAT in questa serie, ma si potranno trovare ulteriori informazioni su SWAT nella pagina principale di SWAT (si veda la sezione Risorse).

Cosa segue

Si sono trattati molte funzionalità e concetti chiave di Samba. Si è data una visione generale della struttura dei file dal lato Unix di Samba. Nel mio articolo successivo si sarà guidati attraverso il processo di configurazione di samba sul proprio sistema. Diversamente da questo articolo, che si è concentrato maggiormente sui concetti, il successivo articolo avrà più lo stile di un HOWTO. Ora che si sono trattati i concetti chiave, è tempo di accelerare il passo. Arrivederci al prossimo articolo!

Risorse



Stampa

Aggiornato il 6 ottobre 2005

Oggetto: Samba è un tool incredibile per chiunque usi sia GNU/Linux che Windows. Implementando il protocollo SMB/CIFS sotto Unix, Samba consente ai sistemi Unix di condividere le loro risorse con client Windows standard. In questo articolo introduttorio, Daniel Robbins darà un'introduzione a ciò che Samba può fare. L'attenzione sarà concentrata sui concetti chiave. (Si sarà guidati passo passo nel processo d'intstallazione nel suo articolo successivo). Alla fine di questo articolo, si avrà una buona comprensione di ciò che fa Samba e di come riesce a farlo.

Daniel Robbins
Autore

Gianni Costanzi
Traduttore

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.