Disclaimer :
La versione originale di questo articolo è stata pubblicata da IBM
developerWorks ed è di proprietà di Westtech Information Services. Questo
documento è una versione aggiornata dell'articolo originale, e contiene
numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.
|
Introduzione a Samba, Parte 3
1.
Passare da Samba a samba: La fase di configurazione
Un breve riassunto
Qui c'è un elenco dei smb.conf con cui noi abbiamo lavorato:
Codice 1.1: /etc/smb.conf |
[global]
workgroup = nome_della_rete
security = user
encrypt passwords = yes
guest account = guest
# wins server = IP address of WINS server
# wins support = yes
local master = yes
os level = 99
domain master = yes
preferred master = yes
# hosts allow = 192.168.1.127.
# interfaces = eth1
[tmp]
path=/tmp
writeable=yes
|
Aggiungere alcune condivisioni
Questo smb.conf è funzionale, ma tutto quello che fà è
condividere la directory /tmp con Windows creando una
condivisione con il nome di "tmp". Niente di eccezionale. Ora creeremo
un'altra condivisione un po' più utile. Aggiungete le seguenti righe al
vostro smb.conf e riavviate Samba.
Codice 1.2: Aggiungere una condivisione FTP |
[ftp]
path=/percorso/al/root/ftp
writeable=no
|
Se avete una sezione ftp o un archivio di file sul vostro server Samba,
potreste usare qualcosa tipo questo per condividere i dati nella vostra lan.
Il parametro writeable=no permette di bloccare la creazione e/o
modifica dei file condivisi. Se non si imposta un account Samba valido
nessuno potrà accedere a questi file condivisi.
Una condivisione particolare
OK, sò cosa state pensando. Fino ad ora non abbiamo fatto niente di
eccezionale. Come si condivide una directory di home? Così:
Codice 1.3: Condividere una directory di home |
[drobbins]
comment=Directory di home per l'utente drobbins
path = /home/drobbins
force user = drobbins
read only = no
valid users = drobbins administrator
|
Questo è qualcosa di molto più interessante. Aggiungendo qualcosa tipo questo
al vostro smb.conf vi permetterà di condividere le directory di
home. In quest'esempio, una condivisione di nome "drobbins" è stata creata.
Questo condivide il contenuto di /home/drobbins nella vostra
lan. Fortunatamente, grazie all'opzione valid users, nessuno, apparte
gli account autorizzati ( "drobbins" e "administrator" ), può accedere ai
file condivisi. Poichè uso Windows NT, spesso sono autenticato come
administrator. In questa situazione, è comodo poter accedere a "drobbins".
L'opzione valid users così settata permette questo.
Avrete notato l'uso dell'opzione read only. Come avrete intuito,
read only è l'opposto del parametro writeable. Potremmo
facilmente sostituire l'opzione read only=no con writeable=yes.
Questo significa che Samba permetterà la scrittura su questa condivisione,
sempre se si hanno i permessi necessari per la scrittura. Poichè l'utente
"drobbins" autenticato con Samba corrisponde all'utente Unix "drobbins" , e
essendo che "drobbins" è il proprietario della directory
/home/drobbins e del suo contenuto, verrà permessa la scrittura
e la modifica di file.
Avete mai creato un file, essendo autenticato come root, nella vostra
cartella di home e poi provato a modificare quel file? Il sistema non vi
garantirà i diritti di scrittura su questo file. Questo mi accade molto
spesso. Per risolvere il mio problema faccio su, chown
drobbins.drobbins filename e poi exit. Finalmente sarò
autorizzato a modificare il file.
Ho fatto questo esempio perchè spesso si desidera condividere le home
directory e accedervi con altri utenti Samba. Considerate la seguente
situazione. Accedo alla condivisione come amministratore e creo un file. Di
solito il proprietario di questo file sarà l'amministratore e non sarà
modificabile dall'utente drobbins. Se l'utente drobbins dovesse provare a
modificare i file, il sistema non gli garantirebbe diritti sufficienti per la
modifica dei file. Fortunatamente Samba ha l'opzione force user che
risolve il problema. L'opzione force user forza il sistema a
considerare tutte le operzioni eseguite su file (in una determinata
condivisione SMB/CIFS) come se fossero state fatte da uno stesso account
Unix. Nell'esempio di prima, la condivisione "drobbins", tutti i file
avranno come proprietario l'utente drobbins, prevenendo conflitti di utenti.
Poichè la condivisione "drobbins" non è altro che la home directory
dell'account drobbins, preferisco che tutti i file abbiano come proprietario
drobbins.
Prima che passiamo alla prossima sezione vorrei spendere due parole sul
parametrocomment. Questa opzione permette di descrivere la vostra
condivisione con una descrizione visible da Windows.
Condividere tante directory
Prima abbiamo spiegato come condividere una sola directory. Ma cosa fareste
se dovreste amministrare un server con centinaia di account, in cui ogni
utente vorrebbe vedere la propria home directory da Windows? Per fortuna
Samba ha una speciale condivisione fatta appositamente per questo scopo:
"homes". Ora spieghiamo come funziona:
Codice 1.4: Condividere molte home directory |
[homes]
comment=Home directory for %S
path=/home/%u
valid users = %u administrator
force user=%u
writeable = yes
browseable = no
|
Come specificato, questo è un sistema di condivisione speciale. Non funziona
come le altre condivisioni. Samba riconosce l'identificatore speciale
[homes] e tratta queste condivisioni in maniera differente.
Una delle cose più strane di questo sistema è l'uso dell'opzione
browseable=no. Questa particolare opzione permette di rendere
invisibili le condivisioni nella rete, ed è normalmente usato per non
invogliare quegli utenti smaliziati che tentano di "esplorare" tutte le
condivisioni che si trovano davanti. Ma, perchè usare quest'opzione qui?
Rispondere a questa domanda non è una cosa facile. Potete notare che la
condivisione "homes" crea appunto una condivisione con lo stesso nome. Ma
questa particolare condivisione non ci è molto utile. Non fà niente, quindi
la nascondiamo. Ciò che fà per noi la condivisione "homes" è qualcosa di
tremendo. Indica a Samba di creare al volo delle home directory per ogni
utente. Per esempio, immaginate di non aver definito la condivisione
"drobbins" nel nostro smb.conf e di esplorare la rete con
l'utente NT "drobbins". Troveremo una condivisione di nome "drobbins"
completamente identica alla nostra "drobbins" iniziale. Se accedessimo a
Samba usando l'utente NT "jimmy", troveremmo una condivisione di nome "jimmy"
perfettamente configurata. Questa è la bellezza dell'opzione homes.
Aggiungendo una condivisione speciale tutte le condivisioni delle home
directory verranno opportunamente create.
Come funziona questa cosa? Quando la condivisione "homes" viene creata, Samba
rileva quale utente NT stà sfogliando la rete. Quindi creerà una condivisione
home che sarà personalizzata per quel particolare utente. Questa condivisione
sarà mostrata come se fosse una condivisione normale, non-dinamica. L'utente
NT non ha idea che la condivisione sia stata creata al volo. Ora vedremo
cosa fà ogni singola opzione.
Al parametro comment passiamo come dato %S, che fà riferimento al nome
attuale della condivisione. Questo implica che la condivisione "drobbins"
avrà come comment "Home directory di drobbins", la condivisione di "jimmy"
avrà come comment "Home directory di jimmy", e così via. Il parametro path ha
pure una wildcard: %u. %u fà riferimento al nome dell'utente
che stà accedendo alla condivisione. In questo particolare caso, %u è
equivalente a %S, quindi avremmo potuto pure scrivere
path=/home/%S. Questo permette a Samba di linkare dinamicamente le
condivisioni alla corretta posizione sul disco.
Usiamo nuovamente delle macro per l'opzione valid users= di modo che
possano accedere solo il proprietario della condivisione e l'amministratore
di sistema. force user usa pure una macro, in modo tale che tutte le
modifiche sui file vegano effettuate dallo stesso account. E come buona
abitudine diamo la possibilità di scrivere e modificare file solo agli utenti
autenticati correttamente. Fino a quando useremo il parametro
browseable=no, le condivisioni create dinamicamente saranno visibili
solo quando saranno create. Così sfruttiamo il fatto che la condivisione
"homes" venga nascosta, visto che non ci è molto utile.
2.
Parametri di condivisione
Abbiamo visto alcune tecniche utili alla creazione di condivisioni. In questa
sezione vedremo altre opzioni molto comuni che servono a personalizzare le
funzionalità di Samba per ogni condivisione. Tutte le opzioni generali che
riguardano la condivisione di file e directory si possono pure inserire nella
sezione [globals] in modo tale da avere delle opzioni generali per
tutte le condivisioni.
comment=
Il parametro comment= è un opzione molto utile per rendere il vostro
sistema di aspetto più professionale dal lato di Windows. Ci permette di
specificare un commento che verrà abbinato ad ogni particolare condivisione
con l'intento di descrivere il suo contenuto. Quando specifichiamo dei
commenti (specialmente quando usiamo le "home"), io spesso uso la macro
%S, che rende più chiaro il nome della condivisione.
path=
Il parametro path= è uno dei più importanti in Samba. Ci permette di
settare il percorso della directory da condividere. C'è da notare che se in
questa directory è presente un collegamento, esso potrà essere seguito in
ogni parte dell'albero della directory. Così è possibile per ogni utente
esplorare altre directory al di fuori dell'albero condiviso. La condivisione
verrà mostrata come un file o una directory normale. Vedremo più avanti
alcune opzioni per cambiare questo comportamento di Samba e renderlo più
sicuro.
force user=
force user= è una delle opzioni che preferisco. Rende possibile il
fatto che ogni modifica sui file sia eseguita dall'account di un singolo
utente. L'opzione valid users= sarà usata molto spesso da chi usa
questa opzione, poichè permette di limitare l'accesso a utenti selezionati.
Siccome tutte le operazioni verranno effettuate da uno stesso utente,
l'opzione force-user= ha di contro che non si potrà controllare chi ha
fatto cosa. Così vi è chiaro perchè le condivisioni con il permesso di
scrittura dato rende necessario che l'opzione force user= sia
accompagnata da una serie di impostazioni di alto livello di sicurezza. Senza
certe restrizioni i file potrebbero essere modificati dall'utente che
accederà alle condivisioni.
Codice 2.1: Esempio d'uso dell'opzione force user |
force user=drobbins
|
browseable=
Un modo per rendere le vostre condivisioni sicure è di non renderle visibili.
Le condivisioni sono esplorabili di default da qualunque utente in rete.
Renderle invisibili vi aiuta a evitare accessi non voluti. Ma questo non deve
essere l'unico modo per intendere il concetto di sicurezza. Solo perchè una
condivisione non viene visualizzata non significa che sarà immune da
intrusioni da ambienti Windows. Diminuisce solo la quantità di informazioni
che potreste fornire a un utente smaliziato. Per accedere ad una condivisione
nascosta basta digitare il suo percorso UNC nel finestra di dialogo
Run.... Per esempio, si può accedere alla condivisione nascosta su
myserver chiamata 'test' digitando \\myserver\test da Windows.
Codice 2.2: Esempio d'uso dell'opzione browseable |
browseable=no
|
available=
L'opzione available=, che è impostata 'yes' di default, è un modo
semplice per disattivare una condivisione senza doverla commentare o
cancellare completamente dal smb.conf. available=no serve
per rendere inattiva la condivisione dopo il riavvio di Samba.
Codice 2.3: Esempio d'uso dell'opzione available |
available=no
|
valid users=
Si può usare l'opzione valid users= per impedire l'accesso ad alcune
condivisioni da parte di certi utenti. Di default ad ogni utente autenticato
verrà permesso l'accesso ad ogni condivisione di Samba. Si può far
riferimento ad un valido netgroup NIS o UNIX group aggiungendo una '@' al
nome del gruppo.
Codice 2.4: Esempio d'uso dell'opzione valid users |
valid users = drobbins @wheel
|
dont descend=
dont descend= permette di specificare le directory in cui Samba non
deve entrare. Questo può essere utile per impedire a Samba di accedere a
delle cartelle che contiene collegamenti ricorsivi oppure a directory che non
serve condividere, come /proc e /dev. Provate la
vostra opzione dont descend= per essere sicuri che funzioni
correttamente. Per esempio potreste avere bisogno di cambiare dont
descend= /dev con dont descend= ./dev.
follow symlinks=
follow symlinks= è settato di default su 'yes' e permette a Samba di
seguire i collegamenti, anche se il collegamento punta a directory non
condivise. Settando follow symlinks= a 'no' si riesce a disattivare
questa funzionalità, impedendo a Samba di seguire i collegamenti.
Disattivando questa opzione si elimina una potenziale falla di sicurezza e si
può fare quando non si devono necessariamente usare i collegamenti.
Codice 2.5: Esempio d'uso dell'opzione follow symlinks |
follow symlinks=no
|
volume=
L'opzione volume= permette di associare un "volume name" con una
determinata condivisione. Questo è molto utile quando usate Samba per
condividere il contenuto di un CD-ROM, per esempio. Molti programmi
d'installazione cercano l'esatto nome dell'unità, e senza di ciò non
funzionerebbero.
Codice 2.6: Esempio d'uso dell'opzione volume |
volume=My Favorite CD
|
create mask=
Samba fà uso dell'opzione create mask per settare correttamente i
permessi sui file nuovi. Con l'opzione create mask si definirnno i
permessi da dare per ogni file. Il numero, in base ottale, fornito verrà
combinato con i permessi desiderati usando un and binario. Questo
causa il fatto che ogni permesso non elencato nella maschera viene eliminato
dall'elenco dei permessi di ogni file creato.
Codice 2.7: Esempio d'uso dell'opzione create mask |
create mask= 0755
|
directory mask=
L'opzione directory mask= funziona esattamente come l'opzione
create mask=. Permette di specificare con un numero in base ottale i
permessi da assegnare ad ogni directory.
La maggior parte delle opzioni di smb.conf
In questa sezione abbiamo appena visto le opzioni da usare nel file
smb.conf in modo tale da avere un utile sistema di condivisione
sicuro. Samba permette di usare molte altre opzioni che potreste trovare
utili. Per saperne di più leggete la pagina prinipale di smb.conf, dove le
troverete elencate e spiegate in dettaglio. (Vedete le Risorse a proposito.)
3.
Stampare da Samba
La capacità di Samba di condividere le stampanti risulta utile e funziona
bene. Per rinfrescarvi la memoria, Samba permette di condividere stamapanti
basate su lpd cosicchè i client che usano Windows possono collegarsi e
stampare. Una delle cose più belle di ciò è che tutto il codice specifico per
la stampante viene generato dai sistemi Windows. Questo significa che il
vostro sistema Unix non necessita di uno specifico supporto per specifiche
stampanti. Fino a quando la vostra macchina Unix riuscirà a passare dati
grezzi alla stampante, il tutto funzionerà e pure bene! Questo vi permette
di condividere e usare stampanti che su un sistema Unix puro non
funzionerebbero, come la mia NEC SuperScript 870, basata sull'Adobe
PrintGear.
Come funziona la stampa con Samba
Per poter stampare vi serve prima di tutto lpd installato, configurato
e funzionante. Anche se la configurazione di lpd non rientra
nell'ambito di questa guida, non è molto difficile da configurare. Potete
trovare un valido supporto nelle FAQ di stampa su tldp.org. (Vedere Risorse.) Dovrete configurare le vostre stampanti in
modo tale che gli arrivino dati "raw" di default, cosicchè ogni dato inviato
con il comando lpr verrà copiato così com'è senza filtraggi. È facile
testare che lpd ssia configurato in "raw" mode. Su un client Windows
configurate una stampante, già installata con i suoi driver, in modo tale che
stampi su FILE:. Stampate una pagina di prova e salvatela su file. Poi
copiatela sulla vostra macchina Unix e stampatelo usando il comando
lpr. Se il file sarà stampato correttamente, avrete correttamente
configurato Samba.
Sezione globals delle opzioni per stampare con Samba
Affinchè un sistema Linux stampi correttamente attraverso Samba, dovrete
aggiungere i seguenti parametri alla vostra sezione [global]:
Codice 3.1: Modificare smb.conf per permettere la stampa |
printcap name=/etc/printcap
printing=bsd
|
Se il vostro printcap ha un percorso diverso, modificate il valore
dell'opzione printcap name= in modo tale da rispecchiare la
configurazione del vostro sistema. Se usate un sistema di stampa diverso
dallo standard di BSD, lpd, consultate la pagina principale di
smb.conf a proposito dell'opzione rinting= e controllate
se Samba può funzionare con il vostro sistema di stampa.
Ora configureremo la conivisione della stampante. Queste sono le opzioni che
ho inserito nel mio smb.conf per lavorare con la mia stampante.
Lo userò come esempio:
Codice 3.2: Esempio per condividere una stampante |
[nec]
path=/var/spool/smb
print command=/usr/bin/lpr %s
lprm command=/usr/bin/lprm -P%p %j
printer=lp
public=yes
printable=yes
|
È molto importante capire l'opzione path per prima cosa. Quando Samba accetta
un comando di stampa da Windows, gli serve sapere dove potere salvare il file
temporaneo per poi poter stampare usando lpr. La directory a cui fà
riferimento l'opzine path= dovrebbe avere i permessi settati a 1777
cosìcchè nessuno possa scrivere su questa directory. I comandi print
command= e lprm= di solito non sono indispensabili. Inseriteli se
volete specificare l'esatto percorso per i comandi di stampa, oppure se
volete passare una qualche opzione ad lpr. Usate le macro sopra come
esempio. %s specifica il nome del file temporaneo, %p specifica
il nome della stampante, e %j specifica il numero dell'operazione.
L'opzione printer=, come avrete già intuito, indica a Samba su quale
stampante stampare. Assicuratevi che questa stampante sia configurata in raw
mode. L'opzione public=yes permette anche agli utenti senza password
di usare questa stampante condivisia. Eliminate questa opzione se volete
aumentare il livello di sicurezza del vostro sistema (probabilmente
preferirete sostituire questa opzione con un valido users= in modo
tale da rendere il sistema effettivamente più sicuro e funzionale). L'opzione
printable=yes permette sia di indicare a Samba che questa condivisione
in effetti è una stampante, sia che questa stampante funziona correttamente e
può accettare comandi di stampa.
Dopo avere riavviato Samba, dovreste essere in grado di vedere la stampante
da Windows. A questo punto dovreste essere in grado di installare questa
stampante su Windows e stampare una pagina di prova tramite la vostra nuova
risorsa condivisa. (Windows vi darà un messaggio di avviso durante
l'installazione, in cui vi avverte che state installando un driver per la
stampante NULL. Non preoccupatevi. Selezionate semplicemente il driver
corretto per la vostra stampante dalla lista.) Se per qualche strana ragione
la stampa non avviene, controllate il log /var/log/log.smb per
eventuali messaggi di errore. Vi devo pure dsegnalare che nel
smb.conf ci sono tante altre opzioni di configurazione per la
quanto concerne la configurazione di stampanti condivise. Ho appena enunciato
quelle più popolari. Siate sicuri di aver letto la pagina principale del
smb.conf per avere una certa familiarità con le altre opzioni.
4.
Conclusione
In questo articolo abbiamo spiegato le funzionalità principali di Samba,
incluse la condivisione delle Home directory e delle stampanti. Ho pure
cercato di farvi notare alcuni problemi legati alla sicurezza. Non pensate
che Samba sia tutto qua. Samba non è solo molto potente, ma è anche altamente
configurabile. È stato creato con l'intenzione di dare la possibilità agli
amministratori di sistema di decidere quali opzioni usare e come usarle nella
loro organizzazione. Anche se la configurazione del smb.conf
richiede un po' di studio, i risultati saranno brillanti, visto che si può
configurare tutto esattamente come si vuole che il sistema funzioni.
Samba ha altre funzionalità che non abbiamo nemmeno nominato, inclusa la
possibilità di diventare parte di (o addirittura di controllare!) un intero
dominio NT. Vi invito a scoprire le potenzialità di questo programma molto
potente.
Risorse
-
Scaricate Samba dalla pagina web
del progetto.
-
frgpasswrd
vi permette di settare in maniera sincronizzata le password di Samba con
le shadow password dei sistemi Unix.
-
SambaLink/Q è un editor del
file smb.conf indipendente dalla versione di Samba.
-
Date un'occhiata alle FAQ per la stampa su tldp.org.
-
Leggete Samba scritto da
Ed Weinberg.
-
Using
Samba (O'Reilly Publishing; 1999) è una guida completa
sull'amministrazione di Samba, che include alcune funzionalità recenti
come l'integrazione nei domini NT e il programma di configurazione
grafico SWAT.
-
Visitate il sito web di SWAT.
-
Scaricatevi Samba/iX, una suite
di programmi che permettono ad un HP e3000, che ha come OS MPE/iX, di
fornire servizi usando il sistema SMB della Microsoft.
-
Leggete Samba
Unleashed, scritto da Steve Litt, con il contributo di Daniel
Robbins.
|