7.4. Servizi file e stampa in stile Windows con Samba

Linux può offrire servizi SMB (per esempio condivisioni in rete di file e stampante in stile WfW,Win95 e NT), usando il pacchetto Samba. Questa sezioni descriverà come configurare le risorse condivise e come accedervi da macchine client.

Il pacchetto Samba è incluso nella distribuzione Red Hat, potete controllare se l'avete installato, e qual è la versione che avete, digitando:

rpm -q samba

Se non è installato, allora dovrete farlo usando l'utilità RPM. Si veda la Sezione 10.1 per informazioni su come fare.

I file più importanti di Samba dei quali dovrete occuparvi sono:

/etc/smb.conf

File di configurazione di Samba dove sono impostati i parametri relativi alle risorse condivise ed ad altre cose (si veda di seguito)

/var/log/samba/

Posizione del file di log di Samba

/home/samba/

Posizione suggerita per impostare le risorse condivise. Comunque, potete scegliere la posizione nel file system in cui avete più spazio e dove possiate sistemare comodamente i vostri file. Personalmente, imposto una grande partizione montata su /archive/ e metto lì le mie condivisioni.

Il file "/etc/smb.conf" contiene le informazioni di configurazione sulle condivisioni di file e stampante. Le prime righe del file contengono le direttive di configurazione globale, che sono comuni a tutte le risorse condivise (salve che vengano ignorate su basi per-share), seguite dalle sezioni share.

L'installazione di Samba include un file smb.conf predefinito come può essere adatto ai vostri bisogni e necessita di pochi cambiamenti.

Ecco un esempio di questo file (che ho personalizzato pesantemente per mostrarvi alcune delle più importanti, e interessanti, opzioni):

# Righe comuni a tutti le parti (a meno che non vengano riscritte)
[global]
   # Numero di minuti di inattività prima che il client venga disconnesso
   # per evitare il consumo di risorse.  Molti client verranno riconnessi
   # automaticamente, quindi è una buona idea attivare questa opzione.
   dead time = 10

   # Non permette agli utenti di connettersi come "root".  :-)
   invalid users = root

  # Specifica il guest account (share che non necessitano
   # di password per connettersi.  La username deve essere valida
   # nel file /etc/passwd.
   guest account = guest

   # Specifica dove i file di log devono essere scritti.  Il suffisso "%m"
   # significa che i file di log verranno creati nel formato
   # log.machine-name (es. "log.twixel")
   log file = /usr/local/samba/logs/log.%m

   # dimensione massima dei log, in Kilobytes.
   max log size = 1000

   # Password level 3 significa che il carattere minuscolo o maiuscolo non è un 
   # problema quando s'inserisce una password. Potrebbe essere un po' meno
   # sicuro rispetto al livello 1 o 2, ma è un buon compromesso.
   password level = 3

   # Specifica che tutti gli share devono conparire nella browse list
   # (Viene ignorata se su basi per-share).
   browseable = yes

   # Se attivata, potrete vedere le connessioni attive usando il
   # comando "smbstatus".
   status = yes

   # Il livello di informazioni di debugging registrate nei file di log.
   # Valori più alti generano maggiori informazioni (le quali,spesso,
   # probabilmente non servono a molto).
   debug level = 2

   # Invierà ogni messaggio ricevuto sul server in stile Windows "POPUP"
   # al postmaster via e-mail.  Non molto utile, ma interessante dimostrazione
   # di quello che può essere fatto.
   message command = /bin/mail -s 'Message from %f on %m' postmaster < %s; rm %s &

   # Questa è una forma di caching che, se attivata, può migliorare
   # la lettura dei file.
   read prediction = true

   # Una lista di servizi che possono essere aggiunti automaticamente alla
   # browse-list.
   auto services = cdrom

   # La posizione del vostro file "printcap", un file di testo che
   # contiene le definizioni delle vostre stampanti.
   printcap name = /etc/printcap

   # Se attivata, tutte le stampanti nel file /etc/printcap saranno caricate
   # nella browse-list.
   load printers = yes

   # Il comando per la stampa sotto Linux.
   print command = lpr -r -P%p %s

   # il comando mediante cui ottenere informazioni sulla coda di stampa
   # (status della stampante).
   lpq command = lpq -P%p

   # Il comando per eliminare dalla coda, lavori di stampa
   # non voluti.
   lprm command = lprm -P%p %j

   # Il livello al quale Samba parteciperà alle elezioni per il browsing.
   # Generalmente impostata con un "valore alto" per fare in modo che Samba
   # vinca sempre nella rete. :-)
   os level = 34

# Qui stanno le share personali degli utenti. Se la username del client 
# corrisponde a quella del server, essi possono accedere alla loro home
# directory (se inseriscono la password corretta).
[homes]
   # I commenti appaiono nella browse list.
   comment = Home Directories

   # Questa confronta la username del client con quella della share.
   # Se non conbaciano, non verrà mostrato alcuno share nella browse
   # list.
   user = %S

   # Il percorso della share.  Per esempio, "smithj" dovrebbe essere mappato
   # "/home/smithj"
   path = /home/%S

   # Se attivata, permette l'accesso in lettura/scrittura alle share.
   writeable = yes

   # Solo un sinonimo inverso di "writeable".  Non abbiamo davvero
   # bisogno di tutti e due.  :-)
   read only = no

   # Tenetelo disattivato in modo che ci voglia una password per accedere alle
   # share.
   public = no

   # Non vogliamo che questa share (dopo tutto è privata) appaia nella
   # browse-list degli altri utenti.
   browseable = no

# Questa è una stampante accessibile pubblicamente, chiamata "hp_laser". Appare
# nelle browse list e può essere usata da ogni client.
[hp_laser]
   # Il commento che appare nella browse-list.
   comment = Main office printer (HP Laserjet 400)

   # Lo username di chi può accedervi (guest significa tutti gli utenti).
   user = guest

   # Tutti i file di stampa generati saranno prima creati
   # nella directory /tmp.
   path = /tmp

   # Non permettete la creazione di file eccetto attraverso le code di stampa.
   writeable = no

   # Imposta i permessi di conseguenza -- solo root accede 
   # ai processi di stampa.
   create mode = 0700

   # Se non attivato non c'è bisogno di password per accedere alle risorse.
   public = yes

   # Se attivato indica che questa è una stampante condivisa.
   printable = yes

# Qui di seguito si fornisce l'accesso al un dispositivo CD-ROM.
[cdrom]
   comment = Shared CD-ROM drive on Linux
   user = guest
   path = /cdrom
   writeable = no
   read only = true
   browseable = yes
   public = yes
   guest ok = yes

Suggerimento

Suggerimento: Recenti versioni di Samba, dalla 2.0 in poi, forniscono un'ottima utilità di configurazione chiamata "swat", che rende tutto il processo molto più user-friendly. L'utilità si mette in ascolto sulla porta 901 TCP del vostro server, quindi per usarla puntato il vostro browser web favorito come segue:

mydomain.name:901

(Ovviamente, per usare SWAT avrete bisogno che sia in funzione un web server, come Apache. Si veda la Sezione 7.1 per maggiori informazioni)

Le ultime versioni di Samba hanno anche altre importanti caratteristiche in più rispetto alle versioni precedenti alla 2.0. È bene che aggiorniate tale pacchetto.

Un client deve avere un TCP/IP network stack in esecuzione per connettersi alle risorse condivise. Inoltre, per far funzionare il browsing, il protocollo TCP/IP deve essere legato a NETBEUI. Sotto Windows 95 ciò può essere configurato dall'icona "Network" del pannello di controllo.

Posto che il client sia stato configurato correttamente, dovreste poter vedere le condivisioni in "Risorse di rete" (o equivalente se non state usando Window95/NT). Potete accedere ai drive o da risorse di rete o digitando il loro percorso assoluto (es. "\\mail\cdrom"). Se la condivisione richiede una password, ve ne verrà chiesta una.

Maggiori informazioni su Samba possono essere reperite sulla Samba Home Page (http://samba.anu.edu.au/samba/).