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
- 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) |
- Decidere se configurare il servizio come
permanente o temporaneo
- PERMANENTE: il servizio è attivato all'avvio e sempre
disponibile
In questo caso l'avvio dei due demoni smbd e nmbd va inserito nel run
level di default, con un link simbolico al file /etc/rc.d/init.d/smb
( il modo più semplice di gestire la faccenda è
usare un comodo Run Level Editor).
N.B.: Se avete una distribuzione con un avvio in stile BSD
(Slackware) dovrete modificare invece il file /etc/rc.x, dove x
è il numero di run level interessato.
- TEMPORANEO: il
servizio viene attivato su richiesta.
in questo caso l'avvio deve
essere inserito nel file di configurazione di inetd, /etc/inetd.conf.
(o nella directory xined.d se si possiede la nuova versione
xinetd)
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
- 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. |
- 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à:
- usare sempre un utente guest per l'accesso a tutte le
risorse condivise
- se si usa la transazione delle password in chiaro, è
possibile mappare gli utenti Windows su utenti Linux, e usare le
stesse password in Windows e in Linux
N.B.: In una rete locale chiusa, in presenza di utenti sufficientemente
affidabili, la transazione in chiaro delle password è
perfettamente accettabile
- se si desidera usare password crittografate, dato che la
crittografia di Linux è diversa da quella di Windows,
è necessario mappare le password.
Questa è la
soluzione più complicata, ma che garantisce maggiore
sicurezza in caso di reti piuttosto grandi e aperte verso
l'esterno
- 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
- 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
- I client Windows 9x vanno configurati normalmente per l'accesso al
gruppo di lavoro.
- Se si è deciso di usare la transazione di
password in chiaro bisogna però effettuare una modifica al
registro di configurazione:
- avviare regedit
- trovare la chiave:
/HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VXD/VNETSUP
- selezionare dal menù Modifica - Nuovo - Valore DWORD
- rinominare l'etichetta Nuovo valore #1 in:
EnablePlainTextPassword
- premere invio e come valore della chiave inserire il numero 1
- Riavviare il computer per rendere effettive le modifiche
- Provare a sfogliare le risorse di rete, e controllare la
presenza del server Linux
Passi per la condivisione da Windows
Lato server
- Configurare normalmente il server Windows per la
condivisione
(per i dettagli, vedi le lezioni sulle reti Windows e NT )
Lato client
- Installare samba client
- Per verificare l'accesso alla rete, digitare:
smbclient -L NomeComputerServer
comparirà un elenco delle risorse condivise
accessibile sul computer indicato - preparare una cartella locale
come punto di innesto per ogni risorsa a cuisi desidera accedere
-
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:
- una lista di indirizzi IP separati
da virgole:
Es: 168.81.11, 192.168.81.12, 192.168.81.100
- una lista di nomi separati da virgole:
Es: topolino, clarabella, pippo.disney.com
in questo caso i nomi devono essere 'risolvibili' dal sistema Linux.
Nella maggior parte dei casi, questo significa che devono essere
contenuti nel file hosts: dato che sono comunque nomi noti, possono essere
identificati localmente.
- un indirizzo di rete, anche con eventuali eccezioni:
Es: 192.168.81. EXCEPT 192.168.81.34
- un dominio NIS:
Es: @nomeDominio
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
- 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.
- Controllare la directory di spool:
deve
essere scrivibile da tutti quelli che possono stampare
- 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.
- 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=""
- 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