last update 02/ may / 2002

Samba...

Queste note derivano da una estenuante esperienza di installazione di Samba e sono un esempio di come spesso nell'informatica gli automatismi ci complicano la vita.

Per chi non lo sapesse Samba è una suite di programmi che fornisce servizi di condivisione di files e di stampanti a dei clients SMB. Il che, detto in parole più semplici, significa poter connettere un host GNU/Linux a dei PC windows e viceversa.

L'obiettivo che si voleva raggiungere era di dotare gli utenti di un file server affidabile nel quale copiare i propri dati, in modo che poi questi venissero salvati automaticamente tramite l'unita di backup del server. Visto il costo delle licenze sembrava assurdo ricorrere a Windows NT quando i client Windows possono usufruire dei servizi offerti da Samba (per informazioni http://it.samba.org/samba/samba.html) anche perchè, per chi non lo sapesse, Win NT richiede una licenza per ogni client che si collega.
Per capire meglio il seguito, spiego la modalità di lavoro prevista. Ogni pc client viene configurato per seguire il logon ad un dominio NT che di seguito viene chiamato AZIENDA. Quando l'utente esegue il logon tramite un nome di login ed una password, che di fatto sono quelli registrati sul server Linux, viene eseguito uno script che risiede nella directory /home/netlogon del server e che si chiama con il nome di login dell'utente e l'estensione .bat (es. l'utente mario fa riferimento a /home/netlogon/mario.bat. Questo script contiene l'istruzione di mappare la home directory dell'utente nel server come disco F: del client. L'utente può quindi poi eseguire le copie dei suoi files nel disco F: il quale viene salvato su nastro giornalmente.

La versione di Linux utilizzata è una Red Hat 6.2 con installazione custom (ovvero i pacchetti scelti manualmente secondo le nostre necessità). La versione di Samba (2.0.6) fornita con tale distribuzione è oggi piuttosto datata e soffre di alcuni limiti che verranno illustrati alla fine dell'articolo

Una volta installato l'apposito rpm (samba-2.0.6-9.rpm) abbiamo avviato linuxconf per la configurazione del servizio.
Disastro!!!
Non voglio tediare nessuno con la serie di errori, tentativi e problemi incontrati pur avendo fatto e disfatto la configurazione più volte. I risultati ottenuti sono stati: (in ordine casuale) mancato avvio del servizio, nessuna visibilità in rete, tasks bloccati...
Vi anticipo subito che il problema è dovuto a Linuxconf (o almeno alla versione presente nella distribuzione RH 6.2). Linuxconf e un bellissimo strumento, molto comodo, fornisce un interfaccia grafica che semplifica parecchio molte operazioni di configurazione del sistema, ma sbaglia a scrivere la configurazione di Samba nel file /etc/smb.conf e sovrascrive i tentativi di modifica manuale.
Risultati simili sono stati ottenuti con l'interfaccia grafica SWAT, un tool per l'amministrazione del file smb.conf attraverso il client web.

Soluzione?? Semplice!

  1. Abbiamo rimosso samba e reinstallato l' rpm.
  2. Stampato i manuali di samba
  3. Editato manualmente il file /etc/smb.conf con il manuale a portata di mano, fino ad ottenere il risultato voluto (i commenti all'interno del file aiutano molto)
Riguardo all'ultimo punto consiglio a tutti la lettura e la stampa dell'ottimo help in linea relativo al file smb.conf e tutti i documenti rintracciabili all'indirizzo http://it.samba.org/samba/docs/.
Ecco quali sono le modifiche fondamentali da eseguire sul file smb.conf che viene installato di default in modo da ottenere un host linux che si comporta come un controllore di dominio Win NT:

Le righe che seguono riportano il nome del gruppo di lavoro/dominio della rete Windows (nell'esempio un classico...nome dell'azienda) e la dicitura che compare quando si "sfoglia la rete" dal client.

  • workgroup = AZIENDA
  • server string = Samba Server
La riga che segue è una delle principali fonti di guai...evitate di modificarla o rimuoverla
  • socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
Questo valore condiziona la priorità della macchina per l'elezione a master browser portare il valore sopra 30 se sono presenti macchine NT fra i client
  • os level = 33
Nella nostra specifica situazione si desiderava che ogni utente avesse in rete una sua directory dove effettuare il backup. Per ottenere cio facciamo eseguire ai clients una connessione automatica sfruttando uno script di logon che viene avviato automaticamente dopo l'autentificazione dell' utente.
Attiviamo ora per i clients il logon al dominio 'NT'
  • domain logons = yes
  • logon script = %U.bat
  • encrypt passwords = no
Quella di non usare le password criptate è stata una scelta maturata dopo vari test. Vi erano infatti minori problemi nell'usare le password non criptate con Windows 98 (è sufficiente modificare una chiave nel registry)(come indicato nella documentazione di Samba) rispetto all'usare le password criptate con Win 95 (oltre a modificare la chiave è necessario patchare i clients).

Ho approntato una directory /home/netlogon/ ove inserire i files di logon nella forma spiegata all'inizio. La directory viene mappata con le seguenti istruzioni:

  • [netlogon]
  • comment = Network Logon Service
  • path = /home/netlogon
  • guest ok = yes
  • writable = no
  • share modes = no
  • browseable = no

Tali files contengono un istruzione per il collegamento della home directory dell'utente
net use f: \\nomeserver\nomeshare che viene mappata come disco F:. Chiaramente nomeshare è il nome assegnato allo share che punta alla home directory dell'utente nella forma seguente:

  • [nomeshare]
  • path = /home/nomeutente
  • guest ok = no
  • writable = yes
  • browseable = no
  • valid users = +nomeutente
  • create mask = 0775
  • directory mask = 0775


Ultime note riguardano la versione di Samba usata: la 2.0.6 è infatti nata per fornire servizi ai clients Win9.x e si incontrano serie difficoltà con WinNT, Win2K e XP. Per questi s.o. vi rimando all'ottimo articolo di Tommaso Di Donato apparso su Pluto Journal

di Rudi Giacomini Pilon