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