shareaza free

Transcript

shareaza free
Condivisione delle risorse
con
SaMBa
Gian l
uca R e n z i
Lin ux Day 2006
Overview
-
Obiettivo
Ingredienti
Protocolli ed implementazioni
SMB/CIFS
Samba: installazione
Samba: configurazione
Gian l
uca R e n z i
Lin ux Day 2006
2
Premessa: Client/Server
Un server è un'applicazione realizzata per
fornire determinati servizi. I fruitori di
questi servizi sono detti client.
Spesso un'applicazione server si identifica
con il computer su cui essa è in esecuzione;
in realtà, però, su una singola macchina
possono essere contemporaneamente in
esecuzione più applicazioni server.
Esempi: web server, file server, print
server, mail server...
Gian l
uca R e n z i
Lin ux Day 2006
3
Obiettivo
Vogliamo che i computer della nostra rete
locale possano accedere ad alcune delle
risorse presenti sul nostro sistema
GNU/Linux, indipendentemente dal sistema
operativo in uso su di essi.
La nostra macchina Linux fungerà quindi da
server per la condivisione delle risorse.
Ovviamente potrà a sua volta essere client
di altri server della rete.
Gian l
uca R e n z i
Lin ux Day 2006
4
Quali risorse?
Sebbene in informatica il termine 'risorsa'
sia piuttosto generico ed includa, tra le
tante cose, processori, RAM, dispositivi di
rete, schede audio e video, nonché semafori,
interrupt, porte di comunicazione, ecc. in
questo contesto ci riferiamo esclusivamente
a file, directory e stampanti.
Il nostro sistema Linux sarà quindi un file
e print server.
Gian l
uca R e n z i
Lin ux Day 2006
5
Perché condividere?
Per comodità
Per risparmiare soldi, tempo e
spazio
Per aumentare il rendimento delle
risorse stesse
Gian l
uca R e n z i
Lin ux Day 2006
6
Esempio 1
Consideriamo un piccolo ufficio con 8 impiegati che lavorano su
altrettanti computer; ciascun impiegato, di tanto in tanto, ha
bisogno di stampare file di piccole/medie dimensioni (supponiamo
circa 30 o 40 pp al giorno). Quali alternative abbiamo?
1. Una stampante per ciascun computer
2. Una stampante su un solo computer
3. I computer in rete e una stampante su un solo computer,
condivisa con tutti gli altri
Gian l
uca R e n z i
Lin ux Day 2006
7
Esempio 2
Avete due pc, un desktop ed un portatile. Il pc desktop è sempre
connesso ad internet, ma è datato e non ha hardware e software
recenti (ad esempio per il video editing), però ha un hard disk
molto capiente, a differenza del portatile che ne ha uno
medio/piccolo ma che ha cpu e processore grafico recenti e potenti,
molta memoria ram ed il software di cui avete bisogno. Sarebbe
sicuramente comodo poter lavorare sui grossi file del pc fisso
senza spostarli di volta in volta sul portatile, elaborarli e poi
copiarli nuovamente sul pc fisso.
Potete risolvere comodamente il problema se il pc desktop condivide
le cartelle contententi i file su cui dovete lavorare.
Gian l
uca R e n z i
Lin ux Day 2006
8
Ingredienti
Per riuscire a condividere le
risorse è necessario che i
sistemi coinvolti adottino un
protocollo comune e che
dispongano di una sua
implementazione
Gian l
uca R e n z i
Lin ux Day 2006
9
Protocolli ed implementazioni
Protocollo
Un protocollo definisce il formato e l'ordine dei messaggi scambiati tra
due o più entità in comunicazione, così come le azioni intraprese in fase
di trasmissione e/o ricezione di un messaggio o di un altro evento.
Implementazione
In ingegneria ed in informatica, per implementazione si intende
l'applicazione pratica di una metodologia o di un algoritmo effettuata
allo scopo di conseguire un determinato obiettivo. Ad esempio, al fine di
ordinare un insieme di numeri è possibile scrivere un programma che
implementi un algoritmo di ordinamento noto.
Gian l
uca R e n z i
Lin ux Day 2006
10
Protocolli: esempi
Protocolli p2p
Gnutella (Shareaza, Swapper, MLDonkey, ecc.)
FastTrack (KaZaA)
eDonkey (eMule/aMule/xMule, Lugdunum, ecc.)
BitTorrent (BitTorrent, Azureus, Shareaza)
Protocolli client/server
NFS: Network File System
SMB/CIFS: Server Message Block
IPP: Internet Printing Protocol
AFP: Apple Filing Protocol
Gian l
uca R e n z i
Lin ux Day 2006
11
Quale protocollo usare?
Se la nostra rete comprende solo sistemi Unix-like,
possiamo usare NFS per la condivisione dei file e IPP per
la stampa in rete. GNU/Linux mette sempre a disposizione
client e server per questi protocolli. Anche Mac OS X ha
molto in comune con GNU/Linux; in alcuni casi utilizza
proprio le stesse applicazioni (libere): client NFS, CUPS,
Samba...
I sistemi Microsoft non implementano NFS ma possono
accedere a stampanti IPP; per la condivisione delle
risorse usano il protocollo SMB.
Gian l
uca R e n z i
Lin ux Day 2006
12
La mia rete (prima)
Un server/desktop GNU/Linux con stampante e spazio
disco, un desktop GNU/Linux ed un portatile Mac OS X.
Condivido la stampante con CUPS (IPP) e i file con NFS
Gian l
uca R e n z i
Lin ux Day 2006
13
La mia rete (dopo)
Ho aggiunto un pc con Windows XP.
Windows non implementa nativamente il protocollo NFS,
quindi non potevo accedere i file e le directory
condivisi dal server GNU/Linux. Fortunatamente per
GNU/Linux è disponibile un'implementazione (libera) del
protocollo SMB
Gian l
uca R e n z i
Lin ux Day 2006
14
Il protocollo SMB
Il protocollo SMB risale al 1984 e fu inventato da Barry Feigenbaum presso
la IBM. La versione più diffusa ed utilizzata, se non altro perché
accompagna tutte le versioni dei suoi sistemi operativi, è quella di
Microsoft, che riprese SMB e lo modificò per fonderlo con il suo
LanManager.
Nel 1998, dopo notevoli cambiamenti, Microsoft ha rinominato la sua
versione di SMB in CIFS (Common Internet File System).
La versione Microsoft di SMB non è standard e non è pubblica. La
documentazione disponibile è spesso obsoleta e inconsistente, oppure è
coperta da licenze che non ne permettono la libera consultazione.
Ovviamente anche la rispettiva implementazione di Microsoft è closedsource e disponibile solo per i sistemi di casa Microsoft.
Gian l
uca R e n z i
Lin ux Day 2006
15
SMB: implementazioni alternative
Quella presente nei sistemi operativi Microsoft, però, non è l'unica
implementazione di SMB/CIFS esistente; ce ne sono altre, alcune
commerciali, altre libere.
Esempi
Samba, jCIFS, AS/U (Advanced Server for Unix: Microsoft --> AT&T),
Cascade, NQ CIFS (per sistemi embedded).
Poichè SMB non è un protocollo aperto, l'unico modo di giudicare
l'efficacia di una sua implementazione è confrontarla, per quanto
possibile, con quella di Microsoft.
Gian l
uca R e n z i
Lin ux Day 2006
16
SaMBa
Samba è un'implementazione libera (con licenza GPL) del protocollo
SMB/CIFS ed è disponibile per diversi sistemi operativi, tra i quali:
Linux, Mac OS X, Free/Open/Net BSD, SUN Solaris.
E' stata sviluppata inizialmente nel 1991 da Andrew Tridgell, che fece
reverse engeneering di una implementazione Unix; successivamente, data la
diffusione, passò a retroingegnerizzare l'implementazione Microsoft.
Una curiosità sul nome scelto per questo software, inizialmente chiamato
SMBserver. Dovendo, per motivi di copyright, trovare un nome alternativo,
Tridgell eseguì il comando:
grep -i 's.*m.*b.*' /usr/dict/words
che cerca nel file words tutte le parole contenenti le lettere s m b
nell'ordine dato.
Gian l
uca R e n z i
Lin ux Day 2006
17
Il Samba Team
Attualmente Samba è sviluppato da un team di circa 30 persone (tra cui lo
stesso Tridgell) sparse per il mondo. Tra gli sviluppatori troviamo
scienziati, ingegneri, programmatori ed anche studenti, tutti uniti da uno
scopo comune: migliorare l'interoperabilità tra i sistemi Microsoft ed il
resto del mondo informatico.
Non a caso lo slogan scelto dal team Samba è:
SaMBa
Opening Windows to a Wider World
Gian l
uca R e n z i
Lin ux Day 2006
18
Samba: installazione
Per installare un software su un sistema Linux ci sono sostanzialmente due
modi:
1) usare i pacchetti precompilati
2) compilare ed installare i file sorgente
Nel primo caso è sufficiente saper usare il gestore di pacchetti della
distribuzione in uso oppure un suo front-end grafico.
Il secondo metodo è indipendente dalla particolare distribuzione, ma
richiede la presenza sul sistema di alcuni strumenti, primo fra tutti un
compliatore.
Gian l
uca R e n z i
Lin ux Day 2006
19
Pacchetti precompilati
Per installare Samba da pacchetto precompilato su una distribuzione Debianbased, si può digitare il comando
apt-get install samba
eseguito come amministratore del sistema, oppure si può usare un apposito
front-end grafico, che si presenta così:
Gian l
uca R e n z i
Lin ux Day 2006
20
Installazione da sorgenti
L'installazione da file sorgenti è un po' più lunga e complessa, ma la
procedura è abbastanza comune.
Scarichiamo dal sito http://www.samba.org il pacchetto samba<versione>.tar.gz (ad esempio samba-3.0.23c.tar.gz). Fatto questo, da una
finestra di terminale, spostiamoci nella directory contenente l'archivio
tar.gz e decomprimiamolo con il comando
tar xzvf samba-3.0.23c.tar.gz
che creerà la directory samba-3.0.23c.
Spostiamoci nella directory samba-3.0.23c/source/, configuriamo il
processo di compilazione e compiliamo ed installiamo il programma:
cd samba-3.0.23c/source
./configure [opzioni]
make
make install
L'ultimo comando deve essere eseguito con i privilegi di root.
Gian l
uca R e n z i
Lin ux Day 2006
21
Configurazione del server
La configurazione del server Samba avviene, come nella migliore tradizione
Unix, attraverso un solo file di testo semplice. Questo file si chiama
smb.conf e, generalmente, si può trovare nelle directory
/usr/local/samba/lib/ oppure /etc/samba/.
Questo file è diviso in sezioni, tre delle quali hanno un significato
speciale (global, homes, printers).
Ciascuna sezione inizia con il suo nome racchiuso tra parentesi quadre e
termina dove inizia la sezione successiva.
La sezione [global] determina il comportamento generale del server; la
sezione [homes], se presente, stabilisce le modalità di condivisione delle
directory home degli utenti, mentre la sezione [printers] si occupa della
condivisione delle stampanti. Le altre sezioni definiscono ciascuna una
risorsa condivisa.
Gian l
uca R e n z i
Lin ux Day 2006
22
Avvio del server
Dopo aver configurato il server, è necessario avviarlo.
Se avete installato usando i pacchetti precompilati, sul
vostro sistema troverete anche gli script necessari,
altrimenti dovrete avviare manualmente i demoni smbd nmbd.
Esempio (Debian):
/etc/init.d/samba start|stop|restart|reload
Avvio manuale:
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
Arresto manuale:
kill -s SIGTERM <pid di smbd>
kill -s SIGTERM <pid di nmbd>
Gian l
uca R e n z i
Lin ux Day 2006
23
smb.conf: esempio 1
[homes]
browseable = no
guest ok = no
Gian l
uca R e n z i
Lin ux Day 2006
24
Aggiungere un utente
Per aggiungere un utente al server Samba dobbiamo usare il
comando
smbpasswd -a <nome_utente>
dove <nome_utente> è uno degli utenti registrati sul
sistema Linux in uso (cioè il suo nome compare nel file
/etc/passwd).
Per rimuovere un utente si usa il comando
smbpasswd -x <nome_utente>
mentre per cambiare semplicemente la password si usa
smbpasswd <nome_utente>
La password scelta per il server Samba non deve essere
necessariamente uguale a quella di login.
Gian l
uca R e n z i
Lin ux Day 2006
25
smb.conf: esempio 2
[global]
workgroup = LINUXDAY
netbios name = linux
security = user
encrypt passwords = true
passdb backend = tdbsam
invalid users = root
[homes]
guest ok = no
readonly = no
Gian l
uca R e n z i
Lin ux Day 2006
26
Livelli di sicurezza
SMB prevede due livelli di sicurezza: SHARE e USER
Samba ne implementa cinque! Sono: SHARE, USER, SERVER,
DOMAIN, ADS
Con security = SHARE si effettua un'autenticazione per
ciascuna condivisione definita
Con security = USER invece l'autenticazione avviene a
livello utente, una sola volta prima di accedere alle
condivisioni
Gian l
uca R e n z i
Lin ux Day 2006
27
smb.conf: esempio 3
[global]
workgroup = LINUXDAY
netbios name = linux
null passwords = Yes
passdb backend = tdbsam
guest account = guest
syslog = 0
log file = /usr/local/samba/log/log.%m
max log size = 1000
os level = 255
preferred master = Yes
domain master = Yes
wins support = Yes
invalid users = root
Gian l
uca R e n z i
Lin ux Day 2006
28
smb.conf: esempio 3 (continua)
[homes]
read only = No
browseable = No
[pubblica]
path = /mnt/sharing/
read only = No
guest ok = Yes
guest only = Yes
create mask = 0666
directory mask = 0777
Gian l
uca R e n z i
Lin ux Day 2006
29
Aggiungiamo una stampante
[global]
...
printing = cups
load printers = yes
...
[printers]
path = /var/spool/samba
guest ok = yes
printable = yes
[nome_stampante]
path = /var/spool/samba
browsable = yes
Gian l
uca R e n z i
Lin ux Day 2006
30
Condividere un lettore DVD
...
[dvd]
preexec = mount /mnt/dvd
postexec = umount /mnt/dvd
path = /mnt/dvd
writable = no
...
Se per il montaggio del dispositivo dvd sono necessari i
privilegi di amministratore, sostituiamo "preexec" e
"postexec" con "root preexec" e "root postexec"
Il punto di montaggio può variare da sistema a sistema,
secondo il contenuto di /etc/fstab
Gian l
uca R e n z i
Lin ux Day 2006
31
Riferimenti
Il modo migliore di imparare ad usare Samba è facendo
riferimento all'HowTo ufficiale, alla mole di
documentazione prodotta dal Samba Team e alle man pages
presenti su tutti i sistemi GNU/Linux.
Per i dettagli relativi al protocollo CIFS, un'ottima
risorsa è "Implementing CIFS": http://ubiqx.org/cifs/ (in
versione web, pdf e cartacea).
Altri riferimenti utili:
"Appunti di Informatica Libera", di Daniele Giacomini
"Le guide di Debianizzati.org":
Gian l
uca R e n z i
Lin ux Day 2006
http://www.debianizzati.org
32
Venite a trovarci!
Visitate ed iscrivetevi al nostro
forum:
http://www.cilug.org
Gian l
uca R e n z i
Lin ux Day 2006
33