Reti miste e Samba

Samba è un pacchetto completo di programmi che permette la condivisione di risorse con computer Windows, oppure l' accesso a risorse condivise su computer Windows. Il protocollo usato da Windows per l'accesso al file system dalla rete è il Server Message Block (SMB) da cui il nome Samba dato a questa utlity.

Per usare al meglio Samba è necessario conoscere bene le reti Windows; infatti sono previste funzionalità avanzate che permettono di integrare Samba anche in Domini NT, sia con funzioni di server che di client. Inoltre l'ultima versione prevere una compatibilità completa con le reti Windows2000, compresa la gestione del DFS (Distributed File System), la compatibilità col nuovo sistema di stampa, e la possibiltà di usare per l'autenticazione il database utenti fornito da WindowsNT o 2000.
Poichè ci sono degli ottimi HOW-TO sull'argomento, e la documentazione di Samba à estremamente ricca, non ritengo necessario approfondire ulteriormente le nozioni più specializzate, ma mi limiterò a trattare il caso della condivisione con una rete Windows di tipo Workgroup, offrendo solo qualche spunto sulle possibilità di gestione molto più complesse che si potrebbero ottenere.

Usare Samba come server in una rete di questo tipo può consentire alcuni vantaggi come la possibilità di attivare la condivisione a livello utente anche senza disporre di un server di dominio, e usare le protezioni del file system di Linux nei confronti degli utenti Windows che accedono alle risorse condivise.
Lo svantaggio è che la condivione delle risorse non è così immediata (non si può condividere una cartella facendo click col pulsante destro del mouse), ma bisogna apportare alcune (semplici) modifiche al file di configurazione di Samba e poi riavviare il servizio.

Passi per la condivisione con Windows

Lato server

  1. Installare SAMBA server (meglio se è già stato caricato durante l'installazione).
    Per l'installazione dei pacchetti, non è questo il luogo per una digressione. Praticamente tutte le distribuzioni forniscono Samba, quindi potete caricarlo dai CD usati per l'installazione con il packet manager fornito dalla vostra distribuzione.
    I programmi principali sono:
    smbd demone (=servizio) che consente di gestire le sessioni NetBios (=Network Based Input Output System, il sistema di Windows)
    nmbd il demone che sovrintende al Net Browsing (=sfogliare le risorse di rete)
    swat un demone che consente la configurazione di Samba tramite una interfaccia grafica accessibile dal browser (N.B.: non l'ho mai provato)

  2. Decidere se configurare il servizio come permanente o temporaneo N.B.: probabilmente non dovrete decidere niente, la vostra distribuzione lo avrà già fatto per voi. In genere la cosa migliore per un uso non occasionale è attivare permanentemente smbd e nmbd, e solo temporanemante swat

  3. Configurare le policy di accesso e le condivisioni
    modificando il file smb.conf, che in genere si trova in /etc o /etc/samba
    Questo file è diviso in sezioni, ognuna della quali contiene dei gruppi di opzioni che riguardano una particolare configurazione.
    Quelle essenziali sono:
    [global] definisce la configurazione di base
    [printers] usata per condividere tutte le stampanti locali con i client Windows
    se si desidera condividerne solo alcune, bisogna definire una sezione specifica per ogni stampante condivisa
    [homes] consente all'utente l'accesso alla propria home directory anche da Windows (ovviamente se usa una corretta autenticazione)
    [share] per ogni cartella condivisa è necessario creare una sezione. Il nome dato alla sezione è il nome di condivisione,con cui la cartella comparirà nelle risorse di rete.
  4. Abilitare gli utenti di Windows all'accesso alle share.
    Linux ha bisogno di una identificazione degli utenti, altrimenti non concederà l'accesso alle risorse condivise (nemmeno Windows, del resto). Ci sono tre possibilità:

  5. Dopo aver finito la configurazione, usare il comando testparm per verificare la correttezza sintattica
    questo eviterà che gli eventuali errori di digitazione possano creare problemi all'avvio del server

  6. Riavviare il server Samba per rendere effettiva la configurazione
    Questo può essere effettuato molto semplicemente riavviando il computer, anche se non è strettamente necessario, è sufficiente riavviare il demone.

Lato Client

  1. I client Windows 9x vanno configurati normalmente per l'accesso al gruppo di lavoro.

  2. Se si è deciso di usare la transazione di password in chiaro bisogna però effettuare una modifica al registro di configurazione:
  3. Riavviare il computer per rendere effettive le modifiche

  4. Provare a sfogliare le risorse di rete, e controllare la presenza del server Linux


Passi per la condivisione da Windows

Lato server

  1. Configurare normalmente il server Windows per la condivisione
    (per i dettagli, vedi le lezioni sulle reti Windows e NT )

Lato client

  1. Installare samba client
  2. Per verificare l'accesso alla rete, digitare:
    smbclient -L NomeComputerServer
    comparirà un elenco delle risorse condivise accessibile sul computer indicato
  3. preparare una cartella locale come punto di innesto per ogni risorsa a cuisi desidera accedere
  4. Montare le risorse condivise, usando smbfs come tipo di file system:
    mount -t smbfs "\\\NomeComputer\NomeRisorsa" /mnt/PuntodiMount -o guest
    N.B.: l'opzione -o guest serve ad evitare che venga richiesta la password.
    Se la password è necessaria è possile fornirla con l'opzione: -o password=password

Dettagli sulla configurazione

[global]

Esempio minimo di sezione [global] per un computer di nome Pentium4 appartenente al gruppo di lavoro Team, configurato in modo da condividere le stampanti locali e due cartelle: LAVORO in lettura e scrittura, e DOCUMENTI in sola lettura, con tutti gli utenti della rete
Le righe che iniziano con # sono di commento.

[global]
workgroup = Team
netbios name=Pentium4
server string = Server Linux
# il computer comparirà sfogliando le risorse di rete del gruppo Team
# con il nome Pentium4 e il commento Server Linux
security = share
# la condivisione è impostata a livello di risorsa
guest account = smbuser
# viene definito un utente generico per l'accesso alla rete
# questo utente deve essere creato con password vuota e senza home nè login shell
printing=lpring
#indica il sistema di stampa usato del server. Più spesso è = bsd
printcap name = /etc/printcap
# qui bisogna indicare il nome e il percorso del file di definizione delle stampanti (di solito è appunto /etc/printcap)
load printers = yes
#indica che tutte le stampanti vanno condivise

[printers]

esempio minimo di sezione [printers]

[printers]
comment = stampante
# questo è il commento che appare accando alla stampante quando viene visualizzata
# il nome è definito nel file printcap
path=/var/spool/samba
# percorso della directory di spool (dove viene salvata la coda di stampa)
# tutti gli utenti che devono stampare devono avere permesso di scrittura siu questa cartella
# N.B.: di solito è una cartella pubblica
guest ok = yes
# lo stesso che : public=yes
# significa che tutti possono stampare e non è richiesta alcuna password
printable = yes
# questa opzione è obbligatoria per le stampanti

[share]

Esempio di due cartelle condivise, LAVORO e DOCUMENTI

[LAVORO]
comment = cartella di lavoro
path=/local/work
# indicare il percorso assoluto della cartella
browseable = yes
# compare nelle risorse di rete
writeable = yes
# lo stesso che: read only = no
# condivisione in lettura e scrittura
public = yes
# non viene richiesta password, e vengono usati i permessi dell' utente guest per l'accesso alla cartella

[DOCUMENTI]
comment = cartella documenti
path=/local/docs
# indicare il percorso assoluto della cartella
browseable = no
# non compare nelle risorse di rete
writeable = no
# lo stesso che: read only = yes
# condivisione in sola lettura
public = yes
# non viene richiesta password, e vengono usati i permessi dell' utente guest per l'accesso alla cartella

N.B.: indipendentemente dai permessi di condivisione, Linux applica poi i permessi del file system locale per consentire o meno certe operazioni all'utente. (come in Windows NT o 2000 se il file system è: NTFS)

[homes]

Esempio di una sezione [homes] per la condivisione della Home directory di Linux. L'utente Windows deve avere una corrispondenza con un utente Linux dotato di regolare Home (non l'utente guest)

[homes]
browseable = no
# serve ad evitare che siano visibili le Home di tutti gli utenti, che tanto non sarebbero accessibili
read only = no


Considerazioni sulla condivisione

L'esempio di configurazione visto sopra consente di condividere le cartelle senza nessuna restrizione per tutti gli utenti della rete.
In realtà Samba consente di usufruire di un sistema di protezione molto più raffinato di quello disponibile in Windows9x.

Protezione basata sul computer

Sono consentite due clausole:
hosts access = <lista di computer>
hosts deny = <lista di computer>
che possono essere inserite sia nella sezione [global] che in quella delle share: Nel primo caso la clausola ha effetto per tutte le condivisioni, nel secondo solo per quella indicata.
Le clausole possono essere presenti entrambe.

La lista di computer può essere:

Protezione a livello di risorsa

Ad ogni risorsa viene associata una password, e quando l'utente tenta di accedere alla risorsa, viene richiesta la passwod (una sola volta nella sessione di lavoro).
Per far ciò Linux deve associare alle risorsa un nome utente Linux, la cui password viene usata poi per l'accesso, con la clausola:
user = nomeutente .

Protezione a livello utente

Questa è la protezione 'naturale' per un computer Linux. Prima di accedere alla risorsa, si controllano i permessi dell'utente su di essa: quindi viene usata la struttura del file system Linux per l'assegnazione degli accessi.
Naturalmente per fare ciò è necessario che l'utente sia riconosciuto dal server Samba, cioè deve essere inserito nel data base degli utenti Linux.

Per abilitare gli utenti di Win all'accesso alle share, la cosa migliore è mapparli su altrettanti utenti Linux usando il file:
/etc/smbusers oppure /etc/samba/smbusers
(in realtà può avere qualunque nome, ma ne esiste uno preconfezionato fornito col pacchetto samba che di solito viene modificato per adattarlo alle esigenze della rete locale)
Non è necessario preoccuparsi troppo per le password: se le password corrispondono va tutto bene, altrimenti quando l'utente sfoglia la rete, verra' richiesta la password.

Il percorso di questo file deve essere specificato in smb.conf con la seguente clausola:
username map = /etc/smbusers

Protezione a livello server o dominio

Queste opzioni servono a impostare Samba in presenza di un Dominio NT o Windows 2000. Non le approfondiremo ulteriormente.


Condividere di una stampante su un server Windows

  1. Controllare il file etc/printcap
    che contiene l'elenco delle stampanti disponibili, sotto questa forma:
    # cm - commento: si può inserire a piacere
    # lp - nome della stampante: una parola senza spazi
    # sd - cartella di spool (sul computer locale)
    # af - accounting file (si può lasciare vuoto
    #mx - lunghezza massima del file (zero=illimitato)
    # if - input filter (script di filtraggio dati)
    la device della stampante deve essere /dev/null.

  2. Controllare la directory di spool:
    deve essere scrivibile da tutti quelli che possono stampare

  3. Controllare che esista questo file:
    /usr/bin/smbprint

    si tratta dello script che filtra le operazioni di stampa verso Win, richiamando il programma smbclient per l'invio dell' output al computer Windows.
    Leggerlo ed eventualmente personalizzare alcune opzioni.

  4. Attenzione: questo script usa un file di configurazione che deve trovarsi nella directory di spool
    Il nome del server deve essere quello specificato nella configurazione della rete (in formato NetBios) e il nome della stampante deve essere il suo nome di condivisione (dato in Win nel server di stampa)
    La password deve essere quella richiesta da Win per la stampante (se c'e')
    Esempio di file .config
    server=SunRaise
    service=HP690C
    password=""

  5. Installare il driver per la propria stampante in modo che funzioni in modalità, grafica
    Per usare la stampante in modalità grafica, è necessario usare un filtro di tipo postscript, cioè un programma che sia in grado di leggere il formato postscript e convertirlo nel formato della stampante.
    A questo scopo è disponibile il programma ps che dispone di filtri in uscita (driver) per diverse stampanti.
    La RedHat ha una utility per la configurazione della stampante dal pannello di controllo: questa richiama prima uno script che cerca di riconoscere 'magicamente' il tipo di file, poi richiama il filtro più appropriato quindi il filtro per smbclient.
    Attenzione però al nome del computer quando si crea la nuova stampante: è, meglio inserirlo rispettando il protocollo NetBios (il nome che compare di default può essere errato)
    \\nomecomputer\nome-condivisione-stampante
    P.es:
    \\SunRaise\HP690C
    N.B: poichè la \ rappresenta il carattere di escape per la shell, se ci sono problemi, provate ad aggiungere una barra in più: \\\SunRaise