Post on 26-Jul-2015
transcript
isario per installare e amministrare un server » li risorse con macchine Linux e Windows » configurazione di web server, mail server e DOS server »
reare un completo fììedia Center e metterlo in rete »
Linux Ubuntu i
per server e reti *pro
DigitalLifeStyle Alessandro Di ilicola
EDIZIONI
FAG MILANO
* >ro DigitalLifeStyle
kl centro non c'è la macchina. ci siamo noi. Con la nostra voglia di capire e ili fare. Informazione essenziale ma completa, raccolta direttamente sul campo. Ecco i libri Digital UfeStyle Pro. Uno strumento nuovo, per nuovi lettori, che nel digitale trovano la loro passione o la loro professione.
Linux Ubuntu per server e reti Quando si pensa al sistema operativo Linux in ambito server si pensa solitamente ad austeri centri di calcolo, ad ambienti di ricerca all'avanguardia e a enormi reti di computer. Un server Linux, però, può essere anche un comune PC e una rete di computer può essere costituita, perché no, da una manciata di macchine. Una rete di tal fatta può venire sfruttata per condividere una medesima stampante fra più PC o per creare un file server grazie al quale i membri di un team di lavoro possono scambiarsi documenti con estrema facilità. Singole macchine, poi. possono essere adibite al ruolo di uieb server e mail server oppure, ancora, possono venire impiegate per allestire dei media center. Ouesto libro spiega come costruire dalle fondamenta reti e server basati su Linux, utilizzando come guida la distribuzione Ubuntu Server: la scelta di un'unica distribuzione consente di fornire informazioni mirate su strumenti specifici e di guidare passo per passo il lettore anche nelle procedure più articolate, per guanto molte indicazioni di carattere metodologico fornite nel libro abbiano un valore generale.
Tra gli argomenti trattati • Installazione di Ubuntu Server sui PC della rete, con indicazioni su quali filesystem impiegare e quale software installare per i
singoli compiti. • L'ambiente di lavoro di un server: la shell, gli editor principali, gli strumenti per gestire la rete e quelli per creare copie di backup dei dati. • L'amministrazione del sistema da remoto con strumenti sicuri. Vengono trattate anche l'amministrazione via uieb e quella mediante inter-
faccia grafica. • Installazione e configurazione dei principali software server. Dal filesystem di rete (1FS al server CUPS per la condivisione delle stampanti,
dal web server Apache al mail server Postfix. • Come costruire dalle fondamenta un flledia Center audio o audio/video.
L'autore Alessandro Di nicola collabora con riviste di informatica come Linux Pro e Linux (llagazine, per la quale redige mese per mese l'articolo di copertina, ed è dottore in Lettere moderne. Ha precedentemente pubblicato per le Edizioni FA6 il libro "Linux Ubuntu per l'uso desktnn"
Edizioni FAG srl via Garibaldi. 5 - 20090 Assago (mi) tel.024885241 -uiujuj.fag.it
ujujuj.digital-lifestyle.it
ISBN 978-88-8233-7
€ 25,00 9 7 8 8 8 8 2 3 3 7 4
9 * i f • r *
J C W
per server e reti
Alessandro Di Nicola
EDIZIONI
FAG MILANO
Linux Ubuntu per server e reti
Autore: Alessandro Di Nicola
Collana:
* ro . Life Publisher: Fabrizio Comolli Proget to grafico: escom - Milano
ISBN: 978-88-8233-744-5
Copyright © 2008 Edizioni FAG Milano Via G. Garibaldi 5 - 20090 Assago (MI) - www.fag.it
Finito di stampare: nel mese di novembre 2008 da escom - Milano
Nessuna parte del presente libro può essere riprodotta, memorizzata in un sistema che ne permetta l'elaborazione, né trasmessa in qualsivoglia forma e con qualsivoglia mezzo elettronico o meccanico, né può essere fotocopiata, riprodotta o registrata altrimenti, senza previo consenso scritto dell'editore, tranne nel caso di brevi citazioni contenute in articoli di crìtica o recensioni.
La presente pubblicazione contiene le opinioni dell'autore e ha lo scopo di fornire informazioni precise e accurate. L'elaborazione dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all'autore e/o all'editore per eventuali errori o inesattezze.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive aziende.L'autore detiene i diritti per tutte le fotografie, i testi e le illustrazioni che compongono questo libro.
Si ringraziano CanonicaI e il progetto Ubuntu per l'uso del logo in copertina (il libro è una pubblicazione indipendente e non è formalmente collegato né a Canonical né al progetto Ubuntu). The book is not endorsed by Canonical and is not related to the Ubuntu project in any way.
Sommario
INTRODUZIONE 7
1. INSTALLAZIONE 11 Il CD di installazione 11 Avvio dal CD 13 Installare Ubuntu Server 15 Il part izionamento dei dischi 20 I dischi in RAID 37 Dati utente e software 44
2. GESTIRE IL SISTEMA 47 Amministrare gli utenti 47 La gestione dei pacchetti 60 Le partizioni 75
3. GLI STRUMENTI DELL'AMMINISTRATORE 91 La shell Bash 91 L'editor vi 108
4. LOG E PROCESSI PERIODICI 123 Gestire i log 123 Processi periodici con cron 130
5. IL SERVER È IN RETE 137 Le informazioni di base 137 Le reti Wi-Fi 150 Gli strumenti di control lo 159
6. CONFIGURAZIONE AVANZATA DELLA RETE 163 II firewall 1 6 3
Proteggere i servizi 174
7. AMMINISTRARE DA REMOTO 183 Un terminale remoto 183 Amministrazione dal web 195 Quando il server grafico è remoto 204
8. CONDIVIDERE IN RETE 211 Il server di stampa 211 Filesystem di rete NFS 218 Condividere con Samba 222
9. IL BACKUP 231 Copiare intere partizioni 231 Il backup di file e directory 239 Bacula, un server per il backup 247
10. COSTRUIRE UN MEDIA CENTER 261 Server musicale 261 Il Media Center completo 264
11.1 SERVER 273 Il mail server Postfix 273 FTP server con vsftpd 278 Il web server Apache 281 Il server DNS BIND 289
12. OTTIMIZZARE IL SISTEMA 297 Compilazione del kernel 297 Compilare i programmi 301
Introduzione Enormi stanze piene di computer rumorosi, misteriosi centri di calcolo sotterranei con centinaia di addett i che si aggirano in camice bianco, reti cablate che si estendono per chilometri e chilometri... Solitamente quan-do si pensa a delle macchine server la fantasia galoppa e l ' immaginazione ha il sopravvento sulla realtà. Un server, però, può essere un normale PC desktop e una rete può essere costituita da uno sparuto numero di macchine. Ma a cosa potrà mai ser-vire applicare a tale ambit i limitati tecnologie e conoscenze sviluppate in ambient i di ricerca e industriali? Innanzitutto, una rete di computer può risultare utile per condividere una medesima stampante tra più macchine, oppure per facilitare lo scambio di file tra colleghi di lavoro; un comune PC, inoltre, può diventare un pra-t ico web server per la gestione di pagine interne aziendali oppure un mail server per lo smistamento della posta elettronica. Infine, è possibile sfruttare in ambito domest ico gli strumenti solitamente impiegati nella gestione dei server per costruire pezzo per pezzo un dut-ti le ed economico Media Center: insomma, dagli austeri centri di calcolo si è passati al salotto di casa! In questo libro viene spiegato come allestire server e reti utilizzando Li-nux, un sistema operat ivo libero e gratuito: tale sistema può essere usato in piena libertà da qualsiasi utente e le linee di codice che lo compongo-no possono essere esaminate e modif icate da chiunque. A causa della libertà con cui è possibile intervenire sul sistema, Linux è disponibi le in varie versioni, che vengono chiamate distribuzioni (o "di-stro"): una distribuzione non è altro che l' insieme costituito dal kernel Linux e da un numero variabile di programmi ausiliari.
Il centro nevralgico di Linux, il cosiddetto kernel del sistema operativo, è stato creato nel 1991 da Linus Torvalds e attualmente viene sviluppato da programmatori sparsi in tutto il mondo. Nel sistema operativo Linux sono incluse le applicazioni GNU (GNU is Not Unix, un progetto nato per la creazione di un sistema operativo libero): per questo motivo, il nome per esteso del sistema operativo dovrebbe essere GNU/Linux.
Questo libro adotta come distro di r iferimento Ubuntu Server 8.04 LTS: si tratta di una distribuzione solida, completa e semplice da installare, espressamente sviluppata per l 'al lestimento di sistemi server. La dicitura LTS sta per Long Term Support e contraddist ingue le release della distri-buzione per le quali viene forni to un supporto della durata di cinque anni dal momento del rilascio: per quest'arco di tempo, dunque, verranno cor-rette falle di sicurezza e saranno risolti i bug rilevanti nelle applicazioni.
A differenza di Ubuntu Server, nella versione di Ubuntu dedicata all'uten-za desktop il supporto per le release LTS è di tre anni. Nelle normali release di Ubuntu, quelle prive della dicitura LTS e che vengono rilasciate ogni 6 mesi, il supporto ha invece una durata di soli 18 mesi.
Ubuntu Server è una distro derivata da Debian, una storica distribuzione Linux: questo significa che le istruzioni e le nozioni fornite in questo libro risulteranno valide, r ichiedendo solo minimi adattamenti, anche nel caso di utilizzo di sistemi Debian. Nel caso di altre distribuzioni, invece, le mo-difiche necessarie per adattare comandi e procedure presenti nei capitoli a seguire possono risultare più rilevanti.
Nel pr imo capitolo del volume viene presentata fin nei minimi particolari la procedura da seguire per installare Ubuntu Server su di un computer: si va dalla configurazione iniziale della rete al part izionamento dei dischi e si giunge, poi, all ' inserimento delle informazioni sull 'utente principale e al-
l 'installazione dei software più importanti . Le più significative tra le tappe del percorso di installazione, inoltre, costituiranno la giusta occasione per introdurre alcuni dei concetti di base nell'utilizzo del sistema operativo. Il secondo capitolo comincia illustrando il primo avvio di Ubuntu Server. Vengono quindi presentati gli aspetti fondamentali dell'amministrazione di un server: l'amministrazione degli utenti, l'installazione e la manutenzione del software e, quindi, la gestione delle partizioni presenti sull'hard disk. Nel capitolo successivo si passa all 'amministrazione quotidiana di una macchina: si offre una panoramica sui comandi e sulle funzionalità della shell Bash e si presenta l 'editor vi. La conoscenza approfondita di questi due strumenti fondamental i consente di gestire al megl io i compit i più ripetitivi che si trova a svolgere, g iorno dopo giorno, un amministratore di server Linux.
Il quarto capitolo fornisce informazioni dettagl iate sulla gestione dei log e sull'esecuzione automatica di comandi secondo scadenze prestabilite. Il capitolo seguente del libro, quindi, è dedicato alla configurazione ini-ziale della rete locale. Si comincia con la presentazione di informazioni generiche e quindi si individuano gli strumenti necessari per inserire una macchina all ' interno di una rete cablata o senza fili. Infine, si fa la cono-scenza di una manciata di programmi necessari per controllare il corretto funzionamento della rete stessa.
Il sesto capitolo costituisce una sorta di spartiacque nel volume. Gli ar-goment i nella parte restante del libro si faranno più complessi e anche le conoscenze che si presupporranno acquisite aumenteranno di pari passo. In questo capitolo, quindi, si entra maggiormente in profondità nella con-figurazione della rete: si allestisce un firewall, quindi si scopre come con-dividere una connessione Internet fra più macchine. Infine, si individuano gli strumenti migliori per proteggere i servizi attivi su un server. Nel capitolo successivo, quindi, si scopre come gestire una macchina da remoto. La prima parte del capitolo è dedicata all 'amministrazione via ter-minale e fornisce tut te le informazioni basilari per utilizzare al megl io SSH, un protocol lo per la comunicazione sicura tra due macchine in rete. Nelle pagine che seguono, poi, si installa e si configura Webmin, un sistema per gestire un PC a distanza tramite una pratica interfaccia web. Infine, nell'ul-
t ima parte del capitolo viene presentato TightVNC, il software ideale per tutt i coloro che vogl iono amministrare una macchina remota senza dover rinunciare alla praticità e alla piacevolezza delle interfacce grafiche. L'argomento del l 'ot tavo capitolo è la condivisione di risorse all ' interno della rete locale, si tratt i di stampanti o di directory sull'hard disk del server. L'ultima parte del capitolo è poi dedicata alle reti miste Linux-Win-dows e presenta una rapida guida all'installazione e all'utilizzo del server Samba. Il nono capitolo fornisce una panoramica sugli strumenti di backup dispo-nibili su Linux: si comincia presentando Partimage, un pratico e semplice software per la creazione di immagini di intere partizioni, poi si passa alla gestione del backup di file con tar e rsync e infine si arriva a installare e a utilizzare Bacula, un potente sistema client-server per il backup in rete. Nei due capitoli che seguono, poi, si portano a frutto le conoscenze ac-quisite nelle sezioni precedenti del volume: per cominciare, si costruisce pezzo per pezzo un completo Media Center basato su Linux, quindi si in-stallano e si configurano i principali software di t ipo server, dal web server Apache al mail server Postfix.
Il capitolo conclusivo, infine, contiene informazioni dettagl iate su come sfruttare al megl io l 'hardware su cui è stato installato Linux Ubuntu, otti-mizzando il kernel sottostante e compi lando in modo oppor tuno alcuni dei programmi utilizzati.
1. Installazione
Come creare il CD di ubuntu S e r v e r e in-
stallare il sistema sull 'hard disk.
Per installare Ubuntu Server su una macchina è necessario usare un appo-sito CD di installazione: per ottenerlo basta scaricare l ' immagine ISO del CD da Internet e masterizzarla su di un supporto vuoto.
Un'immagine ISO è un singolo file che racchiude l'intero contenuto di un CD o di un DVD.
Il CD di installazione La prima operazione da compiere, dunque, è prelevare l ' immagine ISO. Utilizzando un qualsiasi sistema operativo si apre con un web browser la pagina: ht tp : / /www.ubuntu.com/getubuntu e si fa clic sulla l inguetta Down load Ubuntu. Nella schermata che appare, quindi, si mette la spunta sull 'opzione Ubuntu 8.04 LTS Server Edit ion. Poi, poco più sotto, si indica il t ipo di computer sul quale va effettuata l'installazione: se si tratta di un PC con CPU a 32 bit selezionare l 'opzione Standard personal computer , mentre se si è in possesso di un computer con processore a 64 bit scegliere 64b i t A M D and Intel computers .
I File Modifica Visualizza Cronologia Segnalibri Strumenti Guida
I - t r a? > http://www.ubuntu.com/getubuntu/download
3 u b u n t u
» What is Ubuntu? » Gal Ubuntu
• Download ' Puf chase > Request CDs - Release Notes » Upgrading * Countdown • Mirror Ubuntu
• Software Catalogue » Mflfchartdis« • Cose Studies
-WÉ *''<•# G e t Ubuntu
Get Ubuntu
Online training for the desktop
: Ayailatne at the Ubuntu shop te**- w
1 Get Ubunty » Download Ubuntu
The fastest way for most people to get Ubuntu is by downloading the CO Installer The CO Installer is nearly j 700MB If you don't have a fast internet connection you may want to consider requesting a CO
61 Download Ubuntu J Buy UbsjnttJerr ) Rssjuest free
Which release do youDwant? C D s
Ü Ubuntu 8.04 LTS Desktop Edition - Supported to 2011 : f ) Ubuntu 8 04 LTS Server Edition - Supported to 2013
Tl>e "L TS"¥e'SIOri ol ub"n!u rece'ves long-term support. 3 years for desktop versions and 5 years lor serve
What type of computer do you have? ® Standard personal computer (x86 architecture, PentiumTM. Celeron TM. Athlon TM. SempronTM)
> 64bit AMD and Intel computers
Choose a location near you
Figura 1.1 - La pagina web da cui scaricare l'immagine ISO di Ubuntu Server 8.04 LTS.
Scendendo ancora un poco nella pagina si fa clic sulla scritta Please Choose a Locat ion e nel menu che appare si seleziona un server vicino da cui scaricare l ' immagine ISO, per esempio Italy Universi ty of Rome - La Sapienza. Effettuare il download da un server posto nelle proprie vicinanze permetterà di rendere l 'operazione più rapida. Infine, si fa clic su Start Download. Una volta che il file, chiamato ubuntu-8.04-server- i386. iso, è stato sca-ricato da Internet bisogna masterizzarlo su CD: per fare questo basta uti-lizzare un comune software di masterizzazione come Nero (su Windows), K3b o Braserò (su Linux).
Creato il CD di installazione non rimane che inserire questo nel lettore del PC e avviare la macchina. Per procedere nell'installazione è neces-sario che nel BIOS il lettore CD-ROM abbia una priorità più alta rispetto all 'hard disk per il boot del PC. In caso contrario, bisogna intervenire sulla configurazione del BIOS e cambiare le priorità (le informazioni su come accedere alla schermata di configurazione del BIOS si trovano all ' interno del manuale del proprio PC).
Avvia dal CD Al boot del PC comparirà la schermata di avvio del CD di Ubuntu Server. La prima operazione da compiere è scegliere la lingua che deve esse-re utilizzata nella procedura di installazione: nell 'elenco che appare sullo schermo ci si sposta da una voce all'altra tramite i tasti cursore; raggiunta la voce I tal iano si preme il pulsante Invio per confermare la scelta.
Language
Arabic Hindi Portugués
BejiapycKaq Hrvatski Romana
6"b/irapcKH Magyarul Pycckwfi
Bengali Bahasa Indonesia Sámegillii
Bosanski Slovenoina
Català B * f S Slovenscina
Cestina Shqip
Dansk Khmer Svenska
Deutsch Tamil
Dzongkha Kurdi Thai
EXXHUIKK Lietuviskai Tagalog
English Latviski Tiirkçe
Esperanto HakeaoHCKM yKpaïHCbKa
Español Malayalam Tiê'ng Viêt
Eesti Norsk bokmal Holof
Euskaraz Nepali
Suomi Nederlands t í a s ® )
Français Norsk nynorsk
Galego Punjabi(Gurmukhi)
Gujarati Polski
Hebreui Portugués do Brasil
FI Help F2 Language F3 Keymap F4 Modes F5 Accessibility F6 Other Options
Figura 1.2 - Inserito il CD bisogna indicare la propria lingua.
A questo punto si avrà la schermata di avvio del CD tradotta in lingua italiana (Figura 1.3). Nella schermata sono disponibi l i cinque opzioni: an-che qui, per muoversi tra le voci presenti si utilizzano i tasti cursore, poi si preme Invio per scegliere un'opzione tra quelle presenti.
Instali Llbuntu Server
Controlla d i f e t t i sul CO Ripr is t ina un sistema danneggiato
Test del la memoria Boot dal primo disco r ig ido
Premere F4 per selezionare modalità alternative di avvio e installazione.
FI Aiuto F2 Lingua F3 Tastiera F4 Modalità FS Accessibi l i tà F6 Al t re opzioni
Figura 1.3 - La schermata di avvio del CD in italiano.
La prima opzione disponibi le è Instali Ubuntu Server. Selezionandola verrà avviata la procedura di installazione. La seconda opzione è Contro l la d i fe t t i sul CD e serve ad assicurarsi che il supporto sul quale si è masterizzato il CD di Ubuntu Server sia effetti-vamente integro: in caso di blocchi e malfunzionamenti durante le opera-zioni di installazione si consiglia di controllare il CD per mezzo di questa opzione. Se il CD risulta difettoso, quindi, non rimane che effettuare una nuova masterizzazione su di un supporto affidabile. L'opzione successiva, Riprist ina un sistema dannegg ia to , consente di av-viare il CD in "modal i tà ripristino": ciò permette di recuperare un sistema non più funzionante. Grazie a questa opzione, in particolare, è possibile reinstallare il boot loader sull'hard disk e aprire una console di root, in
modo tale da poter effettuare tut te le operazioni di manutenzione neces-sarie per rimettere in sesto il sistema.
Root è l'utente di amministrazione nei sistemi derivati da Unix. Ha pieni poteri nell'accesso ai dispositivi e nella manipolazione di file e directory. Una console di root, quindi, è un terminale in cui è possibile amministra-re liberamente il sistema impartendo comandi diretti.
La quarta opzione disponibi le è Test del la memor ia e consente di veri-ficare che tutt i i banchi di RAM presenti sul PC siano perfettamente fun-zionanti. Se il PC va spesso in crash, prima di dare la colpa al sistema operativo, è consigliabile effettuare un controllo completo sulla memoria e, in caso di banchi difettosi, procedere immediatamente alla sostituzione della RAM.
Infine, l 'ultima opzione è Boot dal p r imo disco r ig ido. Questa permette, molto semplicemente, di avviare il sistema operativo presente sull'hard disk principale.
Installare Ubuntu Server Per installare Ubuntu Server sul disco r igido del PC si seleziona dunque la prima voce presente nella schermata di avvio, Instali Ubuntu Server. Fatto questo viene caricato il kernel Linux e si viene poi accolti dal pro-gramma di installazione, che fa sfoggio di una spartana ma solida inter-faccia a caratteri. Ecco come muoversi tra i vari elementi presenti nell'in-terfaccia: con i tasti freccia su e g iù si passa da un'opzione all'altra, con Tab si salta dalle opzioni ai pulsanti in basso nello schermo e viceversa e, infine, con Invio si selezionano l 'opzione o il pulsante attivi al momento. La prima schermata della procedura di installazione richiede che l 'utente selezioni la propria nazione d'appartenenza: viene preselezionata la voce Italia, quindi è sufficiente premere Invio per proseguire.
! !] Choose lariguag
In seguito a l l a scel ta de l la l ingua, s i è probabilmente in una d i queste nazioni o reg ion i .
Selezionare una nazione, un t e r r i t o r i o o un'area:
<Indietro>
Svizzera a l t r o
<TAB> sposta t ra elementi; <Spazio> seleziona; <Invio>
A questo punto viene rilevato il lettore di CD-ROM e sono caricati nel sistema alcuni component i aggiuntivi, poi se è possibile contattare un ser-ver DHCP viene configurata in automatico la scheda di rete.
Un server DHCP consente di assegnare automaticamente degli indirizzi IP ai computer presenti in una rete locale.
Nel caso in cui non fosse raggiungibi le alcun server DHCP, bisogna confi-gurare manualmente la rete. Ecco come fare. Dopo che è apparsa la scritta Conf iguraz ione automat ica della rete fal l i ta si deve premere Invio. Poi, nella schermata successiva si conferma l 'opzione di default, Conf igura la rete manualmente, premendo nuovamente Invio.
Quindi si inserisce l'indirizzo IP da assegnare al proprio PC (Figura 1.5) e nelle schermate che seguono si indicano la maschera di rete, il gateway e gli indirizzi dei server DNS.
La maschera di rete (netmask) consente di stabilire quali parti al l ' interno di un indirizzo IP si riferiscono alla rete remota e quali si riferiscono invece agli host nella rete locale. Il gateway è l'indirizzo del disposit ivo che inoltra i pacchetti da una rete interna a una esterna (Internet, di solito), mentre i server DNS si occupano di trasformare i nomi degl i host in indirizzi IP. I valori da inserire in queste schermate relative alla rete d ipendono dalla configurazione della propria LAN o WLAN. Nel caso si tratti del pr imo PC da mettere in rete, si può inserire come Indirizzo IP un qualsiasi indirizzo riservato alle reti interne (vedi Tabella 1.1), per esempio 192.168.0.2 e come maschera di rete 255.255.255.0.
255.255.255.0 è un valore tipico per la maschera di rete. Se viene appli-cato a un indirizzo di rete 192.168.0.0 stabilisce che gli indirizzi IP da 192.168.0.1 a 192.168.0.255 appartengono alla rete locale.
Quindi, come gateway si inserisca l'indirizzo del router ADSL, se dispo-nibile, e si d igi t ino infine gli indirizzi dei server DNS fornit i dal proprio provider per la connessione a Internet. In caso di incertezza è possibile lasciare gli indirizzi predefinit i: gateway e DNS potranno essere correttamente configurati anche dopo l'installazio-ne iniziale.
Una LAN (Locai Area Network) è una rete locale. Solitamente viene uti-lizzato il protocollo Ethernet per la trasmissione dei dati in questo tipo di reti. Una WLAN (Wireless Locai Area Network) è, in particolare, una rete locale in cui la connessione tra le macchine avviene senza fili, ma tramite onde radio. In questo caso i protocolli impiegati sono quelli contrasse-gnati dalla sigla IEEE 802.11 (Wi-Fi).
Tabella 1.1 - Gli indir izzi IP r iservati alle ret i locali
Indir izzo iniziale Indir izzo f inale
10.0.0.0 10.255.255.255
172.16.0.0 172.31.255.255
192.168.0.0 192.168.255.255
Se si hanno dei dubb i e si preferisce configurare la rete dopo l'installa-zione iniziale, nella schermata che appare dopo che è comparsa la scritta Conf iguraz ione automat ica della rete fal l i ta, al posto del l 'opzione Con-f igura la rete manualmente è possibile scegliere Non conf igurare la rete in questo momento .
Configurata o meno la propria rete, bisogna assegnare un nome al com-puter: questo consentirà di individuare il singolo PC all ' interno della rete locale. Nella schermata successiva dell ' installazione (Figura 1.6), quindi, viene proposto come nome predefinito "ubuntu" : si deve inserire al posto di questo un nome a piacere, sincerandosi di scegliere un nome diverso per ogni macchina presente in rete.
Nel caso non sia raggiungibi le alcun server DHCP, in un'ulteriore scher-mata ci viene richiesto di inserire anche il nome del dominio, cioè la par-te dell ' indirizzo che segue il nome del singolo computer: per esempio, nell'indirizzo eraclito.ufficio.lan il nome del computer è eraclito mentre il nome del domin io è ufficio.lan. È possibile indicare un nome di dominio a propria scelta, ma bisogna inserire lo stesso nome su tutte le macchine della medesima rete locale.
LinuxJJhuntu p g ^ — ^ e reti
Il partizionamerrta dei dischi A questo punto si devono creare le partizioni sull 'hard disk Nella scher-mata Part iz ionare i dischi sono disponibi l i , a tale r iguardo, quatt ro op-zioni: le pr ime tre consentono di automatizzare, seppur secondo modal i tà dif ferenti , la procedura di part iz ionamento, mentre l 'ult ima opzione lascia piena libertà al l 'utente nella creazione del le partizioni
La prima opzione, Gu ida to - usa l ' i n te ro disco, è la scelta più semplice e
immediata: selezionandola apparirà una nuova schermata in cui occorrerà
indicare il disco che si desidera partizionare.
Dato che, sol i tamente, si d ispone di un solo hard disk, basterà premere
il tasto Invio per selezionare il disco, al tr imenti sarà necessario spostarsi
con i tasti freccia f ino ad evidenziare l 'hard disk su cui si vuole installare
Ubuntu Server. Nella schermata successiva verrà mostrato un riepilogo delle scelte effettuate dal programma di installazione: con il partizionamento guidato sarà creata,
il L i f e !e*p:
semplicemente, una partizione di root con filesystem ext3 e quindi una parti-zione di swap. La partizione di root occuperà la prima partizione primaria su disco, mentre la partizione di swap utilizzerà la prima partizione logica.
Le partizioni primarie sono le normali partizioni su hard disk: se ne posso-no creare al massimo quattro su di un singolo disco. Le partizioni logiche, Invece, non hanno questa limitazione e vanno inserite in una partizione "contenitore", la partizione estesa.
Per confermare queste scelte si seleziona il pulsante Sì in basso, altrimenti si sceglie No: in questo secondo caso comparirà la schermata per il par-t izionamento manuale, nella quale si potrà intervenire direttamente sulla struttura delle partizioni impostata dal programma di installazione. Confermando l'organizzazione delle partizioni scelta automaticamente, invece, la procedura di installazione proseguirà con la copia sul disco del sistema di base.
Partizionare con LVM
Scegliendo la seconda opzione di part izionamento, Gu ida to - usare l ' inte-ro disco e impostare LVM, si sfrutterà il Logicai Volume Manager (LVM) per gestire lo spazio su disco. Al posto dei normali volumi fisici (cioè i dischi e le partizioni), quindi, per l'accesso all'hard disk il sistema utilizzerà dei volumi logici, cioè virtuali: il vantaggio più rilevante di questi è che è possibile modif icarne al bisogno le dimensioni, r iducendole oppure au-mentandole, in modo mol to semplice e senza intralci. L'adozione del sistema LVM, inoltre, consente di sostituire un disco rovina-to senza dover interrompere il funzionamento di una macchina. Si tratta di una caratteristica di grande utilità sui server.
Se si è scelta l 'opzione Gu ida to - usare l ' in tero disco e impostare LVM, dunque, comparirà una schermata in cui si dovrà selezionare il disco da partizionare. Fatto questo, per poter configurare effett ivamente il sistema LVM sarà necessario confermare i cambiamenti alla tabella delle partizioni premendo il pulsante Sì.
Linux UbLintu per s e r v e r e ret i
Nella schermata successiva si avranno informazioni complete sulle parti-zioni che saranno presenti sul disco. Nel dettagl io, il sistema creerà auto-maticamente una piccola partizione di boot (prima partizione primaria) e una partizione di t ipo LVM (prima partizione logica) che occuperà tut to lo spazio restante sull'hard disk. Al l ' interno di questa partizione LVM verran-no inseriti due volumi logici LVM, che corr ispondono alla partizione di root e a quella di swap.
Se s i continua, ogni modifica a l l e tabe l le del le pa r t i z i on i verrà s c r i t t a sui disco. A l t r iment i sarà possib i le fare u l t e r i o r i modifiche manualmente'. - .-
ATTENZIONE: verranno d i s t r u t t i t u t t i 1 da t i del le pa r t i z i on i che sono -state rimosse e di quel le su cui sono s t a t i c rea t i nuovi f i l e system.
Le seguenti pa r t i z i on i saranno formattate: LVM VG Eraclito, LV root come ext3 LVM VG e rac l i t o , LV suiap_l come swap part iz ione n ' i d i SCSI1 (0,0,0) (sda) con ext3
Scrivere le modifiche sui dischi?
<Indietro> vi:-:" <Si>
Figura 1.8-Il sistema ha creato due volumi logici LVM.
Per confermare la struttura del disco indicata si seleziona il pulsante Sì: le
partizioni verranno così formattate e saranno installati sul disco i pacchetti
di base.
Cifrare il contenuto dell'hard disk
La terza opzione di part izionamento disponibi le, Gu ida to - usare l ' in tero disco e impostare LVM cifrato, come la precedente crea sull'hard disk dei volumi logici LVM ma, in più, cifra i dati in questi contenuti così che non possano essere letti da estranei.
gitalIifeStyle*pro
t. Ins ta l laz ione
Si tratta di una valida barriera protett iva per la riservatezza delle infor-mazioni, utile nel caso che il propr io server contenga dati sensibili: se un disco cifrato viene rubato e poi col legato a un altro computer, infatti, il suo contenuto risulterà comunque i l leggibile. Selezionata l 'opzione per impostare un sistema LVM cifrato, basterà se-guire i passaggi per part izionare il disco con il sistema LVM indicati nel paragrafo precedente, Il p a r t i z i o n a m e n t o LVM: si seleziona il disco da part izionare e si confermano le modi f iche alle part iz ioni p remendo il pulsante Sì. A questo punto comparirà una schermata in cui si dovrà inserire una pas-sphrase, una lunga password che servirà a ottenere l'accesso all'hard disk, e quindi al sistema, quando si avvierà la macchina. Per sicurezza si con-siglia di inserire una passphrase lunga almeno 20 caratteri e formata da lettere, numeri e segni di interpunzione.
I I ] Partizionane i d ischi
You need to choose a passphrase to encrypt scsij (0 ,0 ,0) , part iz ione n* 5 (sda).
The overa l l strength of the encryption depends strongly on t h i s passphrase, so you should take care to choose a passphrase that is not easy to guess. I t should not be a word or sentence found in d ic t ionar ies , or a phrase that could be easi ly associated with you.
ft good passphrase w i l l contain a mixture of l e t t e r s , numbers and punctuation. Passphrases are recommended to have a length of 20 or more characters.
There i s no way to recover t h i s passphrase i f you lose i t . To avoid losing data, you should normally wr i te down the passphrase arid keep i t in a safe place separate from th i s computer.
Encryption passphrase:
< I n d i e t r o <Contiriuare>
;TftB> sposta t ra element oazio> seleziona; <lnvlo> a t t i va i bot ton i
Figura 1.9 - Per proteggere un disco cifrato si deve usare una passphrase difficile da individuare.
Nella schermata successiva, quindi, va digitata nuovamente la passphrase appena inserita, per conferma. Fatto ciò, si potranno leggere nella scher-mata seguente le informazioni dettagl iate sulle partizioni che saranno create sull'hard disk: non rimane che selezionare il pulsante Sì per salvare le modif iche sul disco. Una volta che l'installazione di Ubuntu Server è terminata, al boot del PC comparirà una riga Enter LUKS passphrase: simile a quella visibile nel l ' immagine seguente (Figura 1.10). Solo d ig i tando la giusta passphra-se si potrà far continuare la procedura di avvio e avere, così, accesso al sistema.
¡Starting up ... •Loading, please wait... ISetting up cryptographic volume sda5_crypt (based on /deu/disk/by-uuid/922b463e fecaf-4d6c-bc0b-6c97d43d6ael) •Enter LUKS passphrase: _
Figura 1.10- All'avvio dei PC bisogna inserire la giusta passphrase.
Partizinnamenta manuale
Un server è una macchina dai compit i specifici che, spesso, richiede con-figurazioni personalizzate per funzionare al meglio. Per tale ragione può essere utile, su di un PC adibi to a uso server, gestire nel det tagl io le par-tizioni presenti sul disco rigido, scegliendo autonomamente dimensioni e filesystem da adottare caso per caso.
L'ultima opzione disponibi le per partizionare il disco, quindi, permette di ottenere il pieno control lo delle partizioni da parte del l 'utente: nella
schermata con elencati i metodi di partizionamento, dunque, si selezioni la voce Manuale. Prima di proseguire nell'installazione, però, è necessario conoscere in modo approfondi to i filesystem disponibi l i su Linux e prendere confidenza con le directory di sistema.
I filesystem disponibili
II filesystem è il sistema mediante il quale i file vengono memorizzati e gestiti su un supporto. Anni fa, il filesystem di default su Linux era Ext2: si tratta di un filesystem solido e affidabile ma, purt roppo, privo di un siste-ma di journaling. Di cosa si tratta? Il sistema di journal ing permette di salvare in un apposito file di log lo stato delle operazioni su disco effettuate su di una determi-nata partizione. Nel file di log è indicato se un'operazione è stata portata a termine o meno. Quando una macchina viene riavviata a causa di un crash di siste-ma, quindi, tale file viene consultato e ciò consente di ottenere un filesy-stem sempre in stato consistente, cioè integro. In questo modo viene scongiurata la necessità di effettuare lunghi controlli preliminari sulle partizioni prima di poter accedere nuovamente al sistema. Attualmente Ext2 ha ceduto lo scettro di principale filesystem su Linux ad altri filesystem più moderni , tutt i dotat i di un sistema di journaling: Ext3, Reiserfs, Reiser4, JFS e XFS. Ecco una descrizione succinta delle caratteri-stiche di ciascuno di essi:
• Ext3: si tratta del filesystem scelto come default da Ubuntu Server per i partizionamenti guidati. Le sue doti di spicco sono una grande soli-dità e la presenza di un sistema di journaling di t ipo data + metadata. Questa seconda caratteristica fa sì che, dopo un crash, i dati presenti su disco siano sempre i più recenti. In altri sistemi di journaling, inve-ce, la possibilità di ottenere un filesystem consistente non implica la certezza di ritrovare sull'hard disk gli ultimi aggiornamenti sui file;
• Reiserfs: ha prestazioni ragguardevoli soprattutto quando si ha a che fare con file mol to piccoli. Nel complesso, un filesystem piutto-sto robusto e molto veloce;
• Reiser4: filesystem innovativo non ancora incluso nel kernel stan-dard Linux. L'architettura modulare lo rende un filesystem estrema-mente dutt i le; si pensi alla possibilità di supportare operazioni di compressione e crittografia direttamente a livello di filesystem. La sua dote precipua è una grande efficienza nel gestire piccoli file e directory con un gran numero di file al loro interno;
• XFS: prestazioni eccellenti in tutt i i campi tranne che nella cancella-zione dei file. Si tratta di un filesystem mol to solido, che rappresen-ta la scelta ideale quando si devono manipolare file di grandissime dimensioni. Consente di ingrandire e deframmentare una partizio-ne senza che questa debba essere preventivamente smontata;
• JFS: offre buone prestazioni in qualsiasi situazione, grazie al r idotto carico di lavoro sulla CPU anche durante i picchi di utilizzo del di-sco. Gestisce al megl io dischi di grandi dimensioni.
Quale filesystem utilizzare per il proprio server? Probabilmente i migliori fs per un uso generico sono Ext3 e XFS, ma Linux consente di utilizzare filesystem differenti sulle diverse partizioni dell 'hard disk. Per esempio, se in un determinato sistema una partizione deve contenere i dati di un proxy server, che t ipicamente fa uso di un gran numero di file di piccole dimensioni, la scelta ideale è quella di formattare la partizione con Reiserfs. Se, invece, i continui trasferimenti di file in alcune partizioni rischiano di far collassare delle macchine non t roppo performanti si può pensare di formattare tali partizioni con JFS. Infine, su un media center "v iaggiano" spesso file mult imedial i di grandi dimensioni: è proprio la situazione migliore, almeno in ambi to domestico, per sfruttare al massimo le potenzialità del filesystem XFS.
Le directory di sistema
Nei paragrafi precedent i si è visto come la procedura di part iz ionamento gu idato crei su disco due partizioni: quella di root e quella di swap. La partizione di root cont iene la " radice" del l ' intero albero di directory del sistema (è detta anche, quindi , directory radice): si tratta della partizione
26 Dig¡talLifeStyle»pro
principale di ogni installazione, tanto da poter essere la sola presente su disco. La partizione di swap, invece, non è altro che uno spazio sull'hard disk che fornisce al sistema della memoria virtuale quando la RAM disponibi le non è più sufficiente. Ma il part izionamento di un disco può essere decisamente più articolato: ogni directory presente sulla directory radice, infatti, può essere spostata su di una partizione separata. L'utilizzo di un più ampio numero di partizioni comporta alcuni indubita-bili vantaggi: innanzitutto, ciò permette di gestire in modo più dutt i le lo spazio su disco. Quindi, semplifica le procedure di backup consentendo di effettuare delle copie dirette di singole partizioni anziché dei file che le compongono. Infine, può costituire un'ott ima barriera contro malfunzio-namenti e attacchi al sistema.
Può capitare, infatti, che l'esecuzione di un comando o un'operazione su disco abbiano come esito imprevisto l 'occupazione di tu t to lo spazio di-sponibile sul supporto: nel caso di utilizzo della sola partizione di root, questo comporterà l ' impossibilità di scrivere sull ' intero disco, con un evi-dente danno per l ' intero sistema. Se si fa uso di una pluralità di partizioni, invece, a risultare piena sarà la sola partizione su cui è avvenuta l 'opera-zione di scrittura.
Nella Tabella 1.2, quindi, vengono elencate le principali directory che è utile spostare su partizioni separate.
Tabella 1.2 - Le d i rec tory di sistema.
Di rectory Uti l izzo Contiene tutt i i fi le personali degl i utenti. Separandola dalla partizione di root è possibile reinstallare una distri-buzione mantenendo i file personali intatti: utile se un ser-ver è stato compromesso e bisogna reinstallarlo dal CD Contiene i programmi installati dal sistema, la documen-tazione ed i file di sviluppo. Creando una partizione se-parata si possono differenziare i file di sistema dalle ap-plicazioni
/ home
/usr
Directory Uti l izzo Qui vengono inseriti dei dati di sistema. La directory è usata per i lavori di stampa e per i file di log. Una partizio-ne separata scongiura l ' ipotesi che i file di log " inond ino" tu t to l 'hard disk
Contiene i file temporanei creati dal sistema o dai singoli programmi. Una partizione separata permette di limitare i permessi di esecuzione sui file temporanei, così da scon-giurare exploit di questo t ipo Contiene i file del kernel. Utilizzando una partizione sepa-rata, in caso di filesystem corrotti sulle altre partizioni, si potrà comunque effettuare il boo t potendo contare su di un sistema minimale Questa directory raccoglie i file di configurazione del si-stema. Dedicarle una partizione può essere utile per effet-tuare copie di backup dei file di configurazione in modo pratico e veloce
Dopo questi necessari approfondiment i sui filesystem e sulle directory di sistema, si può tornare al programma di installazione di Ubuntu Server con le idee chiare su come procedere.
Scegliere una per una le partizinni
Una volta scelto il part izionamento manuale, comparirà una schermata simile al l ' immagine seguente (Figura 1.11). Questa rappresenta un'ante-prima delle partizioni presenti sul disco. In questo paragrafo si utilizzerà come esempio una configurazione del-le partizioni tipica per una piccola macchina server: le partizioni presenti sono /boo t , /var, /home, oltre ovviamente alla partizione di root e a quella di swap. Ecco come procedere.
Se l 'hard disk non cont iene una corretta tabel la del le part izioni, nella schermata sarà presente sol tanto una riga con le informazioni sul l 'hard
28 DigiialLife;
disk, senza alcuna part iz ione elencata: bisogna allora selezionare con i tasti freccia la riga relativa al disco e premere Invio. Nella schermata successiva viene chiesto se si vuole creare una nuova tabel la della par-tizioni: si deve r ispondere Sì. Si ritornerà così alla schermata di anteprima, in cui sarà comparsa una riga con la scritta SPAZIO LIBERO. Si selezioni tale riga e si prema Invio.
Si inizia con la partizione di swap
Ora si creeranno via via le diverse partizioni sul disco: si può iniziare con la swap, così da poter lasciare comodamente tut to il restante spazio dispo-nibile per le partizioni principali. Nella nuova schermata, quindi, si deve selezionare l 'opzione Crea una nuova part iz ione.
I 1 I i 1<TOB> sposta t r a elementi; <Spazio> seleziona; <Invio> a t t i v a i bo t ton i ^ ' . • I I S 1
Figura 1.12 - Le opzioni disponibili quando si seleziona lo spazio libero sull'hard disk.
Fatto questo, bisogna stabilire lo spazio da riservare alla nuova partizione. Lo si può indicare in forma assoluta (5 GB, 1500 MB ecc.) o in forma per-centuale (25%, per esempio, stabilisce che si vuole riservare il 25% dello spazio disponibi le a questa partizione). Per una partizione di swap sono solitamente sufficienti 256 MB di spazio: non è più valida, infatti, la vecchia regola secondo la quale è necessario dedicare una quantità di spazio su disco doppia rispetto alla RAM dispo-nibile sulla macchina. Nel caso si reputi che carichi di lavoro gravosi sul server possano talvolta aumentare in modo rilevante le richieste di me-moria, si può creare una partizione di swap di dimensioni maggiori , per esempio di 1 GB.
Fatto questo, si deve poi indicare il t ipo di partizione da utilizzare, se Primaria o Logica, e la posizione della partizione, se all ' Inizio o alla Fine dello spazio su disco. Nel caso della swap si scelga una partizione primaria posta all'inizio dell 'hard disk: col locando la partizione di swap nei primi settori di un disco, infatti, se ne migl ioreranno le prestazioni.
A questo punto comparirà una schermata con le impostazioni per la par-tizione (Figura 1.13).
[! ! ] Partizionare i dischi
Modifica de l la par t iz ione n* 1 d i SCSI! (0,0,0) (sda), Non è stato trovato nessun f i l e system in questa par t iz ione.
Impostazioni de l ia par t iz ione
Opzioni d i mount: E t ichet ta : Blocchi r i s e r v a t i Uso t i p i c o :
relat ime nessuna 5% standard
A t t i va f l ag «avviabi lé»: d i sa t t i va to
Copia i d a t i da un 'a l t ra par t iz ione Cancellare la par t iz ione Preparazione d i questa par t iz ione completata
<Indietro>
a t ra elementi; <Spazie> seleziona; <Invio> a t t i v a i bot ton i
Le opzioni disponibi l i in questa schermata sono numerose e importanti . La prima, Usato come, indica il filesystem impiegato nella partizione sele-zionata. Il Punto di mount , invece, stabilisce in quale directory il sistema deve rendere accessibile il contenuto della partizione. Si ha piena libertà nell 'abbinare una partizione a una qualsiasi directory contenuta nell 'albe-ro che parte da / , cioè dalla partizione radice.
L'opzione successiva, Opz ion i d i mount , consente di indicare se nella partizione corrente non bisogna permettere l'esecuzione di file binari (pa-rametro noexec), se il filesystem deve essere in sola lettura (parametro ro) e molto altro ancora. Tramite l 'opzione seguente, Et ichetta, è quindi possibile attribuire un'etichetta alla partizione. I Blocchi r iservati, invece, indicano la percentuale di spazio su disco che viene riservata per sicurezza all 'utente root: lasciando un numero suffi-
den te di blocchi è possibile evitare che singoli utenti nel sistema possano riempire l ' intero hard disk. L'opzione successiva, Uso t ip ico, compare se si è scelto come filesystem Ext3 o Ext2 e consente di modificare alcuni parametri del filesystem, così da ottimizzarlo per un uso specifico. I valori disponibi l i sono standard, news, largef i le e Iargefi le4: news è ideale per partizioni con molt i file di piccole dimensioni mentre largef i le e Iargef i le4 sono adatti a gestire al megl io volumi con pochi file di grandi e grandissime dimensioni. L'ultima opzione, A t t i va f lag «avviabile», deve assumere il valore a t t iva to sulla partizione contenente i file del kernel Linux: se si utilizza una partizio-ne / boo t il valore a t t i va to deve essere presente su questa, altrimenti tale valore va impostato sulla partizione radice. Per creare la partizione di swap, quindi, basta semplicemente assegnare all 'opzione Usato come ¡1 valore area di swap. Fatto questo, si seleziona la voce Preparazione di questa par t iz ione comple ta ta per tornare così alla schermata con l 'anteprima delle partizioni.
1. Installazione
Aggiungere le altre partizioni
Ora che la partizione di swap è stata creata, bisogna aggiungere tut te le altre partizioni. Ecco le istruzioni per creare la partizione /boot . I primi passaggi da com-piere ricalcano quelli già visti per la partizione di swap: nella schermata con l'anteprima delle partizioni si seleziona la linea con la dicitura SPAZIO LIBE-RO, si sceglie poi l 'opzione Crea una nuova part iz ione e si arriva alla scher-mata in cui bisogna indicare lo spazio da dedicare alla nuova partizione. La partizione /boo t contiene solo i file del kernel e del boot loader; per tale ragione richiede una ridotta quantità di spazio su disco: 50 MB sono più che sufficienti. Si scelga una partizione Primaria, creata a partire dal-l ' Inizio del l 'hard disk. Nella schermata delle Impostazioni per la partizione si indichi /boo t come valore dell 'opzione Punto di mount e si selezioni la riga con l'opzione At t iva f lag «awiabi le» per darle il valore att ivato. Come filesystem si può scegliere il solido e affidabile Ext3: il valore di Usato come deve dunque essere Ext3. Nel l ' immagine seguente è possibile vedere un riepilogo delle opzioni per la partizione / boo t (Figura 1.15).
^ ^ ^ ^ P a r n T i o n a r ^ ^ d i s c ! ^ ^
Modifica della partizione n 2 di SCSI1 (0,0,0) (sda). Non è stato trovato nessun file system in questa partizione.
Impostazioni della partizione
Usato come: mmmmsa Opzioni di mount: Etichetta: Blocchi riservati Uso tipico:
relatime nessuna 5% standard
Attiva flag «awiabile»: attivato
Copia i dati da un'altra partizione Cancellare la partizione Preparazione di questa partizione completata
<Indietro>
<TAB> sposta tra elementi; <Spazio> seleziona; <Tnvin> attiva i bottoni
Figura 1.15 - Le opzioni per creare la partizione /boot.
Non rimane quindi che selezionare la voce Preparazione di questa part i -zione comple ta ta e creare poi le restanti partizioni. La partizione / contiene i principali file di sistema e gli eseguibil i: su di un server diff ici lmente si installeranno ingombrant i ambienti grafici con effetti 3D o giochi dell 'ult ima generazione ma, non di meno, è poco saggio con-cedere uno spazio l imitato alla partizione radice, dato che è sempre pos-sibile che si richieda l'installazione di nuovo software. Si consiglia quindi di dedicare almeno una manciata di GB (5 GB dovrebbero essere più che sufficienti) a questa partizione. Anche le partizione radice sarà Primaria e creata a partire dall ' Inizio del disco. La schermata delle impostazioni per questa partizione avrà / come Punto di mount ed Ext3 come valore del l 'opzione Usato come. La partizione successiva da creare è /var. Le dimensioni di questa variano a seconda dell 'uso che si vuol fare della macchina: molte applicazioni server (come il web server Apache, per esempio) possono memorizzare ingenti quantità di dati all ' interno di questa directory e, in tal caso, lo spazio su disco da dedicare a /var deve essere adeguato. Va ricordato che anche i pacchetti Ubuntu scaricati dalla rete finiscono nella d i rectory/var (precisa-mente, nella cartella /var/cache/apt/archives). Data dunque la variabilità dei dati contenuti in questa directory e viste le dimensioni sempre maggior i degl i hard disk presenti in commercio, per sicurezza è consigliabile dedicare a /var una partizione da alcuni GB. In questo caso si deve scegliere il t ipo di partizione Logica, ricavando lo spazio dall ' Inizio del disco: è necessario utilizzare una partizione logica perché, altrimenti, con la creazione di /var verrebbero occupate tut te e quattro le partizioni primarie disponibil i e non sarebbe più possibile ag-giungere /home o altre partizioni.
Creando una partizione logica, infatti, viene creata anche la relativa partizione estesa: dato che una partizione estesa è, in realtà, un tipo di partizione primaria, se sono state già create su disco quattro partizioni primarie non è più possibile aggiungere alcuna partizione estesa e, quin-di, nemmeno partizioni logiche.
Nelle impostazioni per/var, quindi, si sceglierà /var come Punto di mount . Come filesystem si può scegliere il consueto Ext3, anche se è vero che la directory /var, spesso, è caratterizzata dalla presenza di un gran numero di file di piccole dimensioni: se questo è il caso del proprio server si può indicare ReiserFS come valore del l 'opzione Usato come. In alternativa, si può mantenere Ext3 e scegliere news come Uso t ip ico. Non resta che creare l'ultima partizione, /home. Si lasci a questa tu t to lo spazio disponibi le sull'hard disk. Ciò permetterà all 'amministratore di ag-giungere un numero nutrito di utenti al sistema, offrendo a essi la maggior quantità di spazio disponibi le per document i personali e file eseguibil i. Ovviamente, se si ha intenzione di allestire un server "puro" che fornisca semplicemente un servizio agli altri computer della LAN, non ha mol to senso lasciare tu t to questo spazio alla /home, e la strategia nella riparti-zione dello spazio su disco andrebbe debi tamente rivista (per esempio, aumentando lo spazio da assegnare alla partizione /var). Comunque, per dare tu t to lo spazio rimasto sull'hard disk alla /home si inserisce max come valore per le dimensioni della partizione, oppure si prema semplicemente Invio. Fatto questo, si sceglie / h o m e come Punto di mount e si indica come filesystem Ext3.
Un'ultima accortezza può essere quella di ridurre, in questo caso specifi-co, la percentuale dei Blocchi r iservati. Date le ampie dimensioni della partizione /home, infatti, una percentuale abbassata al 2% costituirà co-munque un sufficiente "salvagente" per l 'utente root e, al t empo stesso, lascerà disponibi le una maggiore quantità di spazio per i file personali degl i utenti.
Confermate le impostazioni per /home si tornerà alla schermata con l'antepri-ma delle partizioni, che sarà ora simile all' immagine seguente (Figura 1.16). A questo punto non rimane che selezionare l 'opzione Terminare il par-t i z ionamento e scrivere i cambiament i sul disco. Nella schermata suc-cessiva comparirà l 'elenco delle partizioni che il sistema formatterà: dopo aver controllato che tu t to corrisponda a quanto richiesto, si selezioni il pulsante Sì in basso così da confermare le modif iche al disco. Le partizioni verranno formattate e saranno installati i pacchetti di base del sistema.
I )igita!LifeStyle*pro 3 5
Linux Ubuntu per server e reti
[..ti] Partizionare-
Questa è un'anteprima delle partizioni e dei punto di mount attualmente configurati. Selezionare una partizione per modificarne le impostazioni (file system, mountpoint, ecc.), uno spazio libero per creare delle partizioni o un dispositivo per inizializzarne la tabella delle partizioni.
Partizioriamento guidato Aiuto sul partizionamento
SCSIl (0,0,0) (sda) - 12.9 GB ATA VBOX HARDDISK N( 1 primaria 255.0 MB f STOP sutap n* 2 primaria 49.4 MB B f ext3 /boot n° 3 primaria 5.0 GB f ext3 / n* 5 logica 2.0 GB f ext3 /var
Annullare i cambiamenti alle partizioni Terminare il partizionamento e scrivere
<Indietro>
i cambiamenti sul disco
<TAB> sposta tra elementi; <Spazio> seleziona; <Invio> attiva i bottoni
Figura 1.16 - La schermata con tutte le partizioni create.
Se le partizioni ci sono già
Solitamente l 'allestimento di una macchina server avviene su hardware appositamente acquistato: qualche volta, però, capita di dover "riciclare" dei computer e i loro rispettivi hard disk, adibendol i a uso server. In questi casi, nella schermata che elenca le modalità di part izionamento disponibi l i compariranno delle voci ulteriori: Gu idato - Ridimensionare (seguito dalla partizione che è necessario ridimensionare) e Gu ida to - usa-re il più ampio spazio con t iguo disponibi le.
La prima opzione consente di mantenere le partizioni preesistenti, ridi-mensionandone una per far posto all'installazione di Ubuntu Server. Dopo aver scelto Gu idato - Ridimensionare, quindi, si devono confermare le modif iche all 'hard disk selezionando il pulsante Sì nella schermata che appare.
Le nuove dimensioni della partizione da ridimensionare vanno indicate nella schermata visibile nel l ' immagine che segue (Figura 1.17).
3 6 DigitalLifeStyle*pro
B<IfìB>_SBgsta.. tra elementi; <Spazio> seleziona; <Invio> attiva i b o t t o n i
Figura 1.17 - La schermata nella quale si ridimensiona una partizione per far spazio a Ubuntu Server.
È possibile inserire direttamente lo spazio in MB o GB che deve occupare la partizione, oppure utilizzare un valore in percentuale o, ancora, scrivere max per lasciare alla partizione lo spazio massimo consentito. La seconda opzione disponibi le, Gu ida to - usare il p iù ampio spazio cont iguo d isponib i le , permette di mantenere le partizioni preesistenti in-tegre installando Ubuntu Server nello spazio che resta sul disco. Utilizzando il part izionamento manuale, infine, nella schermata con l'ante-prima delle partizioni è possibile selezionare una partizione preesistente e poi ridimensionarla o cancellarla tramite le rispettive opzioni presenti nella schermata delle impostazioni.
I dischi in RAID RAID sta per Redundant Array of Independent Disks ed è un sistema che permette di utilizzare per la memorizzazione dei dati due o più hard disk contemporaneamente, soli tamente delle medesime dimensioni.
Ciò ha lo scopo di ridurre al minimo gli effetti negativi di possibili guasti ai dischi e di aumentare le prestazioni degli stessi: nel primo caso i dati vengono replicati sui dischi presenti, nel secondo vengono invece ripartiti fra i dispositivi. Linux può implementare via software un sistema RAID con risultati egregi. Le diverse t ipologie di RAID che il sistema operativo mette a disposizione sono elencate nella Tabella 1.3.
Tabella 1 . 3 - 1 t ip i di RAID disponibi l i . Tipo di RAID Util izzo
Ripartisce i dati su più dischi per aumentare le prestazioni in lettura e scrittura rispetto all'utilizzo di un unico hard disk. Questa tecnica viene chia-mata "str iping" Gli stessi dati vengono scritti su più dischi. Se un disco si guasta il sistema continua a funzionare utilizzando gli altri dischi. Questa tecnica è chia-mata "mirroring" Effettua lo striping ma in più dedica un intero di-sco alle informazioni di parità. Queste informazio-ni servono per la ricostruzione dei dati nel caso di errori su un disco Simile al RAID 4 ma memorizza le informazioni di parità in striping su più dischi. Le prestazioni sono perciò migliori di quelle ottenibil i con il RAID 4 Permette semplicemente di riunire più dischi in un unico disco virtuale di grandi dimensioni. Se un solo hard disk si rompe l'intero RAID smette di funzionare
Il sistema di installazione di Ubuntu Server consente di adottare il RAID sui propri dischi in maniera semplice e diretta. Nel paragrafo seguente, dunque, si vedrà come procedere nell'installa-zione del sistema operativo utilizzando due hard disk in RAID 1, /dev/sda
RAIDO
RAID 1
RAID 4
RAID 5
RAID lineare
e /dev/sdb: ogni disco conterrà tre partizioni, la partizione radice (/dev/ sdal e /dev/sdb1), /home (/dev/sda2 e /dev/sdb2) e swap (/dev/sda3 e /dev/sdb3).
Installazione in RAID 1
Per attivare il RAID 1 sui due dischi durante l'installazione di Ubuntu Server bisogna prima creare i necessari dispositivi RAID, poi si devono assegnare filesystem e punti di mount ai dispositivi stessi. Nella schermata Part izionare i dischi si scelga come metodo Manuale. Quindi si selezioni il pr imo hard disk dall 'elenco e alla domanda Creare una nuova tabel la del le par t iz ioni vuota? si risponda Sì. A questo punto bisogna creare una per una le partizioni / , /home e swap sincerandosi di selezionare sempre vo lume fisico per il RAID come valore del l 'opzione Usato come. Inoltre, la partizione radice deve avere neces-sariamente il f lag «avviabi le» att ivato (Figura 1.18).
Terminata la creazione delle partizioni sul pr imo disco, si effettua la me-desima sequenza di operazioni per il secondo hard disk. Anche qui il f lag «avviabi le» deve essere attivo per la partizione radice. Poi, nella schermata Part izionare i dischi si seleziona la voce Conf igurare il RAID sof tware e alla domanda Scrivere i cambiament i sui disposi t iv i si r isponde Sì. Nella schermata successiva bisogna scegliere tra le opzioni disponibil i Creare un device mul t id isk (MD), poi si indica come t ipo di multldisk RAID1 . Come numero di device attivi si lascia il valore di default 2, mentre il numero di device «spare» (dispositivi di scorta) deve essere 0. Quando si arriva alla schermata visibile nel l ' immagine seguente (Figura 1.19) è necessario accoppiare in modo oppor tuno le partizioni presenti sui due hard disk.
[JJJ Par t iz ionare i d iser t i
Si è sce l to d i creare un array RftIDl con 2 device a t t i v i .
Scegliere quale p a r t i z i o n i sono device a t t i v i . Si devono selezionare esattamente 2 p a r t i z i o n i .
Device a t t i v i per i l mul t id isk RfilDi:
<Indietro> <Continuare>
<TftB> sposta tra elementi; <-sna7Ìn> selezionai <Invio> attiva i bottoni
Figura 1.19-In questa schermata si devono collegare le partizioni nei due dischi.
Sotto la scritta Device at t iv i per il mul t id isk RAID1 si selezionino dunque le partizioni radice sui due dischi, cioè /dev/sda1 e /dev/sdb1. Fatto que-
sto si scelga nuovamente l 'opzione Creare un device mul t id isk (MD), si indichi RAID1, 2 e 0 nelle schermate successive e si metta poi la spunta sia su /dev/sda2 sia su /dev/sdb2. Si proceda nel medesimo modo per accoppiare /dev/sda3 con /dev/sdb3. Infine, va selezionata la voce Terminare nella schermata Passi di conf igu-razione di mult id isk. Si tornerà così alla schermata con la lista delle parti-zioni disponibil i . In questo elenco verranno elencati i dispositivi RAID1 0, 1 e 2 corrispondenti alle tre partizioni. A questo punto non rimane che selezionare la riga posta sotto RAID1 di-sposit ivo n° 0, così da poter stabilire il filesystem per la partizione radice e il relativo punto di mount. Quindi si passa alla riga sotto RAID1 disposi t ivo n° 1 per configurare i valori della partizione /home e alla riga sotto RAID1 disposi t ivo n° 2 per impostare la swap. Infine, si va sulla voce Terminare il par t i z ionamento e scrivere i cambia-ment i sul disco per attivare il RAID1 e procedere con l'installazione del sistema operativo.
Combinazione di RAID e LVM
È possibile unire i vantaggi di RAID e LVM, conf igurando un disposit ivo RAID che utilizzi al suo interno dei volumi LVM. La procedura da seguire per il RAID 1 è la seguente. Si inizia creando un'unica partizione primaria sul pr imo disco (/dev/sda). Quindi, si attiva su di essa un vo lume fisico per il RAID e si rende la par-tizione avviabile. Vanno poi effettuate le stesse operazioni sul secondo hard disk (dev/sdb). A questo punto si seleziona la voce Conf igurare il RAID sof tware e si seguono le istruzioni fornite nel paragrafo precedente per abilitare il RAID 1 sui dischi. Si indicano come device attivi /dev/sda1 e /dev/sdb1. Poi si sceglie l 'opzione Terminare e, nella schermata con l 'elenco del-le partizioni, si seleziona la riga sotto RAID1 d ispos i t i vo n° 0 (Figura 1.20). Come valore per l 'opzione Usato come va scelto vo lume f isico per LVM.
l ) i g i i a lL i f eS ly l c «pro ^ ¿ J J f c
M ¡ Partizloriare i disc
Questa è un'anteprima de l le p a r t i z i o n i e dei punto d i mount attualmente con f i gu ra t i . Selezionare una par t i z ione per modificarne le impostazioni ( f i l e system, mountpoint, ecc . ) , uno spazio l i be ro per creare de l le p a r t i z i o n i o un d i spos i t i vo per i n i z i a l i z za rne la tabe l l a de l le p a r t i z i o n i .
Configurare i l RftlD software
Poi si deve selezionare la voce Conf igurare il Logicai Volume Manager. Si risponde Sì nella schermata che appare, quindi nella schermata succes-siva si sceglie Creare i g rupp i di vo lume e si assegna un nome a propria scelta (per esempio vg) al gruppo di volume.
Dopo che si è selezionato Configurare il Logicai Volume Manager è pos-sibile che appaia una schermata di errore con la dicitura Iniziale "Error informing the kernel about modifications to partition". Si tratta di un errore irrilevante e per proseguire è sufficiente andare su Ignore.
Fatto questo, si indica / dev /mdO come Device per il nuovo g ruppo di vo lumi e si aggiungono poi i vari volumi logici (le partizioni da utilizzare)
I l . ) ig italLi feSiyle*pr(
1. Installazione
selezionando la voce Creare un vo lume logico. Per ogni partizione si inserisce un nome e si stabilisce lo spazio su disco che questa deve oc-cupare. Infine, si seleziona Terminare nella pagina con il r iepi logo della configurazione di LVM. A questo punto si torna alla schermata con l'elenco delle partizioni: qui saranno comparse delle righe relative ai volumi logici appena creati (inizia-no tut te con la dicitura LVM VG). Ora non rimane che selezionare ciascuna riga posta sotto l' indicazione di un volume logico e indicare per ogni vo-lume il filesystem da adottare e il punto di mount.
Per finire, si va sulla voce Terminare il par t i z ionamento e si consente di far scrivere le modif iche sui dischi. L'installazione del sistema operativo, dunque, procederà e verranno installati i pacchetti di base. Dato che Grub non è ancora compatibi le con i sistemi RAID + LVM, però, è necessario utilizzare LILO come boot loader. Nella schermata che appa-rirà al termine dell' installazione del sistema (Figura 1.21), quindi, si dovrà selezionare come Dest inazione del l ' instal lazione di LILO la voce / d e v / mdO: so f tware RAID array.
DigitaiLifeSty!e»pro o
Per maggiori informazioni sul boot loader LILO (Linux LOader) un vali-do documento introduttivo è il LILO mini-HOWTO. Lo si può trovare all'indirizzo: http://www.tldp.org/HOWTO/LILO.html La traduzione Italiana di questo testo si trova all'indirizzo: http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/it/html sin-gle/LILO.html.gz
Dati utente e software Una volta configurate le partizioni e installati i pacchetti di base, l'instal-lazione prosegue con una schermata in cui viene richiesto di digitare il nome completo del l 'utente principale del sistema: se lo si desidera, si può inserire sia il proprio nome sia il proprio cognome.
Ubuntu Server, per maggiore sicurezza e per praticità, non consente l'accesso al sistema tramite l'utente root: le operazioni di amministra-zione avvengono dando, in maniera provvisoria, pieni poteri all'utente principale nel sistema. Se lo si reputa necessario è comunque possibile rendere attivo il classico utente root.
Dal nome completo del l 'utente verrà ricavato il nome del l 'account con cui si avrà accesso al sistema. Nella pagina successiva è poi possibile modif i-care il nome dell 'account. Quindi, si deve inserire la password per l 'account e nella schermata che segue essa va digitata nuovamente, per conferma. Nella schermata successiva è possibile indicare un proxy HTTP per ac-cedere a Internet: può essere necessario indicarlo se si utilizza una rete aziendale che non consente di raggiungere direttamente la rete esterna. In tutt i gli altri casi si prema Invio per proseguire nell'installazione.
Le applicazioni da installare
Bisogna poi indicare quali applicazioni si desidera installare subito sul server. Ecco la lista delle opzioni disponibil i, selezionabili una per una premendo il tasto Spazio:
• DNS server. Att ivando questa voce si installa sulla macchina il server DNS BIND;
• LAMP server. LAMP è un acronimo per Linux/Apache/MySQL/PHP e indica l'insieme dei programmi utilizzati t ipicamente per gestire un completo web server;
• Mail server. Installa tut to il necessario per attivare un servizio di mail server;
• OpenSSH server. Questo servizio consente di accedere da remoto alla macchina mediante una connessione cifrata;
• PostgreSQL database. Installa i pacchetti per le componenti client e server del database relazionale PostgreSQL;
• Print server. Installa un server per la condivislone delle stampanti all ' interno della rete locale;
• Samba File server. Selezionando questa opzione viene installato un file server che permette di condividere file tra sistemi Linux e Windows.
È anche possibile non selezionare alcuna voce. In questo caso sull'hard disk verrà installato il solo software indispensabile per il funzionamento della macchina. Al termine dell ' installazione comparirà sullo schermo l ' immagine seguen-te (Figura 1.23): non rimane che togl iere il CD dal lettore e premere Invio, così da far riavviare il PC e caricare il sistema operativo Ubuntu Server.
Gestire il sistema
Come amministrare gli Utenti, gestire il
parca programmi e aggiungere nuove
partizioni.
Al riavvio del PC ci si troverà davanti al prompt di login: qui bisogna inse-rire il nome dell 'utente principale e digitare la relativa password, così da avere accesso al sistema tramite la console di terminale. Fatto questo, si può cominciare a prendere confidenza con alcuni degli elementi più im-portanti del sistema operativo.
Amministrare gli utenti In un sistema appena installato, l'unico utente attivo è quello principale. Si è anticipato come l'utente principale possa acquisire al bisogno le prero-gative e i poteri del superutente root. Per ottenere questo si fa precedere dall'istruzione sudo il comando che si desidera eseguire con i permessi di root, quindi si inserisce la password dell 'utente principale. Ecco un esempio, da digitare direttamente nella console di terminale:
sudo mkdir Immagini
D o p o aver scritto questo comando e p remuto il tasto Invio, il sistema farà apparire una riga come la seguente (al posto di aie verrà indicato il nome del propr io utente):
[sudo] p a s s w o r d for ale:
A questo punto bisogna scrivere la password de l l 'u tente pr incipale e pre-mere Invio.
ale@pitagora:~/tmp$ sudo mkdir Immagini [sudo] password for ale: ale@pitagora: ~/tmp$
Figura 2.1 - Con sudo si ottengono i privilegi dell'utente root inserendo la password dell'utente principale.
Per maggiore comodità, il comando sudo memorizza la password inserita per un determinato periodo di tempo (per default 15 minuti). Richiamando più volte sudo in questo arco di tempo, quindi, non verrà richiesto all'utente di digitare nuovamente la password.
Il comando esegui to nel terminale crea la d i rectory (mkdir) Immagin i a par-tire dalla cartella corrente e, per fare questo, ot t iene momentaneamente i poter i del superutente. Una volta che il sistema ha esegui to il comando che segue l ' istruzione sudo, qu ind i , si tornerà ad avere i poter i l imitati del-l 'utente principale.
Talvolta, però, è necessario lanciare una lunga serie di comandi da root e in tal caso il dover premettere ogni volta sudo può costituire un intralcio seccan-te. La soluzione è quella di utilizzare l 'opzione -s di sudo, in questo modo:
sudo -s
I DìgitalLife.Sty]e*pro
Verrà richiesto di inserire la password del l 'utente principale. Una volta che sono stati lanciati tutt i i comandi che si desidera eseguire da root, per tornare ai poteri del l 'utente principale basterà scrivere exit o premere contemporaneamente i tasti Ctr l e D.
Ripristinare l'utente root
In molte distribuzioni Linux e nei sistemi Unix classici è attivo l 'utente root: in tal caso, quindi, invece di acquisire i poteri di root con sudo è possibile effettuare direttamente l'accesso al sistema con il superutente. Per ottenere lo stesso comportamento anche in Ubuntu Server è sufficien-te assegnare una password a root lanciando il comando che segue:
sudo p a s s w d root
A questo punto bisogna digitare la password dell 'utente principale, se que-sta non è stata inserita in precedenza, quindi si deve indicare una password per root e digitarla poi una seconda volta per conferma (Figura 2.2).
ate@pitagora:~$ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully ale@pitagora: -$
Figura 2.2 - Per attivare l'utente root bisogna semplicemente dotarlo di una password.
Fatto questo si potrà effettuare il login direttamente da root, oppure, se si è effettuato l'accesso con un altro utente, sarà possibile acquisire i po-teri di root nella sessione corrente lanciando il comando su - . In questo secondo caso, come per il comando sudo -s visto in precedenza, si tor-nerà ad assumere l ' identità del l 'utente precedente richiamando exit o premendo Ct r l+D.
Nel prosieguo di questo volume, comunque, si continuerà ad adottare sudo come metodo per acquisire i poteri del superutente.
Aggiungere nuovi utenti
Per aggiungere un nuovo utente nel sistema si usa il comando adduser,
seguito dal nome del l 'account da creare:
sudo adduser utente
Bisogna quindi digitare la password da assegnare all 'utente e inserirla poi di nuovo per conferma. Fatto questo, è necessario aggiungere qualche informazione supplementare sull 'utente. In console comparirà la riga Full Name [ ]: qui si potranno inserire nome e cognome del l 'utente reale cui deve corrispondere l 'account nel sistema. Verrà poi richiesto I' inserimento di altri dati come il numero di stanza (Room Number) del l 'utente, i numeri di te lefono di questo e altro anco-ra. Si può evitare di aggiungere queste informazioni premendo più volte Invio f inché non compare la scritta Is this in fo rmat ion correct? [y/N]. A questo punto si deve premere y sulla tastiera e poi Invio: l 'utente sarà f inalmente creato. Un comando apparentemente elementare come adduser compie, in real-tà, una serie articolata di operazioni nel sistema: conoscerle nel det-tagl io servirà a introdurre alcuni concett i basilari nel l 'amministrazione di un sistema Linux, r imandando poi alle pagine successive i necessari approfondiment i . Una volta lanciato il comando adduser, dunque, v iene assegnato al-l 'u tente prescelto un g ruppo con il nome de l l 'u ten te stesso, qu ind i viene creata una directory Home apposi ta (del t i po /home/u ten te ) . In questa directory, poi , vengono copiat i au tomat icamente i file contenut i in /etc/skel . A questo proposito è necessaria qualche spiegazione aggiuntiva. I gruppi non sono altro che degl i insiemi di utenti a cui ci si può riferire per con-dividere risorse nel sistema: per esempio, è possibile fare in modo che la directory Documenti sia leggibi le solo dal gruppo di utenti doc. Quando si vorrà rendere leggibi le tale directory da un nuovo utente, quindi, baste-rà inserirlo nel gruppo doc.
A ogn i u ten te v iene assegnato un numero progressivo di ident i f icazione,
ch iamato UID. Il p r imo u ten te che si a g g i u n g e al sistema t rami te adduser
ot t iene I 'UID 1001. Il numero ident i f icat ivo per i g r u p p i è invece il GID: il
p r imo g r u p p o agg iun to ha GID 1001. Il superu ten te ha UID 0 e GID 0.
Home, invece, è la directory dove vengono inseriti tut t i i file personali di un singolo utente, mentre /etc/skel è la cartella in cui sono raccolti i f i le stan-dard che ogni utente deve avere al l ' interno della propria directory Home.
Cancellare un utente
Per el iminare un utente dal sistema si usa il comando deiuser: sudo d e i u s e r u t e n t e
Questo comando cancella le informazioni sul l 'utente ma, per ragioni d i sicurezza, non el imina la relativa directory /home. Per cancellarla si può impiegare il comando di cancellazione rm ( l 'opzione -r consente di el imi-nare la directory indicata come a rgomento e tu t te le sue sottocartel le):
sudo rm -r /h o m e / u t e n t e
Per cancellare d i re t tamente un utente e la relativa / h o m e si può far uso d e l l ' o p z i o n e - - r e m o v e - h o m e d i deiuser:
sudo d e i u s e r - - r e m o v e - h o m e u t e n t e
ale@pitagora:-$ sudo deiuser --remove-home utente Looking for files to backup/remove ... Removing files ... Removing user 'utente' ... Warning: Removing group 'utente', since no other user is part of it. Done. ale@pitagora:-$
Figura 2.3 - Con il parametro -remove-home di deiuser è possibile eliminare anche la home di un utente.
DigitalLifeStyle*pro Q
Disattivare un utente
A volte può essere necessario impedire momentaneamente a un utente l'accesso al sistema. Per ottenere questo è possibile fare uso di diversi strumenti, tra cui il comando usermod. Per bloccare la password di un utente, così da impedirgl i di effettuare il lo-gin sulla macchina, si utilizza l 'opzione -L del comando, in questo modo:
sudo usermod -L utente
Successivamente, quando si vorrà sbloccare la password, si dovrà digitare:
sudo usermod -U utente
Gestire le password
In precedenza si è visto come, mediante il comando passwd, sia possibile attivare l 'utente root. In termini più generali, passwd serve a gestire ogni aspetto dell 'uso delle password. Innanzitutto, con questo comando si può cambiare la password di un utente. Lanciando passwd senza alcun argomento si cambia la password dell 'utente corrente: il sistema richiederà l'inserimento della password attuale, quindi sarà necessario digitare una nuova password e reinserirla per conferma. Richiamando passwd da root (sudo passwd seguito dal nome del l 'utente di cui si vuole modificare la password), invece, sarà possibile digitare diretta-mente una nuova password senza dover indicare quella corrente: un'op-zione comoda, per esempio, quando un utente ha smarrito la propria pas-sword e vuole crearne una nuova.
C o n il c o m a n d o passwd è po i poss ib i le s tab i l i re una scadenza pe r la pas-
s w o r d d i un u ten te , supera ta la qua le sarà necessar io camb ia re la password
c o n una nuova . L 'opz ione da usare è -x, segu i ta dal la du ra ta mass ima in
g i o rn i pe r la password e dal n o m e d e l l ' u t e n t e pe r il qua le va impos ta ta
ques ta scadenza:
sudo passwd -x 60 ale
N e l l ' e s e m p i o r i po r t a to l ' u ten te aie dov rà necessa r iamen te camb ia re la
p ropr ia password o g n i d u e mesi .
È poss ib i le , ino l t re , avver t i re l ' u ten te de l la scadenza i m m i n e n t e t r a m i t e
l ' o p z i o n e -w:
sudo passwd -w 3 ale
In q u e s t o e s e m p i o , l ' u ten te aie v iene avver t i to d e l l ' i m m i n e n t e scadenza
de l la p rop r ia password t re g io rn i p r ima de l l ' e f f e t t i vo t e r m i n e de l la stessa.
Per c o n c l u d e r e ques ta b reve carre l lata sul le mi l le funz iona l i tà de l c o m a n -
d o passwd, g raz ie a l l ' opz ione -s è poss ib i le o t t e n e r e un r i e p i l o g o s in te t i co
sul lo s ta to d i un accoun t . C o n passwd -s si m o s t r a n o le i n fo rmaz ion i r iguar-
dan t i l ' u ten te co r ren te , m e n t r e c o n sudo passwd -s utente si v isual izzano
i da t i d i un u t e n t e a p rop r ia scel ta.
L ' ou tpu t de l c o m a n d o sarà s imi le a l l ' e semp io seguen te :
ale P 06/23/2008 0 60 5 -1
Ecco il c o n t e n u t o de i vari c a m p i visual izzat i , p a r t e n d o da sinistra:
• il n o m e d e l l ' u t e n t e d i cui si s tanno m o s t r a n d o le i n fo rmaz ion i (aie);
• è p resen te una p se l ' u t en te p u ò ut i l izzare una password pe r avere
accesso al s is tema, una L se l ' accoun t è b l o c c a t o e NP se n o n è pre-
sen te a lcuna password ;
• la da ta in cui è avvenu ta l 'u l t ima mod i f i ca alla password (06/23/2008
ne l l ' esemp io ) ;
• il n u m e r o m i n i m o d i g i o rn i che d e v o n o passare tra una m o d i f i c a e
l 'al tra de l la password (0, l ' u ten te p u ò camb ia re la password t u t t e le
vo l t e che vuo le) ;
• la du ra ta mass ima de l la password in g io rn i (60);
• quanti giorni prima della scadenza della password bisogna inviare all 'utente un messaggio di avvertimento (5);
• dopo quanti giorni dalla scadenza della password si deve disatti-vare l 'account del l 'utente (-1, opzione disabilitata).
I permessi sui file
Nella console si provi a eseguire il comando is -ai. Verranno mostrati tutti i file e tutte le cartelle presenti nella directory corrente, mediante un elenco in cui ogni riga rappresenta un file o una directory (Figura 2.5). Ecco un esempio:
d r w x r - x r - x 2 a l e a l e 4 0 9 6 2 0 0 8 - 0 6 - 2 4 1 1 : 4 9 D o c u m e n t i /
idrwx-
jdrwx |drwxr-xr |drwxr-xr |-rw-r--r Jdrwxr-xr idrwx Idrwxr-xr - rw
Idrwx-
J-rw-r-|ale@pitagora
3 ale ale 4096 2008-•06- 23 16:02 .Skype 2 ale ale 4096 2008- 04 28 09:00 .ssh
•X 3 ale ale 4096 2008--06-•13 18:38 .streamtuner 1 ale ale 0 2008 04 23 08:59 .sudoasadminsuccessful
• X 3 ale ale 4096 2008--06 •02 12:03 .themes 4 ale ale 4096 2008 06 •10 09:59 .thumbnails
•X ;> ale ale 4096 2008 -06- 24 17:02 tmp •X 5 ale ale 4096 2008--04-•24 16:48 .transmission
1 ale ale 619 2008 •06 •07 17:36 .ufrawrc •X 2 ale ale 4096 2008 -04-•30 12:25 .update-manager-core
2 ale ale 4096 2008 04 •28 09:00 .update-notifier •X 2 ale ale 4096 2008--04--26 12:37 Video
1 root root 6366 2008 •06 •24 18:05 .viminfo 1 ale ale 274 2006 •01 •18 23:44 .vimrc
•X 4 ale ale 4096 2008 -06 •13 16:55 .VirtualBox -X 3 ale ale 4096 2008 •05 22 11:46 .vie
2 ale ale 4096 2008 •04 -28 09:42 .w3m •X 2 ale ale 4096 2008 -06 -24 15:12 .wapi
•X 2 ale ale 4096 2006- 11 23 18:01 .wordtrans 1 ale ale 119 2008-•06 •24 15:11 .Xauthority
-X ale ale 4096 2008 -06 •12 19:10 .xine
•X 10 ale ale 4096 2006 •07 •11 12:03 . xntame • • 1 ale ale 9873 2008--06 •24 18:05 .xsession-errors
Figura 2.5 - Con il comando te -al vengono fornite informazioni dettagliate sui file pre-senti nella directory corrente.
In una linea del genere sono presenti diversi campi separati da un ca-rattere vuoto: il pr imo campo (drwxr-xr-x) indica quali siano i permessi sulla directory Documenti , mentre il terzo (ale) e il quarto (ale) mostrano, rispettivamente, l 'utente e il gruppo cui appart iene la directory. I permessi non sono altro che delle regole di accesso per i file e per le di-rectory. Qual è il significato di una sequenza di caratteri apparentemente C a s u a l e C o m e d r w x r - x r - x ?
Il pr imo carattere, d, indica che le informazioni si riferiscono a una di-rectory, mentre il resto del campo è costituito da tre gruppi di tre caratteri ciascuno: il pr imo gruppo rappresenta i permessi relativi all 'utente (rwx), il secondo indica i permessi del g ruppo di appartenenza (r-x) e l 'ult imo i permessi per agli altri utenti nel sistema (r-x). Il carattere r sta per leggi-bile, w per scrivibile, x per eseguibile.
Il f lag x in un file indica che questo può essere eseguito dagl i utenti
come un normale comando. Una directory eseguibi le, invece, è una
cartella in cui gl i utenti possono entrare.
Interpretando la sequenza drwxr-xr-x d 'esempio, quindi, la directory Do-cumenti risulta leggibi le, scrivibile ed eseguibile dal l 'utente che la possie-de, leggibi le ed eseguibile dal g ruppo d'appartenenza e infine leggibi le ed eseguibile dagli altri utenti. Per modificare i permessi si usa il comando chmod. La sintassi di questo comando è piuttosto articolata; una delle più comuni modalità di utilizzo è la seguente:
chmod utenti operatore permessi file
I primi tre parametri vanno inseriti senza spazi separatori e rappresentano, in realtà, un'unica indicazione sui permessi da modificare, espressa in no-tazione mnemonica. II parametro utenti può contenere una o più lettere tra u, g, o e a. La lette-ra u indica l 'utente a cui appart iene il file, g gli utenti presenti nel g ruppo del file a parte l 'utente possessore del file, o tutt i gli altri utenti e, infine, a indica l'insieme degl i utenti nel sistema. Il parametro operatore, quindi, può essere + per aggiungere un flag al file, - per togl iere un flag dal file e, quindi, = per indicare esattamente i flag per gli utenti selezionati tramite il parametro utenti. L'ultimo parametro della notazione mnemonica, permessi, può essere com-posto da una o più lettere tra r, w, x, x, s e t. Le lettere r, w e x indicano, rispettivamente, i permessi in lettura, scrittura ed esecuzione. La x, quindi,
attiva i permessi di esecuzione solo se ci si riferisce a una directory o se il f i le indicato possiede già dei permessi di esecuzione per altri utenti . La lettera s fa sì che, al l 'esecuzione del f i le, l 'utente corrente assuma i permessi del possessore del fi le o del g r u p p o cui questo appart iene. Infi-ne, t abil i ta il cos iddet to bit sticky: v iene util izzato pr inc ipa lmente sulle directory e impedisce che un utente possa cancellare o rinominare i file al l ' interno della directory stessa, a meno che l 'utente sia il propr ietar io del fi le o della directory oppure sia root.
Il parametro finale file, qu ind i , indica il f i le o la directory dei quali si vogl io-no modi f icare i permessi. Ecco alcuni esempi, di complessità crescente:
chmod a+r Documenti/tesi.pdf
Questo comando agg iunge i permessi di lettura (+r) sul f i le Document i / tes i .pdf a tut t i (a) gli utenti .
L 'esempio seguente, invece, agg iunge i permessi di scrittura (+r) sul file mbox al l 'utente propr ietar io e al g r u p p o (ug):
chmod ug+w mbox
L'ult imo comando, infine, tog l ie i permessi di scrittura (-w) sul file / h o m e / a le /appunt i al g r u p p o (g) e fa in m o d o che gli altri utent i (o) possano solo leggere il f i le (=r):
chmod g-w,o=r /home/ale/appunti
Il comando chmod è di utilizzo complesso. Per ulteriori appro fond iment i si
consiglia di leggere la pagina di manuale (man page) del comando.
Per visualizzare la man page di un comando si deve eseguire in console man comando. Nel caso di chmod, quindi, si dovrà lanciare man chmod. Per scorrere riga per riga le pagine si utilizzano i tasti freccia su e freccia giù, per andare avanti di una pagina si preme Spazio e per tornare indie-tro di una pagina si preme b. Con q si esce dalla man page.
Modificare utente e gruppo di un file
Riprendendo l 'output del comando is -ai r iportato nel paragrafo prece-dente, si è visto come nella riga d 'esempio i campi terzo e quarto mostri-no l 'utente proprietario e il g ruppo di un file o di una directory. Per modificare il proprietario il comando da usare è chown, con la sintassi seguente:
chown utente : gruppo file
Per esempio, per fare in modo che il proprietario del file vacanze.jpg di-venti mario si scrive:
chown mario vacanze.jpg
Il comando chown :video vacanze.jpg, invece, imposta il g ruppo v ideo sul medes imo file de l l 'esempio precedente; infine, la riga seguente indica come propr ie tar io del file jazz.mp3 l 'u tente ale e audio come g ruppo :
chown ale:audio jazz.mp3
Modifiche ricorsive
Spesso si ha la necessità di modif icare i permessi o gli utenti proprietari e i gruppi di tutt i i file contenuti in una directory. Per ottenere questo si utilizza l 'opzione -R, presente sia in chmod sia in chown, che consente di effettuare delle modif iche in modo ricorsivo, attraversando cioè tutt i i file e le sottocartelle a partire dalla directory indicata. Ecco un esempio:
chown -R ale:vacanza Francia2006/
Il comando riportato fa sì che la directory francia2007 e tutt i gli elementi contenuti in questa divengano di proprietà del l 'utente ale e appartenga-no al gruppo vacanza.
alegpitagora:~/Immagini$ chown -R ale:vacanza Francia2006/ ale@pitagora:-/Immagini$ I s -al Francia2006/ totale 32
drwxr-xr-x 4 ale vacanza 4096 2006-09-20 15:56 drwxr-xr-x 9 ale ale 4096 2008-06-23 22:48 drwxr-xr-x 10 ale vacanza 4096 2006-08-17 21:06 Normandia drwxr-xr-x 6 ale vacanza 4096 2006-08-17 21:06 Parigi ale@pitagora:~/Immagini$ Is -al Francia2006/Normandia/ totale 76
drwxr- xr X 10 ale vacanza 4096 2006 08 17 21 06 drwxr- xr X 4 ale vacanza 4096 2006 09 20 15 56 d rwx r xr X 2 ale vacanza 4096 2006 08 17 21 06 2086-68-07- -1', 36 49 drwxr- xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2806-08 -08 - -23 . 14 .52
d rwx r xr -X 2 ale vacanza 4096 2008 -04 07 08 53 2086 08-89- - 2 : . 52 .36 drwxr- xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2006-88-18-- . 23 .08 d rwx r xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2806-68-13- -18 d rwx r xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2086-88-14- -19 . 17 .51 d rwx r xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2006-08-14 -19 .27 ,52 drwxr xr -X 2 ale vacanza 4096 2006 -08 17 21 06 . cairelen t s aleiapitagora:--/Imfriagini$ |
Come aggiungere un gruppo
Nel l 'u l t imo esempio r ipor tato si è incontrato il g r u p p o vacanza, non pre-sente tra i g rupp i inclusi nel sistema al m o m e n t o dell ' instal lazione. Per agg iungere un nuovo g ruppo al sistema si utilizza il comando addgroup segui to dal nome del g ruppo . Nel l 'esempio che segue viene creato pro-prio il g r u p p o vacanza:
sudo addgroup vacanza
Il comando speculare per el iminare un g r u p p o dal sistema è deigroup (sudo deigroup vacanza, per seguire l 'esempio precedente). Per inserire
un utente al l ' interno di un g r u p p o si usa adduser con la sintassi seguente:
sudo adduser utente gruppo
Per r imuovere un utente da un g ruppo , invece, si utilizza deiuser con la medesima sintassi (sudo deiuser utente gruppo). L'elenco dei g rupp i nei quali è presente un de termina to utente si ot t iene con il comando groups segui to dal nome del l 'u tente. Per ot tenere la lista
di tu t t i g rupp i attivi nel sistema, infine, si può leggere il fi le / e t c /g roup con il comando che segue:
cat /etc/group
Si ot terranno in ou tpu t una serie di r ighe, ognuna del le quali mostrerà un diverso g r u p p o presente nel sistema. Ciascuna linea cont iene tre campi separati dal carattere : e il nome del g ruppo appare nel pr imo campo.
ale@pitagora:~$ cat /etc/group root:x:0: daemon:x:1: bin:x: 2 : sys:x:3: adm:x:4:ale tty: x : 5 : disk:x:6: Ip: X : 7 : mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:ale,violetta fax:x:21: voice:x:22: cdrom:x:24:ale,violetta floppy :x: 25 : ale,violetta tape:x:26: sudo:x:27: audio:x:29:pulse,ale,violetta dip:x:30: ale,violetta
Concatenando più comandi nella console di terminale è possibile otte-nere in output una lista dei gruppi attivi nel sistema, presentata in ordine alfabetico e depurata da ogni informazioni accessoria. Per fare questo si esegua il comando seguente: cat /etc/group / cut -fi -d / eort
Una simile catena di comandi viene chiamata pipe.
La gestione dei pacchetti In Ubuntu Server i programmi vengono fornit i al l ' interno di apposit i pacchet t i : ogni pacchetto è costi tui to dal l ' insieme dei file che verran-no effet t ivamente installati sul sistema e da alcuni file di control lo che contengono le istruzioni per installare e disinstallare in modo pul i to il pacchetto stesso.
I pacchetti si relazionano gli uni con gli altri. Per esempio, un web browser necessita di alcune librerie per funzionare (in gergo si dice che il browser "d ipende" da queste librerie): il web browser sarà presente in un pacchet-to e le librerie richieste saranno contenute in altri pacchetti ancora. In questo caso, programma e librerie devono essere perfettamente com-patibil i tra loro: per ottenere questo, i relativi pacchetti vengono prelevati da un repos i tory comune, cioè da un archivio contenente un ampio nu-mero di pacchetti dalla compatibi l i tà reciproca certa. L'insieme dei repository attivi in una macchina, dunque, forma un eco-sistema armonioso in cui ogni singolo elemento si integra con le parti restanti: la versione del kernel è adatta alle librerie di sistema installate, le singole applicazioni alle diverse librerie presenti e così via.
Installare e cercare pacchetti
II comando principale per gestire i pacchetti nel sistema è apt-get. Per installare un nuovo pacchetto, quindi, la sintassi da usare è la seguente: sudo apt-get instali « p a c c h e t t o
Per installare il pacchetto chiamato emacs, per esempio, si userà quindi il c o m a n d o sudo apt-get instali emacs.
Dopo aver premuto Invio per conferma, il pacchetto verrà scaricato da Internet e installato nel sistema, insieme a tutt i i pacchetti da cui d ipende (le "d ipendenze") per il proprio corretto funzionamento. Per ricercare un pacchetto tra tutt i quelli disponibi l i si usa invece il coman-d o apt-cache, COSÌ:
apt-cache search <criterio>
Al posto di «criterio si inserisce il testo che va ricercato tra i nomi dei pacchetti e tra le descrizioni di questi.
Per esempio, per cercare tu t te le occorrenze di " w e b server" si lanci:
apt-cache search web server
Ja le@pi tagora:sudo apt-get i n s t a l l apache2 ¡Reading package l i s t s . , . Done ¡Building dependency tree ¡Reading state in format ion. . , Done ¡The fol lowing extra packages w i l l be ins ta l led :
apache2-mpm-worker apache2-utils apache2,2-common l i b a p r l t i b a p r u t i l l (Suggested packages: j apache2-doc The fol lowing NEW packages w i l l be ins ta l led :
apache2 apache2-mpm-worker apache2-utils apache2.2-common l i b a p r l f : l i b a p r u t i l l
0 upgraded, 6 newly ins ta l l ed , 0 to remove and 0 not upgraded. I f ¡Need to get 1355kB of archives. ¡After th i s operation, 4878kB of addi t ional disk space w i l l be used. Do you want to continue [Y/n]? |
L'output scorrerà nella console e l 'elenco dei vari pacchett i che soddisfano il criterio inserito sarà visualizzato senza seguire alcun ordine. Per avere i risul-tati della ricerca in ordine alfabetico, invece, si d igi t i il comando seguente:
apt-cache search web server | sort | less
Il comando appena eseguito è una pipe: il risultato di apt-cache search
diventa l'input di sort (che ordina i dati), quindi l'output di sort diventa
l'input di less (che visualizza i dati in schermate separate).
In questo caso, inoltre, i risultati non scorreranno riga per riga in console,
ma verranno mostrat i una schermata per volta: per passare alla schermata
successiva basterà premere il tasto Spazio.
Per ot tenere un elenco dei pacchett i installati nel sistema si usa il coman-d o seguente:
dpkg -1
A g g i u n g e n d o come argomento de l l 'opz ione -1 una qualsiasi stringa se-guita dal carattere *, verranno mostrat i solo i pacchett i installati i cui nomi con tengono la stringa inserita. Qu ind i , per elencare tut t i i pacchett i che hanno nel nome " l ibe" si dovrà scrivere questo in console:
dpkg -1 libe*
Il carattere * della riga dpkg -i libe* è un carattere speciale (meta-carattere) e significa "qualsiasi successione di caratteri, anche vuota". L'argomento libe*, quindi, viene tradotto dal comando dpkg in "i caratteri I, i, b e c seguiti da una qualsiasi successione di caratteri". Una sequenza come libe* è chiamata glob pattern.
Informazioni complete
Una volta che si è indiv iduato un pacchet to con apt-cache search, si ha spesso la necessità di o t tenere informazioni det tag l ia te su di esso. Per fare questo si usa il comando interno show d i apt-cache, così:
apt-cache show «pacchetto?
Nelle r ighe di ou tpu t visualizzate in console da apt-cache show sono pre-senti numerosi campi ; ecco i principali :
• Versión. Indica la release del pacchet to presente nel repository;
• Depends . Cont iene l 'elenco di tu t te le d ipendenze del pacchet to;
• Suggests. Sono i pacchett i suggeri t i : se le d ipendenze consentono di far funzionare il p rogramma, i pacchett i suggeri t i pe rme t tono al programma di funzionare al megl io ;
• Conf l ic ts . I pacchett i in conf l i t to con il pacchet to selezionato. Non è possibi le installare con temporaneamente questo e quel l i ;
• Descr ip t ion . Una descrizione accurata del software presente nel pacchet to.
Se nei repository sono presenti più versioni di uno stesso pacchetto, il comando apt-cache show mostrerà informazioni su tutte le release dispo-nibili, in sequenza.
Pacchetti sempre aggiornati
In una macchina server è indispensabile avere sempre le ult ime versioni dei pacchetti rilasciate dalla distribuzione. In questo modo si starà ragio-nevolmente al riparo da bug insidiosi che possano compromettere la si-curezza del server. L'operazione di aggiornamento consta di due passaggi. Prima si scarica da Internet la lista più recente dei pacchetti disponibil i :
sudo a p t - g e t u p d a t e
Fatto questo, per aggiornare tutt i i pacchetti installati all 'ultima release si lancia il comando seguente:
sudo a p t - g e t u p g r a d e
ale@pitagora:-$ sudo apt-get update Hit http://it.archive.ubuntu.com hardy Release.gpg Hit http://security.ubuntu.com hardy-security Release.gpg Hit http://archive.canonical.com hardy Release.gpg Hit http://it.archive.ubuntu.com hardy-updates Release.gpg Hit http://5ecurity.ubuntu.com hardy-security Release Hit http://archive.canonical.com hardy Release Hit http://security.ubuntu.com hardy-security/main Packages Hit http://it.archive.ubuntu.com hardy Release Hit http://archive.canonical.com hardy/partner Packages Hit http://security.ubuntu.com hardy-security/restricted Packages Hit http://security.ubuntu.com hardy-security/main Sources Hit http://security.ubuntu.com hardy-security/restricted Sources Hit http://it.archive.ubuntu.com hardy-updates Release Hit http://security.ubuntu.com hardy-security/universe Packages Hit http://security.ubuntu.com hardy-security/universe Sources Hit http://security.ubuntu.com hardy-security/multiverse Packages Hit http://security.ubuntu.com hardy-security/multiverse Sources Hit http://it.archive.ubuntu.com hardy/main Packages Hit http://it.archive.ubuntu.com hardy/restricted Packages Hit http://it.archive.ubuntu.com hardy/main Sources Hit http://it.archive.ubuntu.com hardy/restricted Sources Hit http://it.archive.ubuntu.com hardy/universe Packages Hit http://it.archive.ubuntu.com hardy/universe Sources
Figura 2.9 - Eseguendo sudo apt-get update si scarica una lista aggiornata dei pacchetti disponibili.
La politica di aggiornamento di apt-get upgrade è piuttosto stringente: con questo comando nessun pacchetto sarà disinstallato o aggiunto al si-stema anche se ciò viene richiesto per portare a termine l 'aggiornamento di uno o più pacchetti. Questo comando, dunque, consente di mantenere l'assoluto control lo sul parco software presente in una macchina, ma non assicura che vengano aggiornati tutt i i pacchetti installati. A volte, però, il comple to agg iornamento di un sistema richiede l'in-stallazione di pacchett i aggiunt ivi o l 'el iminazione di altri: in questi casi si deve utilizzare il comando sudo apt-get dist-upgrade che, in caso di confl i t t i tra i pacchett i , aggiornerà quell i considerati più important i a scapito degl i altri.
Eliminare i pacchetti
Per cancellare un pacchet to dal sistema insieme a tut t i i fi le che lo c o m p o n g o n o si usa apt-get segui to dal comando interno remove, in questo modo :
sudo apt-get remove <pacchetto>
L'installazione di un pacchetto comporta spesso la creazione di alcuni file di configurazione sull'hard disk: questi non vengono eliminati dal coman-d o apt-get remove.
Per cancellare sia i file effettivi di un pacchetto sia i file di configurazione, dunque, si deve utilizzare apt-get purge:
sudo apt-get purge <pacchetto>
Quando si installa un pacchetto, il fi le di questo viene memorizzato nella directory /var/cache/apt/archives. Ciò può essere utile per reinstallare rapidamente dei pacchett i che si sono installati in passato: un pacchet-to presente in questa directory, infatti, non verrà scaricato nuovamente dalla rete.
Dopo aver installato molt i nuovi pacchetti e aggiornato più volte la mac-china, però, è inevitabile che la directory /var/cache/apt/archives risulti piena di file deb e che, perciò, finisca per occupare centinaia di MB di spazio su disco.
i f i le de i pacchet t i di Ubuntu Server hanno estensione .deb, da to che il
sistema di ges t ione de i pacchet t i d i Ubun tu è lo stesso presente nella
d is t r ibuz ione Debian. Visto il suffisso f inale de i f i le, tali pacchet t i v e n g o -
no chiamat i "pacche t t i d e b " .
È possibile "sfolt ire" /var/cache/apt/archives in due modi: cancellando tutt i i file presenti nella cartella oppure el iminando solo quei file dei pac-chetti che non sono più scaricabili dai repository su Internet (e dei quali, dunque, non risulta più di alcuna utilità avere una copia sull'hard disk). Per eliminare tutt i i file deb da /var/cache/apt/archives va usato il coman-do seguente:
sudo apt-get clean
ale@pitagora:-$ Is /var/cache/apt/archives/ compiz-core I%3a0.7.4-0ubuntu7 i386.deb compiz-gnome l%3a0.7.4-0ubuntu7Ì386.deb compiz-plugins I%3a0.7.4-0ubuntu7 i386.deb compiz iya6.7.4-0ubuntu7ali .deb evolution-common 2.22.2-0ubuntu2 ali.deb evolution-plugins 2.22.2-Oubuntu2 Ì386.deb evolution_2.22.2-Bubuntu2 Ì386.deb googleearth 4.3.7204.836-0medibuntul ali.deb gtwitter 1.0~beta-6ubuntul ali.deb libdecorationO I%3a0,7.4-0ubuntu7 i386.deb libglib2.0-0 2.16.3-lubuntu3 Ì386.deb libglib2.0-data 2.16.3-lubuntu3 ali.deb libldap-2.4-2J.4.9-0ubuntu0.8.04 Ì386.deb libpoppler-glib2 8.6.4-lubuntu2 Ì386.deb libpoppler-qt2 076.4-lubuntu2 Ì386.deb libpoppler2 0.6.4-lubuntu2 Ì386.deb libsoup2.2-8 2.2.105-4 Ì386.deb libssl0.9.8 0.9.8g-4ubuntu3.3 i386.deb linux-heade rs-2.6,24-19-gene rie 2.6.24-19.34 i386.deb linux-headers-2.6.24-19 2.6.24 19.34 ali.deb linux-image-2.6.24-19-generic 2.6.24-19.34 i386.deb linux-source-2.6.242.6.24-19.34 ali.deb linux-ubuntu-modules-2.6.24-19-generic_2.6.24-19.28 i386.deb
Figura 2.10-Se /var/cache/apt/archives è piena, con sudo apt-get clean si cancellano tutti i file dalla directory.
Con sudo apt-get autoclean, invece, verranno cancellati solo i file di cui non è più possibile effettuare il download.
Gestire i repository
Nella configurazione di default di Ubuntu Server sono attivi tutt i i reposi-tory necessari per mantenere costantemente aggiornato il proprio server. È possibile, comunque, gestire direttamente i repository abilitati nel siste-ma intervenendo sul file /etc/apt/sources.l ist, un semplice file di testo che va aperto con un editor.
Mol to del lavoro di amministrazione di un server viene svolto all ' interno di un editor di testo: i file di configurazione del sistema o quell i dei program-mi, infatti, non sono altro che file testuali modif icabil i dagli utenti provvisti dei permessi necessari. La presentazione del file /etc/apt/sources.l ist, quindi, offrirà l'occasione giusta per conoscere da vicino uno degl i editor installati per default su Ubuntu Server: nano.
L'editor nano
Per aprire il file /etc/apt/sources.l ist con l 'editor nano è necessario far uso di sudo, dato che un utente normale non avrebbe i permessi per modifica-re il file. Si lanci quindi in console il comando seguente:
sudo nano /etc/apt/sources.list
Comparirà una schermata con in alto una riga informativa contenente il nome del file aperto, in basso un r iepi logo dei comandi disponibi l i nel-l 'editor e, nella sezione principale al centro, il contenuto del file /e tc /apt / sources.list. Il risultato su schermo sarà simile al l ' immagine seguente (Fi-gura 2.11). L'editor nano è mol to semplice da usare: con i tasti freccia ci si sposta al-l ' interno del file aperto, con la combinazione di tasti C t r l+O si salva il file e con C t r l+X si esce dall 'editor. Premendo Ct r l+G, quindi, viene forni to un prospetto dei principali comandi disponibi l i in nano, con le relative combinazioni di tasti.
GNU nano 2.0.7 File: /etc/apt/sources.list
2 deb cdrom: [Ubuntu 8.04 Hardy Heron^ - Release i386 (20080423)1/ hardy main r$ # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution.
deb http://it.archive.ubuntu.com/ubuntu/ hardy main restricted deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
## Major bug fix updates produced after the final release of the ## distribution. deb http://it.archive.ubuntu.com/ubuntu/ hardy-updates main restricted deb-src http://it.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## universe WILL NOT receive any review or updates from the Ubuntu security ## team. deb http://it.archive.ubuntu.com/ubuntu/ hardy universe deb-src http://it.archive.ubuntu.com/ubuntu/ hardy universe
Read 55 lines § Get Help ffi WriteOut 1 13 Read File | Q Prev Page | g Cut Text E l Exit E Justify Q Where Is | E Next Page § 1 UnCut T e x t ®
Cur Pos To Spell
Figura 2.11 - L'editor nano con aperto il file /etc/apt/sources.list.
In questi primi capitoli del volume vengono trattati argomenti più sem-plici di quelli affrontati nelle sezioni successive. Per il momento, quindi, si è scelto di utilizzare un editor di base come nano. Si forniranno poi informazioni dettagliate sul più complesso vi, l'editor standard nelle macchine Unix.
Il file sources.list per i repository
Prendendo come riferimento il file /etc/apt/sources.l ist di default su Ubun-tu Server, le prime righe sono righe di commento: iniziano con il carattere # e consentono di aggiungere informazioni sugli elementi di configurazio-ne presenti nel file.
Può stupire che al l ' interno d i un semplice file di configurazione siano
presenti del le righe di commento , come nei sorgenti dei programmi. In
realtà, data l ' importanza dei file di configurazione nell 'amministrazione
di una macchina, capiterà spesso di aprirne uno a distanza anche di anni
dalle ult ime modi f iche apportate: del le chiare righe di commento saran-
no allora fondamental i per potersi orientare.
Le righe effettive di configurazione forniscono i dati sui repository da atti-vare e utilizzano il seguente formato:
deb uri distribuzione componenti
Ogni linea rappresenta uno o più repository. Il pr imo elemento ne indica il t ipo: deb per i repository di pacchetti con i file eseguibil i compilati , deb-src per quelli contenenti i sorgenti dei pacchetti.
La voce uri contiene il percorso iniziale dei repository. Si tratta solitamen-te dell ' indirizzo Internet da cui prelevare i pacchetti, privo della parte che specifica la versione della distribuzione cui si è interessati. L'elemento di-stribuzione, quindi, indica la release della distro installata sulla macchina: hardy, gutsy, dapper e tutt i gli altri nomi attribuiti alle varie versioni di Ubuntu.
A ogni nuova release di Ubuntu viene affibbiato un nomignolo composto da
due parole: un aggett ivo e un nome di animale. In lingua inglese entrambe
le parole cominciano con le stesse iniziali. L'attuale versione 8 . 0 4 LTS ha
come nome in codice H a r d y H e r o n (Airone Audace), la precedente 7 . 1 0
G u t s y G i b b o n (Gibbone Coraggioso)... Un elenco dei nomi delle diverse
versioni si trova alla pagina https://wiki.ubuntu.com/Releases.
Per ogni release di Ubuntu, poi, sono disponibi l i sui server dei reposi-tory alcune cartelle che forniscono element i distribuzione aggiuntivi .
La versione 8.04 LTS di Ubuntu ha hardy-updates, contenente aggior-namenti che risolvono bug important i nei pacchett i , e hardy-backpor ts , che presenta versioni più recenti dei pacchett i fornit i con il rilascio della distr ibuzione. L'ultimo parametro, componenti, è formato dal nome del componente fina-le di uno o più repository che si desidera abilitare: per indicare più com-ponenti è necessario che questi abbiano uri e distribuzione in comune. Nella Tabella 2.1 vengono mostrati i principali component i disponibil i .
Tabella 2.1 - Elenco dei component i .
Componen te Signi f icato Pacchetti open source diret tamente supportat i da
main Ubuntu. Gli aggiornament i di sicurezza avvengono in tempi mol to rapidi Pacchetti open source che, a differenza del componen-
universe te main, sono gestiti dalla comunità di utenti. Gli ag-giornamenti di sicurezza sono fornit i dalla comunità Pacchetti non open source. Questo componente e i re-
muitiverse lativi aggiornament i di sicurezza sono gestiti dalla co-munità di utenti Pacchetti non disponibi l i sotto licenza libera ma diret-
restricted tamente supportati , per quanto possibile. Contiene dri-ver per hardware non altrimenti supportato su Linux
partner Pacchetti commerciali
L'insieme di tutt i questi elementi forma quindi una riga in /etc/apt/sour-ces.list come la seguente:
deb http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
Un repository a parte è http:/ /securi ty.ubuntu.com/ubuntu, che contiene i soli aggiornamenti di sicurezza per la distribuzione. Ecco una riga che lo richiama:
deb http://security.ubuntu.com/ubuntu hardy-security main restricted
La presenza di più repository per gli upgrade, ognuno dedicato a un diverso t ipo di aggiornamento per i pacchetti, consente di scegliere in modo granulare cosa aggiornare o meno su di una determina macchina: una possibilità fondamentale in un server.
Modifiche ai repository
Ora che la struttura di sources.list è nota, si possono apportare delle mo-difiche alla configurazione di default del file in Ubuntu Server. Per esempio, se non si è interessati alla compilazione dei sorgenti si pos-sono disattivare tutt i i repository di t ipo deb-src: in questo modo la pro-cedura di aggiornamento con sudo apt-get update sarà più rapida. Per ottenere questo basta inserire il carattere # all'inizio di ogni riga deb-src. Quindi, la linea seguente:
deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
diventa
#deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
In un server può essere utile avere disponibi le solo il software direttamen-te supportato da Ubuntu: in tal modo si sarà certi che, qualunque applica-zione si scelga di installare sulla propria macchina, in caso di bug accertati questi verranno corretti nel più breve tempo possibile. Per ottenere una configurazione di sources.list di tal fatta, quindi, è sufficiente commentare tut te le righe nel file che facciano riferimento ai component i universe e mult iverse.
Una volta che sono state apportate delle modif iche al file sources.list, bi-sogna poi aggiornare la lista dei pacchetti nei repository con sudo apt-get update.
Se si desidera aggiungere dei repository ma non si vuole "sporcare" il file sources.list principale, infine, è possibile creare nella directory /e tc /apt / sources.list.d dei file separati contenenti le righe necessarie per attivare i repository aggiuntivi.
Attenzione! Si controll i scrupolosamente la provenienza e il contenuto
di questi repository per non compromet tere la sicurezza della propria
macchina.
Se il repository non risponde
Durante la procedura di installazione del sistema operat ivo vengono in-seriti in sources.list dei mirrar dei repository di Ubuntu geograf icamente vicini alla macchina: per l'Italia si tratta del mirrar con uri: ht tp : / / i t .a rch ive .ubuntu .com/ubuntu /
Un mirrar è la copia esatta del contenuto di un sito. In questo caso, si
tratta di server ht tp e f tp sparsi in tu t to il mondo che replicano il conte-
nuto degl i archivi di repository Ubuntu.
Una scelta del genere, sol i tamente, permet te di scaricare liste e pacchett i dai repository nei t emp i più rapidi possibi l i ; qualche volta, però, gli indiriz-zi predef in i t i possono risultare i r raggiungibi l i o sempl icemente intasati. In quest i casi si può aprire la pagina w e b che elenca tut t i i mirrar d ispo-nibil i . Per fare questo si può usare il browser testuale w3m installato per defaul t su Ubuntu Server:
w3m https://wiki.ubuntu.com/Mirrors?action=show
Nel l 'e lenco che appare, qu ind i , si individua un secondo mirrar nelle vici-
nanze. Poi si devono cambiare in sources.list tu t te le occorrenze di h t t p : / /
it.archive.ubuntu.com/ubuntu/ inserendo al posto di queste l'uri del mir-
rar alternativo.
Per esempio , una riga come la seguente:
deb http://it.archive.ubuntu.com/ubuntu/ hardy universe
può diventare così:
deb ftp://ftp.fu-berlin.de/linux/ubuntu/ h a r d y u n i v e r s e
2. CD Images 1. CD Image Mirrors
3. DVD Images 1. DVD Image Mirrors
Sub-pages
Mirror-Mirrors
The following package archive mirrors are available, for you to mirror from, if you would rather mirror from a downstream mirror than from the master servers at Ubuntu:
(See also the mirror list at launchpad: [WWW] https://launchpad.net/ubuntu/ +archivemirrors )
Australia
• [WWW] http : / / f tp. i inet.net.au/pub/ubuntu/
• [WWW] ht tp : / /mi r ror .optus.net /ubuntu/
I« t i Viewing[SSL] <Mirrors - Ubuntu Wiki>|
Figura 2.12 - Alla pagina https://wiki.ubuntu.com/Mirrors?action=show è disponibile un elenco dei mirror Ubuntu.
Il gestore semigrafico dei pacchetti
È disponibi le per la console una pratica interfaccia semigrafica per il ge-store di pacchetti, chiamata aptitude. La si avvia con il comando sudo
aptitude.
L'aspetto del programma è mostrato nell' immagine seguente (Figura 2.13). I pacchetti sono organizzati in sezioni e sottosezioni: per muoversi tra que-ste si usano i tasti freccia su e freccia giù, mentre per aprire la sezione o la sottosezione corrente si preme Invio. Individuato un pacchetto che si vuole installare si preme + per selezionarlo; per disinstallare un pacchetto si preme -.
Con il tasto u si scaricano dai server remoti le liste aggiornate dei pacchet-ti e con U, invece, si selezionano tutt i i pacchetti di cui sono disponibi l i aggiornamenti .
Actions Undo Package Resolver Search C-T: Menu ?: Help q: Quit u: Update g: >-aptitude 6.4.9 || --- Installed Packages
Views Help !I/Remove Pkgs
Not Installed Packages Obsolete and Locally Created Packages Virtual Packages Tasks
Revert options
•These packages are current ly i ns ta l l ed o n your computer.
¡Change the behavior of aptitude
Figura 2.13 - Aptitude è un'interfaccia semigrafica per il gestore di pacchetti.
Quindi, per procedere nelle operazioni di installazione, disinstallazione o aggiornamento si preme g. Apt i tude dispone poi di una serie di menu che consentono l'accesso ad alcune funzionalità avanzate nell 'amministra-zione dei pacchetti: questi menu sono raggiungibi l i con la combinazione di tasti Ctr l+T. Come esempio, ecco la procedura da seguire per installare l 'editor emacs tramite aptitude: con i tasti freccia si entra nella sezione No t Instal led Packages, quindi si preme Invio, si apre la sottosezione edi tors, poi si entra in main. A questo punto si seleziona la riga con la scritta emacs, si preme + e poi g. Il pacchetto principale di emacs con tut te le dipendenze necessarie verrà installato nel sistema.
Come installare singoli pacchetti
Fino a ora si è visto come installare pacchetti contenuti nei repository. Per installare singoli pacchetti, scaricati da Internet o creati dalla compilazio-ne di sorgenti, si usa il comando dpkg seguito dal file deb del pacchetto indicato per esteso e, se necessario, con il percorso completo per rag-giungerlo.
Ecco un esempio:
sudo dpkg -i /tmp/unrar_l%3a3.7.8-l_i386.deb
A differenza di apt-get e aptitude, dpkg agisce a un livello più basso e non gestisce la risoluzione delle dipendenze: se il pacchetto indicato richiede delle dipendenze, quindi, sarà necessario procedere manualmente alla loro installazione. Per installare pacchetti svincolati dai repository e, al tempo stesso, risolve-re le dipendenze si può usare il programma gdebi. Dopo averlo aggiunto al s i s tema c o n sudo apt-get instali gdebi-core, p e r ins ta l lare un p a c c h e t -
to si utilizzerà il comando nel modo seguente:
sudo gdebi /tmp/unrar_l%3a3.7.8-l_i386.deb
Alcuni pacchetti d'uso comune
Al di là del particolare utilizzo che si farà della macchina, ci sono dei pac-chetti non installati per default su Ubuntu Server che è mol to comodo avere a propria disposizione. L'utilizzo di un file manager può rendere mol to più rapide alcune opera-zioni di manutenzione, anche in un server: per la console è disponibi le l 'ot t imo Midnight Commander, contenuto nel pacchetto me. Una volta installato il pacchetto, il file manager si lancia con il comando me. Questo gestore di file presenta la classica struttura a due pannelli, uno per la directory d'or igine e l'altro per la directory di destinazione. Le ope-razioni sui file si compiono premendo i tasti funzione: F5 per copiare, F6 per spostare, F8 per cancellare e così via. Un altro pacchetto utile è ianguage-pack-it, che consente di avere la tra-duzione completa in lingua italiana dei messaggi e dell ' interfaccia di molt i dei principali programmi disponibil i .
Inoltre, installando il pacchetto manpages-it anche le pagine di manuale dei comandi saranno in italiano.
S. Gestire il sistema
Left File Command Options
Name . kderc . lesshst . mailcap . mcoprc . profile . pulse-cookie . realplayerrc . recently-used .recent-ed.xbel .signature.mail .sitecopyrc .sudo a-cessful .viminfo
MTime
May 21 10:31 Jun 26 19:42 May 13 22:06 May 21 09:14 Apr 15 05:36 Apr 28 09:00 Jun 2 16:18 Jun 27 16:30 Jun 27 17:03 Feb 19 2003 Oct 29 2007 Apr 28 08:59 Jun 27 12:24 Jan 18 2006
.xsession-errors
Riflhtx,
< - / Name
/bin /boot -cdrom /dev /etc /home /initrd /lib
/lost+found /media /mnt / p r o c /root
/sbin /srv
V>1 Size MTime
4696 Jun 16 18:69 " 4696 Jun 26 16:11 *
11 Apr 28 68:34 13966 Jun 27 16:24 12288 Jun 27 16:25 4696 Jun 24 13:23 4696 Apr 22 19:48 4696 Jun 17 68:55
16384 Apr 28 68:34 4696 Jun 27 16:24 4696 Apr 15 07:53
6 Jun 27 16:24 4696 Jun 4 16:55 4696 Jun 26 11:21 4696 Apr 22 19:48
Hint: VFS coolness: tap enter on a tar file to examine its contents.
ale@pitagora:~$ | lHetp 2Menu 3View 4Edit SCopy ORenMov 7Mkdir SDelete gPullDn lOQuit
Figura 2.14 - L'interfaccia del file manager mc.
Le p a r t i z i o n i Nel capitolo iniziale si è visto come impostare le partizioni sul disco rigido, sfruttando al megl io l 'ampio ventagl io di filesystem disponibi l i su Linux. Dopo aver installato Ubuntu Server, però, può essere necessario aggiun-gere ulteriori partizioni oppure modificare alcuni parametri di quelle esi-stenti. Per effettuare cambiamenti nella configurazione delle partizioni si deve intervenire sul file /etc/fstab.
Il file /etc/fstab
Si apra /etc/ fstab con nano, acquisendo i poteri di root:
s u d o n a n o / e t c / f s t a b
La struttura del file /etc/ fstab è elementare: ogni riga rappresenta un di-verso disposit ivo nel sistema; fanno eccezione le linee con all'inizio il ca-rattere #, che costituiscono mere righe di commento.
GNU nano 2.0.7 File: /etc/fstab
Z /etc/fstab: static file system information. #
# <file system> <mount point> <type> <options> proc /proc proc defaults # /dev/sdal UUID=45ad37fa -386e-4ff0-be33-d4465e05c096 / # /dev/sda3 UUID=2Oe23alb-0clb-46ba-8cba-20eb80f5c5bf /home # /dev/sda2 UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none
<dump> <pass> 0 0
/dev/scdO
ext3
ext3
swap
relatime,erro$
relatime $
/media/cdromO udf,iso9660 user,noauto,exec,utf8 0
Read 11 lines J Cut Text n Cur Pos UnCut Textfl To Spell
Ecco una linea di esempio di /etc/fstab:
/dev/scdO / m e d i a / c d r o m O u d f , i s o 9 6 6 0 u s e r , n o a u t o , e x e c , u t f 8 0 0
I parametri sono separati gli uni dagli altri per mezzo di spazi vuoti. Il pri-mo parametro (/dev/scdo) indica il f i le di d isposi t ivo cui la riga si riferisce, e in questo caso si tratta del lettore CD/DVD. Per un elenco dei principali file di disposit ivo si veda la Tabella 2.2.
Un file di dispositivo è un file che viene impiegato dal sistema per dia-logare con un dispositivo come una partizione dell'hard disk o un floppy disk. I file di dispositivo possono essere letti e scritti: ciò consente di leggere il contenuto dei dispositivi hardware e di scriverci sopra.
Gestire il sistema
Tabella 2.2 - I pr incipal i f i le di d isposi t ivo
File di d isposi t ivo Disposi t ivo hardware
/dev/sda
Il pr imo hard disk presente nel sistema. La ma partizione di /dev/sda è /dev/sda1, la conda è /dev/sda2 e così via
pri-se-
/dev/sdb
Il secondo hard disk presente nel sistema. La prima partizione di /dev /sdb è /dev/sdb1, la se-conda è /dev/sdb2 e così via
/dev/scdO Lettore CD/DVD /dev/fdO Floppy disk
/dev/videoO Videocamere e webcam
In passato i file di dispositivo degli hard disk ATA e di quelli SATA erano differenti: /dev/hdX per i primi e /dev/sdX per i secondi. Nella versione corrente di Ubuntu Server, invece, viene adottata la sola forma /dev/sdX su entrambe le tipologie di dischi.
Il parametro seguente (nell 'esempio /media/cdromo) è il punto di mount per il file di dispositivo indicato: quando si vorrà leggere il contenuto di un CD/DVD, quindi, questo sarà disponibi le nella directory /media/cdromo. Il terzo parametro rappresenta il filesystem utilizzato dal dispositivo. Nella riga di esempio sono presenti due filesystem separati da una virgola, udf e iso966o: verrà richiamato quel lo effett ivamente utilizzato sul supporto inserito nel lettore CD/DVD.
Il parametro successivo precisa le opzioni di mount per il disposit ivo in-dicato. Nel l 'esempio, user consente a un utente normale di effettuare il mount, noauto indica che il disposit ivo non deve essere montato al boot della macchina, exec permette l'esecuzione di file binari nel disposit ivo e utf8, infine, fa in modo che i caratteri Unicode a 16 bit in un CD venga-no convertit i in caratteri UTF-8. Per un elenco esaustivo delle opzioni di mount si può leggere la man page del comando mount.
Gli ult imi due parametri sono numerici. Il pr imo di essi indica se di una de-terminata partizione si deve effettuare o meno il backup tramite il program-ma dump (solitamente il parametro ha valore o, cioè backup disabilitato). Il secondo parametro, infine, stabilisce l 'ordine con il quale vengono con-trol late le part izione da fsck: si dov rebbe assegnare per la part izione di root il valore 1, per le altre 2. Inserendo 0 come valore del parametro, invece, la part izione non verrà mai control lata al boo t .
Il comando fsck consente di controllare l'integrità delle partizioni e, nel caso, di recuperare i filesystem danneggiati. Viene invocato dal sistema durante la procedura di avvio della macchina.
Intervenire sulla tabella delle partizioni
Non sempre è possibi le prevedere, al m o m e n t o del l ' instal lazione, il nu-mero di part izioni necessarie per un server. Sovente, qu ind i , si deve in-tervenire sulla tabel la del le part izioni successivamente. Per fare questo si d ig i t i il comando seguente in console:
sudo cfdisk /dev/sda
inserendo al posto di /dev/sda il f i le di d isposi t ivo del l 'hard disk da modi -ficare, se diverso. Compar i rà una schermata simile a l l ' immagine seguente (Figura 2.16).
L'interfaccia del p rogramma cfdisk è di sempl ice utilizzo. Con i tasti f rec-cia su e f reccia g iù si sceglie la part iz ione su cui intervenire, con i tasti f reccia sinistra e des t ra si indica l 'operazione da compiere e p remendo Invio si p rocede con l 'azione prescelta. Ecco le operazioni che si possono effettuare. È possibi le creare una par-t izione (New), renderla avviabile (Bootable) , cancellarla (Delete) oppure indicare il t i po di f i lesystem presente in essa (Type). Infine si può uscire dal p rogramma (Quit) o memorizzare i cambiament i nella tabel la del le partizioni (Write).
cfdisk (util- linux-ng 2.13.1)
Disk Drive: /dev/sda Size: 80026361856 bytes, 80.0 GB
Heads: 255 Sectors per Track: 63 Cylinders: 9729
Name Flags Part Type FS Type [Label] Size (MB)
- E m » sda2 sda3
s e e s Primary Primary Pri/Log
IHiUW SCIE Linux swap / Solaris Linux ext3 Free Space
ISbMiMfcfe! 1003.49
50001.48 9014.91
IliftTOBitt^] [ Delete [ Quit ] [ Type
1 [ Help ] [ Units
] [Maximize] [ Print ] ] [ Write ]
Toggle bootable flag of the current partition
Figura 2.16 - L'interfaccia di cfdisk. Da qui si possono manipolare le partizioni sui disco.
I passaggi da compiere per aggiungere una nuova partizione sono dun-que i seguenti:
1. si deve raggiungere la riga con la scritta Free Space e selezionare il pulsante New;
2. poi si sceglie se creare una partizione primaria o logica con i rispet-tivi pulsanti, Primary e Logicai;
3. quindi si indicano le dimensioni della partizione in MB; 4. il t ipo di filesystem di default per la nuova partizione è l inux. Per
indicarne un altro si seleziona il pulsante Type e, nell 'elenco che appare, si digita il numero corr ispondente al filesystem prescelto;
5. infine, si preme il pulsante Wr i t e per salvare le modif iche alla tabel-la del le partizioni.
Creare un filesystem sulla partizione
Una volta aggiunta una nuova partizione, è necessario creare un filesystem su di essa. I comandi da impiegare per l 'operazione variano a seconda del
f i lesystem scelto per la part izione. Quest i comand i iniziano con mkfs. e te rminano con il nome del f i lesystem cui si riferiscono: mkfs.ext3, mkfs.
r e i s e r f s , m k f s . x f s e COSÌ v ia .
Non tutti i programmi per creare i filesystem sulle partizioni sono installati per default su Ubuntu Server. Per usare il comando mkfs.xfs è necessario infatti installare il pacchetto xfsprogs] per mkfs.jfs si deve installare jfsu-tils mentre per mkfs.reiseré è richiesto il pacchetto reiser4progs.
Per creare un fi lesystem ext3 si esegua dunque il comando sudo mkfs.
ext3, segui to dal fi le d i d isposi t ivo della part izione. Possono risultare utili alcune opzioni d i mkfs.ext3: -c consente di control lare sulla part izione la presenza di blocchi rovinati pr ima di procedere alla creazione del filesy-stem, mentre l 'opzione -m è seguita dalla percentuale di blocchi che biso-gna riservare sulla part iz ione al l 'utente root.
Ecco dunque il comando per creare un fi lesystem ext3 sulla part izione /dev /sdaó, ver i f icando che non ci siano blocchi rovinati e assegnando il 2% del lo spazio sulla part izione a root:
sudo mkfs.ext3 -c -m 2 /dev/sda6
Identificare le partizioni con l'ULUO
Se nel fi le /e tc / fs tab del propr io sistema si osservano le r ighe r iguardanti le part izioni sull 'hard disk si può notare come, nel pr imo parametro, al po-sto del fi le d i d isposi t ivo venga utilizzata la dicitura UUID= seguita da una lunga sequenza di caratteri. L 'UUID (Universally Unique IDentifier) è un insieme di numeri esadecimali che identif ica in m o d o univoco una part izione su di un suppor to . Si tratta del la forma di notazione predef ini ta in Ubuntu Server e viene utilizzata, dunque , nella procedura iniziale di installazione per indicare in /e tc / fs tab le part izioni sul disco. Una scelta simile permet te al l 'amministratore di si-stema di esser certo che una determinata riga in /e tc / fs tab corr isponda sempre a una specifica part izione: l'ULIID, infatti, è un "march io" che una
B?iyT)¡i'it:ilLifcSiyk»»pr»
partizione si porta dietro anche quando cambia il file di disposit ivo me-diante il quale la partizione diventa accessibile al sistema.
L'impiego degli UUID al posto dei file di dispositivo può essere utile in molte occasioni. Se si utilizzano più hard disk, per esempio, grazie agli UUID è possibile collegare i dischi in un ordine differente senza dover metter mano ogni volta al file /etc/fstab per cambiare i rispettivi punti di mount.
Per conoscere l'UUID di una partizione si usa il comando voi_id nel modo seguente (al posto di /dev/sda1 va inserito il file di disposit ivo di cui si vuole ottenere l'UUID):
sudo vol_id -u /dev/sdal
In output si otterrà una riga corr ispondente all'UUID del dispositivo, per
e s e m p i o 2 0e2 3alb-0clb-4 6ba-8cba-2 0eb8 0f5c5bf.
Per visualizzare, in un colpo solo, gli UUID di tut te le partizioni si può usare il comando sudo bikid. Il risultato in console sarà simile al seguente:
/dev/sdal: UUID="45ad37fa-386e-4ff0-be33-d4465e05o096" TYPE="ext3"
/dev/sda2: TYPE="swap" UUID="07523 73 6 -8e32-4 378-bbff-3bcaf4d57890"
/dev/sda3: UUID="20e23alb-Oclb-46ba-8cba-20eb80f5c5bf" TYPE="ext3"
Per inserire un nuovo disposit ivo in /etc/ fstab indicandone l'UUID, quindi, basterà mettere come primo parametro l'UUID invece del file di dispositi-vo attuale. Una riga come quella che segue:
/dev/sda2 none swap sw 0 0
diventerà dunque così:
UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none swap sw 0 0
I volumi LVIVI
Nel pr imo capitolo si è visto come procedere per effettuare un'installazio-ne sfruttando il sistema LVM per il part izionamento del disco.
A questo punto è possibi le approfondi re l 'a rgomento. Un sistema LVM è compos to da tre strati ben dist int i :
• Vo lumi fisici. Possono essere interi dischi o singole partizioni. Si creano con il comando pvcreate;
• Grupp i di vo lume. Sono contenitori per i volumi fisici e, a loro volta, vengono ripartiti in volumi logici. Si creano con il comando vgcreate;
• Vo lumi logici . Si tratta di disposit ivi gest ibi l i come normal i partizio-ni. Si creano con il comando ìvcreate.
Per creare un sistema LVM sul propr io server, qu ind i , è richiesta una pro-cedura composi ta: b isogna inizializzare dei vo lumi fisici, poi è necessario racchiuderl i in un g r u p p o di vo lume e, infine, si deve suddiv idere il g r u p p o in diversi vo lumi logici. Quest i ul t imi andranno qu ind i col legat i a dei punt i d i moun t in /e tc / fs tab, come si trattasse di part izioni canoniche. Ecco quindi i passaggi da seguire per utilizzare un sistema LVM, passaggi che sono stati in precedenza nascosti dagl i automat ismi del p rogramma di installazione di Ubuntu Server.
Se nella procedura di installazione non è stata scelta una delle due opzioni per il partizionamento LVM, per gestire i volumi LVM sarà neces-sario installare il pacchetto ivm2.
Innanzitutto, si devono creare con cfdisk le part izioni che andranno a co-stituire i vo lumi fisici LVM sul disco: si creino, per esempio, le part izioni /dev /sda1, /dev /sda2 e /dev/sda3.
Poi bisogna creare i vo lumi fisici mediante i comandi seguent i :
sudo pvcreate /dev/sdal
sudo pvcreate /dev/sda2
sudo pvcreate /dev/sda3
Quind i , si inseriscono le tre part izioni in un nuovo g r u p p o di vo lume, chia-
mato sempl icemente gruppo:
sudo vgcreate gruppo /dev/sdal /dev/sda2 /dev/sda3
Per agg iungere una part izione a un g r u p p o già esistente si usa invece il Comando vgextend:
sudo vgextend gruppo /dev/sda5
Ora non r imane che ripartire lo spazio d isponib i le nel g r u p p o di vo lume creando i necessari vo lumi logici. Ecco come procedere:
sudo lvcreate -L 700 -n voli gruppo sudo lvcreate -L 4G -n vol2 gruppo sudo lvcreate -L 3G -n vol3 gruppo
La prima riga di esempio crea nel g r u p p o gruppo un vo lume logico di 700 MB (-L 700) ch iamato voli (-n voli); la seconda crea un vo lume voi2 gran-de 4 GB; la terza linea crea il vo lume voi3 di 3 GB.
A questo punto si devono agg iungere i relativi f i lesystem ai vo lumi logici. Negl i esempi che seguono viene util izzato il f i lesystem Ext3:
sudo mkfs.ext3 /dev/gruppo/voll sudo mkfs.ext3 /dev/gruppo/vol2 sudo mkfs.ext3 /dev/gruppo/vol3
Infine, si inseriscono le linee appropr ia te in /e tc / fs tab, così da legare i vo lumi logici ai punt i di moun t desiderat i :
/dev/gruppo/voll /home ext3 defaults 0 2 /dev/gruppo/vol2 /var ext3 defaults 0 2 /dev/gruppo/vol3 /tmp ext3 defaults 0 2
Per el iminare un vo lume logico si usa invece il comando ivremove, in que-
sto modo :
sudo Ivremove /dev/gruppo/vol3
Cambiare le dimensioni dei volumi LVIVI
Ora che i vo lumi logici sono stati cor re t tamente creati, è possibi le modi f i -carne faci lmente e rap idamente le d imensioni . I comandi per aumentare e ridurre le d imensioni dei vo lumi logici sono, r ispet t ivamente, ìvextend
e lvreduce.
Se si ha la necessità di aumentare le d imensioni d i un vo lume logico (per esempio voli) bisogna control lare, innanzitutto, che nel g r u p p o sia pre-
sente dello spazio libero. Per fare questo si usa il comando vgdispiay: sudo v g d i s p l a y
Nel l 'output del comando si deve cercare una riga che inizia con Free PE / Slze: il valore che segue nella linea indica lo spazio vuoto disponibi le. Se non c'è spazio nel gruppo (Free PE / Size 0 / 0) si possono ridurre le dimensioni di uno degl i altri volumi logici. Digi tando il comando sudo ìvdispiay si o t tengono quindi informazioni dettagl iate su tutt i i volumi esistenti (Figura 2.17): le dimensioni di un volume sono contenute nella riga che inizia con LV SIZE (per esempio, LV SIZE 700,00 MB).
Sjale@pitagora:~$ sudo Ivdisplay Ili: — Logical volume - -
LV Name /dev/gruppo/voll VG Name gruppo LV UUID MtrwOB-gwvR-NJIp-WTbl-DpAU-j kQn-70Rkeb LV Write Access read/write LV Status available # open 0 LV Size 700,00 MB Current LE 175 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:0
--- Logical volume -LV Name /dev/gruppo/vol2 VG Name gruppo LV UUID 00ra21-XIkY-Lufu-3Ip2-X3jK-YJuH-8Fockh LV Write Access read/write LV Status available # open 0 LV Size 4,00 GB Current LE 1024
Figura 2.17 - L'output del comando sudo Ivdisplay mostra informazioni su tutti i volumi' logici creati.
A questo punto, control lando lo spazio disponibi le sul voi2 si può sco-prire che questo volume logico è sovradimensionato (LV Size 4,00 GB nel l 'output di sudo ìvdispiay mostrato in figura) rispetto alle necessità del server. Per ridurne le dimensioni prima si deve ridurre il filesystem nel volume logico:
sudo r e s i z e 2 f s / d e v / g r u p p o / v o l 3 3G
quindi si ridimensiona il volume logico stesso:
sudo lvreduce -L 3G /dev/gruppo/vol2
Il comando resize2fs r ichiede che il f i lesystem da ridimensionare sia
smontato. Prima di dare il comando, quindi , bisogna sincerarsi di non
essere al l ' interno del punto di mount del vo lume logico (ed / ) , poi si
deve smontare il vo lume (sudo umount /home, per esempio, se II punto
dì mount del vo lume è /home).
Adesso il volume voi2 è stato ridotto da 4 a 3 GB. Non rimane che aumen-tare lo spazio su voli. Per fare questo, al contrario che nel caso della ridu-zione dello spazio su un volume, prima si ridimensiona il volume logico e poi il filesystem relativo, così:
sudo lvextend -L +1G /dev/gruppo/voll
sudo resize2fs /dev/gruppo/voll
Con questi due comandi il GB di spazio che è stato sottratto al volume voi2 è stato agg iun to (parametro -L +IG d i lvextend) al voli.
Negli esempi riportati si è fatto uso del filesystem Ext3. Se invece si uti-lizza ReiserFS, al posto del comando resize2fs bisogna impiegare resi-ze_reiserf s. Per ridurre un volume se ne indicano le nuove dimensioni nei parametr i d i resize_reiserfs:
sudo resize_reiserfs -s 3G /dev/gruppo/vol2
È anche possibile indicare lo spazio da sottrarre al volume, così:
sudo resize_reiserfs -s -1G /dev/gruppo/vol2
Nel pr imo esempio le nuove dimensioni saranno di 3G (-s 3G), mentre nel secondo si dice a resize_reiserfs di togl iere un GB dal volume (-s -IG). Per aumentare le dimensioni di un volume, quindi, è sufficiente richiamare il comando in questo modo:
sudo resize_reiserfs /dev/gruppo/voll
Manutenzione dei dischi RAID
In caso di utilizzo del RAID, il sistema controllerà automaticamente lo stato dei dischi tramite il comando mdadm --monitor lanciato al boot e avvertirà l 'amministratore di eventuali guasti inviando apposite email. Per default queste email vengono spedite all 'utente root sulla macchina locale. Per cambiare il destinatario si apra il file di configurazione / e t d mdadm.conf con sudo nano /etc/mdadm/mdadm.conf e si modif ichi la riga:
M A I L A D D R root
indicando al posto di root l'indirizzo email del destinatario prescelto.
# mdadm.conf # # Please refer to mdadm.conf(5) for information about th i s file. #
# by default, scan a l l partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions
# auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system HOMEHOST <system>
I # instruct the monitoring daemon where to send mail alerts iMAILADDR ale
# definitions of ex is t ing MD arrays
# This file was auto-generated on Wed, 24 Sep 2008 11:09:26 +02OO # by mkconf $Id$
"/etc/mdadm/mdadm.conf" 22L, 625C 15,0-1 Tut
Figura 2.18 - È possibile cambiare il destinatario delle email inviate da mdadm modifi-cando mdadm. conf.
Fatto questo si deve riavviare il demone mdadm con il comando che segue:
sudo / e t c / i n i t . d / m d a d m restart
Per consent i re a mdadm l ' invio de l le emai l è richiesta la presenza di un
mail server sulla macchina. Nel Cap i to lo 11 verranno fo rn i te istruzioni per
l ' instal lazione e la conf iguraz ione del mail server Postfix.
L ' a m m i n i s t r a z i o n e d e i d i s c h i R A I D si e f f e t t u a r i c h i a m a n d o d i r e t t a m e n t e il
c o m a n d o mdadm. Per a v e r e i n f o r m a z i o n i s u l l o s t a t o c o r r e n t e d i u n d i s p o s i -
t i v o R A I D si lanc ia il c o m a n d o così :
sudo m d a d m - - q u e r y --detail <raid d e v i c e s
C o m e <raid device> si i n se r i sce il d i s p o s i t i v o R A I D d a c o n t r o l l a r e , p e r
e s e m p i o / d e v / m d 1 (F igu ra 2 .19 ) . U n a l t r o c o m a n d o u t i l e p e r c o n o s c e r e lo
Stato d e l R A I D è cat / p r o c / m d s t a t .
ale@pitagora:-$ sudo mdadm --query --detail /dev/mdl /dev/mdl:
Version : 00.90.03 Creation Time : Wed Sep 24 18:53:49 2008
Raid Level : raidl Array Size : 9767424 (9.31 GiB 10.00 GB)
Used Dev Size : 9767424 (9.31 GiB 10.00 GB) Raid Devices : 2
Total Devices : 1 Preferred Minor : 1
Persistence : Superblock is persistent
Update Time State
Active Devices Working Devices Failed Devices Spare Devices
Wed Sep 24 18:59:53 2008 clean, degraded 1 1 0 0
UUID : 8bl8290c:0ab544df:58d6250f:b8f79aaa (local to host pitagora) Events : 0.8
Number Major Minor RaidDevice State 0 8 18 0 active sync
1 M — 1 9 3 Figura 2.19-Con il com
su un dispositivo RAID. -query -detail si ot
/dev/sdb2
# 1 1 preziose informazioni
' 1 i:'e *
Quando uno dei dischi smette di funzionare, un sistema in RAID 1 come quel lo presentato nel capitolo precedente eliminerà l'hard disk rotto dai dispositivi RAID attivi, in modo tale da permettere alla macchina il norma-le svolgimento delle attività grazie al disco o ai dischi rimanenti. Nel momento in cui un disco si rompe, prima di poterlo sostituire si devo-no rimuovere dai dispositivi RAID le partizioni contenute nel disco difetto-so. Il comando da usare è il seguente:
sudo mdadm --remove <raid device> «partizione»
Ecco un paio di esempi:
sudo mdadm --remove /dev/mdO /dev/sdal
sudo mdadm --remove /dev/mdl /dev/sda2
Fatto questo, è possibile spegnere la macchina e sostituire l'hard disk rotto con uno nuovo.
Nel caso di utilizzo di dischi di tipo hot-swap è possibile togliere un hard disk difettoso e sostituirlo con dispositivo nuovo a "caldo", cioè senza dover riavviare la macchina.
Effettuata la sostituzione e riavviato il computer, è quindi necessario crea-re una tabella delle partizioni sul nuovo disco che corrisponda a quella presente negli altri hard disk che compongono il RAID. Un modo rapido per riversare la tabella da un disco attivo nel RAID (/ dev/sda) al disco appena inserito (/dev/sdb) è quel lo utilizzare il comando seguente:
sudo sh -o "sfdisk -d /dev/sda | sfdisk --force /dev/sdb"
Ora non rimane che aggiungere ai dispositivi RAID le partizioni del nuovo disco con:
sudo mdadm --add <raid device> «partizione»
Quindi, se sui dischi vengono utilizzate le prime tre partizioni primarie, i co-mandi da lanciare per aggiungere /dev/sdb al RAID saranno i seguenti:
sudo mdadm --add /dev/mdO /dev/sdbl sudo mdadm --add /dev/mdl /dev/sdb2 sudo mdadm --add /dev/md2 /dev/sdb3
A questo punto verrà avviata la sincronizzazione dei dati e il nuovo hard disk farà att ivamente parte del RAID. E anche possibile che compaiano errori su un disco senza che questo smetta del tu t to di funzionare. Per segnalare al sistema il malfunzionamen-to di una partizione si utilizza l 'opzione --faii di mdadm, così:
sudo mdadm --fail /dev/mdO /dev/sdal
Segnalata la partizione guasta, sarà poi possibile rimuoverla dal dispositi-v o RAID c o n mdadm --remove.
Aggiungere un dispositiva RAID
Per creare un nuovo disposit ivo RAID si richiama mdadm con l 'opzione - -create. Ecco un esempio:
sudo mdadm --create /dev/mdl --level 1 --raid-devices=2 /dev/sdb2 missing
In questo riga viene creato il dispositivo RAID / d e v / m d l , che è di t ipo RAID1 (--level l) ed è composto da due dischi (--raid-devices=2). La prima partizione che lo compone è /dev/sdb2 mentre l'altra verrà indicata successivamente (missing). Per aggiungere la seconda partizione del disposit ivo / d e v / m d l basta poi richiamare mdadm con l 'opzione --add:
sudo mdadm --add /dev/mdl /dev/sdc2
La creazione di un filesystem sulle partizioni che compongono il device RAID avviene utilizzando come riferimento il file di disposit ivo di questo:
sudo mkfs.ext3 /dev/mdl
Lo stesso riferimento dovrà essere adottato per aggiungere in /etc/ fstab una riga che consenta di montare al boot II disposit ivo RAID creato.
Ecco una semplice riga di esempio:
/dev/mdl /home ext3 defaults 0 2
La procedura è simile nel caso si utilizzino LVM e RAID insieme. Infatti, per creare dei volumi fisici LVM sui device RAID è sufficiente lanciare il coman-do pvcreate seguito dai file di disposit ivo RAID da usare:
sudo pvcreate /dev/mdO /dev/mdl
Fatto questo, la configurazione dei relativi volumi logici LVM avverrà nei modi indicati nel paragrafo I vo lumi LVM di questo stesso capitolo.
3 . Gli strumenti dell'amministratore
in questo capitalo si scopriranno i s e g r e t i
della shell Bash e le mille possibilità del-
l'editor v i .
Gli interventi di un amministratore sul sistema non si esauriscono certo nella "grande manutenzione": installare programmi, aggiungere partizio-ni e amministrare gli utenti sono tutte operazioni fondamental i ma che spesso vengono svolte saltuariamente, dal momento che si concentrano dopo le fasi di progettazione e installazione di un server. Una volta che l' impalcatura di una macchina è stata messa a punto, dun-que, l 'amministrazione quotidiana di un server richiede una notevole di-mestichezza con la shell e l'utilizzo di un editor evoluto. In questo capitolo si scopriranno quindi trucchi e segreti della shell standard su Linux, Bash, e si farà la conoscenza del re degl i editor su Unix, vi.
La shell Bash La shell è lo strumento mediante il quale si eseguono programmi e comandi e si dialoga con il sistema. Grazie alle potenzialità della shell è possibile ese-guire in modo rapido le operazioni più ripetitive creando alias, costruendo funzioni e sviluppando programmi veri e propri chiamati script.
La shell standard su Linux è Bash: l 'acronimo sta per Bourne again shell e indica indirettamente la compatibi l i tà di questa con la shell standard su Unix, Bourne Shell appunto. Per richiamare Bash non è necessaria alcuna operazione: a meno di non modificare la configurazione di default, questa shell verrà avviata tut te le volte che si effettuerà il login nel sistema con un utente.
Primo contatta
La shell Bash è quindi il pr imo punto di contatto tra l 'utente e il sistema. Per l 'amministratore, inoltre, si tratta di un vero e proprio ambiente pri-vilegiato in cui controllare una macchina, anche a distanza, e impartire comandi su di essa.
ale@pitagora: man bash ale@pitagora:-$ df File system blocchi di 1K Usati Disponit i. Uso% Montato su /dev/sdal 19380676 4474280 13929648 25% / varrun 773168 164 773004 1% /var/run varlock 773168 0 773168 0% /var/lock udev 773168 52 773116 1% /dev devshm 773168 12 773156 1% /dev/shm Irm 773168 39760 733408 6% /lib/modules/2.6.2' eneric/volatile /dev/sda3 48062468 29129300 16491692 64% /home gvfs-fuse-daemon 19380676 4474280 13929648 25% /home/ale/.gvfs alegpitagora: -$ 1
Altre shell disponibili sono ksh (Korn Shell), Tcsh, zsh (Z Shell) e csh (C Shell). Quest'ultima ha come caratteristica precipua l'utilizzo di una sin-tassi derivata dal linguaggio C (da cui il nome). Chi volesse far pratica con shell diverse dalla classica Bash può trovare i pacchetti di tutte que-ste shell alternative nei repository di Ubuntu.
Come si è accennato, la shell permette di organizzare delle sequenze di istruzioni in programmi veri e propri. Un compi to basilare per l 'ammini-stratore è quel lo di effettuare copie di riserva delle directory di sistema e dei file degli utenti: ecco dunque le istruzioni per creare un semplice script bash che automatizzi la creazione dei file di backup. Ovviamente, nelle pagine successive si farà la conoscenza di strumenti di backup di certo più efficaci di un elementare script, ma la manciata di righe che seguono servirà a prendere confidenza con alcune funzionalità importanti della shell.
Nel terminale si lanci il comando nano backup. Verrà creato il file di backup nella directory corrente e in questo si andranno a inserire le varie righe che costituiranno lo script:
# ! / b i n / b a s h
# s e m p l i c e script di b a c k u p
G I O R N O = $ ( d a t e +%F)
N O M E = b a c k u p - $ G I O R N O . t a r . g z
D I R S = " / e t c /var"
tar cvfz $NOME $DIRS
• GNU nano 2."é!7 File: backup f?odificato"~1§
#!/bin/bash # semplice script di backup
GI0RN0=$(date +%F) N0ME=backup-$GI0RN0.tar.gz DIRECTORY="/etc /var" tar cvfz $N0ME $DIRECTORY
1
Figura 3.2 - Per creare uno script shell basta aprire un compongono lo script.
editor e inserire le righe che
La prima riga dello script indica quale shell deve essere richiamata, al momento dell 'esecuzione, per interpretare il contenuto dello script. I ca-
ratteri ># sono quindi seguiti dal percorso completo della shell, in questo Caso /bin/bash. Nella seconda riga il carattere iniziale è #, a indicare che la parte seguente della riga è un commento e non va dunque interpretata dalla shell: nel-l 'esempio il commento descrive succintamente lo scopo del lo script. La riga successiva mostra, in pochi caratteri, la grande potenza e dutti l i tà della shell. GIORNO è una variabile e a essa viene assegnato (=) il risultato del comando date +%F: un comando circondato dalla sequenza di caratteri $( e ), infatti, viene eseguito dalla shell e al suo posto nella riga che lo richiama è inserito l 'output del comando stesso. Seguendo l 'esempio riportato, il comando date +%F avrà come risultato la data corrente mostrata nel formato "anno-mese-giorno" (2008-7-31, per esempio); quindi, al momento dell 'esecuzione dello script, alla variabile GIORNO sarà assegnato come valore una stringa che rappresenta la data corrente.
Anche nella quarta riga viene assegnato un valore a una variabile. In que-sto caso, è possibile scoprire come sia semplice concatenare delle strin-ghe in uno script: alla variabile NOME, infatti, viene assegnata come valore la stringa formata dalla sequenza di caratteri backup-, dal valore della va-riabile GIORNO e da .tar.gz. Il valore completo della variabile NOME, dun-que, sarà qualcosa come backup-2008-07-31 .tar.gz. Come si può notare, ci si riferisce al valore di una variabile facendo pre-cedere questa dal carattere $; $GIORNO, quindi, rappresenta il valore della variabile GIORNO.
La quinta riga contiene la terza variabile, DIRECTORY, il cui valore non è altro che l'elenco delle directory delle quali si desidera effettuare una copia di riserva. Nel l 'esempio vengono inserite in questa variabile le cartelle di sistema /etc e /var; la stringa risultante va inserita tra una coppia di dopp i apici (carattere ") dato che presenta al suo intemo degl i spazi. L'ultima riga del lo script contiene l 'effett ivo comando da eseguire: tar è il classico programma di archiviazione Unix ed è installato per default su Ubuntu Server. In questo caso, il suo compi to è quel lo di creare un file compresso che abbia come nome il valore della variabile NOME e come contenuto il valore della variabile D I R S .
Quind i , quando lo script verrà esegui to sarà creato un fi le chiamato, per esempio, backup-2008-07-31 .tar.gz e questo conterrà in forma compressa le directory /e tc e /var.
La sintassi del comando tar utilizzato nello script di esempio è piuttosto
articolata. La sequenza cvfz indica una serie di quattro parametri. Il
pr imo parametro, c, stabilisce che si vuole creare un archivio, mentre v
indica che si vuole visualizzare in output l 'elenco dei file inseriti nel file
risultante. Poi f dichiara che si intende usare un file per memorizzare l'ar-
chivio e, infine, z stabilisce che l'archivio stesso debba essere compresso
con il sistema di compressione gzip.
Eseguire una script
Conclusa la stesura e l'analisi del lo script d i esempio, non r imane che salvare il f i le e uscire da l l 'ed i tor nano. Ora bisogna rendere eseguibi le lo script con il comando seguente:
chmod +x backup
Poi è consigl iabi le copiare lo script in una directory a scelta del PATH, per esempio in /usr / local /b in:
sudo cp backup /usr/local/bin
In questo modo lo script backup sarà richiamabile qualunque sia la directory corrente, proprio come se si trattasse di una comune applicazione.
Il PATH è la lista del le directory fra le quali vengono cercati i comandi da
eseguire. Se un programma o uno script è presente in una directory del
PATH, dunque, sarà possibile eseguir lo inserendone solo il nome, altr imenti
sarà necessario indicarne il percorso comple to . Per conoscere il PATH attual-
mente in uso sì legga la variabile PATH con il comando echo $PATH.
Adesso ci si sposti nella cartella in cui si vuole creare il fi le di backup, per esempio /var/backup: ed /var/backup. Quindi, si lanci lo script d ig i tando semplicemente sudo backup e premendo Invio. L'utilizzo di sudo è neces-sario perché si andranno a utilizzare delle directory di sistema nelle quali, a volte, i file non sono leggibi l i dagli utenti normali. Il risultato a monitor sarà simile a quanto visibile nel l ' immagine seguente (Figura 3.4).
I/var/cache/fontconfig/99e8edOe538f84Oc565b6ed5dad60d56-x86.cache-2 /var/cache/fontconfig/e383d7ea5fbe662a33d9b44caf393297-x86. cache-2 /var/cache/fontconfig/c69fO4ab05004e31a6d5e715764fl6d8-x86.cache-2 /var/cache/fontconfig/d52a8644073d54cl3679302call8O695-x86. cache-2 /var/cache/fontconfig/707971e003b4ae6c8121c3a920e507f5-x86. cache-2 /var/cache/fontconfÌg/945677eb7aeaf62fld50efc3fb3ec7d8-x86. cache-2 /var/cache/fontconfÌg/fe547fea3a41b43a38975d292a2bl9c7-x86. cache-2 /var/cache/fontconfÌg/7ef2298fde41cc6eeb7af42e48b7d293-x86. cache-2 /var/cache/fontconfÌg/4794a0821666d79190d59a36cb4f44b5-x86.cache-2 /var/cache/fontconfÌg/3830d5c3ddfd5cd38a049b759396e72e-x86. cache-2 /var/cache/fontconfig/del56ccd2eddbdcl9d37a45b8b2aac9c-x86. cache-2 /var/cache/fontconfÌg/d82eb4fd963d448e2fcb7d7b793b5df3-x86. cache-2 /Var/cache/fontconfig/el3b20fdb08344e0e664864cc2ede53d-x86. cache-2 /Var/cache/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-x86. cache-2 /var/cache/fontconfÌg/0f34bcd4b6ee430af32735b75db7f02b-x86.cache-2 /var/cache/fontconfig/a755afe4a08bf5b97852ceb740Ob47bc-x86.cache-2 /var/cache/fontconfig/c855463f699352C367813e37f3f70ea7-x86. cache-2 /var/cache/fontconfÌg/6333f38776742dl8e214673cd2c24e34-x86. cache-2 /Var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86.cache-2 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86.cache-2 /var/cache/fontconfÌg/de9486f0b47a4d768a594cb4198cblc6-x86.cache-2 /var/cache/apt/ /var/cache/apt/pkgcache. bin
Figura 3.4 - L'output dello script di esempio: la sequenza dei file inseriti nell'archivio di backup.
Al termine dell 'esecuzione del lo script, nella directory corrente sarà pre-sente il file con la copia di backup delle directory /etc e /var. Quando si vorrà scompattare l'archivio, quindi, basterà entrare nella directory radice con ed / e lanciare il comando tar xvfz seguito dal percorso completo dell 'archivio, come in questo esempio:
tar xvfz /var/backup/backup-2008-07-31.tar.gz
Il costrutta condizionale if
Nella creazione degl i script è possibile avvalersi dei tipici costrutti presenti nei l inguaggi di programmazione. Ecco la struttura del costrutto condizio-nale i f :
if [condizione]
then
istruzioni
fi
Si tratta della struttura più semplice per tale costrutto, in cui, all'avverarsi di una singola condizione, vengono eseguite delle istruzioni. La struttura può essere espansa adot tando le forme elif ("altr imenti, se la condizione seguente è vera...") ed else ("altr imenti esegui l ' istruzione"), così:
if [condizione]
then
istruzioni
elif [condizione2]
then
istruzioni2
else
istruzioni3
fi
Le condizioni presenti nelle righe di if ed elif verranno verificate in suc-cessione e, nel caso risultassero tutte false, verranno eseguite le istruzioni indicate da else. Ecco un esempio del costrutto if:
# ! /bin/bash FILE=$1
if [ -e "$FILE" ] then
echo "Il file $FILE esiste"
else echo "Il file $FILE non esiste"
fi
La seconda riga dell 'esempio assegna alla variabile F I L E il contenuto del primo argomento ($1) inserito nella linea di comando: se lo script in cui è presente il costrutto if viene chiamato controlla, per esempio, eseguendo controlla /etc/profiie il primo argomento risulterà essere /etc/profi le. I valori degl i argomenti successivi sono contenuti nelle variabili $2, $3, $4 e così via, mentre la variabile $@ raccoglie l' insieme di tutt i gli argomenti for-niti r ichiamando lo script. Infine, il nome del lo script è contenuto in $0 e la variabile $# indica il numero di argomenti passati sulla linea di comando. La riga successiva del lo script abbina il costrutto if a un operatore condi-zionale, -e, che dà risultato positivo se il file che lo segue nella riga esiste. Lanciando controlla /etc/profiie, quindi, l 'operatore condizionale darà certamente esito true, dato che /etc/prof i le è un file standard su tut te le macchine Linux. Nella Tabella 3.1 vengono elencati i più importanti ope-ratori che è possibile applicare sui file, sui valori numerici e sulle stringhe.
Tabella 3.1 - I pr incipal i opera to r i appl icabi l i a f i le, valor i numerici e st r inghe.
Opera to re Si appl ica su È vero
-e File Se il file esiste
-f File Se si tratta di un file regolare, non di un
-f File disposit ivo 0 di una directory
-d File Se si tratta di una directory -X File Se il file ha i permessi di esecuzione
-eq Numeri Se i due valori confrontati sono uguali -ne Numeri Se i due valori confrontati sono diversi -It Numeri Se il pr imo valore è minore del secondo
-gt Numeri Se il primo valore è maggiore del secondo = = Stringhe Se le due stringhe sono uguali != Stringhe Se le due stringhe sono diverse
-z Stringhe Se la stringa è nulla
Se quindi il fi le indicato nel pr imo argomento esiste, il then alla riga succes-siva fa visualizzare in ou tpu t dal comando echo la scritta 11 file $ F I L E esi-
ste, sost i tuendo $FILE con l 'effett ivo file indicato sulla linea di comando. Se il f i le non è presente nel sistema, invece, si salta all'else e in tal caso la stringa che viene mostrata è il file $ F I L E non esiste. In Figura 3.5 lo script viene r ichiamato più vol te uti l izzando fi le di f ferent i .
ale@pitagora:-$ ./prova /etc/profile Il file /etc/profile esiste ale@pitagora:~$ ./prova /etc/profi Il file /etc/profi non esiste ale@pitagora:~$ ./prova /etc/bash.bashrc Il file /etc/bash.bashrc esiste ale@pitagora:~$ ./prova /etc/bash.bashrcc Il file /etc/bash.bashrcc non esiste a l e @ p i t a g o r a : |
Figura 3.5 - Lo script controlla viene eseguito più volte, inserendo come parametro file diversi.
Arrivati a questo punto , ol tre al costrut to if si sono in t rodot t i e lement i fondamenta l i nella programmazione in Bash, quali la gest ione degl i argo-ment i e l 'util izzo degl i operator i .
Se non si inserisce uno script in una directory del PATH, per richiama-re questo dalla cartella in cui è memorizzato basta premettere . / al nome dello script. Per esempio, se lo script controlla è nella directory /home/ale/scripts non si deve far altro che entrare in questa directory (ed /home/ale/scripts) ed eseguire ./controlla. Nella Figura 3.5 lo script viene appunto richiamato dalla directory corrente, nel modo appena indicato.
• costrutti di loop
Altri costrutti basilari nella costruzione degl i script sono quelli di loop: for, whiie e untii. Ecco innanzitutto la struttura del ciclo for:
for VARIABILE in LISTA
do
istruzioni
done
V A R I A B I L E è il nome della variabile il cui valore corrisponderà via via a tutt i gli elementi presenti nella L I S T A . Per ogni elemento estratto dalla L I S T A ,
quindi, verranno eseguite le istruzioni che seguono il do e precedono il done. Al termine degl i elementi si uscirà dal ciclo. Indicata la struttura, quello che segue è un esempio di utilizzo del ciclo for:
#!/bin/bash
for I in /home/ale/Documenti/*
do
cp $1 $1.bak
done
Nella seconda riga si indica, all ' interno di un ciclo for, che i nomi di tutt i i file contenuti nella d i rectory /home/a le /Document i devono diventare, uno dopo l'altro, il valore della variabile i . L'istruzione della quarta riga, quindi, crea per ogni valore della variabile un file di riserva con suffisso .bak, mediante il comando di copia cp. Se nella directory ci sono i file tes i l .tex, tesi2.tex e tesi3.tex, dunque, il ciclo creerà i file di backup tesi l .tex.bak, tesi2.tex.bak e tesi3.tex.bak. Il costrutto whi ie ha una struttura mol to semplice:
while [condizione] do
istruzioni done
Si tratta di un per iodo le cui istruzioni vengono eseguite finché la condi-zione indicata è vera. Segue un esempio esplicativo:
#!/bin/bash
NUM=10 while [ $NUM -ne 0 ]
do
echo $NUM NUM=$(( $NUM-1 ))
done
Nella seconda riga viene assegnato alla variabi le NUM il valore 10. Il co-strut to whiie inizia dalla riga successiva: le istruzioni racchiuse tra do e done vengono esegui te f inché la variabile NUM ha un valore diverso da 0. La riga 5 cont iene l ' istruzione per mostrare in ou tpu t il valore corrente della variabile NUM, mentre la riga successiva mostra l 'util izzo del le espressioni ar i tmet iche nella shell.
Nella penul t ima riga, infatti, alla variabi le NUM viene assegnato il valore della variabile stessa meno 1. L'operazione ari tmetica va indicata inseren-dola tra i g rupp i di caratteri $ ( ( e ) ). Il risultato in ou tpu t di questo script d 'esempio è visibile ne l l ' immagine seguente (Figura 3.6).
ale@pitagora:-$ ./prova2 10 9 8 7 6 5 4 3 2 1 ale@pitagora:~$
Figura 3.6 - Lo script d'esempio per il costrutto while produce questo output nel terminale.
Per creare un ciclo di loop infinito è possibile usare while inserendo come
condizione true, come nell'esempio seguente: #/bin/bash
while true
do
echo "loop infinito"
done
Per uscire dal loop, quindi, si dovrà premere la combinazione di tasti
Ctrl+C.
Il costrutto untii è speculare al per iodo whiie appena trattato: se le istru-zioni presenti in whiie vengono eseguite finché la condizione è vera, le istruzioni del costrutto untii vengono invece eseguite finché la condi-zione risulta falsa. Ecco un esempio simile al precedente, ma scritto per sfruttare il per iodo untii:
# ! / b i n / b a s h
N U M = 1
u n t i i [ $NUM -eq 10000 ]
do
echo $NUM
NUM=$(( $NUM*10 ))
done
In questo caso viene assegnato a NUM il valore 1 e il ciclo untii esegue le istruzioni in esso contenute f ino a quando la variabile non è uguale a 10000. L'operazione aritmetica, in questo esempio, moltipl ica ogni volta NUM per 10.
Il costrutto condizionale Case
L'ultimo costrutto che viene qui presentato è case, che consente di sem-plificare complessi periodi if rendendoli di più facile lettura. Eccone la struttura:
case "$VARIABILE" in
condizionel)
i s t r u z i o n i l
condizione2)
istruzioni2
c o n d i z i o n e 3 )
istruzioni3
esac
Come si può vedere, il costrutto case prende in considerazione una VA-R I A B I L E e presenta una serie di blocchi di istruzioni che corr ispondono ai diversi valori che può assumere la variabile stessa. L'utilizzo ideale di case è nella gestione dei parametri passati da riga di comando o dei valori inseriti direttamente con la tastiera durante l'esecu-zione di uno script.
Ecco un esempio:
# ! / b i n / b a s h
echo "Scrivi uno o p p u r e due e p r e m i Invio."
read t e s t o
case "$testo" in
uno)
echo "Hai s c r i t t o uno !"
due)
echo "Hai s c r i t t o due !"
* ) echo "Non h a i scritto né u n o né due..."
esac
La prima riga interessante di questo script è la terza: read è un comando Bash interno che legge l ' input dalla tastiera e memorizza in una stringa, in questo caso testo, i tasti digi tat i f ino alla pressione di Invio. Il costrutto case che segue controlla prima se la variabile testo ha come valore uno, poi se la stessa variabile ha valore due; in questi due casi, quin-di, il comando echo mostra una riga di output che informa l 'utente sul valore inserito. L'ultima condizione, indicata come * ) , viene selezionata se tut te le precedenti condizioni risultano false: anche in questo caso echo visualizza un'apposita riga nel terminale.
Nel l ' immagine seguente (Figura 3.7) si può vedere il risultato di differenti esecuzioni dello script.
ale@pitagora:~$ ,/prova5 Scrivi uno oppure due e premi Invio. uno Hai scritto uno! ale@pitagora:~$ ,/prova5 Scrivi uno oppure due e premi Invio. due Hai scritto due! ale@pitagora: ,/prova5 Scrivi uno oppure due e premi Invio. tre Non hai scritto né uno né due. ale@pitagora:-$ |
Figura 3.7-Lo script per il costrutto condizionale case con le diverse righe di output possibili.
Creare alias e funzioni
Le istruzioni che è possibi le utilizzare per costruire script più o meno com-plessi possono essere d ig i ta te d i re t tamente nel terminale. Cer tamente, scrivere ogn i volta intere sequenze di comandi e p rogrammi può risultare snervante: gli alias e le funzioni della shell, qu ind i , si situano a metà strada tra la sempl ice e diretta d ig i taz ione di comandi e la laboriosa creazione di script.
Prima di presentare la sintassi d i alias e funzioni, è necessario stabil ire se si desidera che queste siano utilizzabili da un unico utente o dal l ' in tero sistema.
Se alias e funzioni si inseriscono nel fi le .bashrc o .profi le della H O M E di un utente, infatti, essi saranno disponibi l i solo per quel de terminato uten-te. Se si inseriscono in /e tc /pro f i le o in /etc/bash.bashrc, invece, gli alias e le funzioni che si creeranno pot ranno essere utilizzati da tut t i gli utent i nel sistema.
I file .bashrc e /etc/bash.bashrc vengono letti all'avvio delle shell inte-
rattive non di login, mentre i file .profile e /etc/prof i le vengono letti
quando si apre una shell di login. Quando si effettua il login di un utente
viene richiamata, appunto, una shell di login, mentre quando si lancia un
terminale come iconsole o Gnome Terminal si avvia una shell interattiva
non di login.
Negl i esempi che seguono si è scelto di intervenire sulla conf igurazione di sistema, in m o d o tale da creare alias e funzioni per tut t i gli utenti . Dato che in Ubuntu, quando viene let to il f i le /e tc /pro f i le , v iene comun-que processato anche il contenuto di /etc/bash.bashrc, si andrà a modi f i -care d i re t tamente /etc/bash.bashrc: in questo m o d o , saranno disponibi l i gli stessi alias e le stesse funzioni sia quando si avvierà una shell di login sia quando si lancerà una shell interatt iva non di login. Si apra dunque con l 'edi tor da root il f i le /etc/bash.bashrc mediante il C o m a n d o sudo nano /etc/bash.bashrc.
Si può iniziare inserendo, alla fine del file, alcuni alias utili per semplificare la vita all 'amministratore di sistema:
a l i a s v = l e s s
a l i a s ..="cd .."
a l i a s b y e = " s u d o s h u t d o w n -r now"
a l i a s b y e b y e " s u d o s h u t d o w n -h now"
GNU nano 2.0.7 File: /etc/bash.bashrc
# check because c-n-f could've been removed in the meantime if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1 return $?
else return 127
fi
fi
# alias #alias ls="/bin/ls --color=auto -F" alias U="ls -l -F" alias l="ls -al -F" alias .,="cd .." alias v="less" alias x=exit alias src="cd /usr/src" alias cerca="find . -type f -printO | xargs -0 grep"
1 Guida SI Salva gg Inserisci | Q Pag Prec. E ̂ Taglia Q Posizione j Esci Qy Giustifica^ Cerca f Q Pag Succ. | Q Incolla B Ortografia
Figura 3.8 - Nel file /etc/bash.bashrc è possibile inserire degli alias, cioè delle scorcia-toie per i comandi più usati.
Un alias non è altro che una parola che viene utilizzata per sostituire una stringa, soli tamente un comando usato di frequente o che richieda lunghe digitazioni sulla tastiera. Un alias, per essere "espanso" nella stringa che sostituisce, va digi tato come parola iniziale di un comando durante l'uso interattivo della shell. Creare degl i alias, quindi, significa creare delle scorciatoie. La sintassi di un alias è la seguente:
alias P A R O L A = S T R I N G A
Il pr imo alias presentato non fa altro che sostituire a v la stringa less: se si digiterà nel terminale v documento.txt, quindi, la shell eseguirà il coman-
do less documento.txt (less è un visualizzatore di file di testo più evoluto del classico more di Unix). L'alias successivo mostra come sia necessario inserire tra apici dopp i la stringa quando questa contiene degl i spazi. In questo caso, quando si scriverà . . il sistema lancerà il comando ed ...
Gli ul t imi due alias pe rmet tono , r ispet t ivamente, di riavviare e spegne-re la macchina d ig i tando sempl icemente bye e byebye: un bel r isparmio di t e m p o r ispetto ai lunghi comandi sudo shutdown -r now e sudo shu-
t d o w n -h n o w .
Per visualizzare l 'elenco degl i alias attivi basta eseguire nel terminale il comando alias senza alcun argomento. L'output del comando sarà simile a quanto visibile nel l ' immagine seguente (Figura 3.9).
ale@pitagora:alias alias .,='cd alias aptrem='sudo apt-get remove --purge' alias bye='sudo shutdown -r now' alias byebye='sudo shutdown -h now1
alias c='clear' alias cd+='mount /media/cdrom ; ed /media/cdrom' alias cd-='umount /media/cdrom ; eject' alias cdl2='hdparm -E 12 /dev/hdc1
alias cd24='hdparm -E 24 /dev/hdc' alias cerca='find . -type f -printO | xargs -0 grep' alias em='emacàclient -a emacs' alias j='jobs' alias l='ls -al -F' alias ll='ls -l -F' alias ls='ls --color=auto' alias po='popd' alias pu='pushd' alias r='reset' alias src='cd /usr/src' alias ss='ps aux' alias v='less' alias wget mirror='wget -r -l 1 -np -k' alias x='exit'
Figura 3.9 - Con il comando alias si ottiene l'elenco degli alias che è possibile richiamare.
Gli alias sono senz'altro comodi , ma non consentono di gestire gli argo-menti nei comandi. Per esempio, non è possibile creare un alias che possa eseguire il comando is directory | less, permet tendo di cambiare la directory da visualizzare tramite un argomento.
Quando è necessario manipolare degl i argomenti si devono creare delle funzioni, che in Bash hanno la seguente sintassi:
function nome {
istruzioni
}
Ecco dunque una funzione di esempio che richiama il comando is di-
rectory | less:
function lless {
ls $1 | less
}
La funzione ha come nome H e s s e contiene il semplice comando is $1 | less. Durante l'esecuzione della funzione i caratteri $1 saranno sostituiti dal pr imo argomento fornito alla funzione stessa. Quindi, se nel terminale si lancia lless /home/aie/immagini, il comando che il sistema eseguirà Sara ls /home/ale/Immagini | less.
Le funzioni, però, non sono semplicemente degl i alias con in più la gestio-ne degl i argomenti. Una funzione, infatti, può svilupparsi per più righe di comandi e contenere gli elementi avanzati di programmazione utilizzabili in uno script, come i costrutti condizionali. È possibile inserire delle funzioni nei file di configurazione della Bash, come /etc/bash.bashrc, seguendo la sintassi precedentemente indicata. In caso di funzioni mol to semplici, però, una sintassi alternativa più pratica è la seguente:
nome () { istruzionel ; istruzione2 ; }
Grazie a tale sintassi è possibile scrivere una funzione utilizzando una sin-gola riga: le istruzioni vanno separate dal carattere ,• e al termine del-l 'ultima istruzione va necessariamente inserito un carattere -, finale. Ecco dunque la funzione d 'esempio in versione " r idot ta" :
lless () { ls $1 I less ; }
Nel l ' immagine seguente (Figura 3.10) viene mostrata la sezione di un file /etc/bash.bashrc d 'esempio dedicata alle funzioni.
GNU nano 2.0.7 File: /etc/bash,bashrc
# funzioni aptupO { aptitude search ~U~D$1 | uniq | sort ; } holdi ) { echo "$1 hold" | dpkg --set-selections ; } q u o { C0LUMNS=132 dpkg -I | grep $1 | cut -c -60 | sort doc() { cd /usr/5hare/doc/$l ; }
kernelf ) { make-kpkg clean make-kpkg --revision=9:custom.$1 kernel image make-kpkg modules_image
}
5 Guida ^ Salva Q Inserisci | B P a g P r e c . | ̂ Taglia Q Posizione S Esci B Giustifica (£ Cerca m Pao Succ. E B] Incolla E Ortografie
:: IKiUbP WmSmmmfmiemst
L'editar vi Nelle pagine precedenti, quando è stato necessario richiamare un editor, si è scelto di utilizzare nano. Questo editor ha l ' indubbio pregio di essere mol to semplice da usare, ma possiede un parco di funzionalità limitato: si tratta di un di fet to rilevante, dato che l 'editor per l 'amministratore è uno dei principali strumenti per gestire una macchina. Per i compit i di amministrazione più ripetitivi o di maggiore complessità, quindi, è necessario servirsi di un editor più avanzato come vi. Questo è l 'editor Unix standard e lo si trova installato su qualsiasi macchi-na, qualunque sia il dialetto Unix adottato. Se è necessario effettuare degli interventi su di un sistema Unix o Linux, quindi, si può essere ragionevol-mente certi di trovare sempre un eseguibile di vi a propria disposizione. In realtà, in queste pagine viene utilizzato come riferimento l 'editor vim, una versione potenziata di vi ma in gran parte compatibi le con l'illustre predecessore.
; VIM - Vi IMproved (VI Migliorato)
versione 7.1.138 di Bram Moolenaar et al.
Vim è 'open source' e può essere distribuito liberamente
- Aiuta i bambini poveri dell'Uganda! batti help iccf<Invio> per informazioni
batti q<Invio> per uscire batti help<Invio> o <F1> per aiuto online batti help version7<Invio> per informazioni su versione
0,0-1 Tut
Figura 3.11 - Vim è una versione potenziata di vi, il re degli editor su Unix.
In Ubuntu Server viene preinstallato il pacchetto vim-tiny, che fornisce un eseguibile di Vim con funzionalità minimali. La prima operazione da com-piere, quindi, è scegliere un pacchetto contenente una versione di Vim completa. Se sulla propria macchina non si intende utilizzare alcun am-biente grafico, si può installare il pacchetto vim:
sudo a p t - g e t instali v i m
Questo pacchetto fornisce un eseguibile di Vim con tut te le funzionalità estese compilate, ma privo di interfaccia grafica. Anche il pacchetto vim-nox include una versione del l 'edi tor puramente testuale ma, a differenza del precedente, aggiunge il supporto per la creazione di script in numero-si l inguaggi di programmazione, tra cui Perl e Python. In caso di utilizzo del l 'ambiente grafico Gnome, invece, il pacchetto vim-gnome fornisce tut to ciò che serve per utilizzare questo austero editor mediante una gradevole interfaccia grafica.
Scelta la versione di Vim che più si gradisce, è consigliabile installare an-che il pacchetto vim-doc, che contiene una pratica versione in HTML del manuale dell 'editor.
• concenti fondamentali di vi
Il programma vi, così come la versione estesa Vim, è un editor modale: il funzionamento dell 'editor e il valore assegnato ai tasti cambiano a se-conda della modalità in cui ci si trova. Ciò può risultare d' impaccio per l'utente alle prime armi ma, una volta presa confidenza con la peculiare interfaccia del programma, sarà facile apprezzarne l 'enorme praticità e la grande velocità nell'esecuzione di operazioni complesse sui testi. La Tabella 3.2 contiene un elenco delle modalità presenti in Vim, con evi-denziati i tasti che permettono di attivarle. Per orientarsi, però, è bene sa-pere che le due modalità più utilizzate sono senza dubbio insert e Normali la prima è la modalità che permette di inserire del testo nel file corrente, mentre la seconda consente di impartire comandi ed è la modalità sele-zionata per default quando si avvia l'editor.
Tabella 3.2 - Le modal i tà di Vim.
Modal i tà Tasto Funzione Consente di eseguire i comandi del-
N o r m a l Esc l'editor: cancellare una riga, modificare una parola ecc. Entrando in questa modalità il testo che
I n s e r t i viene digitato è automaticamente inse-rito nel file corrente La modalità visuale permette di selezio-
V i s u a l V, V nare un'area del testo e di eseguire un comando sull'area selezionata
gh in Modalità Seleziona un'area del testo. Quando si
S e l e c t Normal, Ctrl+G digitano dei caratteri stampabili, l'area
S e l e c t in Modalità selezionata viene cancellata e si entra in Visual Modalità Insert
In questa modalità si può inserire una
C o m m a n d L i n e /, ?, ! riga di testo nella parte in basso della fi-C o m m a n d L i n e /, ?, !
nestra. Viene usata da diversi comandi, che la attivano
E x Q Consente di digitare linee di comandi Ex
Ex è un vecchio editor di linea, cioè un editor che opera sulle linee di un file anziché fornire una visione complessiva del testo da modificare. Attualmente ex costituisce, come si è visto, una modalità di vi e dei suoi cloni: entrando in modalità Ex si richiamano Infatti i comandi disponibili nell'editor ex. Lanciando in un terminale il comando ex si avvia vim e si entra direttamente in modalità Ex.
Per aprire un file con Vim basta eseguire in un terminale vi seguito dal nome del file. In Ubuntu, infatti, l 'eseguibile vi non è altro che un collega-mento al programma vim. L'editor dispone di un comodo help in linea, indispensabile almeno nei primi tempi per non perdersi tra comandi, modalità e opzioni avanzate: lo si visualizza a schermo premendo F1 o d ig i tando :heip e bat tendo Invio.
Nei paragrafi che seguono, quindi, si presenteranno i principali comandi per muoversi all ' interno di un file e modif icarne il contenuto.
I comandi per spostare il corsore
Per spostarsi tra le righe di un file si utilizzano i tasti h (sinistra), j (giù), k (su), 1 (destra). In alternativa, è possibile impiegare i consueti tasti freccia, ma i tasti h j k i permet tono di muoversi agevolmente all ' interno di un file senza dover spostare le mani dalla parte della tastiera impiegata per la digitazione del testo. Di contro, i tasti freccia consentono di muovere il cursore senza dover abbandonare la modalità insert: sta al singolo uten-te, quindi, individuare i tasti di spostamento più pratici. Per spostarsi da una parola all'altra si premono i tasti w, per andare avanti, e b, per tornare indietro. Se si vuole raggiungere una determinata riga in un file si digita il numero della riga e si preme poi il tasto G (il tasto G, da solo, fa raggiungere l'ultima riga del file o buffer corrente). Per esempio, d ig i tando SG il cursore si sposterà alla riga 5 del file. Molt i comandi di Vim accettano un simile prefisso numerico. Non fanno eccezione gli altri comandi di spostamento visti finora: d ig i tando 4w, per esempio, ci si sposterà in avanti di 4 parole, mentre premendo ì o j il cur-sore si muoverà di 10 righe verso il basso.
Altri tasti di spostamento fondamental i sono o, $ e A. Il pr imo fa andare il cursore all'inizio della riga corrente, il secondo lo fa spostare alla fine della riga e, infine, il terzo tasto muove il cursore fino a raggiungere il pr imo carattere della riga che non sia blank, cioè vuoto.
I comandi per modificare il testo
Un semplice comando per la modifica del testo è x. Premendo questo tasto viene cancellato il carattere sul quale è posizionato il cursore. Un comando di cancellazione più complesso è d (che sta per delete), che va fatto seguire da un comando di movimento: per esempio, dw cancellerà la parola corren-te, d$ cancellerà tutti i caratteri dalla posizione attuale del cursore alla fine della riga e così via. Digitando dd verrà eliminata un'intera riga.
In realtà, il comando x non è altro che una scorciatoia per digi tare il
comando composto di che, per l 'appunto, cancella il carattere posto
sot to il cursore.
Jor example, there are many other ways to delete pieces of text. Here are a few often used ones:
x delete character under the cursor (short for "dl") X delete character before the cursor (short for "dh") D delete from cursor to end of line (short for "d$") dw delete from cursor to next start of word db delete from cursor to previous start of word diw delete word under the cursor (excluding white space) daw delete word under the cursor (including white space) dG delete until the end of the file dgg delete until the start of the file
If you use "c" instead of "d" they become change commands. And with "y" you yank the text. And so forth.
|usr 04.txt [Aiuto] [RO] 478,1 95% 1 •
|[Senza nome] 0,0-1
Figura 3.13 - L'help in linea mostra alcuni dei comandi che è possibile "costruire" a partire dal comando d.
Grazie al comando d è possibile costruire comandi articolati apponendo un prefisso numerico. La sequenza di caratteri 3db, per esempio, eliminerà tre parole indietro a partire dal punto in cui è posto il cursore. Una simile combinazione di tasti può far facilmente comprendere tu t to il potenziale nascosto nei comandi di Vim: si tratta di veri e propri "mat ton-cini" che, oppor tunamente combinati , consentono di intervenire sul testo in maniera rapida ed estremamente precisa. Il comando c (change) è simile a d ma, dopo l 'operazione di cancellazione, fa entrare direttamente in modalità insert. Digi tando cw, quindi, verrà eli-minata la parola sotto il cursore e se ne potrà inserire subito un'altra, senza dover cambiare modalità. Per spostare del testo si usa il tasto p (paste): prima si cancella la frazione del testo da spostare con una qualsiasi combinazione del comando d, poi si raggiunge il punto del testo desiderato e infine si preme p per copiare lì il testo appena eliminato. Per le operazioni di copia, invece, è possibile affidarsi a y (yank). Questo comando di copia, come d e c, è seguito da un carattere di movimento e può essere preceduto da un prefisso numerico. Con yy, dunque, si copia
in un registro la riga corrente, mentre con yw si copia la parola sotto il cursore e così via. Fatto ciò, basterà raggiungere il punto del file in cui si vuole copiare il testo e schiacciare p.
I registri, in Vim, sono una sorta di "b locco appunt i " . Vengono usati per
registrare e richiamare rapidamente del le sequenze di caratteri. Servono
anche per memorizzare i dat i cancellati dal comando d o salvati dal
comando y.
Per operazioni di copia più complesse ci si può affidare alla modalità v i -sual: si preme v per evidenziare singoli caratteri o v per selezionare intere righe, quindi si usa y per memorizzare le parti evidenziate in un registro e infine si preme p per copiare il testo nel punto desiderato.
Intervenire sui file
Per salvare le modi f iche al fi le corrente si utilizza :w. Se il comando è se-gui to dal nome di un file, il testo viene memorizzato nel fi le indicato. Per uscire da l l 'ed i tor si d ig i ta :q, mentre per salvare il file e uscire da l l 'ed i tor si uniscono i due comandi e si scrive :wq.
Con il comando :e segui to dal nome di un fi le si apre nel l 'ed i tor il f i le indicato. Infine, : r f i l e . t x t inserisce il con tenuto di f i le.txt al l ' interno del testo corrente.
Ricerca e sostituzione
Le funzionali tà per la ricerca e la sosti tuzione di str inghe in Vim sono de-cisamente avanzate. Per cercare sempl icemente una stringa nel testo cor-rente si preme il tasto / , si d ig i ta la stringa da ricercare e si preme Invio. Per individuare le occorrenze successive della stringa si preme n, mentre per trovare quel le precedent i si usa N.
Il comando / può effettuare ricerche di parole poste all ' inizio o alla f ine del le r ighe di un documen to : per l imitare le ricerche all ' inizio del le r ighe si inserisce A pr ima della stringa da cercare, mentre per cercare tra le parole finali si preme il tasto $ al termine della stringa. Per esempio, scrivendo / Acasa si cercheranno tu t te le r ighe in cui la parola iniziale sia casa. Per sostituire una stringa con un'altra al l ' interno del l ' in tero documen to si usa il comando :%s, che ha la seguente sintassi:
:%s/cerca/sostituìsci/
Per esempio, per cambiare tu t te le occorrenze della parola Linux in Ubun-tu si deve scrivere : %s/Linux/ut>untu/. Con la sintassi di defaul t , però, il comando sostituisce la stringa indicata solo per la prima occorrenza di ogn i riga. Il comando d 'esempio , cioè, se trova una riga come:
Linus Torvalds è il padre di Linux. Linux è un sistema operativo libero
la cambia in:
Linus Torvalds è il padre di Ubuntu. Linux è un sistema operativo libero
Per sostituire tut te le occorrenze in ogni riga bisogna aggiungere al co-mando l 'opzione finale g (che sta per giobai), così:
: % s / c e r c a / s o s t i t u i s c i / g
Nell ' immagine seguente (Figura 3.15) si può osservare un esempio di so-stituzione globale applicata su uno script: il comando che viene eseguito inserisce la stringa mario al posto di ogni occorrenza della stringa aie.
#!/bin/sh
tar cvpf etc.tar /etc tar cvpf local.tar /usr/local tar cvpf home.tar exclude=/home/lost+found -exclude=/home/ale/Download --excl ude=/home/ale/Musica --exclude=/home/ale/Immagini --exclude=/home/ale/Video --ex clude=/home/ale/.VirtualBox /home
:%s/ale/mario/g|
Figura 3.15 - Nell'ultima riga dell'interfaccia di Vim si esegue il comando per sostituire ale con mario.
Ripetere e annullare i comandi
Spesso si ha l'esigenza di ripetere l 'ult imo comando eseguito. In Vim que-sto si ott iene premendo . (punto) sulla tastiera. Dato che il tasto . consente di ripetere esclusivamente quei comandi che effettuano dei cambiamenti sul testo, è possibile spostarsi l iberamente all ' interno di un documento e ripetere una modifica una o più volte. Per esempio, se bisogna eliminare una sequenza di tre parole da un gran numero di righe basta posizionarsi sulla prima riga da modificare, premere d3w e, quindi, spostarsi nelle righe successive e premere semplicemente ..
Per annullare l 'ultimo cambiamento effettuato sul testo corrente si preme u (undo). Premendo più volte lo stesso tasto si annulleranno via via i cambia-menti precedenti. Per ripristinare una modifica al testo che è stata annullata con u, invece, si deve premere la combinazione di tasti Ctr l+R (redo).
Una sessione di esempio con Vim
A questo punto si conoscono i comandi principali per effettuare le ope-razioni più important i in Vim. Ecco dunque una sessione di prova in cui si apre un file con l 'editor e lo si modifica richiamando una manciata di comandi.
Il file su cui si vuole intervenire è .bashrc, nella home del l 'utente corrente. Nel terminale si lancia dunque il comando seguente:
v i .bashrc
Aper to il file, la prima operazione che si vuole compiere è attivare l'aiias 11='is -1' commentato nel file di configurazione di default. Per procede-re, innanzitutto si individua la riga interessata con il comando seguente:
/alias 11
Il cursore verrà posizionato sulla riga della prima e unica occorrenza della stringa indicata e, più in particolare, sul pr imo carattere della stringa stes-sa. La riga corrente sarà dunque quella che segue:
#alias ll='ls -1'
Adesso non rimane che premere j per spostare il cursore sul carattere # di commento e poi premere x per eliminare tale carattere, attivando così l'alias. La seconda modifica da compiere è quella di spostare la sezione degli alias in fondo al file. Per fare questo si raggiunge la riga del pr imo coman-do alias e si preme il tasto v. Si entrerà così nella modalità visuale, che consente di selezionare intere righe.
A questo punto si preme j finché non vengono evidenziate tut te le righe degl i alias, quindi si usa x per togl iere le righe dalla posizione corrente. Infine si preme G per raggiungere la fine del documento e si usa il tasto p per spostare lì le righe degl i alias.
. • ' l.ife »
Per finire, si preme i per entrare in modalità insert e si aggiungono una man-ciata di alias nel file. Quindi si preme Esc per tornare in modalità Normai. Le modif iche al documento sono concluse. Non rimane che premere :wq per salvare il file e uscire dall 'editor.
$TERM dumb /usr/bin/dircolors en eval "'dircolors -b" alias Is 'Is --color=auto #alias dir='ls --color=auto --format=vertical' #alias vdir='ls --color=auto --format=long'
#alias grep='grep --color=auto' #alias fgrep='fgrep --color=auto' #alias egrep='egrep --color=auto'
fi
# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if [ /etc/bash_completion
/etc/bash_completion
# some more Is aliases alias 11 Is -I1
#alias la='ls -A' #alias l='ls -CF'
I -- INSERISCI -- 94,1 Fon
Figura 3.16 - Una sessione d'esempio con Vim. In pochi secondi si possono cambiare parti anche estese di un file.
Creare scorciatoie
Se si effettuano spesso laboriosi e complessi interventi sul testo è possi-bile creare delle scorciatoie, simili agli alias della shell, grazie al comando map. Tale comando ha la seguente sintassi:
m a p s c o r c i a t o i a c o m a n d i
La scorciatoia può essere un qualsiasi tasto o sequenza di tasti, mentre i comandi non sono altro che la successione dei tasti che devono essere premuti per compiere una determinata azione. Ecco una riga di map che può risultare utile nella scrittura di script per la shell:
map <F5> Oi#<Esc>
In questa riga II comando map abbina alla pressione del tasto F5 la sequenza oi#<Esc>: o fa spostare il cursore sul pr imo carattere della riga attuale, men-tre i passa in modal i tà insert e # inserisce il carattere di cancelletto nella posizione corrente. Infine, <ESC> fa tornare l 'editor in modal i tà Normai. Con questa scorciatoia, qu ind i , p remendo il tasto F5 la riga su cui è posto il cursore verrà commenta ta , da to che il cancel let to in posizione iniziale indica negl i script shell una riga di commen to .
Chiaramente, le r ighe di map d ig i ta te durante l'util izzo interatt ivo di V im saranno richiamabil i nella sola sessione in corso. Per memorizzare del le scorciatoie, qu ind i , b isogna inserire le relative righe di map nel fi le di con-f igurazione .vimrc.
Questo fi le va posto nella home del l 'u tente. Se .vimrc non esiste, lo si crea con il comando vi .vimrc e si inseriscono poi , mediante l 'editor, tu t te le r ighe di map che si desidera.
" Configuriazione personate di vim mmmmm
syntax on set noautoindent set modelines=5
tabstop=2
&term =- "rxvt" || &term "xterm" || &term "screen" set background=light
endif
augroup filetype au BufRead »/postponed/* ft=mail
augroup END
map Q {!}par 72qjh"M} |a <F5> 0i#<Esc>
".vimrc" 17L, 292C scritti 17,1 Tut
Figura 3.17-11 file di configurazione .vimrc dell'editor Vim.
Modificare le opzioni
Nel fi le di conf igurazione .vimrc è possibi le inserire del le righe per modi f i -care i valori d i defaul t di un gran numero di opzioni del l 'edi tor . Il comando
per modif icare il valore di un 'opz ione è set, che ha la sintassi seguente:
set opzione=valore
Alcune opzioni possono assumere i soli valori Vero e Falso. In tal caso, il valore viene indicato sempl icemente mediante il nome del l 'opzione: se il valore è Falso va premesso no al nome del l 'opz ione. Per esempio, per att ivare l 'auto indentazione si inserisce la riga:
set autoindent
mentre per disabil i tarla si scrive:
set noautoindent
L'opzione di autoindentazione fa sì che una nuova riga segua l'inden-tazione della linea precedente. Per esempio, se in una riga inseriamo dei caratteri di tabulazione, questi saranno presenti anche nelle righe successive.
Tra le opzioni che può essere utile modi f icare vi sono history, tabstop e ìncsearch. La pr ima, history, permet te di indicare il numero di comandi e pattern di ricerca che l 'edi tor deve memorizzare. Per esempio, con set history=ioo si manterranno in memor ia 100 comandi e pattern. L'opzione tabstop stabilisce il numero di spazi bianchi che devono corri-spondere a un carattere di tabulazione. Con set tabstop=2 un tab corri-sponde a 2 spazi. Infine, incsearch attiva la ricerca incrementale: quando si premerà il tasto / verrà mostrato immedia tamente , carattere d o p o ca-rattere, il punto del testo dove appare la stringa ricercata. Per orientarsi tra la mol t i tud ine di opzioni che Vim met te a disposizione, basta digi tare nel l 'edi tor il comando :options. Compar i rà un documen to con un elenco commenta to del le opzioni presenti, suddivise per argo-mento.
• W H set js nojs
nrformats "alpha", "octal" and/or "hex"; number formats recognized for CTRL-A and CTRL-X commands (local to buffer) set nf=octal hex
14 tabs and indenting
tabstop number of spaces a <Tab> in the text stands for (local to buffer) set ts=2
sh i f tw id th number of spaces used for each step of (auto)indent (local to buffer! set sw=8
smarttab a <Tab> in an indent inserts 'shiftwidth1 spaces set nosta sta
sof t tabstop if non-zero, number of spaces to insert for a <Tab> (local to buffer) set sts=0
¿option-window 445,1 54%
1 1 • [Senza nome' 0,0-1 Tutl
: options|
Figura 3.18- li comando :options mostra un elenco commentato delle opzioni disponi-bili in Vim.
Per concludere questi paragrafi dedicati a Vim, la Tabella 3.3 è una sorta di "guida per la sopravvivenza", con i comandi fondamental i per l'utilizzo di questo potente ma complesso editor.
Tabella 3.3 - I comandi per "sopravvivere" in Vim.
Comando Funzione
h , j, k , ì Muove il cursore a sinistra, in basso, in alto e a
h , j, k , ì destra
: W Salva i cambiamenti al documento corrente :q Fa uscire dal l 'editor X Cancella il carattere sotto il cursore
dd Cancella una riga
yy Registra una riga in memoria Copia nel documento i dati salvati in memoria
p dai comandi come x, d d e yy
/ Ricerca una stringa nel documento
F • \ \ I —1 I i
4. Log e processi periodici
I«! 11 O isS IE If"- IH sistema di l o g e gii strumenti
di scheduling per amministrare al meglio
una macchina.
Se gli strumenti fondamental i per un amministratore sono la shell e l'edi-tor, la gestione quotidiana di una macchina non può prescindere dalla conoscenza approfondita dei sistemi di log e dei principali software per la gestione dei processi periodici (scheduling). Questo capitolo, dunque, sarà dedicato a sysiog e cron: il pr imo è il gestore di log standard su Linux, mentre il secondo è il sistema di scheduling più adatto a essere usato in macchine accese 24 ore su 24 come i server.
Gestire i lag Un log non è altro che la registrazione su file di una serie di informazio-ni inviate da un componente del sistema o da un programma comune. Queste informazioni sono organizzate in ordine cronologico: un'attenta lettura dei file di log, quindi, consente di avere un quadro complessivo dell 'attività di una macchina e di collocare nel t empo l' insorgere di eventi imprevisti e malfunzionamenti.
Il sistema per la gestione dei log syslogd è contenuto nel pacchetto sysklo-gd, installato per default. I file di log sono raccolti nella directory /var/ log: nella Tabella 4.1 vengono presentati alcuni dei principali file di log.
Tabella 4.1 - Alcuni dei principali f i le di log.
auth.log daemon.log
Autorizzazioni. Per il comando sudo, per esempio Comunicazioni relative ai demoni
dmesg
kern.log mail.err, mail.info, mail.log, mail.warn
Contiene i messaggi inviati dal kernel durante la procedura di boot L'insieme dei messaggi provenienti dal kernel
Messaggi relativi alla posta
Xorg.*.log
messages Importante file di log, raccoglie un nutrito nume-ro di tipi di messaggi diversi Informazioni e messaggi di errore inviati dal ser-ver grafico X Window System
La configurazione di syslogd
Per modificare le impostazioni di syslog e stabilire così una politica dei log adatta al proprio sistema si deve intervenire sul file di configurazione /etc/ syslog.conf. In questo file sono presenti righe di commento (sono quelle con il consueto carattere iniziale #) e righe che determinano le regole per i log. Le seconde hanno la seguente struttura:
selettore azione
Il campo selettore è formato dalla coppia di valori facility.level. Faci-ìity indica il t ipo di programma che invia le informazioni di log, mentre ìevei individua la gravità del singolo messaggio inoltrato. L'insieme di faciiity e levei, dunque, definisce in modo granulare le informazioni di log cui ci si vuole riferire.
Le facii ity d isponib i l i SOnO auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (corr isponde a auth), syslog, user, uucp e localO-7. Alcune faciiity riguardano le autorizzazioni (auth e authpriv), altre il ker-nel (kern), altre ancora singoli demoni avviati sulla macchina (cron, ftp, ipr, mail, news). La faciiity syslog è relativa ai messaggi dello stesso de-mone syslogd, mentre per i messaggi locali si utilizzano le faciiity da localo a local7.
[ /etc/syslog. conf Configuration file for syslogd. #
# For more information see syslog.conf(5) # manpage.
# # First some standard logfiles. Log by facility. #
auth.authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon." -/var/log/daemon.log kern.* -/var/log/kern.log Ipr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log
# # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files.
mail.info -/var/log/mail.info
"/etc/syslog.conf" 70L, 1614C 1,1 Cim
Figura 4.1-11 file di configurazione letto da syslog è /etc/syslog.conf.
Tramite mark, infine, si generano messaggi di timestamp (delle "marche temporali") a intervalli regolari: ciò può risultare utile per individuare con precisione il momento in cui si manifesta un problema sulla macchina. I valori che p u ò assumere il level sono debug, info, notice, warning, err, crit, aiert, emerg. Il valore che indica la gravità più bassa per un messag-gio è debug (informazioni per ¡1 debugging), mentre emerg (emergenza!) rappresenta la gravità più alta possibile per un log. Per l'indicazione della facility e del level è consentito usare il valore * (in-clude tutti i valori possibili), mentre per il solo level è permesso l'utilizzo anche della parola chiave none (non include alcun valore). Per esempio, mail.* applica un'azione a tutti i livelli della facility mail. Con il selettore news.none, invece, si indica che a nessun livello della facility news deve corrispondere una determinata azione di log. II campo azione, quindi, stabilisce ¡1 destinatario del log. Ecco l'elenco delle azioni possibili:
• File regolare. Il log viene scritto su un file, che va indicato con il percorso completo. Esempio: /var/log/auth.log
• Macchina remota. Il log viene inviato al demone syslogd di una macchina remota. Può essere usato un nome di host o un indirizzo IP. Esempio: ©192.168.1.12
• Named pipe. Il messaggio di log viene mandato a una named pipe (pipe persistente). Esempio: |/dev/xconsole
• Lista di utent i . Il messaggio di log viene mostrato a determinati utenti se questi sono attivi sulla macchina. Con * il messaggio viene inviato a tutti gli utenti attivi. Esempio: ale,mario,test
Alcuni esempi per syslag.conf
Ora che si conoscono i possibili valori per i parametri faciiity. levei e azione, si possono riportare alcuni esempi completi di righe da inserire in /etc/syslog.conf. Una riga molto semplice è la seguente:
auth.info /var/log/auth.log
In questa regola si stabilisce che tutt i i messaggi di log per la faciiity auth di level info o superiore devono essere inseriti nel file /var/ log/auth.log. Di default, dunque, l'indicazione di un determino livello implica la selezio-ne di tutt i i livelli di gravità superiore a esso: in /var/ log/auth.log, quindi, saranno raccolti i messaggi di log di t ipo auth.info, auth.notice e così via, f ino a auth. emerg. Per individuare nella regola un singolo level, questo va fatto precedere dal carattere =. Scrivendo auth.=info /var/iog/auth.log, perciò, si riverseran-no nel file di log i soli messaggi della faciiity auth e di livello info. Il carattere ! consente invece di escludere uno o più livelli da un'azione, come nella riga qui di seguito riportata:
mail.*;mail.!=notice /var/log/maìl
In questo esempio tutt i i livelli per la faciiity mail confluiscono in /var/ log/ mail, tranne il livello notice. Nella riga vengono impiegati insieme i carat-teri ! e = per precisare il level da escludere. Indicando invece mail.*,-mail. ¡notice verrebbero selezionati tutt i i level di mail tranne quelli a partire da notice: nel file di log, in questo caso, sa-rebbero dunque memorizzati solo i messaggi con priorità debug e info.
Nello stesso esempio si utilizza il carattere ; per indicare su una stessa riga due diversi selettori. I selettori vengono letti in successione: un selettore può quindi escludere quanto stabilito dai selettori precedenti. L'utilizzo canonico del carattere ; è appunto quello di riunire un selettore generico (mail. *) e uno di esclusione (mail. ! =notice), così da ricreare in una singola riga un costrutto del t ipo "tutt i i casi tranne uno o alcuni". Per raggruppare più facility nel medesimo selettore si usa invece ,. Una riga come quella seguente, per esempio, invierà al demone syslogd sulla macchina empedocie i messaggi di log di priorità info provenienti dalle facil i ty mail e news:
mail,news.=info @empedocle
Sulla macchina empedocie, quindi, per poter ricevere messaggi di log dal-l'esterno sarà necessario aprire il file /etc/default/syslogd e cambiare la riga:
S Y S L O G D = " "
in:
S Y S L O G D = " r "
Fatto questo, si dovrà riavviare ¡1 demone con il comando seguente:
sudo /etc/init.d/sysklogd restart
Il demone syslogd risponderà alle richieste dall'esterno mediante la porta 514 UDP. Per poter comunicare con i client che inviano messaggi di log, quindi, sarà necessario aprire la porta 514 UDP sul server che fornisce il servizio remoto syslogd. L'argomento sarà trattato nel Capitolo 6 di questo volume.
Ruotare i log con logrotate
I file di log sono di estrema utilità, ma rischiano di occupare un'enorme quantità di spazio su disco. Per tale ragione è consigliabile che vengano "ruotat i" a scadenze regolari, cioè progressivamente cancellati secondo direttive stabilite dall'amministratore di sistema.
g see "man logrotate" for details
# rotate log files weekly weekly
# keep 4 weeks worth of backlogs rotate 4
# create new (empty) log files after rotating old ones create
# uncomment this if you want your log files compressed #compress
# packages drop log rotation information into this directory include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp { missingok monthly
create 0664 root utmp rotate 1
} "/etc/logrotate.conf" 32L, 599C Cim
Figura 4.3 - La configurazione di logrotate è contenuta nel file /etc/logrotate.conf
Fra i pacchetti preinstallati in Ubuntu Server è presente logrotate, un potente strumento per la gestione dei log. Grazie a esso è possibile ruotare, cancellare e inviare per email i file di log. La configurazione del programma è contenuta nel file /etc/logrotate.conf: nell ' immagine nella pagina precedente (Figura 4.3) è possibile vedere parte del contenuto di default di questo file. In aggiunta a quanto presente in logrotate.conf, la directory /etc/logro-tate.d raccoglie i file di configurazione per singoli programmi o servizi: questa directory viene popolata da file creati in automatico durante l'in-stallazione dei pacchetti, ma può essere utilizzata anche dall'amministra-tore per inserire direttive di configurazione senza dover intervenire sul file centrale logrotate.conf. Nella Tabella 4.2 sono elencate le principali direttive riconosciute da lo-grotate.
Tabella 4.2 - Le dirett ive di logrotate. Direttiva Significato
com press 1 vecchi file di log vengono compressi. La direttiva con-
com press traria è nocompress
daily 1 file di log vengono ruotati giornalmente weekly 1 file di log vengono ruotati ogni settimana monthly 1 file di log vengono ruotati ogni mese
notifempty Se il file di log è vuoto non viene ruotato. La direttiva contraria è ifempty (default)
olddir x 1 vecchi file di log vengono spostati nella directory x
rotate x Prima di essere cancellati o inviati per email i file di log
rotate x vengono ruotati x volte
size=x Se le dimensioni del file di log sono maggiori di x il file
size=x viene ruotato
mail x Raggiunto il termine massimo di rotazioni, il file di log viene inviato via email all'indirizzo x
Nelle righe d'esempio che seguono viene riportato un file logrotate.conf minimale:
weekly rotate 3 compress
/var/log/dpkg.log { monthly rotate 12 notifempty
}
Le prime tre righe impostano una configurazione generale per tutti i file di log da gestire, mentre le righe successive stabiliscono le direttive da usare per il solo file /var/log/dpkg.log. Come si può vedere, per limitare il valore delle opzioni a un determinato file di log è sufficiente creare un blocco di direttive inserite tra parentesi graffe, dichiarando prima del blocco il nome stesso del file di log. In queste righe di esempio, dunque, per default i log vengono compressi (compress) e ruotati ogni settimana (weekiy). Dopo che stato state effettua-te tre rotazioni (rotate 3), un log viene eliminato. Per il file /var/log/dpkg. log, invece, i log vengono ruotati mensilmente (monthly) e per dodici volte (rotate 12), ma non se risultano vuoti (noifempty).
Processi periodici con cron Nelle pagine precedenti si è visto come logrotate possa essere utilizzato per far ruotare i log dal sistema in modo automatico. Logrotate non avvia alcun demone al boot della macchina: il programma viene semplicemente eseguito ogni giorno da uno script che lo richiama. Questa non è altro che un'operazione di scheduling effettuata tramite cron. Mediante cron, dunque, è possibile eseguire dei comandi secondo scadenze temporali prestabilite: si può decidere di cancellare una deter-minata directory ogni settimana alle 8:00, di controllare se un server è attivo ogni primo mercoledì del mese alle 17:30 e così via. La configurazione diretta di cron è piuttosto articolata e può risultare so-vradimensionata per le operazioni di scheduling più elementari. Nei pa-
ragrafi che seguono, quindi, si presenteranno prima gli strumenti per una gestione semplificata degli eventi da eseguire, poi si interverrà diretta-mente sulla configurazione di cron.
Scheduling semplificata
Ubuntu, così come altre diffuse distribuzioni Linux, fornisce delle directory mediante le quali è possibile programmare l'esecuzione via cron di co-mandi secondo scadenze rigide: ogni ora, ogni giorno, ogni settimana e ogni mese. Inserendo un file con i comandi da lanciare nella directory /etc/cron.hourly, quindi, le istruzioni in esso presenti verranno eseguite ogni ora. Per le ese-cuzioni giornaliere si utilizzerà la directory /etc/cron.daily, per quelle setti-manali /etc/cron.weekly e per quelle mensili, infine, /etc/cron.monthly. Se in un terminale si prova a leggere con is il contenuto di /etc/cron.daily (Figura 4.4), per esempio, si vedrà che tra i vari file presenti nella directory è indicato anche logrotate: è proprio grazie a questo file che il program-ma logrotate viene eseguito tutt i i giorni in modo automatico.
ale@pitagora:-$ Is -al /etc/cron.daily/ totale 72 drwxr-xr X 2 root root 4096 2008 09 22 12:43 drwxr-xr X 138 root root 12288 2008 09 22 12:43 -rwxr-xr X 1 root root 311 2007 03 05 07:38 -rwxr-xr X 1 root root 219 2008 04 18 17:58 -rwxr-xr X 1 root root 7441 2008 04 22 17:20 -rwxr-xr X 1 root root 314 2008 04 04 11:56 -rwxr-xr X 1 root root 502 2007 12 12 14:59 -rwxr-xr X 1 root root 71 2008 01 24 20:02
-rwxr-xr X 1 root root 89 2006 06 19 20:21 -rwxr-xr X 1 root root 954 2008 03 12 14:24 man db
-rwxr-xr X 1 root root 183 2008 03 08 19:22
-rwxr-xr X 1 root root 1154 2008 03 07 21:24 -rw-r--r - 1 root root 102 2008 04 08 20:02 .placeholder
-rwxr-xr X 1 root root 3295 2008 04 08 20:02 -rwx r-x r X 1 root root 1309 2007 11 23 10:06 ale@pitagora: i t
Figura 4,4 - Il contenuto della directory /etc/cron.daily.
Per esempio, per far cancellare ogni settimana il contenuto della directory /home/ale/ tmp sfruttando questa modalità di utilizzo semplificata di cron,
tut to ciò che bisogna fare è creare con l'editor un file di testo /etc/cron. weekly/localtmp e inserire in esso delle righe come le seguenti:
#!/bin/sh rm -r /home/ale/tmp
Poi si rende eseguibile lo script con il comando chmod +x, così:
sudo chmod +x /etc/cron.weekly/localtmp
Il file crontab principale
Spesso è necessario programmare delle esecuzioni di comandi adottando scadenze temporali più complesse di quelle trattate nel paragrafo prece-dente. In questi casi è necessario modificare o creare un file di crontab: si tratta dei file di configurazione di cron, dotati di una sintassi particolare che ora si andrà a descrivere.
Il file crontab principale è /etc/crontab e in esso è contenuta la confi-gurazione di sistema per cron, mentre la directory /etc/cron.d contiene specifici file di configurazione aggiuntivi installati dai singoli pacchetti. Nell ' immagine seguente (Figura 4.5) è possibile vedere le righe di cui è composto il file /etc/crontab di default su Ubuntu Server.
/etc/crontab: system-wide crontab |# Unlike any other crontab you don't have to run the 'crontab' |# command to install the new version when you edit this file |# and files in /etc/cron,d. These files also have username fields, l# that none of the other crontabs do,
|SHELL=/bin/sh |pftTH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|# m h dom mon dow user command ll7 * * * * root cd / && run-parts --report /etc/cron.hourly ¡25 6 * * * root test * u bin/ || cd / M , run p report /etc /cron.daily )
|47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc /cron.weekly !
¡52 6 1 * * root test x /usr/sbin/anacron || ( cd / && run-parts --report /etc| /cron.monthly )
"/etc/crontab" 17L, 724C 1,1 Tut
Figura 4.5 - Il file /etc/crontab installato per default su Ubuntu.
All'inizio di questo file sono presenti alcune righe di commento, che inizia-no con il carattere #. Quindi compaiono le righe seguenti:
SHELL=/bin/sh PATH=/usr/locai/sbin:/usr/locai/bin:/sbin:/bin:/usr/sbin:/usr/bin
In queste due righe viene dichiarato il valore che le variabili ambientali S H E L L e PATH devono assumere durante l'esecuzione dei comandi indicati nel file di configurazione. Nel caso si assegni un valore alla variabile M A I L -
TO, inoltre, tale valore indicherà l'utente a cui cron deve inviare i messaggi generati dai comandi quando questi vengono eseguiti. Dopo queste righe si elencano i diversi comandi da lanciare a scadenze regolari. La sintassi utilizzata in un file crontab per stabilirne l'esatta ese-cuzione è la seguente:
minuto ora giorno mese giorno_settimana utente comando
Una spiegazione dettagliata dei singoli campi è contenuta nella Tabella 4.3.
Tabella 4.3 - I campi per specificare un comando in crontab. Campo Significato
minuto Indica il minuto in cui eseguire il comando. Può assumere un valore fra 0 e 59
ora Indica l'ora. Può assumere un valore fra 0 e 23
giorno Indica il giorno del mese. Può assumere un valore fra 1 e 31
mese Indica il mese. Può assumere un valore fra 1 e 12 Indica il giorno della settimana. Può assumere un
giorno_settimana valore fra 0 e 7: per indicare la domenica è possi-bile usare il numero 0 o 7
utente Stabilisce quale utente deve eseguire il comando
utente indicato
comando Il comando da lanciare. Può contenere spazi e non va inserito tra virgolette
Nei cinque campi che definiscono l'orario di esecuzione è possibile uti-lizzare il carattere * per indicare tutti i valori possibili. Si può inoltre rap-
presentare una sequenza di valori unendo due numeri tramite il trattino -, mentre per indicare un insieme di valori non sequenziali questi vanno separati con il carattere ,. Per esempio, scrivendo 6-7 nel campo giorno si stabilirà che I giorni di esecuzione del comando saranno il sabato e la domenica. Scrivendo in-vece 1,4,5 nel campo mese il lancio del comando avverrà esclusivamente durante i mesi di gennaio, aprile e maggio. Nel caso di valori non sequenziali ma che seguano un intervallo prestabili-to è consentito l'utilizzo di / in aggiunta al carattere - come scorciatoia per l'inserimento dei valori. Ecco un esempio per il campo minuto:
0 - 6 0 / 1 5
Questa indicazione di valori significa "esegui il comando ogni quindici minuti" e corrisponde alla scrittura per esteso:
0 , 1 5 , 3 0 , 4 5 , 6 0
Ora è possibile decifrare facilmente il contenuto delle ultime righe del file /etc/crontab di default. La prima riga che imposta l'esecuzione di un comando è la seguente:
17 * * * * r0ot ed / && run-parts --report /etc/cron. hourly
In questa viene stabilito che al minuto 17 di ogni ora, in qualsiasi giorno, in qualunque mese e qualunque sia giorno della settimana, deve essere lanciato da root il c o m a n d o ed / && run-parts --report /etc/cron.hourly . Si tratta della riga che determina l'esecuzione degli script contenuti nella directory /etc/cron.hourly. Nelle righe successive, quindi, viene indicato a cron di eseguire quanto presente in /etc/cron.daily tutti i giorni alle ore 6:25, mentre alle 6:47 di domenica si legge il contenuto della directory /etc/cron.weekly. Infine, il primo giorno di ogni mese alle 6:52 si lanciano gli script raccolti in /etc/ cron.monthly. Queste quattro righe, dunque, costituiscono l'impalcatura sulla quale si regge la configurazione semplificata di cron utilizzata nel paragrafo pre-cedente.
Creare crantab personali
Il file /etc/crontab e i file contenuti nella directory /etc/cron.d possono essere manipolati esclusivamente dall 'utente root. Ai singoli utenti è data però la possibilità di gestire file crontab personali: questi vengono memo-rizzati nella directory /var/spool/cron/crontabs e possono essere creati e modificati tramite il comando crontab -e. Lanciando questo comando verrà aperto, con l'editor di default, il file di crontab dell 'utente attualmente attivo e sarà possibile aggiungere o cam-biare righe di configurazione seguendo la sintassi indicata in precedenza per il file /etc/crontab principale. L'unica differenza tra un file di crontab gestito da root e uno creato da un utente comune è l'assenza nel secondo del campo utente: il nome dell 'utente che deve lanciare i comandi, infatti, in questo caso coincide con il nome del file corrispondente in /var/spool/cron/crontabs (file ale, giovanni, mario e così via). Una volta lanciato il comando crontab -e apparirà una schermata simile a quella dell ' immagine seguente (Figura 4.6).
• i •• u n h « ^ M H m n n M i W - a i ' 1 ' H U W E i i E
# m h doni mon dow command
I
A questo punto è possibile assegnare specifici valori a delle variabili d'am-biente e inserire righe per l'esecuzione di comandi, come questa:
30 0 * * * $HOME/bin/dailycron
Nella riga si indica a cron di lanciare il comando $HOME/bin/dailycron tut-ti i giorni, alle ore 00:30. La variabile $HOME viene espansa nel percorso della home dell'utente che ha creato il file crontab corrente. Per memorizzare e rendere attivo il crontab, quindi, è sufficiente salvare il file e uscire dall'editor.
Per cambiare l'editor di default è possibile Impostare opportunamente
le variabili EDITOR o VISUAL in un file .profile personale o in quello di
sistema. Per esempio:
export EDITOR-vi
Oppure, si può scegliere l'editor di default lanciando il comando sudo
update-alternaiives --config editor e selezionando una delle voci
disponibili dall'elenco che appare.
L'amministrazione di un crontab avviene mediante il programma crontab stesso. Per visualizzare il contenuto di un crontab si esegue il comando crontab -ì, mentre crontab <fiie> elimina il file di crontab attuale del-l'utente e lo rimpiazza con il contenuto di <fiie>. Infine, crontab -r elimina un crontab. Quando il comando crontab viene eseguito dal superutente, questo può gestire direttamente i file crontab degli utenti normali tramite l'opzione aggiuntiva -u <utente>. Ecco un esempio che fa visualizzare nel terminale usato da root il crontab dell'utente mario:
crontab -u mario -1
5. Il server è in rete
GII strumenti E i file di configurazione
per inserire ii server io una rete locale.
Un computer adibito a server che non sia connesso ad alcuna rete locale è certo una macchina di scarsa utilità. La procedura di installazione di Ubuntu Server riconosce le schede di rete presenti su un PC e consente di configurarle con facilità. A volte, però, le impostazioni di rete al momento dell'installazione differiscono dall'effetti-va struttura di rete in cui deve inserirsi una macchina server e, del resto, gli strumenti semplificati presenti in un sistema di installazione difficilmente possono soddisfare tutte le esigenze. In questo capitolo si vedrà dunque come configurare fin nel minimo detta-glio le schede di rete presenti su un PC, utilizzando prevalentemente tool a linea di comando e intervenendo sui file di configurazione di sistema. Verrà spiegato come inserire la macchina sia all'interno di una rete cablata sia in una WLAN.
Le informazioni di base I dati sulla configurazione delle schede di rete sono contenuti nel file /etc/ network/interfaces. Ora che si conoscono le potenzialità e i comandi di base di Vim, è possibile aprire il file di configurazione con questo editor:
sudo vi /etc/network/interfaces
Il contenuto del file rispecchierà le impostazioni indicate durante l'instal-lazione del server. Per esempio, se si utilizza una sola interfaccia di rete e si richiede l'indirizzo IP tramite DHCP il file, dopo una serie di righe di commento introduttive, conterrà le righe seguenti:
# The loopback network interface auto lo iface lo inet loopback
# The primary network interface auto ethO iface ethO inet dhcp
Si tratta di due blocchi di righe, ognuno dei quali è dedicato a una diversa interfaccia di rete. La prima interfaccia è quella di loopback, un'interfaccia fittizia che iden-tifica la macchina locale: serve a poter mettere in comunicazione, in un computer, i programmi che utilizzano il protocollo TCP/IP quando non è disponibile alcuna effettiva connessione di rete. Se si installa un web server sulla propria macchina, per esempio, è proprio grazie all'indirizzo di loopback (127.0.0.1) che è possibile accedere in lo-cale alle pagine web indipendentemente dalla loro disponibilità in rete. L'interfaccia di loopback è fondamentale per il corretto funzionamento di una macchina ed è sconsigliabile eliminarla. La riga auto io stabilisce che io, cioè l'interfaccia di loopback, deve essere attivata automaticamente (auto) all'avvio del sistema. Nella riga successiva, quindi, viene configurata l'interfaccia tramite l'istru-zione iface. Questa ha la seguente sintassi: iface interfaccia tipo modalità interfaccia è il nome dell'interfaccia di rete da configurare. Nell'esempio si tratta di lo. Segue il tipo di indirizzo richiesto dall'interfaccia: inet per IPv4, inet6 per IPvó o ipx. Infine si indica la modalità di configurazione dell'interfaccia, che nella riga dell'esempio è loopback.
IPv6 è II successore di IPv4, il Protocollo Internet attualmente in uso. Consente di gestire un numero molto più alto di indirizzi rispetto al pre-decessore. IPX sta per Internetwork Packet Exchange ed è un protocollo di rete, ora in disuso, che veniva utilizzato nelle reti NetWare.
Nella Tabella 5.1 vengono elencate le principali modalità di configurazione che è possibile impiegare quando si utilizza inet come t ipo di indirizzo.
Tabella 5.1 - Le principali modal i tà di configurazione per inet.
I Modal i tà Signif icato loopback Definisce un'interfaccia di loopback
static Definisce una configurazione statica dell'interfac-cia, con gli indirizzi indicati direttamente
manual Il sistema non effettua alcuna configurazione del-
manual l'interfaccia
dhcp Per la configurazione dell'interfaccia viene contat-
dhcp tato un server DHCP
Le righe successive di /etc/network/interfaces configurano l'interfaccia di rete etho, cioè la prima scheda Ethernet sulla macchina. La riga iniziale auto etho attiva automaticamente l'interfaccia della scheda, mentre iface etho inet dhcp configura etho per richiedere l'IP a un server DHCP.
Configurare un indirizzo statico
La presenza di un server DHCP nella propria rete locale semplifica certo la gestione della LAN. L'assegnazione di IP dinamici può risultare però limi-tante. Impiegando indirizzi che possono mutare da una sessione all'altra, infatti, non è possibile né far aprire al firewall determinate porte su speci-fiche macchine, né riferirsi ai PC della rete indicandone direttamente l'IP.
In questi casi, le soluzioni che si possono adottare sono diverse. Se il pro-prio server DHCP lo consente, innanzitutto, è possibile fare in modo che questo assegni degli indirizzi statici a singoli MAC Address nella rete. In alternativa, si può far gestire al server DHCP un sottoinsieme degli indirizzi IP e assegnare manualmente il resto degli indirizzi. Una soluzione più radicale, infine, è quella di abbandonare le comodità offerte dai server DHCP e configurare manualmente le interfacce di rete di tutti i PC nella LAN (ma se la rete locale è di ampie dimensioni ciò può risultare poco pratico e inutilmente laborioso).
Nel caso di LAN domestica, il servizio di server DHCP viene fornito soli-
tamente dal router per la connessione ADSL. Per configurare il server
DHCP, quindi, è sufficiente accedere all'interfaccia web di gestione del
proprio router.
A meno di poter configurare il server DHCP in modo tale da abbinare un indirizzo fisso a un MAC Address, quindi, è necessario che a una o più macchine della rete il file /etc/network/interfaces assegni degli IP statici. Ecco come procedere. Prima di tutto si deve scrivere in /etc/network/in-terfaces una riga con la corretta istruzione iface, inserendo l'interfaccia di rete da configurare seguita da inet e dalla modalità statici
iface ethO inet static
Quindi si digitano le righe con le informazioni per configurare la scheda:
address 192.168.0.5 netmask 255.255.255.0 gateway 192.168.0.1
Come address si inserisce l'indirizzo IP che si vuole assegnare alla scheda, mentre la netmask indica l'indirizzo della maschera di rete adottata nella propria LAN. La riga gateway, infine, va inserita se la macchina è collegata a un dispositivo gateway (per esempio un router) e il valore da inserire non è altro che l'indirizzo IP del gateway stesso.
Prima di salvare il file e chiudere l'editor con il comando :Wq, se si desi-dera far attivare l'interfaccia di rete all'avvio della macchina è necessario inserire la riga auto etho (cambiando ethO con l'effettiva interfaccia della propria scheda di rete) prima del blocco di righe per la configurazione della scheda. Nell'immagine seguente (Figura 5.1) è possibile osservare il contenuto del file /etc/network/interfaces, completo di tutte le righe per l'attivazione e la configurazione di un indirizzo statico.
auto lo iface lo inet loopback
auto eth0 iface eth0 inet static ¡address 192.168.0.5 netmask 255.255.255.0 S]ateway 192.168.0.1
-
8,1 Tut
Figura 5.1 - Il file /eic/network/ìnterfaces Con le righe per configurare un'interfaccia dotata di IP statico.
Una volta inserite o modificate delle righe in /etc/network/interfaces, quin-di, per aggiornare la configurazione dell'interfaccia di rete nella sessione corrente basta eseguire sudo /etc/init .d/networking restart. Se la macchina cui si sta assegnando un indirizzo IP statico è connessa a Internet, poi, è necessario intervenire sul file /etc/resolv.conf per indicare i server DNS da utilizzare. Ecco un file /etc/resolv.conf di esempio, che indica al sistema di contattare i server DNS agli indirizzi 192.168.1.1 e 192.168.1.2:
nameserver 192.168.1.1 nameserver 192.168.1.2
Nel caso di utilizzo di un server DHCP per la configurazione di una scheda, invece, gli indirizzi DNS vengono richiesti direttamente al server DHCP e non è necessario indicarli nel file /etc/resolv.conf.
Assegnazione dei nomi di host
Associare nomi di host a indirizzi IP è di grande utilità in una rete locale, anche nel caso in cui questa sia di piccole dimensioni. Il modo più sempli-ce e diretto per assegnare dei nomi agli indirizzi IP della LAN è intervenire sul file di configurazione /etc/hosts. Ecco come appare il contenuto di un file /etc/hosts di default su Ubuntu Server:
127.0.0.1 localhost 127.0.1.1 pitagora
# The following lines are desirable for IPv6 capable hosts : : 1 ip6 -localhost feOO 0 ip6 -localnet ffOO 0 ip6 -mcastprefix f f 02 1 ip6 -allnodes f f 02 2 ip6 -allrouters f f 02 3 ip6 -allhosts
Ciascuna riga presenta un indirizzo IP e, a seguire, un nome per l'indirizzo e un alias opzionale. La prima riga stabilisce che all'indirizzo 127.0.0.1 (l'interfaccia di loopback) venga assegnato il nome localhost. La seconda riga, invece, è una pecu-liarità delle distribuzioni Debian e Ubuntu e associa all'indirizzo 127.0.1.1 il nome di host della macchina (nell'esempio, il nome è pitagora). Le righe successive del file /etc/hosts di default, invece, riguardano la gestione degli indirizzi IPv6. Se nella rete locale ufficio.lan uno degli host ha come indirizzo IP 192.168.0.5 e ha come nome eraclito, una riga appropriata in /etc/hosts sarebbe la seguente:
192.168.0.5 eraclito. ufficio, lan eraclito
In questa riga ¡1 nome di dominio completo è eraclito.ufficio.lan, mentre eraclito è un alias, in questo caso una scorciatoia per indicare rapidamente l'host. Ogni riferimento a eraclito.ufficio.lan oppure a eraclito, quindi, ver-rà tradotto nell'indirizzo IP 192.168.0.5. Nello stesso modo è poi possibile assegnare i nomi agli altri PC presenti nella LAN. Il nome dell'host per la macchina locale è stato indicato durante la procedu-ra di configurazione del sistema operativo. Se si lancia il comando hostname verrà mostrato in output il nome dell'host, per esempio eraclito. Lanciando hostname -f sarà visualizzato invece il FQDN (Fully Qualified Domain Name, cioè il nome di dominio completo), come eraclito.ufficio.lan. Nella configurazione di default di Ubuntu Server il FQDN non è impostato e l'output del comando hostname -f mostra il semplice nome di host. Se il nome di dominio abbinato alla scheda di rete è fisso e la rete locale stessa è sempre attiva, la prassi comune è quella di indicare come FQDN il nome dell'host seguito dal nome di dominio della LAN.
127.0.0.1 localhost 192.168.0.2 pitagora.home.lan Pitagora
# Le altre macchine nella LA[JJ 192.168.0.3 empedocle.home.lan empedocle 192.168.0.4 Parmenide.home,lan Parmenide 192.168.0.5 piatone,home.lan piatone
# The following lines are desirable for IPv6 capable hosts : 1
fe00 ff00 ff02 f f©2 ff02
ip6-localhost ip6-loopback 0 ip6-localnet
0 ip6-mcastprefix 1 ip6-allnodes
2 ip6-allrouters 3 ip6-allhosts
'/etc/hosts" 15L, 414C scritti 4,29 Tut
Figura 5.2 - Un file /etc/hosts completo, con le informazioni su tutte le macchine della LAN.
Il modo più semplice per inserire un FQDN nella configurazione di siste-ma, quindi, è intervenire sul file /etc/hosts. Si elimina la riga che inizia
per 127.0.1.1 e se ne inserisce una contenente l'indirizzo IP assegnato all'interfaccia di rete della macchina, il FQDN con il nome di dominio della LAN e il nome dell'host come alias. Nell ' immagine nella pagina precedente (Figura 5.2) viene presentato un file /etc/hosts completo, nel quale il FQDN indicato per la macchina lo-cale 192.168.0.2 è pitagora.ufficio.lan e in cui sono stati inseriti tutti gli indirizzi dei PC connessi in rete. Una volta conclusa la scrittura del file /etc/hosts sulla macchina locale, quindi, non rimane che copiare lo stesso file su tutt i i computer della LAN, in modo tale da consentire la traduzione dei nomi in indirizzi IP in tutte le macchine.
Amministrare la rete con ifconfig
Prima di giungere a una configurazione definitiva della propria LAN, e quindi delle schede di rete presenti sulle macchine locali, è spesso neces-sario sperimentare, apportando cambiamenti talvolta rilevanti alle impo-stazioni di rete. In tal caso è preferibile impartire comandi che intervenga-no direttamente sulla rete, invece di andare a modificare volta per volta file di configurazione di sistema come /etc/network/interfaces. Un importante comando per amministrare la rete è ifconfig. Lanciando il comando senza argomenti vengono mostrate informazioni dettagliate sul-le interfacce di rete attive, mentre se si esegue ifconfig -a l 'output visua-lizzato concerne tutte le interfacce disponibili, che siano attive o meno. Nell ' immagine seguente (Figura 5.3) è possibile vedere un output d'esem-pio del comando ifconfig. Ogni blocco di informazioni riguarda una spe-cifica interfaccia di rete. Il primo blocco in figura indica che l'interfaccia ethO è attiva nel sistema, ha il MAC Address (HWaddr) oo:of :bo :a7:8a:4e e l'indirizzo IP è 192.168.1.4, mentre il broadcast (Bcast) ha come indirizzo 192.168.1.255 e la maschera di rete (Mask) è 255.255.255.0.
L'indirizzo di broadcast consente di inviare pacchetti a tutte le macchine di una sottorete. In una struttura di rete elementare l'indirizzo di broa-dcast viene desunto dall'indirizzo di rete e dalla relativa netmask.
[ DigitaiLifeSiyie*pro
lSj?@pitagora:~$ ifconfig ethO Link encap:Ethernet HWaddr 00:0f:bO:a7:8a:4e
inet addr : 192.168.1.4 Bcast : 192.168.1.255 Mask : 255.255.255.0 inet6 addr: fe80::20f:bOff:fea7:8a4e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric: 1 RX packets:2664 errors:0 dropped:© overruns:© frame:0 TX packets:2977 errors:© dropped:© overruns:© carrier:© collisions:© txqueuelen:100© RX bytes:1409139 (1.3 MB) TX bytes:595©90 (581.1 KB) Interrupt:22 Base address:0x5000
ethl Link encap:Ethernet HWaddr 00:13:ce:c6:©5:53 inet6 addr: fe80: :213:ceff:fec6:553/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:150© Metric:1 RX packets:1320 errors:© dropped:© overruns:© frame:0 TX packets:3507 errors:© dropped:© overruns:© carrier:l collisions:© txqueuelen:100© RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:23 Memory:bc007000-bc©07fff
lo Link encap:Local Loopback inet addr:127.0,0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:!
Figura 5.3 - L'output del comando ifconfig mostra informazioni sulle interfacce attive nel sistema.
C o n ifconfig «interfaccia» ( p e r e s e m p i o ifconfig ethi), q u i n d i , v e n g o n o
m o s t r a t e i n f o r m a z i o n i su d i u n a s i n g o l a i n t e r f a c c i a .
Il c o m a n d o ifconfig p u ò e s s e r e u t i l i z z a t o a n c h e p e r m o d i f i c a r e le i m p o s t a -
z i o n i d i u n ' i n t e r f a c c i a d i r e t e . E c c o u n e s e m p i o :
sudo ifconfig ethO 192.168.0.5 netmask 255.255.255.0
C o n q u e s t o c o m a n d o , a l l ' i n t e r f a c c i a e t h O v i e n e a s s e g n a t o l ' i n d i r i z z o
1 9 2 . 1 6 8 . 0 . 5 c o n la c lass i ca m a s c h e r a d i r e t e 2 5 5 . 2 5 5 . 2 5 5 . 0 . È a n c h e p o s -
s i b i l e i n d i c a r e d i r e t t a m e n t e l ' i n d i r i z z o d i b r o a d c a s t t r a m i t e l ' o p z i o n e o m o -
n i m a d i ifconfig:
sudo ifconfig ethl 192.168.1.6 netmask 255.255.255.128 broadcast 192.168.1.127 up
In q u e s t o e s e m p i o , o l t r e a e s s e r e a s s e g n a t o l ' i n d i r i z z o d i b r o a d c a s t
1 9 2 . 1 6 8 . 1 . 1 2 7 , a p p a r e a n c h e l ' o p z i o n e f i n a l e up. Q u e s t a s e r v e a d a t t i v a r e
l ' i n t e r f a c c i a d i r e t e s p e c i f i c a t a . T u t t a v i a , se n e l l a l i n e a d i o p z i o n i d i ifconfig v i e n e a s s e g n a t o a l l ' i n t e r f a c c i a u n i n d i r i z z o IP, c o m e n e g l i u l t i m i e s e m p i
p rpsentati, allora l'interfaccia è attivata automaticamente e quindi l'ag-giunta dell 'opzione up non è necessaria.
Se è necessario memorizzare in /etc/network/interfaces l'indirizzo di broadcast di un'interfaccia di rete, tutto quello che bisogna fare è Inseri-re nel file, tra le righe di opzioni successive all'istruzione iface, una riga come la seguente: b r o a d c a s t 1 9 2 . 1 6 8 . 1 . 1 2 7
Con il comando ifconfig «interfaccia» up, dunque, si attiva l'interfaccia Indicata, mentre con ifconfig «interfaccia» down la si disattiva:
sudo ifconfig ethl up sudo ifconfig ethl down
Instradamento dei pacchetti
Un pacchetto, per raggiungere la propria destinazione, effettua un per-corso a volte semplice e lineare, a volte lungo e tortuoso. L'instradamento dei pacchetti viene chiamato routing e le informazioni sul percorso che i diversi pacchetti devono percorrere vengono inserite nelle cosiddette tabelle di routing. Per conoscere nel dettaglio le tabelle di routing di una macchina è pos-sibile usare il comando netstat con le opzioni -nr o -r. Nel primo caso vengono mostrati direttamente gli indirizzi numerici, nel secondo le infor-mazioni vengono indicate risolvendo i nomi.
Nell' immagine seguente (Figura 5.4) è visibile l 'output del comando netstat -nr eseguito su di una macchina con una configurazione di rete basilare. Il primo campo mostrato in ogni riga di percorsi (route) indica la destina-zione (Destination) cui si fa riferimento ed è solitamente un indirizzo di rete. Il secondo campo contiene il Gateway necessario per raggiungere la rete di destinazione, mentre il campo successivo, Genmask, mostra la maschera di rete di Destination. L'ultimo campo presente, infine, è iface e indica l'interfaccia di rete cui devono essere inviati i pacchetti che se-guono il percorso indicato.
|ale@pitagora:~$ netstat -nr Kernel IP routing table ¡Destination Gateway Genmask Flags MSS Window irtt Ifa 192.168,1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth' Ì169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth' Ì0.0.0.0 192,168.1,1 0.0.0,0 UG 0 0 0 eth' ;ale@pitagora:-$ |
Nell 'output di esempio sono presenti tre righe di route. Nella prima l'indirizzo di destinazione è 192.168.1.0 e il Gateway è indicato come 0.0.0.0: si tratta dalla rete locale, quindi non è necessario contattare alcun gateway per inoltrare i pacchetti. La seconda riga indica una route con destinazione 169.254.0.0 e, anche qui, Gateway 0.0.0.0. Si tratta semplicemente di un percorso creato dal servizio Avahi, nel caso esso risulti installato sul sistema.
Avahi è un'implementazione libera di Zeroconf, un protocollo che con-
sente dì creare una rete senza richiedere configurazioni da parte degli
utenti o la presenza di servizi come DNS e DHCP.
La terza e ultima riga, infine, presenta l'indirizzo di Gateway 192.168.1.1 e indica come destinazione 0.0.0.0. Questo è il gateway di default, che viene contattato per tutte le destinazioni che non rientrano nelle regole di routing precedenti. Il significato complessivo di queste tre semplici righe è dunque il seguen-te: i pacchetti destinati all'indirizzo di rete 192.168.1.0 sono diretti alla LAN, tutti gli altri devono uscire dalla rete locale e richiedono dunque l'intervento del gateway, raggiungibile all'indirizzo 192.168.1.1. Ovviamente, in reti anche di piccole dimensioni l'insieme delle tabelle di routing risulta inevitabilmente molto più complesso di quello indicato ma, ciononostante, le modalità di lettura dell 'output di netstat rimangono le medesime. Per modificare le tabelle di routing si usa il comando route.
Per aggiungere un percorso si fa seguire il comando dal parametro add, come in questo esempio:
sudo route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.5.1 ethl
Nella riga si indica 192.168.4.0 come destinazione della route. Dato che viene premesso il parametro -net, 192.168.4.0 è un indirizzo di rete; per inserire un indirizzo di host come destinazione, questo va preceduto dal parametro -host. La maschera di rete 255.255.255.0 viene dichiarata dopo netmask, quindi a gw segue l'indirizzo del gateway che va contattato per questo percor-so, 192.168.5.1. L'ultimo parametro indica l'interfaccia di rete da usare, in questo caso e th l . Nell 'esempio seguente, invece, viene stabilito che il gateway di default è 192.168.5.1 :
sudo route add default gw 192.168.5.1
Per eliminare il gateway di default basta quindi eseguire sudo route del default. Infine, per cancellare una determinata route si richiama il parame-tro dei seguito dall'indirizzo di destinazione presente nella route:
sudo route del 192.168.4.0
Rendere permanenti le modifiche
Le modifiche alla configurazione della rete effettuate con i comandi ifcon-fig e route scompaiono allo spegnimento della macchina. Per renderle definitive, quindi, è necessario mettere mano al file di configurazione / etc/n etwo rk/i n te rfa ces. La corrispondenza tra le opzioni disponibili con il comando ifconfig e le ri-ghe che è possibile inserire in /etc/network/interfaces è diretta. Per esem-pio, un comando come ifconfig ethO 192.168.0.5 netmask 255.255.255.0 si traduce nelle seguenti righe di configurazione:
iface ethO inet static address 192.168.0.5 netmask 255.255.255.0
Anche il comando per modificare il gateway di default ha una traduzione diretta nel file di configurazione. Per esempio, un comando come route
add default gw 192.168.0.9 diventa, Semplicemente, una riga gateway 192.168.0.9 in /etc/network/interfaces. Per aggiungere dei percorsi di routing, quindi, si inseriscono i comandi route necessari nel blocco di righe di /etc/network/interfaces relativo al-l'interfaccia di rete cui i comandi si riferiscono. Le righe di route si ripor-tano integralmente e vanno precedute dall'opzione up. Una riga come route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.4.2 ethl si inserisce quindi nel blocco dedicato a e th l . Ecco un esempio:
iface ethl inet static address 192.168.4.3 netmask 255.255.255.0 gateway 192.168.4.1 up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.4.2 ethl
L'opzione up esegue il comando indicato non appena l'interfaccia di rete viene attivata. L'opzione speculare è down, che lancia un determinato co-mando subito prima che l'interfaccia venga disattivata. Per eliminare la route indicata nell'esempio precedente quando viene chiusa l'interfaccia, si aggiunga la riga seguente:
down route del 192.168.5.0
Le reti Wi-Fi Le reti senza fili o WLAN forniscono una pratica e dutti le modalità di col-legamento per le macchine, di solito in aggiunta a una rete cablata. Dato che il funzionamento delle WLAN è basato sull'uso delle trasmissioni ra-dio, una rete senza fili diffonde i dati in transito su di essa nell 'ambiente circostante. Per proteggere le informazioni, dunque, è necessario adotta-re un solido protocollo di sicurezza che cripti i dati rendendoli il leggibili agli utenti non autorizzati. Il vecchio protocollo WEP (Wired Equivalent Privacy) ha notevoli falle di sicu-rezze che consentono a uno sconosciuto di ricavare facilmente e velocemen-te la chiave di cifratura utilizzata in una rete. Ottenuta la chiave WEP, l'intruso può avere accesso alla WLAN e agire indisturbato all'interno di essa. Nelle pagine che seguono, quindi, si offriranno le informazioni necessarie per creare una rete Wi-Fi protetta mediante i protocoll i WPA e WPA2 e per connettere a essa le varie macchine.
I protocolli WPA e WPA2 forniscono entrambi una protezione molto più sicu-ra rispetto a quella che può assicurare il protocollo WEP. Rispetto a quest'ul-timo, il WPA dispone di una chiave di cifratura di maggiori dimensioni e che viene modificata per ogni pacchetto trasmesso. Infine, il WPA2 si differenzia dal WPA per l'utilizzo del solidissimo algoritmo di cifratura AES.
L'Access Paint:
L'Access Point (AP) è il dispositivo che consente di collegare a una WLAN dei PC forniti di scheda Wi-Fi o qualsiasi altro dispositivo che permetta di accedere a una rete senza fili. In una rete casalinga è presente solitamente un solo Access Point, mentre in WLAN di maggiori dimensioni sono pre-senti più AP. Bisogna controllare che la banda gestibile dall'Access Point sia sufficiente per il numero di macchine da connettere alla rete: i dispositivi compatibil i con gli standard 802.11 a e 802.11 g forniscono una banda fisica di 54 Mbps, ma quella effettiva è di circa 20 Mbps. Nel caso ciò non fosse suffi-
b. il se rver è in re te
dente, è possibile utilizzare AP che utilizzino il nuovo protocollo 802.11n da 248 Mbps fisici e circa 70 Mbps effettivi. Se si possiede un vecchio Access Point 802.11b, comunque, questo può essere proficuamente impiegato per gestire piccole WLAN domestiche: gli 11 Mbps fisici del protocollo (4,5 Mbps reali), infatti, sono general-mente sufficienti per condividere una connessione a Internet ADSL e una stampante e per scambiare documenti di piccole dimensioni. Un AP può essere configurato per funzionare secondo diverse modalità. Nella modalità Access Point il dispositivo fa da tramite tra una rete cablata e i client Wi-Fi: si tratta della modalità di utilizzo più diffusa. Un AP, però, può anche avere la funzione di Bridge. Questa modalità con-sente di collegare due o più Access Point così da mettere in contatto più reti cablate. Infine, in modalità Repeater un AP non fa altro che ripetere il segnale Wi-Fi che riceve, in modo tale da estendere la copertura di una WLAN preesistente. Tipicamente, un Access Point va configurato per mezzo di un'interfaccia web. Nelle pagine di configurazione vanno quindi stabiliti l'ESSID, cioè il nome che identifica la WLAN e la modalità di fun-zionamento dell'AP: se si tratta dell'unico Access Point di cui si dispone, la modalità deve essere quindi Access Point.
Modifica Visualizza Cronologia Segnalibri Strumenti guida
t# - £ C3 # v http7/192.168.1 2/ìndex.a
. ?"... * v - i i i i - ¡ _ ; r <
J E P T R O N I C • ..IL, nbwttc CS4APk/ÌAccg<ì$ f'itir,
K ; : ; Basic Setting
flf ' Advanced ; Setting
'." f Security
MAC Filtering
Security This page allows you setup the wireless security. Turn on WEP or WPA by using Encryption Keys could prevent any unauthorized access to your wireless network.
| WPA pre-shared key : j
•WPA(TKIP) WPA2<AES) VVPA2
Figura 5.6 - L'interfaccia web perla configurazione di un Access Point Conceptronic C54APM.
Poi si indica il protocollo di sicurezza che la rete deve adottare. Per reti di piccole e medie dimensioni è possibile scegliere il protocollo WPA PSK (Pre-Shared Key), mentre per WLAN più estese è consigliabile utilizzare WPA o WPA2 con autenticazione tramite server RADIUS.
I protocolli WPA e WPA2 permettono di utilizzare due diverse modalità di
autenticazione, Pre-Shared Key e RADIUS. La prima è basata su di un'unica
passphrase, cioè una lunga sequenza di caratteri con cui si ha accesso alla
WLAN, condivisa da tutte le macchine che si connettono alla rete. RADIUS,
invece, è un protocollo che permette la gestione centralizzata degli acces-
si e richiede l'impiego di un server per effettuare le autenticazioni.
Adottando un'autenticazione PSK ci si deve sincerare che la passphrase prescelta non sia individuabile con facilità. Infatti, è possibile sferrare un attacco basato su dizionario contro una rete protetta tramite WPA PSK: per tale ragione, è consigliabile scegliere una passphrase lunga (possibil-mente di 20 caratteri o più) e formata da una sequenza casuale di lettere, numeri e segni d'interpunzione. Nelle pagine di configurazione dell'Access Point è solitamente possibile anche disattivare il broadcast dell'ESSID: si tratta di una pratica che occul-ta il nome della WLAN e, quindi, nasconde la presenza stessa della rete agli estranei. In realtà, una simile protezione è facilmente aggirabile utiliz-zando strumenti per la rilevazione e lo sniffing di reti Wi-Fi come Kismet. Un'altra pratica protettiva diffusa, anch'essa comunemente disponibile nella configurazione degli AP, è il MAC Address Filtering. Questa consiste nella creazione di una tabella con gli indirizzi MAC di tutte le macchine cui è consentito accedere alla WLAN. Anche in questo caso, però, si tratta di una protezione blanda, dato che è molto semplice modificare il MAC Address di una scheda di rete e, di rimando, impadronirsi di uno degli indirizzi cui l'accesso è permesso.
M 'I unii mi ii'lim (ni I f i le Modifica Visualizza Cronologia Segnalibri Strumenti Guida
- *'"" http .•7192.168.1.2/mdex asp
CONCEPTROHIC Coiiceptronic C64APM Access Paint
Advanced i Setting
M A C A d d r e s s F i l t e r i n g
» MAC Address Filtering Table It allows So entry 20 sets addi ess only.
Enable Wireless Access Control
MAC Address Comment:
I http://192.168.1.2/macfilterl.asp
Figura 5.7 - La configurazione del MAC Address Filtering nell'interfaccia dell'AP.
Configurare la scheda Wi-Fi
Una volta stabilite le corrette impostazioni per l'Access Point, è il momen-to di configurare la scheda Wi-Fi sulla macchina server. Come nel caso delle connessioni cablate, anche la configurazione del collegamento tra-mite Wi-Fi va inserita nel file /etc/network/interfaces. Un blocco di righe per collegare il PC alla WLAN può essere il seguente:
iface ethl inet dhcp wpa-ssid wireless wpa-psk 1234567890 wpa-driver wext
La prima riga contiene la consueta istruzione iface, necessaria per stabi-lire la modalità di configurazione dell'interfaccia indicata. In questo caso l'interfaccia e th l viene autoconfigurata per mezzo di un server DHCP. Le righe successive contengono istruzioni specifiche per le reti che adot-tano il protocollo WPA. L'istruzione wpa-ssid è seguita dall'ESSID della rete Wi-Fi cui ci si vuole collegare (wireless, nell'esempio). La passphrase, invece, va inserita dopo l'istruzione wpa-psk.
È possibile inserire direttamente i caratteri che costituiscono la passphrase (come nell'esempio) ma, per ragioni di sicurezza, è consigliabile inserire la passphrase in forma cifrata. Per cifrare la passphrase si usa il comando wpa_ passphrase, seguito dall'ESSID della rete e dalla passphrase in chiaro:
wpa_passphrase wireless 12345G7890
Come output si otterranno delle righe come le seguenti:
network={ ssid="wireless" #psk="1234567890" psk=ba7b5adc4 31c50916c8el64f4cf4be2ca3d3el7 02e9de2ce5 0 08f 2462e9bf7b4
}
La passphrase cifrata è contenuta nella seconda riga con psk= ed è una strin-ga esadecimale di 63 caratteri (nell'esempio si tratta di ba7b5adc ecc.). Nell'ultima riga del file /etc/network/interfaces si indica con wpa-driver il driver necessario per gestire il protocollo WPA. Se nel file di configurazio-ne non è presente alcuna riga con l'istruzione wpa-driver, viene utilizzato il driver generico wext, che dovrebbe consentire il corretto funzionamento del WPA su molte schede Wi-Fi. Nella Tabella 5.2 vengono elencati i principali driver disponibili per gesti-re il protocollo WPA. Se il driver wext non dovesse funzionare a dovere, si controlli il chipset presente sulla scheda di rete e si indichi poi il driver adatto tramite l'istruzione wpa-driver.
Tabella 5.2 - I principali driver per gestire il WPA. [ Driver Schede compatibi l i I
wext Driver generico madwifi Schede con chipset Atheros h osta p Schede con chipset Prism
Schede con chipset Intel Centrino ipw2100 ipw e ipw2200. Driver per kernel < 2.6.14; per i
kernel recenti il driver è wext atmel Schede con chipset ATMEL AT76C5XXx
Se si è scelto di disattivare il broadcast dell'ESSID, per connettersi a una rete con ESSID nascosto si devono aggiungere al blocco di righe per l'interfaccia di rete Wi-Fi in /etc/network/interfaces le righe seguenti: wpa-ap-scan 1 wpa-scan-ssid 1
Se il proprio Access Point è configurato per usare il protocollo di sicurezza WPA2 PSK, le righe da inserire in /etc/network/interfaces saranno:
iface ethl inet dhcp wpa-ssìd wireless wpa-psk 1234567890 wpa-driver wext wpa-proto RSN wpa-pairwise CCMP wpa-group CCMP wpa-key-mgmt WPA-PSK
Come si vede, rispetto all'esempio precedente si tratta semplicemente di aggiungere le quattro istruzioni finali wpa-proto, wpa-pairwise, wpa-group e wpa-key-mgmt con i valori appropriati per il WPA2.
Gestire l'interfaccia di rete Wi-Fi cnn iwconfig
Il comando iwconfig è il corrispettivo di ifconfig per le reti Wi-Fi e consente di mostrare informazioni su un'interfaccia di rete e modificare i parametri di funzionamento di questa. Eseguendo in un terminale iwconfig senza argomenti, verranno visualizzate informazioni dettagliate su tutte le interfacce wireless presenti nel sistema. Un esempio di output è mostrato nell ' immagine seguente (Figura 5.8). Per ogni interfaccia wireless attiva (nell'esempio è presente solo eth 1 ) ven-gono mostrati lo standard Wi-Fi utilizzato dalla scheda (IEEE 802.11 g), l'ESSID a cui questa è attualmente collegata (wireless-net), la modalità (Mode) di funzionamento della scheda (nell'esempio Managed), più altre informazioni come la frequenza impiegata, il MAC Address dell'Access Point, il Bit Rate e molto altro ancora.
a l e @ p i t a g o r a : i w c o n f i g lo no wireless extensions,
ethl IEEE 802.llg ESSID:"wireless-net"
Mode:Managed Frequency:2.462 GHz Access Point: O0:80:5A:47:0B:01 Bit Rate:54 Mb/s Tx-Power=20 dBm 5ensitivity=8/0 Retry limit:7 RTS thr:off Fragment thr:off Power Management:off Link Quality=94/100 Signal level=-25 dBm Noise level=-88 dBm Rx invalid nwid:0 Rx invalid crypt:87 Rx invalid frag:0 Tx excessive retries:© Invalid misc:0 Missed beacon:©
eth0 no wireless extensions,
ale@pitagora:~$ |
Figura 5.8 - L'output del comando iwconfig mostra informazioni su tu t te le interfacce wireless disponibili.
In tutte le configurazioni e negli esempi forniti in questo volume la modali-tà utilizzata è Managed, in quanto è necessaria per il collegamento di una scheda di rete a un Access Point. Le principali altre modalità disponibili sono Ad-Hoc, Master e Monitor. Ecco il loro significato:
• Ad-Hoc. In una configurazione in cui la WLAN è priva di Access Point, due o più schede di rete possono essere connesse diretta-mente tra loro impostando su queste la modalità Ad-Hoc;
• Master. La scheda di rete, in questa modalità, assume le funziona-lità di un Access Point;
• Monitor. Si tratta di una modalità "passiva", mediante la quale la scheda di rete può ascoltare tutto il traffico in transito sulla frequen-za in uso.
Lanciando iwconfig seguito da un'interfaccia di rete (per esempio iwconfig ethi) verranno mostrate informazioni su quest'unica interfaccia. Il coman-do iwconfig dispone anche di una serie di parametri che consentono di modificare le impostazioni di un'interfaccia di rete. Un elenco dei princi-pali parametri viene mostrato nella Tabella 5.3.
Tabella 5.3 - I parametr i principali del comando iwconf ig. Parametro Signif icato Esempio i
Cambia la modalità di fun-mode zionamento dell'interfac-
cia iwconfig ethO mode Ad-Hoc
channel Cambia il canale utilizzato iwconfig ethO channel 6
freq Stabilisce la frequenza per le comunicazioni
iwconfig e th l freq 2.422G
rate Imposta il bitrate di funzio-namento della scheda
iwconfig e th l rate 24M
essid Indica l'ESSID dell'Access Point cui ci si connette
iwconfig e th l essid wifi
Per rendere permanenti le modifiche alle impostazioni della scheda Wi-Fi si devono tradurre i parametri di iwconfig in righe del file di configurazione /etc/network/interfaces. Per fare questo, basta aggiungere al nome di un parametro il prefisso wireless-. Per esempio, la riga seguente:
sudo iwconfig ethO channel 6
diventa nel file di configurazione così:
wireless-channel 6
Attenzione. Se si utilizzano i protocoll i WPA e WPA2, le istruzioni con il pre-fisso wireless-, quando hanno istruzioni equivalenti con il prefisso wap-, vanno sostituite con queste ultime. Al posto di wireiess-essid, quindi, nel file /etc/network/interfaces va inserito wpa-ssid.
Conoscere le reti disponibili con iwlist
A volte si ha bisogno di avere informazioni dettagliate sugli Access Point raggiungibil i dall'interfaccia di rete. Questi dati si ottengono mediante il comando iwlist e il parametro scan. La sintassi da usare è iwlist <inter-faccia> scan, per esempio:
iwlist ethl scan
in output si otterrà l'elenco completo degli Access Point e delle schede impostate in modalità Ad-Hoc presenti nei paraggi. Per ogni dispositivo rinvenuto vengono indicati MAC Address, ESSID, protocolli compatibili, modalità impostata, sistema di cifratura e altro an-cora. Nell'immagine seguente (Figura 5.9) si mostra l'output di esempio per un Access Point.
48 Mb/s; 54 Mb/s Quality=35/lO0 Signal level=-79 dBm IE: WPA Version 1
Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK
Extra: Last beacon: 7424ms ago Cell 09 Address: 00:80:5A:47:0B:01
ESSID:"wireless-net" Protocol:IEEE 802.llbg Mode:Master Frequency:2.462 GHz (Channel 11) Encryption key:on Bit Rates: 1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s
Quality=99/100 Signal level=-21 dBm IE: WPA Version 1
Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK
Extra: Last beacon: 44ms ago
ale@pitagora:-$
Figura 5.9 - Con iwlist è possibile avere informazioni dettagliate sugli AP e le schede Ad-Hoc nelle vicinanze.
Il comando iwlist dispone di altri parametri utili. Con channel vengono mostrati tutti i canali e le frequenze disponibili. Eseguendo iwlist ethi channel, per esempio, sarà visualizzato un output simile al seguente:
ethl 11 channels in total; available frequencies : Channel 01 2 412 GHz Channel 02 2 417 GHz Channel 03 2 422 GHz Channel 04 2 427 GHz Channel 05 2 432 GHz Channel 06 2 437 GHz Channel 07 2 442 GHz Channel 08 2 447 GHz
Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.4S2 GHz Current Channel=0
Ulteriori parametri interessanti del comando iwlist sono rate, che mo-stra i bitrate supportati dalla scheda di rete, e keys che, invece, elenca le dimensioni supportate per le chiavi di cifratura e visualizza le chiavi attualmente in uso. In questo secondo caso, per ottenere le informazioni è necessario eseguire iwlist da root, così:
sudo iwlist ethl keys
Gli strumenti di controllo Ora che le fondamenta della rete locale sono state poste, è necessario co-noscere alcuni degli strumenti indispensabili per controllare il corretto fun-zionamento della LAN o WLAN. In questa breve sezione del capitolo, quin-di, Si Scopriranno sintassi e Utilizzo dei comandi ping, traceroute e netstat.
Il comanda ping
Un comando semplice ma estremamente utile per individuare problemi in una rete è ping. Tecnicamente, il comando invia un pacchetto ICMP ECHO_REQUEST a un host e attende un pacchetto di risposta da questo. Se l'host risponde significa che è attivo e funzionante.
Attenzione. Un host inattivo senz'altro non risponderà al ping. Ma ciò accadrà anche se un host attivo è posto sotto un firewall che blocca i pacchetti ICMP ECHO_REQUEST.
Lanciando ping seguito dal nome dell 'host o dal suo indirizzo IP vengono inviati pacchetti ICMP ECHO_REQUEST finché non si preme Ctr l+C sulla tastiera. Per poter inviare un numero limitato di pacchetti si deve usare l'opzione -c: il comando ping -c 5 ìocaihost, dunque, effettuerà 5 ping sull'interfaccia di loopback.
Ecco un output d'esempio del comando ping 192.168.1.4:
PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data. 64 bytes from 192.168.1.4: icmp_seq=l ttl=64 time=0.038 ms 64 bytes from 192.168.1.4: icmp_seq=2 ttl=64 time=0.039 ms 64 bytes from 192.168.1.4: icmp_seq=3 ttl=64 time=0.042 ms 64 bytes from 192.168.1.4: icmp_seq=4 ttl=64 time=0.043 ms 64 bytes from 192.168.1.4: icmp_seq=5 ttl=64 time=0.042 ms
192.168.1.4 ping statistics 5 packets transmitted, 5 received, 0% packet loss, time 3999ms rtt min/avg/max/mdev = 0.038/0.040/0.043/0.008 ms
Ogni riga di ping mostra l'IP dell'host, il numero di sequenza ICMP (icmp_seq=) e, quindi, il tempo richiesto dal pacchetto per andare e tornare (time=). In una situazione ideale non sono presenti salti tra un numero di sequenza ICMP e quelli nelle righe adiacenti: la serie deve essere infatti icmp_seq=i, icmp_seq=2, icmp_seq=3 e così via. In caso contrario, si sono persi dei pac-chetti e tale rilevazione può costituire l'inizio di un'analisi più approfondita della rete: in una rete in stato ottimale, infatti, il numero di pacchetti persi dovrebbe essere esiguo. Il tempo richiesto dai pacchetti per viaggiare dovrebbe risultare omoge-neo, con minime differenze non significative. Se i valori indicati si disco-stano vistosamente dalla norma, invece, ciò significa che le prestazioni nel segmento di rete in esame hanno subito un decadimento e si può procedere con ulteriori analisi. Per avere un'idea, pur approssimativa, dello stato complessivo della rete è consigliabile lanciare dei comandi ping scegliendo un host via via sempre più distante. Si inizia controllando con ping locaihost che il protocollo TCP/ IP sia perfettamente funzionante, quindi si effettua un ping sull'indirizzo IP della macchina nella LAN, poi si passa al gateway predefinito e così via.
Traceraute per tracciare i pacchetti
Il comando traceroute mostra il percorso effettuato da un pacchetto per arrivare a destinazione. Una volta installato il programma con sudo apt-get instali traceroute, per lanciare traceroute è sufficiente inserire come argomento l'indirizzo IP o l'hostname di destinazione:
traceroute www.ubuntu.com
Nell'immagine seguente (Figura 5.10) è possibile seguire parte della stra-da percorsa per giungere a www.ubuntu.com. Ogni riga di output rappre-senta un hop, cioè un salto effettuato dal pacchetto, che passa di gateway in gateway fino ad arrivare a destinazione.
a l e @ p i t a g o r a : t r a c e r o u t e www.ubuntu.com traceroute to www.ubuntu.com (91.189,94.250), 30 hops max, 40 byte packets 1 192.168.1.1(192.168.1.1) 1.127 ms 1.744 ms 2.410 ms 2 netl28-119.mclink.it (195.110.128.119) 47.644 ms 51,902 ms 54,828 ms 3 net84-253-128-001,mclink.it (84.253,128.1) 57.979 ms 64,892 ms 65.486 ms 4 89-97-241-241.ipl9.fastwebnet.it (89.97.241.241) 67.261 ms 69.688 ms 72.1
22 ms 5 81-208-53-197.ip.fastwebnet.it (81.208.53.197) 75.325 ms 78.233 ms 81.635 ms 6 89.96.200.61 (89.96.200.61) 93.937 ms 57.505 ms 57.311 ms 7 89.96.200.61 (89,96.200.61) 60.251 ms 62.603 ms 65.776 ms 8 ge-6-17.car2.Milanl.Level3.net (213.242.65,133) 68.817 ms 71.470 ms 74.40
4 ms 9 * * ae-4-4.ebr2.Frankfurtl.Level3.net (4.69.133.138) 98.885 ms
10 ae-2.ebrl.Dusseldorfl.Level3.net (4.69.132.137) 105.019 ms 105.657 ms 106 .093 ms 11 ae-l-100.ebr2.Dusseldorfl.Level3.net (4.69.132.130) 107.849 ms 110.615 ms 123.621 ms
12 ae-2.ebrl.Amsterdaml.Level3.net (4.69.133.89) 75.773 ms 76.714 ms 73.740 ms 13 ae-l-100.ebr2.Amsterdaml.Level3.net (4.69.133.86) 88.169 ms 88.888 ms 89. 316 ms 14 ae-2.ebr2.Londonl.Level3.net (4.69.132.133) 94.044 ms 108.965 ms 109.498 ms
Figura 5.10 - L'output di traceroute con i diversi gateway attraversati per giungere a destinazione.
Per ciascun hop, quindi, vengono individuati i tempi di percorrenza mo-strando tre differenti rilevazioni. Nell'esempio, il primo gateway che il pac-chetto incontra nel tragitto è il router ADSL (192.168.1.1), che è il default gateway nella LAN. I tempi di percorrenza sono quindi molto brevi. Negli hop successivi si esce dalla LAN e si entra in Internet, con l'inevitabile allungamento dei tempi che questo comporta. Una volta individuate delle anomalie nel funzionamento di una rete con ping, quindi, è proprio grazie a traceroute che è possibile cercare di in-dividuare i gateway che ostacolano il passaggio dei pacchetti, per poi verificarne la corretta configurazione.
Informazioni sulla rete con netstat
In precedenza si è visto come visualizzare le tabelle di routing mediante netstat. In realtà, con questo comando è possibile ottenere un elenco delle connessioni in corso, mostrare statistiche di rete e altro ancora. Il comando netstat -nat mostra una lista contenente le porte TCP in ascolto e quelle in cui la connessione è attiva. Nella configurazione di default di Ubuntu Server non ci sono porte in ascolto, quindi l 'output del programma non produce righe informative. Se si installa il server di stam-pa CUPS, invece, netstat -nat produce la seguente riga di output:
top 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
Nella riga in esame il server CUPS risponde ( L I S T E N ) sulla porta 631 di localhost ( 1 2 7 . 0 . O . I : 6 3 I ) . In caso di connessione attiva, al posto di L I S T E N
sarebbe presente la dicitura ESTABL ISHED.
Per visualizzare anche le porte UDP si aggiunge l'opzione -u: il comando precedente diventa quindi netstat -natu. Eliminando l'opzione -n, inve-ce, al posto degli indirizzi numerici verranno mostrati quelli simbolici. Infine, eseguendo netstat -s vengono mostrate delle statistiche di rete ripartite per protocollo: IP, ICMP, TCP e UDP. Ecco uno stralcio delle stati-stiche riguardanti il protocollo IP:
i p :
99202 total packets received 38 with invalid addresses 0 forwarded 0 incoming packets discarded 96796 incoming packets delivered
Le informazioni fornite dal comando possono risultare utili, per esempio, per controllare la quantità di traffico generato su di una specifica macchi-na della rete.
E. Configurazione avanzata della rete
C r e a r e le r e g a l e p e r il firewall, a t t i v a r e l'IP
IVIcisquerading e p r o t e g g e r e i servizi.
Nei capitoli che seguono verranno affrontati argomenti via via più com-plessi e anche l'utilizzo della rete locale diverrà sempre più articolato: ai client si forniranno servizi di fondamentale importanza e anche la rete sarà inevitabilmente più estesa ed esposta. Tutto ciò richiede l'adozione di strumenti di gestione e protezione avanzati.
Il firewall Il firewall è uno strumento di importanza centrale per la messa in sicurezza di una rete: si tratta di un dispositivo hardware o di un applicativo software che controlla il traffico in entrata e in un uscita e che consente di eliminare i pacchetti indesiderati mediante l'applicazione di regole. In Linux il componente che gestisce le funzionalità di firewall si chiama Netfilter ed è incluso nel kernel. L'amministratore di sistema può utilizzare il programma iptabies per controllare direttamente Netfilter, oppure può affidarsi a un'interfaccia di gestione semplificata.
Firewall semplice con ufw
Su Ubuntu Server viene installato per default ufw (che sta per uncomplica-ted firewall), un'interfaccia per iptables di facile utilizzo. Nella configura-zione preimpostata ufw non è però abilitato e bisogna dunque attivarlo con il comando seguente:
sudo ufw enable
A questo punto il firewall è attivato e sarà caricato nei successivi riavvii della macchina. Ora non rimane che aggiungere al firewall delle regole opportu-ne: per orientarsi tra le opzioni disponibili in ufw si veda la Tabella 6.1.
Tabella 6.1 - Le opzioni interne del programma ufw. Opzione Signif icato enable Attiva il firewall disable Disattiva il firewall
allow Crea una regola per consentire il traffico di determi-nati pacchetti
deny Crea una regola per fermare il traffico di determinati pacchetti
delete Elimina una regola creata in precedenza Imposta il funzionamento di default del firewall. Con
default default allow si apre in partenza tut to il traffico, con default deny si blocca in partenza tutto il traffico
logging if
Con logging on attiva la creazione dei log, con log-ging off disattiva la creazione dei log
status Mostra lo stato del firewall con le regole attive
La prima operazione da compiere è stabilire se si vuole partire da una con-figurazione di base del firewall in cui tut to è aperto o da una in cui tut to è chiuso: nel primo caso si esegue sudo ufw default aiiow, nel secondo sudo ufw default deny. È prassi comune chiudere inizialmente tutte le porte e poi impostare alcune regole per aprire singoli servizi. Determinata l' impostazione iniziale per il firewall, la costruzione delle re-gole è molto facile grazie ai comandi interni allow e deny di ufw.
Ecco un esempio che apre la porta 25, per qualsiasi host di origine e di destinazione:
sudo ufw allow 2 5
Tutto qui! E quindi possibile specificare il protocollo (sudo ufw allow 25/tcp) oppure utilizzare una sintassi più articolata per la creazione della regola:
sudo ufw allow proto tcp from 192.168.1.4 to any port 22
Con questo comando si consente il traffico TCP (proto tcp) sulla porta 22 da 192.168.1.4 a qualsiasi altro indirizzo (to any). Per chiudere il traffico su una porta si segue la medesima sintassi inserendo semplicemente deny al posto di allow. È possibile, inoltre, indicare nelle regole un servizio anzi-ché un numero di porta (per esempio, sudo ufw deny smtp). La corrispon-denza tra porte e servizi è indicata nel file /etc/services. Per cancellare una regola del firewall, quindi, basta inserire il comando interno delete tra ufw e la regola stessa. Se la regola da eliminare è al-low 25, dunque, il comando completo da eseguire per cancellarla sarà il seguente:
sudo ufw delete allow 25
Le regole inserite saranno poi correttamente caricate durante i successivi avvii della macchina. L'ordine con cui si creano le regole è importante: tra due regole, infatti, ha la precedenza quella inserita per prima. Per questa ragione si devono creare inizialmente le regole più specifiche e poi quelle generiche. Per esempio, per consentire il traffico sulla porta 25 bloccando però i soli pacchetti provenienti da 192.168.1.4 si devono creare le due regole in questa precisa sequenza:
sudo ufw deny proto tcp from 192.168.1.4 to any port 25 sudo ufw allow 25
Configurazione diretta di iptables
Il programma ufw risulta inevitabilmente insufficiente quando si devono gestire configurazioni per il firewall di una minima complessità. In questi casi è necessario dialogare direttamente con iptabies.
Le regole che è possibile creare con questo software sono organizzate in "catene" e le catene stesse vengono inserite all'interno di opportune tabelle, ognuna delle quali è adibita a uno scopo differente. Ecco quali sono le tabelle messe a disposizione da iptables:
• Tabella filter. È la tabella cui ci si riferisce per default quando si aggiungono regole a una catena di iptables. Si occupa di filtra-re i pacchetti nella rete e presenta tre catene: INPUT, OUTPUT e FORWARD. La catena INPUT riguarda i pacchetti che arrivano al sistema locale, mentre le regole in OUTPUT controllano i pacchetti in partenza dal sistema. La catena FORWARD, infine, instrada pac-chetti giunti dall'esterno verso un'altra rete;
• Tabella nat. Questa tabella gestisce la regole per il NAT (Network Address Translation): si tratta della procedura mediante la quale si riscrive l'indirizzo IP di un pacchetto. Il NAT viene utilizzato sovente per tradurre più indirizzi IP di una rete locale in un unico indirizzo IP valido per Internet (tecnica chiamata IP Masquerading);
• Tabella mangle. Questa tabella permette di alterare gli header dei pacchetti. È generalmente poco usata.
Quando un determinato pacchetto trova corrispondenza con una regola di una catena, viene compiuta un'azione prestabilita (target) sul pacchetto stesso. Le azioni possibili per la fondamentale tabella filter sono elencate nella Tabella 6.2.
Tabella 6.2 - Le azioni della tabella filter. Azione Significato
ACCEPT Il pacchetto verrà accettato. DROP Il pacchetto verrà scartato.
REJECT Il pacchetto verrà scartato e sarà inviato un pacchetto di errore IDCMP
QUEUE Fa gestire il pacchetto a un programma estemo RETURN Fa terminare una catena creata dall'utente
LOG Quando il pacchetto è ricevuto vi è una segnalazione nei log
ULOG Come l'azione LOG ma più flessibile REDIRECT Manda il pacchetto a un proxy , . , D n n n Inverte gli IP di origine e di destinazione e trasmette M 1 K K U K
nuovamente il pacchetto
Presentate le tre tabelle e i target per la tabella predefinita, è il momento di entrare nel vivo della configurazione del firewall. Si può iniziare richiedendo informazioni dettagliate a iptables. Con il co-mando iptabies -L, quindi, è possibile ottenere una "fotografia" dello stato attuale del firewall: all'inizio le tre catene (chain) INPUT, FORWARD e OUTPUT sono vuote, come è possibile vedere dall'immagine seguente (Figura 6.1).
Per default vengono mostrate informazioni sulla tabella filter, ma utilizzan-do l'opzione - t è possibile indicare una specifica tabella per l'operazione da compiere in iptables. Per visualizzare il contenuto delle catene nella tabella nat, quindi, si richiamerebbe il programma così:
sudo iptables -t nat -L
Nel caso fossero presenti, all ' interno delle catene, delle regole preceden-ti, si può procedere alla cancellazione di queste usando il comando inter-no di iptables -F:
sudo iptables -F
Questo comando può essere seguito dal nome della catena da ripulire. Se non si fornisce alcun parametro a -F verranno cancellate le regole di tutte le catene della tabella predefinita. A questo punto è consigliabile adottare come politica iniziale del firewall il blocco preventivo di qualsiasi pacchetto proveniente dall'esterno, per poi decidere caso per caso le singole eccezioni. Si imposta tale politica di sicurezza con i due comandi che seguono:
sudo iptables -P INPUT DROP sudo iptables -P F0RWARD DROP
Il comando interno -p di iptables permette di stabilire il comportamento di default (policy) per una determinata catena. La prima riga fornita elimi-na tutti i pacchetti in entrata (catena INPUT), mentre la seconda ferma tutt i i pacchetti diretti verso un'altra rete (catena FORWARD). Ora bisogna indicare i pacchetti che si vogl iono autorizzare. Lo si fa co-struendo delle regole per iptables che, a determinate condizioni, richiami-no il target ACCEPT su una catena. Ecco alcuni esempi:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A FORWARD -i ethl -p ANY -j ACCEPT sudo iptables -A INPUT -i lo -j ACCEPT
Il comando interno -A di iptables consente di aggiungere una regola alla fine di una catena. La prima riga aggiunge (-A) alla catena INPUT della tabella filter (predefinita) la regola seguente: se arriva un pacchetto con protocollo TCP (-p tcp) sulla porta di destinazione 22 (--dport 22) bisogna farlo passare ( - j ACCEPT) .
La riga successiva fa passare sulla catena FORWARD tutti i pacchetti provenienti dall'interfaccia e th l (-i ethi), qualunque sia il protocollo (-p ANY). La terza riga, infine, permette l'accesso ai pacchetti sull'interfaccia di loopback(-i io).
Grazie a queste tre righe, quindi, vengono accettate connessioni dal-l'esterno al server SSH (porta 22) sul computer, si consente ai pacchetti che arrivano dalla seconda scheda Ethernet (ethl) di raggiungere un'altra rete e si permette il traffico interno nella macchina. Nella Tabella 6.3 vengono presentati i principali parametri di iptables utili per costruire regole per il firewall.
Tabella 6.3 - I parametri di iptables per costruire regole. 1 Parametro Significato Esempio
-s Indica l'origine del pacchetto -s 192.168.0.2
Indica la destinazione del pac-- d 127.0.0.1 -a
chetto - d 127.0.0.1
--sport Specifica la porta di origine del pacchetto
--sport 22
--dport Specifica la porta di destinazio-ne del pacchetto
--dport 25
-i Il pacchetto proviene da una determinata interfaccia
-i ethO
-o Il pacchetto viene inviato a una determinata interfaccia
-o pppO
-P Controlla il t ipo di protocollo (TCP, UDP, ICMP)
-p tcp
--icmp-
type Controlla il t ipo di ICMP - icmp- type echo-request
Il protocollo ICMP (Internet Control Message Protocol) consente alle macchine in rete di inviare e ricevere informazioni di vario genere. All'interno di un messaggio ICMP il "tipo" è un valore numerico che specifica il significato del messaggio trasmesso. L'elenco completo dei valori ammessi per il tipo si può leggere su http://www.ietf.org/rfc/ rfc1700.txt.
| valori indicati per questi parametri possono essere preceduti dal carattere !. In tal caso il senso dell'espressione viene invertito: per esempio, -i ! etho stabilisce che, per essere vera la regola, l'interfaccia non deve essere ethO. I parametri -se -d accettano come valori singoli indirizzi IP e indirizzi con net-mask, anche nella notazione CIDR. Per esempio, scrivendo 192.168.3.0/255 .255.255.0 o 192.168.3.0/24 si indicheranno tutti gli indirizzi 192.168.3.X. Per rappresentare una sequenza di porte nei parametri --sport e --dport si usa il carattere :. Inserendo in una riga --sport 21:80, dunque, si pren-deranno in considerazione le porte di origine dalla 21 alla 80.
La notazione CIDR (Classless Inter-Domain Routing) consente di indicare in modo sintetico una maschera di rete. Questa viene espressa mediante un semplice numero, che corrisponde al numero di bit rappresentanti la parte di indirizzo che si riferisce alla rete.
Una regola sicuramente utile in un firewall è quella che consente di accet-tare solo quei pacchetti provenienti dall'esterno che rispondono a delle connessioni avviate dalla rete interna. Ecco il comando completo di ipta-bles per ottenere questo:
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Questa riga richiede una spiegazione aggiuntiva. Tramite l'opzione -m state e il successivo parametro --state viene controllato lo stato della connessione di un pacchetto, che può essere NEW, ESTABLISHED, RELA-TED e INVALID. Un pacchetto è NEW quando genera una nuova connes-sione, ESTABLISHED quando è inserito in una connessione già in atto e RELATED quando avvia una connessione ma è legato a una connessione esistente. Infine, lo stato di un pacchetto è INVALID quando non è risulta-ta possibile la sua identificazione. Nella riga presentata, quindi, viene verificato per la catena INPUT lo stato di ogni singolo pacchetto e, se questo risulta RELATED o ESTABLISHED, viene fatto passare.
IP Masquerading
Mediante iptables si può attivare l'IP Masquerading su una rete. In que-sto modo è possibile condividere una connessione Internet, per la quale viene fornito un unico IP pubblico, con le diverse macchine presenti nella LAN: il server su cui è attivo il firewall sarà fisicamente connesso a Internet e costituirà il tramite fra la rete locale e la rete pubblica. La prima operazione da compiere è abilitare sul server il packet forwar-ding: ciò consentirà di far passare i pacchetti da una rete a un'altra. Per ottenere questo va aperto da root con un editor il file /etc/sysctl.conf, quindi va decommentata la riga:
#net.ipv4.ip_forward=l
che diventa, quindi, così:
net.ipv4.ip_forward=l
# Comment the next two lines to disable Spoof protection (reverse-path filter) # Turn on Source Address Verification in all interfaces to # prevent some spoofing attacks net,ipv4,conf.default.rp_filter=l net.ipv4.conf.all.rp_filter=l
# Uncomment the next line to enable TCP/IP SYN cookies
# This disables TCP Window Scaling (http://lkml.org/lkml/2008/2/5/167)
#net.ipv4.t cp_syncookies=l
# Uncomment the next line to enable packet forwarding for IPv4
# Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.ip_forward=l
# Additional settings - these settings can improve the network # security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through # redirection. Some network environments, however, require that these -- VISUALE LINEA -- 3 8 49%
Figura 6.2 - Decommentando una riga in /etc/sysctl.conf si abilita il packet forwarding su IPv4.
Per attivare il packet forward ing anche per il p ro toco l lo IPvó la riga da decommenta re è #net.ipv6.ip_forward=i. Poi si aggiorna la conf igurazione dei parametr i del kernel nella sessione corrente con il comando sudo syscti -p. Qu ind i , non r imane che att ivare l'IP Masquerading con la seguente riga di iptables:
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ethl -j MASQUERADE
La tabel la su cui si interviene è quel la di nat (-t nat) e la catena è PO-STROUTING. Att raverso i parametr i successivi si pe rmet te ai pacchett i provenient i dalla rete 192.168.1.0/24 (-s 192.168.1.0/24) e che vanno inviati all ' interfaccia di rete col legata a Internet, e t h l ( - 0 ethi), d i essere "mascherat i " e di assumere l'IP pubb l i co forn i to dal provider Internet. Dato che nel paragrafo precedente si sono bloccati tu t t i i pacchett i nella catena FORWARD (sudo iptables -P FORWARD DROP), nel caso di att ivazione dell ' IP Masquerading è necessario che i pacchett i "mascherat i " possano raggiungere la rete pubbl ica. Per fare ciò si deve intervenire sulla catena FORWARD, come in questa riga di esempio:
sudo iptables -A FORWARD -s 192.168.1.0/24 -o ethl -j ACCEPT
Qui si consente ai pacchett i provenient i dalla LAN (-s 192.168.1.0/24) di arrivare a Internet mediante l ' interfaccia di rete e t h l ( - 0 ethi). Per accet-tare il t raff ico in risposta ai pacchett i inviati verso Internet si può quind i inserire una regola del genere:
sudo iptables -A FORWARD -d 192.168.1.0/24 -m state RELATED,ESTABLISHED -i ethl -j ACCEPT
Mettere in salvo le regale del firewall
Le regole stabilite richiamando iptables mediante la linea di comando sono valide f ino allo spegnimento della macchina. Al successivo riavvio, infatti, si scoprirà con amarezza che le regole costruite con tante fatica... sono sparite! Per memorizzare su disco la conf igurazione del f irewall si usa il comando iptabies-save contenuto nel pacchet to iptables. Una volta create le rego-le necessarie per iptables, si esegue iptabies-save in questo modo :
sudo sh -c "iptabies-save > /etc/iptables.rules"
Il file /etc/iptables.rules adesso conterrà tutte le informazioni sulla confi-gurazione attuale del firewall. Tramite il comando iptabies-restore, quin-di, si potrà leggere questo file e ripristinare le regole di iptables memo-rizzate in esso:
sudo iptabies-restore < /etc/iptables.rules
Il modo più semplice per far leggere il file /etc/iptables.rules direttamente all'avvio della macchina è inserire nel file /etc/rc.local una riga che ese-gua iptabies-restore < /etc/iptabies-restore. Tale riga deve precedere l'istruzione ex i t o al termine del file, come nell'immagine seguente (Fi-gura 6.3).
#!/bin/sh -e #
# rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution
# bits. #
# By default this script does nothing,
iptabies-restore /etc/iptables.rules
exit 0
13,0-1 Tut
Figura 6.3 - Il file /etc/rc.local dopo che è stata inserita la riga per ripristinare la configu-razione del firewall.
Questo metodo, però, richiede che in caso di modifiche alle regole del firewall si esegua iptabies-save prima di spegnere la macchina. Per automatizzare la procedura di salvataggio e ripristino delle regole si può quindi richiamare l'esecuzione di iptabies-save e iptabies-restore in /etc/network/interfaces, facendo lanciare il primo comando prima che
venga attivata un'interfaccia di rete (opzione pre-up) e il secondo dopo che questa è stata disattivata (opzione post-down). Una volta che si è individuato in /etc/network/interfaces il blocco di righe relative all'interfaccia di rete utilizzata (per esempio ethO), si inseriscano prima della fine del blocco le due righe seguenti:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save -c > /etc/iptables.rules
Il file /etc/network/interfaces risultante sarà simile a quello visibile in Fi-gura 6.4.
auto lo mmmm • • • H i
iface lo inet loopback
auto ethO iface ethO inet static
address 192.168.1.4 netmask 255.255.255.0 pre-up iptables-restore < /etc/iptables.rules post-down iptables-save -c > /etc/iptables.rules
"/etc/network/interfaces" 9L, 210C scritti 3, ©-i Tut
Figura 6.4 - Il file /etc/network/interfaces con le righe per ripristinare e del firewall.
salvare le regole
Proteggere i servizi In un sistema ben protetto il firewall dovrebbe costituire solo uno degli strumenti adottati per aumentare la sicurezza di una macchina o di un'in-tera rete. Nei paragrafi seguenti, quindi, verranno presentati file e software aggiun-tivi per il controllo degli accessi ai servizi forniti su un server. Si comincerà
facendo la conoscenza dei file di sistema /etc/hosts.allow e /etc/hosts, deny e si procederà poi con l'installazi one e la configurazione di xinetd, un demone che ha lo specifico compito di gestire i servizi.
I file hosts.allow e hosts.deny
Se si prova ad aprire i due file /etc/hosts.allow e /etc/hosts.deny si sco-pre che questi contengono una lunga serie di righe di commento: nella configurazione di default risultano quindi essere file vuoti. Aggiungendo apposite righe in questi file, dunque, è possibile stabilire quali indirizzi possano avere accesso ai servizi forniti dalla macchina.
Jte/hosts.deny: list of hosts that are not See the manual pages hosts__
<ample: ALL: some,host,name, .some.domain ALL EXCEPT in.fingerd: other.host.
allowed to access the syste ccess(S) and hosts options(5
.other,domain
If you're going to protect the portmapper use the name "portmap" for the daemon name. Remember that you can only use the keyword "ALL" and IP addresses (NOT host or domain names) for the portmapper, as well as for rpc.mountd (the NFS mount daemon), See portmap(8) and rpc.mountd(8) for further information.
The PARANOID wildcard matches any host whose name does not match its address.
# You may wish to enable this to ensure any programs that don't # validate looked up host names still leave understandable logs. In past # versions of Debian this has been the default, # ALL: PARANOID
Nel file /etc/hosts.allow si elencano gli host cui è concessa la connessione ai servizi, mentre in /etc/hosts.deny si indicano gli host cui essa è negata. Come nel caso della configurazione delle regole per il firewall, è consiglia-bile adottare una politica iniziale restrittiva e chiudere i servizi a tutti. Nel file /etc/hosts.deny si inserisca quindi questa semplice riga:
A L L : A L L
Ogni riga di hosts.deny e hosts.allow è composta da una coppia servizio : client. In questo caso l'accesso a tutti i servizi (primo ALL) viene negato a tutti i client che tentano la connessione (secondo ALL). Nel file /etc/hosts.allow, quindi, si stabilisca quali servizi aprire e a quali speci-fici indirizzi. Ecco alcuni esempi di righe di configurazione per hosts.allow:
ALL : 12 7.0.0.1 sshd : 192.168.1.5 leafnode : 192.168.2.* EXCEPT 192.168.2.15
Nella prima riga si aprono tutti i servizi all'indirizzo IP del loopback device, mentre la seconda riga consente l'accesso al server SSH esclusivamente a 192.168.1.5. L'ultimo esempio è leggermente più complesso: è permessa la connessione al news server leafnode a tutti gli indirizzi 192.168.2.x tran-ne (EXCEPT) che al singolo indirizzo IP 192.168.2.15. Non tutti i servizi, ma solo quelli che utilizzano il wrapper TCP, seguono le direttive presenti nei file hosts.allow e hosts.deny.
Il wrapper TCP è il sistema che controlla gli accessi ai servizi mediante i file hosts.allow e hosts.deny. Il wrapper TCP viene richiamato tramite un super-server come inetd o xinetd oppure facendo caricare all'eseguibile del servizio da gestire l'apposita libreria libwrap.
Per scoprire se un servizio legge effettivamente i due file di configurazione si esegua il comando seguente, inserendo a posto di servizio il percorso completo del servizio da controllare (per esempio /usr/sbin/sshd):
ldd servizio | grep libwrap
Se appare una riga di output come
libwrap.so.0 => /lib/libwrap.so.0 (0xb7f5e000)
significa che il servizio carica la libreria del wrapper TCP (libwrap) e quindi consulta i file hosts.allow e hosts.deny.
Se questo metodo di verifica fallisce nonostante l'eseguibile richiami effettivamente il wrapper TCP si può utilizzare un comando alternativo come questo:
s t r i n g s s e r v i z i o | g r e p a c c e s s
Se fra le righe di output compare hosts_access il servizio indicato legge i due file per il controllo degli accessi.
ale@pitagora:-$ strings /usr/sbin/sshd | grep access hosts access
userauth hostbased: access allowed by auth rhosts2 It is recommended that your private key files are NOT accessible by others. ale@pitagora:~$ |
Figura 6.6 - Nell'output di strings servizio / grep access appare hosts.access. Il servizio, quindi, legge hosts.allow e hosts.deny.
Il super-server xinetd
Un demone viene comunemente attivato al boot della macchina e risulta così sempre disponibile, anche quando dalla rete non giungono richieste per il relativo servizio. Installando un super-server, invece, è possibile av-viare un demone solo nel momento in cui il servizio che questo fornisce viene effettivamente contattato.
Il super-server x inetd è una versione potenziata del vecchio inetd. Nella release presente nei repository di Ubuntu Server 8.04 xinetd legge anche il file di configurazione di inetd (/etc/inetd.conf): ciò può risultare utile nel caso si stesse migrando una macchina da una vecchia versione di Linux, in cui è stato installato e configurato inetd, a Ubuntu.
Si è scritto nel paragrafo precedente che il wrapperTCP viene richiamato anche da un super-server. Nel caso di xinetd, dato che questo fornisce un proprio sistema di controllo degli accessi ai servizi, quando arriverà dalla rete una richiesta per un determinato servizio verrà prima letto e interpre-tato il contenuto dei file /etc/hosts.allow e /etc/hosts.deny e solo succes-sivamente, se al client verrà concesso l'accesso, si consulterà la configura-zione di xinetd relativa alla gestione delle connessioni. Il pacchetto di xinetd non è presente nella dotazione di default di Ubuntu Server. Va quindi installato con il comando seguente:
s u d o a p t - g e t i n s t a l i x i n e t d
Il file di configurazione principale di xinetd è /etc/xinetd.conf, ma ven-gono letti dal super-server anche i file presenti all'interno della directory /etc/xinetd.d: in questa sono raccolti i file di configurazione di default per i singoli demoni. Tali file vengono creati in automatico durante l'installa-zione dei relativi pacchetti.
§ default: off
# description: An RFC 868 time server. This protocol provides a # site-independent, machine readable date and time, The Time service sends back # to the originating source the time in seconds since midnight on January first # 1900,
# This is the tcp version. service time {
disable yes type = INTERNAL id -• time-stream
socket type = stream protocol = tcp user = root wait = no
} # This is the udp version.
service time {
disable yes type = INTERNAL id time-dgram
•time' 28L, 72/>:: l,l Cim
Figura 6.7-11 contenuto del file time, uno dei file di configurazione di default presenti in /etc/xinetd.d.
La struttura di xinetd.conf e dei file in /etc/xinetd.d è la medesima. Per configurare un servizio si crea un blocco di righe che inizia con service <servizio> e in cui le righe contenenti le opzioni di configurazione sono racchiuse tra parentesi graffe. Ecco un esempio:
service ftp { server user socket_type wait
= /usr/sbin/proftpd = root = stream = no
log__on_success = HOST PID log_on_failure = HOST RECORD only_from = 192.168.1.0/24
In questo blocco di righe si definiscono i parametri del servizio FTP (ser-vice ftp). Questo servizio viene fornito dal demone proftpd (server = /usr/sbin/proftpd) e l'utente che esegue il processo è root (user = root). Il socket è di t ipo stream (socket^type = stream), dato che si tratta di un servizio TCP, e la riga wait = no indica che il super-server deve continuare a rispondere a nuove richieste una volta che il servizio è stato avviato. Le due righe successive iog_on_success e iog_on_failure, quindi, impo-stano la gestione dei log per il singolo servizio, mentre la riga finale stabi-lisce che l'accesso al server FTP è concesso solo alle macchine della rete 192.168.1.0/24 (only_from = 192.168.1.0/24). Nella Tabella 6.4 vengono elencate le principali opzioni disponibili per la configurazione di xinetd.
Tabella 6.4 - Le opzioni per conf igurare x inetd.
I Opzione Signif icato
s e r v e r L'eseguibile del demone da avviare quando si richiede il servizio
user L'utente che deve avviare il demone Determina se dopo aver avviato il demone bisogna ac-
wait cettare nuove richieste. Se il servizio è multi-threaded il valore è no, se è single-threaded il valore è yes
Opzione Signif icato Il t ipo di socket. Può essere stream, dgram, raw o se-
socket_type qpacket. Si sceglie stream per i servizi TCP e dgram per i servizi UDP
Indica l'indirizzo dell interfaccia di rete su cui va reso bind
disponibile il servizio Il numero massimo di server che possono essere attivi
instances
simultaneamente per un servizio Il primo argomento indica il numero massimo di con-nessioni per secondo. Il secondo argomento indica i cps
secondi da attendere prima di ripristinare il servizio quando si supera il numero massimo di connessioni
Gli ultimi ritocchi per xinetd
In un sistema che fornisce servizi ad altre macchine in rete, un'accorta politica di gestione dei log è fondamentale. Il super-server xinetd, quindi, fornisce due parametri di configurazione da utilizzare allo scopo, iog_on_ success e log_on_failure.
Il primo controlla quali informazioni devono comparire nei log quando la connessione a un servizio avviene con successo. I principali valori che è possibile inserire per questo parametro sono PID (mostra nei log il PID del processo del server), HOST (mostra l'indirizzo dei client connessi al server), USERID (mostra l'user id dell 'utente remoto) e DURATION (mostra la durata dell'accesso). Il parametro iog_on_faiiure, invece, gestisce i log per tutte le connessioni fallite. I valori che può assumere questo parametro sono HOST, USERID e ATTEMPT (rivela nei log che è avvenuto un tentativo fallito di connessio-ne). L'ultimo valore è implicito se si indicano gli altri.
Stabilito cosa si vuole inserire nei log, si ha la possibilità di determinare dove questi vadano memorizzati. Tramite l'opzione iog_tyPe si può sce-gliere se sfruttare il classico gestore di log sysiog (valore SYSLOG per l'op-zione) o salvare i log direttamente su un file (valore F I L E ) .
Nel caso si indichi come valore SYSLOG, si deve aggiungere la faciIity di syslog desiderata (authpriv, daemon, mail e così via) e opzionalmente il livello del log (alert, err, info ecc.). Se non viene indicato alcun livello si assume per default il livello info. Ecco un esempio:
log_type = SYSLOG auth_priv
Il valore F I L E del parametro iog_type, invece, richiede l'inserimento ag-giuntivo del percorso completo del file che deve contenere i log. La riga seguente presenta un esempio per il valore F I L E :
log_type = FILE /var/log/xinetd.log
Nella configurazione di xinetd è possibile indicare dei valori predefiniti per alcuni parametri: questi saranno validi per tutti i servizi che non spe-cificano ulteriori valori per i medesimi parametri. Per fare ciò si crea un particolare blocco di configurazione che inizia con la riga defauits:
Il blocco defauits si inserisce nel file /etc/xinetd.conf (Figura 6.8). In que-sto modo, il file di configurazione principale conterrà i soli parametri ge-nerici, mentre la configurazione dei singoli servizi sarà demandata ai file posti nella directory /etc/xinetd.d. Per controllare tramite hosts.allow e hosts.deny gli accessi a un servizio gestito da xinetd si fa riferimento al parametro server, inserito nella con-figurazione del servizio.
defaults
cps instances log_on_success log_on_faiIure log_type
= 30 60
= 50
= HOST P I D = HOST = SYSLOG authpriv
# Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/
cps = 30 60 instances = 50 log on success a HOST PID log on failure = HOST log type = SYSLQG authpriv
> includedir /etc/xinetd.d
13,0-1 Tut
Figura 6.8 - Il file /etc/xinetd.conf con la sezione defaults per impostare f parametri predefiniti per i servìzi.
Per esempio, se in un fi le di conf igurazione di x inetd il b locco di righe per il service ftp Contiene server = /usr/sbin/proftpd, in Un ipotet ico file hosts.allow, per riferirsi a tale servizio, si utilizzerà proftpd, come nella lìnea seguente:
proftpd: 192.168.1.*
Nel caso non fosse presente alcun parametro server nella conf igurazione
di un servizio, in hosts.al low e hosts.deny ci si riferirà a questo r ichiaman-
do il nome indicato nella riga service della conf igurazione di x inetd rela-
tiva al servizio stesso.
r " " :
7. Amministrare da remoto
Gestire a distanza una macchina con un
semplice terminale, via w e b o mediante
u n a c o m p l e t a i n t e r f a c c i a g r a f i c a .
Spesso non si ha accesso diretto a una macchina server. Magari perché il luogo fisico in cui questa si trova dista decine o centinaia di chilometri o magari perché, semplicemente, non è previsto che si abbia accesso al computer. In questi casi l'amministrazione della macchina avviene da remoto, con gli strumenti che si reputano più idonei: uno spartano ma efficiente termina-le, un'interfaccia web o un vero e proprio client grafico. In questo capitolo, dunque, viene presentata una panoramica delle prin-cipali applicazioni disponibili per gestire comodamente un computer a distanza.
Un terminale remoto Gestire una macchina remota mediante un semplice terminale può risul-tare la soluzione ideale in molte circostanze: l'occupazione di banda è irrisoria, gli strumenti da adottare sono di facile configurazione e le opera-zioni di intervento sulla macchina, una volta presa confidenza con i diversi programmi a linea di comando, possono risultare estremamente rapide.
Un semplice strumento per l 'amministrazione remota è il classico Tel-net. Purtroppo, si tratta di un sistema client-server scarsamente sicuro: basti pensare al fat to che le password inserite al login passano in chiaro nella rete. Al posto di Telnet è fortemente consigliabile utilizzare SSH ( s e c u r e sheii),
un protocollo con il relativo software che consente il col legamento a una macchina remota mediante connessione criptata.
ale@pitagora:~$ ssh 192.168.1.4 The authenticity of host '192.168.1.4 (192.168.1.4)1 can't be established. RSA key fingerprint is 46:9f:Od:12:b7:a8:73:89:dd:84:5f:8a:cf:40:db:al. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.4' (RSA) to the list of known hosts. ale@192.168.1.4's password:
Linux pitagora 2.6.24-19-generic #1 SMP Fri Jul 11 23:41:49 UTC 2008 i686
The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/ Last login: Sat Aug 2 08:56:31 2008 ale@pitagora: |
Figura 7.7 - SSH consente di amministrare una macchina da remoto in piena sicurezza.
Teoria di funzionamento di §5H
Il sistema di autenticazione del protocollo SSH è basato sull'uso della co-siddetta crittografia asimmetrica. Si tratta di una forma di cifratura che adotta una coppia di chiavi per il proprio funzionamento, una chiave pri-vata e una pubblica: la chiave privata è presente sulla sola macchina locale ed è conosciuta esclusivamente dall 'utente che gestisce questa macchina, mentre la chiave pubblica viene consegnata a tutt i coloro con i quali la macchina deve entrare in contatto e può essere diffusa in piena libertà.
In un sistema di crittografia asimmetrica è la corrispondenza tra chiave privata e chiave pubblica a permettere la comunicazione tra sistemi e lo scambio di dati cifrati. In termini generali, infatti, un'informazione criptata con una chiave pub-blica può essere decriptata solo da colui che abbia accesso alla rispetti-va chiave privata, mentre un'informazione criptata con una chiave privata può essere decodificata da tutt i coloro che possiedano la relativa chiave pubblica. Quindi, l 'operazione di cifratura tramite chiave pubblica permette di na-scondere un'informazione e rivelarla a un unico destinatario. Cifrare me-diante chiave privata, invece, consente di inviare un'informazione con un "attestato di paternità": infatti, tutt i coloro che hanno accesso alla chiave pubblica di riferimento possono controllare l'effettiva corrispondenza con la chiave privata impiegata durante la procedura di cifratura. La doppia chiave impiegata della crittografia asimmetrica, dunque, è il meccanismo mediante il quale ci si accerta di essersi effettivamente con-nessi a uno specifico server SSH ed è anche il meccanismo grazie al quale ci si può collegare a un server SSH in modo sicuro, senza l ' impiego di password.
SSH sul lato server
SSH è un sistema client-server. Dunque, bisogna installare un'applicazione server sul PC che va amministrato da remoto (la macchina server) e delle applicazioni client su tutti i PC (le macchine client) dai quali si desidera gestire il computer remoto. Innanzitutto, quindi, è necessario allestire opportunamente il PC da am-ministrare. Su questo computer, nel caso non si fosse scelto di includere OpenSSH server durante l'installazione iniziale del sistema operativo, bi-sogna installare manualmente il pacchetto openssh-server con il comando sudo apt-get instali openssh-server.
L'installazione del pacchetto comporterà la creazione della coppia di chia-vi SSH per la macchina server e l'attivazione del demone sshd al boot della macchina. A questo punto il server SSH è in funzione e non rimane che configurare i PC che avranno la funzione di client.
ale@pitagora:-$ sudo apt-get install openssh-server Lettura della lista dei pacchetti in corso... Fatto Generazione dell'albero delle dipendenze in corso Lettura delle informazioni di stato... Fatto Pacchetti suggeriti:
molly-guard rssh I seguenti pacchetti NUOVI (NEW) saranno installati:
openssh-server O aggiornati, 1 installati, 0 da rimuovere e 0 non aggiornati. È necessario prendere QB/254kB di archivi. Iff Dopo questa operazione verranno occupati 676kB di spazio su disco. Preconfigurazione dei pacchett i in corso Selezionato i l pacchetto openssh-server, che non lo era. (Lettura del database ... 172938 file e directory attualmente installati.) Spacchetto openssh-server (da .../openssh-server_l%3a4.7pl-8ubuntul.2_i386.deb) f|
Configuro openssh-server (1:4.7pl-8ubuntul.2) ... Creating SSH2 RSA key; this may take some time . . , Creating SSH2 DSA key; this may take some time . . . * Restarting QpenBSD Secure Shell server sshd [ OK ]
;iale@pitagora:~$ §
Con f i gu raz i one dei clienti SSH
Su una d i s t r i b u z i o n e D e b i a n o d e r i v a t e , c o m e U b u n t u , il c l i e n t O p e n S S H
è c o n t e n u t o ne l p a c c h e t t o o p e n s s h - c l i e n t . Su U b u n t u e U b u n t u Server ,
c o m u n q u e , il p a c c h e t t o v i e n e i n s t a l l a t o p e r d e f a u l t .
Tutte le pr inc ipal i d is t r ibuzioni fo rn iscono pacchet t i p recompi la t i de l
c l ient OpenSSH. Nel caso si vogl ia p rocedere alla compi laz ione del
p rog ramma, la pagina w e b da cui part i re per scaricare i sorgent i è h t t p : / /
www.openssh .com/ . Un va l ido c l ient SSH per W i n d o w s è invece Putty
(h t tp : / /www.ch ia rk .g reenend .o rg .uk /~sg ta tham/pu t t y / ) .
Una v o l t a c h e sul PC d a a m m i n i s t r a r e d a r e m o t o è s t a t o i n s t a l l a t o O p e n S -
SH s e r v e r e su u n a m a c c h i n a è p r e s e n t e O p e n S S H c l i e n t , l a n c i a n d o su
q u e s t ' u l t i m a il c o m a n d o ssh s e g u i t o d a l l ' i n d i r i z z o d e l s e r v e r ve r rà avv i a t a
u n a c o n n e s s i o n e SSH c i f ra ta v e r s o q u e s t ' u l t i m o .
E c c o u n e s e m p i o :
ssh 192.168 .1.4
La p r i m a v o l t a c h e si e f f e t t u e r à il c o l l e g a m e n t o a u n s e r v e r SSH sarà m o -
s t r a t o in o u t p u t il " f i n g e r p r i n t " d e l s i s t e m a r e m o t o e v e r r à c h i e s t o a l l ' u t e n -
t e d i c o n f e r m a r e l ' a u t e n t i c i t à d e l server . U n f i n g e r p r i n t n o n è a l t r o c h e
la v e r s i o n e r i d o t t a d i una c h i a v e p u b b l i c a e v i e n e u s a t o p e r r e n d e r e p i ù
p r a t i c a la c o m u n i c a z i o n e d i u n a c h i a v e e p e r la ve r i f i ca d i q u e s t a .
Per c o n o s c e r e il f i n g e r p r i n t d i un s e r v e r SSH si d e v e e s e g u i r e il c o m a n -
d o s s h - k e y g e n -if su l la s tessa m a c c h i n a server . Il c o m a n d o va l a n c i a t o
f a c e n d o l o s e g u i r e d a l p e r c o r s o d e l f i l e sul s e r v e r c h e c o n t i e n e la c h i a v e
p u b b l i c a d e l s i s t e m a . Se v i e n e i m p i e g a t o l ' a l g o r i t m o d i c i f r a t u r a RSA (al
m o m e n t o d e l l a p r i m a c o n n e s s i o n e la sc r i t t a c h e a p p a r e è " R S A k e y f i n g e r -
p r i n t is " ) , il c o m a n d o d a e s e g u i r e è:
s s h - k e y g e n -lf / e t c / s s h / s s h _ h o s t _ r s a _ k e y . p u b
N e l c a s o , i n v e c e , d i u t i l i zzo d e l l ' a l g o r i t m o D S A il c o m a n d o d i v e n t a il se-
g u e n t e :
s s h - k e y g e n -lf / e t c / s s h / s s h _ h o s t _ d s a _ k e y . p u b
Per rag ion i d i sicurezza è sconsig l iabi le esegui re il c o m a n d o ssh-key-
gen -lf d a / e m o t o . Un m e t o d o sicuro per conoscere il f i ngerpr in t d i un
sistema è lanciare il c o m a n d o d i re t t amen te da l server. Un altro m e t o d o
cons ig l ia to è que l lo di farsi comunicare il f i ngerp r in t da l l 'ammin is t ra tore
de l server stesso.
D o p o a v e r c o n t r o l l a t o c h e il f i n g e r p r i n t m o s t r a t o d a ssh c o r r i s p o n d a e f -
f e t t i v a m e n t e a q u e l l o a p p a r t e n e n t e al s e r v e r a u t e n t i c o , si d i g i t a yes su l la
t a s t i e r a e si p r e m e I n v i o .
A q u e s t o p u n t o si i nse r i sce la p a s s w o r d d e l l ' u t e n t e i m p o s t a t a su l la m a c -
c h i n a s e r v e r e si o t t i e n e cos ì l ' a c c e s s o al s i s t e m a .
ale@pitagora:-$ ssh-keygen -If /etc/ssh/ssh_host_rsa_key.pub 2048 ee:f4:05:16:19:d5:27:cf: 21:24:b6:al : 92: 31:82:81 /etc/ssh/ssh host_rsa_key.p ub ale@pitagora:--$ |
Figura 7.3 - Con ssh-keygen -If si visualizza il fingerprint corrispondente alla chiave pubblica di un sistema.
Il c o m a n d o ssh, p e r d e f a u l t , e f f e t t u a l ' a c c e s s o al la m a c c h i n a r e m o t a t r a -
m i t e l ' u t e n t e a t t i v o al m o m e n t o su l la m a c c h i n a c l i e n t : se a l anc i a re ssh è
l ' u t e n t e m a r i o , si r i c h i e d e r à l ' a c c e s s o sul la m a c c h i n a s e r v e r c o m e m a r i o .
Per f a re il l o g i n r e m o t o c o n u n u t e n t e d i v e r s o si p r e m e t t a a l l ' i n d i r i z z o d e l
s e r v e r il n o m e d e l l ' u t e n t e s e g u i t o d a c o m e n e l l ' e s e m p i o s e g u e n t e :
ssh t e s t @ 1 9 2 . 1 6 8 . 0 . 7
C o n q u e s t o c o m a n d o si a c c e d e t r a m i t e SSH a l l ' a c c o u n t d e l l ' u t e n t e t e s t
su l la m a c c h i n a c o n i n d i r i z z o 1 9 2 . 1 6 8 . 0 . 7 . U n a v o l t a e n t r a t i n e l s i s t e m a , è
p o s s i b i l e e s e g u i r e i p r o g r a m m i n e c e s s a r i p e r a m m i n i s t r a r e la m a c c h i n a
p r o p r i o c o m e se ci si t r o v a s s e d a v a n t i a l la t a s t i e r a d e l c o m p u t e r r e m o t o .
Accesso senza password
S f r u t t a n d o le g r a n d i p o t e n z i a l i t à d i u n s i s t e m a d i a u t e n t i c a z i o n e a d o p p i a
c h i a v e è p o s s i b i l e a v e r e a c c e s s o a u n a m a c c h i n a r e m o t a senza d o v e r i nse -
rire la p a s s w o r d d i u n u t e n t e .
Per q u e s t o b i s o g n a i n n a n z i t u t t o g e n e r a r e su u n PC c l i e n t u n a c o p p i a d i
ch iav i p e r s o n a l i . In u n t e r m i n a l e , q u i n d i , si d i g i t i il c o m a n d o ssh-keygen.
Poi si p r e m a I nv io pe r c o n f e r m a r e il pe rco rso d i de fau l t in cui memor i zza re
la ch iave pr iva ta .
SSH può fare uso degli algoritmi di firma RSA e DSA per la creazione
delle chiavi. Per default ssh~keygen genera una coppia di chiavi RSA.
Per creare chiavi che utilizzino l 'algoritmo DSA, invece, bisogna lanciare
il comando ssh-keygen seguito da -t dsa. L'algoritmo DSA è più rapi-
do nel generare una firma SSH ed è maggiormente portabile rispetto a
RSA. In situazioni normali, però, la scelta tra un algori tmo e l'altro non
comporta vantaggi o svantaggi di rilievo.
Fat to q u e s t o , è poss ib i le inser i re una passphrase per p r o t e g g e r e la ch iave
pr ivata: se si ind ica una passphrase, q u i n d i , sarà necessar io d ig i ta r la nuo -
v a m e n t e al m o m e n t o de l la conness ione al server r e m o t o .
Q u e s t o forn isce un 'u l te r io re barr iera p ro te t t i va nel ma laugu ra to caso in cui
un es t raneo si impadron isse de l l ' accoun t con il qua le si accede al server re-
m o t o . D ig i ta ta la passphrase, b isogna po i inserirla d i nuovo per con fe rma.
Se si p r e m e I n v i o a l la r i ch ies ta d e l l a p a s s p h r a s e , i n v e c e , si p o t r à p o i e n t r a -
re ne l l a m a c c h i n a s e r v e r senza d o v e r d i g i t a r e nu l l a o l t r e al c o m a n d o ssh.
A q u e s t o p u n t o b i s o g n a c o p i a r e la c h i a v e p u b b l i c a a p p e n a g e n e r a t a su l
s e r v e r r e m o t o , i n s e r e n d o l a ne l la l ista d e l l e ch iav i c o n o s c i u t e d a l l ' u t e n t e
ne l s e r v e r d i cu i v o g l i a m o a s s u m e r e l ' i d e n t i t à . Per f a r e q u e s t o si u t i l i zza
l ' a p p o s i t o c o m a n d o s s h - c o p y - i d c o n la s in tass i s e g u e n t e :
s s h - c o p y - i d -i - / . s s h / i d _ r s a . p u b u t e n t e S s e r v e r
Il f i l e ~ / . s s h / i d _ r s a . p u b c o n t i e n e la c h i a v e p u b b l i c a d e l l ' u t e n t e c o r r e n t e ;
in c a s o d i u t i l i z zo d e l l ' a l g o r i t m o D S A il f i l e è ~ / . s s h / i d _ d s a . p u b . A l p o s t o
d i u t e n t e ® s e r v e r b i s o g n a inse r i re la m a c c h i n a r e m o t a su l la q u a l e si v u o l e
o t t e n e r e l ' a c c e s s o e il n o m e d e l l ' u t e n t e cu i si d e s i d e r a i nv ia re la c h i a v e
p u b b l i c a ( p e r e s e m p i o , m a r i o @ e r a c l i t o . u f f i c i o . l a n ) .
L a n c i a t o il c o m a n d o , v e r r à r i ch i es ta la p a s s w o r d d e l l ' u t e n t e i n d i c a t o sul
s i s t e m a r e m o t o . E f f e t t u a t a q u e s t ' u l t i m a o p e r a z i o n e , q u i n d i , t r a m i t e il c o -
m a n d o ssh si p o t r à a v e r e a c c e s s o al la m a c c h i n a s e r v e r senza d o v e r inse -
r i re a l c u n a p a s s w o r d .
Rendere il server 5SH più sicura
Una v o l t a c h e si s o n o c o p i a t e su l s e r v e r SSH t u t t e le ch iav i p u b b l i c h e d e i
c l i e n t , è p o s s i b i l e m o d i f i c a r e a l c u n e d e l l e i m p o s t a z i o n i d e l s e r v e r SSH p e r
m i g l i o r a r n e la s i cu rezza .
La p r i m a o p z i o n e su cu i è c o n s i g l i a b i l e i n t e r v e n i r e è q u e l l a c h e c o n s e n t e
l ' a c c e s s o al s i s t e m a r e m o t o t r a m i t e le n o r m a l i p a s s w o r d . Q u e s t a m o d a l i t à
d i a u t e n t i c a z i o n e , i n f a t t i , è i n t r i n s e c a m e n t e m e n o s icu ra d i q u e l l a m e d i a n -
t e c h i a v e p u b b l i c a .
Si a p r a c o n l ' e d i t o r d a r o o t il f i l e / e t c / s s h / s s h d _ c o n f i g :
sudo v i /etc/ssh/sshd_config
Si r i ce rch i ne l f i l e la r i ga s e g u e n t e :
# P a s s w o r d A u t h e n t i c a t i o n yes
e la si m o d i f i c h i in:
P a s s w o r d A u t h e n t i c a t i o n n o
Per u n a p o l i t i c a p i ù s t r i n g e n t e s u g l i access i si p u ò p o i e l i m i n a r e la p o s s i -
b i l i t à d i e n t r a r e ne l s i s t e m a c o m e u t e n t e r o o t . Per o t t e n e r e q u e s t o la riga
P e r m i t R o o t L o g i n yes d e v e d i v e n t a r e P e r m i t R o o t L o g i n no.
Le o p z i o n i d i s p o n i b i l i p e r c o n f i g u r a r e al m e g l i o il s e r v e r SSH s o n o m o l t e -
p l i c i : p e r u n e l e n c o e s a u s t i v o d i q u e s t e si c o n s i g l i a d i l e g g e r e la m a n p a g e
d i s s h d _ c 0 n f i g (man sshd_config).
# To enable empty passwords, change to yes {$B| RECOMMENDED) PermitEmptyPasswcrrds no
# Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords |as swordAuthentication no
# Kerberos options #KerberosAuthentication no #KerberosGetAFSToken no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes
# GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes
XllForwarding yes Xl lDisplayOffset 10
5 I M 74%
Figura 7.5 - Modificando alcune opzioni nel file /etc/ssh/sshd_confìg è possibile aumentare la sicurezza di ssh.
Una v o l t a a p p o r t a t e le m o d i f i c h e d e s i d e r a t e al f i l e / e t c / s s h / s s h d _ c o n f i g ,
p e r a g g i o r n a r e la c o n f i g u r a z i o n e d e l d e m o n e sshd a t t i v o è n e c e s s a r i o lan-
c ia re sul s e r v e r il c o m a n d o sudo / e t c / i n i t . d / s s h reload.
L'usa quotidiana di 55H
Se si è s c e l t o d i u t i l i zzare una p a s s p h r a s e , la c o m o d i t à d i n o n d o v e r inser i re
una p a s s w o r d a o g n i c o n n e s s i o n e r e m o t a è c e r t o l im i t a ta d a l d o v e r d i g i t a r e ,
c o m u n q u e , la p a s s p h r a s e s tab i l i t a p r i m a d e l c o l l e g a m e n t o . È p e r ò p o s s i b i l e
fa re in m o d o c h e la p a s s p h r a s e v e n g a richiesta una sola v o l t a , così d a n o n
d o v e r l a d i g i t a r e n u o v a m e n t e a o g n i success iva sess ione d i ssh.
Per o t t e n e r e q u e s t o , p r i m a d i a v v i a r e ssh va l a n c i a t o sul c l i e n t il c o m a n d o
s e g u e n t e :
exec s s h - a g e n t /bin/bash
Poi si e s e g u e ssh-add e si d i g i t a la p a s s p h r a s e n e c e s s a r i a p e r s b l o c c a r e
la c h i a v e . F a t t o q u e s t o , ssh n o n r i c h i e d e r à a l l ' u t e n t e a l c u n a p a s s p h r a s e
f i n c h é n o n si c h i u d e r à la c o n s o l e a t t u a l e sul c l i e n t . A l s u c c e s s i v o l o g i n ,
q u i n d i , si d o v r a n n o e s e g u i r e d i n u o v o i c o m a n d i exec s s h - a g e n t /bin/
b a s h e ssh-add p e r m e m o r i z z a r e la p a s s p h r a s e .
alegpitagora: ~$ exec ssli-agent /bin/bash ale@pitagora:~$ ssh-add Enter passphrase for /home/ale/.ssh/id_rsa: Identity added: /home/ale/,ssh/id_rsa (/home/ale/,ssh/id ale@pitagora:-$ |
rsa)
Nella conf iguraz ione di defau l t d i Ubun tu , alla partenza del server graf ico
v iene avviata anche un' istanza di ssh-agent. Per questa rag ione, se si
utilizza un' inter faccia grafica l 'unico c o m a n d o da esegui re nel te rmina le
per far memor izzare la passphrase è ssh-add.
O l t r e a p o t e r a v v i a r e una s e s s i o n e SSH v e r a e p r o p r i a su d i u n s i s t e m a
r e m o t o , il c o m a n d o ssh p e r m e t t e a n c h e d i l anc i a re c o m a n d i d i r e t t i , c o m e
n e l l ' e s e m p i o s e g u e n t e :
ssh s e r v e r . ufficio . lan ps aux
E s e g u e n d o q u e s t a riga si lancia il c o m a n d o p s aux sul s i s tema r e m o t o
server .u f f i c io . lan e l ' o u t p u t r i su l tan te v i e n e m o s t r a t o sul t e r m i n a l e de l l a
m a c c h i n a loca le .
T ram i t e l ' o p z i o n e - x d i ssh, p o i , è poss ib i l e e s e g u i r e a p p l i c a z i o n i g r a f i c h e
p resen t i sul server v i sua l i zzando le su l lo s c h e r m o d i un c l i en t c o m e si t ra t -
tasse d i f i nes t re local i . L a n c i a n d o ssh -X server.ufficio.lan gcalctool,
p e r e s e m p i o , sul PC server .u f f i c io . lan ver rà l anc ia to g c a l c t o o l (la ca lco la t r i -
ce d i G n o m e ) , m e n t r e sul PC c l i en t c o m p a r i r à la f ines t ra d e l p r o g r a m m a .
Per p o t e r s f ru t ta re l ' o p z i o n e - x d i ssh è necessar io che ne l f i le / e t c / s s h /
s s h d _ c o n f i g l ' o p z i o n e xiiForwardìng a b b i a va lo re yes.
In f ine, ne l p a c c h e t t o o p e n s s l - c l i e n t è c o n t e n u t o il p r o g r a m m a scp, che
p e r m e t t e d i c o p i a r e f a c i l m e n t e d e i f i le da una m a c c h i n a a l l 'a l t ra . È poss i -
b i le t ras fe r i re f i le t ra d u e c o m p u t e r r e m o t i o t ra il PC loca le e una m a c c h i -
na r e m o t a . La sintassi d i base d e l c o m a n d o è e l e m e n t a r e :
scp userOhostl :filel user@host2 :file2
Sia l ' i nd i caz i one del l'user sia que l l a del l'host s o n o o p z i o n a l i . Ecco un
e s e m p i o p ra t i co :
scp /tmp/documento. txt mario@server. ufficio. lan : doc
C o n q u e s t o c o m a n d o il f i le / t m p / d o c u m e n t o . t x t p r e s e n t e ne l la m a c c h i n a
loca le v i e n e c o p i a t o a l l ' i n t e r n o de l l a d i r e c t o r y d o c nel la h o m e d e l l ' u t e n t e
m a r i o ( / h o m e / m a r i o / d o c ) sul la m a c c h i n a r e m o t a server .u f f i c io . lan .
Il p r o g r a m m a scp utilizza ssh pe r il t r as fe r imen to de i f i le e l 'au tent icaz ione nei
s istemi remot i . Q u i n d i , se si è scel to d i autent icars i t r am i te passphrase si d o -
vrà inserire ques t ' u l t ima (a m e n o che non si sia avv ia to ssh-agent) al m o m e n t o
de l la conness ione con l 'host , a l t r iment i si d ig i te rà la no rma le password .
Amministrazione più comoda con screen
Q u a n d o ci si c o l l e g a a un server t r a m i t e un t e r m i n a l e r e m o t o si ha a d i s p o -
s iz ione u n ' u n i c a c o n s o l e , a l l ' i n t e r n o de l l a q u a l e b i s o g n a e f f e t t u a r e t u t t e
le o p e r a z i o n i d i a m m i n i s t r a z i o n e che la g e s t i o n e d i un server r i ch iede .
S a r e b b e c o m o d o , in q u e s t i casi, ave re a d i s p o s i z i o n e p i ù t e r m i n a l i fra cui
r ipar t i re c o m o d a m e n t e i d ivers i c o m p i t i da svo lge re .
Il c o m p a g n o i d e a l e d i ssh è c e r t a m e n t e s c r e e n . Q u e s t o p r o g r a m m a , i n fa t -
t i , c o n s e n t e d i c r e a r e e g e s t i r e a l l ' i n t e r n o d i u n ' u n i c a s e s s i o n e d i t e r m i n a l e
p i ù " f i n e s t r e " , o g n u n a d e l l e q u a l i p u ò c o n t e n e r e u n a she l l o un p r o g r a m -
m a in e s e c u z i o n e . Si p u ò c o n s i d e r a r e s c r e e n , q u i n d i , c o m e u n a so r t a d i
w i n d o w m a n a g e r p e r la c o n s o l e .
Per i ns ta l l a re il p r o g r a m m a su U b u n t u S e r v e r si l anc ia il c o m a n d o sudo
a p t - g e t instali screen. F a t t o q u e s t o , una v o l t a e f f e t t u a t a t r a m i t e ssh la
c o n n e s s i o n e al s e r v e r si avv ia s c r e e n su q u e s t ' u l t i m o e s e g u e n d o s e m p l i -
c e m e n t e il c o m a n d o screen.
N e l t e r m i n a l e c o m p a r i r à una s c h e r m a t a d i b e n v e n u t o (F igura 7.7). A q u e s t o
p u n t o , p r e m e n d o il t a s t o S p a z i o o I n v i o si t o r n e r à al t e r m i n a l e . In a p p a r e n -
za nu l la è c a m b i a t o ne l la c o n s o l e r e m o t a ; in rea l tà sc reen è o ra in f u n z i o n e e
a t t e n d e s o l o c h e v e n g a n o p r e m u t e le o p p o r t u n e c o m b i n a z i o n i d i tas t i .
Screen version 4.00.03 (FAU) 23-Oct-06
Copyright (c) 1993-2002 Juergen Weigert, Michael Schroeder Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-13O1 USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen@uni-erlangen.de
Le c o m b i n a z i o n i d i t as t i c o m i n c i a n o t u t t e c o n C t r l + A . Per e s e m p i o , p e r
v i sua l i zza re la p a g i n a d i h e l p c h e e l e n c a le c o m b i n a z i o n i d i s p o n i b i l i si p r e -
m e C t r l + A e p o i ?. Per a p r i r e u n n u o v o t e r m i n a l e " v i r t u a l e " , i n v e c e , si
I [Press Space or Return to end.]
p r e m e C t r l + A s e g u i t o d a C. U n a l ista d e l l e p r i n c i p a l i c o m b i n a z i o n i d i t as t i
in s c r e e n è m o s t r a t a ne l la T a b e l l a 7 .1 .
Tabella 7.1 - Le combinazioni di tasti di screen più utilizzate. Tasti Funzione
Ctrl+A+D Apre una nuova console di terminale all'interno dì screen
C t r l + A + 0 . . . 9 Passa al la c o n s o l e n u m e r o 0 . . . 9 a l l ' i n t e r n o d i
s c r e e n
Ctrl+A+D Chiude la console corrente
C t r l + A + C t r l + A Passa a l l ' u l t i m a c o n s o l e u t i l i zza ta p r i m a d i q u e l l a
a t t u a l e
Mostra un elenco delle console aperte in screen. Ctr l+A+" Con i tasti cursore ci si sposta tra le console e con
Invio si passa alla console selezionata
C t r l + A + D F u n z i o n e " d e t a c h " . Per s c o l l e g a r s i d a l l a s e s s i o n e
c o r r e n t e d i s c r e e n
Ctrl+A+? Mostra l'help con l'elenco delle combinazioni di tasti riconosciute
La c o m b i n a z i o n e d i t as t i C t r l + A + D p e r m e t t e d i a b b a n d o n a r e la s e s s i o n e
d i s c r e e n in c o r s o senza c h e le c o n s o l e e i p r o g r a m m i avv i a t i in essa v e n -
g a n o e f f e t t i v a m e n t e ch ius i .
U t i l i z z a n d o q u e s t a c o m b i n a z i o n e d i t as t i è q u i n d i p o s s i b i l e s c o l l e g a r s i m o -
m e n t a n e a m e n t e d a l server , p e r p o i r i c o n n e t t e r s i in s e g u i t o r i p r e n d e n d o la
s e s s i o n e d a l p u n t o in cu i q u e s t a e ra s ta ta i n t e r r o t t a . Per r i p r i s t i n a r e la ses-
s i o n e a b b a n d o n a t a il c o m a n d o d a e s e g u i r e n o n è p i ù il s e m p l i c e screen
m a screen -r.
Amministrazione dal web C e r t o , il t e r m i n a l e è u n o s t r u m e n t o p o t e n t e p e r g e s t i r e u n a m a c c h i n a d a
r e m o t o m a è a n c h e d i u s o c o m p l e s s o . A c c e d e r e a un c o m p l e t o a m b i e n t e
g r a f i c o p e r a m m i n i s t r a r e u n server , i n v e c e , p u ò r i su l t a re u n a sce l t a i n a p -
Linux Llbuntu per server e reti
p r o p i n a t a p e r l ' e ccess i va o c c u p a z i o n e d i b a n d a e p e r la r i p e t i t i v i t à d e l l e
o p e r a z i o n i d i m a n u t e n z i o n e d a s v o l g e r e .
U n v a l i d o c o m p r o m e s s o è c o s t i t u i t o d a W e b m i n , u n ' i n t e r f a c c i a w e b c h e
c o n s e n t e d i g e s t i r e u n s i s t e m a in m o d o s e m p l i c e e i m m e d i a t o d i r e t t a m e n -
t e d a u n c o m u n e w e b b r o w s e r .
£ile Modifica Visualizza Cronologia Segnalibri Strumenti guida
' & . ••• b 11 p s ://1 oc a ih osti 10000/
ìJ Webmin íá System '¿i Servers «á Networking
A view Module's Logs fà ^System information:
Refresh Modules #Logout
System hostname Operating system Webmin version Time on system System uptime CPU load averages Real memory
Virtual memory
Local disk space
Q u u e b m i n Pitagora Ubuntu Linux 8.04.1 1.420 Tue Aug 12 11:49:53 2008 3 hours, 31 minutes 0.24 (1 min) 0.26 (5 mins) 0.22 (15 mins) 1.47 GB total. 691.97 MB used
956.9! 4 kB UÍ
64.32 GB total, 33.84 GB used
https://locaihost:10000/rlght.cgi?open=system&open=status localhost:10000 ¿3 @ Ü (N) ^
Figura 7.8 - Amministrare un sistema direttamente dal web? È possibile con il programma Webmin.
Installazione e avvia di webmin
W e b m i n n o n è i n c l u s o ne i r e p o s i t o r y d i U b u n t u . E c c o q u i n d i i p a s s a g g i
n e c e s s a r i p e r i ns ta l l a r l o :
1. si a p r a c o n u n w e b b r o w s e r la p a g i n a h t t p : / / w w w . w e b m i n . c o m /
d o w n l o a d . h t m l e si s e g u a il l ink a l l ' u l t i m a v e r s i o n e d e l p a c c h e t t o
d e b d e l p r o g r a m m a . A l m o m e n t o d e l l a s t esu ra d e l p r e s e n t e v o l u -
m e , il l ink p u n t a a w e b m i n _ 1 . 4 2 0 _ a l l . d e b ;
2. si sca r i ch i il f i l e d a l l a r e te , q u i n d i si a p r a u n a c o n s o l e d i t e r m i n a l e
e si e n t r i c o n il c o m a n d o ed ne l l a d i r e c t o r y in cu i il b r o w s e r sa lva i
d o w n l o a d : se la d i r e c t o r y è D o w n l o a d il c o m a n d o d a sc r i ve re sarà
d u n q u e Cd Download;
3. ne l l a c o n s o l e si lanc i ¡1 c o m a n d o sudo g d e b i webrain_l. 420 a l l . d e b e
al la d o m a n d a i n s t a l l a r e il p a c c h e t t o software? [S/N] : si r i s p o n -
d a p r e m e n d o il t a s t o S e I n v i o . Ver rà cos ì i n s t a l l a t o il p a c c h e t t o d i
w e b m i n i n s i e m e a t u t t e le d i p e n d e n z e d a e s s o r i c h i e s t e .
ale@pitagora:-$ cd Download/ ale@pitagora:~/Download$ sudo gdebi webmin 1.420_all.deb Reading package lists: Done Reading state information: Done Reading state information: Done Reading state information: Done
A web-based administration interface for Unix systems. Using Webmin you can configure DNS, Samba, NFS, local/remote filesystems and more using your web browser. After installation, enter the URL https://localhost:10000/ into your browser and login as root with your root password.
Installare il pacchetto software? [s/N]:s Selezionato il pacchetto webmin, che non lo era. (Lettura del database ... 173109 file e directory attualmente installati.) Spacchetto webmin (da webmin_l.420_all.deb) ... Configuro webmin (1,420) ... Webmin instali complete. You can now login to https://Pitagora:10000/ as root with your root password, or as any user who can use sudo to run commands as root.
ale@pitagora:-/Download$ |
Figura 7.9 -Alcuni dei passaggi necessari per installare webmin su un PC.
È d ispon ib i le un reposi tory Deb ian non uff iciale da cui è possib i le instal-
lare il pacche t to d i W e b m i n . Per agg iunge re il reposi tory si inserisce nel
f i le /e tc /apt /sources. l i s t la r iga seguente:
deb http://download.webmin.com/download/repository sarge contrib
Poi si salva il f i le e in un te rmina le si lancia sudo apt-get update per
agg io rnare la lista de i pacchet t i . Il pacche t to w e b m i n con tenu to in que-
sto reposi tory è p i enamen te compat ib i l e con Ubuntu .
La p r o c e d u r a d i i n s t a l l a z i o n e avv ia in a u t o m a t i c o il d e m o n e d i W e b m i n ,
c h e sarà p o i l a n c i a t o a o g n i b o o t d e l l a m a c c h i n a .
Per far c o m p a r i r e l ' in ter facc ia d i W e b m i n nel c o m p u t e r stesso in cui è
s ta to insta l la to il p r o g r a m m a , si apra con un b rowser l ' ind i r izzo h t t p s : / / l o -
ca lhost : 10000.
Nel la pag ina che a p p a r e b i sogna e f fe t tua re il l og in i nse rendo il n o m e
d e l l ' u t e n t e ammin i s t r a t o re e la relat iva password . Se nel s is tema è a t t i vo
l ' u ten te r o o t si inserisca q u e s t o , a l t r imen t i si p u ò d ig i t a re il n o m e de l -
l ' u ten te p r inc ipa le (que l lo , c ioè , che p u ò acquis i re i p o t e r i d i roo t t r a m i t e
il c o m a n d o sudo) e la relat iva password .
Dato che gli utenti di webmin non coincidono necessariamente con gli
utenti di sistema, è possibile accedere all'interfaccia di Webmin tramite
root senza che questo utente sia attivo nel sistema. Per questo, basta
indicare la password di root in webmin mediante il comando seguente:
sudo /usr/share/webmin/changepass.pl /etc/webmin root password
Al posto del parametro finale password va inserita la password che si
intende utilizzare per root.
La configurazione iniziale
La schermata d i b e n v e n u t o d i W e b m i n fo rn isce a lcune in fo rmaz ion i sul
s is tema sul q u a l e è s ta to insta l la to: il n o m e de l l ' hos t , il s is tema o p e r a t i v o
ut i l izzato, la m e m o r i a d i s p o n i b i l e e così via. A sinistra nel la pag ina , q u i n d i ,
è p resen te un m e n u c o n t e n e n t e le d ive rse sezioni d i W e b m i n cui è possi -
b i le accede re e a l cune s ingo le voc i pe r richiamare le funz iona l i tà d i base.
Se si utilizza come browser Firefox 3 per visualizzare l'interfaccia di
Webmin, al posto della pagina principale del programma apparirà una
s c h e r m a t a d i Connessione sicura fallita.
Per risolvere il problema si fa clic su Oppure è possibile aggiungere
un'eccezione, p o i su Aggiungi eccezione, q u i n d i sul p u l s a n t e Acquisisci
certificato e i n f i n e su Conferma eccezione di sicurezza.
La p r i m a o p e r a z i o n e d a c o m p i e r e è m o d i f i c a r e a l c u n e d e l l e i m p o s t a z i o n i
d i d e f a u l t d e l p r o g r a m m a . N e l m e n u a s in is t ra , q u i n d i , si d e v e f a re c l ic
su l la sc r i t ta W e b m i n e t r a le v o c i c h e a p p a i o n o si s e l e z i o n a W e b m i n C o n -
f i g u r a t i o n . A q u e s t o p u n t o , ne l l a p a r t e p r i n c i p a l e d e l l a p a g i n a w e b c o m -
p a r i r à una se r i e d i i c o n e : o g n u n a d i esse r a p p r e s e n t a u n d i v e r s o e l e m e n t o
d e l l a c o n f i g u r a z i o n e d i W e b m i n su cu i è p o s s i b i l e i n t e r v e n i r e .
Eile Modifica Visualizza Cronologia Segnalibri Strumenti guida
- Ê I"» https://localhost: 10000/
Login: ale Module Config Webmin Backup Configuration Files Change Language and
Webmin Actions Log Webmin Configuration Webmin Servers index Webmin Users
S3 System i i Servers ill Networking
-J Cluster SI others 43 Un-uMKl Moduiï»
A View Module's Logs # System Information 3 Refresh Modules & Logout
Webmin Configuration
â " IP Access Control
m Ports and Addresses
A Logging
• Proxy Servers and Downloads
User interface O
Webmin Modules a
Operating System and Environment
Ö Language
index Page Options #
upgrade Webmin Reassign Modules
m 01 J Ü L J L . &
Anonymous Module Access File Locking 1
Mobile Device Options Blocked Hosts and Users
£ Advanced Options
* Debugging Log File
« = £ 3
SSL Encryption ©
Certificate Authority
localhost:10000 & © U (H)
Si f acc ia c l i c s u l l ' i c o n a L a n g u a g e . A p p a r i r à u n a s c h e r m a t a in c u i è p o s -
s i b i l e s t a b i l i r e il l i n g u a g g i o i m p i e g a t o n e l l ' i n t e r f a c c i a d i W e b m i n . Q u i si
s c e l g a I t a l i a n (IT) c o m e v a l o r e d e l l ' o p z i o n e D i s p l a y in l a n g u a g e e si f acc ia
clic sul pulsante Change Language.
C o m e si p o t r à n o t a r e , o r a la s e z i o n e d e l m e n u d i W e b m i n a t t i v a al m o -
m e n t o ha il n o m e t r a d o t t o in i t a l i a n o , C o n f i g u r a z i o n e W e b m i n , e cos ì
le v a r i e i c o n e ne l la p a g i n a . Per f a re in m o d o c h e t u t t a l ' i n t e r f a c c i a d e l
p r o g r a m m a a p p a i a in i t a l i a n o b a s t a f a re c l ic s u l l ' u l t i m a v o c e d e l m e n u ,
L o g o u t , e d e f f e t t u a r e p o i n u o v a m e n t e il l o g i n in W e b m i n .
D o p o q u e s t o i n t e r v e n t o " e s t e t i c o " , è il m o m e n t o d i l i m i t a r e g l i access i al
p r o g r a m m a d a l l ' e s t e r n o . N e l m e n u si e n t r i in W e b m i n e p o i in C o n f i g u r a -
Linux Ubuntu per server e reti
zione di Webmin, quindi si selezioni l'icona Controllo degli accessi IP. La s c h e r m a t a c h e a p p a r e sarà s i m i l e a l l ' i m m a g i n e s e g u e n t e (F igu ra 7 .11 ) .
• f « j n i i p s '/loc«lho5i"i
Controllo degli accessi IP
mfigurato in modo da impedire o consentire I': icrni di host (come foo.bar.com) e reti IP {com
indirizzi sicuri, specialmente se accessibile tramite
¡so ad indirizzi IP predefiniti utilizzando questa pagina. 254.3.0 o 10.254.1.0/255.255.255.128). Dovresti limitare
aso contrario, chiunque scopra la Sua password po
# da qualunque indirizzo IP O solo dagli indirizzi elencati O a tutti tranne agli indirizzi elencati
Completato
•ossone avere accesso
È p o s s i b i l e sia c o n c e d e r e l ' a c c e s s o a un n u m e r o l i m i t a t o d i ind i r i zz i IP sia
p e r m e t t e r e l ' a c c e s s o a t u t t i g l i i nd i r i zz i t r a n n e a l c u n i . L ' o p z i o n e P e r m e t t i
l'accesso a Webmin ha tre valori possibili: da qualunque indirizzo IP, solo dagli indirizzi elencati e a tu t t i tranne agli indirizzi elencati. Per p e r m e t t e r e a u n n u m e r o r i s t r e t t o d i ind i r i zz i d i c o n t r o l l a r e il PC t r a m i t e
l'interfaccia web, quindi, bisogna impostare solo dagli indirizzi elencati c o m e v a l o r e d e l l ' o p z i o n e e, p o i , i n d i c a r e ne l r i q u a d r o s o t t o s t a n t e i va r i in-
d i r i zz i IP. S o n o a m m e s s i a n c h e n o m i d i h o s t e ind i r i zz i d i re t i ( 1 9 2 . 1 6 8 . 1 . 0 ,
p e r e s e m p i o ) .
Per a v e r e a c c e s s o a W e b m i n d a l l a m a c c h i n a l o c a l e , si r i c o r d i d i a g g i u n -
g e r e a n c h e 1 2 7 . 0 . 0 . 1 . T e r m i n a t o l ' i n s e r i m e n t o d e g l i i nd i r i zz i si fa c l i c sul
p u l s a n t e S a l v a p e r c o n f e r m a r e le m o d i f i c h e a l le i m p o s t a z i o n i .
O r a si p u ò v e r i f i c a r e la c o r r e t t a c o n f i g u r a z i o n e d i W e b m i n a c c e d e n d o al la
sua i n t e r f a c c i a d a r e m o t o . Bas ta i nse r i re al p o s t o d i 1 2 7 . 0 . 0 . 1 l ' i n d i r i z z o
d e l PC su cu i è i n s t a l l a t o il p r o g r a m m a : p e r e s e m p i o , se l ' i nd i r i z zo IP d a
r a g g i u n g e r e è 1 9 2 . 1 6 8 . 1 . 4 , l 'URL d a d i g i t a r e ne l w e b b r o w s e r sarà h i
t p s : / / 1 9 2 . 1 6 8 . 1 . 4 : 1 0 0 0 0
Come gestire il sistema
A q u e s t o p u n t o è p o s s i b i l e esp lo ra re i n u m e r o s i s s i m i e l e m e n t i d i cu i è
c o m p o s t a l ' i n te r facc ia d i W e b m i n . Ne l la Tabe l la 5.1 è m o s t r a t o un e l e n c o
d i t u t t e le sez ion i d i s p o n i b i l i ne l m e n u d e l p r o g r a m m a .
Tabella 7.2 - Le sezioni del menu di Webmin.
Sezione
W e b m i n
Contenuto
U n - u s e d
M o d u l e s
Linux übuntu per server e reti
E c c o a l c u n i e s e m p i d ' u t i l i z z o d i W e b m i n . In u n s e r v e r g e s t i t o a d i s t a n z a
p u ò risultare d i g r a n d e u t i l i t à p o t e r c o n t r o l l a r e il c a r i c o su l la m a c c h i n a d e i
s i n g o l i p r o c e s s i in e s e c u z i o n e . Per f a re q u e s t o , d a l l ' i n t e r f a c c i a w e b si e n t r a
ne l la s e z i o n e S i s t e m a e si fa c l i c su l la v o c e P r o c e s s i in e s e c u z i o n e .
N e l l a s c h e r m a t a c h e a p p a r e v e n g o n o e l e n c a t i t u t t i i p r o c e s s i a t t i v i su l la
m a c c h i n a . La riga in a l t o c h e in iz ia c o n la d i c i t u r a V i s u a l i z z a , q u i n d i , c o n -
s e n t e d i s c e g l i e r e il c r i t e r i o d i o r d i n a m e n t o p e r i p r o c e s s i : f a c e n d o c l ic
su C P U v e r r a n n o v i sua l i zza t i i p r o c e s s i s e c o n d o il c a r i c o sul p r o c e s s o r e ,
m e n t r e s e l e z i o n a n d o M e m o r i a i p r i m i p r o c e s s i e l e n c a t i s a r a n n o q u e l l i c h e
o c c u p a n o p i ù R A M .
Se u n p r o c e s s o o c c u p a t r o p p a C P U o u n q u a n t i t a t i v o e c c e s s i v o d i R A M è
p o s s i b i l e e l i m i n a r l o . Basta f a re c l ic sul n u m e r o d e l p r o c e s s o p o s t o s o t t o
il c a m p o I D P r o c e s s o , q u i n d i ne l l a s c h e r m a t a c h e a p p a r e n o n res ta c h e
premere i pulsanti Termina o Kill.
I Eile Modifica Visualizza Cronologìa Segnalibri Strumenti Guida
I ~ <5> » https://localhost: 10000/
I Login: ale j~1 indice modulo
- l l l c ; -
A View Module's Logs & System Information S Refresh Modules @ Disconnettiti
Completato
Informazioni sul Processo ¡J Sistema
Bootup and Shutdown Cambio Password Comandi pianificati Dischi e rete Filesystem Backup Log File Rotation MIME Type Programs PAM Authentication Pianificazione Cron job Processi in esecuzione Registri di sistema Software Packages System Documentation Users and Groups
S3 Rete -il Hardware a cluster
Others i o Un used Modules Search:
Comando ID Processo Proprietario Dimensione
Livello Nice
Gruppo reale
10 (Predefinito) :J j Cambia j
Processo padre CPU
Utente reale
/sbin/init 6.3% 00:01:58
Invia Segnale HUP ; Termina Kill Sospendi h Riprendi | Controlla Processo | ! File e Connessioni j
P u ò e s s e r e n e c e s s a r i o , a v o l t e , c a m b i a r e d a r e m o t o la p a s s w o r d d i u n
u t e n t e . In W e b m i n t a l e o p e r a z i o n e è m o l t o s e m p l i c e : si e n t r a n e l l a se -
z i o n e S i s t e m a , si fa c l i c su C a m b i o P a s s w o r d e , n e l l a s c h e r m a t a c h e a p -
p a r e , si s e l e z i o n a d a l l ' e l e n c o l ' u t e n t e p e r il q u a l e si d e s i d e r a m o d i f i c a r e
la p a s s w o r d .
F a t t o c i ò , si d i g i t a la n u o v a p a s s w o r d n e l l o s p a z i o b i a n c o a d e s t r a d i N u o -
v a p a r o l a d ' o r d i n e e si r e i nse r i s ce la p a s s w o r d n e l l o s p a z i o s o t t o s t a n t e .
I n f i ne , si fa c l i c sul p u l s a n t e C a m b i a .
In u n s i s t e m a r e m o t o p u ò r i su l t a re u t i l e i m p e d i r e c h e al b o o t d e l l a m a c c h i -
na v e n g a a v v i a t o u n d e t e r m i n a t o d e m o n e , m a g a r i p e r c h é q u e s t o m a n i f e -
sta m a l f u n z i o n a m e n t i c h e si v o g l i o n o r i s o l v e r e p r i m a d i l a n c i a r e d i n u o v o
il se rv i z i o a l l ' a v v i o .
In W e b m i n si fa c l i c su l la v o c e B o o t u p a n d S h u t d o w n d e l l a c o n s u e t a
s e z i o n e S i s t e m a , q u i n d i si s e l e z i o n a d a l l a l is ta il se rv i z i o d a d i s a t t i v a r e e
si i n d i c a N o c o m e v a l o r e d e l l ' o p z i o n e S t a r t a t b o o t t i m e ? . Per f i n i r e si fa
clic su Salva.
£iie Modifica Visualizza Cronologia Segnalibri Strumenti Suida
4a 4- - è "Ìr httPs://localhost:10000/
Logìn: ale j""j configurazione del 3 Webmin i i modulo
Sistema Bootup and Shutdown
L£ icf- " . " Avvio e Spegnimento
Comandi pianificati
Filesystem Backup Log File Rotation MIME Type Programs
Pianificazione Cron Job Processi in esecuzione Registri di sistema Software Packages
Users and Groups 3 Server ai Rete S3 Hardware & Cluster
A View Module's Logs =§• System Information 5 Refresh Modules @ Disconnettiti https://iocalhost:10000/init/
I • acpi-support
O dlsa-utils • anacron • apmd •japparmor • apport Û atd • avahi-daemon • bluetoot'n • bootclean Q bootlogd • "bootmisc.sh • brltty • checkfs.sh • checkroot.sh • console screen.; • console-setup • cron • cryptdisks n.crvotdisks-earlv
>r levels oi
ilNrr script to check w BUGS: unless we start »really* late, v ithere to command. Check for daemon presence iThis script stores and restores rr |/etc/init.d/anacron: start anacron ^Advanced Power Management (APM) daemon AppArmor rc file. This rc script inserts the apparmor automatic crash report generation Debian init script for the atd deferred e; Zeroconf daemon for configuring your netw Start bluetooth daemons
Starts or stops the bootlogd log program
¡Used to provide acces Check all filesystems. Check to root file system. iPrepare console Set console font and keymap ;cron is a standard UNIX program
refreshable braille terminals.
localhost:10000 £ © Sì (N) V
Figura 7.13 - Webmin consente di gestire anche i servizi avviati al boot della macchina.
I n f i ne , se si d e s i d e r a a b b a n d o n a r e m o m e n t a n e a m e n t e le i c o n e e i p u l -
san t i d e l l ' i n t e r f a c c i a w e b , W e b m i n m e t t e a d i s p o s i z i o n e d e l l ' u t e n t e una
pratica Console dei comandi. E n t r a n d o ne l l a s e z i o n e O t h e r s d e l m e n u e f a c e n d o c l ic su C o n s o l e d e i
c o m a n d i , i n f a t t i , è p o s s i b i l e d i g i t a r e c o m a n d i c o m e se ci si t r o v a s s e d i
f r o n t e a u n a c o n s o l e d i t e r m i n a l e r i d o t t a ai m i n i m i t e r m i n i . Il c o m a n d o c h e
si v u o l e l anc i a re va q u i n d i i n s e r i t o n e l l o s p a z i o b i a n c o v i c i n o al p u l s a n t e
E s e g u i il c o m a n d o . D o p o a v e r p r e m u t o I n v i o , l ' o u t p u t d e l c o m a n d o v e r r à
m o s t r a t o in a l t o ne l l a s c h e r m a t a c o r r e n t e .
La C o n s o l e d e i c o m a n d i f o r n i t a d a W e b m i n , p e r ò , n o n c o n s e n t e d i ese -
g u i r e p r o g r a m m i i n t e r a t t i v i ( c o m e p a s s w d , p e r e s e m p i o ) . Se si ha b i s o g n o
d i u n t e r m i n a l e r e m o t o a t u t t i g l i e f f e t t i , q u i n d i , f a c e n d o c l ic su l la v o c e
L o g i n T e l n e t / S S H ne l l a s tessa s e z i o n e O t h e r s v e r r à avv i a t a u n a s e s s i o n e
T e l n e t o SSH c o n la m a c c h i n a r e m o t a .
Quando il server grafico è remoto In a l c u n e s i t u a z i o n i f a re u s o d i u n t e r m i n a l e r e m o t o o d i u n ' i n t e r f a c c i a w e b
p e r l ' a m m i n i s t r a z i o n e d i u n a m a c c h i n a p u ò n o n r i su l t a re a p p r o p r i a t o p e r i
p r o p r i s c o p i . Q u e l l o c h e s e r v e è u n a m b i e n t e g r a f i c o c o m p l e t o cu i a v e r e
a c c e s s o d a r e m o t o in t u t t a c o m o d i t à .
VNC sta per Virtual Ne twork Comput ing ed è un sistema client-server p e r la c o n d i v i s i o n e d e l d e s k t o p : l ' a p p l i c a z i o n e s e r v e r t r a s m e t t e le i m m a g i -
ni d e l l ' a m b i e n t e g r a f i c o e q u e s t e v e n g o n o r i c e v u t e d a i var i c l i e n t c o l l e g a t i
c h e , d i r i m a n d o , i n v i a n o al s e r v e r i n f o r m a z i o n i su i m o v i m e n t i d e l m o u s e e
sul la p r e s s i o n e d e i t as t i .
In q u e s t o m o d o è p o s s i b i l e g e s t i r e u n s e r v e r d a r e m o t o , a v v a n t a g g i a n d o s i
d e l l a fac i l i t à d ' u s o d e l l e m o d e r n e i n t e r f a c c e g r a f i c h e .
Installazione di TightVIMC sul server
V N C , ne l s u o f u n z i o n a m e n t o d i b a s e , r i c h i e d e m o l t a b a n d a p e r f u n z i o n a -
re al m e g l i o . Il p r o t o c o l l o su cu i è b a s a t o V N C c o n s e n t e p e r ò d i r i d u r r e
l ' o c c u p a z i o n e d i b a n d a e f f e t t u a n d o la c o m p r e s s i o n e e l ' o t t i m i z z a z i o n e d e i
d a t i g ra f i c i d a t r as fe r i r e .
T i g h t V N C è u n a v e r s i o n e p o t e n z i a t a d i V N C c h e p e r m e t t e d i a m m i n i s t r a r e
u n a m a c c h i n a r e m o t a a n c h e d i s p o n e n d o d i c o n n e s s i o n i a bassa v e l o c i t à ,
o l t r e t u t t o c o n u n ' o c c u p a z i o n e d i m e m o r i a i r r i sor ia .
Il p a c c h e t t o s e r v e r d i T i g h t V N C va i n s t a l l a t o su l PC c h e si v u o l e c o n t r o l l a r e
d a r e m o t o : su q u e s t o , p e r e s e g u i r e l ' i n s t a l l a z i o n e , si lanc i il c o m a n d o sudo
a p t - g e t instali t i g h t v n c s e r v e r .
O r a si è p r o n t i p e r a v v i a r e il s e r v e r g r a f i c o d a c o n d i v i d e r e . In u n t e r m i n a l e ,
q u i n d i , si e s e g u a il c o m a n d o c h e s e g u e :
v n c s e r v e r : 1
Il c o m a n d o a p p e n a i n s e r i t o l anc ia v n c s e r v e r ( che è in rea l tà u n c o l l e g a -
m e n t o s i m b o l i c o a l l ' e s e g u i b i l e tightvncserver) o c c u p a n d o il d i s p l a y n u -
m e r o 1. N o n i n d i c a n d o a l c u n d i s p l a y v e r r à s c e l t o il p r i m o s c h e r m o c h e
r isu l t i d i s p o n i b i l e .
A q u e s t o p u n t o v i e n e r i c h i e s t o l ' i n s e r i m e n t o d i u n a p r i m a p a s s w o r d d i a l -
m e n o c i n q u e c a r a t t e r i , c h e d o v r à p o i e s s e r e d i g i t a t a su l l e m a c c h i n e c l i e n t
p e r p o t e r s i c o n n e t t e r e al s e r v e r V N C .
D o p o a v e r c o n f e r m a t o la p a s s w o r d , sarà c h i e s t o a l l ' u t e n t e se v u o l e i nse r i re
o m e n o u n a p a s s w o r d s e c o n d a r i a d i t i p o v i e w - o n l y : i c l i e n t c h e i n s e r i r a n n o
t a l e p a r o l a d ' a c c e s s o a v r a n n o la p o s s i b i l i t à d i v i sua l i zza re il c o n t e n u t o d e l -
lo s c h e r m o , m a n o n p o t r a n n o usa re t a s t i e r a e m o u s e sul d i s p l a y r e m o t o .
Inser i ta la p a s s w o r d p r i n c i p a l e e , se lo si d e s i d e r a , q u e l l a s e c o n d a r i a , il
s e r v e r g r a f i c o v e r r à a v v i a t o (F igu ra 7 .14 ) . Le p r o s s i m e v o l t e c h e si l ance rà
v n c s e r v e r n o n sarà r i c h i e s t o l ' i n s e r i m e n t o d i n u o v e p a s s w o r d : v e r r a n n o
c o n s i d e r a t e v a l i d e le p a r o l e d ' a c c e s s o i n d i c a t e d u r a n t e il p r i m o a v v i o d e l
server . Se s u c c e s s i v a m e n t e si v o r r à c a m b i a r e le p a s s w o r d , q u i n d i , si d o v r à
usare il p r o g r a m m a v n c p a s s w d .
ale@pitagora:-$ vncserver :1
You will require a password to access your desktops.
Password: Verify:
Would you like to enter a view-only password (y/n)? n
New 'X' desktop is pitagora:l
Creating default startup script /home/ale/.vnc/xstartup Starting applications specified in /home/ale/.vnc/xstartup Log file is /home/ale/.vnc/pitagora:1.log
ale@pitagora:-$ |
Figura 7.14- Dopo aver lanciato vncserver, si inseriscono le password per la connessio-ne dei client.
Il client per TightVIMC
Sui PC d a i q u a l i si v u o l e c o n t r o l l a r e il c o m p u t e r r e m o t o si ins ta l l i il p a c -
c h e t t o x t i g h t v n c v i e w e r :
sudo a p t - g e t i n s t a l i x t i g h t v n c v i e w e r
In ques to paragra fo si p resuppone che anche sui c l ient sia presente una
d is t r ibuz ione Ubuntu o Debian. Per altre d ist ro è possib i le scaricare i pac-
chet t i o i sorgent i d i T i g h t V N C d i re t tamen te dal l ' indi r izzo h t t p : / /www.
t i gh t vnc . com/down load .h tm l . Nel la stessa pagina w e b sono d ispon ib i l i
anche gl i eseguib i l i per W i n d o w s de l cl ient e de l server T igh tVNC.
Per e f f e t t u a r e il c o l l e g a m e n t o al s e r v e r V N C r e m o t o , q u i n d i , la s in tass i d e l
c o m a n d o d a l anc i a re è la s e g u e n t e :
v n c v i e w e r i n d i r i z z o : d i s p l a y
Per e s e m p i o , p e r c o n n e t t e r s i al d i s p l a y 1 d e l l a m a c c h i n a 1 9 2 . 1 6 8 . 1 . 4 si
d e v e e s e g u i r e v n c v i e w e r 192.168.1.4:1. L a n c i a t o il c o m a n d o , v i e n e ri-
c h i e s t a la p a s s w o r d c h e è s ta ta inse r i ta d u r a n t e la c o n f i g u r a z i o n e d e l ser-
ve r : si p u ò d i g i t a r e la p a s s w o r d p r i n c i p a l e o q u e l l a p e r l ' u t i l i zzo v i e w - o n l y
d e l d e s k t o p r e m o t o .
F a t t o q u e s t o , a p p a r i r à u n a f i n e s t r a s i m i l e a q u e l l a v i s i b i l e n e l l ' i m m a g i n e
s e g u e n t e (F igu ra 7 .15 ) . A q u e s t o p u n t o lo s c h e r m o c o n d i v i s o da l l a m a c -
c h i n a r e m o t a sarà a c c e s s i b i l e d a l c l i e n t .
U n a c a r a t t e r i s t i c a d a v v e r o c o m o d a d e l f u n z i o n a m e n t o d i V N C è c h e ,
q u a n d o v i e n e c h i u s o u n c l i e n t , il d i s p l a y c o n d i v i s o e le a p p l i c a z i o n i a v v i a t e
su d i e s s o n o n v e n g o n o e l i m i n a t i , m a risulteranno d i s p o n i b i l i al s u c c e s s i v o
a c c e s s o d i u n c l i e n t .
P r e m e n d o il t a s t o F8 ne l la f i nes t ra c rea ta d a v n c v i e w e r si ha accesso a un ut i -
le m e n u i n t e r n o . Le voc i d i q u e s t o m e n u c o n s e n t o n o d i v isual izzare il d i s p l a y
r e m o t o a p i e n o s c h e r m o (voce Fu l l s c reen ) , d i usc i re d a l c l i en t ( Q u i t v i e w e r )
e d i c o p i a r e il c o n t e n u t o de l l a c l i p b o a r d l oca le ne l la c l i p b o a r d r e m o t a e v i ce -
versa (Clipboard: locai -> remote e Clipboard: remote -> locai).
I < 5 Applicazioni Risorse Sistema É
f W t W Mrtrliftti'iilMi-itMIl
file ModtHca Ssualizn Jern le@pitagora:~i fre
t o t a l Mem: 1546340 - /+ buffers/cache: Swap: 979956 ale@pitagora:~$ df F i l e system /dev/sdal
ivarlock
devshm Irm ene r i c / vo l a t i l e /dev/sda3 igvfs-fuse-daemon ale@pitagora:
1282936 263404 623332 923008
0 979956
IK Usati Disponib 4432312 13971616 :
168 773000 0 773168
44 773124 28 773140
39760 733408
i « I [GIMP] I • TightVNC: ale's X des.
Figura 7.15-11 display del server VNC visualizzato all'interno di una finestra del PC client.
C o m e si p u ò n o t a r e , l ' a m b i e n t e g r a f i c o v i s i b i l e è d e c i s a m e n t e s p a r t a n o : il
s e r v e r V N C , i n fa t t i , p e r r i s p a r m i a r e b a n d a avv ia p e r d e f a u l t u n ' i n t e r f a c c i a
g r a f i c a m i n i m a l e , c o m p o s t a d a u n a f i n e s t r a d i t e r m i n a l e e d a u n s e m p l i c e
w i n d o w m a n a g e r . È p e r ò p o s s i b i l e m o d i f i c a r e q u e s t e i m p o s t a z i o n i i n te r -
v e n e n d o su u n f i l e d i c o n f i g u r a z i o n e d e l PC server .
Configurare il server VI\IC
Il f i l e su l l a m a c c h i n a s e r v e r c h e g e s t i s c e l ' a v v i o d e l l ' a m b i e n t e g r a f i c o è
. v n c / x s t a r t u p e d è p o s t o n e l l a d i r e c t o r y h o m e d e l l ' u t e n t e c h e ha l a n c i a -
t o v n c s e r v e r . E c c o le r i g h e d i c u i il f i l e è c o m p o s t o , n e l l a c o n f i g u r a z i o n e
d i d e f a u l t :
# ! / b i n / s h
x r d b $ H O M E / . X r e s o u r c e s
x s e t r o o t -solid g r e y
x - t e r m i n a l - e m u l a t o r - g e o m e t r y 8 0 x 2 4 + 1 0 + 1 0 -ls -title "$VNCDESKTOP
Desktop" Se
x - w i n d o w - m a n a g e r &
C o n q u e s t e r i g h e , q u a n d o il s e r v e r V N C v i e n e l a n c i a t o si s t a b i l i s c e u n
c o l o r e p e r l o s f o n d o d e l l o s c h e r m o ( r iga xsetroot), si a p r e u n a f i n e s t r a d i
t e r m i n a l e ( r iga x - t e r m i n a i - e m u i a t o r ) e i n f i n e si avv ia il w i n d o w m a n a g e r
di de fau l t nel s is tema (riga x-window-manager). M o d i f i c a n d o l 'u l t ima r iga,
q u i n d i , è poss ib i le ind icare il p r o p r i o w i n d o w m a n a g e r p re fe r i to .
Il file /usr/bin/x-window-manager indica sui sistemi Debian e derivati il
window manager di default. Questo file non è altro che un col legamento
simbolico a /etc/alternatives/x-window-manager e viene creato quando
si installa un window manager nel sistema. Per modificare il w indow
manager dì default si lancia il comando seguente:
sudo update-alternatives --config x-window-manager
Un va l i do c o m p r o m e s s o tra o c c u p a z i o n e d i b a n d a e prat ic i tà d ' u s o p u ò
essere il w i n d o w m a n a g e r fiuxbox. Lo si instal la sulla macch ina server c o n il
c o m a n d o sudo apt-get instali fiuxbox, po i n o n resta che camb ia re la r iga
f ina le d i . vnc /xs ta r tup in startfluxbox & o mod i f i ca re il w i n d o w m a n a g e r d i
de fau l t m e d i a n t e il c o m a n d o update-aiternatìves.
Al t r i w i n d o w m a n a g e r ada t t i pe r un ' ammin i s t r az i one remo ta sono iceWM
( insta l labi le t r a m i t e il p a c c h e t t o i cewm) e windowMaker ( pacche t t o wmaker ) .
En t ramb i f o r n i s c o n o un ' in te r facc ia graf ica s e m p l i c e e d i fac i le ut i l izzo. Per
avviare ques t i d u e w i n d o w m a n a g e r q u a n d o si lancia il server V N C , g l i
esegu ib i l i che b i sogna r ich iamare ne l l ' u l t ima r iga d i . vnc /xs ta r tup sono ,
r i spe t t i vamen te , icewm e wmaker.
Cannessiane cifrata al server VIMC
Nel no rma le uti l izzo di V N C le un iche in formaz ion i che v e n g o n o ci f rate sono
le password scambia te nel le comun icaz ion i iniziali t ra c l ient e server. Il resto
de i da t i che t rans i tano tra le macch ine v iagg ia in chiaro. È p e r ò poss ib i le
nascondere le in formaz ion i c reando un tunne l c i f rato t ram i te SSH.
Per q u e s t o è necessar io che sulla macch ina da ammin is t ra re via V N C sia
a t t i vo un server SSH. Sodd is fa t ta ques ta p remessa , il c o m a n d o pe r lancia-
re vncv iewer su un PC c l ien t d i ven ta :
vncviewer -via 192.168.1.4 localhost: 1
d o v e al p o s t o d i 192 .168 .1 .4 si inser isce l ' ind i r izzo IP de l server V N C a cui
ci si d e v e c o n n e t t e r e e al p o s t o d i 1 si m e t t e il n u m e r o de l d i sp lay che si
des ide ra visual izzare in r e m o t o . Esegu i to il c o m a n d o , verrà p r ima r ichiesta
la password o la passphrase pe r conne t te rs i al server SSH, q u i n d i la paro la
d 'accesso pe r accede re al d isp lay r e m o t o de l server V N C .
Utilizzando il parametro -via di vncviewer si inserisce come indirizzo finale
localhost. Questo perché, quando si attiva un tunnel cifrato, il server SSH
a cui ci si connette viene considerato il PC locale. Ciò spiega la sintassi di
vncviewer adottata in questo caso, apparentemente incongrua.
8. Condividere in rete
Come condividere una S t a m p a n t e e delle
directory sull'hard disk, anche con mac-
chine Windows
In una re te loca le è poss ib i l e e c o n s i g l i a b i l e c o n d i v i d e r e risorse: che si
t ra t t i d i una s t a m p a n t e o d i una ser ie d i ca r te l l e su d i sco , ave re accesso
da p i ù m a c c h i n e a un s i n g o l o d i s p o s i t i v o p e r m e t t e d i o t t im i zza re i cos t i
d e l l ' h a r d w a r e e d i ges t i re in m o d o o c u l a t o le a t t i v i tà d i re te e g l i spazi f is ici
d i s p o n i b i l i .
I p r o t a g o n i s t i d i q u e s t o c a p i t o l o sa ranno d u n q u e il server d i s t a m p a CUPS,
il f i l e sys tem d i s t r i b u i t o NFS e S a m b a , un s o f t w a r e che c o n s e n t e la c o n d i -
v i s i one d i r isorse c o n m a c c h i n e W i n d o w s .
II server di stampa CUPS ( a c r o n i m o d i C o m m o n Un ix P r in t i ng Sys tem) è n o t o p e r essere or-
ma i il s i s tema d i s t a m p a d i d e f a u l t su l le p i ù d i f f use d i s t r i b u z i o n i L inux. In
rea l tà , CUPS è a n c h e un p o t e n t e p r i n t server che p e r m e t t e d i c o n d i v i d e r e
una o p iù s t a m p a n t i t ra i d i ve rs i c o m p u t e r conness i in re te.
Per instal lare il server d i s tampa su U b u n t u va lanciato il c o m a n d o seguen te :
sudo apt-get instali cupsys
L ' i ns ta l l az i one d e l p a c c h e t t o c u p s y s c o m p o r t e r à l ' a t t i v a z i o n e i m m e d i a t a
d e l d e m o n e d i s t a m p a cupsd, c h e r i s p o n d e r à su l la p o r t a 6 3 1 . La c o n f i g u -
r a z i o n e in iz ia le d e l s e r v e r d i s t a m p a a v v i e n e m o d i f i c a n d o il f i l e / e t c / c u p s /
c u p s d . c o n f , m e n t r e l ' a m m i n i s t r a z i o n e d e l s e r v e r s t e s s o si e f f e t t u a c o n t a t -
t a n d o l ' i n t e r f a c c i a w e b d i cupsd, r i c h i a m a b i l e a p p u n t o c o l l e g a n d o s i a l la
p o r t a 6 3 1 d e l l a m a c c h i n a server .
N e l l a c o n f i g u r a z i o n e d i d e f a u l t il se rve r d i s t a m p a a c c e t t a c o n n e s s i o n i
e s c l u s i v a m e n t e da l l a m a c c h i n a loca le . Per m o d i f i c a r e q u e s t a i m p o s t a z i o n e
si ap ra c o n un e d i t o r il f i l e / e t c / c u p s / c u p s d . c o n f . Q u i n d i si c a m b i la r iga :
L i s t e n localhost: 631
i n d i c a n d o l ' i n d i r i z z o d i r e t e su c u i d e v e a s c o l t a r e il s e r v e r d i s t a m p a , p e r
e s e m p i o :
L i s t e n 1 9 2 . 1 6 8 . 1 . 4 : 6 3 1
Per a s c o l t a r e su t u t t e le i n t e r f a c c e d i r e t e la r i ga d a inse r i re è i n v e c e :
L i s t e n *:631
!ogLevel warning • ¡IsystemGroup Ipadmin • # Only listen for connections from the local machine. K •Bisten localhost:631 • ' Listen /var/run/cups/cups.sock • # Disable printer sharing and shared printers.
Browsing Off DefaultAuthType Basic «Location />
# Restrict access to the server... Order allow,deny
</Location> «Location /admin>
# Restrict access to the admin pages.,. Order allow,deny
the admin pages.,.
</Location> «Location /admin/conf>
AuthType Default Require user @SYSTEH # Restrict access to the conf igurat ion files... Order allow,deny
the conf igurat ion files...
</Location> «Policy defaults
4,1 Cim
Figura 8.1 - Nella configurazione di default il demone cupsd ascolta solo sull'interfaccia di rete locale.
B isogna p o i i n d i v i d u a r e il s e g u e n t e b l o c c o d i r i ghe :
«Location />
# Restrict access to the server... Order allow,deny
</Location>
e a g g i u n g e r e d e l l e r i g h e Allow che i n d i c h i n o g l i indir izzi d e i c l i en t che
p o s s o n o c o n n e t t e r s i al server d i s t a m p a . Per e s e m p i o , p e r c o n s e n t i r e la
c o n n e s s i o n e al c l i en t 1 9 2 . 1 6 8 . 1 . 5 il p r e c e d e n t e b l o c c o d i r i g h e d e v e d i -
v e n t a r e così:
«Location />
# Restrict access to the server...
Order allow,deny
Allow 192.168.1.5
</Location>
Per p e r m e t t e r e il c o l l e g a m e n t o al se r ve r d i s t a m p a a l l ' i n t e ra re te
1 9 2 . 1 6 8 . 1 . 0 , la r iga Allow d a ut i l i zzare d i v e n t a Allow 192.168.1.*. D o p o
aver e f f e t t u a t o le necessa r i e m o d i f i c h e al f i le c u p s d . c o n f , p e r a g g i o r n a r e
la c o n f i g u r a z i o n e d e l se rve r cupsd è n e c e s s a r i o r iavv ia re il d e m o n e :
sudo /etc/init.d/cupsys restart
A q u e s t o p u n t o si p u ò p a s s a r e a l la c o n f i g u r a z i o n e d e l l a s t a m p a n t e
d i r e t e .
Configurare la stampante di rete
Per a g g i u n g e r e una s t a m p a n t e al p r i n t server bas ta r i ch iamare l ' i n te r facc ia
w e b d i CLIPS. Se si i n t e n d e c o m p i e r e q u e s t a o p e r a z i o n e d i r e t t a m e n t e
da l la m a c c h i n a server, b i s o g n a apr i re in un qua ls ias i w e b b r o w s e r l ' ind i r iz -
zo l o c a l h o s t : 6 3 1 . A l t r i m e n t i , se si v u o l e c o n f i g u r a r e una n u o v a s t a m p a n t e
da una m a c c h i n a c l ien t , si d e v e inser i re in un b r o w s e r l anc ia to sul c l i en t
l ' i nd i r i zzo IP d e l server sulla re te , a g g i u n g e n d o p o i :631 c o m e r i f e r i m e n t o
alla p o r t a da usare.
Per p o t e r a g g i u n g e r e una s t a m p a n t e da r e m o t o è necessar io m o d i f i c a r e il
f i le / e t c / c u p s / c u p s d . c o n f de l l a m a c c h i n a su cu i è a t t i vo il server : ne l la con -
f i g u r a z i o n e d i d e f a u l t , in fa t t i , le o p e r a z i o n i d i a m m i n i s t r a z i o n e d e l server
p o s s o n o essere e f f e t t u a t e s o l o da l s i s tema loca le .
N e l f i l e b i s o g n a i n d i v i d u a r e il b l o c c o d i righe s e g u e n t e :
«Location /admin>
# R e s t r i c t a c c e s s to the a d m i n p a g e s . . .
O r d e r a l l o w , d e n y
< / L o c a t i o n >
e a g g i u n g e r e una r iga A l l o w c o n g l i indi r izz i IP d e i c l i en t cu i è p e r m e s s o
a m m i n i s t r a r e il server, c o m e si è v i s t o p e r il b l o c c o «Location / > (F igura 8.2).
A n c h e in q u e s t o caso , e f f e t t u a t a t a l e m o d i f i c a b i s o g n a fa r r i l e g g e r e la c o n f i -
g u r a z i o n e al p r i n t se rver c o n il c o m a n d o sudo /etc/init.d/cupsys restart.
^Location /> # Restrict access to the server... Order allow,deny Allow 192,168,1.*
</Location> «Location /admin>
# Restrict access to the admin pages... Order allow,deny Allow 192.168.1.*
</Location> «Location /admin/conf>
AuthType Default Require user @SYSTEM # Restrict access to the configuration files... Order allow,deny
</Location> «Policy default>
«Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Ge t-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
Require user 0OWNER ©SYSTEM Order deny,allow
9,1 29%
Figura 8.2 -1 due biacchi <Location /> e <Location /admin> con le modifiche per accet-tare connessioni dall'esterno.
R a g g i u n t o d a l o c a l e o d a r e m o t o l ' i nd i r i z zo d e l p r i n t server , a p p a r i r à ne l la
f i n e s t r a d e l w e b b r o w s e r la s c h e r m a t a d i b e n v e n u t o d i C U P S ( F i g u r a 8.3) .
Per c o n f i g u r a r e u n a n u o v a s t a m p a n t e b i s o g n a f a r e c l ic sul p u l s a n t e A g -
g i u n g i s t a m p a n t e , p o i ne l l a s c h e r m a t a c h e a p p a r e si i nse r i sce n e g l i a p p o -
si t i spaz i il n o m e d e l l a s t a m p a n t e ( N a m e ) , si i n d i c a il l u o g o in cu i il d i s p o s i -
t i v o si t r o v a ( L o c a t i o n ) e si f o r n i s c e u n a d e s c r i z i o n e es tesa d e l l a s t a m p a n t e
s tessa ( D e s c r i p t i o n ) . Per e s e m p i o , p e r c o n f i g u r a r e u n a S a m s u n g M L - 1 6 1 0
si p u ò i nse r i r e S a m s u n g c o m e N a m e , U f f i c i o c o m e L o c a t i o n e S t a m p a n t e
laser S a m s u n g M L - 1 6 1 0 c o m e D e s c r i p t i o n .
I £ile Modifica Visualizza Cronologia Segnalibri Strumenti Guida
t v - • t » ! e http://localhost:631/ .::::::• ìec; Common UNiX Pr in t ing System 1.3.7
^ principale IM.TiHU'iAJi.UM.lJI B E B 1 «»MW.ÌH.U UM.MfrHH.HI Mii I.U.H.U»
Benvenuto!
Ques te pag ine web t i consen tono d i c o n t r o l l a r e le s t a m p a n t i e le ope raz ion i di s t a m p a nonché esegu i re operaz ion i di a m m i n i s t r a z i o n e del s i s tema. Fai cl ic su ognuna delle schede in a l to o su i pu l san t i seguen t i per e f f e t t u a r e un 'operaz ione .
4 T O 4EEilMfi3811>
Se ti viene richiesto un nome utente o dell'utente "root".
Informazioni su CUPS
a password, inserisci il nome utente e la password di accesso o il nome utente e la password
CU PS fo rn i sce un s o t t o s l s t e m a di s t a m p a po r tab i l e per i s i s t em i ope ra t i v i basat i su UNIX . Sv i luppato e ges t i to da A p p l e I n c . per p r o m u o v e r e una so luz ione di s t a m p a s tandard . CUPS è il s i s t ema di s t a m p a s t a n d a r d u t i l i zza to su MacOS® X e sul la maggior pa r t e delle d i s t r i buz ion i Linux®.
CUPS ut i l izza l ' I n t e r n e t P r i n t i n g P r o t o c o l ( " I P P " ) c o m e base per la gest ione delle operaz ion i di s t a m p a e delle code e agg iunge la nav igaz ione delle s t a m p a n t i di r e t e e opz ion i di s t a m p a basa te su PostScr ipt Pr in ter Descr ip t ion ("PPD") per s u p p o r t a r e t u t t e le necess i tà di s t a m p a .
H r i u o r H i c t a m n a o a c c i c t o n 7 a I Completato © 3 (N> 3 j
Figura 8.3 - La schermata di benvenuto del server CUPS. Da questa pagina è possibile aggiungere una stampante.
D o p o a v e r f a t t o c l ic su C o n t i n u a , si d e v e s p e c i f i c a r e il t i p o d i d i s p o s i t i v o
u t i l i zza to s e l e z i o n a n d o una d e l l e v o c i d i s p o n i b i l i p e r l ' o p z i o n e D i s p o s i t i v o .
Per e s e m p i o , se la s t a m p a n t e S a m s u n g M L - 1 6 1 0 è c o l l e g a t a al la p o r t a USB
de l l a m a c c h i n a se rve r si s e l e z i o n e r à , ne l m e n u re la t i vo a l l ' o p z i o n e D i s p o s i t i -
v o , la v o c e S a m s u n g M L - 1 6 1 0 U S B # 1 e si fa rà c l ic sul p u l s a n t e C o n t i n u a .
Poi si s c e g l i e il d r i v e r p e r la s t a m p a n t e (il s i s t e m a s e l e z i o n e r à a u t o m a t i c a -
m e n t e q u e l l o p i ù a p p r o p r i a t o t r a q u e l l i d i s p o n i b i l i ) e si fa c l i c su A g g i u n g i
stampante.
Per avere a d isposiz ione i pr incipal i dr iver per s tampant i su Ubuntu
Server si consigl ia di installare i seguent i pacchet t i med ian te sudo apt-
get instali: cupsys-dr iver -gutenpr in t , f ooma t i c -db -gu tenp r i n t , f ooma-
t ic -db-hp i js e f oomat i c -db -eng ine .
A q u e s t o p u n t o la c o n f i g u r a z i o n e d e l d i s p o s i t i v o è t e r m i n a t a e p e r a g g i o r -
nare le p r e f e r e n z e d e l p r i n t server ver rà r i ch ies to d i inser i re il n o m e d e l -
l ' u t e n t e p r i n c i p a l e e la re lat iva p a s s w o r d . Ne l la s c h e r m a t a successiva sarà
p o i poss ib i l e i m p o s t a r e a lcun i p a r a m e t r i d i s t a m p a : p e r lasciare i va lo r i d i
default si faccia clic su Imposta opzioni stampante.
La stampante dal lato client
A g g i u n g e r e una s t a m p a n t e d i re te su un c l i en t è u n ' o p e r a z i o n e che si p u ò
e f f e t t u a r e t r a m i t e g l i s t r u m e n t i f o rn i t i d a l l ' a m b i e n t e g ra f i co p r e s e n t e sul la
m a c c h i n a o p p u r e m e d i a n t e l ' i n te r facc ia w e b d e l se rve r CUPS ins ta l la to sul
c l i en t s tesso.
Per ut i l izzare q u e s t a s e c o n d a in te r facc ia si p u n t a il w e b b r o w s e r a l l ' i nd i r i z -
zo l o c a l h o s t : 6 3 1 , q u i n d i ne l la s c h e r m a t a d i b e n v e n u t o d e l server CUPS sul
c l i en t si fa cl ic su A g g i u n g i s t a m p a n t e . Poi si i nse r i scono le i n f o r m a z i o n i
d i base sul la s t a m p a n t e d i re te , c o m e n e l l ' e s e m p i o v is ib i le n e l l ' i m m a g i n e
s e g u e n t e (F igura 8.4).
Modifica Visualizza Cronologia Segnalibri Strumenti Guida
| ' «è Sj1ttp://localhost:631/admin?OP=add-printer
^Agg iung i s t a m p a n t e l É M f f i B A m m i n i s t r a z i o n e ffigSii s r a E l i s s a
Add New Printer
Name: LANPnnter (May contain any printable characters except "/". "#" , and space)
Location: Rete
(Human-readable location such as "Lab Ï " ) Description: Stampante d i rete|
(Human-readable description such as "HP Laserjet with Duplexer")
Common UNIX Printing System, CUPS, e il logo CUPS s< Software Products, Tutt i i diritt i sono riservati.
o marchi registrati da Easy S o f t w a r e P roduc ts . CUPS è un copyright 1997-2006 dì Easy
Figura 8.4 - Valori di esempio di Name, Location e Description per una stampante di rete.
Fat to q u e s t o , ne l la s c h e r m a t a success iva si sceg l i e I n t e r n e t P r i n t i n g Pro -
tocol (ipp) come Disposit ivo.
Si fa cl ic su C o n t i n u a e si ind ica c o m e URI de l d i spos i t i vo una r iga così c o m p o s t a :
ìpp://<IPserver>/ipp/printers/<nome>
A l p o s t o d i <ipserver> si inserisce l ' ind i r izzo IP de l la macch ina server cui
è connessa f i s i camen te la s t a m p a n t e m e n t r e al p o s t o d i <nome> si d ig i ta il
n o m e de l la s t a m p a n t e r emo ta . Per e s e m p i o , se l ' ind i r izzo è 192 .168 .1 .4 e
la s t a m p a n t e si ch iama M L - 1 6 1 0 la r iga da inser i re sarà ques ta :
ipp://192.168.1.4/ipp/printers/ML-1610
Per conoscere il nome della stampante remota basta entrare nella pagi-
na di benvenuto di CUPS sulla macchina server (localhost:631) e, nella
schermata che appare, fare clic sul pulsante Stampant i in alto. Apparirà
un elenco di tutte le stampanti attive nel sistema.
D o p o aver i nd i ca to TURI de l la s t a m p a n t e d i re te si sceg l ie G e n e r i c c o m e
M a r c a e si fa cl ic su C o n t i n u a , q u i n d i si ind ica il M o d e l l o de l la s t a m p a n t e
Generic PostScript Printer (en). A d e s s o n o n r imane che fare cl ic su A g g i u n g i s t a m p a n t e e inser ire sul
c l ien t il n o m e d e l l ' u t e n t e p r i nc ipa le e la relat iva password . Nel la scherma-
ta successiva, in f ine, basta fare cl ic su I m p o s t a o p z i o n i s t a m p a n t e .
Per configurare una macchina client è anche possibile indicare in un file
l'indirizzo del print server da utilizzare. Si crei il file /etc/cups/cl ient.conf
e si inserisca la linea seguente (192.168.1.4 va sostituito con l 'effettivo
indirizzo del server di stampa):
ServerName 192.168.1.4
La stampante predefinita sul server diventerà così la stampante prede-
finita sul client.
Linux Ubuntu per se rve r e ret i
Modifica Visualizza Cronologia Segnalibri Strumenti Guida
' è Ir? | 6 http://localhost.631/admin
'Aggiungi stampante A m m i n i s t r a z i o n e » «iì ' -i
Modello/Driver per LANPrinter
j j
umentaz ione/Aiuto
Modello: Generic PCL 6/PCL XL Printer Foomatic/ljadith (eni Generic PCL 6/PCL XL Printer Foomatic/lj5groy (en) Generic PCL 6/PCL XL Printer Foomatic/ljet4 (en) Generic PCL 6/PCL XL Printer Foomatic/ljet4d (en) Generic PCL 6/PCL XL Printer Foomatic/pxlmono (recommended) (en) Generic PDF file generator (en) _ Generic PostScript Printer (en> Generic PostScript Printer Foomatic/Postscript (recommended) (en) Generic text-only printer (en) Generic ZjStream Printer Foornatie/too2zjs (recommended) (en)
O fornisci un file PPD: Sfoglia
Se il c l ien t uti l izza c o m e s is tema o p e r a t i v o una ve rs ione d i M i c roso f t W i n -
d o w s , pe r p o t e r s t ampa re t r a m i t e il p r i n t server CUPS è necessar io ag-
g i u n g e r e una s t a m p a n t e , ind icare che si v u o l e fare uso d i una s t a m p a n t e
d i re te e q u i n d i fo rn i re al s is tema il s e g u e n t e URI (di n u o v o , <iPserver> è
l ' ind i r izzo IP de l p r in t server e <nome> è il n o m e de l la s tampan te ) :
http ://<IPserver>: 63l/printers/<nome>
Inf ine, si sceg l ie da l l ' e l enco un quals iasi d r i ve r d i s t a m p a PostScr ipt : i n o m i
de i d r i ve r PostScr ip t h a n n o tu t t i c o m e paro la f ina le PS.
Filesystem di rete IXIF5 NFS è un f i le sys tem d i rete d u t t i l e e s e m p l i c e da con f igu ra re . Instal lare
un server NFS su una macch ina è p r o b a b i l m e n t e il m o d o m i g l i o r e pe r
c o n d i v i d e r e f i le e d i rec to ry tra p iù c o m p u t e r Linux: si pens i alla poss ib i l i tà
di ammin is t ra re le d i rec to ry / h o m e d i p iù PC su d i un un ico server o d i
avere accesso a un arch iv io m u l t i m e d i a l e cen t ra le da una m o l t i t u d i n e d i
macch ine , senza un inut i le sp reco d i spaz io sui d isch i .
Configurazione di IVF5 sul server
Per i ns ta l l a re il s e r v e r N F S su l la m a c c h i n a c h e d e v e " e s p o r t a r e " le d i -
r e c t o r y si l anc ia il c o m a n d o s e g u e n t e :
sudo a p t - g e t instali n f s - k e r n e l - s e r v e r
La c o n f i g u r a z i o n e d e l s e r v e r a v v i e n e p e r m e z z o d i un u n i c o f i l e d i c o n -
f i g u r a z i o n e , / e t c / e x p o r t s . Per a g g i u n g e r e u n a d i r e c t o r y d a e s p o r t a r e si
i nse r i sce una r i ga ne l f i l e , c o m e in q u e s t o e s e m p i o :
/ u s r / l o c a l / s h a r e / v i d e o p i t a g o r a ( r w , a s y n c )
A l l ' i n i z i o d e l l a r i ga v i e n e s p e c i f i c a t o il f i l e s y s t e m c h e si i n t e n d e c o n d i v i d e -
re, / u s r / l o c a l / s h a r e / v i d e o . Per d e f a u l t t u t t e le s o t t o d i r e c t o r y a p a r t i r e d a l
f i l e s y s t e m v e r r a n n o e s p o r t a t e . D o p o u n o s p a z i o v u o t o , q u i n d i , si i n d i c a n o
i c l i e n t c h e a v r a n n o a c c e s s o al f i l e s y s t e m (qu i pitagora), c o n le r e l a t i v e
o p z i o n i d i c o n d i v i s i o n e p o s t e t r a p a r e n t e s i t o n d e (rw, async).
N e l l a r i ga d i e s e m p i o v i e n e e s p o r t a t a la d i r e c t o r y / u s r / l o c a l / s h a r e / v i d e o e
si c o n s e n t e a l la m a c c h i n a p i t a g o r a d i a c c e d e r e a essa in l e t t u r a e sc r i t t u ra
(rw) e in m o d o a s i n c r o n o (async).
N e l l a T a b e l l a 8 .1 s o n o e l e n c a t e le p r i n c i p a l i o p z i o n i d i c o n d i v i s i o n e r i ch ia -
m a b i l i in / e t c / e x p o r t s .
Tabella 8.1 - Le opzioni di condivisione in /e tc /expor ts .
Opzione Signif icato rw Il f i l e s y s t e m è e s p o r t a t o in l e t t u r a e s c r i t t u r a
ro Il f i l e s y s t e m è e s p o r t a t o in so la l e t t u r a . È il c o m p o r t a -
m e n t o d i d e f a u l t
sync Le s c r i t t u r e su l f i l e s y s t e m a v v e n g o n o in m o d o s i n c r o n o .
D e f a u l t
async
Le sc r i t t u re sul f i l e s y s t e m a v v e n g o n o in m o d o a s i n c r o n o .
Più v e l o c e de l l a m o d a l i t à s i nc rona m a m e n o s icura (in
caso d i c rash a l cun i d a t i p o s s o n o essere pe rs i o co r ro t t i )
r o o t _ s q u a s h
Gl i access i t r a m i t e l ' u t e n t e 0 ( roo t ) e il g r u p p o r e l a t i v o
v e n g o n o t r a d o t t i in access i t r a m i t e a c c o u n t e g r u p p o
a n o n i m o . D e f a u l t
• : LifeSi . *: f
Opzione Signif icato Gl i accessi t r a m i t e l ' u t e n t e e g r u p p o 0 v e n g o n o t r a t t a t i
no_root_squash c o m e ta l i . A t t e n z i o n e ! In q u e s t o m o d o l ' u t e n t e r o o t sul
c l i en t p o t r à ave re accesso ai f i le d i r o o t sul server
anonuid=x, I n d i c a n o e s p l i c i t a m e n t e l'UlD e il G I D d e l l ' a c c o u n t a n o -
anongid=x n i m o P e r d e f a u l t q u e s t i ha U I D e G I D 6 5 5 3 4
I m p e d i s c e l ' accesso a una s o t t o d i r e c t o r y c o n t e n u t a ne l noaccess
f i l e sys tem e s p o r t a t o
Ecco q u i n d i a l t re r i g h e d i e s e m p i o :
/home *.home.lan(rw,no_root_squash)
/media/musica piatone(rw,async) pitagora(ro)
/var/cache/apt/archives *(rw)
Nel la p r i m a si e s p o r t a / h o m e a t u t t e le m a c c h i n e de l l a re te home.ian, c o n
p e r m e s s i in scr i t tu ra e la poss ib i l i t à d i a c c e d e r e ai f i le c o n l ' u t e n t e roo t .
La s e c o n d a r iga c o n d i v i d e la d i r e c t o r y / m e d i a / m u s i c a m a c o n o p z i o n i d i f -
f e ren t i a s e c o n d a d e l c l i en t che si c o n n e t t e al server NFS: piatone o t t i e n e
i p e r m e s s i in scr i t tu ra e l ' a t t i vaz ione de l l a m o d a l i t à as inc rona , m e n t r e il
c l i en t pitagora si d e v e a c c o n t e n t a r e d e i sol i p e r m e s s i in le t tu ra .
L 'u l t ima r iga e s p o r t a a t u t t e le m a c c h i n e (*) la d i r e c t o r y c o n t e n e n t e i pac -
che t t i d e b scar icat i da l la re te , / v a r / c a c h e / a p t / a r c h i v e s , f o r n e n d o i p e r m e s -
si in scr i t tu ra ai c l i en t che si c o l l e g a n o .
D o p o o g n i m o d i f i c a al f i le / e t c / e x p o r t s , p e r a g g i o r n a r e la c o n f i g u r a z i o n e
d e l server NFS è necessar io e s e g u i r e il c o m a n d o sudo exportfs -a.
NFS sul client
Per a c c e d e r e d a un c l i en t a un f i l esys tem c o n d i v i s o c o n NFS è necessa r io
c h e sul c l i en t D e b i a n o U b u n t u sia p r e s e n t e il p a c c h e t t o n f s - c o m m o n : in
caso c o n t r a r i o va ins ta l la to c o n sudo apt-get instali nfs-common.
Fa t to q u e s t o , si p u ò m o n t a r e il f i l e sys tem e s p o r t a t o m e d i a n t e il c o n s u e t o
c o m a n d o m o u n t .
Ecco un e s e m p i o :
sudo mount Parmenide :/media/musica /mnt/nfs/musica
C o n q u e s t o c o m a n d o si m o n t a in / m n t / n f s / m u s i c a la d i r e c t o r y / m e d i a /
m u s i c a e s p o r t a t a da l l a m a c c h i n a Parmenide. Per e f f e t t u a r e c o r r e t t a m e n t e
il m o u n t la d i r e c t o r y / m n t / n f s / m u s i c a d e v e es i s t e re sul c l i e n t .
Per o t t e n e r e sul c l i e n t i n f o r m a z i o n i re la t i ve ai f i l e s y s t e m c o n d i v i s i d a un d e -
t e r m i n a t a m a c c h i n a si usa il p r o g r a m m a showmount, c o n t e n u t o ne l p a c c h e t t o
n f s - c o m m o n . L a n c i a n d o il c o m a n d o showmount -e indirizzo si avrà in o u -
t p u t u n e l e n c o d e l l e d i r e c t o r y e s p o r t a t e d a l PC indirizzo. U n e s e m p i o d i
u t i l i zzo d e l p r o g r a m m a è v i s ib i l e n e l l ' i m m a g i n e s e g u e n t e (F igu ra 8.6).
ale@pitagora:~$ showmount -e 192.168.1,4 Export list for 192.168.1.4: /home/ale/Video 192.168.1.5 ale@pitagora:-$ |
Figura 8.6 - C o n showmount si ottengono informazioni sui filesystem esportati da una macchina in rete.
O v v i a m e n t e , d o v e r e s e g u i r e il c o m a n d o m o u n t o g n i v o l t a c h e si avv ia u n
c l i e n t p e r a v e r e a c c e s s o a l l e d i r e c t o r y e s p o r t a t e è s c o m o d o . E p e r ò p o s -
s i b i l e i nse r i r e d i r e t t a m e n t e in / e t c / f s t a b d e l l e ri g h e p e r i m p o r t a r e i f i l esy -
s t e m N F S a l l ' a v v i o d e l l a m a c c h i n a .
E c c o u n a riga p e r / e t c / f s t a b c h e c o r r i s p o n d e al c o m a n d o m o u n t d i e s e m -
p i o r i p o r t a t o in p r e c e d e n z a :
Parmenide :/media/musica / m n t / n f s / m u s i c a nfs rw,bg,intr 0 0
A l l ' i n t e r n o d i q u e s t a riga, in p i ù , s o n o s t a t e a g g i u n t e d e l l e o p z i o n i n o n
richiamate ne l p r e c e d e n t e c o m a n d o mount. N e l l a T a b e l l a 8 .2 , q u i n d i , v e n -
ute *
g o n o p r e s e n t a t e le p r i nc ipa l i o p z i o n i d i s p o n i b i l i p e r e f f e t t u a r e su un c l i en t
il m o u n t d i un f i l esys tem NFS. Per r i ch iamare ta l i o p z i o n i d i r e t t a m e n t e da
mount le si fa p r e c e d e r e da -o, così:
sudo mount -o rw,bg,intr Parmenide :/media/musica /mnt/nfs/musica
Tabella 8.2 - Le opzioni per montare un fi lesystem NFS Opzione Signif icato
rw Il f i l e sys tem è m o n t a t o in le t tu ra e scr i t tu ra
r o Il f i l e sys tem è m o n t a t o in so la le t tu ra
i n t r
A t t i v a n d o q u e s t a o p z i o n e g l i u t e n t i p o s s o n o f e r m a r e
u n ' o p e r a z i o n e sul f i l e sys tem NFS. Ut i le q u a n d o q u e -
s t ' u l t i m o r isul ta b l o c c a t o
Se il s i s tema n o n r iesce a e f f e t t u a r e il m o u n t d e l f i lesy-
bg s t e m NFS l ' o p e r a z i o n e passa in b a c k g r o u n d e v e n g o -
n o m o n t a t i g l i a l t r i f i l e sys tem
P e r m e t t e d i i nd i ca re la g r a n d e z z a d e l b u f f e r d i l e t tu ra , IT S 1 2ü 6
espressa in b y t e
WSÌ ZG=X P e r m e t t e d i i nd i ca re la g r a n d e z z a d e l b u f f e r d i sc r i t tu -
ra, espressa in b y t e
Condividere con Samba In una rete e t e r o g e n e a , d o v e macch ine W i n d o w s p o s s o n o p e r e s e m p i o en-
t rare in c o n t a t t o e scambiare da t i con server Deb ian , la cond iv i s ione de i da t i
p u ò risultare p rob lema t i ca , d a t e le v is tose d i f fe renze t ra un sistema o p e r a t i v o
e l 'a l tro. Insta l lando Samba su un server Linux tal i p rob lemi . . . d i d i a l o g o pos-
sono spar i re o ridursi d ras t i camente : Samba è, infatt i , u n ' i m p l e m e n t a z i o n e
l ibera de l p r o t o c o l l o d i rete SMB/CIFS ut i l izzato da Mic roso f t W i n d o w s e p u ò
essere usato pe r cond i v i de re f ac i lmen te de l le carte l le present i su un server
Linux con macch ine W i n d o w s (e na tu ra lmen te anche Linux).
Installazione di Samba sul server
Per ins ta l lare S a m b a sul la m a c c h i n a server è su f f i c i en te ins ta l lare t r a m i t e
apt-get il p a c c h e t t o o m o n i m o :
sudo apt-get instali samba
Q u i n d i , si c r e a n o g l i u t e n t i S a m b a c h e d e v o n o a v e r e a c c e s s o a l le r i so rse
c o n d i v i s e . Il c o m a n d o d a u s a r e è s m b p a s s w d e va l a n c i a t o c o n la s in tass i
s e g u e n t e :
sudo s m b p a s s w d -a u t e n t e
A l p o s t o d i u t e n t e b i s o g n a i nse r i r e il n o m e d e l l ' u t e n t e d a a g g i u n g e r e a
S a m b a . A t t e n z i o n e : d e v e e s i s t e r e u n u t e n t e c o r r i s p o n d e n t e ne l f i l e d e l l e
p a s s w o r d d i s i s t e m a ( / e t c / p a s s w d ) , a l t r i m e n t i la c r e a z i o n e d e l l ' u t e n t e s a m -
b a fa l l i rà . D o p o a v e r e s e g u i t o il c o m a n d o s m b p a s s w d è n e c e s s a r i o d i g i t a r e
una p a s s w o r d p e r il n u o v o u t e n t e s a m b a e inser i r la p o i u n a s e c o n d a v o l t a
p e r c o n f e r m a .
ale@pitagora:-$ sudo smbpasswd -a ale New SMB password: Retype new SMB password: Added user ale. ale@pitagora:-$ |
Figura 8.7 - Per creare un utente samba si usa il comando smbpassword -a seguito dal nome dell'utente da aggiungere.
Per c a n c e l l a r e u n u t e n t e s a m b a si lanc ia s m b p a s s w d s e g u i t o d a l l ' o p z i o n e
- x , c o m e n e l l ' e s e m p i o c h e s e g u e :
sudo s m b p a s s w d -x ale
C o n l ' o p z i o n e -d d i smbpasswd, i n v e c e , si d i s a t t i v a m o m e n t a n e a m e n t e un
u t e n t e in m o d o t a l e d a i m p e d i r e a q u e s t o d i c o l l e g a r s i al s e r v e r S a m -
b a . Per r i p r i s t i n a r e l ' a u t e n t i c a z i o n e d e l l ' u t e n t e sul server , q u i n d i , si u t i l izza
l ' o p z i o n e -e. N e i d u e e s e m p i s e g u e n t i v i e n e p r i m a d i s a t t i v a t o e p o i r ia t t i -
v a t o l ' u t e n t e a n t o n i o :
sudo smbpasswd -d antonio
sudo smbpasswd -e antonio
A q u e s t o p u n t o , è poss ib i l e i n t e r ven i r e sul f i le d i c o n f i g u r a z i o n e d i S a m b a ,
/ e t c / s a m b a / s m b . c o n f . D o p o aver a p e r t o da r o o t il f i le c o n l ' e d i t o r (sudo vi
/etc/samba/smb. conf ) , p e r c o n d i v i d e r e una d i r e c t o r y si p o s s o n o a g g i u n g e -
re al t e r m i n e d e l f i le d e l l e righe s imi l i a q u e s t e :
[documenti]
path = /home/ale/Documenti
valid users = ale , antonio
read only = no
La p r i m a r iga s tab i l i sce il n o m e de l l a r isorsa cond i v i sa , che in q u e s t o caso
è documenti. Tale r isorsa c o r r i s p o n d e alla d i r e c t o r y / h o m e / a l e / D o c u m e n t i
p r e s e n t e ne l la m a c c h i n a su cu i è a t t i v o il se rver S a m b a : la r iga che inizia
c o n path d e t e r m i n a q u e s t a c o r r i s p o n d e n z a .
Ne l la r iga success iva, m e d i a n t e il p a r a m e t r o valid users v e n g o n o e l en -
cat i g l i u t e n t i che p o s s o n o a c c e d e r e alla r isorsa cond i v i sa i n s e r e n d o la
p r o p r i a p a s s w o r d . L 'u l t ima r iga, i n f ine , i nd ica che sul la d i r e c t o r y e s p o r t a t a
è c o n s e n t i t o sia l e g g e r e sia scr ivere.
Sicurezza per le risorse condivise
La g e s t i o n e d e l l e p o l i t i c h e d i s icurezza in S a m b a è un a r g o m e n t o c o m -
p lesso e la sua t r a t t a z i o n e esaust iva a n d r e b b e n e c e s s a r i a m e n t e o l t r e g l i
s c o p i d i q u e s t o v o l u m e e g l i spaz i d i s p o n i b i l i su d i esso. Ecco, d u n q u e ,
a l cune s e m p l i c i i n f o r m a z i o n i d i b a s e s u l l ' a r g o m e n t o .
N e l l e r i g h e d i s m b . c o n f r i p o r t a t e in p r e c e d e n z a si è i n t e r v e n u t i su l l ' u l t ima
sez ione d e l f i le d i c o n f i g u r a z i o n e , d e d i c a t a a l le r isorse c o n d i v i s e . La p r i m a
p a r t e d e l f i le è i nvece o c c u p a t a da l la sez ione [Global], che r a c c o g l i e le
i m p o s t a z i o n i g l o b a l i d e l server S a m b a .
Si and rà d u n q u e a i n te r ven i re su q u e s t a sez ione p e r l im i ta re l 'accesso al
server a l le so le m a c c h i n e c o n n e s s e alla re te loca le .
g ===== Global Settings = = = = = = = = = = = =
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of workgroup = WORKGROUP
# server string is the equivalent of the NT Description field server string = %h server (Samba, Ubuntu)
# Windows Internet Name Serving Support Section: # WINS Support - Tells the NMBD component of Samba to enable its WINS Server ; wins support = no
# WINS Server - Tells the NMBD components of Samba to be a WINS Client # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both ; wins server = w.x.y.z
# This will prevent nmbd to search for NetBIOS names through DNS, dns proxy = no
20,1 6%
Figura 8.8 - Nella prima parte del file smb.coni sono contenute le impostazioni globali.
N e l l a p a r t e in i z ia le d i s m b . c o n f si c e r c h i la r i ga s e g u e n t e :
i n t e r f a c e s = 127.0.0.0/8 ethO
Q u e s t a r iga va d e c o m m e n t a t a t o g l i e n d o il p r i m o c a r a t t e r e q u i n d i si
d e v e i nse r i r e al p o s t o d i e t h o l ' i n t e r f a c c i a c h e i d e n t i f i c a la r e t e l o c a l e .
P o c o p i ù s o t t o b i s o g n a p o i d e c o m m e n t a r e la r i ga c h e s e g u e :
b i n d interfaces o n l y = true
U n m e t o d o p i ù s t r i n g e n t e p e r l i m i t a r e le c o n n e s s i o n i al s e r v e r S a m b a è
q u e l l o d i i n d i c a r e u n a l ista d i ind i r i zz i cu i è c o n s e n t i t o l ' a c c e s s o . Per f a re
q u e s t o va a g g i u n t a u n ' a p p o s i t a r i ga h o s t s a l l o w a l l ' i n t e r n o d e l l a s e z i o n e
[ G l o b a l ] d i s m b . c o n f :
h o s t s allow = 1 9 2 . 1 6 8 . 1 . , 192.168.2.10
C o n q u e s t a r i ga d i e s e m p i o il p e r m e s s o d i c o l l e g a r s i al s e r v e r è a c c o r d a t o
a l le m a c c h i n e ne l la r e t e 1 9 2 . 1 6 8 . 1 . 0 e a l l ' i n d i r i z z o 1 9 2 . 1 6 8 . 2 . 1 0 .
In a l c u n i casi p u ò esse re c o m o d o o n e c e s s a r i o f o r n i r e u n a c c e s s o a l le r isor-
se c o n d i v i s e senza d o v e r r i c h i e d e r e a l c u n a p a s s w o r d . Per q u e s t o b i s o g n a
m o d i f i c a r e la p o l i t i c a d i s icurezza d e l s e r v e r t r a m i t e il p a r a m e t r o security:
p e r d e f a u l t il v a l o r e d i t a l e p a r a m e t r o è user e i n d i c a , a p p u n t o , l ' u t i l i z zo
d i una d i v e r s a p a s s w o r d p e r o g n i u t e n t e cu i è c o n s e n t i t o l ' a c c e s s o a l l e
d i r e c t o r y c o n d i v i s e . A s s e g n a n d o il v a l o r e share al p a r a m e t r o , i n v e c e , sarà
p o s s i b i l e e s p o r t a r e le risorse senza l ' u s o d i u n a p a s s w o r d .
N e l l a s e z i o n e [Global] si c e r c h i d u n q u e la r i ga :
; s e c u r i t y = u s e r
e la si m o d i f i c h i cos i :
s e c u r i t y = share
!####### Authentication #######
I# "security = user" is always a good idea. This will require a Unix account # in this server for every user accessing the server. See # /usr/share/doc/samba-doc/htmldocs/Samba3-H0WT0/ServerType.html
_# in the samba-doc package for details.
Per o t t e n e r e u n a c c e s s o senza p a s s w o r d si d e v e c o n s e n t i r e c h e la c o n n e s -
s i o n e al s e r v e r p o s s a a v v e n i r e m e d i a n t e u n a c c o u n t a n o n i m o (gues t ) .
Per default l 'utente guest è nobody, ma questo può essere modif icato
intervenendo sul parametro guest account nella sezione [Global] di
smb.conf. Per esempio, per utilizzare come guest l 'utente ale si inserisca
questa riga:
guest account = ale
N o n r imane q u i n d i che inser ire guest ok = yes ne l le r i ghe d i s m b . c o n f
d e d i c a t e alla risorsa da c o n d i v i d e r e , così da p e r m e t t e r e l 'accesso a essa
senza password .
Ecco un b l o c c o d i righe d i e s e m p i o :
[video] path = /usr/local/share/video guest ok = yes read only = yes
In q u e s t e r ighe v iene assegna to il n o m e video alla r isorsa, si dà accesso
alla d i rec to ry /usr/iocai/share/video e si c o n s e n t e la conness ione senza
password a un u t e n t e a n o n i m o . Inf ine, si ind ica che la risorsa d e v e essere
a sola le t tura.
Termina ta la con f i gu raz ione de l server, è cons ig l i ab i l e ver i f icare che q u e -
sto funz ion i c o r r e t t a m e n t e . In una conso le si instal l i il p a c c h e t t o smbciient
C o n sudo apt-get instali smbclient e SI lanci il c o m a n d o s e g u e n t e , inse-
r e n d o c o m e <indirizzo> l ' ind i r izzo IP de l server Samba e c o m e <utente>
il n o m e d e l l ' u t e n t e che d e v e e f fe t tua re la conness ione :
smbclient -L / / « i n d i r i z z o -U <utente>
Una vo l ta d i g i t a ta la password d e l l ' u t e n t e samba inser i to , in o u t p u t si o t -
ter rà una ser ie d i i n fo rmaz ion i sul le d ive rse risorse cond iv i se da l server
(Figura 8.10).
Se t u t t o c o r r i s p o n d e a q u a n t o v o l u t o e le r isorse ind ica te nel f i le s m b . c o n f
r isu l tano a t t i ve , la con f i gu raz i one de l server è t e rm ina ta e ci si p u ò d e d i -
care ai c l ien t da conne t t e re .
ale@pitagora:-$ smbclient -L //192.168.1.4 -U ale SPassword: Domain=[PITAGORA] 0S= [Unix] Server=[Samba 3.0.28a]
Sharename Type Comment
IPC$ IPC IPC Service (pitagora server (Samba, Ubuntu)) documenti Disk print$ Disk Printer Drivers PDF Printer PDF ML-1610 Printer Samsung ML-1610
Domain=[PITAGORA] 0S= [Unix] Server=[Samba 3.0.28a]
Server Comment
Workgroup Master
WORKGROUP PITAGORA ale@pitagora:-$ |
Figura 8.70 - Con smbclient -L si ottengono informazioni sulle risorse condivise da un server Samba.
Un altro c o m a n d o ut i le per veri f icare la conf iguraz ione d i un server
Samba è testparm, con tenu to nel pacche t to s a m b a - c o m m o n . Ques to
c o m a n d o , esegu i to senza alcun paramet ro agg iun t i vo , verif ica la corret-
tezza de l f i le smb.conf . Se l ' ou tpu t non rivela errori , qu ind i , il f i le d i con-
f iguraz ione sarà cor re t tamente car icato dal d e m o n e samba sul server.
Callegarsi al server Samba
Se il c l i e n t è u n a m a c c h i n a L i n u x il m o d o p i ù i m m e d i a t o p e r a c c e d e r e
al s e r v e r S a m b a o a d e l l e c a r t e l l e W i n d o w s c o n d i v i s e è q u e l l o d i u s a r e
s m b c l i e n t .
D o p o a v e r i n s t a l l a t o il p a c c h e t t o o m o n i m o p e r c o l l e g a r s i al s e r v e r si
d e v e e s e g u i r e il p r o g r a m m a in q u e s t o m o d o :
smbclient / / < i n d i r i z z o > / < r i s o r s a > -U <utente>
Per e s e m p i o , p e r c o l l e g a r s i al s e r v e r 1 9 2 . 1 6 8 . 1 . 4 c o m e u t e n t e aie a c c e -
d e n d o al la r isorsa d o c u m e n t i si d i g i t a :
s m b c l i e n t / / 1 9 2 . 1 6 8 . 1 . 4 / d o c u m e n t i -U ale
A q u e s t o p u n t o ve r rà c h i e s t o d i i nse r i re la p a s s w o r d p e r l ' u t e n t e . Q u i n d i si
avrà a c c e s s o a una s e m p l i c e i n t e r f a c c i a d i d i a l o g o c o n il server , d e l t u t t o
s i m i l e a q u e l l a d i u n c l i e n t FTP a c a r a t t e r i .
I p r i n c i p a l i c o m a n d i i n t e r n i d e l l ' i n t e r f a c c i a s o n o i c a n o n i c i ed ( p e r c a m b i a r e
d i r e c t o r y ) , dir ( pe r m o s t r a r e il c o n t e n u t o d e l l a d i r e c t o r y c o r r e n t e ) , get ( p e r
sca r i ca re u n f i l e d a l se rve r ) e put ( p e r c a r i c a r e u n f i l e ne l se rver ) . Si p u ò
o t t e n e r e u n e l e n c o d e i c o m a n d i i n t e r n i d i s m b c l i e n t s c r i v e n d o heip.
K l e @ p i t a g o r a : s m b c l i e n t //192.168.1.4/documenti -U ale •Password: Domain=[PITAGORA] 0S=[Unix] Server=[Samba 3.0,28a] smb: \> ed fag smb: \fag\> dir
D 0 Tue Jun 17 16:31:13 2008 D 0 Fri Aug 1 15:51:26 2008
ubuntu D 0 Mon Jun 2 13:36:04 2008 ubuntu stampa D 0 Mon Aug 11 11:21:58 2008
46936 blocks of size 1048576. 15188 blocks available smb: \fag\> ed ubuntu smb: \fag\ubuntu\> dir
D 0 Mon Jun 2 13:36:04 2008 D 0 Tue Jun 17 16:31:13 2008
,. libro.doc 854016 Mon Jun 2 13:38:20 2008 libro.odt 153089 Mon Jun 2 13:37:58 2008
>; Figure D 0 Mon Jun 2 13:28:55 2008
46936 blocks of size 1048576. 15188 blocks available • smb: \fag\ubuntu\> |
1
Figura 8.11 - L'interfaccia di smbclient è simile a quella dei client FTP a caratteri.
Per o p e r a z i o n i p i ù a r t i c o l a t e su l l e r i so rse o , s e m p l i c e m e n t e , p e r u n acces -
so p i ù c o m o d o a esse è c o n s i g l i a b i l e i ns ta l l a re sul c l i e n t il p a c c h e t t o s m b f s
e m o n t a r e la r isorsa r e m o t a su l la m a c c h i n a l o c a l e c o m e se si t r a t t a s s e d i
u n n o r m a l e d i s c o .
Il c o m a n d o d a u t i l i zza re è il c o n s u e t o m o u n t , c o n la s e g u e n t e s in tass i :
sudo mount -t smbfs -o username=<utente> //<indirizzo>/<risorsa> <directory>
Al p o s t o d i <directory> si d e v e inser i re la d i rec to ry , es i s ten te ne l s i s tema,
a l l ' i n t e r n o de l l a q u a l e la risorsa r e m o t a d e v e essere resa d i s p o n i b i l e sul
c l i en t . L ' e s e m p i o a d o t t a t o p e r s m b c l i e n t d i v e n t a q u i n d i p e r m o u n t così :
sudo mount -t smbfs -o username=ale //192.168.1.4/documenti /mnt/samba
D o p o aver e s e g u i t o q u e s t o c o m a n d o , il c o n t e n u t o de l l a risorsa documenti
sarà access ib i le in /mnt/samba. Per m o n t a r e una d i r e c t o r y r e m o t a in au-
t o m a t i c o a l l ' avv io è poss ib i l e i n t e r ven i r e sul f i le / e t c / f s t a b . Ecco q u i n d i
l ' e s e m p i o f in q u i riportato t r a d o t t o in u n ' a p p o s i t a r iga p e r / e t c / f s t a b :
//192.168.1.4/documenti /mnt/samba smbfs username=ale,password=x 0 0
C o m e si p u ò n o t a r e , si è a g g i u n t a u n ' u l t e r i o r e o p z i o n e password (il ca ra t te -
re x va c a m b i a t o c o n l ' e f fe t t i va p a s s w o r d ut i l izzata) p e r avere accesso alla
r isorsa d a l l ' a v v i o d e l c l i en t senza c h e l ' u t e n t e d e b b a d i g i t a r e nu l la .
N e l caso si c o n s e n t a la c o n n e s s i o n e senza p a s s w o r d t r a m i t e l ' u t e n t e g u e s t ,
la riga p e r / e t c / f s t a b d i v e n t a così:
//192.168.1.4/documenti /mnt/samba smbfs guest 0 0
Per o t t e n e r e l 'accesso al server S a m b a da una m a c c h i n a W i n d o w s b i s o g n a
assicurarsi che il w o r k g r o u p i m p o s t a t o ne l la c o n f i g u r a z i o n e d i W i n d o w s
c o r r i s p o n d a a q u e l l o p r e s e n t e ne l f i le / e t c / s a m b a / s m b . c o n f d e l server. Per
m o d i f i c a r e q u e s t ' u l t i m o bas ta en t r a re in s m b . c o n f e c a m b i a r e il va lo re as-
s e g n a t o a l l ' o p z i o n e w o r k g r o u p nel la riga s e g u e n t e :
workgroup = WORKGROUP
Fat to q u e s t o , le r isorse e s p o r t a t e da l server S a m b a sa ranno v is ib i l i da l
c l i en t W i n d o w s c o m e n o r m a l i d i sch i cond iv i s i .
At tenzione. Se sulle macchine client si utilizza Windows Vista è neces-
sario che sul server sia installata una versione 3.x di Samba, presente
comunque nei repository di Ubuntu Server 8.04.
9. Il backup
Eli strumenti per effettuare CDpiB di riser-
va di directory e di intere partizioni
Ef fe t tua re c o p i e d i b a c k u p d i d i r e c t o r y o in te r i d i sch i n o n è un m e r o scru-
p o l o m a una necess i tà , sia c h e si g e s t i s c a n o n u m e r o s e m a c c h i n e inser i te
in un ' a r t i co l a ta L A N sia c h e si a m m i n i s t r i n o un p a i o d i PC in a m b i t o d o -
m e s t i c o . In fa t t i , senza d e i sani e f r e q u e n t i b a c k u p nul la si p o t r à c o n t r o la
ro t tu ra d i un h a r d d isk o la cance l l az i one a c c i d e n t a l e d i f i le i m p o r t a n t i . In
q u e s t i casi, l ' un ica d i fesa p o s s i b i l e è una r a g i o n e v o l e p r e v e n z i o n e .
N e l l e p a g i n e che s e g u o n o , q u i n d i , v e r r a n n o p resen ta t i a l cun i d i f fus i s t ru-
m e n t i d i b a c k u p . Si c o m i n c e r à da i p r o g r a m m i p i ù s e m p l i c i e si g i u n g e r à ,
alla f i ne , a ut i l izzare s i s temi c l i en t - se rve r a d a t t i sia a d a m b i t i az ienda l i sia a
ret i d i m e d i e d i m e n s i o n i .
Copiare intere partizioni Una e l e m e n t a r e m a spesso e f f i cace s t ra teg ia d i b a c k u p cons i s te ne l crea-
re d e i f i le i m m a g i n e d e l l e pa r t i z i on i p resen t i su l l ' ha rd d isk , in m o d o ta l e
che , in caso d i p r o b l e m i , sia poss ib i l e ripristinare il c o r r e t t o f u n z i o n a m e n t o
d i una m a c c h i n a s e m p l i c e m e n t e ritrasferendo su d i s c o le i m m a g i n i d e l l e
pa r t i z ion i .
Un s im i le m e t o d o d i c o n s e r v a z i o n e d e i da t i è l ' i dea le p e r s p o r a d i c h e o p e -
raz ion i d i c o p i a , m a n o n c o n s e n t e la c reaz ione d i b a c k u p i n c r e m e n t a l i . Può
r isu l tare u t i le , t u t t av i a , su s is temi d o m e s t i c i in cu i i d a t i r i levant i v e n g a n o
a g g i o r n a t i d i r a d o , m e n t r e in a m b i e n t i d i m a g g i o r i d i m e n s i o n i la c reaz ione
d i f i le i m m a g i n e p u ò cos t i t u i re u n o s t r u m e n t o e f f i c i e n t e p e r la c l o n a z i o n e
d i s i s temi s imi l i t ra lo ro .
Il backup incrementale permet te di memorizzare solo i cambiament i
avvenuti nei fi le d o p o l 'u l t imo backup effet tuato. La creazione del le
copie di riserva dei dati , una volta ef fet tuato il backup comple to iniziale,
è dunque più rapida rispetto a un backup totale dei file.
P a r t i m a g e è u n ' a p p l i c a z i o n e che , p e r m e z z o d i una g r a d e v o l e e s e m p l i -
ce in te r facc ia , p e r m e t t e d i c reare e ripristinare f i le i m m a g i n e d i pa r t i z i on i
f o r m a t t a t e c o n un n u m e r o n u t r i t o d i f i l esys tem. Ino l t re , d a t o che d u r a n t e
la g e n e r a z i o n e d e i f i le i m m a g i n e i se t to r i v u o t i p r e s e n t i in una p a r t i z i o n e
n o n v e n g o n o c o p i a t i , la ve l oc i t à nel la c o p i a d e i d a t i che si r a g g i u n g e c o n
P a r t i m a g e è p i ù a l ta d i que l l a o t t e n i b i l e c o n c o m a n d i c o m e dd.
La c o m p a t i b i l i t à d e l p r o g r a m m a c o n i f i l e s y s t e m E x t 2 / 3 , Re iser3 , XFS,
JFS e FAT I 6 / 3 2 è e c c e l l e n t e , m e n t r e la g e s t i o n e d i f i l e i m m a g i n e d i par -
t i z i on i HFS (il f i l e s y s t e m d i M a c OS) è in s t a d i o d i b e t a , c i o è a n c o r a n o n
o t t i m a l e ; a n c h e l 'u t i l i zzo d i p a r t i z i o n i N T F S c o n P a r t i m a g e è c o n s i d e r a t o
s p e r i m e n t a l e .
Pur essendo la compat ib i l i tà di Partimage con il f i lesystem NTFS limita-
ta, le probabi l i tà di riuscire a creare un file immagine di una partizione
NTFS aumentano se questa risulta poco frammentata. Prima di avviare
Partimage, quindi , è consigl iabi le deframmentare la part izione NTFS che
si intende copiare.
a. Il backup
Una distribuzione per Partimage
È poss ib i l e instal la re e ut i l izzare P a r t i m a g e a l l ' i n t e r n o d i U b u n t u Server
m a è c o n s i g l i a b i l e avva lers i u n ' a p p o s i t a d i s t r i b u z i o n e Live, c h i a m a t a sy-
stemRescueCD, p e r avv iare il p r o g r a m m a . In q u e s t o m o d o si è cer t i che
t u t t e le pa r t i z i on i d i s p o n i b i l i r i su l t i no c o r r e t t a m e n t e s m o n t a t e .
La d i s t r o S y s t e m R e s c u e C D si scar ica da l l ' i nd i r i zzo :
h t t p : / / w w w . s y s r e s c c d . o r g / M a i n Page
Una vo l t a mas te r i zza ta su C D l ' i m m a g i n e ISO p i ù recen te de l l a d i s t r i buz io -
ne , c h e al m o m e n t o de l l a s tesura d e l l i b ro è s y s t e m r e s c u e c d - x 8 6 - 1 . 0 . 4 . i s o ,
si inser isce il C D e si e f f e t t u a il b o o t de l l a m a c c h i n a da q u e s t o s u p p o r t o .
Elle Modifica i/isualizza Cronologia Segnalibri Strumenti Guida
W " $ ¡¡..s <,<&> http://www.sysresccd.org/Main_Page .. I-jiicE
(SÉMI
System Éèxcue C . HOMEPAGE .FORUMS . NEWS
» Home « Screenshots » download « HowTo . FAQ • ChangeLog-x86 • ChangeLog-ppc » ChangeLog-sparc . System tools « Package-iist-x86 « Package-list-sparc « Kernel » Seta-x86
Main Page English page | Page en f rançais | Pégina en espanol
Welcome to SystemRescueCd Description: SystemRescueCd is a Linux system on a boo tab le CD-ROM for repair ing your system and recover ing your da ta a f te r a crash. It aims to prov ide an easy way to car ry out admin tasks on your compu te r , such as c rea t ing and edi t ing the par t i t ions of the hard disk. It conta ins a lot of system utilities (par ted, par t image, fs tools, . . . ) and basic tools (editors, midnight commander , network tools). It is very easy to use: just boot the CDROM. The kernel suppor ts most of the impo r tan t fi le systems (ext2/ext3, reiserfs, reiser4. xfs, j fs, v fa t , nt fs, iso9660), as well as network filesystems (samba and nfs).
Quick start Guide (edit)
If th is is the f i rs t t ime you use SystemRescueCd, please read the Quick start guide (english)
Recent news about this project [edit]
You can f ind more detai ls about the recent changes made in SystemRescueCd in the news sec t i ons of this websi te . Below are the recent news t ha t give you more details about the
Figura 9.1 - La home page della distribuzione Live SystemRescueCD.
Sul lo s c h e r m o d e l PC appa r i r à una s c h e r m a t a s imi le a l l ' i m m a g i n e s e g u e n -
t e (F igura 9.2). A q u e s t o p u n t o bas ta p r e m e r e il t a s t o I n v i o p e r far avv iare
il s i s tema o p e r a t i v o . Q u a n d o appa r i r à la r iga < < L o a d k e y m a p ( E n t e r f o r
d e f a u l t ) : si d i g i t i 21 e si p r e m a I n v i o p e r se lez ionare la tas t ie ra i ta l iana o
si p r e m a s e m p l i c e m e n t e I n v i o p e r acce t t a re la tas t ie ra d i d e f a u l t , che è
que l l a amer i cana .
Linux Uburitu per server e reti
_ ) ! S _ _ _ _ / S , ¡
i _ S _ / ! ! S i « _ ) / S / \ / ! i ! ! / _ S ! /
; ; : _ < / s \ ( ¡ I _ I ¡ i ¡ ( _ ¡ _í !_s_¡ s_s / s !s , _ ! s is s
Linux kernel-2.6.25 (with Reiser4 and btrfs filesystems support) Both 32bits (IA32) and 64bits (AMD64/EM64T) are supported GParted graphical partitioning tool (partition magic clone) File systems tools (ext3, reiser, ntfs, ...) and LUM2 Disk tools (parted, sfdisk, partimage, testdisk, photorec) Ntfs-3g (ntfs full read-write support) and ntpass (reset windows passwords) Network tools (samba, nfs, ssh, lftp, tcpdump, ...) . Network booting via PXE (press F6 for help)
H * X.Org / Xvesa graphical environments with JUM and Firefox H * Hardware autodetection and Midnight Commander
H > Press F5 for help if you have boot problems with SystemRescueCd <==
I WJelcome to SystemRescueCd for x86 (i486+amd64) - version 1.0.4 HF2,F3,F4,F5,F6,F7 for boot options and more help. •Enter to boot. •boot:
Figura 9.2 - La schermata che appare quando si fa il boot da SystemRescueCD.
D o p o q u a l c h e s e c o n d o appa r i r à il p r o m p t d e i c o m a n d i . O r a è p o s s i b i l e
m o n t a r e il d i s p o s i t i v o sul q u a l e si i n t e n d o n o c reare i f i le i m m a g i n e d e l l e
pa r t i z ion i .
Per non avvert ire t r o p p o i v incol i de l l ' in ter facc ia forn i ta da
SystemRescueCD, può risultare comodo creare inizialmente le immagin i
del le partizioni su di un disco r ig ido esterno. Poi, quando si avrà acces-
so alla distr ibuzione installata sul PC, si trasferiranno i fi le immagine
sull 'effett ivo suppor to di memorizzazione (per esempio, un DVD-ROM)
util izzando le applicazioni che si preferiscono.
Se, p e r e s e m p i o , si fa uso d i un h a r d d isk USB, si c o l l e g a il d i s c o e s t e r n o
al PC e si crea la d i r e c t o r y in cu i ver rà e f f e t t u a t o il m o u n t (mkdir /mnt/disk,
a d e s e m p i o ) .
Fa t to q u e s t o , si m o n t a la p a r t i z i o n e d e l d i s c o in cu i si v o g l i o n o c o p i a r e i
f i le i m m a g i n e : se q u e s t a p a r t i z i o n e è / d e v / s d b 1 , d u n q u e , il c o m a n d o da
lanc iare sarà mount /dev/sdbl /mnt/disk.
N e l caso n o n si c o n o s c a il f i le d i d i s p o s i t i v o d e l l a p a r t i z i o n e da m o n t a r e , si
p u ò e s e g u i r e dmesg ne l la c o n s o l e d i S y s t e m R e s c u e C D n o n a p p e n a si co l -
lega l ' ha rd d isk al PC. Tra le u l t i m e righe d i o u t p u t res t i t u i te d a l c o m a n d o
sa ranno p resen t i l i nee s imi l i a l le s e g u e n t i :
[ 6633.221040] sd 4:0:0:0: [sdb] 39070080 512-byte hardware sectors
(20004 MB)
[ 6633.222010] sd 4:0:0:0: [sdb] Write Protect is off
[ 6633.222018] sd 4:0:0:0: [sdb] Mode Sense: 08 00 00 00
[ 6633.222023] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 6633.222030] sdb: sdbl
Q u e s t e righe i n d i c a n o c h e è s ta to i n d i v i d u a t o un n u o v o d i s p o s i t i v o ne l
s i s tema ( l ' ha rd d isk e s t e r n o a p p e n a c o l l e g a t o ) e che a esso è s ta to asse-
g n a t o il f i le d i d i s p o s i t i v o / d e v / s d b . N e l l ' u l t i m a r iga v e n g o n o p o i e l e n c a t e
t u t t e le pa r t i z i on i p resen t i sul d i sco : in q u e s t o caso l ' un ica p a r t i z i o n e d i -
s p o n i b i l e è / d e v / s d b 1 .
Creare il file immagine di una partizione
E f f e t t u a t o il m o u n t de l l a p a r t i z i o n e su cu i c o p i a r e i f i le i m m a g i n e , n o n
resta che avv ia re P a r t i m a g e l a n c i a n d o ne l la c o n s o l e d i S y s t e m R e s c u e C D il
c o m a n d o partimage. A p p a r i r à la s c h e r m a t a v is ib i le in F igura 9.3.
* Partition to save/restore ramio ramll ramlZ raml3 raml4 raml5 -sswrnmrnrnm^mm
* Image file to create/use
-j Partit ion Image 0.6.?
-unknoun--unknown--unknoun--unknoun--unknoun--unknown-
16.00 MiB 16.00 MiB 16.00 MiB 16.00 MiB 16.00 MiB 16.00 MiB
Action to be done: (*) Save partition into a new image file ( ) Restore partition from an image file ( ) Restore an I1BR from the imagefile1
[ 1 Connect to server IP/name of the server: SSLAlog in disabled at compile time
<Mext (F5>>
<About>
<Exit (F6)>
Port:
Figura 9.3 - L'interfaccia che appare eseguendo il comando partimage.
Uti l izzare l ' i n te r facc ia d i P a r t i m a g e è s e m p l i c e . C o n il t as to Tab si passa da
un e l e m e n t o de l l ' i n t e r f acc ia al success ivo , c o n S p a z i o si se lez iona u n ' o p -
z i one e c o n i tas t i f recc ia su e g i ù ci si spos ta a l l ' i n t e r n o d i un e l e n c o .
Come Act ion è indicata per default Save part i t ion into a new image file. Per creare un f i le i m m a g i n e , q u i n d i , basta se lez ionare d a l l ' e l e n c o in a l t o la
p a r t i z i o n e d i cu i si d e s i d e r a e f f e t t u a r e la c o p i a , p r e m e r e Tab e d i g i t a r e il
p e r c o r s o c o m p l e t o d e l f i le i m m a g i n e da g e n e r a r e . Per e s e m p i o , se si v u o -
le c reare il f i le u b u n t u - 1 4 0 8 0 8 . i m g nel p u n t o d i m o u n t / m n t / d i s k si scr ive
/ m n t / d i s k / u b u n t u - 1 4 0 8 0 8 . i m g e si b a t t e I nv io .
Fa t to q u e s t o si p r e m e F5 p e r p r o s e g u i r e . Ne l la s c h e r m a t a success iva si
p u ò sceg l i e re il l i ve l lo d i c o m p r e s s i o n e d e l f i le i m m a g i n e : le o p z i o n i d i -
sponibili sono None, Gzip e Bzip2. C o n N o n e il f i le ver rà c r e a t o c o n es t r ema r a p i d i t à m a n o n sarà c o m p r e s s o
e, q u i n d i , r isu l terà d i g r a n d i d i m e n s i o n i . G z i p è i n vece la sce l ta d i d e f a u l t
e p resen ta un a c c e t t a b i l e c o m p r o m e s s o t ra ve l oc i t à d i c reaz ione d e l f i le e
d i m e n s i o n i f ina l i d i q u e s t o . B z i p 2 , in f ine , g e n e r e r à un f i le da l l e d i m e n s i o n i
m i n i m e m a i m p i e g a n d o m o l t o t e m p o . Ne l la g r a n p a r t e d e i casi è cons i -
g l i a b i l e sceg l i e re G z i p .
Un'a l t ra o p z i o n e i n te ressan te è If f i n i s h e d success fu l l y : , che c o n s e n t e d i
s tab i l i re l ' az ione da i n t r a p r e n d e r e q u a n d o la c reaz ione d e l f i le i m m a g i n e
t e r m i n a c o n successo. Va lor i d e g n i d i n o t a d e l l ' o p z i o n e s o n o H a l t e Re-
b o o t , p e r s p e g n e r e e r iavv iare la m a c c h i n a a o p e r a z i o n e conc lusa .
Ne l la m e d e s i m a s c h e r m a t a , in f ine , è poss ib i l e i nd i ca re se si d e s i d e r a sud -
d i v i d e r e l ' i m m a g i n e de l l a p a r t i z i o n e in p i ù f i le e in che m o d o b i s o g n a
farlo. La scelta prestabilita per l'opzione Image split mode è Into files w h o s e s ize is:, s e g u i t a da l v a l o r e n u m e r i c o 2 0 3 7 M iB . Per d e f a u l t , q u i n d i ,
i f i le i m m a g i n e v e n g o n o r ipar t i t i in s i ngo l i f i le da l l a d i m e n s i o n e mass ima
d i 2 GB .
I n d i c a n d o A u t o m a t i c s p l i t c o m e va lo re d e l l ' o p z i o n e , i nvece , il f i le i m m a -
g i n e sarà s u d d i v i s o in p i ù f i le so lo ne l caso in cu i f in isse lo spaz io d i s p o -
n ib i l e sul d i s p o s i t i v o . In una s im i le even tua l i t à , ver rà ch i es to d i inser i re il
p e r c o r s o d i un n u o v o f i le i m m a g i n e d o v e r iversare la p a r t e res tan te de l l a
p a r t i z i o n e da c o p i a r e .
Mettendo la spunta su Wait after each volume change, infine, il pro-g r a m m a d a r à m o d o a l l ' u t e n t e d i c a m b i a r e il s u p p o r t o d i m e m o r i z z a z i o n e
in c a s o d i n e c e s s i t à .
Se si i n tende creare de i f i le immag ine da memor izzare po i su C D - R O M
si lasci Into files whose size is: come valore di Image split mode e si ind ichi c o m e valore numer i co 650 o 700 MiB, a seconda del la capienza
de i dischi imp iegat i . Nel caso d i uti l izzo d i D V D - R O M il valore da inserire
è 4400 MiB.
: Macchina Dispositivi Aiuto
sàve partition io image lile
Compression level ( ) Hone (very fast + very big file) (*) Gzip i.gz: medium speed + small image file) ( ) BzipZ (.bzZ: very slow • very small image file)
Options [XI Check partition beforesaving [XI Enter description C ] Overwrite without prompt
Image split mode ( ) Automatic split (when no space left)| (*) Into files whose size is: [ 1 Wait after each volume change
If finished successfully:
<Cont inue (F5)> <Exit (F6)> <t1ain window (F?)>
initializing the operation. [» to cancel, CtrlS to pause, CtrlQ to résumé]
Sce l t i i v a l o r i d e s i d e r a t i p e r le o p z i o n i , si p r e m a F5 . Se lo si d e s i d e r a , q u i n -
d i , si p u ò i nse r i r e una d e s c r i z i o n e c h e s p e c i f i c h i il c o n t e n u t o d e l l a p a r t i z i o -
n e d a c o p i a r e . F a t t o q u e s t o , si s e l e z i o n i il p u l s a n t e O K p r e m e n d o I n v i o .
Life i
Linux Ubuntu per server e reti
A q u e s t o p u n t o c o m p a r i r à una f ines t ra i n f o r m a t i v a sul la p a r t i z i o n e che si
i n t e n d e c o p i a r e . O r a n o n r i m a n e c h e p r e m e r e anco ra I n v i o e a t t e n d e r e
che il f i le i m m a g i n e v e n g a g e n e r a t o . Si p r o c e d a p o i ne l m e d e s i m o m o d o
p e r t u t t e le a l t re pa r t i z ion i da c o p i a r e .
Ripristinare un file immagine su discu
La p r o c e d u r a necessar ia p e r r ip r i s t ina re l ' i m m a g i n e d i una p a r t i z i o n e è
s im i le a q u e l l a segu i t a p e r c reare il f i le i m m a g i n e . Ecco un s u c c i n t o r iep i -
l o g o d e i d ivers i passagg i :
1. si avvia partimage da l la c o n s o l e d i S y s t e m R e s c u e C D e nel la scher-
m a t a che a p p a r e si se lez iona , in a l to , la p a r t i z i o n e da r ip r i s t inare ;
2. si p r e m e il t as to Tab e si d i g i t a il pe r co r so d e l f i le i m m a g i n e . D a t o che
Pa r t image a g g i u n g e a u t o m a t i c a m e n t e l ' es tens ione .000 al p r i m o f i le
i m m a g i n e g e n e r a t o , il n o m e de l f i le da r ipr is t inare d e v e c o n t e n e r e i
cara t te r i .000 f inal i . Per e s e m p i o , se il f i le i m m a g i n e c rea to è d e b i a n .
i m g , il n o m e d e l f i le da r ipr is t inare d i v e n t a d e b i a n . i m g . 0 0 0 ;
restore partition from image file
Opt ions [ ] Simulation of the restoration (nothing is written) t 1 Erase free blocks with zero values
If finished successfully: — a a r IHL » l ' I M »
<Continue (F5)> <Exit (F6)> <Main window (F?)>
{initializing the operation t» to cancel, CtrlS to pause, CtrlQ to resume]
Figura 9.5 - La schermata di Partimage con le opzioni per il ripristino di una partizione.
3. si preme Tab e si sceglie Restore par t i t ion f rom an image fi le come A c t i o n . Si p r e m e F5 p e r p r o s e g u i r e . Ne l la s c h e r m a t a success iva si
i n d i c a n o le o p z i o n i d i r i p r i s t i no v o l u t e : p e r s imu la re l ' o p e r a z i o n e
senza scr ivere nu l la sul la p a r t i z i o n e d i d e s t i n a z i o n e va s p u n t a t a l ' o p -
z i one S i m u l a t i o n o f t h e r e s t o r a t i o n . Poi si p r e m e anco ra F5 ;
4. appa r i r à una f ines t ra c o n t e n e n t e i n f o r m a z i o n i d e t t a g l i a t e sul la par-
t i z i o n e d a ripristinare. A q u e s t o p u n t o si p r e m e I n v i o d u e v o l t e e si
a t t e n d e che l ' o p e r a z i o n e d i r i p r i s t i no a b b i a t e r m i n e . Sarà p o i poss i -
b i le r ip r i s t inare a l t re pa r t i z i on i s e g u e n d o i m e d e s i m i passagg i .
Il backup di file e directory Per una se lez ione g r a n u l a r e d e l l e i n f o r m a z i o n i da c o p i a r e e ripristinare, è
necessar io avva lers i d i p r o g r a m m i che c o n s e n t a n o d i e f f e t t u a r e il b a c k u p
d i r e t t o d i f i le e d i rec to ry . N e l caso d e l ripristino d i una s e m p l i c e car te l la o
d i un g r u p p o d i f i le , in fa t t i , a p p l i c a z i o n i c o m e P a r t i m a g e c o s t r i n g o n o al re-
c u p e r o d e l l ' i n t e r a p a r t i z i o n e c o n t e n e n t e i f i l e d e s i d e r a t i , c o n un n o t e v o l e
s p r e c o d i t e m p o e spesso c o n r isu l ta t i n o n v o l u t i .
In q u e s t a sez ione d e l c a p i t o l o v e r r a n n o d u n q u e p resen ta t i d u e p o t e n t i
s t r u m e n t i p e r il b a c k u p m i r a t o d e i da t i , tar e rsync, f o r n e n d o p e r essi la
c o n s u e t a ser ie d i e s e m p i d ' u s o .
Archiviare con tar
Un p r o g r a m m a semp l i ce e p o t e n t e che consen te d i archiviare il c o n t e n u t o d i
in tere d i rec to ry in un un ico f i le o su d i un nastro è tar. Si è già i ncon t ra to q u e -
sto c o m a n d o nel le p a g i n e d e d i c a t e alla stesura d e g l i scr ipt e, a q u e s t o p u n -
to , è g i u n t o il m o m e n t o d i a p p r o f o n d i r n e la sintassi e conosce rne le opz ion i
d ispon ib i l i . Nel la Tabel la 9.1 v e n g o n o e lenca te le opz ion i pr inc ipa l i d i tar,
que l l e c ioè che se lez ionano la moda l i t à d i f u n z i o n a m e n t o de l p r o g r a m m a .
Tabella 9.1 - Le opzioni principali di tar.
Opzione Funzione
-c o - - c rea te Crea un n u o v o a rch i v io
-x o - e x t r a c t Estrae i f i l e c o n t e n u t i ne l l ' a r ch i v i o
- t o - l i s t M o s t r a in o u t p u t c iò che c o n t i e n e l ' a rch iv io
-r o - a p p e n d A g g i u n g e d e i f i le a un a rch i v io es i s ten te
-u o - u p d a t e A g g i u n g e d e i f i le so lo se q u e s t i s o n o n u o v i o p iù re-
cen t i d e l l e c o p i e m e m o r i z z a t e n e g l i a rch iv i
- d o — c o m p a r e C o n f r o n t a i d a t i m e m o r i z z a t i ne l l ' a r ch i v i o c o n q u e l l i
p r e s e n t i a t t u a l m e n t e ne l s i s tema
-A o - c a t e n a t e
- d e l e t e El imina de i f i le da l l 'a rch iv io . N o n funz iona pe r g l i ar-
chiv i su nast ro
A g g i u n g e il c o n t e n u t o d i u n o o p iù archiv i es is tent i
a l l 'a rch iv io i nd i ca to
Al la serie d i opz ion i i nd ica te va a g g i u n t o un a m p i o v e n t a g l i o d i o p z i o n i
ausi l iar ie. Le p iù i m p o r t a n t i sono -f, pe r ind icare il f i le o ¡1 d i spos i t i vo
c o r r i s p o n d e n t e a l l 'a rch iv io da usare, -z pe r ges t i re archiv i compress i con
gz ip , -j pe r ut i l izzare archiv i bz ip2 e, in f ine, -v pe r a u m e n t a r e il l ive l lo d i
ve rbos i tà d e l l ' o u t p u t . A l t re o p z i o n i d ' u s o c o m u n e ve r ranno p resen ta te nel
corso de i paragra f i seguen t i .
Le operazioni di base con tar
Il p r o g r a m m a tar va lanc ia to f o r n e n d o sulla l inea d i c o m a n d o u n ' o p z i o n e
p r inc ipa le , segu i ta da al t re o p z i o n i nel caso q u e s t e fossero richieste. Ecco
un e s e m p i o :
tar cjf home_ale.tar.bz2 /home/ale
C o n q u e s t o c o m a n d o v iene c rea to (opz ione c) l 'a rch iv io su f i le ( f ) h o m e _
ale. tar .bz2. A l suo in te rno si cop ia l ' i n te ro c o n t e n u t o d i / h o m e / a l e , so t t o -
d i rec to ry c o m p r e s e , c o m p r i m e n d o i da t i m e d i a n t e bz ip2 (j). C o m e si p u ò
no ta re , l 'u t i l izzo de l cara t te re - che p r e c e d e le s i ngo le opz ion i è faco l ta t i -
vo : lo stesso c o m a n d o a v r e b b e p o t u t o essere scr i t to tar -cjf, tar -c -j
-f o p p u r e , ancora , tar --create --bzip2 --file.
Un archivio tar compresso ha l ' indubbio vantaggio di occupare meno
spazio sul supporto rispetto al medesimo archivio non compresso. In
caso di difett i ed errori anche lievi su di un supporto, però, un archivio
compresso rischia di risultare totalmente i l leggibile. Un semplice archivio
tar, invece, nella medesima situazione consentirebbe il recupero parziale
dei contenuti, solitamente fino al blocco danneggiato.
C o n ¡1 s e m p l i c e c o m a n d o a p p e n a i n s e r i t o , q u i n d i , si è e f f e t t u a t o il b a c k u p
c o m p l e t o d e l l a h o m e d i r e c t o r y d e l l ' u t e n t e a le . N e l l ' i m m a g i n e c h e s e g u e
(F igu ra 9 .6) è p o s s i b i l e v e d e r e l ' o u t p u t d e l c o m a n d o , c o n u n p i c c o l o c a m -
b i a m e n t o : in q u e s t o c a s o è s ta ta a g g i u n t a a t a r l ' o p z i o n e v p e r a u m e n t a r e
la v e r b o s i t à d e l p r o g r a m m a .
ale@pitagora:~$ tar cjfv homeale.tar,bz2 /home/ale tar: Rimuovo il '/' iniziale dai nomi dei membri /home/ale/ /home/ale/.gconf/ /home/ale/.gconf/desktop/ /home/ale/.gconf/desktop/gnome/ /home/ale/.gconf/desktop/gnome/accessibility/ /home/ale/, gconf/desktop/gnome/accessibility/keyboard/ /home/ale/.gconf/desktop/gnome/accessibility/keyboard/%gconf. xml /home/ale/.gconf/desktop/gnome/accessibility/%gconf. xml /home/ale/.gconf/desktop/gnome/%gconf.xml /home/ale/.gconf/desktop/gnome/applications/ /home/ale/.gconf/desktop/gnome/applications/windowmanager/ /home/ale/.gconf/desktop/gnome/applications/window manager/%gconf.xml /home/ale/.gconf/desktop/gnome/applications/%gconf.xml /home/ale/,gconf/desktop/gnome/applications/browser/ /home/ale/.gconf/desktop/gnome/applications/browser/%gconf.xml /home/ale/.gconf/desktop/gnome/applications/at/ /home/ale/.gconf/desktop/gnome/applications/at/visual/ /home/ale/.gconf/desktop/gnome/applications/at/visual/%gconf.xml /home/ale/. gconf/desktop/gnome/applications/at/%gconf.xml /home/ale/.gconf/desktop/gnome/background/ /home/ale/.gconf/desktop/gnome/background/%gconf.xml /home/ale/.gconf/desktop/gnome/interface/
Figura 9.6 - L'output del comando tar cjfv. Durante la creazione dell'archivio vengono mostrati a mano a mano i file inseriti.
È c o n s i g l i a b i l e v e r i f i c a r e c h e l ' a r c h i v i o a p p e n a c r e a t o sia la c o p i a e s a t t a d i
q u a n t o p r e s e n t e ne l s i s t e m a , c o n f r o n t a n d o i d a t i d e l p r i m o c o n l ' e f f e t t i v o
c o n t e n u t o d e l f i l e s y s t e m . Per q u e s t a o p e r a z i o n e si e n t r a ne l l a d i r e c t o r y
r a d i c e c o n ed / e si u t i l i zza l ' o p z i o n e - -compare (-d) i n s e r e n d o il p e r c o r s o
c o m p l e t o d e l l ' a r c h i v i o , c o m e n e l l ' e s e m p i o s e g u e n t e :
tar dvf / t m p / h o m e _ a l e . t a r . b z 2
R i p o s t o l ' a r c h i v i o su d i u n s u p p o r t o s i c u r o , q u a n d o si v o r r à c o n t r o l l a r n e il
c o n t e n u t o si m o n t e r à il d i s p o s i t i v o d e l s u p p o r t o , si e n t r e r à ne l l a d i r e c t o r y
d i q u e s t o e si l ance rà tar c o n l ' o p z i o n e --list (-t):
tar tjf h o m e _ a l e . t a r . b z 2
Nel t e r m i n a l e in cui si è e s e g u i t o il c o m a n d o ve r ranno e lencat i t u t t i i f i le e
le d i rec to ry p resent i ne l l 'a rch iv io ind ica to .
Inf ine, pe r r ipr is t inare il c o n t e n u t o de l l ' a rch iv io sul d i sco si en t ra nel la
d i rec to ry rad ice e si e s e g u e tar xjf s e g u i t o da l pe rco rso c o m p l e t o d i
home_a le . ta r .bz2 , c o m e n e l l ' e s e m p i o s e g u e n t e :
tar xjf /media/cdrom/home_ale.tar.bz2
Per esser cert i che i pe rmess i nei f i le r ipr is t inat i c o r r i s p o n d a n o a que l -
li c o n t e n u t i ne l l 'a rch iv io , alla l inea d i c o m a n d o va a g g i u n t a l ' o p z i o n e - -
same-permissions (-p):
tar xjpf /media/cdrom/home_ale.tar.bz2
Ques ta o p z i o n e è imp l i c i ta q u a n d o si estrae un arch iv io da roo t .
Per c o n c l u d e r e ques ta carrel lata sul le ope raz ion i d i base in tar, u n ' o p z i o -
ne ut i le q u a n d o si d e v o n o creare c o p i e d i b a c k u p d i d i rec to ry v o l u m i n o s e
è --exclude, che p e r m e t t e d i esc ludere f i le e in tere d i rec to ry da l l ' a rch iv io
che si v u o l e genera re . Ecco un e s e m p i o :
tar cjf home_ale.tar.bz2 --exclude *.jpg --exclude /home/ale/Musica /home/ale
In ques ta r iga v e n g o n o esclusi da l l ' a rch iv io i f i le che t e r m i n a n o con il suf-
f isso . j pg e l ' in tera d i r e c t o r y / h o m e / a l e / M u s i c a .
Se gl i e l e m e n t i da esc ludere sono m o l t i è cons ig l i ab i l e inserir l i a l l ' I n te rno
d i un f i le d i tes to , un e l e m e n t o pe r c iascuna riga, e r ich iamare po i tar con
l ' opz ione --exclude-from (-x) segu i ta da l pe rco rso de l f i le:
tar cjf home_ale.tar.bz2 -X /tmp/esclusi.txt /home/ale
Richiamando le opzioni -d e -x di tar è stato necessario entrare nella
directory radice prima di poter lanciare il comando. Questo perché, per
default, quando crea un archivio, tar elimina il carattere iniziale / dai
nomi dei file. Per mantenere il percorso completo nei nomi dei file si
deve usare l 'opzione - -absolute-names (-p) nella creazione e nell'estra-
zione degl i archivi.
/home/a le/V ideo mmm
/home/ale/Download /home/a le/doc/mus ica /home/a le/Immagin i
1
" e s c l u s i . t x t " 5L, 76C 5 ,0 -1 Tut
Figura 9.7 - Gli elementi da escludere da un archivio possono venire elencati in un apposito file di testo.
Tar e i backup incrementali
Il p r o g r a m m a ta r p e r m e t t e d i c rea re d i a rch iv i i n c r e m e n t a l i . La g e s t i o n e
d i q u e s t i è a f f i da ta a l l ' o p z i o n e --listed-incrementai (-g) e a l l ' u t i l i zzo d i
un f i l e d i s n a p s h o t : si t r a t t a d i un s e m p l i c e f i l e d i l o g c h e f o r n i s c e a ta r
i n f o r m a z i o n i su l l o s t a t o d e i f i l e e d e l l e d i r e c t o r y p r e s e n t i in un a rch i v i o .
A v e n d o a d i s p o s i z i o n e una " i s t a n t a n e a " d e l c o n t e n u t o p iù r e c e n t e d i un
arch iv io , q u i n d i , il p r o g r a m m a p u ò creare il success ivo f i le i n c r e m e n t a l e
i n d i v i d u a n d o i f i le n u o v i e q u e l l i m o d i f i c a t i d a l l ' u l t i m a vo l ta .
Q u a n d o si crea un a rch i v io i n c r e m e n t a l e b i s o g n a g e n e r a r e a n c h e il re la t i -
v o f i le d i s n a p s h o t . Ecco un e s e m p i o p e r il b a c k u p de l l a d i r e c t o r y / e t c :
tar cf etc-150808.tar -g /tmp/etc.inc /etc
C o n q u e s t o c o m a n d o v i e n e c r e a t o l ' a rch iv io in iz ia le e t c - 1 5 0 8 0 8 . t a r , che è
un a rch iv io d i t i p o c o m p l e t o , m e n t r e le i n f o r m a z i o n i p e r i f u tu r i f i le incre-
m e n t a l i s o n o m e m o r i z z a t e n e l l o s n a p s h o t / t m p / e t c . i n c .
Q u a n d o si vo r rà a g g i o r n a r e il b a c k u p de l l a d i r e c t o r y / e t c b i s o g n e r à sem-
p r e fa re r i f e r i m e n t o al f i le d i s n a p s h o t i n d i c a t o in p r e c e d e n z a , così d a
p e r m e t t e r e a tar d i g e n e r a r e d e g l i arch iv i i nc remen ta l i :
tar cf etc-210808.tar -g /tmp/etc.inc /etc
M e d i a n t e ques t i d u e c o m a n d i , d u n q u e , si è p r ima c rea to un arch iv io c o m -
p l e t o (e tc -150808. ta r ) e po i un arch iv io i nc remen ta le (e tc -210808. tar ) . Per
estrarre il c o n t e n u t o d e g l i archivi e r ipr is t inare così le vers ion i p iù agg io r -
nate de i f i le in / e t c , b i sogna segu i re il pe rco rso d i c reaz ione d e g l i archivi
r i c h i a m a n d o il f i le d i snapsho t re la t ivo:
tar xf etc-150808.tar -g /tmp/etc.inc tar xf etc-210808.tar -g /tmp/etc.inc
Nei nomi degli archivi incrementali usati come esempio la data è stata
inserita manualmente, per maggiore chiarezza. Per indicare la data in
modo automatico basta impiegare il comando date, come si è visto in
precedenza:
tar cf etc-$(date +%d%m%y).tar -g /tmp/etc.inc /etc
Per conoscere la sintassi di date si legga la man page del comando (man
date).
Archivi multivolume
È poss ib i le creare con tar archivi m u l t i v o l u m e , archiv i c ioè che v e n g o n o
suddiv ìs i e memor i zza t i su p iù suppo r t i . C iò p u ò r isul tare ut i le nel caso in
cui, pe r il b a c k u p de i p rop r i da t i , si ut i l izz ino nastr i , uni tà Z ip o semp l i c i
f l o p p y d isk e un s i ngo lo s u p p o r t o n o n risult i su f f i c ien te pe r c o n t e n e r e
l ' in tero arch iv io ta r che si i n t e n d e creare.
L 'opz ione necessaria pe r ges t i re g l i archivi m u l t i v o l u m e è --muiti-voiume
(-M): u t i l i zzando ques ta o p z i o n e , nel m o m e n t o in cui lo spazio d i s p o n i b i l e
su un s u p p o r t o si esaur isce il p r o g r a m m a a t t e n d e che l ' u ten te inserisca
un n u o v o s u p p o r t o e così fa pe r i successivi , f i nché l ' in tero arch iv io non è
s ta to c o p i a t o .
N e l l ' i m m a g i n e s e g u e n t e (Figura 9.8) è p resen te un c o m a n d o d ' e s e m p i o
pe r la c reaz ione d i un arch iv io m u l t i v o l u m e . A l l e o p z i o n i --create e --mul-
ti-volume si a g g i u n g e l 'ut i l izzo de l f i le d i d i spos i t i vo / dev /s tO c o m e a rgo-
m e n t o d i --file. Ne l la r iga d ' e s e m p i o r ipor ta ta , d u n q u e , la car te l la / r o o t
v iene archiv iata su un 'un i tà a nast ro (il f i le d i d i spos i t i vo /dev /s tO, a p p u n t o )
u t i l i zzando un arch iv io m u l t i v o l u m e .
root@pitagora:-# tar --create --multi-volurne --file=/dev/stO /root|
Figura 9.8 - Una riga d'esempio per la creazione di un archivio multivolume su nastro.
Può accadere che tar non riconosca cor re t tamente l 'avvenuto raggiungi -
men to del la f ine di un nastro. Tramite l 'opzione -L, qu ind i , si può indicare
la lunghezza massima che deve avere un s ingolo segmen to d i un archivio
mul t ivo lume, espressa in KB. Q u a n d o un segmen to ha ragg iunto tali
d imensioni , il p rog ramma chiederà al l 'utente d i inserire un nuovo nastro.
O g n i s e g m e n t o d i u n a r c h i v i o m u l t i v o l u m e p u ò e s s e r e g e s t i t o c o m e se si
t r a t t a s s e d i u n a r c h i v i o a sé s t a n t e , senza r i c h i e d e r e l ' u t i l i zzo d e l l ' o p z i o n e
- - muiti-voiume in f ase d i e s t r a z i o n e . Q u e s t o a m e n o c h e sul s e g m e n t o
n o n sia p r e s e n t e u n f i l e il c u i c o n t e n u t o è s t a t o s u d d i v i s o su p i ù s u p p o r t i ;
in ta l c a s o , sarà n e c e s s a r i o e s t r a r r e i s e g m e n t i d e l l ' i n t e r o a r c h i v i o in cu i è
p r e s e n t e t a l e f i l e r i c h i a m a n d o l ' o p z i o n e --muiti-voiume.
Copie sincronizzate con rsync
G r a z i e al p r o g r a m m a rsync, c h e v i e n e i n s t a l l a t o p e r d e f a u l t su U b u n t u
Server , è p o s s i b i l e e f f e t t u a r e c o p i e d i i n t e r e d i r e c t o r y t r a s f e r e n d o s o l o i
d a t i c h e s o n o c a m b i a t i d i v o l t a in v o l t a .
C i ò p u ò risultare m o l t o c o m o d o p e r i b a c k u p d i m a c c h i n e in r e t e o p p u r e
p e r c r e a r e d e l l e c o p i e d i r i serva d i c a r t e l l e d i a m p i e d i m e n s i o n i ( d i r e c t o r y
d i f i l e m u l t i m e d i a l i , p e r e s e m p i o ) in m o d o r a p i d o e d e f f i c i e n t e .
N e l p r i m o e s e m p i o d i u t i l i z zo d i rsync si c o p i a il c o n t e n u t o d e l l a d i r e c t o r y
/ h o m e / a l e su / m e d i a / d i s k / b a c k u p , il f i l e d i d i s p o s i t i v o d i u n h a r d d i s k
e s t e r n o :
sudo rsync -av /home/ale/ /media/disk/backup/
N e l l a r i ga r i p o r t a t a si fa u s o d e l l ' o p z i o n e -a d i rsync p e r i m p o s t a r e la
m o d a l i t à a r c h i v i o : q u e s t a p e r m e t t e d i e f f e t t u a r e u n a c o p i a f e d e l e d e l l a
d i r e c t o r y i n d i c a t a e d i t u t t e le s o t t o d i r e c t o r y p r e s e n t i in essa, p r e s e r v a n d o
le d a t e o r i g i n a r i e d e i f i l e , cos ì c o m e i p e r m e s s i , i g r u p p i e i p r o p r i e t a r i .
L ' o p z i o n e -v, q u i n d i , i n c r e m e n t a il l i ve l l o d i v e r b o s i t à d e l l ' o u t p u t .
N e l l ' i m m a g i n e s e g u e n t e ( F i g u r a 9 .9 ) è p o s s i b i l e v e d e r e ne l t e r m i n a l e il
r i s u l t a t o d e l c o m a n d o a p p e n a i m p a r t i t o .
ale@pitagora:-$ sudo rsync -av /home/ale/ /media/disk/backup/ building file list ... rsync: readlink "/home/ale/.gvfs" failed: Permission deni ed (13) done . / .ICEauthority .Xauthority .bashhistory .bashjlogout .bashrc . dmrc .esdauth . fbrc .festival history .festivalrc .fonts.conf .gksu.lock .glivrc .gnubiffrc •grip
,grip-cdda2wav .grip-flac .grip-lame .grip-oggenc
Figura 9.9 - L'output del comando rsync per copiare l'intero contenuto di /home/ale su un disco esterno, t: 1
Le v o l t e s u c c e s s i v e in cu i si l a n c e r à lo s t e s s o c o m a n d o rsync il c o n t e n u t o
d e l l e d i r e c t o r y d i o r i g i n e ( n e l l ' e s e m p i o / h o m e / a l e ) e d i d e s t i n a z i o n e ( / m e -
d i a / d i s k / b a c k u p ) v e r r à " s i n c r o n i z z a t o " , c o p i a n d o su l la s e c o n d a d i r e c t o r y
s o l o i f i l e m o d i f i c a t i o a g g i u n t i d a l l ' u l t i m a e s e c u z i o n e d e l c o m a n d o .
N e l s e c o n d o e s e m p i o si e f f e t t u a la c o p i a d i u n a c a r t e l l a l o c a l e su u n
s i s t e m a r e m o t o . La s in tass i d a u t i l i z z a r e in r s y n c p e r la c o p i a in r e t e è
d e l t u t t o s lm i l e a q u e l l a a d o t t a t a in p r e c e d e n z a , c o n l ' ovv ia d i f f e r e n z a d i
d o v e r i n d i c a r e il n o m e d e l l ' h o s t e , se n e c e s s a r i o , il n o m e d e l l ' u t e n t e cu i
inv ia re i d a t i .
Il m e t o d o p i ù s e m p l i c e p e r t ras fe r i re f i le in r e m o t o c o n rsync è q u e l l o d i
s f ru t ta re SSH: nel la m a c c h i n a che v i e n e c o n t a t t a t a , q u i n d i , d e v e essere
a t t i v o e o p p o r t u n a m e n t e c o n f i g u r a t o un serve r SSH.
Ne l la r iga s e g u e n t e la d i r e c t o r y / h o m e / m a r i o v i e n e c o p i a t a ne l la car te l la
. / c o p i a d e l l ' u t e n t e m a n o sul c o m p u t e r b a c k u p . u f f i c i o . l a n :
sudo rsync -avz -e ssh --delete /home/mario/ mar io@backup. ufficio.
lan:./copia
C o m e si p u ò v e d e r e , l ' i n s i eme d i o p z i o n i inser i te sul la l inea d i c o m a n d o è
un p o c o p i ù a r t i co l a t o r i s p e t t o a l l ' e s e m p i o p r e c e d e n t e .
I n n a n z i t u t t o è stata a g g i u n t a l ' o p z i o n e -z al g r u p p o -av: q u e s t a fa sì che i
d a t i v e n g a n o c o m p r e s s i d u r a n t e i t r a s f e r i m e n t i e c i ò c o n s e n t e d i r e n d e r e i
b a c k u p in re te p iù rap id i . L ' o p z i o n e -e, q u i n d i , è segu i t a da l la shel l r e m o t a
(ssh) da ut i l izzare p e r il c o l l e g a m e n t o c o n la m a c c h i n a d i d e s t i n a z i o n e ,
m e n t r e --delete fa cance l l a re da l la d i r e c t o r y d i d e s t i n a z i o n e i f i le n o n p iù
p r e s e n t i ne l la d i r e c t o r y d i o r i g i n e .
Bacula, un server per il backup Bacuia è un c o m p l e t o e a r t i c o l a t o s i s tema c l i en t - se rve r p e r la g e s t i o n e d e i
b a c k u p . Sì t r a t t a d ì u n ' a p p l i c a z i o n e i n d u b b i a m e n t e c o m p l e s s a , la cu i c o n -
f i g u r a z i o n e p u ò var ia re in m o d o n o t e v o l e a s e c o n d a d e l l e i m p o s t a z i o n i
d e l l ' a m b i e n t e d i re te e d e l l e p r o p r i e necess i tà .
In q u e s t e p a g i n e , d u n q u e , ver rà p r o p o s t a una c o n f i g u r a z i o n e d i base d i
Bacu la a d a t t a p e r un s i s tema d i b a c k u p m i n i m a l e .
Installazione di Bacula
La s t ru t t u ra m o d u l a r e d i Bacu la c o n s e n t e d i a d a t t a r e il s i s tema a l le p i ù
svar ia te c o n f i g u r a z i o n i . Ne l l a Tabe l la 9 .2 v e n g o n o e l e n c a t e le c o m p o n e n t i
c h e c o s t i t u i s c o n o l ' i m p a l c a t u r a d e l l ' a p p l i c a z i o n e .
Linux Ubuntu per server e reti
Tabella 9.2 - Le componenti di Bacula.
D i r e c t o r
D a e m o n
D e m o n e c h e a m m i n i s t r a e c o o r d i n a le o p e r a z i o n i p r in -
c ipa l i d e l s i s tema d i b a c k u p
S t o r a g e
D a e m o n
C o m p o n e n t e c h e si o c c u p a d i ges t i r e i d i spos i t i v i in
cu i v e n g o n o m e m o r i z z a t i i b a c k u p . D e v e essere avv ia-
t o sul c o m p u t e r su cu i s o n o p r e s e n t i ta l i d i spos i t i v i
Fi le D a e m o n D e m o n e c h e va avv ia to su o g n i m a c c h i n a d i cu i si de-
s idera e f f e t t u a r e il b a c k u p
C o n s o l e L ' in ter facc ia m e d i a n t e la q u a l e si d i a l o g a c o n il D i r e c t o r
D a e m o n e si g e s t i s c o n o le o p e r a z i o n i in Bacula
C a t a l o g Il d a t a b a s e nel q u a l e v e n g o n o inser i t i i d a t i re la t iv i ai
b a c k u p
Ne l la p r o c e d u r a d i i ns ta l laz ione c h e s e g u e , p e r m a g g i o r e ch iarezza, si p r e -
s u p p o n e che i t r e d e m o n i necessar i al f u n z i o n a m e n t o d i Bacu la s iano t u t t i
a t t i v i sul la m e d e s i m a m a c c h i n a . La g e s t i o n e d e l l e o p e r a z i o n i d i b a c k u p
(D i rec to r D a e m o n ) , que l l a d e i d i spos i t i v i d i m e m o r i z z a z i o n e p resce l t i (Sto-
rage D a e m o n ) e q u e l l a d e i d a t i d i cu i si v u o l e e f f e t t u a r e il b a c k u p (File
D a e m o n ) , d u n q u e , neg l i e s e m p i r i po r t a t i a v v e n g o n o su d i un u n i c o PC.
Per usare Bacu la è necessar io ins ta l lare un s i s tema d i d a t a b a s e a scel ta
t ra M y S Q L , SQL i t e e P o s t g r e S Q L . Per l ' i ns ta l laz ione d i e s e m p i o si è sce l t o
M y S Q L , q u i n d i p r i m a d i insta l lare Bacula b i s o g n a e f f e t t u a r e l ' i ns ta l laz ione
d e l d a t a b a s e sce l to ( i ns ta l l ando M y S Q L p r i m a d i Bacu la si consen t i r à a
q u e s t ' u l t i m o d i g e n e r a r e t u t t i i f i le d i c o n f i g u r a z i o n e d i de fau l t ) :
sudo apt-get instali mysql-server
D u r a n t e l ' i ns ta l laz ione d e l p a c c h e t t o ver rà r i ch ies to l ' i n s e r i m e n t o d i una
p a s s w o r d p e r l ' u t e n t e a m m i n i s t r a t o r e d e l d a t a b a s e , r o o t (F igura 9.10) .
Una vo l ta d i g i t a t a la p a s s w o r d d u e v o l t e p e r s icurezza, la p r o c e d u r a d ' i n -
s ta l laz ione d i M y S Q L t e r m i n e r à .
A q u e s t o p u n t o si p o s s o n o ins ta l lare i necessar i p a c c h e t t i d i Bacula c o n il
c o m a n d o sudo apt-get instali bacula. Il g e s t o r e d i p a c c h e t t i farà a p p a r i -
re una s c h e r m a t a in cu i ver rà r i ch ies to d i inser i re l ' h o s t n a m e d o v e risiede il
d a t a b a s e M y S Q L : d a t o che in q u e s t a c o n f i g u r a z i o n e d i e s e m p i o si ut i l izza
9. Il backup
una sola m a c c h i n a , è su f f i c i en te p r e m e r e I n v i o p e r se lez ionare l oca lhos t ,
c i o è la m a c c h i n a loca le .
onfigurazione del pacchetto
Coni igurazione in corso di mysql--seruer-5 . G | Sebbene non sia obbligatoria, si raccomanda d'impostare una password per l'utente d'amministrazione «root» di MySQL.
Se questo campo è lasciata vuoto, la password non uiene cambiata.
Nuova password per l'utente «root» di MySQL:
Nel la s c h e r m a t a success iva b i s o g n a i nd i ca re q u a l e u t e n t e a m m i n i s t r a il
se rver M y S Q L . P r e m e n d o I n v i o ver rà c o n f e r m a t a la scel ta d i d e f a u l t , r oo t .
Fa t to q u e s t o , si d e v e d i g i t a r e e p o i c o n f e r m a r e la p a s s w o r d inser i ta d u r a n -
t e la c o n f i g u r a z i o n e d i M y S Q L server (F igura 9.11) .
Figura 9.11 - In questa schermata della configurazione di Bacula si inserisce la password per amministrare MySQL.
In f ine, si c o n f e r m a c o n I n v i o II n o m e d e l l ' u t e n t e p r o p r i e t a r i o d e l d a t a b a s e
usa to da Bacula (bacula) e si inser isce una p a s s w o r d p e r t a l e u t e n t e , d i -
g i t a n d o l a una s e c o n d a vo l t a p e r c o n f e r m a . A q u e s t o p u n t o l ' i ns ta l laz ione
d i Bacula è t e r m i n a t a e si p u ò p r o c e d e r e alla c o n f i g u r a z i o n e d i q u e s t o
s is tema d i b a c k u p .
La configurazione passo per passo
La s t ru t tu ra a r t i co la ta d i Bacu la richiede c h e c iascuna c o m p o n e n t e d e l
s i s tema v e n g a o p p o r t u n a m e n t e c o n f i g u r a t a . I f i le d i c o n f i g u r a z i o n e d e l l e
d i ve rse c o m p o n e n t i s o n o t u t t i racco l t i nel la d i r e c t o r y / e t c / b a c u l a .
Si c o m i n c i a i n d i c a n d o il d i s p o s i t i v o d i b a c k u p che si i n t e n d e ut i l izzare
i n t e r v e n e n d o nel f i le d i c o n f i g u r a z i o n e de l l a c o m p o n e n t e S t o r a g e , / e t c /
b a c u l a / b a c u l a - s d . c o n f . Ne l f i le d i d e f a u l t f o r n i t o da l la d i s t r i b u z i o n e s o n o
p resen t i , c o m m e n t a t e , d e l l e r i g h e d i c o n f i g u r a z i o n e p e r un n u t r i t o n u m e -
ro d i d i spos i t i v i d i b a c k u p .
Per e s e m p i o , ecco le r ighe necessar ie pe r uti l izzare un 'un i tà a nastro DDS-4:
Device {
Name = "Tape Drive"
Device Type = tape
Media Type = DDS-4
Archive Device = /dev/stO
AutomaticMount = yes;
AlwaysOpen = Yes;
ReraovableMedia = yes;
RandomAccess = no;
}
C o m e si p u ò v e d e r e , le i n f o r m a z i o n i p e r la c o n f i g u r a z i o n e v e n g o n o for -
n i te in g r u p p i d i righe racch iuse t ra pa ren tes i g r a f f e e p r e c e d u t e d a una
paro la ch iave (che in q u e s t o caso è Device).
N e l l e r i g h e r i p o r t a t e v i e n e i n n a n z i t u t t o a s s e g n a t o un n o m e u n i v o c o (Name)
al d i s p o s i t i v o d i b a c k u p , Tape Dr i ve . La r iga Media Type i nd ica p o i il t i p o
d i s u p p o r t o a d o t t a t o , m e n t r e Archive Device c o n t i e n e il f i le d i d i s p o s i t i v o
re la t i vo a l l ' un i tà d i b a c k u p p resce l ta .
Le r i g h e q u i i n d i c a t e s o n o g ià p resen t i ne l f i le d i c o n f i g u r a z i o n e / e t c / b a c u -
l a / b a c u l a - s d . c o n f : p e r a t t i va r le è su f f i c i en te e l i m i n a r e il ca ra t t e re d i c o m -
m e n t o in iz ia le ('#') da c iascuna d i esse.
» ¡ . • ! i - , i L ì f e s m . : « p r .
L'unità a nastro DDS-4 consente la memorizzazione di 20 GB di dat i su
un singolo nastro. Il sistema DDS (Digital Data Storage), nelle sue varie
incarnazioni dal DDS-1 al DAT-160, fa uso di nastri digital i DAT. Il forma-
to più recente, DAT-160 permet te di salvare 80 GB di informazioni per
suppor to (160 GB con compressione).
Ne l la c o n f i g u r a z i o n e d i d e f a u l t d i Bacu la s o n o p resen t i d e l l e r i g h e pe r
e f f e t t u a r e c o p i e d i b a c k u p d e l C a t a l o g s tesso. Per c o m p l e t a r e la c o n f i g u -
raz ione d i q u e s t o " j o b " ( lavoro) d i b a c k u p p r e d e f i n i t o , p e r ò , è necessar io
m o d i f i c a r e una riga d e l f i le / e t c / b a c u l a / b a c u l a - s d . c o n f : si t r a t t a de l l a r iga
Archive Device = che Segue Name = FileStorage e Media Type = File (nel
f i le b a c u l a - s d . c o n f d i d e f a u l t su U b u n t u Server è la riga 49). In F igura 9 .12
q u e s t a r iga v i e n e ev i denz i a ta .
In q u e s t a r iga va a g g i u n t o il p e r c o r s o d o v e si d e s i d e r a che i b a c k u p su f i le
v e n g a n o m e m o r i z z a t i . Per e s e m p i o , pe r ut i l izzare a t a l e s c o p o la d i r e c t o r y
/ m n t / b a c k u p la r iga d e v e d i v e n t a r e così:
Archive Device = /mnt/backup
Ef fe t tua ta q u e s t a m o d i f i c a , è poss ib i l e salvare il f i le / e t c / b a c u l a / b a c u l a -
sd .con f . Poi si d e v o n o a g g i u n g e r e d e l l e a p p o s i t e is t ruz ion i in / e t c / b a c u l a /
bacu la -d i r . con f , il f i le d i c o n f i g u r a z i o n e d e l D i r e c t o r D a e m o n .
In q u e s t o f i le b i s o g n a a g g i u n g e r e d e i b l o c c h i d i r i g h e p e r d e f i n i r e u n o
S t o r a g e (il d i s p o s i t i v o d i m e m o r i z z a z i o n e da ado t t a re ) , un F i leSet (le d i -
rec to ry d i cu i si i n t e n d e e f f e t t u a r e il b a c k u p ) e una S c h e d u l e (la p ian i f i ca -
z i one d e l backup ) .
Si c o m i n c i a da l la sez ione S t o r a g e . Ecco d e l l e r i g h e a d a t t e al d i s p o s i t i v o
d ' e s e m p i o T a p e D r i v e c r e a t o in p r e c e d e n z a in b a c u l a - s d . c o n f :
Storage {
Name = TapeDrive
Address = eraclito.ufficio, lan
SDPort = 9103
Password = "Cv70F6pflt6pBopT4vQ0nigDrR0v3LT3Cgkiyj"
Device = "Tape Drive"
Media Type = DDS-4
}
La r iga d i Address c o n t i e n e l ' i nd i r i zzo F Q D N o l ' IP de l l a m a c c h i n a in cu i
è p r e s e n t e il d i s p o s i t i v o d i m e m o r i z z a z i o n e , m e n t r e la Password i nd i ca ta
d e v e c o r r i s p o n d e r e al la p a s s w o r d p r e s e n t e ne l f i le b a c u l a - s d . c o n f , nel la
sez ione D i r e c t o r (F igura 9.13) . La r iga Device, q u i n d i , r i po r t a il v a l o r e de l l a
r iga Name ne l f i le b a c u l a - s d . c o n f p e r il d i s p o s i t i v o p resce l t o . Il Media Type,
infi ne, d e v e c o r r i s p o n d e al Media Type i n d i c a t o s e m p r e in b a c u l a - s d . c o n f .
A q u e s t o p u n t o si p o s s o n o a g g i u n g e r e le i n f o r m a z i o n i sui d a t i da inser i re
nel b a c k u p . B i sogna c reare una sez ione F i leSet s im i le al la s e g u e n t e :
FileSet {
Name = "BackupFiles"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /home
} }
# on the "Archive Device" directive in the Device # resource. If you change the Name and/or the # "Media Type" in the Device resource, please ensure # that dird.conf has corresponding changes. #
Storage { # definition of myself Name = pitagora-sd SDPort = 9103 # Director's port WorkingDirectory = "/var/lib/bacula" Pid Directory = "/var/run/bacula" Maximum Concurrent Jobs = 20 SDAddress = 127.0.0.1
}
# List Directors who are permitted to contact Storage daemon # Director {
Name = pitagora-dir Password = "Cv70F6pflt6pBopT4vQOnigDrR0v3LT3Cgki
-- VISUALE LINEA -- 27,1 2%
Figura 9.13 - La password ih bacula-dir.conf deve corrispondere a quella nella sezione Director di bacula-sd.conf.
A q u e s t o F i l eSe t v i e n e a s s e g n a t o il n o m e B a c k u p F i l e s e v e n g o n o a t t i -
v a t e le o p z i o n i p e r c r e a r e u n a f i r m a M D 5 p e r o g n i f i l e d i cu i si e f f e t t u a il
b a c k u p ( r iga s i g n a t u r e = MD5) e p e r c o m p r i m e r e i f i l e m e d i a n t e G Z I P ( r iga
c o m p r e s s ion=GZIp).
La r i ga c h e in iz ia c o n File = i n d i c a c h e si v u o l e c r e a r e una c o p i a d i b a c k u p
d e l l a d i r e c t o r y / h o m e e d i t u t t e le s o t t o d i r e c t o r y a p a r t i r e d a essa. Per g e -
s t i re il b a c k u p d i p i ù c a r t e l l e si a g g i u n g o n o u l t e r i o r i r i g h e File, in q u e s t o
m o d o :
File = / u s r / l o c a l
File = /etc
File = /root
A q u e s t o p u n t o si s t a b i l i s c e q u a n d o e f f e t t u a r e il b a c k u p d e l l e d i r e c t o r y
i n d i c a t e .
Linux Uburitu per server e reti
Ecco q u i n d i u n ' i p o t e t i c a sez ione S c h e d u l e d a inser i re in bacu la -d i r . con f :
Schedule { Name = "BackupDaily" Run = Full daily at 08:00
La c o n s u e t a riga Name i nd ica il n o m e da d a r e a q u e s t a Schedu le . Ne l la riga
Run, q u i n d i , si c o n f i g u r a l ' e s e c u z i o n e d i un b a c k u p c o m p l e t o (Full) d e i d a t i
t u t t i i g i o r n i (daily) a l le o r e 8 : 0 0 A M (at os:oo) . I t i p i d i b a c k u p p o s s o n o
essere Full, Differential e incrementai m e n t r e a l t re r i g h e Run c o n d i f f e -
rent i i nd i caz ion i t e m p o r a l i p o s s o n o essere le s e g u e n t i :
Run = Incremental mon-fri at 20:05
Run = Differential on 1 at 05:01
La p r i m a r iga d ' e s e m p i o e f f e t t u a un b a c k u p i n c r e m e n t a l e da l l uned ì al
v e n e r d ì a l le 2 0 : 0 5 , m e n t r e la s e c o n d a crea un b a c k u p d i f f e renz ia le o g n i
p r i m o d e l m e s e a l le 5 :01 . Per ave re un e l e n c o esaus t i vo d e i va lo r i che è
poss ib i l e inser i re ne l le r i g h e Run si v e d a la G u i d a d i Bacula a l l ' i nd i r i zzo :
h t t p : / / w w w . b a c u l a . o r g / e n / d e v - m a n u a l / B a c u l a Users G u i d e . h t m l
File Modifica Visualizza Cronologia Sfignalibri Strumenti Guida
' : http://www.bacula.org/en/dev-manual/What is Bacila htmi*SECT;ON0Ò43000000000ui.
Interactions Between the Bacula Services BUE:
The following block diagram shows the typical interactions between the Bacula Services for a backup job. Each block represents in general a separate process (normally a daemon). In general, the Director oversees the f low of information. It also maintains the Catalog.
rU> Aiutata» • D«U
I Next| Up| Previousj Comenis| Index|
N e x t ^ T h e Cwiwnt fflifttft Of Up : Bacula User's Guide P r e v i o u s : List of Tables Con t e n t s I n d e x
Completato Figura 9.14 - La Guida di Bacula online è una preziosissima fonte di informazioni sull'uso del programma.
Un backup differenziale memorizza tut t i i f i le modif icat i da l l 'u l t imo
backup comple to . A differenza del backup incrementale, qu ind i , per
ripristinare la versione più recente dei dat i sarà sufficiente avere accesso
al l 'u l t imo backup comp le to e al l 'u l t imo backup differenziale ef fet tuato.
A d e s s o n o n r i m a n e c h e r a c c o g l i e r e le i n f o r m a z i o n i d i S t o r a g e , F i leSet e
S c h e d u l e in un u n i c o J o b c r e a n d o la s e z i o n e re la t iva nel f i le bacu la -d i r .
c o n f . Ecco la :
Job {
Name = "LocalBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "BackupFiles"
Schedule = "BackupDaily"
Storage = TapeDrive
Write Bootstrap = "/var/lib/bacula/LocalBackup.bsr"
}
Le r i g h e c h e in i z iano c o n FileSet, schedule e Storage d e v o n o a v e r e c o m e
a r g o m e n t i i va lo r i inser i t i ne l l e righe Name d e l l e r i spe t t i ve sez ion i d e l f i le
b a c u l a - d i r . c o n f . Il n o m e d e l J o b , n e l l ' e s e m p i o LocalBackup, s o l i t a m e n t e
c o r r i s p o n d e o r i m a n d a al n o m e de l l a m a c c h i n a d i cu i si v u o l e e f f e t t u a r e
il b a c k u p .
La riga write Bootstrap, i n v e c e , i nd i ca il f i l e ne l q u a l e si d e s i d e r a scr i-
v e r e le i n f o r m a z i o n i d i b o o t s t r a p p e r il J o b c o r r e n t e : un f i le d i b o o t s t r a p
c o n s e n t e d i r i p r i s t i na re un s i s tema senza c h e sia necessar ia la p resenza d i
un C a t a l o g . A t t i v a r e un f i le d i b o o t s t r a p p e r un J o b , q u i n d i , è a l t a m e n t e
r a c c o m a n d a b i l e .
D o p o ave r i nse r i t o q u e s t e u l t i m e righe la c o n f i g u r a z i o n e è t e r m i n a t a . E
d u n q u e p o s s i b i l e sa lvare le m o d i f i c h e al f i l e b a c u l a - d i r . c o n f e c h i u d e r e
l ' e d i t o r u t i l i zza to . O r a n o n r i m a n e che fa r l e g g e r e la c o n f i g u r a z i o n e a g -
g i o r n a t a ai d a e m o n d i Bacu la , t r a m i t e i c o m a n d i s e g u e n t i :
sudo /etc/init.d/bacula-sd restart
sudo /etc/init.d/bacula-director restart
La console e le label
Pr ima d i p o t e r e f f e t t u a r e le o p e r a z i o n i d i b a c k u p è n e c e s s a r i o a s s e g n a r e
u n a l a b e l ( e t i c h e t t a ) ai nas t r i c h e si i n t e n d e i m p i e g a r e a l l o s c o p o . Per f a re
q u e s t o si d e v e r i c h i a m a r e la c o n s o l e d i B a c u l a e s e g u e n d o in u n t e r m i n a l e
il c o m a n d o b c o n s o i e . Il r i s u l t a t o su s c h e r m o sarà s i m i l e a q u a n t o v i s i b i l e
n e l l ' i m m a g i n e s e g u e n t e ( F i g u r a 9 .15 ) .
ale@pitagora:~$ bconsoie Connecting to Director localhost:9101 1000 OK: pitagora-dir Version: 2.2.8 (26 January 2008) Enter a period to cancel a command.
I
Figura 9.15 - La console di Bacula. Da qui si gestiscono le operazioni di backup.
Per po te r lanciare bconsoie da un utente c o m u n e è necessario che que-
sto appar tenga al g r u p p o bacula: si o t t i ene ques to med ian te il c o m a n d o
sudo adduser utente bacula, inserendo al pos to d i utente il n o m e
ef fe t t ivo de l l ' u ten te da agg iunge re al g r u p p o .
Per a s s e g n a r e u n a l a b e l al n a s t r o a t t u a l m e n t e p r e s e n t e n e l l ' u n i t à , q u i n d i ,
ne l l a c o n s o l e d i Bacu la b i s o g n a d i g i t a r e label e p r e m e r e I n v i o .
I n c o n s o l e v e r r a n n o e l e n c a t e le r i so rse p e r l o S t o r a g e d e f i n i t e ne l la c o n f i -
g u r a z i o n e : si s e l e z i o n i d a l l a l ista T a p e D r i v e , d i g i t a n d o il n u m e r o c o r r i s p o n -
d e n t e (2). Poi si i n d i c h i u n n o m e a p r o p r i a sce l t a p e r il V o l u m e c o r r e n t e
(il n a s t r o , ne l c a s o a t t u a l e ) , p e r e s e m p i o b a k 0 2 0 9 0 8 . I n f i ne , si s e l e z i o n i il
P o o l d i d e f a u l t , 1. In F i g u r a 9 . 1 6 è p o s s i b i l e o s s e r v a r e l ' o u t p u t in c o n s o l e
p e r q u e s t i va r i p a s s a g g i .
ale@pitagora:-$ bconsole Connecting to Director localhost:9101 1000 OK: pitagora-dir Version: 2.2.8 (26 January 2008) Enter a period to cancel a command. •label Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" The defined Storage resources are:
1: File 2: TapeDrive
Select Storage resource (1-2): 2 Enter new Volume name: bak02O908 Defined Pools:
1: Default 2: Scratch
Select the Pool (1-2): l|
Figura 9.16-1 passaggi da compiere nella console di Bacula per assegnare una label a un nastro.
Un poo l non è al t ro che un ins ieme d i Vo lumi , nastri o f i le che siano.
Ut i l izzando più poo l è possib i le sudd iv idere e organizzare i suppor t i uti-
lizzati a seconda del t i p o d i backup che sì i n tende memorizzare su d i essi.
A ogn i poo l possono essere at t r ibu i t i parametr i d i f ferent i : quest i saranno
assegnati au toma t i camen te ai vari Vo lumi appar tenen t i al poo l .
L'operazione di backup
T e r m i n a t a la c o n f i g u r a z i o n e d i B a c u l a , è g i u n t o il m o m e n t o d ì e f f e t t u a r e
la p r i m a s e m p l i c e o p e r a z i o n e d i b a c k u p . Si lanc i il p r o g r a m m a b c o n s o l e ,
q u e s t a v o l t a a c q u i s e n d o i p o t e r i d i r o o t :
sudo b c o n s o l e
N e l l a c o n s o l e d i Bacu la si e s e g u a a d e s s o il c o m a n d o i n t e r n o run. Ve r rà
m o s t r a t o u n e l e n c o d e i J o b d i b a c k u p c h e è p o s s i b i l e avv ia re , c o m e in
q u e s t e r i g h e d i o u t p u t d ' e s e m p i o :
A Job name m u s t be specified.
The defined Job r e s o u r c e s are :
1: C l i e n t i
2 : B a c k u p C a t a l o g
3: R e s t o r e F i l e s
4 : L o c a l B a c k u p
Select J o b r e s o u r c e (1-4):
Si s e l e z i o n i d u n q u e il n u m e r o r e l a t i v o al J o b c r e a t o in p r e c e d e n z a , 4 .
D o p o a v e r p r e m u t o I n v i o su l la t a s t i e r a a p p a r i r a n n o in c o n s o l e d e l l e r i g h e
i n f o r m a t i v e sul J o b i n d i c a t o : F i l eSe t , P o o l , S t o r a g e e cos ì v ia . D i g i t a n d o
" y e s " e p r e m e n d o I n v i o , q u i n d i , il J o b v e r r à a t t i v a t o .
A q u e s t o p u n t o è p o s s ì b i l e e s e g u i r e il c o m a n d o i n t e r n o m e s s a g e s p e r a v e -
re i n f o r m a z i o n i in t e m p o rea le s u l l ' o p e r a z i o n e in c o r s o , o p p u r e si p u ò lan -
c ia re status p e r v i sua l i zza re u n p r o s p e t t o d e i J o b a t t i v i al m o m e n t o e d i
q u e l l i c h e v e r r a n n o avv ia t i n e l l e p r o s s i m e 2 4 o r e (F igu ra 9 .17 ) .
•status Status available for:
1: Director 2: Storage 3: Client 4: All
Select daemon type for status (1-4): 1 pitagora-dir Version: 2.2.8 (26 January 2008) i486-pc-linux-gnu debian lenny/sid Daemon started 02-set 08 17:36, 5 Jobs run since started. Heap: heap=397,312 smbytes=38,210 max_bytes=42,720 bufs=220 max bufs=242
Scheduled Jobs: Level Type Pri Scheduled Name Volume
Incremental Backup 10 02-set-08 23:05 Clienti •unknown* Full Backup 11 02-set-08 23:10 BackupCatalog •unknown* Full Backup 10 03-set-08 08:00 LocalBackup •unknown*
Running Jobs: No Jobs running.
Figura 9.17- L'output del comando interno status nella console di Bacula.
Ripristina del backup
Per ripristinare i da t i d i un b a c k u p si avvia la c o n s o l e d i Bacula c o n sudo
bconsoie e si lancia il c o m a n d o i n t e r n o restore. Verrà m o s t r a t o in c o n -
so le un n u t r i t o n u m e r o d i o p z i o n i t ra cu i sceg l ie re . Tra q u e s t e , que l l a d i
m a g g i o r e ut i l i tà e d i p i ù i m m e d i a t o u t i l i zzo è p r o b a b i l m e n t e la n u m e r o 5,
Select the most recent backup for a client, che consente di ripristinare il b a c k u p p iù r e c e n t e d i una d e t e r m i n a t a m a c c h i n a c l ien t .
Se si sceg l i e q u e s t a o p z i o n e , d o p o aver i n d i c a t o il c l i en t d i cu i si d e s i d e r a
e f f e t t u a r e il r i p r i s t i no si se lez iona il F i leSet cu i si è in teressat i , q u i n d i si
s p e c i f i c a n o u n o o p iù J o b d i b a c k u p .
Fa t to q u e s t o , si en t ra ne l la m o d a l i t à p e r la se lez ione d e i f i le : in q u e s t a
m o d a l i t à si ut i l izza il c o m a n d o m a r k p e r i nd i ca re a Bacula d i r ip r i s t inare un
d e t e r m i n a t o f i le o d i r e c t o r y (con mark * si se lez iona l ' i n te ro c o n t e n u t o d e l
b a c k u p ) , m e n t r e unmark c o n s e n t e d i d e s e l e z i o n a r e d e i f i le . Per t e r m i n a r e
si d i g i t a done. Per e s e m p i o , i c o m a n d i s e g u e n t i s e l e z i o n e r a n n o d a l b a c k u p
c o r r e n t e le d i r e c t o r y / h o m e / a l e / D o c u m e n t i e / h o m e / t e s t / a r c h i v i o :
mark /home/ale/Documenti
mark /home/test/archivio
done
Q u i n d i ver rà i n d i c a t o il V o l u m e da inser i re p e r e f f e t t u a r e il ripristino d e l
b a c k u p e sa ranno f o r n i t e i n f o r m a z i o n i d e t t a g l i a t e s u l l ' o p e r a z i o n e .
N o n rimane p o i che r i s p o n d e r e " y e s " alla d o m a n d a OK to run?, così da
p r o c e d e r e ne l r ip r i s t ino . R i s p o n d e n d o " m o d " , i nvece , sarà poss ib i l e m o -
d i f i ca re a lcun i p a r a m e t r i c o m e la d i r e c t o r y in cu i d o v r a n n o essere m e m o -
rizzati i f i le r ip r is t ina t i .
ID. Costruire un Media Center
• a un elementare S e r v e r a u d i o al più com-
pleto Media Center multimediale
G i u n t i a q u e s t o p u n t o la re te loca le è c o n f i g u r a t a e p r o t e t t a a d o v e r e , si
h a n n o a d i s p o s i z i o n e i p r i nc i pa l i s t r u m e n t i p e r la c o n d i v i s i o n e d e l l e r isorse
e t u t t o è p r o n t o p e r m e t t e r e in p ra t i ca le c o n o s c e n z e acqu i s i t e .
In q u e s t o c a p i t o l o , d u n q u e , si a l lest i rà un s is tema m u l t i m e d i a l e p r o n t o p e r
t r o n e g g i a r e ne l sa l o t t o d i casa: l ' h a r d w a r e sarà c o s t i t u i t o d a un n o r m a l e
PC d o m e s t i c o , c o n la re la t iva in f ras t ru t tu ra d i re te , m e n t r e il s o f t w a r e ne-
cessar io ver rà f o r n i t o d i r e t t a m e n t e da l la d i s t r i b u z i o n e L inux.
Gl i e s e m p i d i M e d i a C e n t e r f o rn i t i ne l l e p a g i n e che s e g u o n o sa ranno via
via p iù c o m p l e s s i . Si in iz ierà c o n il p i ù s e m p l i c e d e i M e d i a C e n t e r mus ica l i
e si ar r iverà p o i a cos t ru i re un c o m p l e t o s i s tema m u l t i m e d i a l e , ricco d i f un -
z iona l i tà e d u t t i l e c o m e so lo p u ò esser lo un d i s p o s i t i v o c o s t r u i t o , pezzo
d o p o pezzo , s e c o n d o le e s i g e n z e d i ch i lo ut i l izza.
Server musicale Si c o m i n c i a c o n un s e m p l i c e server mus ica le : l ' a rch iv io mus i ca le sarà c o n -
t e n u t o in un c a p i e n t e h a r d d isk su d i un server cen t ra l e e d o v r à essere
access ib i l e da t u t t e le m a c c h i n e c o n n e s s e in re te , sia che ut i l i zz ino L inux
sia che a d o t t i n o W i n d o w s c o m e s is tema o p e r a t i v o .
Per q u e s t o c o m p i t o ver rà ins ta l l a to S a m b a sul server L inux: p u r e s s e n d o
d i s p o n i b i l i d e i c l i en t NFS p e r W i n d o w s , la p resenza d i un s o f t w a r e c o m -
p a t i b i l e c o n i p r o t o c o l l i d i re te M i c r o s o f t r e n d e r à la f ru i z i one d e i c o n t e n u t i
mus ica l i p i ù s e m p l i c e su t u t t e le m a c c h i n e .
Il più semplice dei IVIedia Center
Nel la c o n f i g u r a z i o n e q u i p r o p o s t a , sul server A v i e n e ins ta l l a to S a m b a ,
m e n t r e il c l i en t B ha accesso al la d i r e c t o r y cond i v i sa da l la m a c c h i n a A .
Il se rver p o s s i e d e nel la L A N l ' i nd i r i zzo IP 1 9 2 . 1 6 8 . 0 . 2 , m e n t r e il c l i en t ha
192 .168 .0 .3 .
Per c o m o d i t à , nel la c o n n e s s i o n e al mus i c server si o f f re l ' accesso ai f i le
mus ica l i senza r i c h i e d e r e l ' i n s e r i m e n t o d i n o m e u t e n t e e p a s s w o r d . D o p o
aver i ns ta l l a to S a m b a sul la m a c c h i n a A , q u i n d i , ne l f i le / e t c / s a m b a / s m b .
c o n f si inser isce a l l ' i n t e r n o de l l a sez ione [Global] la r iga:
security = share
e poi , per sicurezza, si l imita la connessione alla sola rete locale con questa riga:
hosts allow = 192.168.0.
A q u e s t o p u n t o si a g g i u n g o n o al c o n t e n u t o d e l f i le / e t c / s a m b a / s m b . c o n f
d e l l e r i g h e s imi l i a l le s e g u e n t i :
[musica]
path = /usr/local/share/musica
comment = Musica condivisa
guest ok = yes
read only = no
Il va lo re d i path va c a m b i a t o c o n la d i r e c t o r y che c o n t i e n e i f i le a u d i o sul
p r o p r i o server mus ica le .
O l t r e al c o n t r o l l o d e l t r a f f i co in en t ra ta m e d i a n t e s m b . c o n f , è p o s s i b i l e
a g g i u n g e r e un u l t e r i o re l i ve l lo d i p r o t e z i o n e g raz ie al f i rewa l l . Le p o r t e
da ap r i re p e r S a m b a s o n o le 137 , 138 U D P e le 139, 4 4 5 TCP. Ecco d e l l e
r i g h e d i e s e m p i o p e r iptabies che a c c e t t a n o c o n n e s s i o n i al server S a m b a
e s c l u s i v a m e n t e da l la re te loca le 1 9 2 . 1 6 8 . 0 . 0 / 2 4 :
sudo iptabies -p udp -s 192.168.0.0/24 --dport 137 -j ACCEPT
sudo iptabies -p udp -s 192.168.0.0/24 --dport 138 -j ACCEPT
sudo iptables -m state --state NEW -m tcp -p tcp -s 192.168.0.0/24
--dport 139 -j A C C E P T
sudo iptables -m state --state N E W -m tcp -p tcp -s 192.168.0.0/24
--dport 445 -j A C C E P T
P r o t e t t o a d o v e r e ¡1 server , b i s o g n a o r a s t a b i l i r e se si v u o l e c h e la m a c c h i -
na A a b b i a il r u o l o d i M e d i a C e n t e r o se si p r e f e r i s c e c h e q u e s t o v e n g a as-
s u n t o d a l c l i e n t B: ne l p r i m o c a s o sarà il s i s t e m a L inux ne l s a l o t t o d i casa a
d i f f o n d e r e la m u s i c a a t u t t i i PC c o n n e s s i in r e t e , m e n t r e n e l s e c o n d o c a s o
il d i s p o s i t i v o si l i m i t e r à a ricevere la m u s i c a e n o n r i c h i e d e r à la p r e s e n z a d i
a l c u n h a r d d i s k i n t e r n o p e r f u n z i o n a r e .
Se si d e s i d e r a u n M e d i a C e n t e r " d i f f u s o r e " , q u i n d i , su l la s tessa m a c c h i -
na A o c c o r r e i ns ta l l a re , o l t r e al s e r v e r S a m b a , a n c h e le a p p l i c a z i o n i Li-
n u x p r e f e r i t e p e r la f r u i z i o n e m u s i c a l e . Q u e s t e l e g g e r a n n o d i r e t t a m e n t e
il c o n t e n u t o d e l l a d i r e c t o r y / u s r / l o c a l / s h a r e / m u s i c a (o s im i la re ) , m e n t r e il
c l i e n t B, p e r a v e r e a c c e s s o a l l ' a r c h i v i o m u s i c a l e d e l M e d i a C e n t e r d a l l a
d i r e c t o r y / m n t / s a m b a , d o v r à a g g i u n g e r e n e l f i l e / e t c / f s t a b u n a r i ga c o m e
la s e g u e n t e :
/ / 1 9 2 . 1 6 8 . 0 . 2 / m u s i c a / m n t / s a m b a smbfs g u e s t 0 0
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> proc /proc proc defaults # /dev/sdal UUID 45ad37fa-386e-4ff0-be33-d4465e05c096 / s= remount-ro 0 1 # /dev/sda3 UUID 20e23alb-0clb-46ba-8cba-20eb8Of5c5bf /home
0 2
# /dev/sda2 UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none
0 0
/dev/scd0 /media/cdromO udf,iso9660 user noauto exec,
# server musicale //192.168.0.2/musica /mnt/samba smbfs guest 0 0
<dump> <pass> 0 0
ext3 relatime,erro
ext3 relatime
swap sw
12,0-1 Tut
Figura 10.1 - Sulla macchina client il file /etc/fstab sarà simile a questo.
Ne l caso d i un M e d i a C e n t e r " r i c e v e n t e " , invece, è su f f i c ien te inserire la
riga d i / e t c / f s t a b a p p e n a riportata sulla macch ina B e q u i n d i far p u n t a r e un
quals ias i p layer a u d i o ai f i le mus ica l i c o n t e n u t i nel la d i r ec to r y / m n t / s a m b a .
Per ragioni didatt iche, in questa sezione si è scelto di adottare per la
creazione di un server musicale del le applicazioni t rat tate nel corso del
volume. Un eccellente sistema alternativo è MPD (Music Player Daemon):
si tratta di un player audio di t ipo server-client che, abbinato a un softwa-
re per lo streaming musicale come icecast, consente di costruire una vera
e propria stazione radio domestica via rete! Per maggior i informazioni:
h t tp : / /www.musicpd.org e http: / /www.icecast.org.
Il Media Center completa A v e r e ne l p r o p r i o s a l o t t o un d i s p o s i t i v o c h e c o n s e n t a d i asco l ta re la m u -
sica m e m o r i z z a t a su un ha rd d isk d i g r a n d i d i m e n s i o n i è c e r t o c o m o d o .
A n c o r a p i ù c o m o d o , p e r ò , è p o t e r c o n t a r e su una m a c c h i n a m u l t i m e d i a l e
c h e racch iuda in p o c h i c e n t i m e t r i d i spaz io le f unz iona l i t à d i TV, v i d e o r e g i -
s t ra to re , l e t t o re D V D , w e b b r o w s e r e m o l t o a l t ro .
T u t t o q u e s t o è reso poss ib i l e da un a r t i c o l a t o e d u t t i l e s o f t w a r e PVR (Per-
sona l V i d e o Recorder ) p e r L inux c h i a m a t o My thTV. N e l l e p a g i n e che se-
g u o n o , q u i n d i , si f o r n i r a n n o le is t ruz ion i p e r ins ta l lare e c o n f i g u r a r e q u e s t a
a p p l i c a z i o n e .
Il M e d i a C e n t e r r i su l tan te sarà inser i to a l l ' i n t e r n o d i una L A N , così da per -
m e t t e r e l 'accesso ai c o n t e n u t i v i d e o in esso m e m o r i z z a t i da t u t t e le m a c -
ch ine c o n n e s s e in re te .
M y t h T V è un s o f t w a r e c o m p l e s s o e r icco d i f unz iona l i t à e, o v v i a m e n t e , in
q u e s t e p o c h e p a g i n e n o n è poss ib i l e f o r n i r e i n f o r m a z i o n i esaus t i ve sul la
sua c o n f i g u r a z i o n e e i suo i m o l t e p l i c i ut i l izzi . N e i pa rag ra f i a segu i re si p re -
s u p p o n e q u i n d i che l ' h a r d w a r e d e l M e d i a C e n t e r (TV tuner , s c h e d a gra f i ca
c o n usci ta T V - O u t ecc.) sia g ià s ta to c o r r e t t a m e n t e c o n f i g u r a t o .
Per maggior i informazioni si r imanda alla sezione Documentat ion nel sito
di MythTV:
ht tp : / /www.mythtv .org/
e alla pagina wiki del proget to :
h t tp : / /www.mythtv .org/wik i / index.php/Main Page
Installazione di MythTV
M y t h T V è c o s t i t u i t o da un vas to i n s i e m e d i p r o g r a m m i p r i nc i pa l i e p l u g i n
d i c o n t o r n o . Per s e m p l i f i c a r n e l ' i ns ta l laz ione e la c o n f i g u r a z i o n e , la d is t r i -
b u z i o n e U b u n t u f o r n i s c e un g r u p p o d i p a c c h e t t i M y t h b u n t u : i ns ta l l ando
q u e s t i sarà poss ib i l e sceg l i e re c o n fac i l i tà le c o m p o n e n t i d i M y t h T V c h e
si v o g l i o n o ave re sul p r o p r i o M e d i a C e n t e r e ver rà f o r n i t o , i no l t re , un a m -
b i e n t e g r a f i c o l e g g e r o e g r a d e v o l e in cui avv ia re l ' i n te r facc ia d i My thTV.
Mythbuntu, oltre a essere un insieme di pacchett i , è anche una vera e
propria distr ibuzione: basata su Ubuntu, come lascia intuire il nome,
consente di installare su un PC un sistema operat ivo comple to con tu t to
il necessario per il funzionamento di MythTV. L'home page di questa
interessante distro è h t tp : / /www.mythbuntu .org .
Sulla m a c c h i n a che d e v e essere a d i b i t a a M e d i a Cen te r , q u i n d i , si lanci il
c o m a n d o s e g u e n t e :
sudo apt-get instali mythbuntu-desktop
V e r r a n n o così scar icat i e insta l la t i i p a c c h e t t i c h e c o m p o n g o n o M y t h b u n t u ,
p i ù t u t t o il s o f t w a r e necessa r io p e r la c o n f i g u r a z i o n e in iz ia le d i My thTV.
D u r a n t e la p r o c e d u r a d i ins ta l laz ione d e i p a c c h e t t i , i no l t re , si p u ò ind ica re
al s i s tema il m o d e l l o d e l t e l e c o m a n d o a inf rarossi da usare, se ce n ' è u n o
d i s p o n i b i l e (F igura 10.2). È p o i poss ib i l e c o n f i g u r a r e a n c h e un e v e n t u a l e
t r a s m e t t i t o r e IR.
Figura 10.2 - In questa schermata si indica il telecomando da usare per controllare a distanza il Media Center.
T e r m i n a t o q u e s t o p r i m o p a s s a g g i o , si p u ò ora a c c e d e r e a l l ' a m b i e n t e g ra -
f i c o f o r n i t o da M y t h b u n t u . Per fa re q u e s t o si d e v e lanc iare G D M , il l o g i n
m a n a g e r g ra f i co , c o n il c o m a n d o s e g u e n t e :
sudo /etc/init.d/gdm start
A l success ivo r e b o o t de l l a m a c c h i n a , G D M sarà richiamato a u t o m a t i c a -
m e n t e a l l ' avv io . Ne l la s c h e r m a t a che a p p a r e , q u i n d i , si inser isce il n o m e
d e l l ' u t e n t e p r i n c i p a l e e la re la t iva p a s s w o r d e si a t t e n d e il c a r i c a m e n t o d e l
d e s k t o p e n v i r o n m e n t d i M y t h b u n t u , c h i a m a t o X fce .
L ' aspe t to c o m p l e s s i v o de l l ' i n t e r f acc i a g ra f i ca a d i s p o s i z i o n e d e l l ' u t e n t e è
v is ib i le n e l l ' i m m a g i n e c h e s e g u e (F igura 10.3).
Un ' i ns ta l l az ione d i M y t h T V p u ò s v o l g e r e la f u n z i o n e d i B a c k e n d , d i Fron-
t e n d o ave re e n t r a m b i i ruo l i . Il B a c k e n d si o c c u p a d i e f f e t t u a r e le reg i -
s t raz ion i da l la TV, m e n t r e il F r o n t e n d f o r n i s c e l ' i n te r facc ia p e r v isual izzare i
canal i te lev is iv i , g u a r d a r e e i m p o s t a r e le reg is t raz ion i e così v ia.
ID. Costruire un Media center
I Eile Modifica Visualizza Cronologia Segnalibri Strumenti
" SI é ì <B hleffAisr/share/mythbunturtiomeflndexhtml
isitati- OSegnalibri smart*- ®>Getbng Started ~ 'LatestHeadlines-
Related Projects
!ubuntu
j x u b u n t u
Mythbuntu is an community su setting up a standotene Myth TV Based PVR si
a standalone system a for integrali«! Unlike similar prefects. Mythbuntu kee(
•on tor Ubuntu fix
1 existing MythTV » ties with Ubuntu
ion! is given back to Ubuntu. This architecture allows is from a standard desfctop to a Mythbuntu machine he development cycle ot Mythbuntu closely follows that ing every six monlhs with Ubunlu releases
XFCE4 desktop. All unnecessary sti
I''IMP] -, I Mythbuntu Mczillj Firofo.
Figura 10.3 - L'interfaccia grafica di Mythbuntu. Veloce, bella e facile da usare.
In q u e s t o s t a d i o in iz ia le de l l ' i n s ta l l az i one d i M y t h T V è p r e s e n t e ne l s iste-
m a il so lo F r o n t e n d . Se il M e d i a C e n t e r è un s e m p l i c e d i s p o s i t i v o c o n n e s -
so alla T V che d e v e essere c o l l e g a t o in re te a un PC p r o v v i s t o d i TV Tuner,
l ' i ns ta l laz ione p u ò d i rs i t e r m i n a t a . Se i nvece il M e d i a C e n t e r è p rovv i s t o
d i s c h e d a TV e d e v e avere il r u o l o d i se rve r m u l t i m e d i a l e p e r a l t re m a c -
ch ine , a l lo ra b i s o g n a a g g i u n g e r e t u t t o il necessar io p e r la f unz iona l i t à d i
B a c k e n d .
Per fa re q u e s t o i n n a n z i t u t t o si d e v e ins ta l la re il d a t a b a s e re laz iona le M y -
SQL, necessar io p e r il f u n z i o n a m e n t o d e l B a c k e n d .
Per ins ta l lare il d a t a b a s e , q u i n d i , si p u ò ap r i re una c o n s o l e d i t e r m i n a l e
d i r e t t a m e n t e n e l l ' a m b i e n t e g r a f i c o d i M y t h b u n t u : si fa c l ic sul p u l s a n t e
A p p l i c a t i o n s in a l t o , q u i n d i ne l m e n u c h e a p p a r e si en t ra ne l s o t t o m e n u
A c c e s s o r i e s e si se lez iona c o n un cl ic d e l m o u s e la v o c e T e r m i n a l e .
Nel la f ines t ra d e l t e r m i n a l e si e s e g u a d u n q u e il c o m a n d o sudo apt-get
instali mysqi-server-5.o e si p r e m a I n v i o al la r ich iesta d i i n s e r i m e n t o
de l l a p a s s w o r d p e r l ' u t e n t e r o o t d i M y S Q L . Se in o u t p u t v i e n e res t i t u i t o
un e r ro re si e s e g u a d i n u o v o il c o m a n d o p r e c e d e n t e .
Poi b i s o g n a ap r i re il C e n t r o d i c o n t r o l l o M y t h b u n t u : si en t ra in A p p l i c a -
tions, quindi si va nel sottomenu System e si fa clic su Centro di control-l o M y t h b u n t u . D o p o aver d i g i t a t o la p a s s w o r d d e l p r o p r i o u t e n t e , ne l la
f ines t ra che a p p a r e si en t ra ne l la sez ione S y s t e m Ro les (F igura 10.4) e si
m e t t e la s p u n t a s u l l ' o p z i o n e B a c k e n d p r i m a r i o , q u i n d i si fa c l ic sul pu l san -
t e A p p l i c a in basso . V e r r a n n o così insta l la t i e c o n f i g u r a t i i p a c c h e t t i p e r la
f unz iona l i t à d i B a c k e n d d i My thTV.
- n X Mythbuntu Control Centre - n X
IQ]System Roles System Roles
Although a Mythbuntu machine is intended to be used as an appliance, active roles may be added, removed, or modified at any time.
Backend Role
A machine containing a backend role will schedule and record television shows. Also, a backend role is needed on a network somewhere for a frontend role to connect to
Nessun backend • Backend primario
O Backend secondario
F r o n t e n d Role
A machine containing a frontend role will connect to a master backend to obtain recorded content
Nessun frontend * Frontend
Desktop Role
If you later decide that you would like to use this machine as a desktop, you can convert a machine from an applicance into a standalone machine that also has Mythbuntu configured
0 Ubuntu Desktop • Xubuntu Deskop 0 Kubuntu Desktop
Diskless S e r v e r A system role that will allow you to operate additional Frontend clients without installing Mythbuntu on them.
• Diskless Server • Add DHCP server
A q u e s t o p u n t o il M e d i a C e n t e r è c o r r e t t a m e n t e ins ta l la to , m a c o n s e n t e
e s c l u s i v a m e n t e d i g u a r d a r e e reg is t ra re p r o g r a m m i TV.
Per a g g i u n g e r e u l te r io r i m o d u l i bas ta en t r a re ne l la sez ione A p p l i c a t i o n s
& P l u g i n s d e l C e n t r o d i c o n t r o l l o M y t h b u n t u e m e t t e r e la s p u n t a sui p l u -
g i n ( m o d u l i a g g i u n t i v i ) che si d e s i d e r a insta l lare. F a c e n d o c l ic s u l l ' o p z i o -
ne E n a b l e / D i s a b l e A l i P l u g i n s si s e l e z i o n e r a n n o in un c o l p o so lo t u t t i i
m o d u l i . N o n r i m a n e p o i che p r e m e r e A p p l i c a p e r insta l lare i p a c c h e t t i
a g g i u n t i v i r ich iest i .
¡1^1 MythTV Configuration
^ Applications & Plugins
30* Proprietary Drivers
^ Infrared Devices
System Services
^ A r t w o r k & Login Behavior
F j MythTV Themes
¡^Propr ie ta ry Codecs
Advanced Mangement
ID. Costruire un Media center
Nel la Tabe l la 10.1 v e n g o n o e lenca t i i p r i nc ipa l i p l u g i n d i s p o n i b i l i p e r
My thTV. Tra q u e s t i si cons ig l i a d i insta l lare a l m e n o M y t h V i d e o e M y t h M u -
sic, così d a o t t e n e r e un M e d i a C e n t e r c h e c o n s e n t a la f r u i z i one d i t u t t i i
c o n t e n u t i a u d i o e v i d e o poss ib i l i .
Tabella 10.1 - I principali plugin di MythTV. Nome Funzionalità
M y t h A r c h i v e C o n s e n t e d i master izzare su D V D le registrazioni dal la TV
M y t h B r o w s e r Un s e m p l i c e W e b b r o w s e r
C o n s e n t e d i avv ia re d e i g i o c h i d i r e t t a m e n t e da l l ' i n te r -
M y t h G a m e facc ia d i My thTV. C o m p a t i b i l e c o n e m u l a t o r i e g i o c h i
H H I H H H H H H E H H h H H H H M y t h M u s i c Un c o m p l e t o l e t t o re m u s i c a l e
M y t h V i d e o Player v i d e o c o n g e s t i o n e d e i c a t a l o g h i
M y t h W e b P e r m e t t e d i c o n t r o l l a r e M y t h T V da r e m o t o t r a m i t e
un ' i n te r f acc ia w e b
Scel t i i p l u g i n c h e si p r e f e r i s c o n o , si p u ò ora c h i u d e r e la f ines t ra d e l C e n -
t r o d i c o n t r o l l o M y t h b u n t u e passare alla c o n f i g u r a z i o n e d e l B a c k e n d : ne l
m e n u A p p l i c a t i o n s d e l l ' a m b i e n t e g ra f i co b i s o g n a d u n q u e en t ra re in Sy-
stem e selezionare la voce MythTV Backend Setup. Nel la s c h e r m a t a che a p p a r e si d e v e q u i n d i i m p o s t a r e il r i cev i t o re TV, sce-
g l i e re il t i p o d i G u i d a TV p re fe r i t a e d e f f e t t u a r e la scans ione d e i cana l i
d i s p o n i b i l i . Si t r a t t a d i o p e r a z i o n i che , a s e c o n d a d e l T V t u n e r a d o t t a t o ,
p o s s o n o r isu l tare p i u t t o s t o c o m p l e s s e : p e r u n ' i n t r o d u z i o n e alla c o n f i g u r a -
z i o n e d e l B a c k e n d si v e d a la p a g i n a :
h t t p : / / w w w . m y t h t v . o r g / w i k i / i n d e x . p h p / M y t h t v - s e t u p
T e r m i n a t o q u e s t o p a s s a g g i o de l l a c o n f i g u r a z i o n e d i My thTV, si p u ò av-
v ia re l ' i n te r facc ia d e l F r o n t e n d e n t r a n d o in A p p l i c a t i o n s , M u l t i m e d i a e
facendo clic su MythTV Frontend. Dal la s c h e r m a t a che a p p a r e (F igura 10.5) si p u ò q u i n d i g u a r d a r e la TV,
e f f e t t u a r e e v isual izzare reg is t raz ion i così c o m e a c c e d e r e a l le f unz iona l i t à
f o r n i t e d a i var i p l u g i n ins ta l la t i .
IVlythTV entra in rete
D o p o q u e s t e s o m m a r i e i n f o r m a z i o n i su l l ' i ns ta l l az ione d i My thTV, è il m o -
m e n t o d i far d i a l o g a r e il M e d i a C e n t e r a p p e n a c r e a t o c o n le a l t re m a c c h i -
ne c o n n e s s e in re te .
N e g l i e s e m p i c h e s e g u o n o la m a c c h i n a su cu i è ins ta l la to il B a c k e n d d i
M y t h T V ha c o m e ind i r izzo IP 192 .168 .1 .4 , m e n t r e il c l i en t su cu i è a t t i v o il
F r o n t e n d p o s s i e d e l ' ind i r i zzo 192 .168 .1 .5 .
Se sul B a c k e n d s o n o a t t i v i d e i p l u g i n , p e r p o t e r l i ut i l izzare da l c l i en t re-
m o t o è necessar io insta l lar l i a n c h e su q u e s t o t r a m i t e il C e n t r o d i c o n t r o l l o
M y t h b u n t u .
Il B a c k e n d , ne l la c o n f i g u r a z i o n e d i d e f a u l t , r i s p o n d e a l l ' i nd i r i zzo IP
127 .0 .0 .1 , q u i n d i p u ò essere c o n t a t t a t o so lo da un F r o n t e n d a t t i v o sul la
m a c c h i n a loca le . Per m o d i f i c a r e l ' i nd i r i zzo cu i risponde il B a c k e n d , sul la
m a c c h i n a in cu i q u e s t o è ins ta l la to si d e v e lanc ia re il M y t h T V B a c k e n d
S e t u p e d en t ra re ne l la sez ione 1. G e n e r a l .
Nel la s c h e r m a t a che a p p a r e , q u i n d i , b i s o g n a m o d i f i c a r e i va lo r i d e l l e o p -
z ion i Loca i B a c k e n d e M a s t e r B a c k e n d , i n d i c a n d o p e r e n t r a m b e l ' i nd i r i zzo
IP d e l l a m a c c h i n a B a c k e n d su l la r e te l o c a l e . N e l l ' e s e m p i o è 1 9 2 . 1 6 8 . 1 . 4 .
N e l l a s tessa s c h e r m a t a si i n d i c a il P IN d i s i cu rezza p e r le c o n n e s s i o n i re-
m o t e : i n s e r e n d o 0 0 0 0 c o m e S e c u r i t y P I N si c o n s e n t i r à l ' a c c e s s o a t u t t i .
Host Address Backend Setup
Locai Backend (pitagora) IP address: 192.168.1.4
Port: 6543 Status Port: 6544
Security Pin (Required): 0000
Master Backend IP address: 192.168.1.4
Enter the IP address of this machine. Use an externally accessible address (ie, not 127.0.0.1) if you are going to be running a frontend on a different machine than this one.
Cancel Next >
Figura 10.6 - In questa schermata si configura l'indirizzo IP del Backend.
F a t t o q u e s t o , è n e c e s s a r i o c h e il s e r v e r M y S Q L sul la m a c c h i n a B a c k e n d
a c c e t t i c o n n e s s i o n i d a l l a r e t e l oca le . Per q u e s t o si a p r a c o n u n e d i t o r il f i l e
/ e t c / m y s q l / m y . c n f e si m o d i f i c h i la r i ga :
b i n d - a d d r e s s = 1 2 7 . 0 . 0 . 1
i n d i c a n d o al p o s t o d i 1 2 7 . 0 . 0 . 1 l ' i n d i r i z z o IP d e l B a c k e n d su l la L A N . Se-
g u e n d o l ' e s e m p i o r i p o r t a t o la r i ga d i v e n t a q u i n d i così :
b i n d - a d d r e s s = 192.168.1.4
I n f i ne si d e v e r i avv ia re il s e r v e r M y S Q L c o n il c o m a n d o :
sudo / e t c / i n i t . d / m y s q l r e s t a r t
A q u e s t o p u n t o , p e r c o l l e g a r e al B a c k e n d M y t h T V , s i t u a t o su l la m a c c h i n a
1 9 2 . 1 6 8 . 1 . 4 , il F r o n t e n d p r e s e n t e sul c l i e n t 1 9 2 . 1 6 8 . 1 . 5 , è s u f f i c i e n t e lan-
d a r e in q u e s t ' u l t i m o l ' a p p l i c a z i o n e M y t h T V F r o n t e n d : il c l i en t i n d i v i d u e r à
a u t o m a t i c a m e n t e il B a c k e n d d i s p o n i b i l e in re te e si c o l l e g h e r à a esso.
Condividere le cartelle di MythTV con IXIFS
S e g u e n d o le is t ruz ion i ne l p a r a g r a f o p r e c e d e n t e si è c o n n e s s o un Bac-
k e n d d i M y t h T V c o n un F r o n t e n d r e m o t o . Su q u e s t ' u l t i m o è ora poss ib i l e
g u a r d a r e la TV e d e f f e t t u a r e reg is t raz ion i s f r u t t a n d o la s c h e d a TV p r e s e n t e
sul la m a c c h i n a B a c k e n d .
Se si u t i l i zzano d e i p l u g i n c o m e M y t h V i d e o e M y t h M u s i c , p e r ò , g l i ar-
ch iv i v i d e o e a u d i o p resen t i sul B a c k e n d n o n r i su l t e ranno access ib i l i da l
F r o n t e n d . Per r i m e d i a r e è necessa r io c o n d i v i d e r e t r a m i t e NFS le d i r e c t o r y
c o n t e n e n t i g l i arch iv i , in m o d o ta l e che il c l i en t possa l e g g e r l e .
Sulla m a c c h i n a in cu i è p r e s e n t e il B a c k e n d , q u i n d i , va ins ta l la to il se rver
NFS c o n il c o m a n d o sudo apt-get instali nfs-kernel-server. Poi SÌ d e v e
creare un a p p o s i t o f i le / e t c / e x p o r t s che p e r m e t t a al c l i en t d i ave re acces-
so a l le d i r e c t o r y c o n g l i arch iv i m u l t i m e d i a l i . Per c o m o d i t à si e s p o r t a l ' in -
te ra car te l la / v a r / l i b / m y t h t v , che è la d i r e c t o r y d i d e f a u l t ne l la q u a l e s o n o
racco l t e le var ie s o t t o d i r e c t o r y c o n t e n e n t i i f i le mus ica l i , le i m m a g i n i e i
v i d e o ges t i t i da i d i ve rs i p l u g i n . Ecco un f i le / e t c / e x p o r t s d i e s e m p i o :
/var/lib/mythtv 192.168.1.5(rw)
In q u e s t a riga v i e n e c o n c e s s o alla m a c c h i n a c o n ind i r i zzo IP 1 9 2 . 1 6 8 . 1 . 5
l 'accesso in l e t tu ra e scr i t tu ra a / v a r / l i b / m y t h t v . D o p o aver m o d i f i c a t o il f i le
va a g g i o r n a t a la c o n f i g u r a z i o n e d e l server NFS c o n sudo exportfs -a.
Sulla m a c c h i n a c l i en t , q u i n d i , n o n resta che m o n t a r e la d i r e c t o r y r e m o t a .
Il p e r c o r s o d i q u e s t a d i r e c t o r y d e v e essere il m e d e s i m o sul F r o n t e n d re-
m o t o e sul B a c k e n d :
sudo mount -t nfs 192.168.1.4 :/var/lib/mythtv /var/lib/mythtv
In f ine, su l lo s tesso c l i en t , una vo l t a ve r i f i ca to che le ca r te l l e c o n i c o n t e n u t i
a u d i o e v i d e o s iano ora e f f e t t i v a m e n t e access ib i l i d a i rispettivi p l u g i n , p u ò
essere c rea ta u n ' a p p o s i t a riga in / e t c / f s t a b p e r m o n t a r e in a u t o m a t i c o la
d i r e c t o r y NFS:
192.168.1.4 :/var/lib/mythtv /var/lib/mythtv nfs rw 0 0
11. I server
Come installare e configurare mail server,
FTP server, web server e server DINI5.
N e l C a p i t o l o 8 si s o n o f o r n i t e le is t ruz ion i p e r c o n d i v i d e r e d e l l e d i r e c t o r y
t ra p iù m a c c h i n e c o n n e s s e in re te u t i l i z zando i p r o t o c o l l o N F S e S M B /
CIFS. In e n t r a m b i i casi, a ta l e s c o p o , sul la m a c c h i n a c h e e s p o r t a i d a t i
s o n o s ta te ins ta l la te d e l l e a p p l i c a z i o n i server.
In q u e s t o c a p i t o l o si p r e s e n t e r a n n o e ins ta l l e ranno al t r i s o f t w a r e d i t i p o
server d ' u s o c o m u n e . Si c o m i n c e r à c o n il ma i l se rver Post f ix , p o i si passerà
al server FTP v s f t p d e q u i n d i si ins ta l lerà A p a c h e c o m e w e b server e B I N D
c o m e server D N S .
Tu t t e q u e s t e a p p l i c a z i o n i s o n o du t t i l i , p o t e n t i m a a n c h e n o t e v o l m e n t e
c o m p l e s s e . N e l l e p a g i n e c h e s e g u o n o , q u i n d i , si f o r n i r a n n o le so le infor-
m a z i o n i d i base p e r una co r re t t a ins ta l laz ione e p e r una c o n f i g u r a z i o n e
m i n i m a l e .
Il mail server Postfix Post f ix è un M T A (Mai l Transfer A g e n t ) : si t r a t t a c i o è d i u n ' a p p l i c a z i o n e
c h e ha il c o m p i t o d i t ras fe r i re i m e s s a g g i d i p o s t a e l e t t r o n i c a fra le m a c c h i -
ne. L ' ins ta l laz ione d i un M T A (o ma i l server) p e r m e t t e d i sm is ta re la p o s t a
che g l i u t e n t i si i nv iano , in m o d o a u t o m a t i c o o m e n o , a l l ' i n t e r n o de l la
m a c c h i n a loca le , m a c o n s e n t e a n c h e d i g e s t i r e a u t o n o m a m e n t e le e m a i l
in usc i ta e in en t ra ta da l la re te .
Nella catena di programmi che gestiscono la posta elettronica, un cl ient
di posta come Evolution o Mozilla Thunderb i rd ha il ruolo di Mail User
Agen t (MUA). L'applicazione che si occupa di consegnare le email ai
destinatari è chiamata invece Mail Delivery Agen t (MDA). Un noto e
diffuso M D A è procmail. Infine, un MUA può scaricare la posta da un
account remoto contat tando un server POP3 o IMAP.
Post f ix f o r n i s c e una r a g i o n e v o l e c o n f i g u r a z i o n e d i d e f a u l t , i no l t r e r iesce a
sma l t i r e car ich i a n c h e m o l t o e leva t i d i t r a f f i co e m a i l e i m p l e m e n t a avan-
za te p o l i t i c h e d i s icurezza. Ecco d u n q u e le is t ruz ion i p e r ins ta l lare q u e s t o
ma i l se rver e p e r a d a t t a r n e la c o n f i g u r a z i o n e al le p r o p r i e es igenze .
Installazione e configurazione iniziale
E s e g u e n d o il c o m a n d o sudo apt-get instali postfix verrà scar icato il pac-
c h e t t o p r i nc ipa le de l mai l server e sarà avviata una p r o c e d u r a d i c o n f i g u -
raz ione semp l i f i ca ta . Q u e s t a c o n s e n t e d i s tab i l i re in m o d o fac i le e ve l oce
de l l e impos taz i on i a d a t t e pe r a l cune t i p i c h e m o d a l i t à d i ut i l izzo d i un MTA.
Ne l la s c h e r m a t a che a p p a r e d o p o aver l anc ia to il c o m a n d o p e r l ' ins ta l la-
z i one d i Post f ix , d u n q u e , v e n g o n o p r e s e n t a t e le o p z i o n i d i s p o n i b i l i p e r la
c o n f i g u r a z i o n e , c o n una d e t t a g l i a t a s p i e g a z i o n e d e l lo ro s i gn i f i ca to . Pre-
m e n d o O K sarà p o i poss ib i l e sceg l i e re una d i q u e s t e o p z i o n i a l l ' i n t e r n o d i
un e l e n c o (F igura 11.1).
Se si v u o l e insta l lare Post f ix p e r il so lo s m i s t a m e n t o de l l a pos ta sul la m a c -
ch ina loca le (per e s e m p i o p e r r i cevere i m e s s a g g i inv ia t i da l d e m o n e m d a -
d m , v e d i C a p i t o l o 2, p a r a g r a f o " M a n u t e n z i o n e d e i d isch i R A I D " ) si sce lga
d a l l ' e l e n c o la v o c e S o l o l oca le .
Per c o n f i g u r a r e un M T A c o n n e s s o a I n t e r n e t si i nd i ch i i nvece S i t o i n t e r -
n e t , m e n t r e se si i n t e n d e ut i l izzare un ma i l server e s t e r n o , p e r e s e m p i o
q u e l l o d e l p r o p r i o p rov ide r , p e r l ' i nv io d e l l e e m a i l si se lez ion i la v o c e S i t o
in ternet con smarthost.
gurazioiie del pacche
Profilo generale di configurazione: Postf ix Configuration
Sito internet con smarthost Sistema satellite Solo locale
<0k> <Annulla>
Figura 11.1 -Le scelte possibili per una configurazione semplificata di postfix.
A s e c o n d a d e l l a sce l t a e f f e t t u a t a , c o m p a r i r a n n o d e l l e u l t e r i o r i s c h e r m a t e
d i c o n f i g u r a z i o n e . S c e g l i e n d o S i t o i n t e r n e t , p e r e s e m p i o , a p p a r i r à u n a
s c h e r m a t a in cu i si d o v r à i n d i c a r e u n m a i l n a m e , c i o è il n o m e d i d o m i n i o
c h e il m a i l s e r v e r d e v e a g g i u n g e r e ai m e s s a g g i p r i v i d i i n d i c a z i o n e d i d o -
m i n i o . Q u i si i nse r i sce s o l i t a m e n t e il F Q D N d e l l a m a c c h i n a ( p e r e s e m p i o ,
p i t a g o r a . h o m e . lan).
A q u e s t o p u n t o v e r r à c r e a t a una c o n f i g u r a z i o n e m i n i m a l e d i Pos t f i x e sarà
a v v i a t o il d e m o n e r e l a t i v o . L a n c i a n d o il c o m a n d o sudo dpkg-reconfigu-
re postfix, q u i n d i , c o m p a r i r à d i n u o v o la s c h e r m a t a p e r la c o n f i g u r a z i o n e
s e m p l i f i c a t a d e l m a i l se rver , m a in essa sarà p o s s i b i l e i m p o s t a r e u n n u m e -
ro m a g g i o r e d i p a r a m e t r i .
S c e g l i e n d o c o m e o p z i o n e S i t o i n t e r n e t , q u i n d i , s u p e r a t a la s c h e r m a t a re-
la t iva a l la sce l t a d e l m a i l n a m e sarà p o s s i b i l e i n d i c a r e i s e g u e n t i e l e m e n t i
d i c o n f i g u r a z i o n e :
• Destinatario della posta diretta a root e postmaster. Si indica l ' u t e n t e cu i v a n n o i n v i a t e le e m a i l d e s t i n a t e ag l i a c c o u n t d i a m m i n i -
s t r a z i o n e ;
• Destinazioni per cui accettare la posta. Le email per i domini ag-g i u n t i v i i n d i c a t i v e r r a n n o c o n s i d e r a t e l oca l i ;
• Forzare gli aggiornament i sincroni della coda di posta. Con i mo-d e r n i f i l e s y s t e m si lasc ia la r i s p o s t a d i d e f a u l t , N o ;
• L o c a i N e t w o r k s . Le re t i p e r le q u a l i il m a i l s e r v e r d e v e a c c e t t a r e d i
s m i s t a r e la p o s t a . V e n g o n o a c c e t t a t e p e r d e f a u l t s o l o le e m a i l d a
l o c a l h o s t . Per i nse r i r e a n c h e la r e t e 1 9 2 . 1 6 8 . 1 . 0 / 2 4 , p e r e s e m p i o , si
a g g i u n g a al la r i ga , 192.168.1.0/24;
• Limite di dimensione delle mailbox. Indica la dimensione massima p o s s i b i l e p e r le case l l e d i p o s t a . Il v a l o r e d i d e f a u l t è 0 ( i l l im i t a to ) .
Se n o n ci s o n o e v i d e n t i m o t i v i c o n t r a r i , si lasci t a l e v a l o r e ;
• Carattere per le estensioni degl i indirizzi locali e Protocol l i inter-n e t d a u s a r e . Si m a n t e n g a n o i v a l o r i p r e d e f i n i t i .
Configurazione diretta di Postfix
N e l caso in cu i la c o n f i g u r a z i o n e s e m p l i f i c a t a n o n r isu l tasse s u f f i c i e n t e , è
p o s s i b i l e i n t e r v e n i r e d i r e t t a m e n t e sui f i l e d i c o n f i g u r a z i o n e d e l ma i l server .
Il f i l e d i c o n f i g u r a z i o n e p r i n c i p a l e è / e t c / p o s t f i x / m a i n . c f . Q u i si p o s s o n o
i m p o s t a r e i v a l o r i p e r i p a r a m e t r i d e s i d e r a t i i n s e r e n d o d e l l e righe c o n la
s e g u e n t e s in tass i :
p a r a m e t r o = v a l o r e
E c c o u n e s e m p i o , c h e i m p o s t a p e r le e m a i l in usc i ta il re lay h o s t ( s m a r t
hos t ) m a i l . p r o v i d e r . i t :
r e l a y h o s t = [mail.provider.it]
L'aver i n s e r i t o il n o m e d e l l ' h o s t t r a p a r e n t e s i q u a d r e i n d i c a al m a i l s e r v e r
d i n o n e f f e t t u a r e a l c u n M X l o o k u p .
I p a r a m e t r i d i c o n f i g u r a z i o n e r i c h i a m a b i l i ne l f i l e m a i n . c f s o n o d i v e r s e c e n -
t i n a i a : ne l la T a b e l l a 11 .1 n e v e n g o n o i n d i c a t i a l c u n i t ra i p r i n c i p a l i , m e n t r e
u n e l e n c o c o m p l e t o d e i p a r a m e t r i è c o n t e n u t o ne l l a p a g i n a d i m a n u a l e d i
p o s t c o n f p o s t a ne l l a s e z i o n e 5 d i m a n (man 5 postconf).
Tabella 11.1 - Alcuni parametri fondamentali nella configurazione di Postfix. | Parametro Valore
m y d e s t i n a t i o n D o m i n i c h e il m a i l s e r v e r c o n s i d e r a l oca l i
m y d o m a i n I n d i c a il d o m i n i o d e l s e r v e r
m y h o s t n a m e I n d i c a il n o m e d e l s e r v e r
m y n e t w o r k s Le re t i c u i è c o n s e n t i t o u t i l i zza re il s e r v e r c o m e re lay
p e r l ' i n o l t r o d e l l a p o s t a
m y o r i g i n I n d i c a il d o m i n i o c h e v i e n e a g g i u n t o a l le e m a i l l oca l i
r e l a y h o s t Il m a i l s e r v e r cu i d e v o n o e s s e r e i nv ia t i i m e s s a g g i d i
p o s t a n o n l oca l i
Per m o d i f i c a r e u n p a r a m e t r o ne l f i l e m a i n . c f è a n c h e p o s s i b i l e u t i l i zza re il
c o m a n d o p o s t c o n f c o n l ' o p z i o n e -e. Per e s e m p i o , p e r i m p o s t a r e c o m e re-
lay h o s t m a i l . p r o v i d e r . i t si p u ò l anc i a re in c o n s o l e il s e g u e n t e c o m a n d o :
sudo p o s t c o n f -e "relayhost = [mail.provider.it]"
Un'a l t ra o p z i o n e u t i le d i p o s t c o n f è -n, c h e m o s t r a in o u t p u t l ' e l e n c o d e i pa ra -
m e t r i d i Post f ix c h e h a n n o va lo r i d i f f e ren t i d a que l l i d i d e f a u l t (F igura 11.2).
ale@pitagora:-$ postconf -n alias database = hash:/etc/aliases alias maps = hash:/etc/aliases appenddot mydomain = no biff = no configdirectory = /etc/postfix inet interfaces = all inetprotocols = all mailboxsizelimit = 0 mydestination = pitagora.home.Ian, pitagora, localhost.localdomain, localhost myhostname = pitagora mynetworks = 127.0.0.0/8 [: :ffff: 127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme directory = no recipientdelimiter = + relayhost = smtp tlssessioncache database = btree:${data_directory}/smtp_scache smtpd banner = $myhostname ESMTP $mail name (Ubuntu) smtpdjtlscertfile = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpdtlskey file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd tls session cache database = btree:${datadirectory}/smtpd scache smtpdusetls = yes ale@pitagora:-$
Figura 11.2-11 comando postconf-n mostra tutti i parametri con dei valori non di default.
L i n u x Utiuntu per server e reti
E s e g u e n d o p o s t c o n f -d, i n v e c e , v e n g o n o v i sua l i zza t i in o u t p u t i v a l o r i d i
d e f a u l t d i t u t t i i p a r a m e t r i , m e n t r e se al la s tessa o p z i o n e v i e n e a g g i u n t o
un p a r a m e t r o il p r o g r a m m a m o s t r a il v a l o r e d i d e f a u l t d e l s o l o p a r a m e t r o
i n s e r i t o .
L a n c i a n d o p o s t c o n f senza a r g o m e n t i , i n f i n e , in c o n s o l e a p p a r e la l ista d i
t u t t i i p a r a m e t r i d i c o n f i g u r a z i o n e c o n i rispettivi v a l o r i .
FTP server cari vsftpd Ta lvo l t a si ha b i s o g n o d i u n o s t r u m e n t o s e m p l i c e d a c o n f i g u r a r e e d a g e -
st i re c h e c o n s e n t a d i f o r n i r e l ' a c c e s s o in r e t e a d e i f i l e p r e s e n t i su una
m a c c h i n a . Il s e r v e r FTP v s f t p d p u ò esse re il g i u s t o c a n d i d a t o p e r c o m p i t i
s im i l i : g r a z i e a q u e s t a a p p l i c a z i o n e , i n f a t t i , f o r n i r e u n se rv i z io d i FTP " a n o -
n i m o " è d a v v e r o s e m p l i c e .
Installazione del server
U n s e r v e r FTP c o n f i g u r a t o p e r c o n s e n t i r e l ' a c c e s s o a n o n i m o p e r m e t t e
d i c o n d i v i d e r e f i l e c o n u t e n t i p r i v i d i u n o s p e c i f i c o a c c o u n t su l s e r v e r
s t e s s o . Si t r a t t a , q u i n d i , d i u n m o d o e f f i c a c e p e r d i s t r i b u i r e d e i f i l e p u b -
b l i c a m e n t e .
Per i ns ta l l a re v s f t p d e r e n d e r e s u b i t o o p e r a t i v o il s e r v e r b a s t a l anc i a re il
c o m a n d o s e g u e n t e :
sudo a p t - g e t instali v s f t p d
Una v o l t a s c a r i c a t o il p a c c h e t t o d a l l a r e te , q u e s t o v e r r à i n s t a l l a t o , sarà
c r e a t o l ' u t e n t e f t p ne l s i s t e m a , c o n la re la t i va d i r e c t o r y / h o m e / f t p , e v e r r à
a v v i a t o il d e m o n e vsftpd.
Se t u t t o c i ò c h e si v u o l e è u n s e m p l i c e se rv i z i o d i FTP a n o n i m o la c o n f i g u -
r a z i o n e d e l s e r v e r è t e r m i n a t a . Bas te rà q u i n d i i nse r i re i f i l e d a d i s t r i b u i r e
a l l ' i n t e r n o d i / h o m e / f t p e t a l e d i r e c t o r y sarà a c c e s s i b i l e a t u t t e le m a c c h i -
n e cu i è c o n c e s s a la c o n n e s s i o n e al s e r v e r FTP.
ale@pitagora:~$ sudo apt-get instali vsftpd Lettura della lista dei pacchetti in corso,.. Fatto Generazione dell'albero delle dipendenze in corso Lettura delle informazioni di stato... Fatto I seguenti pacchetti NUOVI (NEW) saranno installati:
vsftpd 0 aggiornati, 1 installati, 0 da rimuovere e 0 non aggiornati. È necessario prendere 0B/96,8kB di archivi. Dopo questa operazione verranno occupati 401kB di spazio su disco. Selezionato il pacchetto vsftpd, che non lo era, (Lettura del database ... 179780 file e directory attualmente installati.) Spacchetto vsftpd (da .../vsftpd_2.0.6-lubuntul_i386.deb) ... Configuro vsftpd (2.0.6-lubuntul) ... Aggiunta dell'utente di sistema «ftp» (UID 114) ... Aggiunta del nuovo utente «ftp» (UID 114) con gruppo «nogroup» ... La home directory "/home/ftp" non è stata creata.
* Starting FTP server: vsftpd [ OK ]
a l e @ p i t a g o r a : |
Figura 11.3 - Installando il pacchetto vsftpd verrà attivato automaticamente un servizio FTP anonimo.
Configurazione del server
N e l l a c o n f i g u r a z i o n e p r e i m p o s t a t a d i v s f t p d è a b i l i t a t o l ' a c c e s s o a n o n i m o
al s e r v e r FTP, m a n o n è c o n s e n t i t o a g l i u t e n t i a n o n i m i d i i nv i a re d e i f i l e al
server . I n o l t r e , n o n è p e r m e s s a la c o n n e s s i o n e ag l i u t e n t i n o r m a l i .
Per m o d i f i c a r e la c o n f i g u r a z i o n e d i v s f t p d si d e v e e n t r a r e ne l f i l e / e t c / v s f -
t p d . c o n f e c a m b i a r e i p a r a m e t r i d e s i d e r a t i . N e l l a T a b e l l a 1 1 . 2 s o n o i n d i c a -
t i i p a r a m e t r i p r i n c i p a l i , c o n i r i s p e t t i v i v a l o r i d i d e f a u l t .
Tabella 1 1 . 2 - 1 parametr i principali di vsf tpd.conf . Parametro Valore
a n o n y m o u s _
e n a b l e C o n s e n t e l ' a c c e s s o a g l i u t e n t i a n o n i m i . D e f a u l t YES
w r i t e _ e n a b l e C o n s e n t e l 'accesso in scr i t tura sul server FTP. De fau l t N O
a n o n _ u p l o a d _
e n a b l e
P e r m e t t e a g l i u t e n t i a n o n i m i d i f a re u p l o a d sul s e r v e r
FTP ( d e v e e s s e r e a t t i v o a n c h e il p a r a m e t r o w r i t e _ e n a -
b le ) . D e f a u l t N O
Parametro
a n o n _ m k d i r _
w r i t e e n a b l e
Valore P e r m e t t e ag l i u t e n t i a n o n i m i d i c rea re d i r e c t o r y ( d e v e
esse re a t t i v o a n c h e il p a r a m e t r o w r i t e _ e n a b l e ) . D e -
f a u l t N O
a n o n _ r o o t I nd i ca la d i r e c t o r y d i p a r t e n z a p e r g l i access i a n o n i m i .
Per d e f a u l t il p a r a m e t r o n o n i n d i c a a l c u n a d i r e c t o r y
l o c a l _ e n a b l e P e r m e t t e l ' a ccesso FTP ag l i u t e n t i loca l i . D e f a u l t N O
l i s ten
A v v i a al b o o t un d e m o n e v s f t p d (YES), a l t r i m e n t i il ser-
ve r FTP v i e n e a v v i a t o d a u n s u p e r s e r v e r c o m e x i n e t d
( N O ) . D e f a u l t su U b u n t u YES
x f e r l o g _ e n a b l e G e n e r a m e s s a g g i d i l o g p e r le o p e r a z i o n i d i u p l o a d e
d o w n l o a d . D e f a u l t su U b u n t u YES
Ecco , p e r e s e m p i o , le r i g h e d i c o n f i g u r a z i o n e p e r c o n s e n t i r e la sc r i t t u ra
ag l i u t e n t i a n o n i m i e i n d i c a r e c o m e d i r e c t o r y d i p a r t e n z a / m n t / f t p :
w r i t e _ e n a b l e = Y E S
a n o n _ u p 1 o a d _ e n a b 1 e = Y E S
anon_root = /mnt/ftp
Se si i n t e n d e f o r n i r e a c c e s s o a n c h e ag l i u t e n t i n o r m a l i p u ò esse re u t i l e
i n d i c a r e q u a l i f ra q u e s t i p o s s o n o c o l l e g a r s i al server , e s c l u d e n d o cos ì t u t t i
g l i a l t r i u t e n t i d a l se rv iz io . Le r i g h e n e c e s s a r i e p e r o t t e n e r e q u e s t o s o n o
le s e g u e n t i :
local_enable=YES
u s e r l i s t _ e n a b l e = Y E S
userlist_deny=NO
Il s i g n i f i c a t o d e l p r i m o p a r a m e t r o è s p i e g a t o ne l la Tabe l l a 11 .2 , m e n t r e le
d u e r i g h e success i ve r i c h i e d o n o q u a l c h e i n f o r m a z i o n e a g g i u n t i v a .
La r i ga useriist_enabie=YES fa ca r i ca re al se r ve r la l ista d i u t e n t i c o n t e n u t a
ne l f i l e i n d i c a t o d a l p a r a m e t r o useriist_fiie, c h e p e r d e f a u l t è / e t c / v s f t p d .
u s e r j i s t . La r iga useriist_deny=No, q u i n d i , i n d i c a c h e t a l e f i l e d e v e essere
i n t e r p r e t a t o c o m e e l e n c o d e g l i u t e n t i cu i è c o n c e s s o l ' accesso al se rve r
FTP: se si f o s s e i n s e r i t o YES c o m e v a l o r e d e l p a r a m e t r o useriist_deny,
i n v e c e , il f i l e s a r e b b e s t a t o i n t e r p r e t a t o c o m e e l e n c o d e g l i u t e n t i cu i è
v i e t a t o l ' accesso .
Inser i te q u e s t e t re righe in / e t c / v s f t p d . c o n f , n o n rimane p o i che scr ivere in
/ e t c / v s f t p d . u s e r _ l i s t g l i u t e n t i c h e p o s s o n o co l l ega rs i al server FTP.
Per a g g i o r n a r e la c o n f i g u r a z i o n e d e l server d o p o aver a p p o r t a t o d e l l e
m o d i f i c h e al f i le d i c o n f i g u r a z i o n e , q u i n d i , b i s o g n a lanc iare il c o m a n d o
sudo /etc/init.d/vsftpd reload.
Il d e m o n e v s f t p d s e g u e le impos taz ion i inser i te nei f i le / e t c / hos t s .a l l ow e /
e tc /hos ts .deny , d u n q u e pe r ges t i re g l i accessi è poss ib i le in te rven i re su q u e -
sti d u e f i le. Per e s e m p i o , p e r consen t i re a l l ' ind i r izzo IP 192.168 .1 .5 il co l l ega -
m e n t o al server FTP si p u ò inserire la riga s e g u e n t e in /e t c /hos ts .a l l ow :
vsftpd: 192.168.1.5
Il web server Apache A p a c h e è u n o d e i w e b server p i ù d i f fus i su In te rne t . Si t r a t t a d i una p ia t -
t a f o r m a f less ib i le e d i g r a n d e p o t e n z a che p u ò essere ut i l izzata p ro f i cua -
m e n t e a n c h e p e r f o r n i r e p a g i n e w e b a l l ' i n t e r n o d i una L A N o c o m e p ra t i -
c o a m b i e n t e d i s v i l u p p o p e r la c reaz ione d i a p p l i c a z i o n i w e b , se inser i to
p e r e s e m p i o a l l ' i n t e r n o d i un c o m p l e t o s i s tema LAMP.
C o n f i g u r a r e s e c o n d o le p r o p r i e necess i tà un w e b server c o m p l e s s o c o m e
A p a c h e p u ò essere u n ' o p e r a z i o n e l abo r i osa m a , a l m e n o p e r u n ' i m p o s t a -
z i o n e e l e m e n t a r e , la c o n f i g u r a z i o n e d i d e f a u l t in U b u n t u Server p u ò c o n -
s iderars i un v a l i d o p u n t o d i pa r tenza .
Installazione di Apache
Per ins ta l lare A p a c h e , i m o d u l i p r i nc ipa l i e a lcun i p r o g r a m m i accessor i
bas ta lanc iare il c o m a n d o sudo apt-get instali apache2.
Apache è un web server modulare. È composto da una sezione "core"
centrale e da un insieme di modul i aggiunt iv i che forniscono funzionalità
supplementar i . Ci sono modul i per gestire modal i tà dif ferenti di autenti-
cazione, per aggiungere il suppor to a SSL e TLS e così via. Per un indice
comple to dei modul i si veda:
h t tp : / /h t tpd.apache.Org/docs/2 .0 /mod/
Può cap i t a re che n e l l ' o u t p u t d e l c o m a n d o c o m p a i a un e r ro re d e l g e n e r e :
apache2 : Could not reliably determine the server' s fully qualified
domain name, using 127.0.1.1 for ServerName
C i ò s ign i f i ca c h e al server n o n risulta a s s e g n a t o un F Q D N . Per r i so lvere
il p r o b l e m a si p u ò i n te r ven i re sul f i l e / e t c / h o s t s , c o m e s p i e g a t o ne l pa -
rag ra fo A s s e g n a z i o n e d e i n o m i d i h o s t d e l C a p i t o l o 5. O p p u r e si p u ò
apr i re c o n un e d i t o r da r o o t il f i l e / e t c / a p a c h e 2 / c o n f . d / f q d n e inser i re la
r iga s e g u e n t e :
ServerName localhost
A q u e s t o p u n t o , se si p r o v a a d a c c e d e r e a l l ' i nd i r i zzo h t t p : / / 1 2 7 . 0 . 0 . 1 c o n
un qua ls ias i w e b b r o w s e r d o v r e b b e a p p a r i r e una p a g i n a s im i le a que l l a
v is ib i le n e l l ' i m m a g i n e s e g u e n t e (F igura 11.4). Bene ! Il w e b server è a t t i v o
e p e r f e t t a m e n t e f u n z i o n a n t e .
I File Modifica Visualizza Cronologia Segnalibri st iumenti Suida
- C , Í • http u m 0 ri l i
I t wo rks !
Configurazione del web server
I f i l e d i c o n f i g u r a z i o n e d i A p a c h e s o n o c o n t e n u t i ne l la d i r e c t o r y / e t c / a p a c h e 2 .
N e l l a Tabe l l a 11 .3 v e n g o n o e l e n c a t i i p r i n c i p a l i f i le e le d i r e c t o r y c h e
t r o v a n o in / e t c / a p a c h e 2 .
Tabella 11 .3 -1 file e le directory in /etc/apache2. | Elemento Utilizzo I
a p a c h e 2 . c o n f Il f i l e d i c o n f i g u r a z i o n e p r i n c i p a l e . C o n t i e n e le i m p o -
s taz ion i g e n e r a l i p e r il se r ve r w e b
p o r t s . c o n f F i le d i c o n f i g u r a z i o n e in cu i si i m p o s t a la p o r t a d i
a s c o l t o d e l se rve r w e b
s i t e s - a v a i l a b l e / La d i r e c t o r y c o n t i e n e i f i l e c o n le c o n f i g u r a z i o n i s p e c i -
f i c h e d e i s i n g o l i h o s t v i r t ua l i (siti) d i s p o n i b i l i
N e l l a d i r e c t o r y s o n o i n d i c a t i g l i h o s t v i r t ua l i a t t i v i sul
s i t e s - e n a b l e d / server . Q u e s t i f a n n o r i f e r i m e n t o ag l i h o s t v i r t ua l i p r e -
sen t i ne l l a d i r e c t o r y s i t e s - a v a i l a b l e
m o d s - a v a i l a b l e / La d i r e c t o r y c o n t i e n e i f i l e p e r ca r i ca re e c o n f i g u r a r e i
m o d u l i d i s p o n i b i l i
m o d s - e n a b l e d / Ne l la d i r e c t o r y s o n o ind ica t i i m o d u l i at t iv i sul server. Fan-
n o riferimento a q u a n t o d i s p o n i b i l e in m o d s - a v a i l a b l e
c o n f . d / I f i le in q u e s t a d i r e c t o r y v e n g o n o le t t i d a a p a c h e 2 . c o n f .
c o n f . d / C o n t e n g o n o d i r e t t i v e a g g i u n t i v e p e r la c o n f i g u r a z i o n e
S e g u e n d o q u e s t a s t r u t t u r a a d o t t a t a p e r o r g a n i z z a r e la c o n f i g u r a z i o n e d i
A p a c h e , o g n i s i t o c h e si i n t e n d e g e s t i r e r i c h i e d e l ' i n s e r i m e n t o d i un f i l e
a p p o s i t o ne l la d i r e c t o r y s i t es -ava i l ab le . C i a s c u n o d i q u e s t i f i l e , q u i n d i ,
r a p p r e s e n t a un d i v e r s o h o s t v i r t u a l e .
U n o s tesso se rve r w e b p u ò g e s t i r e p i ù si t i e c i ò è p o s s i b i l e g r a z i e a l l ' u t i l i z -
zo d e g l i h o s t v i r tua l i : la sce l ta d i q u a l e s i t o d e v e r i s p o n d e r e a una spec i f i ca
richiesta v i e n e d e t e r m i n a t a d a l n o m e d e l s i t o c o n t a t t a t o o d a l l ' i n d i r i z z o IP
d i d e s t i n a z i o n e . In q u e s t o m o d o , una s i n g o l a m a c c h i n a p u ò fa r f u n z i o n a r e
a n c h e d e c i n e e d e c i n e d i s i t i w e b .
N e l l a c o n f i g u r a z i o n e d i d e f a u l t è a t t i v o un u n i c o h o s t v i r t u a l e , la cu i c o n -
f i g u r a z i o n e è c o n t e n u t a ne l f i l e / e t c / a p a c h e 2 / s i t e s - a v a i l a b l e / d e f a u l t . Le
righe in iz ia l i d i q u e s t o f i l e s o n o v is ib i l i in F i g u r a 11 .5 .
JameVirtualHost * <VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/ «Directory />
Options FollowSymLinks AllowOverride None
</Directory> «Directory /var/www/>
Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ «Directory "/usr/lib/cgi-bin">
AllowOverride None Options +ExecCGI -Multiviews +SymLinksIfOwnerMatch Order allow,deny Allow from all
</Directory>
1.1 Cim 1
Figura 11.5 - La sezione iniziale del file che definisce l'host virtuale di default.
La p r i m a r i ga è N a m e v i r t u a i H o s t * . La d i r e t t i v a N a m e v i r t u a i H o s t p e r m e t t e
d i i n d i c a r e l ' i n d i r i z z o IP su cu i il w e b s e r v e r sarà in a s c o l t o p e r le r i c h i e s t e
d i c o n n e s s i o n e a g l i h o s t v i r t ua l i . In q u e s t a r i ga , q u i n d i , si s t a b i l i s c e c h e il
s e r v e r p o t r à r i c e v e r e r i c h i e s t e su qua l s i as i i n d i r i z z o (*).
La s e c o n d a r i ga c o n t i e n e la d i r e t t i v a < v i r t u a i H o s t > , c h e d e f i n i s c e la c o n f i -
g u r a z i o n e d i u n h o s t v i r t u a l e . Q u e s t a d i r e t t i v a p u ò a p p l i c a r s i a u n o s p e c i -
f i c o i n d i r i z z o IP o a u n n o m e c o m p l e t o d i d o m i n i o o p p u r e , c o m e in q u e s t o
c a s o , p u ò r i fe r i rs i a t u t t i g l i i nd i r i zz i (*). La c o n f i g u r a z i o n e d e l l ' h o s t v i r t u a l e
va p o i ch iusa c o n la d i r e t t i v a < / v i r t u a i H o s t > .
La r iga s e r v e r A d m i n w e b m a s t e r @ i o c a i h o s t , q u i n d i , c o n t i e n e l ' i n d i r i z z o e m a i l
c o m u n i c a t o ai c l i e n t d a l w e b s e r v e r in c a s o d i e r r o r i . La r iga D o c u m e n t R o o t
/var/www/, i n v e c e , s t a b i l i s c e c h e la d i r e c t o r y cu i d a r à a c c e s s o l ' h o s t v i r t u a -
le è / v a r / w w w / su l la m a c c h i n a server .
Q u a n d o c o n il b r o w s e r si a p r e l ' i n d i r i z z o 1 2 7 . 0 . 0 . 1 , d u n q u e , v e r r à a p e r t o
il f i l e i n d e x . h t m l c o n t e n u t o in / v a r / w w w / , p e r c h é q u e s t a è la d i r e c t o r y cu i
p u n t a la d i r e t t i v a D o c u m e n t R o o t d e l l ' h o s t v i r t u a l e d i d e f a u l t .
I n f i ne , le r i g h e r a c c h i u s e t ra le d i r e t t i v e < D i r e c t o r y > e < / D i r e c t o r y > c o n -
t e n g o n o o p z i o n i c h e si a p p l i c a n o a l le s o l e d i r e c t o r y i n d i c a t e , s o t t o d i -
r e c t o r y i nc l use .
Q u e s t e , d u n q u e , s o n o le p a r t i p i ù rilevanti d e l f i l e / e t c / a p a c h e 2 / s i t e s - a v a i -
l a b l e / d e f a u l t , a l m e n o p e r u n a r i c o g n i z i o n e in i z ia le d e l l e o p z i o n i d i c o n f i -
g u r a z i o n e d i s p o n i b i l i in A p a c h e .
Modificare la configurazione
A q u e s t o p u n t o è p o s s i b i l e u t i l i zza re il f i l e d e l v i r t u a l h o s t d i d e f a u l t c o m e
c a n o v a c c i o p e r la c o n f i g u r a z i o n e d e l p r o p r i o s i t o .
N e l f i l e / e t c / a p a c h e 2 / s i t e s - a v a i l a b l e / d e f a u l t , q u i n d i , si m o d i f i c h i la riga
c o n la d i r e t t i v a D o c u m e n t R o o t i n s e r e n d o c o m e v a l o r e la d i r e c t o r y in cu i
s o n o c o n t e n u t i i f i l e d e l p r o p r i o s i t o w e b . E c c o u n e s e m p i o :
D o c u m e n t R o o t / u s r / l o c a l / s h a r e / w e b /
NameVirtualHost * <VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /usr/local/share/web/ «Directory />
Options FollowSymLinks AllowOverride None
</Directory> «Directory /usr/local/share/web/>
Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ «Directory "/usr/lib/cgi-bin">
AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all
«/Directory» Cim "default" 43L, 1009C scritti 4,1-2 Cim
Figura 1 1.6 - Cambiando poche righe nel file default è possibile creare una configura-zione per il proprio sito.
Q u i n d i , b i s o g n a c a m b i a r e la r iga «Directory /var/www/> i n s e r e n d o al p o -
s to d i / v a r / w w w / la d i r e c t o r y i nd i ca ta da DocumentRoot. In q u e s t o m o d o il
b l o c c o d i righe d i c o n f i g u r a z i o n e p e r / v a r / w w w / ver rà a t t r i b u i t o al la n u o v a
d i rec to ry .
In f ine, d a t o che s o n o s ta te m o d i f i c a t e d e l l e i m p o s t a z i o n i , b i s o g n a far ri-
l e g g e r e al server la c o n f i g u r a z i o n e m e d i a n t e il c o m a n d o sudo /etc/init.
d/apache2 reload.
Aggiungere un sito
La c o n f i g u r a z i o n e p rede f i n i t a d i A p a c h e su U b u n t u c o n s e n t e d i a g g i u n g e r e
u l ter ior i siti al w e b server in m o d o d a v v e r o semp l i ce . A n c h e in q u e s t o caso,
il p u n t o d i par tenza sarà il f i le d e f a u l t in / e t c / apache2 / s i t es -ava i l ab l e .
Si crei un n u o v o f i le , c h i a m a t o p e r e s e m p i o s i to , e si c o p i al suo i n t e r n o il
c o n t e n u t o d e l f i le d e f a u l t :
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-
available/sito
A d e s s o b i s o g n a m o d i f i c a r e il n u o v o f i le i n t e r v e n e n d o sul le p r i nc ipa l i d i re t -
t i ve d i c o n f i g u r a z i o n e .
I nnanz i t u t t o , va e l i m i n a t a la r iga in iz ia le c o n la d i re t t i va NamevirtuaiHost:
q u e s t a , in fa t t i , v i e n e le t ta da l f i le d e f a u l t e n o n b i s o g n a inser i r la n u o v a -
m e n t e . A l l ' i n t e r n o d e l b l o c c o <virtuaiHost> si d e v e p o i a g g i u n g e r e una
riga serverName c o n t e n e n t e il n o m e d i hos t c o m p l e t o p e r il s i to . Una r iga
d i e s e m p i o è la s e g u e n t e :
ServerName sito.internet.it
La r iga serverName c o n s e n t e d i i n d i v i d u a r e il virtuaiHost che d e v e r i spon-
d e r e a una r ich ies ta e f f e t t u a t a al server w e b da un c l ien t . Se n o n v i e n e
t r o v a t o a lcun hos t v i r t ua le che c o r r i s p o n d a al n o m e d i hos t r i ch ies to , v i e n e
i n t e r p e l l a t o l ' hos t v i r t ua le d i d e f a u l t , nel la cu i c o n f i g u r a z i o n e la d i r e t t i va
ServerName è assente .
N e l b l o c c o <virtuaiHost> va p o i m o d i f i c a t a la r iga c o n la d i re t t i va Docu-
mentRoot in m o d o ta l e che q u e s t a i nd i ch i la d i r e c t o r y rad ice p e r il n u o v o
s i to. Poi si c a m b i a la r iga «Directory /var/www/> i n s e r e n d o a n c h e q u i la
d i r e c t o r y rad i ce d e s i d e r a t a .
F a t t o q u e s t o , si p o s s o n o m o d i f i c a r e a l t r e p a r t i r i p r e s e d a l f i l e d e f a u l t , p e r
e s e m p i o e l i m i n a n d o le r i g h e r e l a t i v e a l la d i r e c t o r y / u s r / s h a r e / d o c , c h e c o -
s t i t u i s c o n o u n i n u t i l e d u p l i c a t o , o p p u r e c a m b i a n d o le d i r e t t i v e E r r o r L o g e
c u s t o m L o g in m o d o t a l e d a c r e a r e f i l e d i l o g d i v e r s i p e r i va r i s i t i .
E f f e t t u a t e t u t t e le m o d i f i c h e c h e si r e p u t a n o n e c e s s a r i e , q u i n d i , si sa lva
il f i l e s i t o e lo si a t t i va ne l l a c o n f i g u r a z i o n e d i A p a c h e c o n il c o m a n d o
s e g u e n t e :
sudo a 2 e n s i t e sito
Il c o m a n d o s p e c u l a r e , d a l l a m e d e s i m a s in tass i , p e r d i s a b i l i t a r e u n s i t o è
a2dissite. Per d i s a t t i v a r e l ' h o s t v i r t u a l e c o n f i g u r a t o ne l f i l e s i t o , q u i n d i , va
l a n c i a t o sudo a 2 d i s s i t e sito.
D o p o l ' e s e c u z i o n e d e i c o m a n d i a 2 e n s i t e e a 2 d i s s i t e è i n f i n e n e c e s -
s a r i o f a r r i l e g g e r e a d A p a c h e la c o n f i g u r a z i o n e c o n s u d o /etc/init. d / a p a c h e 2 r e l o a d .
ale@pitagora:~$ sudo a2ensite sito Site sito installed; run /etc/init.d/apache2 reload to enable. ale@pitagora:~$ sudo /etc/init.d/apache2 reload * Reloading web server config apache2 [ OK ]
ale@pitagora:-$ |
Figura 11.7- Dopo aver attivato un sito si fa rileggere la configurazione al server web.
A q u e s t o p u n t o A p a c h e g e s t i s c e p i ù si t i c h e rispondono a u n m e d e s i m o
IP, m a p e r f a re in m o d o c h e ta l i s i t i s i a n o r a g g i u n g i b i l i b i s o g n a i n t e r v e n i r e
sul la c o n f i g u r a z i o n e d e l server D N S e a g g i u n g e r e a p p o s i t i r e c o r d D N S d i
t i p o C N A M E .
Per e f f e t t u a r e d e l l e p r o v e v e l o c i c o n g l i h o s t v i r t ua l i c o n f i g u r a t i , p e r ò ,
è s u f f i c i e n t e a g g i u n g e r e ne l f i le / e t c / h o s t s d e l l a m a c c h i n a se rve r d e l l e
righe a g g i u n t i v e . Q u e s t e d e v o n o c o n t e n e r e l ' i nd i r i zzo IP d e l w e b serve r
e i n o m i d i h o s t a cu i r i s p o n d o n o g l i h o s t v i r t ua l i in cu i è p r e s e n t e la d i -
re t t i va ServerName.
Host: virtuali IP-based
La p r o c e d u r a d i c o n f i g u r a z i o n e p resen ta ta in q u e s t i pa rag ra f i m o s t r a
c o m e c reare d e g l i hos t v i r tua l i d i t i p o n a m e - b a s e d (un so lo ind i r i zzo IP, sit i
i den t i f i ca t i da l n o m e d e l l ' h o s t r i ch ies to da l c l ien t ) .
Per ut i l izzare hos t v i r tua l i IP -based ( indir izzi IP d i f f e ren t i p e r sit i d i f f e ren t i ) ,
i nvece , si d e v e c o l l e g a r e o g n i s i n g o l o hos t v i r t ua le a un d i v e r s o ind i r i zzo
IP: si p u ò o t t e n e r e q u e s t o a d o t t a n d o p iù c o n n e s s i o n i d i re te o p p u r e c o n -
f i g u r a n d o d e l l e i n te r f acce d i re te v i r tua l i .
Q u e s t a s e c o n d a o p z i o n e è m o l t o c o m o d a . Per s f ru t tar la bas ta richiamare
ifconfig in q u e s t o m o d o :
sudo ifconfig ethO : 0 192.168.1.100 netmask 255.255.255.0
Il c o m a n d o crea l ' i n te r facc ia v i r t ua le e t h 0 : 0 , le assegna l ' i nd i r i zzo
1 9 2 . 1 6 8 . 1 . 1 0 0 e d i ch ia ra una n e t m a s k 2 5 5 . 2 5 5 . 2 5 5 . 0 . È q u i n d i poss ib i l e
a t t i va re c o n lo s tesso p r o c e d i m e n t o le i n te r f acce e t h 0 : 1 , e t h 0 : 2 e così v ia.
Per c o n f i g u r a r e le i n te r f acce d i re te v i r tua l i a l l ' avv io de l l a m a c c h i n a è suf f i -
c i e n t e a g g i u n g e r e in / e t c / n e t w o r k / i n t e r f a c e s d e i b l o c c h i c o n t e n e n t i righe
inizial i c o m e la s e g u e n t e :
iface ethO: 0 inet static
C r e a t e le i n te r f acce v i r tua l i , d u n q u e , p e r c o n f i g u r a r e A p a c h e si s e g u o -
n o le is t ruz ion i f o r n i t e in p r e c e d e n z a p e r g l i hos t v i r tua l i n a m e - b a s e d . In
q u e s t o caso, p e r ò , n o n si d e v e inser i re a lcuna d i re t t i va NamevirtuaiHost
e ne l le righe <virtuaiHost> va inser i to l ' i nd i r i zzo IP de l l ' i n t e r f acc i a d i re te
v i r tua le a b b i n a t a a l l ' hos t v i r t ua le c o r r e n t e .
Ecco q u i n d i un s e m p l i c e b l o c c o <virtuaiHost> d i e s e m p i o :
cVirtualHost 192.168.1.100> ServerAdmin webmaster@localhost DocumentRoot /usr/local/share/sito2 ServerName www.secondosito.com </VirtualHost>
Il server DIM5 BIIX1D N e l C a p i t o l o 5 si è v i s to c o m e t r a d u r r e i n o m i d i hos t in indi r izz i IP inseren-
d o o p p o r t u n e r i g h e d i c o n f i g u r a z i o n e ne l f i le / e t c / h o s t s . Q u e s t o m e t o d o
p u ò essere f u n z i o n a l e in ret i d i p i c co l i s s ime d i m e n s i o n i , m a g a r i cos t i t u i t e
da d u e o t r e m a c c h i n e , m a è c e r t o i ne f f i c i en te e p o c o p r a t i c o in L A N an-
che p o c o p i ù g r a n d i .
In q u e s t o caso è necessar io far ges t i r e la r i so luz ione d e i n o m i d i hos t a un
server D N S ins ta l la to su un c o m p u t e r de l l a L A N : le var ie m a c c h i n e nel la
re te l oca le c o n t a t t e r a n n o q u i n d i il se rver D N S o g n i vo l t a c h e d o v r a n n o
r i so lvere un n o m e . Un be l passo avan t i rispetto al d o v e r rep l i ca re e m o d i -
f i care il f i l e / e t c / h o s t s su t u t t i i PC de l l a re te .
N e i pa rag ra f i che s e g u o n o , q u i n d i , si f o r n i r a n n o le is t ruz ion i p e r insta l lare
il se rve r D N S B I N D e u t i l i zzarne a l cune f unz iona l i t à d i base .
Installazione e configurazione iniziale
Per ins ta l lare B I N D va l anc ia to in c o n s o l e il c o m a n d o sudo apt-get in-
stali bind9. A l t e r m i n e de l l ' i ns ta l l az ione , q u e l l o che si o t t e r r à sarà un
D N S server d i c a c h i n g a t t i v o nel s i s tema e f o r n i t o d i una c o n f i g u r a z i o n e
quas i c o m p l e t a .
Pr ima d i c o n t i n u a r e , è necessar ia q u a l c h e p rec i saz ione in iz ia le sui t i p i d i
server D N S che è poss ib i l e i m p l e m e n t a r e :
• S e r v e r d i c a c h i n g . Il D N S server ins ta l la to c o n t a t t a un a l t ro D N S
server p e r la r i so luz ione d e i n o m i e m e m o r i z z a le r i spos te ne l la ca-
che , così da o f f r i r l e ai c l i en t p e r le success ive r i ch ies te ;
• S e r v e r a u t o r i t a t i v o p r i m a r i o . Il D N S server i ns ta l l a to r iso lve d i r e t -
t a m e n t e i n o m i ricercando le i n f o r m a z i o n i su d e i f i le d i c o n f i g u r a z i o -
ne local i . È c h i a m a t o a n c h e server m a s t e r ;
• Server au to r i t a t i vo secondar io . Il DNS server ricava le informa-z ion i r i ch ies te da un server a u t o r i t a t i v o p r i m a r i o . È c h i a m a t o a n c h e
server s lave.
Ne l la c o n f i g u r a z i o n e d i d e f a u l t d i B I N D , q u i n d i , il se rver D N S n o n fa a l t ro
che ricevere d a t i da una f o n t e es te rna e ha il s e m p l i c e s c o p o d i m i g l i o r a r e
l ' e f f i c ienza d i una re te loca le , a u m e n t a n d o la ve l oc i t à d i r i so luz ione d e i
n o m i e r i d u c e n d o il t r a f f i co D N S nel la L A N .
Per r e n d e r e o p e r a t i v a la c o n f i g u r a z i o n e d i un se rve r D N S d i c a c h i n g , q u i n -
d i , è su f f i c i en te inser i re ne l f i le / e t c / b i n d / n a m e d . c o n f . o p t i o n s g l i ind i r izz i
IP d e i server D N S da c o n t a t t a r e , t i p i c a m e n t e q u e l l i d e l p r o p r i o p rov ide r .
D o p o aver a p e r t o il f i le c o n un e d i t o r da roo t , si ce rch i il b l o c c o d i r i g h e
s e g u e n t e e si t o l g a n o t u t t i i ca ra t te r i / / inizial i d i c o m m e n t o :
// forwarders {
/ / 0 . 0 . 0 . 0 ;
/ / } I
Q u i n d i , si i nser i scano al p o s t o d i o .o .o .o , - g l i ind i r izz i IP d e s i d e r a t i . Ecco
un e s e m p i o d i c iò che si d e v e o t t e n e r e :
forwarders {
195.110.128.1;
212.48.4.11;
} :
Fat to q u e s t o , si r iavvi i il se rver D N S c o n il c o m a n d o sudo /etc/init.d/
bind9 restart.
N o n r i m a n e p o i che m o d i f i c a r e il f i le / e t c / r e s o l v . c o n f de l l a m a c c h i n a ser-
ve r in m o d o ta l e che su q u e s t a v e n g a c o n t a t t a t o il se rver D N S loca le p e r
r i so lvere i n o m i . La r iga nameserver d e v e d i v e n t a r e così :
nameserver 127.0.0.1
N e l caso s iano p resen t i p i ù r i g h e che spec i f i cano g l i indi r izz i d e i server
D N S da usare, è necessar io c h e il se rver loca le v e n g a i n d i c a t o p e r p r i m o .
Inser i re in / e t c / r e s o l v . c o n f sia il p r o p r i o server D N S sia que l l i d e l p rov ide r ,
q u i n d i , c o n s e n t e d i risolvere i n o m i d i hos t a n c h e q u a n d o il se rver nel la
re te loca le risulta i r r a g g i u n g i b i l e (F igura 11.8).
nameserver 127.0.0.1 nameserver 195.110.128.1 Jameserver 212.48.4.11
"/etc/resolv.conf" 3L, 69C scritti 3,1 Tut
Figura 11.8 - Il file /etc/resolv.conf con il server DNS locale e quelli forniti dal provider.
N e g l i a l t r i c o m p u t e r d e l l a L A N , I n f i ne , il p r i m o n a m e s e r v e r i n d i c a t o ne l
f i l e / e t c / r e s o l v . c o n f d e v e p u n t a r e a l l ' i n d i r i z z o IP d e l l a m a c c h i n a in cu i è
i n s t a l l a t o B I N D .
La cache d i B IND non v iene memor izzata su disco ma è mantenu ta in
RAM. In caso d i eccessiva occupaz ione d i memor ia sul server è possib i le
l imitare le d imens ion i del la cache inserendo in named.con f .op t ions l 'op-
z ione max-cache-size. Per cancel lare le in formazioni con tenu te nella
cache, invece, si lancia il c o m a n d o sudo rade -s 127.0.0.1 flush.
Configurare un server DIM5 primaria
L 'u t i l i zzo d i B I N D c o m e s e r v e r d i c a c h i n g , a n c h e se f o r n i s c e u n se rv i z io
u t i l e in una L A N , è s o l o u n s e m p l i c e a s s a g g i o d e l l e p o t e n z i a l i t à d i u n
s e r v e r D N S .
E c c o q u i n d i le i s t r uz i on i p e r c r e a r e u n s e r v e r a u t o r i t a t i v o p r i m a r i o : q u e l l o
c h e si o t t e r r à sarà u n a m a c c h i n a c h e r i s o l v e i n o m i d i h o s t p e r la r e t e l oca -
le, d e m a n d a n d o a un server D N S e s t e r n o la t r a d u z i o n e d e l n o m i es te rn i
ve rso la L A N .
Per a t t i va re un server p r i m a r i o è necessar io d e f i n i r e ne l server una zona
D N S loca le . Una zona n o n è a l t ro che una p a r t e d e l l o spaz io d e i n o m i
D N S : la p r i m a o p e r a z i o n e da c o m p i e r e , d u n q u e , è c reare una zona cor r i -
s p o n d e n t e ag l i indi r izz i de l l a p r o p r i a L A N .
N e g l i e s e m p i che s e g u o n o v i e n e u t i l i zza to il n o m e d i d o m i n i o u f f i c io . lan .
Q u a n d o q u e s t o a p p a r e ne l l e r i g h e r i p o r t a t e , d u n q u e , b i s o g n a inser i re al
suo p o s t o il n o m e d i d o m i n i o de l l a p r o p r i a re te . Le m a c c h i n e che c o m -
p o n g o n o la re te s o n o q u i n d i m a r c o (192 .168 .1 .10 ) , ca r io (192 .168 .1 .20 ) ,
g i a n n i ( 192 .168 .1 .30 ) e ns (192 .168 .1 .40 ) . Su q u e s t ' u l t i m a è ins ta l l a to il
server D N S .
Si ap ra d u n q u e il f i le / e t c / b i n d / n a m e d . c o n f . l o c a l e si a g g i u n g a n o le r i g h e
s e g u e n t i :
zone "ufficio, lan" {
type master;
file "/etc/bind/db. ufficio. lan" ;
} ;
Fa t to q u e s t o , va c o n f i g u r a t a p e r la re te loca le una zona inversa: q u e s t a
c o n s e n t e d i r i so lvere un ind i r i zzo IP ne l re la t i vo n o m e d i hos t . S e m p r e ne l
f i le n a m e d . c o n f . l o c a l si i nser i scano q u e s t e r i ghe :
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
L ' i nd i caz ione 1 . 1 6 8 . 1 9 2 nel la p r i m a riga n o n è a l t ro c h e la scr i t tu ra inversa
d e i p r i m i t re n u m e r i che c o m p o n g o n o l ' i nd i r i zzo de l l a L A N . Ne l la terza
r iga, i nvece , 192 è il p r i m o n u m e r o de l l ' i nd i r i zzo .
A q u e s t o p u n t o , d o p o aver sa lva to il f i le n a m e d . c o n f . l o c a l è g i u n t o il m o -
m e n t o d i c reare d e i r e c o r d , c i oè le voc i d e l d a t a b a s e d e l D N S , sia p e r la
zona d i r e t t a sia p e r que l l a inversa.
Per la zona d i r e t t a si p u ò usare c o m e m o d e l l o il f i le / e t c / b i n d / d b . l o c a i , il
cu i c o n t e n u t o è v is ib i le in F igura 11.9.
D
; BIND data file for local loopback interface
$TTL 604800
@ IN 50A localhost. root.localhost. ( 2 ; Serial
604800 ; Refresh 86400 ; Retry
2419200 ; Expire 604800 ) ; Negative Cache TTL
@ IN NS localhost. @ IN A 127.0.0.1 @ IN AAAA : : 1
•/etc/bind/db. local" 14L, 270C 1,1 Tut
Figura 11.9 - Si usa /etc/bind/db. locai come modello per creare il file della zona.
Si c re i q u i n d i d b . u f f i c i o . l a n a p a r t i r e d a q u e s t o f i l e :
sudo cp / e t c / b i n d / d b . locai / e t c / b i n d / d b .ufficio. lan
N e l f i l e d b . u f f i c i o . l a n la p r i m a riga d a m o d i f i c a r e è la s e g u e n t e :
@ IN S O A l o c a l h o s t . r o o t . l o c a l h o s t . (
A l p o s t o d i l o c a l h o s t . b i s o g n a inse r i re il n o m e d i d o m i n i o c o m p l e t o d e l
s e r v e r D N S m a n t e n e n d o il p u n t o f i n a l e . A l p o s t o d i r o o t . l o c a l h o s t . , in -
v e c e , si i n d i c a l ' i nd i r i z zo e m a i l d e l l ' a m m i n i s t r a t o r e sul server c o n s e r v a n d o
la n o t a z i o n e p r e s e n t e ne l f i l e d b . l o c a i . Per e s e m p i o , se si usa n s . u f f i c i o . l a n
c o m e F Q D N e a d m i n @ u f f i c i o . l a n c o m e e m a i l la r i ga d i v e n t a così :
@ IN SOA ns.ufficio.lan. admin.ufficio. l a n . (
Q u e s t a p r i m a r iga m o d i f i c a t a è l ' i n i z io d e l r e c o r d S O A p e r la z o n a c h e si
sta c o n f i g u r a n d o : q u e s t o t i p o d i r e c o r d ha la f u n z i o n e d i d e f i n i r e u n a z o n a
e si e s t e n d e p e r p i ù righe ne l f i l e , f i n o al c a r a t t e r e d i p a r e n t e s i t o n d a d i
c h i u s u r a .
La riga success i va ne l f i l e c o n t i e n e il v a l o r e d e l serial. O g n i v o l t a c h e si e f -
f e t t u a n o d e i c a m b i a n t i ne l f i l e d b . u f f i c i o . l a n q u e s t o v a l o r e va a u m e n t a t o .
Una p r a t i c a d i f f u s a è q u e l l a d i i n d i c a r e c o m e n u m e r o se r i a le la d a t a in
cu i le m o d i f i c h e s o n o s t a t e a p p o r t a t e , a g g i u n g e n d o d u e c i f re f i na l i p e r
s e g n a l a r e i c a m b i a m e n t i e f f e t t u a t i in u n o s t e s s o g i o r n o . E c c o u n a r i ga d i
e s e m p i o :
2008092800 ; Serial
Le r i g h e s e g u e n t i d e l r e c o r d S O A si p o s s o n o lasc ia re i m m u t a t e . Q u i n d i si
d e v e m o d i f i c a r e la r i ga success i va :
@ IN NS l o c a l h o s t .
Q u e s t a c o n t i e n e u n r e c o r d d i t i p o NS, c h e i n d i c a i s e r v e r p r i m a r i e s e c o n -
d a r i p e r u n a d e t e r m i n a t a z o n a . Il c a r a t t e r e p r e s e n t e a n c h e ne l l a r i ga
in iz ia le d e l r e c o r d S O A , è u n a s c o r c i a t o i a usa ta p e r r a p p r e s e n t a r e la z o n a
a t t u a l e , m e n t r e l o c a l h o s t . è il n o m e d i h o s t d e l s e r v e r D N S cu i la r i ga si
riferisce.
Se il s e r v e r D N S ne l la L A N è n s . u f f i c i o . l a n , q u i n d i , q u e s t a r iga d e v e d i v e n -
t a r e così :
@ IN N S ns . ufficio. lan.
F i n o r a si s o n o i n c o n t r a t i i r e c o r d S O A e N S . N e l l a T a b e l l a 11 .4 , q u i n d i ,
v i e n e p r e s e n t a t o u n e l e n c o d e i t i p i d i r e c o r d D N S p i ù i m p o r t a n t i .
Tabella 11.4 - I principali t ip i di record DNS.
I Tipo Descrizione j S O A Sta p e r S ta r t o f A u t h o r i t y e d e f i n i s c e u n a z o n a
N S Sta p e r N a m e S e r v e r e i n d i c a d e i n a m e s e r v e r a u t o r i t a t i v i
• • H I F o r n i s c e la c o r r i s p o n d e n z a t r a u n n o m e e u n i n d i r i z z o
PTR Sta p e r Po inTeR e f o r n i s c e la c o r r i s p o n d e n z a t r a u n i n d i -
PTR r izzo e u n n o m e
M X Sta p e r M a i l e X c h a n g e r e i n d i c a a q u a l i h o s t d e v o n o esse-
re i n v i a t e le e m a i l
C N A M E F o r n i s c e a u n h o s t u n n o m e s u p p l e m e n t a r e
OEE Life *
A q u e s t o p u n t o si a g g i u n g o n o ne l f i l e le r i g h e c h e c o n s e n t o n o d i t r a d u r r e
g l i i nd i r i zz i IP in n o m i d i h o s t a l l ' i n t e r n o d e l l a r e t e l oca le . Si i nse r i sce i n n a n -
z i t u t t o u n r e c o r d A c o n le i n f o r m a z i o n i su l s e r v e r D N S :
ns IN A 192.168.1.40
Q u i n d i , si a g g i u n g o n o le r i g h e r e l a t i v e a g l i a l t r i c o m p u t e r ne l l a L A N , c o m e
in q u e s t e r i g h e d i e s e m p i o :
m a r c o IN A 192.168.1.10
cario IN A 192.168.1.20
g i a n n i IN A 192.168.1.30
F a t t o q u e s t o , s o n o s ta t i c r e a t i t u t t i i r e c o r d p e r la z o n a d i r e t t a : il f i l e
d b . u f f i c i o . i a n r i s u l t a n t e è v i s i b i l e n e l l ' i m m a g i n e c h e s e g u e ( F i g u r a 11 .10 ) .
• f BIND data file for local loopback interface
• $TTL 604800 IN SOA ns .u f f i c i o . I an . admin.ufficio.lan. ( 2008092800 ; Serial
604800 ; Refresh 86400 ; Retry
2419200 ; Expire 604800 ) ; Negative Cache TTL
g IN NS ns.uf f i c io . Ian . ns IN A 192.168.1. 40 inarco IN A 192.168.1. 10 cario IN A 192.168.1. 20 gianni IN A 192.168.1. 30
"/etc/bind/db.ufficio,lan1 ' 16 linee --6%-- 1,1 Tut
Figura 11.10-11 file /etc/bind/db.ufficio.lan dopo le modifiche.
Poi si passa a c o n f i g u r a r e il f i l e p e r la z o n a i nve rsa . A n c h e in q u e s t o c a s o
si u t i l i zza u n f i l e c o m e m o d e l l o , d b . 1 2 7 :
sudo cp / e t c / b i n d / d b . 1 2 7 / e t c / b i n d / d b . 1 9 2
La s t r u t t u r a d i q u e s t o f i l e è s i m i l e a q u e l l a d e l f i l e p e r la z o n a d i r e t t a .
B i s o g n a q u i n d i m o d i f i c a r e la p r i m a r iga d e l r e c o r d S O A ne l m o d o v i s t o
in p r e c e d e n z a , i n c r e m e n t a n d o a n c h e q u i il s e r i a l a o g n i m o d i f i c a . Poi si
a g g i u n g e u n r e c o r d N S c o n il n o m e d i h o s t d e l s e r v e r D N S .
I n f i ne , si i nse r i sce u n r e c o r d PTR p e r o g n i n o m e d i h o s t p r e s e n t e ne l l a r e t e
l o c a l e , in q u e s t o m o d o :
10 IN PTR marco.ufficio, lan.
20 IN PTR cario.ufficio, l a n .
30 IN PTR g i a n n i . ufficio, l a n .
4 0 IN PTR ns .ufficio, lan.
11 c o n t e n u t o d e l f i l e al t e r m i n e d e l l e m o d i f i c h e sarà s i m i l e a l l ' i m m a g i n e se-
g u e n t e ( F i g u r a 11 .11) . La c o n f i g u r a z i o n e d e l s e r v e r D N S p r i m a r i o è t e r m i -
n a t a e n o n res ta c h e r i avv i a re B I N D c o n sudo / e t c / i n i t ,d/bind9 restart.
• ; BIND reverse data file for local loopback interface
I$TTL 604800 IN SOA ns.uff icio.lan. admin.ufficio.lan. ( 2008092800 ; Serial
604800 ; Refresh 86400 ; Retry
2419200 ; Expire 604800 ) ; Negative Cache TTL
@ IN NS ns. ufficio, lan. 10 IN PTR marco.ufficio.lan. 20 IN PTR cario.ufficio.lan. 30 IN PTR gianni.ufficio.lan. 40 IN PTR ns.ufficio.lan.
("/etc/bind/db. 192" 16L, 376C scritti 1,1 Tut
Figura 11.11 - Il file /etc/bind/db. 192 con la configurazione della zona inversa.
12. Ottimizzare il sistema
La procedura per compi la re facilmente il
kernel e le applicazioni.
Ar r i va t i a q u e s t o p u n t o , q u e l l o che si è o t t e n u t o è una m a c c h i n a p e r f e t -
t a m e n t e f u n z i o n a n t e e c o n t u t t o il s o f t w a r e necessar io p e r e r o g a r e servizi
ne l la re te o p e r d i v e n t a r e un c o m p l e t o d i s p o s i t i v o m u l t i m e d i a l e .
A v o l t e , p e r ò , l ' h a r d w a r e d i cu i si d i s p o n e n o n è s f ru t t a to al m e g l i o da l
s i s tema o p e r a t i v o o da i p r o g r a m m i che si u t i l i zzano p iù c o m u n e m e n t e .
In q u e s t o b r e v e e u l t i m o c a p i t o l o , q u i n d i , si v e d r à c o m e o t t im i zza re il si-
s t e m a c o m p i l a n d o il ke rne l e le a p p l i c a z i o n i , in m o d o ta l e da o t t e n e r e la
m i g l i o r e ade renza p o s s i b i l e t ra h a r d w a r e p o s s e d u t o e s o f t w a r e ut i l i zzato.
Compilazione del kernel Il kerne l f o rn i t o con U b u n t u Server d o v r e b b e consent i re prestaz ion i sodd i -
sfacent i nel la m a g g i o r pa r te de l l e s i tuazioni e de l l e con f igu raz ion i a d o t t a t e .
La p r i n c i p a l e r a g i o n e p e r cu i è c o n s i g l i a b i l e c o m p i l a r e un ke rne l p e r s o -
na l i zza to è la ricerca d i una m i g l i o r e c o m p a t i b i l i t à h a r d w a r e : n o n è d e t t o ,
in fa t t i , che un d i s p o s i t i v o v e n g a r i c o n o s c i u t o c o r r e t t a m e n t e da l ke rne l d i
d e f a u l t e c iò p u ò c o m p o r t a r e m a l f u n z i o n a m e n t i , p res taz ion i m e d i o c r i o
l ' imposs ib i l i t à d i usare il d i s p o s i t i v o s tesso. A l t r e v o l t e un e l e m e n t o ri-
l e v a n t e d e l PC, c o m e p e r e s e m p i o la CPU, v i e n e riconosciuto m a n o n è
s f r u t t a t o al m a s s i m o d e l l e po tenz ia l i t à .
Per c o m p i l a r e un p r o p r i o kerne l è necessar io sceg l ie re qua le ve rs ione de i
sorgen t i de l kerne l Linux ut i l izzare: le scel te p r inc ipa l i sono il kerne l uf f ic ia-
le, c h i a m a t o anche kerne l vaniiia, e il kerne l U b u n t u .
Sceg l i endo il p r i m o si ha la poss ib i l i tà d i scar icare s e m p r e l 'u l t ima release
s tab i le de l kerne l d i spon ib i l e , m e n t r e il s e c o n d o è esp ressamen te pensa-
t o pe r in tegrars i ne l s is tema U b u n t u e fo rn isce spesso pa tch e d r i ve r p iù
a g g i o r n a t i rispetto al co r r i spe t t i vo kerne l vani l la .
Kernel ufficiale e kernel Ubuntu
Per p o t e r c o m p i l a r e il kerne l si insta l l ino i nnanz i tu t to a lcuni pacche t t i c o n
il c o m a n d o seguen te :
sudo apt-get instali build-essential fakeroot kernel-package bin86 libncurses5-dev
Q u i n d i , se si des ide ra a d o t t a r e il kerne l uf f ic ia le, si scarichi l ' u l t ima vers io-
ne s tab i le de l kerne l da h t t p : / / w w w . k e r n e l . o r g / (Figura 12.1). Per e s e m p i o ,
al m o m e n t o de l la stesura d i q u e s t o l ibro l ' u l t ima release d i s p o n i b i l e è la
2 .6 .26.5 e pe r e f fe t tua re il d o w n l o a d de l f i le c o r r i s p o n d e n t e basta lanciare
in conso le q u e s t o c o m a n d o :
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.5.tar.bz2
f i le Modifies ^isualizza Cronologia Sfignalibri Strumenti Guide
V - & •£•• <"> http://www.kemel.orq/ - C - 4
The Linux Kernel Archives
Welcome to the Linux Kernel Archives. This is the p r imary si te for the Linux kernel source, but it has much more than jus t Linux
Protocol Location HTTP ;ht tp: / /www. kernel .org/pub/ FTP ftR.;//ftpA.keijieLQ.rg/pub/
RSYNC rsync: / / rsync.kernel .org/pub/
The latest stable version of the Linux kernel is: 2.6.26.5 2008-09-08 17:43 UTC F V VI Q Chanqeloq The latest prepatch for the stable Linux kernel tree is: 2.6.27-rc7 2008-09-21 22:48 UTC B V VI C Channeled The latest snapshot for the stable Linux kernel tree is: 2.6.27-rc7-ait5 2008-09-26 12:01 UTC fi V £ The latest 2.4 version of the Linux kernel is: 2.4.36.7 2008-09-07 10:22 UTC £ V £ Chanqelon The latest prepatch for the 2.4 Linux kernel tree is: 2.4.37-rcl 2008-09-07 16:41 UTC fi V Q Chanqeloq The latest 2.2 version of the Linux kernel is: 2.2.26 2004-02-25 00:28 UTC £ V Chanqeloq The latest prepatch for the 2.2 Linux kernel tree is: 2.2.27-rc2 2005-01-12 23:55 UTC fi V V] Chanqeloq The latest -mm patch to the stable Linux kernels is: 2.6.27-rc5-mmI 2008-09-05 05:03 UTC fi V Chanqeloq
Figura 12.1 - Da www.kernel.org è possìbile scaricare il kernel Linux ufficiale.
Poi si cop ia il f i le scar icato in /usr /s rc e lo si s c o m p a t t a con :
tar xvfj linux-2.6.26.5.tar.bz2
Per poter scrivere nella directory /usr/src è necessario che l 'utente attivo
sia presente nel gruppo src. Per inserire nel gruppo l 'utente ale, per
esempio, si esegue il comando sudo adduser ale src.
Nel caso si prefer isca invece ut i l izzare il ke rne l f o r n i t o da U b u n t u , si d e v e
instal lare il p a c c h e t t o l inux-source con :
sudo apt-get instali linux-source
Poi si ent ra nel la d i rec to ry /usr /s rc e si s c o m p a t t a l 'a rch iv io de l kerne l con
il c o m a n d o :
tar xvfj linux-source-2.6.24.tar.bz2
Canfigurazione e compilazione del kernel
A d e s s o si p u ò passare alla con f i gu raz i one de l kerne l : si en t ra nel la d i -
rec tory in cui sono stat i s c o m p a t t a t i i so rgen t i de l kerne l ( l inux-2.6 .26.5
pe r il kerne l vani l la, l i nux-source-2 .6 .24 pe r q u e l l o Ubun tu ) e si lancia il
C o m a n d o make menuconfig.
A p p a r i r à l ' in ter facc ia pe r la con f i gu raz ione de l kerne l (Figura 12.2). Q u i è
poss ib i l e at t ivare o d isab i l i ta re de l l e par t i de l kerne l o p p u r e de i m o d u l i
(c ioè e l e m e n t i de l kerne l es tern i al kerne l stesso), a p rop r ia scel ta. Per
or ientars i si p u ò sf rut tare il s is tema d i he lp i n te rno : basta ev idenz ia re una
voce nel m e n u e q u i n d i se lez ionare il pu l san te H e l p in basso, così da o t -
t e n e r e una pag ina esp l ica t iva sulla v o c e co r ren te .
Termina ta la con f i gu raz ione , si p r e m a Ex i t pe r uscire da l l ' i n te r facc ia e si
sce lga d i salvare le n u o v e impos taz ion i pe r il kerne l . Si t o rne rà così al
p r o m p t de l la conso le . A q u e s t o p u n t o b i sogna e l im inare dal la d i rec to ry
de l ke rne l i f i le gene ra t i da l l e even tua l i comp i l az i on i p r e c e d e n t i :
make-kpkg --rootcmd fakeroot clean
Linux Kernel V2.6.24.3 Configuration
Linux Kernel Configuration Arrow keys navigate the menu. <Enter> selects submenus - - -> . Highlighted l e t t e r s are hotkeys. Pressing <Y> includes, <N> excludes, <M> modularizes features. Press <Esc><Esc> to e x i t , <?> for Help, </> for Search. Legend: [ * ] b u i l t - i n [ ] excluded <M> module < >
[ * ] nable loadable module support - - -> [ * ] nable the block layer - - ->
rocessor type and features - - -> ower management options - - -> us options (PCI e t c . ) - - -> xecutable f i l e formats / Emulations
N tworking - - -> device Drivers - - ->
irrrrware Drivers - - ->
< Exit > < Help >
Figura 12.2 - L'interfaccia per la configurazione del kernel.
Poi si p u ò e f f e t t u a r e la c o m p i l a z i o n e v e r a e p r o p r i a c o n il c o m a n d o se-
g u e n t e :
m a k e - k p k g --rootcmd fakeroot --initrd k e r n e l _ i m a g e m o d u l e s _ i m a g e
Una v o l t a c h e la c o m p i l a z i o n e è t e r m i n a t a , si t r o v e r à ne l la d i r e c t o r y / u s r /
src il p a c c h e t t o c o n il n u o v o k e r n e l . Per i ns ta l l a r l o , q u i n d i , n o n res te rà c h e
usare il c o m a n d o sudo dpkg -i k e r n e l - i m a g e . d e b , i n s e r e n d o al p o s t o d i
k e r n e l - i m a g e . d e b il n o m e e f f e t t i v o d e l p a c c h e t t o d e l p r o p r i o k e r n e l .
Importare una configurazione del kernel
La p r o c e d u r a f i n q u i i n d i c a t a p r e s u p p o n e c h e si v o g l i a n o s c e g l i e r e d a
z e r o t u t t e le o p z i o n i n e c e s s a r i e p e r il f u n z i o n a m e n t o d e l p r o p r i o k e r n e l .
E p o s s i b i l e , p e r ò , u t i l i zza re c o m e p u n t o d i p a r t e n z a la c o n f i g u r a z i o n e d e l
k e r n e l U b u n t u d i d e f a u l t .
Per f a r e q u e s t o si d e v e c o p i a r e il f i l e / b o o t / c o n f i g d e l k e r n e l U b u n t u
ne l l a d i r e c t o r y d e l k e r n e l d a c o m p i l a r e , r i n o m i n a n d o il f i l e . c o n f i g . Per
e s e m p i o , se la v e r s i o n e d e l k e r n e l U b u n t u u t i l i z z a t a è 2 . 6 . 2 4 - 1 9 - s e r v e r e
la d i r e c t o r y d e l k e r n e l d a c o m p i l a r e è / u s r / s r c / l i n u x - 2 . ó . 2 6 . 5 , il c o m a n d o
d a l a n c i a r e sarà :
sudo cp /boot/config-2 .6.24-19-server / u s r / s r c / l i n u x - 2 . 6 . 26 . 5/. config
Poi si p o t r à richiamare m a k e menuconfig e d e f f e t t u a r e d e l l e m o d i f i c h e a l le
i m p o s t a z i o n i d e l k e r n e l a p a r t i r e da l l a c o n f i g u r a z i o n e d i U b u n t u .
N e l c a s o d i u t i l i z zo d i u n a v e r s i o n e d e l k e r n e l p i ù a g g i o r n a t a r i s p e t t o a
q u e l l a d i s t r i b u i t a c o n U b u n t u Server , i n o l t r e , l a n c i a n d o il c o m a n d o make
oidconfig sarà p o s s i b i l e c r e a r e una c o n f i g u r a z i o n e a g g i o r n a t a p e r il k e r n e l
r i s p o n d e n d o a s e m p l i c i d o m a n d e r e l a t i v e a l l e o p z i o n i a g g i u n t e d a u n a
re l ease a l l ' a l t ra (F igu ra 12.3) .
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?] y Local version - append to kernel release (LOCALVERSION) [] Automatically append version information to the version string (LOCALVERSIONAUT 0) [N/y/?] n Support for paging of anonymous memory (swap) (SWAP) [Y/n/?] y System V IPC (SYSVIPC) [Y/n/?] y POSIX Message Queues (POSIXMQUEUE) [Y/n/?] y BSD Process Accounting (BSD PROCESSACCT) [Y/n/?] y
BSD Process Accounting version 3 file format (BSDPR0CESSACCTV3) [Y/n/?] y Export task/process statistics through netlink (EXPERIMENTAL) (TASKSTATS) [Y/n/?
1 y Enable per-task delay accounting (EXPERIMENTAL) (TASK_DELAY_ACCT) [N/y/?] n Enable extended accounting over taskstats (EXPERIMENTAL) (TASK XACCT) [Y/n/?]
y Enable per-task storage I/O accounting (EXPERIMENTAL) (TASK_I0_ACC0UNTING) [
Y/n/?] y Auditing support (AUDIT) [Y/n/?] y
Enable system-call auditing support (AUDITSYSCALL) [Y/n/?] y Kernel ,config support (IKCONFIG) [N/m/y/?] n Kernel log buffer size (16 => 64KB, 17 => 128KB) (LOG BUFSHIFT) [17] 17 Control Group support (CGROUPS) [Y/n/?] y
Example debug cgroup subsystem (CGROUP DEBUG) [N/y/?] n Namespace cgroup subsystem (CGROUPNS) [Y/n/?] y Device controller for cgroups (CGROUPDEVICE) [N/y/?] (NEW) |
Figura 12.3 - Con make oidconfig si importa una vecchia configurazione del kernel e la si aggiorna.
Compilare i programmi O l t r e al k e r n e l , in a l c u n e c i r c o s t a n z e p u ò risultare u t i l e c o m p i l a r e c o m u -
ni p r o g r a m m i o l i b re r i e . A n c h e in q u e s t o c a s o , c i ò c h e si r i ce rca s o n o
le m i g l i o r i p r e s t a z i o n i p o s s i b i l i : d i f f i c i l m e n t e si o t t e r r a n n o m i g l i o r a m e n t i
sba lo rd i t i v i ma , s o p r a t t u t t o nel caso d i i n t e r ven t i su s o f t w a r e e s e g u i t i c o n
f r e q u e n z a , a n c h e m i n i m i i n c r e m e n t i nel la v e l o c i t à d i e s e c u z i o n e p o t r a n n o
r isu l tare v a n t a g g i o s i .
Compilazione automatica con apt-build
U b u n t u f o r n i s c e un c o m o d o s t r u m e n t o p e r a u t o m a t i z z a r e la c o m p i l a z i o n e
o t t im i zza ta d e i so rgen t i , c h i a m a t o apt-build. Per ins ta l la r lo si d e v e lancia-
re sudo apt-get instali apt-build.
D u r a n t e la p r o c e d u r a d i ins ta l laz ione v i ene ch ies to d i s tabi l i re il l ive l lo d i
o t t im izzaz ione pe r i pacche t t i : si cons ig l ia d i lasciare il l ivel lo I n t e r m e d i o .
Q u i n d i si d e v e r i s p o n d e r e Sì alla d o m a n d a s e g u e n t e , in m o d o ta le che ven -
ga a t t i va to un repos i to ry loca le con i pacche t t i c o m p i l a t i t r a m i t e a p t - b u i l d .
In f ine, si i nd ica l ' a rch i te t tu ra d e l p r o p r i o PC t ra q u e l l e p resen t i in un e len -
co (F igura 12.4) e si r i t o rna al p r o m p t de l l a c o n s o l e .
A q u e s t o p u n t o b i s o g n a s incerars i che ne l f i le / e t c / a p t / s o u r c e s . l i s t le
r i g h e re la t i ve ai r e p o s i t o r y d e i s o r g e n t i n o n s i ano c o m m e n t a t e . T u t t e le
r i ghe deb-src c o n ¡1 ca ra t t e re # in iz ia le, q u i n d i , v a n n o d e c o m m e n t a t e .
Una r iga c o m e :
# deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
d e v e d i ven ta re così:
deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted
Fat to q u e s t o , va a g g i o r n a t o l ' e lenco de i pacche t t i nei repos i to ry con sudo
apt-get update. O ra si p o s s o n o c o m p i l a r e e o t t im izzare t u t t i i pacche t t i
des ide ra t i . Per e s e m p i o , pe r scaricare, c o m p i l a r e e instal lare apache2 si
lanci il c o m a n d o s e g u e n t e :
sudo apt-build instali apache2
In f ine, nel caso si d e c i d a d i c o m p i l a r e un p a c c h e t t o già insta l la to nel si-
s tema, va a g g i u n t a al c o m a n d o i n t e rno instali d i apt-build l ' opz i one
--reinstall.