Samba (1) è un insieme di strumenti realizzati da Andrew Tridgell per le piattaforme Unix e GNU/Linux, distribuito sotto licenza GNU GPL, curato da un piccolo gruppo di persone di varie parti del mondo coordinate dallo stesso Tridgell.
Samba utilizza il protocollo SMB (Server Message Block) definito per reti MS-Windows e a sua volta basato sull'interfaccia di rete NetBIOS (Network Basic Input Output System). SMB è stato progettato originariamente per reti molto piccole. Per permettere la connessione a reti più estese ed eterogenee, Microsoft ha sviluppato il sistema CIFS (Common Internet File System) ancora basato su NetBIOS.
Samba può essere a tutti gli effetti considerato una versione libera e gratuita di CIFS; con esso, una macchina GNU/Linux, può accedere alle risorse condivise di un elaboratore MS-Windows ma anche mettere a disposizione proprie risorse a clienti MS-Windows o GNU/Linux.
Più in dettaglio ecco quali sono i servizi offerti da Samba:
servente per offrire la condivisione di file system e stampanti;
cliente per l'accesso a risorse NetBIOS su macchine remote Unix, MS-Windows, Novell;
master browser sia locale che di dominio;
servente per l'autenticazione di clienti di un dominio MS-Windows;
Dalla versione 3 (rilasciata nel settembre 2003), abbiamo anche:
cliente o servente di active directory con supporto a LDAP (Lightweight Directory Access Protocol) e Kerberos5 ma senza la possibilità di sostituire un domain controller di active directory MS-Windows 2000 o 2003;
instaurazione di relazioni di fiducia con serventi MS-Windows NT;
strumenti per la migrazione rapida e automatica di un dominio gestito con PDC (Primary Domain Controller) e BDC (Backup Domain Controller) MS-Windows NT in un dominio gestito con PDC e BDC Samba;
nuovo comando net analogo a quello presente su piattaforma MS-Windows
La versione 3 di Samba ha portato poi altre novità e miglioramenti, forse meno vistosi, ma ugualmente importanti:
supporto alla codifica Unicode;
maggiore efficienza del programma Winbind (gestito ora con un doppio demone(2));
maggiore modularizzazione di molti componenti, come la gestione utenti e l'autenticazione;
migliore supporto per la stampa da MS-Windows 2000;
possibilità di associare moduli VFS (Virtual File System) multipli ad una stessa condivisione;
È sicuramente anche il caso di elencare ciò che Samba non può fare (almeno per il momento):
gestione mista di un dominio MS-Windows NT (cioè con PDC NT e BDC Samba o viceversa);
sostituzione di un servente MS-Windows 2000 o 2003 per il controllo di active directory.
Riguardo ai protocolli coinvolti nel funzionamento di Samba, è necessario far presente che MS-Windows può incapsulare messaggi SMB sui protocolli IPX/SPX, NetBEUI e TCP/IP mentre Samba può dialogare con macchine MS-Windows solo attraverso il TCP/IP. Questa non è comunque una grande limitazione vista la diffusione ormai universale di tale protocollo
La descrizione di come NetBIOS debba operare all'interno di una rete TCP/UDP è contenuta nei documenti RFC 1001/1002. Lo standard descritto in questi documenti è noto come NBT ( NetBIOS Over TCP/IP) ) ed è alla base del funzionamento sia delle reti NetBIOS che di Samba.
Come detto viene presa in esame la versione 3 di Samba.
I pacchetti da installare si differenziano in base alla distribuzione GNU/Linux usata; qui si fa riferimento alla Fedora Core e alla Ubuntu (derivata da Debian, quindi le informazioni fornite sono valide quasi interamente anche per quest'ultima).
Per la Fedora i pacchetti da usare sono:
samba-x.y.z.rpm
samba-client-x.y.z.rpm
samba-common-x.y.z.rpm
Il primo pacchetto contiene gli strumenti lato servente di Samba, il secondo gli strumenti lato cliente, il terzo una serie di file indispensabili per il funzionamento sia del servente che del cliente.
Entrando più nel dettaglio:
nel pacchetto samba si trovano i demoni nmbd e smbd che sono alla base del funzionamento di un servente Samba e alcuni programmi di servizio come smbstatus;
nel pacchetto samba-client sono contenuti altri programmi di servizio come nmblookup, smbclient, smbmount, smbumount, smbtar, findsmb;
nel pacchetto samba-common si trovano tra gli altri i programmi smbpasswd, net, testparm, winbind (e relative librerie), e il file di configurazione di Samba /etc/samba/smb.conf
preparato con alcune impostazioni predefinite.
Per la distribuzione Ubuntu la situazione è leggermente diversa; i pacchetti da considerare sono:
samba-x.y.z.deb
samba-common-x.y.z.deb
smbclient-x.y.z.deb
smbfs-x.y.z.deb
libsmbclient-x.y.z.deb
winbind-x.y.z.deb
I primi due pacchetti sono più o meno analoghi a quelli di Fedora; la parte cliente viene invece suddivisa nei pacchetti smbfs (contenente i comandi smbmount, smbumount), smbclient e libsmbclient (per il comando smbclient), mentre il programma winbind con le sue librerie è in un pacchetto a parte.
Tutti questi elementi sono presi in considerazione nel seguito di questo documento.
2) Un demone è un programma di servizio costantemente in esecuzione e pronto a rispondere a richieste a esso rivolte da altri processi in esecuzione localmente o da una posizione remota