Sei sulla pagina 1di 300

per server e reti

*pro DigitalLifeStyle
Alessandro Di ilicola

Linux Ubuntu
i

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 fedia Center e metterlo in rete

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 interfaccia 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
25,00
9

ISBN

978-88-8233-7

788882

3374

r *

per server e reti

Alessandro Di Nicola

EDIZIONI

FAG
MILANO

Linux Ubuntu per server e reti


A u t o r e : Alessandro Di Nicola Collana:

* ro .

Life

Publisher: Fabrizio Comolli P r o g e t t o grafico: escom - Milano ISBN: 978-88-8233-744-5

Via G. Garibaldi 5 - 20090 Assago (MI) - www.fag.it Finito di stampare: nel mese di novembre 2008 da escom - Milano

Copyright 2008 Edizioni FAG 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 crtica 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 1. INSTALLAZIONE
Il CD di installazione Avvio dal CD Installare Ubuntu Server Il partizionamento dei dischi I dischi in RAID Dati utente e software

7 11
11 13 15 20 37 44

2.

GESTIRE IL SISTEMA
Amministrare gli utenti La gestione dei pacchetti Le partizioni

47
47 60 75

3.

GLI STRUMENTI DELL'AMMINISTRATORE


La shell Bash L'editor vi

91
91 108

4.

LOG E PROCESSI PERIODICI


Gestire i log Processi periodici con cron

123
123 130

5.

IL SERVER IN RETE
Le informazioni di base Le reti Wi-Fi Gli strumenti di controllo

137
137 150 159

6.

C O N F I G U R A Z I O N E AVANZATA DELLA RETE


II firewall Proteggere i servizi

163

163 174

7.

AMMINISTRARE D A R E M O T O
Un terminale remoto Amministrazione dal w e b Q u a n d o il server grafico remoto

183
183 195 204

8.

CONDIVIDERE IN RETE
Il server di stampa Filesystem di rete NFS Condividere con Samba

211
211 218 222

9.

IL BACKUP
Copiare intere partizioni Il backup di file e directory Bacula, un server per il backup

231
231 239 247

10. COSTRUIRE UN MEDIA CENTER


Server musicale Il Media Center c o m p l e t o

261
261 264

11.1 SERVER
Il mail server Postfix FTP server con vsftpd Il w e b server Apache Il server DNS BIND

273
273 278 281 289

12. OTTIMIZZARE IL SISTEMA


Compilazione del kernel Compilare i p r o g r a m m i

297
297 301

Introduzione
Enormi stanze piene di c o m p u t e r rumorosi, misteriosi centri di calcolo sotterranei con centinaia di a d d e t t i che si aggirano in camice bianco, reti cablate che si estendono per chilometri e chilometri... Solitamente quand o si pensa a delle macchine server la fantasia galoppa e l'immaginazione ha il sopravvento sulla realt. Un server, per, p u essere un normale PC desktop e una rete p u essere costituita da uno sparuto numero di macchine. Ma a cosa potr mai servire applicare a tale ambiti limitati tecnologie e conoscenze sviluppate in ambienti di ricerca e industriali? Innanzitutto, una rete di c o m p u t e r p u risultare utile per condividere una medesima stampante tra pi macchine, o p p u r e per facilitare lo scambio di file tra colleghi di lavoro; un comune PC, inoltre, p u diventare un pratico w e b server per la gestione di pagine interne aziendali o p p u r e un mail server per lo smistamento della posta elettronica. Infine, possibile sfruttare in a m b i t o domestico gli strumenti solitamente impiegati nella gestione dei server per costruire pezzo per pezzo un duttile 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 Linux, un sistema operativo libero e gratuito: tale sistema pu essere usato in piena libert da qualsiasi utente e le linee di codice che lo c o m p o n g o no possono essere esaminate e modificate da chiunque. A causa della libert con cui possibile intervenire sul sistema, Linux disponibile in varie versioni, che v e n g o n o chiamate distribuzioni (o "distro"): una distribuzione non altro che l'insieme costituito dal kernel Linux e da un numero variabile di p r o g r a m m i 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 riferimento U b u n t u Server 8.04 LTS: si tratta di una distribuzione solida, completa e semplice da installare, espressamente sviluppata per l'allestimento di sistemi server. La dicitura LTS sta per Long Term Support e contraddistingue le release della distribuzione per le quali viene fornito un supporto della durata di cinque anni dal m o m e n t o del rilascio: per quest'arco di t e m p o , d u n q u e , verranno corrette falle di sicurezza e saranno risolti i b u g rilevanti nelle applicazioni.

A differenza di Ubuntu Server, nella versione di Ubuntu dedicata all'utenza 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, richiedendo solo minimi adattamenti, anche nel caso di utilizzo di sistemi Debian. Nel caso di altre distribuzioni, invece, le modifiche necessarie per adattare comandi e procedure presenti nei capitoli a seguire possono risultare pi rilevanti. Nel primo 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 partizionamento 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 t a p p e 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 fondamentali consente di gestire al m e g l i o i c o m p i t i pi ripetitivi che si trova a svolgere, g i o r n o d o p o giorno, un amministratore di server Linux. Il quarto capitolo fornisce informazioni dettagliate sulla gestione dei log e sull'esecuzione automatica di comandi secondo scadenze prestabilite. Il capitolo seguente del libro, quindi, dedicato alla configurazione iniziale 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 conoscenza 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 arg o m e n t 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 m a g g i o r m e n t e in profondit nella configurazione della rete: si allestisce un firewall, quindi si scopre c o m e condividere una connessione Internet fra pi macchine. Infine, si individuano gli strumenti migliori per p r o t e g g e r e 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 terminale e fornisce tutte le informazioni basilari per utilizzare al meglio SSH, un protocollo per la comunicazione sicura tra due macchine in rete. Nelle pagine che seguono, poi, si installa e si configura W e b m i n , un sistema per gestire un PC a distanza tramite una pratica interfaccia web. Infine, nell'ul-

tima parte del capitolo viene presentato TightVNC, il software ideale per tutti coloro che vogliono amministrare una macchina remota senza dover rinunciare alla praticit e alla piacevolezza delle interfacce grafiche. L'argomento dell'ottavo capitolo la condivisione di risorse all'interno della rete locale, si tratti di stampanti o di directory sull'hard disk del server. L'ultima parte del capitolo poi dedicata alle reti miste Linux-Windows e presenta una rapida guida all'installazione e all'utilizzo del server Samba. Il nono capitolo fornisce una panoramica sugli strumenti di backup disponibili 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 p o t e n t e sistema client-server per il backup in rete. Nei due capitoli che seguono, poi, si portano a frutto le conoscenze acquisite nelle sezioni precedenti del volume: per cominciare, si costruisce pezzo per pezzo un c o m p l e t o Media Center basato su Linux, quindi si installano e si configurano i principali software di t i p o server, dal w e b server Apache al mail server Postfix. Il capitolo conclusivo, infine, contiene informazioni dettagliate su c o m e sfruttare al meglio l'hardware su cui stato installato Linux Ubuntu, ottimizzando il kernel sottostante e c o m p i l a n d o in m o d o o p p o r t u n o alcuni dei programmi utilizzati.

1. Installazione
Come

creare il CD
il

di ubuntu

Server e

in-

stallare

sistema s u l l ' h a r d disk.

Per installare Ubuntu Server su una macchina necessario usare un apposito C D di installazione: per ottenerlo basta scaricare l'immagine ISO d e l 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, d u n q u e , prelevare l'immagine ISO. Utilizzando un qualsiasi sistema operativo si apre con un w e b browser la pagina: http://www.ubuntu.com/getubuntu e si fa clic sulla linguetta D o w n l o a d U b u n t u . Nella schermata che appare, quindi, si mette la spunta sull'opzione U b u n t u 8.04 LTS Server Edition. Poi, p o c o pi sotto, si indica il t i p o di c o m p u t e r sul quale va effettuata l'installazione: se si tratta di un PC con CPU a 32 bit selezionare l'opzione S t a n d a r d personal c o m p u t e r , mentre se si in possesso di un c o m p u t e r con processore a 64 bit scegliere 6 4 b i t A M D a n d Intel c o m p u t e r s .

I File Modifica Visualizza Cronologia Segnalibri Strumenti Guida I tr a? > http://www.ubuntu.com/getubuntu/download

3ubuntu
: Ayailatne at the Ubuntu shop te**- w
1

Online training for the desktop

Get Ubuntu
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 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

61Download Ubuntu
: f) Tl>e

J Buy UbsjnttJerr
CDs

) Rssjuest free

Which release do youDwant?

Ubuntu 8.04 LTS Desktop Edition - Supported to 2011 Ubuntu 8 04 LTS Server Edition - Supported to 2013 "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 p o c o nella pagina si fa clic sulla scritta Please Choose a Location e nel menu che appare si seleziona un server vicino da cui scaricare l'immagine ISO, per esempio Italy University of Rome - La Sapienza. Effettuare il d o w n l o a d da un server posto nelle proprie vicinanze permetter di rendere l'operazione pi rapida. Infine, si fa clic su Start D o w n l o a d . Una volta che il file, chiamato ubuntu-8.04-server-i386.iso, stato scaricato da Internet bisogna masterizzarlo su CD: per fare questo basta utilizzare 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 necessario che nel BIOS il lettore C D - R O M abbia una priorit pi alta rispetto all'hard disk per il b o o t del PC. In caso contrario, bisogna intervenire sulla configurazione del BIOS e cambiare le priorit (le informazioni su c o m e accedere alla schermata di configurazione del BIOS si trovano all'interno del manuale del proprio PC).

Avvia dal

CD

Al b o o t del PC comparir la schermata di avvio del C D di Ubuntu Server. La prima operazione da compiere scegliere la lingua che deve essere 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 Italiano si preme il pulsante Invio per confermare la scelta.

Language Arabic BejiapycKaq 6"b/irapcKH Bengali Bosanski Catal Cestina Dansk Deutsch Dzongkha EXXHUIKK English Esperanto Espaol Eesti Euskaraz Suomi Franais Galego Gujarati Hebreui F2 Language F3 Keymap Hindi Hrvatski Magyarul Bahasa Indonesia B*fS Khmer Portugus Romana Pycckwfi Smegillii Slovenoina Slovenscina Shqip Svenska Tamil Thai Tagalog Tiirke yKpaHCbKa Ti'ng Vit Holof

FI Help

Kurdi Lietuviskai Latviski HakeaoHCKM Malayalam Norsk bokmal Nepali Nederlands tas) Norsk nynorsk Punjabi(Gurmukhi) Polski Portugus do Brasil F4 Modes F5 Accessibility F6 Other Options

Figura 1.2 - Inserito il CD bisogna indicare la propria lingua.


A questo p u n t o si avr la schermata di avvio del CD tradotta in lingua italiana (Figura 1.3). Nella schermata sono disponibili cinque opzioni: anche 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 C O R i p r i s t i n a un sistema danneggiato Test della memoria Boot dal primo disco r i g i d o

Premere F4 per selezionare modalit alternative di avvio e installazione. FI Aiuto F2 Lingua F3 Tastiera F4 Modalit FS A c c e s s i b i l i t F6 A l t r e opzioni

Figura 1.3 - La schermata di avvio del CD in italiano.


La prima opzione disponibile Instali U b u n t u Server. Selezionandola verr avviata la procedura di installazione. La seconda opzione C o n t r o l l a d i f e t t i sul CD e serve ad assicurarsi che il supporto sul quale si masterizzato il CD di Ubuntu Server sia effettivamente integro: in caso di blocchi e malfunzionamenti durante le operazioni 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, Ripristina un sistema d a n n e g g i a t o , consente di avviare il CD in "modalit ripristino": ci p e r m e t t e di recuperare un sistema non pi funzionante. Grazie a questa opzione, in particolare, possibile reinstallare il b o o t loader sull'hard disk e aprire una console di root, in

m o d o tale da poter effettuare tutte le operazioni di manutenzione necessarie 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 amministrare liberamente il sistema impartendo comandi diretti.

La quarta opzione disponibile Test della m e m o r i a e consente di verificare che tutti i banchi di RAM presenti sul PC siano perfettamente funzionanti. Se il PC va spesso in crash, prima di dare la colpa al sistema operativo, consigliabile effettuare un controllo c o m p l e t o sulla memoria e, in caso di banchi difettosi, procedere immediatamente alla sostituzione della RAM. Infine, l'ultima opzione B o o t dal p r i m o disco r i g i d o . Questa p e r m e t t e , molto semplicemente, di avviare il sistema operativo presente sull'hard disk principale.

Installare Ubuntu Server


Per installare Ubuntu Server sul disco rigido del PC si seleziona d u n q u e la prima voce presente nella schermata di avvio, Instali U b u n t u Server. Fatto questo viene caricato il kernel Linux e si viene p o i accolti dal programma di installazione, che fa sfoggio di una spartana ma solida interfaccia a caratteri. Ecco come muoversi tra i vari elementi presenti nell'interfaccia: 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 m o m e n t o . 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 scelta d e l l a lingua, s i probabilmente in una d i queste nazioni o r e g i o n i . Selezionare una nazione, un t e r r i t o r i o o un'area: Svizzera altro <Indietro>

<TAB> sposta t r a elementi; <Spazio> seleziona; <Invio>

A questo punto viene rilevato il lettore di CD-ROM e sono caricati nel sistema alcuni c o m p o n e n t i aggiuntivi, poi se possibile contattare un server 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 raggiungibile alcun server DHCP, bisogna configurare manualmente la rete. Ecco come fare. D o p o che apparsa la scritta C o n f i g u r a z i o n e a u t o m a t i c a della rete fallita si deve premere Invio. Poi, nella schermata successiva si conferma l'opzione di default, C o n f i g u r a la rete m a n u a l m e n t e , p r e m e n d o 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 all'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 dispositivo che inoltra i pacchetti da una rete interna a una esterna (Internet, di solito), mentre i server DNS si occupano di trasformare i nomi degli host in indirizzi IP. I valori da inserire in queste schermate relative alla rete d i p e n d o n o dalla configurazione della propria LAN o W L A N . Nel caso si tratti del primo 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 applicato 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, c o m e gateway si inserisca l'indirizzo del router ADSL, se disponibile, e si digitino infine gli indirizzi dei server DNS forniti dal proprio provider per la connessione a Internet. In caso di incertezza possibile lasciare gli indirizzi predefiniti: gateway e DNS potranno essere correttamente configurati anche d o p o l'installazione iniziale.

Una LAN (Locai Area Network) una rete locale. Solitamente viene utilizzato 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 contrassegnati dalla sigla IEEE 802.11 (Wi-Fi).

Tabella 1.1 - Gli indirizzi IP riservati alle reti locali Indirizzo iniziale 10.0.0.0 172.16.0.0 192.168.0.0 Indirizzo finale 10.255.255.255 172.31.255.255 192.168.255.255

Se si hanno dei d u b b i e si preferisce configurare la rete d o p o l'installazione iniziale, nella schermata che appare d o p o che comparsa la scritta C o n f i g u r a z i o n e a u t o m a t i c a della rete fallita, al posto dell'opzione Configura la rete m a n u a l m e n t e possibile scegliere N o n c o n f i g u r a r e la rete in q u e s t o m o m e n t o .

Configurata o meno la propria rete, bisogna assegnare un nome al computer: questo consentir di individuare il singolo PC all'interno della rete locale. Nella schermata successiva dell'installazione (Figura 1.6), quindi, viene proposto c o m e nome predefinito " u b u n t u " : si deve inserire al posto di questo un n o m e a piacere, sincerandosi di scegliere un n o m e diverso per ogni macchina presente in rete.

Nel caso non sia raggiungibile alcun server DHCP, in un'ulteriore schermata ci viene richiesto di inserire anche il n o m e del d o m i n i o , cio la parte dell'indirizzo che segue il n o m e del singolo computer: per esempio, nell'indirizzo eraclito.ufficio.lan il n o m e del c o m p u t e r eraclito mentre il nome del d o m i n i o ufficio.lan. possibile indicare un nome di d o m i n i o a propria scelta, ma bisogna inserire lo stesso n o m e su tutte le macchine della medesima rete locale.

LinuxJJhuntu

p g ^ ^

e reti

Il partizionamerrta dei dischi


A q u e s t o p u n t o si d e v o n o creare le partizioni sull'hard disk Nella schermata P a r t i z i o n a r e i dischi sono disponibili, a tale riguardo, q u a t t r o o p zioni: le p r i m e t r e c o n s e n t o n o di automatizzare, seppur s e c o n d o modalit differenti, la procedura d i partizionamento, mentre l'ultima opzione lascia piena libert all'utente nella creazione delle partizioni

La prima opzione, G u i d a t o - usa l ' i n t e r o disco, la scelta pi semplice e immediata: selezionandola apparir una nuova schermata in cui occorrer indicare il disco che si desidera partizionare. Dato che, solitamente, si d i s p o n e d i un solo hard disk, baster premere il tasto Invio p e r selezionare il disco, altrimenti sar necessario spostarsi con i tasti freccia fino a d evidenziare l'hard disk su cui si vuole installare U b u n t u 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 partizione 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 possono 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 N o : in questo secondo caso comparir la schermata per il partizionamento manuale, nella quale si potr intervenire direttamente sulla struttura delle partizioni impostata dal programma di installazione. C o n f e r m a n d o l'organizzazione delle partizioni scelta automaticamente, invece, la procedura di installazione proseguir con la copia sul disco d e l sistema di base. Partizionare con LVM Scegliendo la seconda opzione di partizionamento, G u i d a t o - usare l'intero disco e i m p o s t a r e LVM, si sfrutter il Logicai V o l u m e M a n a g e r (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 modificarne al bisogno le dimensioni, riducendole o p p u r e aumentandole, in m o d o m o l t o semplice e senza intralci. L'adozione del sistema LVM, inoltre, consente di sostituire un disco rovinat o senza dover interrompere il funzionamento di una macchina. Si tratta di una caratteristica di grande utilit sui server. Se si scelta l'opzione G u i d a t o - usare l ' i n t e r o disco e i m p o s t a r e LVM, d u n q u e , comparir una schermata in cui si dovr selezionare il disco da partizionare. Fatto questo, per poter configurare effettivamente il sistema LVM sar necessario confermare i cambiamenti alla tabella delle partizioni p r e m e n d o il pulsante S.

Linux UbLintu p e r s e r v e r e reti

Nella schermata successiva si avranno informazioni c o m p l e t e sulle partizioni che saranno presenti sul disco. Nel dettaglio, il sistema creer automaticamente una piccola partizione di b o o t (prima partizione primaria) e una partizione di tipo LVM (prima partizione logica) che occuper t u t t o lo spazio restante sull'hard disk. All'interno di questa partizione LVM verranno inseriti due volumi logici LVM, che corrispondono alla partizione di root e a quella di swap.

Se s i continua, ogni modifica a l l e t a b e l l e d e l l e p a r t i z i o n i verr s c r i t t a s u i disco. A l t r i m e n t i sar p o s s i b i l e 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 d a t i d e l l e p a r t i z i o n i che sono -state rimosse e di quelle su cui sono s t a t i c r e a t i nuovi f i l e system. Le seguenti p a r t i z i o n i saranno formattate: LVM VG Eraclito, LV root come ext3 LVM V e r a c l i t o , LV suiap_l come swap G p a r t i z i o n e n ' i d i SCSI1 (0,0,0) (sda) con ext3 Scrivere le modifiche s u i 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 partizionamento disponibile, G u i d a t o - usare l ' i n t e r o disco e i m p o s t a r e LVM cifrato, c o m e 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. I n s t a l l a z i o n e

Si tratta di una valida barriera protettiva per la riservatezza delle informazioni, utile nel caso che il proprio server contenga dati sensibili: se un disco cifrato viene rubato e poi collegato a un altro computer, infatti, il suo contenuto risulter c o m u n q u e illeggibile. Selezionata l ' o p z i o n e per impostare un sistema LVM cifrato, baster seguire i passaggi per partizionare il disco con il sistema LVM indicati nel paragrafo p r e c e d e n t e , Il p a r t i z i o n a m e n t o LVM: si seleziona il disco da partizionare e si c o n f e r m a n o le m o d i f i c h e alle partizioni p r e m e n d o il pulsante S. A questo punto comparir una schermata in cui si dovr inserire una passphrase, una lunga password che servir a ottenere l'accesso all'hard disk, e quindi al sistema, q u a n d o si avvier la macchina. Per sicurezza si consiglia di inserire una passphrase lunga almeno 20 caratteri e formata da lettere, numeri e segni di interpunzione.

I I ] Partizionane i d i s c h i You need to choose a passphrase to encrypt scsij ( 0 , 0 , 0 ) , partizione n* 5 (sda). The o v e r a l l strength of the encryption depends strongly on t h i s passphrase, so you should take care to choose a passphrase that i s not easy to guess. I t should not be a word or sentence found i n d i c t i o n a r i e s , or a phrase that could be e a s i l y 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 t o 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 w r i t e down the passphrase arid keep i t in a safe place separate from t h i s computer. Encryption passphrase:

< Indietro

<Contiriuare>

;TftB> sposta t r a element

oazio> seleziona; <lnvlo> a t t i v a i b o t t o n 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 schermata seguente le informazioni dettagliate sulle partizioni che saranno create sull'hard disk: non rimane che selezionare il pulsante S per salvare le modifiche sul disco. Una volta che l'installazione di Ubuntu Server terminata, al b o o t del PC comparir una riga Enter LUKS passphrase: simile a quella visibile nell'immagine seguente (Figura 1.10). Solo d i g i t a n d o la giusta passphrase si potr far continuare la procedura di avvio e avere, cos, accesso al sistema.

Starting up ... Loading, please w a i t . . . 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 compiti specifici che, spesso, richiede configurazioni personalizzate per funzionare al meglio. Per tale ragione p u essere utile, su di un PC adibito a uso server, gestire nel d e t t a g l i o le partizioni presenti sul disco rigido, scegliendo a u t o n o m a m e n t e dimensioni e filesystem da adottare caso per caso. L'ultima opzione disponibile per partizionare il disco, quindi, p e r m e t t e di ottenere il pieno controllo delle partizioni da parte dell'utente: nella

schermata con elencati i m e t o d i di partizionamento, d u n q u e , si selezioni la voce Manuale. Prima di proseguire nell'installazione, per, necessario conoscere in m o d o a p p r o f o n d i t o i filesystem disponibili su Linux e prendere confidenza con le directory di sistema. I filesystem disponibili II filesystem il sistema mediante il quale i file v e n g o n o 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, p u r t r o p p o , privo di un sistema di journaling. Di cosa si tratta? Il sistema di journaling p e r m e t t e di salvare in un apposito file di l o g lo stato delle operazioni su disco effettuate su di una determinata partizione. Nel file di log indicato se un'operazione stata portata a termine o meno. Q u a n d o una macchina viene riavviata a causa di un crash di sistema, quindi, tale file viene consultato e ci consente di ottenere un filesystem sempre in stato consistente, cio integro. In questo m o d o 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, tutti dotati di un sistema di journaling: Ext3, Reiserfs, Reiser4, JFS e XFS. Ecco una descrizione succinta delle caratteristiche 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 solidit e la presenza di un sistema di journaling di tipo data + metadata. Questa seconda caratteristica fa s che, d o p o un crash, i dati presenti su disco siano sempre i pi recenti. In altri sistemi di journaling, invece, 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 q u a n d o si ha a che fare con file m o l t o piccoli. Nel complesso, un filesystem piuttosto robusto e molto veloce;

Reiser4: filesystem innovativo non ancora incluso nel kernel standard Linux. L'architettura modulare lo rende un filesystem estremamente duttile; si pensi alla possibilit di supportare operazioni di compressione e crittografia direttamente a livello di filesystem. La sua d o t e precipua una grande efficienza nel gestire piccoli file e directory con un gran numero di file al loro interno;

XFS: prestazioni eccellenti in tutti i campi tranne che nella cancellazione dei file. Si tratta di un filesystem m o l t o solido, che rappresenta la scelta ideale q u a n d o si d e v o n o manipolare file di grandissime dimensioni. Consente di ingrandire e deframmentare una partizione senza che questa d e b b a essere preventivamente smontata;

JFS: offre b u o n e prestazioni in qualsiasi situazione, grazie al ridotto carico di lavoro sulla CPU anche durante i picchi di utilizzo d e l disco. Gestisce al meglio 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 tipicamente 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 r o p p o performanti si p u pensare di formattare tali partizioni con JFS. Infine, su un media center " v i a g g i a n o " spesso file multimediali di grandi dimensioni: proprio la situazione migliore, almeno in a m b i t o domestico, per sfruttare al massimo le potenzialit del filesystem XFS. Le directory di sistema Nei paragrafi precedenti si visto c o m e la procedura di partizionamento g u i d a t o crei su disco d u e partizioni: quella di root e quella di swap. La partizione di root contiene la " r a d i c e " dell'intero albero di directory d e l sistema ( detta anche, quindi, directory radice): si tratta della partizione

26

DigtalLifeStylepro

principale di o g n i installazione, t a n t o da p o t e r 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 q u a n d o la RAM disponibile non pi sufficiente. Ma il partizionamento di un disco pu essere decisamente pi articolato: ogni directory presente sulla directory radice, infatti, p u essere spostata su di una partizione separata. L'utilizzo di un pi ampio numero di partizioni c o m p o r t a alcuni indubitabili vantaggi: innanzitutto, ci p e r m e t t e di gestire in m o d o pi duttile lo spazio su disco. Quindi, semplifica le procedure di backup consentendo di effettuare delle copie dirette di singole partizioni anzich dei file che le c o m p o n g o n o . Infine, p u costituire un'ottima barriera contro malfunzionamenti e attacchi al sistema. Pu capitare, infatti, che l'esecuzione di un c o m a n d o o un'operazione su disco abbiano c o m e esito imprevisto l'occupazione di t u t t o lo spazio disponibile sul supporto: nel caso di utilizzo della sola partizione di root, questo comporter l'impossibilit di scrivere sull'intero disco, con un evidente 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'operazione di scrittura. Nella Tabella 1.2, quindi, v e n g o n o elencate le principali directory che utile spostare su partizioni separate. Tabella 1.2 - Le d i r e c t o r y di sistema. Directory Utilizzo Contiene tutti i file personali degli utenti. Separandola /home dalla partizione di root possibile reinstallare una distribuzione m a n t e n e n d o i file personali intatti: utile se un server stato compromesso e bisogna reinstallarlo dal CD Contiene i p r o g r a m m i installati dal sistema, la d o c u m e n /usr tazione ed i file di sviluppo. Creando una partizione separata si possono differenziare i file di sistema dalle applicazioni

Directory

Utilizzo Qui v e n g o n o inseriti d e i dati di sistema. La directory usata p e r i lavori di stampa e per i file di log. Una partizione separata scongiura l'ipotesi che i file di l o g " i n o n d i n o " t u t t o l'hard disk Contiene i file temporanei creati dal sistema o dai singoli programmi. Una partizione separata p e r m e t t e di limitare i permessi di esecuzione sui file temporanei, cos da scongiurare exploit di questo t i p o Contiene i file del kernel. Utilizzando una partizione separata, in caso di filesystem corrotti sulle altre partizioni, si potr c o m u n q u e effettuare il b o o t p o t e n d o contare su di un sistema minimale Questa directory raccoglie i file di configurazione del sistema. Dedicarle una partizione pu essere utile per effettuare copie di backup d e i file di configurazione in m o d o pratico e veloce

D o p o questi necessari approfondimenti sui filesystem e sulle directory di sistema, si pu tornare al programma di installazione di Ubuntu Server con le idee chiare su c o m e procedere. Scegliere una per una le partizinni Una volta scelto il partizionamento manuale, comparir una schermata simile all'immagine seguente (Figura 1.11). Questa rappresenta un'anteprima delle partizioni presenti sul disco. In questo paragrafo si utilizzer come esempio una configurazione delle partizioni tipica per una piccola macchina server: le partizioni presenti sono / b o o t , /var, / h o m e , oltre ovviamente alla partizione di root e a quella di swap. Ecco come procedere. Se l'hard disk n o n c o n t i e n e una corretta tabella delle partizioni, nella schermata sar presente soltanto una riga c o n le informazioni sull'hard

28

DigiialLife;

disk, senza alcuna partizione elencata: bisogna allora selezionare c o n i tasti freccia la riga relativa al disco e p r e m e r e Invio. Nella schermata successiva viene chiesto se si v u o l e creare una nuova tabella della partizioni: si d e v e rispondere 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 p u iniziare con la swap, cos da poter lasciare c o m o d a m e n t e t u t t o il restante spazio disponibile per le partizioni principali. Nella nuova schermata, quindi, si deve selezionare l'opzione Crea una nuova p a r t i z i o n e .

I I

1<TOB> sposta t r a elementi; <Spazio> seleziona; <Invio> a t t i v a i b o t t o n i ^ ' . IIS 1

1 i

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 p u indicare in forma assoluta (5 GB, 1500 MB ecc.) o in forma percentuale (25%, per esempio, stabilisce che si vuole riservare il 25% dello spazio disponibile 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 d o p p i a rispetto alla RAM disponibile sulla macchina. Nel caso si reputi che carichi di lavoro gravosi sul server possano talvolta aumentare in m o d o rilevante le richieste di memoria, si p u creare una partizione di swap di dimensioni maggiori, per esempio di 1 GB. Fatto questo, si deve poi indicare il t i p o 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: collocando la partizione di swap nei primi settori di un disco, infatti, se ne miglioreranno le prestazioni.

A questo p u n t o comparir una schermata con le impostazioni per la partizione (Figura 1.13).

[!!] Partizionare i dischi


Modifica d e l l a p a r t i z i o n e n* 1 d i SCSI! (0,0,0) (sda), Non stato trovato nessun f i l e system in questa p a r t i z i o n e . Impostazioni d e l i a p a r t i z i o n e

Opzioni d i mount: Etichetta: Blocchi r i s e r v a t i Uso t i p i c o : A t t i v a f l a g avviabil:

relatime nessuna 5% standard disattivato

Copia i d a t i da u n ' a l t r a p a r t i z i o n e Cancellare la p a r t i z i o n e Preparazione d i questa p a r t i z i o n e completata <Indietro>

a t r a elementi; <Spazie> seleziona; <Invio> a t t i v a i b o t t o n i

Le opzioni disponibili in questa schermata sono numerose e importanti. La prima, Usato c o m e , indica il filesystem impiegato nella partizione selezionata. Il P u n t o d i m o u n t , 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'albero che parte da / , cio dalla partizione radice. L'opzione successiva, O p z i o n i d i m o u n t , consente di indicare se nella partizione corrente non bisogna permettere l'esecuzione di file binari (parametro noexec), se il filesystem deve essere in sola lettura (parametro ro) e molto altro ancora. Tramite l'opzione seguente, Etichetta, quindi possibile attribuire un'etichetta alla partizione. I Blocchi riservati, invece, indicano la percentuale di spazio su disco che viene riservata per sicurezza all'utente root: lasciando un numero suffi-

d e n t e di blocchi possibile evitare che singoli utenti nel sistema possano riempire l'intero hard disk. L'opzione successiva, Uso t i p i c o , 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 disponibili sono standard, news, largefile e Iargefile4: news ideale per partizioni con molti file di piccole dimensioni mentre largefile e Iargefile4 sono adatti a gestire al meglio volumi con pochi file di grandi e grandissime dimensioni. L'ultima opzione, A t t i v a f l a g avviabile, deve assumere il valore a t t i v a t o sulla partizione contenente i file del kernel Linux: se si utilizza una partizione / b o o t il valore a t t i v a t o 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 c o m e 1 valore area di swap. Fatto questo, si seleziona la voce Preparazione d i questa p a r t i z i o n e c o m p l e t a t a 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 t u t t e le altre partizioni. Ecco le istruzioni per creare la partizione / b o o t . I primi passaggi da c o m 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 LIBERO, si sceglie poi l'opzione Crea una nuova partizione e si arriva alla schermata in cui bisogna indicare lo spazio da dedicare alla nuova partizione. La partizione / b o o t contiene solo i file del kernel e del bootloader; 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 dall'Inizio dell'hard disk. Nella schermata delle Impostazioni per la partizione si indichi / b o o t come valore dell'opzione Punto di m o u n t e si selezioni la riga con l'opzione Attiva flag a w i a b i l e per darle il valore attivato. Come filesystem si pu scegliere il solido e affidabile Ext3: il valore di Usato come deve dunque essere Ext3. Nell'immagine seguente possibile vedere un riepilogo delle opzioni per la partizione / b o o t (Figura 1.15).

^^^^ParnTionar^^disc!^^
Modifica della partizione n 2 di SCSI1 (0,0,0) (sda). Non stato trovato nessun file system in questa partizione. Impostazioni della partizione

mmmmsa Opzioni di mount:


Usato come: Etichetta: Blocchi riservati Uso tipico: Attiva flag a w i a b i l e :

relatime nessuna 5% standard 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 d i questa partizione c o m p l e t a t a e creare poi le restanti partizioni. La partizione / contiene i principali file di sistema e gli eseguibili: su di un server difficilmente si installeranno ingombranti ambienti grafici con effetti 3D o giochi dell'ultima generazione ma, non di meno, p o c o saggio concedere uno spazio limitato alla partizione radice, d a t o che sempre possibile che si richieda l'installazione di nuovo software. Si consiglia quindi di dedicare almeno una manciata di GB (5 GB d o v r e b b e r o 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 m o u n t ed Ext3 come valore dell'opzione Usato c o m e . 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 w e b 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 r e c t o r y / v a r (precisamente, nella cartella /var/cache/apt/archives). Data d u n q u e la variabilit dei dati contenuti in questa directory e viste le dimensioni sempre maggiori degli hard disk presenti in commercio, per sicurezza consigliabile dedicare a /var una partizione da alcuni GB. In questo caso si deve scegliere il t i p o di partizione Logica, ricavando lo spazio dall'Inizio del disco: necessario utilizzare una partizione logica perch, altrimenti, con la creazione di /var verrebbero occupate tutte e quattro le partizioni primarie disponibili e non sarebbe pi possibile aggiungere / h o m e 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, quindi, nemmeno partizioni logiche.

Nelle impostazioni per/var, quindi, si sceglier / v a r come Punto di m o u n t . C o m e 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 dell'opzione Usato come. In alternativa, si pu mantenere Ext3 e scegliere news come Uso t i p i c o . Non resta che creare l'ultima partizione, / h o m e . Si lasci a questa t u t t o lo spazio disponibile sull'hard disk. Ci permetter all'amministratore di aggiungere un numero nutrito di utenti al sistema, offrendo a essi la m a g g i o r quantit di spazio disponibile per d o c u m e n t i personali e file eseguibili. Ovviamente, se si ha intenzione di allestire un server " p u r o " che fornisca semplicemente un servizio agli altri c o m p u t e r della LAN, non ha m o l t o senso lasciare t u t t o questo spazio alla / h o m e , e la strategia nella ripartizione dello spazio su disco andrebbe d e b i t a m e n t e rivista (per esempio, aumentando lo spazio da assegnare alla partizione /var). C o m u n q u e , per dare t u t t o lo spazio rimasto sull'hard disk alla / h o m e si inserisce max come valore per le dimensioni della partizione, o p p u r e si prema semplicemente Invio. Fatto questo, si sceglie / h o m e c o m e Punto di m o u n t e si indica c o m e filesystem Ext3. Un'ultima accortezza pu essere quella di ridurre, in questo caso specifico, la percentuale dei Blocchi riservati. Date le ampie dimensioni della partizione / h o m e , infatti, una percentuale abbassata al 2 % costituir comunque un sufficiente "salvagente" per l'utente root e, al t e m p o stesso, lascer disponibile una maggiore quantit di spazio per i file personali degli utenti. Confermate le impostazioni p e r / h o m e si torner alla schermata con l'anteprima delle partizioni, che sar ora simile all'immagine seguente (Figura 1.16). A questo punto non rimane che selezionare l'opzione Terminare il part i z i o n a m e n t o e scrivere i c a m b i a m e n t i sul disco. Nella schermata successiva comparir l'elenco delle partizioni che il sistema formatter: d o p o aver controllato che t u t t o corrisponda a quanto richiesto, si selezioni il pulsante S in basso cos da confermare le modifiche al disco. Le partizioni verranno formattate e saranno installati i pacchetti di base del sistema.

I )igita!LifeStyle*pro

35

Linux Ubuntu per server e reti

[..ti] PartizionareQuesta 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 N ( 1 primaria 255.0 MB n* 2 primaria 49.4 MB B n 3 primaria 5.0 GB n* 5 logica 2.0 GB ATA VBOX HARDDISK f STOP sutap f ext3 /boot f ext3 / f ext3 /var

Annullare i cambiamenti alle partizioni Terminare il partizionamento e scrivere i cambiamenti sul disco <Indietro>

<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 c o m p u t e r e i loro rispettivi hard disk, adibendoli a uso server. In questi casi, nella schermata che elenca le modalit di partizionamento disponibili compariranno delle voci ulteriori: G u i d a t o - Ridimensionare (seguito dalla partizione che necessario ridimensionare) e G u i d a t o - usare il p i a m p i o spazio c o n t i g u o d i s p o n i b i l e . La prima opzione consente di mantenere le partizioni preesistenti, ridimensionandone una per far posto all'installazione di Ubuntu Server. D o p o aver scelto G u i d a t o - Ridimensionare, quindi, si d e v o n o confermare le modifiche all'hard disk selezionando il pulsante S nella schermata che appare. Le nuove dimensioni della partizione da ridimensionare vanno indicate nella schermata visibile nell'immagine che segue (Figura 1.17).

36

DigitalLifeStyle*pro

B<IfB>_SBgsta.. tra elementi; <Spazio> seleziona; <Invio> attiva i Figura 1.17 - La schermata a Ubuntu Server. nella quale si ridimensiona una partizione

bottoni

per far spazio

possibile inserire direttamente lo spazio in MB o GB che deve occupare la partizione, o p p u r e utilizzare un valore in percentuale o, ancora, scrivere max per lasciare alla partizione lo spazio massimo consentito. La seconda opzione disponibile, G u i d a t o - usare il p i a m p i o spazio c o n t i g u o d i s p o n i b i l e , p e r m e t t e di mantenere le partizioni preesistenti integre installando Ubuntu Server nello spazio che resta sul disco. Utilizzando il partizionamento manuale, infine, nella schermata con l'anteprima 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 e d un sistema che p e r m e t t e di utilizzare per la memorizzazione d e i dati d u e o pi hard disk contemporaneamente, solitamente 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 tipologie di RAID che il sistema operativo mette a disposizione sono elencate nella Tabella 1.3. Tabella 1 . 3 - 1 t i p i di RAID disponibili. Tipo di RAID Utilizzo Ripartisce i dati su pi dischi per aumentare le RAIDO prestazioni in lettura e scrittura rispetto all'utilizzo di un unico hard disk. Questa tecnica viene chiamata "striping" Gli stessi dati vengono scritti su pi dischi. Se un RAID 1 disco si guasta il sistema continua a funzionare utilizzando gli altri dischi. Questa tecnica chiamata "mirroring" Effettua lo striping ma in pi dedica un intero diRAID 4 sco alle informazioni di parit. Queste informazioni servono per la ricostruzione dei dati nel caso di errori su un disco Simile al RAID 4 ma memorizza le informazioni di RAID 5 parit in striping su pi dischi. Le prestazioni sono perci migliori di quelle ottenibili con il RAID 4 Permette semplicemente di riunire pi dischi in RAID lineare 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'installazione del sistema operativo utilizzando due hard disk in RAID 1, /dev/sda

e / d e v / s d b : ogni disco conterr tre partizioni, la partizione radice (/dev/ s d a l e /dev/sdb1), / h o m e (/dev/sda2 e / d e v / s d b 2 ) 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 d e v o n o assegnare filesystem e punti di m o u n t ai dispositivi stessi. Nella schermata Partizionare i dischi si scelga come m e t o d o Manuale. Quindi si selezioni il primo hard disk dall'elenco e alla d o m a n d a Creare una nuova t a b e l l a delle p a r t i z i o n i v u o t a ? si risponda S. A questo punto bisogna creare una per una le partizioni / , / h o m e e swap sincerandosi di selezionare sempre v o l u m e fisico p e r il RAID come valore dell'opzione Usato come. Inoltre, la partizione radice deve avere necessariamente il flag avviabile attivato (Figura 1.18).

Terminata la creazione delle partizioni sul primo disco, si effettua la medesima sequenza di operazioni per il secondo hard disk. Anche qui il flag avviabile deve essere attivo per la partizione radice. Poi, nella schermata Partizionare i dischi si seleziona la voce C o n f i g u r a r e il RAID s o f t w a r e e alla d o m a n d a Scrivere i c a m b i a m e n t i sui dispositivi si risponde S. Nella schermata successiva bisogna scegliere tra le opzioni disponibili Creare un device m u l t i d i s k (MD), poi si indica c o m e t i p o di multldisk RAID1. C o m e numero di device attivi si lascia il valore di default 2, mentre il numero di device spare (dispositivi di scorta) deve essere 0. Q u a n d o si arriva alla schermata visibile nell'immagine seguente (Figura 1.19) necessario accoppiare in m o d o o p p o r t u n o le partizioni presenti sui due hard disk.

[JJJ P a r t i z i o n a r e i d i s e r t i Si s c e l t o 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 . S i devono selezionare esattamente 2 p a r t i z i o n i . Device a t t i v i per i l m u l t i d i s k RfilDi:

<Indietro>

<Continuare>

<TftB> sposta tra elementi; <-sna7n> selezionai <Invio> attiva i bottoni

Figura 1.19-In questa schermata si devono collegare le partizioni nei due dischi.
Sotto la scritta Device a t t i v i per il m u l t i d i s k RAID1 si selezionino d u n q u e le partizioni radice sui due dischi, cio /dev/sda1 e / d e v / s d b 1 . Fatto que-

sto si scelga nuovamente l'opzione Creare un device m u l t i d i s k (MD), si indichi RAID1, 2 e 0 nelle schermate successive e si metta p o i la spunta sia su / d e v / s d a 2 sia su / d e v / s d b 2 . Si proceda nel medesimo m o d o per accoppiare /dev/sda3 con / d e v / s d b 3 . Infine, va selezionata la voce Terminare nella schermata Passi d i configurazione d i multidisk. Si torner cos alla schermata con la lista delle partizioni disponibili. In questo elenco verranno elencati i dispositivi RAID1 0, 1 e 2 corrispondenti alle tre partizioni. A questo p u n t o non rimane che selezionare la riga posta sotto RAID1 dispositivo 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 d i s p o s i t i v o n 1 per configurare i valori della partizione / h o m e e alla riga sotto RAID1 d i s p o s i t i v o n 2 per impostare la swap. Infine, si va sulla voce Terminare il p a r t i z i o n a m e n t o e scrivere i cambiam e n t 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, configurando un dispositivo RAID che utilizzi al suo interno d e i volumi LVM. La procedura da seguire per il RAID 1 la seguente. Si inizia creando un'unica partizione primaria sul primo disco (/dev/sda). Quindi, si attiva su di essa un v o l u m e fisico p e r il RAID e si rende la partizione avviabile. Vanno p o i effettuate le stesse operazioni sul secondo hard disk (dev/sdb). A questo p u n t o si seleziona la voce C o n f i g u r a r e il RAID s o f t w a r e e si seguono le istruzioni fornite nel paragrafo precedente per abilitare il RAID 1 sui dischi. Si indicano come device attivi /dev/sda1 e / d e v / s d b 1 . Poi si sceglie l'opzione T e r m i n a r e e, nella schermata con l'elenco d e l le partizioni, si seleziona la riga sotto RAID1 d i s p o s i t i v o n 0 (Figura 1.20). C o m e valore p e r l'opzione Usato c o m e va scelto v o l u m e fisico p e r LVM.

l)igiialLifeSlylcpro ^JJfc

M Partizloriare i disc Questa un'anteprima d e l l e p a r t i z i o n i e dei punto d i mount attualmente c o n f i g u r a t i . Selezionare una p a r t i z i o n e per modificarne le impostazioni ( f i l e system, mountpoint, e c c . ) , uno spazio l i b e r o per creare d e l l e p a r t i z i o n i o un d i s p o s i t i v o per i n i z i a l i z z a r n e la tabella delle partizioni. Configurare i l RftlD software

Poi si deve selezionare la voce C o n f i g u r a r e il Logicai V o l u m e M a n a g e r . Si risponde S nella schermata che appare, quindi nella schermata successiva si sceglie Creare i g r u p p i di v o l u m e e si assegna un n o m e a propria scelta (per esempio vg) al g r u p p o di volume.

Dopo che si selezionato

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

Configurare il Logicai Volume Manager posIgnore.

Fatto questo, si indica / d e v / m d O come Device per il n u o v o g r u p p o di v o l u m i e si a g g i u n g o n o poi i vari volumi logici (le partizioni da utilizzare)

l.)igitalLifeSiyle*pr(

1. Installazione

selezionando la voce Creare un v o l u m e logico. Per ogni partizione si inserisce un n o m e e si stabilisce lo spazio su disco che questa deve occupare. Infine, si seleziona Terminare nella pagina con il riepilogo 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 (iniziano tutte con la dicitura LVM VG). Ora non rimane che selezionare ciascuna riga posta sotto l'indicazione di un volume logico e indicare per ogni volume il filesystem da adottare e il punto di mount. Per finire, si va sulla voce Terminare il p a r t i z i o n a m e n t o e si consente di far scrivere le modifiche sui dischi. L'installazione del sistema operativo, d u n q u e , proceder e verranno installati i pacchetti di base. Dato che Grub non ancora compatibile con i sistemi RAID + LVM, per, necessario utilizzare LILO come b o o t loader. Nella schermata che apparir al termine dell'installazione del sistema (Figura 1.21), quindi, si dovr selezionare c o m e Destinazione dell'installazione di LILO la voce / d e v / mdO: s o f t w a r e RAID array.

DigitaiLifeSty!epro o

Per maggiori informazioni sul boot loader LILO (Linux LOader) un valido 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 single/LILO.html.gz

Dati utente e software


Una volta configurate le partizioni e installati i pacchetti di base, l'installazione prosegue con una schermata in cui viene richiesto di digitare il nome c o m p l e t o dell'utente principale del sistema: se lo si desidera, si p u inserire sia il proprio n o m e sia il proprio c o g n o m e .

Ubuntu Server, per maggiore sicurezza e per praticit, non consente l'accesso al sistema tramite l'utente root: le operazioni di amministrazione 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 c o m p l e t o dell'utente verr ricavato il n o m e dell'account con cui si avr accesso al sistema. Nella pagina successiva p o i possibile modificare 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 accedere a Internet: p u essere necessario indicarlo se si utilizza una rete aziendale che non consente di raggiungere direttamente la rete esterna. In tutti 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 disponibili, selezionabili una per una premendo il tasto Spazio: DNS server. Attivando 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 tipicamente per gestire un completo web server; Mail server. Installa tutto 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 seguente (Figura 1.23): non rimane che togliere 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 parca

Utenti,

gestire il nuove

programmi

e aggiungere

partizioni.
Al riavvio del PC ci si trover davanti al prompt di login: qui bisogna inserire 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 importanti 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 prerogative 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 q u e s t o c o m a n d o e p r e m u t o il tasto Invio, il sistema far apparire una riga c o m e la s e g u e n t e (al p o s t o di aie verr indicato il n o m e del p r o p r i o utente):
[sudo] p a s s w o r d f o r ale:

A q u e s t o p u n t o bisogna scrivere la password d e l l ' u t e n t e principale e premere 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 c o m a n d o e s e g u i t o nel t e r m i n a l e crea la d i r e c t o r y (mkdir) I m m a g i n i a partire dalla cartella corrente e, per fare q u e s t o , o t t i e n e m o m e n t a n e a m e n t e i p o t e r i del s u p e r u t e n t e . Una volta che il sistema ha e s e g u i t o il c o m a n d o che segue l'istruzione sudo, q u i n d i , si torner ad avere i p o t e r i limitati dell'utente principale. Talvolta, per, necessario lanciare una lunga serie di comandi da root e in tal caso il dover premettere ogni volta sudo p u costituire un intralcio seccante. La soluzione quella di utilizzare l'opzione -s di sudo, in questo m o d o :
sudo -s

DgitalLife.Sty]e*pro

Verr richiesto di inserire la password dell'utente principale. Una volta che sono stati lanciati tutti i comandi che si desidera eseguire da root, per tornare ai poteri dell'utente principale baster scrivere exit o premere c o n t e m p o r a n e a m e n t e i tasti Ctrl 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 c o m p o r t a m e n t o anche in Ubuntu Server sufficiente assegnare una password a root lanciando il c o m a n d o che segue:
sudo passwd root

A questo punto bisogna digitare la password dell'utente principale, se questa 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 p o teri di root nella sessione corrente lanciando il c o m a n d o su - . In questo secondo caso, come per il c o m a n d o sudo -s visto in precedenza, si torner ad assumere l'identit dell'utente precedente richiamando exit o premendo Ctrl+D. Nel prosieguo di questo volume, c o m u n q u e , si continuer ad adottare sudo come m e t o d o per acquisire i poteri del superutente.

Aggiungere nuovi utenti Per aggiungere un nuovo utente nel sistema si usa il c o m a n d o adduser, seguito dal nome dell'account da creare:
sudo adduser utente

Bisogna quindi digitare la password da assegnare all'utente e inserirla p o i di nuovo per conferma. Fatto questo, necessario aggiungere qualche informazione supplementare sull'utente. In console comparir la riga Full N a m e [ ]: qui si potranno inserire n o m e e c o g n o m e dell'utente reale cui deve corrispondere l'account nel sistema. Verr p o i richiesto I' inserimento di altri dati come il numero di stanza (Room Number) dell'utente, i numeri di telefono di questo e altro ancora. Si p u evitare di aggiungere queste informazioni p r e m e n d o pi volte Invio finch non compare la scritta Is this i n f o r m a t i o n correct? [y/N]. A questo p u n t o si deve premere y sulla tastiera e p o i Invio: l'utente sar finalmente creato. Un c o m a n d o a p p a r e n t e m e n t e elementare c o m e adduser c o m p i e , in realt, una serie articolata d i operazioni nel sistema: conoscerle nel d e t t a g l i o servir a introdurre alcuni concetti basilari nell'amministrazione di un sistema Linux, r i m a n d a n d o p o i alle pagine successive i necessari approfondimenti. Una volta lanciato il c o m a n d o adduser, d u n q u e , viene assegnato all ' u t e n t e prescelto un g r u p p o c o n il n o m e d e l l ' u t e n t e stesso, q u i n d i viene creata una d i r e c t o r y H o m e apposita (del t i p o / h o m e / u t e n t e ) . In questa directory, p o i , v e n g o n o copiati a u t o m a t i c a m e n t e i file c o n t e n u t i in / e t c / s k e l . A questo proposito necessaria qualche spiegazione aggiuntiva. I g r u p p i non sono altro che degli insiemi di utenti a cui ci si p u riferire per condividere risorse nel sistema: per esempio, possibile fare in m o d o che la directory Documenti sia leggibile solo dal g r u p p o di utenti doc. Q u a n d o si vorr rendere leggibile tale directory da un nuovo utente, quindi, baster inserirlo nel g r u p p o doc.

A o g n i u t e n t e v i e n e a s s e g n a t o un n u m e r o p r o g r e s s i v o d i i d e n t i f i c a z i o n e , c h i a m a t o UID. Il p r i m o u t e n t e c h e si a g g i u n g e al sistema t r a m i t e adduser

o t t i e n e I'UID 1001. Il n u m e r o i d e n t i f i c a t i v o p e r i g r u p p i invece il G I D : il p r i m o g r u p p o a g g i u n t o ha G I D 1001. Il s u p e r u t e n t e ha U I D 0 e G I D 0.

H o m e , invece, la directory d o v e v e n g o n o inseriti tutti i file personali di un singolo utente, mentre /etc/skel la cartella in cui sono raccolti i file stand a r d che ogni utente deve avere all'interno della propria directory H o m e . Cancellare un utente Per eliminare un u t e n t e d a l sistema si usa il c o m a n d o deiuser:
sudo deiuser utente

Q u e s t o c o m a n d o cancella le informazioni sull'utente m a , p e r ragioni d i sicurezza, n o n elimina la relativa directory / h o m e . Per cancellarla si p u i m p i e g a r e il c o m a n d o di cancellazione rm (l'opzione -r c o n s e n t e d i eliminare la directory indicata c o m e a r g o m e n t o e t u t t e le sue sottocartelle):
sudo rm -r /home/utente

Per cancellare d i r e t t a m e n t e un u t e n t e e la relativa / h o m e si p u far uso


d e l l ' o p z i o n e - -remove-home d i deiuser: sudo deiuser --remove-home utente

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 home di un utente.

di deiuser possibile eliminare anche la

DigitalLifeStyle*pro Q

Disattivare un utente A volte p u essere necessario impedire m o m e n t a n e a m e n t e a un utente l'accesso al sistema. Per ottenere questo possibile fare uso di diversi strumenti, tra cui il c o m a n d o usermod. Per bloccare la password di un utente, cos da impedirgli di effettuare il login sulla macchina, si utilizza l'opzione - L del comando, in questo m o d o :
sudo u s e r m o d -L u t e n t e

Successivamente, quando si vorr sbloccare la password, si dovr digitare:


sudo usermod -U utente

Gestire le password In precedenza si visto come, mediante il c o m a n d o 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 dell'utente di cui si vuole modificare la password), invece, sar possibile digitare direttamente una nuova password senza dover indicare quella corrente: un'opzione c o m o d a , per esempio, q u a n d o un utente ha smarrito la propria password e vuole crearne una nuova.

C o n il c o m a n d o p a s s w d p o i p o s s i b i l e s t a b i l i r e u n a s c a d e n z a p e r la pass w o r d d i un u t e n t e , s u p e r a t a la q u a l e sar n e c e s s a r i o c a m b i a r e la p a s s w o r d c o n u n a n u o v a . L ' o p z i o n e d a usare -x, s e g u i t a d a l l a d u r a t a m a s s i m a in g i o r n i p e r la p a s s w o r d e d a l n o m e d e l l ' u t e n t e p e r il q u a l e va i m p o s t a t a questa scadenza: sudo p a s s w d -x 60 ale N e l l ' e s e m p i o r i p o r t a t o l ' u t e n t e aie d o v r n e c e s s a r i a m e n t e c a m b i a r e la propria password o g n i d u e mesi. possibile, inoltre, avvertire l'utente della scadenza i m m i n e n t e tramite l ' o p z i o n e -w: sudo p a s s w d -w 3 ale In q u e s t o e s e m p i o , l ' u t e n t e aie v i e n e a v v e r t i t o d e l l ' i m m i n e n t e s c a d e n z a d e l l a p r o p r i a p a s s w o r d t r e g i o r n i p r i m a d e l l ' e f f e t t i v o t e r m i n e d e l l a stessa. Per c o n c l u d e r e q u e s t a b r e v e c a r r e l l a t a sulle m i l l e f u n z i o n a l i t d e l c o m a n d o p a s s w d , g r a z i e a l l ' o p z i o n e - s p o s s i b i l e o t t e n e r e un r i e p i l o g o s i n t e t i c o sullo s t a t o d i u n a c c o u n t . C o n p a s s w d - s si m o s t r a n o le i n f o r m a z i o n i riguard a n t i l ' u t e n t e c o r r e n t e , m e n t r e c o n sudo p a s s w d -s u t e n t e si v i s u a l i z z a n o i d a t i d i un u t e n t e a p r o p r i a scelta. L ' o u t p u t d e l c o m a n d o sar s i m i l e a l l ' e s e m p i o s e g u e n t e : ale P 0 6 / 2 3 / 2 0 0 8 0 60 5 -1 E c c o il c o n t e n u t o d e i vari c a m p i visualizzati, p a r t e n d o d a sinistra: il n o m e d e l l ' u t e n t e d i cui si s t a n n o m o s t r a n d o le i n f o r m a z i o n i (aie); p r e s e n t e u n a p se l ' u t e n t e p u utilizzare u n a p a s s w o r d p e r a v e r e a c c e s s o al s i s t e m a , u n a L se l ' a c c o u n t b l o c c a t o e NP se n o n p r e sente alcuna password; la d a t a in cui a v v e n u t a l ' u l t i m a m o d i f i c a alla p a s s w o r d (06/23/2008 nell'esempio); il n u m e r o m i n i m o d i g i o r n i c h e d e v o n o passare tra u n a m o d i f i c a e l'altra d e l l a p a s s w o r d (0, l ' u t e n t e p u c a m b i a r e la p a s s w o r d t u t t e le volte che vuole); la d u r a t a m a s s i m a d e l l a p a s s w o r d in g i o r n i (60);

quanti giorni prima della scadenza della password bisogna inviare all'utente un messaggio di avvertimento (5); d o p o quanti giorni dalla scadenza della password si deve disattivare l'account dell'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:
drwxr-xr-x 2 ale ale 4096 2008-06-24 11:49 Documenti/

idrwx-

ale ale X ale ale X ale jdrwx ale ale |drwxr-xr X |drwxr-xr X ale |-rw-r--r ale Jdrwxr-xr X ale idrwx ale Idrwxr-xr X ale - rw root ale X ale -X ale Idrwxale X ale X ale ale -X ale X 10 ale J-rw-r1 ale |ale@pitagora

3 2 3 1 3 4 ; > 5 1 2 2 2 1 1 4 3 2 2 2 1

ale ale ale ale ale ale ale ale ale ale ale ale root ale ale ale ale ale ale ale ale ale ale

4096 4096 4096 0 4096 4096 4096 4096 619 4096 4096 4096 6366 274 4096 4096 4096 4096 4096 119 4096 4096 9873

2008-06- 23 2008- 04 28 2008--06-13 2008 04 23 2008--06 02 2008 06 10 2008 -06- 24 2008--04-24 2008 06 07 2008 -04-30 2008 04 28 2008--04--26 2008 06 24 2006 01 18 2008 -06 13 2008 05 22 2008 04 -28 2008 -06 -24 2006- 11 23 2008-06 24 2008 -06 12 2006 07 11 2008--06 24

16:02 09:00 18:38 08:59 12:03 09:59 17:02 16:48 17:36 12:25 09:00 12:37 18:05 23:44 16:55 11:46 09:42 15:12 18:01 15:11 19:10 12:03 18:05

.Skype .ssh .streamtuner .sudoasadminsuccessful .themes .thumbnails tmp .transmission .ufrawrc .update-manager-core .update-notifier Video .viminfo .vimrc .VirtualBox .vie .w3m .wapi .wordtrans .Xauthority .xine . xntame .xsession-errors

Figura 2.5 - Con il comando te -al vengono senti nella directory corrente.

fornite

informazioni

dettagliate

sui file

pre-

In una linea del genere sono presenti diversi campi separati da un carattere vuoto: il primo c a m p o (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 g r u p p o cui appartiene la directory. I permessi non sono altro che delle regole di accesso per i file e per le directory. Qual il significato di una sequenza di caratteri apparentemente
Casuale C o m e drwxr-xr-x?

Il primo carattere, d, indica che le informazioni si riferiscono a una directory, mentre il resto del c a m p o costituito da tre g r u p p i di tre caratteri ciascuno: il primo g r u p p o rappresenta i permessi relativi all'utente (rwx), il secondo indica i permessi del g r u p p o di appartenenza (r-x) e l'ultimo i permessi per agli altri utenti nel sistema (r-x). Il carattere r sta per leggibile, w per scrivibile, x per eseguibile.

Il flag x in un file indica che q u e s t o p u essere eseguito dagli utenti c o m e un normale c o m a n d o . Una directory eseguibile, invece, una cartella in cui gli utenti possono entrare.

Interpretando la sequenza drwxr-xr-x d ' e s e m p i o , quindi, la directory Documenti risulta leggibile, scrivibile ed eseguibile dall'utente che la possiede, leggibile ed eseguibile dal g r u p p o d'appartenenza e infine leggibile ed eseguibile dagli altri utenti. Per modificare i permessi si usa il c o m a n d o chmod. La sintassi di questo c o m a n d o piuttosto articolata; una delle pi comuni modalit di utilizzo la seguente:
c h m o d u t e n t i o p e r a t o r e p e r m e s s i file

I primi tre parametri vanno inseriti senza spazi separatori e rappresentano, in realt, un'unica indicazione sui permessi da modificare, espressa in notazione mnemonica. II parametro utenti pu contenere una o pi lettere tra u, g, o e a. La lettera u indica l'utente a cui appartiene il file, g gli utenti presenti nel g r u p p o del file a parte l'utente possessore del file, o tutti gli altri utenti e, infine, a indica l'insieme degli utenti nel sistema. Il parametro operatore, quindi, p u essere + per aggiungere un flag al file, - per togliere 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 composto 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 e d esecuzione. La x, quindi,

attiva i permessi di esecuzione solo se ci si riferisce a una directory o se il file indicato possiede gi dei permessi di esecuzione per altri utenti. La lettera s fa s che, all'esecuzione d e l file, l'utente corrente assuma i permessi del possessore del file o d e l g r u p p o cui q u e s t o a p p a r t i e n e . Infine, t abilita il c o s i d d e t t o bit sticky: viene utilizzato p r i n c i p a l m e n t e sulle directory e i m p e d i s c e che un utente possa cancellare o file o della directory o p p u r e sia root. Il p a r a m e t r o finale file, q u i n d i , indica il file o la directory dei quali si v o g l i o no m o d i f i c a r e i permessi. Ecco alcuni e s e m p i , di complessit crescente: chmod a+r Documenti/tesi.pdf Q u e s t o c o m a n d o a g g i u n g e i permessi di lettura (+r) sul file D o c u m e n t i / t e s i . p d f a t u t t i (a) gli utenti. L'esempio s e g u e n t e , invece, a g g i u n g e i permessi di scrittura (+r) sul file m b o x all'utente p r o p r i e t a r i o e al g r u p p o (ug): chmod ug+w mbox L'ultimo c o m a n d o , infine, t o g l i e i permessi di scrittura (-w) sul file / h o m e / a l e / a p p u n t i al g r u p p o (g) e fa in m o d o che gli altri utenti (o) possano solo l e g g e r e il file (=r): chmod g-w,o=r /home/ale/appunti Il c o m a n d o chmod di utilizzo c o m p l e s s o . Per ulteriori a p p r o f o n d i m e n t i si consiglia di l e g g e r e la pagina di manuale (man page) del c o m a n d o . rinominare i file all'interno della directory stessa, a m e n o che l'utente sia il p r o p r i e t a r i o del

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

tro di una pagina si preme b. Con q si esce dalla man page.

gi,

per andare avanti di una pagina si preme

freccia su e freccia Spazio e per tornare indie-

Modificare utente e gruppo di un file Riprendendo l'output del c o m a n d o is -ai riportato nel paragrafo precedente, si visto come nella riga d ' e s e m p i o i campi terzo e quarto mostrino l'utente proprietario e il g r u p p o di un file o di una directory. Per modificare il proprietario il c o m a n d o da usare chown, con la sintassi seguente:
c h o w n u t e n t e : g r u p p o file

Per esempio, per fare in m o d o che il proprietario d e l file vacanze.jpg diventi mario si scrive:
chown mario vacanze.jpg

Il c o m a n d o chown : video vacanze.jpg, invece, imposta il g r u p p o v i d e o sul m e d e s i m o file d e l l ' e s e m p i o p r e c e d e n t e ; infine, la riga s e g u e n t e indica c o m e p r o p r i e t a r i o d e l file jazz.mp3 l ' u t e n t e ale e a u d i o c o m e gruppo:
chown ale:audio jazz.mp3

Modifiche ricorsive Spesso si ha la necessit di modificare i permessi o gli utenti proprietari e i gruppi di tutti 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 modifiche in m o d o ricorsivo, attraversando cio tutti i file e le sottocartelle a partire dalla directory indicata. Ecco un esempio:
c h o w n -R a l e : v a c a n z a Francia2006/

Il c o m a n d o riportato fa s che la directory francia2007 e tutti gli elementi contenuti in questa divengano di propriet dell'utente ale e appartengano al g r u p p o 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 2 0 8 6 - 6 8 - 0 7 - -1', 36 4 9 drwxr- xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2 8 0 6 - 0 8 - 0 8 - - 2 3 . 1 4 . 5 2 d rwx r xr -X 2 ale vacanza 4096 2008 -04 07 08 53 2086 08-89--2: . 5 2 . 3 6 drwxr- xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2 0 0 6 - 8 8 - 1 8 - .23.08 d rwx r xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2 8 0 6 - 6 8 - 1 3 - - 1 8 d rwx r xr - X 2 ale vacanza 4096 2006 -08 17 21 06 2 0 8 6 - 8 8 - 1 4 - - 1 9 . 1 7 . 5 1 d rwx r xr -X 2 ale vacanza 4096 2006 -08 17 21 06 2 0 0 6 - 0 8 - 1 4 - 1 9 . 2 7 , 5 2 drwxr xr -X 2 ale vacanza 4096 2006 -08 17 21 06 . cairelen t s aleiapitagora:--/Imfriagini$ |

Come aggiungere un gruppo N e l l ' u l t i m o e s e m p i o r i p o r t a t o si incontrato il g r u p p o vacanza, n o n presente tra i g r u p p i inclusi nel sistema al m o m e n t o dell'installazione. Per a g g i u n g e r e un n u o v o g r u p p o al sistema si utilizza il c o m a n d o addgroup s e g u i t o d a l n o m e d e l g r u p p o . N e l l ' e s e m p i o che s e g u e viene creato p r o prio il g r u p p o vacanza: sudo addgroup vacanza Il c o m a n d o speculare p e r eliminare un g r u p p o d a l sistema deigroup (sudo deigroup vacanza, p e r seguire l ' e s e m p i o precedente). Per inserire un u t e n t e all'interno d i un g r u p p o si usa adduser con la sintassi seguente: sudo adduser utente gruppo Per rimuovere un u t e n t e da un g r u p p o , invece, si utilizza deiuser c o n la m e d e s i m a sintassi (sudo deiuser utente gruppo). L'elenco d e i g r u p p i nei quali presente un d e t e r m i n a t o u t e n t e si o t t i e n e con il c o m a n d o groups s e g u i t o d a l n o m e d e l l ' u t e n t e . Per o t t e n e r e la lista

di t u t t i g r u p p i attivi nel sistema, infine, si p u l e g g e r e il file / e t c / g r o u p con il c o m a n d o che segue:


cat /etc/group

Si o t t e r r a n n o in o u t p u t una serie di righe, o g n u n a delle quali mostrer un diverso g r u p p o presente nel sistema. Ciascuna linea c o n t i e n e tre c a m p i separati dal carattere : e il n o m e del g r u p p o a p p a r e nel p r i m o c a m p o .

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 ottenere 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 p r o g r a m m i v e n g o n o forniti all'interno di appositi p a c c h e t t i : o g n i pacchetto costituito dall'insieme d e i file che verranno effettivamente installati sul sistema e da alcuni file di controllo che c o n t e n g o n o le istruzioni per installare e disinstallare in m o d o pulito il pacchetto stesso. I pacchetti si relazionano gli uni con gli altri. Per esempio, un w e b browser necessita di alcune librerie per funzionare (in gergo si dice che il browser " d i p e n d e " da queste librerie): il w e b browser sar presente in un pacchett o e le librerie richieste saranno contenute in altri pacchetti ancora. In questo caso, programma e librerie d e v o n o essere perfettamente compatibili tra loro: per ottenere questo, i relativi pacchetti v e n g o n o prelevati da un r e p o s i t o r y comune, cio da un archivio contenente un ampio numero di pacchetti dalla compatibilit reciproca certa. L'insieme dei repository attivi in una macchina, d u n q u e , forma un ecosistema 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 c o m a n d o 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 pacchetto

Per installare il pacchetto chiamato emacs, per esempio, si user quindi il


c o m a n d o sudo apt-get instali emacs.

D o p o aver premuto Invio per conferma, il pacchetto verr scaricato da Internet e installato nel sistema, insieme a tutti i pacchetti da cui d i p e n d e (le " d i p e n d e n z e " ) per il proprio corretto funzionamento. Per ricercare un pacchetto tra tutti quelli disponibili si usa invece il comand o a p t - c a c h e , COS: apt-cache search <criterio>

Al posto di c r i t e r i o si inserisce il testo che va ricercato tra i nomi d e i pacchetti e tra le descrizioni di questi.

Per e s e m p i o , per cercare t u t t e le occorrenze di " w e b server" si lanci: apt-cache search web server

J a l e @ p i t a g o r a : s u d o apt-get i n s t a l l apache2 Reading package l i s t s . , . Done Building dependency tree Reading state i n f o r m a t i o n . . , Done The following extra packages w i l l be i n s t a l l e d : 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 following N W packages w i l l be i n s t a l l e d : E apache2 apache2-mpm-worker apache2-utils apache2.2-common l i b a p r l libaprutill 0 upgraded, 6 newly i n s t a l l e d , 0 to remove and 0 not upgraded. Need to get 1355kB of archives. After t h i s operation, 4878kB of a d d i t i o n a l disk space w i l l be used. Do you want to continue [Y/n]? |

f: If

L'output scorrer nella console e l'elenco dei vari pacchetti che soddisfano il criterio inserito sar visualizzato senza seguire alcun ordine. Per avere i risultati della ricerca in ordine alfabetico, invece, si digiti il c o m a n d o seguente: apt-cache search web server | sort | less

Il comando appena eseguito una pipe: il risultato di apt-cache l'input di less (che visualizza i dati in schermate separate).

search

diventa l'input di sort (che ordina i dati), quindi l'output di sort diventa

In q u e s t o caso, inoltre, i risultati non scorreranno riga per riga in console, ma verranno mostrati una schermata per volta: per passare alla schermata successiva baster p r e m e r e il tasto Spazio.

Per o t t e n e r e un elenco d e i pacchetti installati nel sistema si usa il c o m a n d o seguente:


d p k g -1

A g g i u n g e n d o c o m e a r g o m e n t o d e l l ' o p z i o n e - 1 una qualsiasi stringa seguita d a l carattere *, verranno mostrati solo i pacchetti installati i cui n o m i c o n t e n g o n o la stringa inserita. Q u i n d i , p e r elencare t u t t i i pacchetti che h a n n o nel n o m e " l i b e " si dovr scrivere q u e s t o in console:
d p k g -1 libe*

Il carattere * della riga dpkg -i libe* un carattere speciale (metacarattere) 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 i n d i v i d u a t o un p a c c h e t t o c o n apt-cache search, si ha spesso la necessit d i o t t e n e r e informazioni d e t t a g l i a t e su di esso. Per fare q u e s t o si usa il c o m a n d o interno show d i apt-cache, cos:
apt-cache show pacchetto?

Nelle righe d i o u t p u t visualizzate in console da apt-cache show sono presenti numerosi c a m p i ; ecco i principali: V e r s i n . Indica la release d e l p a c c h e t t o presente nel repository; D e p e n d s . C o n t i e n e l'elenco di t u t t e le d i p e n d e n z e d e l p a c c h e t t o ; S u g g e s t s . Sono i pacchetti suggeriti: se le d i p e n d e n z e c o n s e n t o n o di far funzionare il p r o g r a m m a , i pacchetti suggeriti p e r m e t t o n o al p r o g r a m m a d i funzionare al m e g l i o ; C o n f l i c t s . I pacchetti in c o n f l i t t o c o n il p a c c h e t t o selezionato. N o n possibile installare c o n t e m p o r a n e a m e n t e q u e s t o e quelli; D e s c r i p t i o n . Una descrizione accurata d e l software presente nel pacchetto.

Se nei repository sono presenti pi versioni di uno stesso pacchetto, il c o m a n d o apt-cache show mostrer informazioni su tutte le release disponibili, in sequenza. Pacchetti sempre aggiornati In una macchina server indispensabile avere sempre le ultime versioni dei pacchetti rilasciate dalla distribuzione. In questo m o d o si star ragionevolmente al riparo da b u g insidiosi che possano c o m p r o m e t t e r e la sicurezza del server. L'operazione di a g g i o r n a m e n t o consta di d u e passaggi. Prima si scarica da Internet la lista pi recente dei pacchetti disponibili:
sudo apt-get update

Fatto questo, per aggiornare tutti i pacchetti installati all'ultima release si lancia il c o m a n d o seguente:
sudo apt-get upgrade

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 a g g i o r n a m e n t o di apt-get upgrade piuttosto stringente: con questo c o m a n d o nessun pacchetto sar disinstallato o aggiunto al sistema anche se ci viene richiesto per portare a termine l'aggiornamento di uno o pi pacchetti. Questo comando, d u n q u e , consente di mantenere l'assoluto controllo sul parco software presente in una macchina, ma non assicura che vengano aggiornati tutti i pacchetti installati. A volte, per, il c o m p l e t o a g g i o r n a m e n t o di un sistema richiede l'installazione di pacchetti aggiuntivi o l'eliminazione di altri: in questi casi si deve utilizzare il c o m a n d o sudo apt-get dist-upgrade che, in caso d i conflitti tra i pacchetti, aggiorner quelli considerati pi i m p o r t a n t i a scapito degli altri. Eliminare i pacchetti Per cancellare un p a c c h e t t o dal sistema insieme a t u t t i i file che lo c o m p o n g o n o si usa apt-get s e g u i t o d a l c o m a n d o interno remove, in questo modo:
sudo apt-get remove <pacchetto>

L'installazione di un pacchetto c o m p o r t a spesso la creazione di alcuni file di configurazione sull'hard disk: questi non v e n g o n o eliminati dal comand o apt-get remove.

Per cancellare sia i file effettivi di un pacchetto sia i file di configurazione, d u n q u e , si deve utilizzare apt-get purge:
sudo apt-get purge <pacchetto>

Q u a n d o si installa un pacchetto, il file di q u e s t o viene memorizzato nella directory /var/cache/apt/archives. C i p u essere utile per reinstallare r a p i d a m e n t e d e i pacchetti che si sono installati in passato: un pacchett o presente in questa directory, infatti, n o n verr scaricato n u o v a m e n t e dalla rete. D o p o aver installato molti nuovi pacchetti e aggiornato pi volte la macchina, per, inevitabile che la directory /var/cache/apt/archives risulti piena di file d e b e che, perci, finisca per occupare centinaia di MB di spazio su disco.

i file d e i p a c c h e t t i di U b u n t u Server h a n n o e s t e n s i o n e . d e b , d a t o c h e i l sistema di g e s t i o n e d e i p a c c h e t t i d i U b u n t u lo stesso p r e s e n t e nella d i s t r i b u z i o n e D e b i a n . V i s t o il suffisso finale d e i file, tali p a c c h e t t i v e n g o no chiamati "pacchetti d e b " .

possibile "sfoltire" /var/cache/apt/archives in due modi: cancellando tutti i file presenti nella cartella oppure eliminando solo quei file dei pacchetti 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 tutti i file d e b da /var/cache/apt/archives va usato il comand o 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-0ubuntu7386.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 tutti i file dalla directory.

piena, con sudo apt-get clean si cancellano

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 tutti i repository necessari per mantenere costantemente aggiornato il proprio server. possibile, c o m u n q u e , gestire direttamente i repository abilitati nel sistema intervenendo sul file /etc/apt/sources.list, un semplice file di testo che va aperto con un editor. M o l t o del lavoro di amministrazione di un server viene svolto all'interno di un editor di testo: i file di configurazione del sistema o quelli dei programmi, infatti, non sono altro che file testuali modificabili dagli utenti provvisti dei permessi necessari. La presentazione del file /etc/apt/sources.list, quindi, offrir l'occasione giusta per conoscere da vicino uno degli editor installati per default su Ubuntu Server: nano. L'editor nano Per aprire il file /etc/apt/sources.list con l'editor nano necessario far uso di sudo, d a t o che un utente normale non avrebbe i permessi per modificare il file. Si lanci quindi in console il c o m a n d o seguente:
sudo nano /etc/apt/sources.list

Comparir una schermata con in alto una riga informativa contenente il n o m e del file aperto, in basso un riepilogo d e i comandi disponibili nell'editor e, nella sezione principale al centro, il contenuto del file / e t c / a p t / sources.list. Il risultato su schermo sar simile all'immagine seguente (Figura 2.11). L'editor nano m o l t o semplice da usare: con i tasti freccia ci si sposta all'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 C t r l + G , quindi, viene fornito un prospetto d e i principali comandi disponibili 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 13 Read File | Prev Page | Cut Text E Cur Pos Q g 1 l Exit E Justify Q Where Is |E Next Page UnCut T e x t To Spell 1

Figura 2.11 - L'editor nano con aperto il file

/etc/apt/sources.list.

In questi primi capitoli del volume vengono trattati argomenti pi semplici 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 c o m e riferimento il file /etc/apt/sources.list di default su Ubuntu Server, le prime righe sono righe di c o m m e n t o : iniziano con il carattere # e consentono di aggiungere informazioni sugli elementi di configurazione presenti nel file.

Pu stupire che all'interno d i un semplice file di configurazione siano presenti delle righe di c o m m e n t o , c o m e nei sorgenti dei p r o g r a m m i . 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 ultime m o d i f i c h e a p p o r t a t e : delle chiare righe di c o m m e n t o saranno allora f o n d a m e n t a l i per potersi orientare.

Le righe effettive di configurazione forniscono i dati sui repository da attivare e utilizzano il seguente formato:
deb uri distribuzione componenti

O g n i linea rappresenta uno o pi repository. Il primo elemento ne indica il tipo: deb per i repository di pacchetti con i file eseguibili compilati, deb-src per quelli contenenti i sorgenti dei pacchetti. La voce uri contiene il percorso iniziale dei repository. Si tratta solitamente dell'indirizzo Internet da cui prelevare i pacchetti, privo della parte che specifica la versione della distribuzione cui si interessati. L'elemento distribuzione, quindi, indica la release della distro installata sulla macchina: hardy, gutsy, d a p p e r e tutti gli altri nomi attribuiti alle varie versioni di Ubuntu.

A ogni nuova release di Ubuntu viene affibbiato un nomignolo c o m p o s t o da due parole: un aggettivo 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 o g n i release di Ubuntu, poi, sono disponibili sui server dei repository alcune cartelle che forniscono elementi distribuzione aggiuntivi.

La versione 8.04 LTS di Ubuntu ha h a r d y - u p d a t e s , c o n t e n e n t e aggiornamenti che risolvono b u g i m p o r t a n t i nei pacchetti, e h a r d y - b a c k p o r t s , che presenta versioni pi recenti dei pacchetti forniti con il rilascio della distribuzione. L'ultimo parametro, componenti, f o r m a t o dal nome del c o m p o n e n t e finale di uno o pi repository che si desidera abilitare: per indicare pi componenti necessario che questi abbiano uri e distribuzione in comune. Nella Tabella 2.1 v e n g o n o mostrati i principali c o m p o n e n t i disponibili. Tabella 2.1 - Elenco dei c o m p o n e n t i . Componente Pacchetti main open Significato source direttamente supportati da Ubuntu. Gli aggiornamenti di sicurezza avvengono in t e m p i m o l t o rapidi Pacchetti o p e n source che, a differenza del c o m p o n e n universe te main, sono gestiti dalla comunit di utenti. Gli aggiornamenti di sicurezza sono forniti dalla comunit Pacchetti non o p e n source. Questo c o m p o n e n t e e i remuitiverse lativi aggiornamenti di sicurezza sono gestiti dalla comunit di utenti Pacchetti non disponibili sotto licenza libera ma diretrestricted partner tamente supportati, per quanto possibile. Contiene driver per hardware non altrimenti supportato su Linux Pacchetti commerciali

L'insieme di tutti questi elementi forma quindi una riga in /etc/apt/sources.list come la seguente:
deb http://it.archive.ubuntu.com/ubuntu/ hardy main restricted

Un repository a parte http://security.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, o g n u n o dedicato a un diverso t i p o di a g g i o r n a m e n t o per i pacchetti, consente di scegliere in m o d o 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 m o difiche alla configurazione di default del file in Ubuntu Server. Per esempio, se non si interessati alla compilazione d e i sorgenti si possono disattivare tutti i repository di t i p o deb-src: in questo m o d o la procedura di a g g i o r n a m e n t o 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 disponibile solo il software direttamente supportato da Ubuntu: in tal m o d o si sar certi che, qualunque applicazione si scelga di installare sulla propria macchina, in caso di b u g accertati questi verranno corretti nel pi breve t e m p o possibile. Per ottenere una configurazione di sources.list di tal fatta, quindi, sufficiente commentare tutte le righe nel file che facciano riferimento ai c o m p o n e n t i universe e multiverse. Una volta che sono state apportate delle modifiche al file sources.list, bisogna 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 t c / a p t / sources.list.d d e i file separati contenenti le righe necessarie per attivare i repository aggiuntivi.

Attenzione! Si controlli scrupolosamente la provenienza e il c o n t e n u t o d i questi repository per n o n c o m p r o m e t t e r e la sicurezza della propria macchina.

Se il repository non risponde Durante la p r o c e d u r a d i installazione d e l sistema o p e r a t i v o v e n g o n o inseriti in sources.list d e i mirrar d e i repository di U b u n t u g e o g r a f i c a m e n t e vicini alla macchina: p e r l'Italia si tratta d e l mirrar con uri: http://it.archive.ubuntu.com/ubuntu/

Un mirrar la copia esatta del c o n t e n u t o d i un sito. In questo caso, si tratta d i server h t t p e f t p sparsi in t u t t o il m o n d o che replicano il contenuto d e g l i archivi di repository Ubuntu.

Una scelta d e l genere, s o l i t a m e n t e , p e r m e t t e di scaricare liste e pacchetti dai repository nei t e m p i p i rapidi possibili; q u a l c h e volta, p e r , gli indirizzi predefiniti p o s s o n o risultare i r r a g g i u n g i b i l i o s e m p l i c e m e n t e intasati. In questi casi si p u aprire la pagina w e b che elenca tutti i mirrar d i s p o nibili. Per fare q u e s t o si p u usare il browser testuale w3m installato p e r d e f a u l t su U b u n t u Server:
w3m https://wiki.ubuntu.com/Mirrors?action=show

N e l l ' e l e n c o c h e appare, q u i n d i , si individua un s e c o n d o mirrar nelle vicinanze. Poi si d e v o n o c a m b i a r e in sources.list t u t t e le occorrenze d i h t t p : / / it.archive.ubuntu.com/ubuntu/ inserendo al p o s t o d i q u e s t e l'uri d e l mirrar alternativo. Per e s e m p i o , una riga c o m e la seguente:
deb http://it.archive.ubuntu.com/ubuntu/ hardy universe

p u diventare cos:
deb ftp://ftp.fu-berlin.de/linux/ubuntu/ hardy universe

2. C Images D 1. C Image Mirrors D 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 [ W ] http://ftp.iinet.net.au/pub/ubuntu/ W W [WWW] h t t p : / / m i r r o r . o p t u s . n e t / u b u n t u / I t i Viewing[SSL] <Mirrors - Ubuntu Wiki>|

Figura 2.12 - Alla pagina https://wiki.ubuntu.com/Mirrors?action=show elenco dei mirror Ubuntu.


Il gestore semigrafico dei pacchetti

disponibile un

disponibile per la console una pratica interfaccia semigrafica per il gestore di pacchetti, chiamata aptitude. La si avvia con il c o m a n d o sudo
aptitude.

L'aspetto del programma mostrato nell'immagine seguente (Figura 2.13). I pacchetti sono organizzati in sezioni e sottosezioni: per muoversi tra queste si usano i tasti freccia su e freccia g i , 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 pacchetti e con U, invece, si selezionano tutti i pacchetti di cui sono disponibili aggiornamenti.

Actions Undo Package Resolver Search Views Help C-T: Menu ?: Help q: Quit u: Update g: >!I/Remove Pkgs aptitude 6.4.9 || --- Installed Packages Not Installed Packages Revert options Obsolete and Locally Created Packages Virtual Packages Tasks

These packages are c u r r e n t l y i n s t a l l e d 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 a g g i o r n a m e n t o si preme g. A p t i t u d e dispone p o i di una serie di menu che consentono l'accesso ad alcune funzionalit avanzate nell'amministrazione dei pacchetti: questi menu sono raggiungibili con la combinazione di tasti Ctrl+T. C o m e esempio, ecco la procedura da seguire per installare l'editor emacs tramite aptitude: con i tasti freccia si entra nella sezione N o t Installed Packages, quindi si preme Invio, si apre la sottosezione e d i t o r s , p o i si entra in main. A questo p u n t o si seleziona la riga con la scritta emacs, si preme + e p o i g. Il pacchetto principale di emacs con tutte 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 compilazione di sorgenti, si usa il c o m a n d o dpkg seguito dal file d e b del pacchetto indicato per esteso e, se necessario, con il percorso c o m p l e t o per raggiungerlo.

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 t e m p o stesso, risolvere le dipendenze si p u usare il programma gdebi. D o p o averlo aggiunto
al s i s t e m a c o n s u d o a p t - g e t i n s t a l i g d e b i - c o r e , p e r i n s t a l l a r e u n p a c c h e t -

t o si utilizzer il c o m a n d o nel m o d o seguente:


sudo gdebi /tmp/unrar_l%3a3.7.8-l_i386.deb

Alcuni pacchetti d'uso comune Al di l d e l particolare utilizzo che si far della macchina, ci sono dei pacchetti non installati per default su Ubuntu Server che m o l t o c o m o d o avere a propria disposizione. L'utilizzo di un file manager p u rendere m o l t o pi rapide alcune operazioni di manutenzione, anche in un server: per la console disponibile l'ottimo M i d n i g h t Commander, contenuto nel pacchetto me. Una volta installato il pacchetto, il file manager si lancia con il c o m a n d o me. Questo gestore di file presenta la classica struttura a due pannelli, uno per la directory d'origine e l'altro per la directory di destinazione. Le operazioni sui file si c o m p i o n o p r e m e n d o 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 traduzione completa in lingua italiana dei messaggi e dell'interfaccia di molti dei principali programmi disponibili. Inoltre, installando il pacchetto manpages-it anche le pagine di manuale dei comandi saranno in italiano.

S. Gestire il s i s t e m a

Left

File

Command

Options
<-/

Riflhtx, Name /bin /boot -cdrom /dev /etc /home /initrd /lib /lost+found /media /mnt /proc /root /sbin /srv Size 4696 4696 11 13966 12288 4696 4696 4696 16384 4696 4696 6 4696 4696 4696 V>1 MTime Jun 16 18:69 " Jun 26 16:11 * Apr 28 68:34 Jun 2 7 16:24 Jun 27 16:25 Jun 2 4 13:23 Apr 22 19:48 Jun 17 68:55 Apr 28 68:34 Jun 27 16:24 Apr 15 07:53 Jun 27 16:24 Jun 4 16:55 Jun 26 11:21 Apr 22 19:48

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 2 1 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 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 partizioni


Nel capitolo iniziale si visto c o m e impostare le partizioni sul disco rigido, sfruttando al meglio l'ampio ventaglio di filesystem disponibili su Linux. D o p o aver installato Ubuntu Server, per, p u essere necessario aggiungere ulteriori partizioni o p p u r e modificare alcuni parametri di quelle esistenti. 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:
sudo nano /etc/fstab

La struttura del file /etc/fstab elementare: o g n i riga rappresenta un diverso dispositivo nel sistema; fanno eccezione le linee con all'inizio il carattere #, che costituiscono mere righe di c o m m e n t o .

GNU nano 2.0.7

File: /etc/fstab

Z /etc/fstab: static file system information. # <dump> <pass> # <file system> <mount point> <type> <options> 0 0 proc /proc proc defaults # /dev/sdal ext3 UUID=45ad37fa -386e-4ff0-be33-d4465e05c096 / relatime,erro$ # /dev/sda3 ext3 UUID=2Oe23alb-0clb-46ba-8cba-20eb80f5c5bf /home relatime $ # /dev/sda2 swap UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none /media/cdromO udf,iso9660 user,noauto,exec,utf8 0 /dev/scdO

Read 11 lines J Cut Text n Cur Pos UnCut Textfl To Spell

Ecco una linea di esempio di /etc/fstab:


/dev/scdO /media/cdromO udf,iso9660 user,noauto,exec,utf8 0 0

I parametri sono separati gli uni dagli altri per mezzo di spazi vuoti. Il primo parametro (/dev/scdo) indica il file di d i s p o s i t i v o cui la riga si riferisce, e in questo caso si tratta del lettore C D / D V D . Per un elenco dei principali file di dispositivo si veda la Tabella 2.2.

Un file di dispositivo un file che viene impiegato dal sistema per dialogare 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 i s i s t e m a l

Tabella 2.2 - I principali file di d i s p o s i t i v o File di d i s p o s i t i v o


/dev/sda

Dispositivo hardware Il primo hard disk presente nel sistema. La prima partizione di /dev/sda /dev/sda1, la seconda / d e v / s d a 2 e cos via Il secondo hard disk presente nel sistema. La

/dev/sdb

prima partizione di / d e v / s d b / d e v / s d b 1 , la seconda / d e v / s d b 2 e cos via Lettore C D / D V D Floppy disk Videocamere e w e b c a m

/dev/scdO /dev/fdO /dev/videoO

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 m o u n t per il file di dispositivo indicato: q u a n d o si vorr leggere il contenuto di un C D / D V D , quindi, questo sar disponibile nella directory /media/cdromo. Il terzo parametro rappresenta il filesystem utilizzato dal dispositivo. Nella riga di esempio sono presenti d u e filesystem separati da una virgola, udf e iso966o: verr richiamato quello effettivamente utilizzato sul supporto inserito nel lettore C D / D V D . Il parametro successivo precisa le opzioni di m o u n t per il dispositivo indicato. Nell'esempio, user consente a un utente normale di effettuare il mount, noauto indica che il dispositivo non deve essere m o n t a t o al b o o t della macchina, exec p e r m e t t e l'esecuzione di file binari nel dispositivo e utf8, infine, fa in m o d o che i caratteri Unicode a 16 bit in un CD vengano convertiti in caratteri UTF-8. Per un elenco esaustivo delle opzioni di m o u n t si pu leggere la man page del c o m a n d o mount.

Gli ultimi d u e parametri sono numerici. Il p r i m o di essi indica se di una d e terminata partizione si d e v e effettuare o m e n o il backup tramite il programma dump (solitamente il parametro ha valore o, cio backup disabilitato). Il s e c o n d o p a r a m e t r o , infine, stabilisce l'ordine con il q u a l e v e n g o n o controllate le partizione da fsck: si d o v r e b b e assegnare p e r la partizione di r o o t il valore 1, p e r le altre 2. Inserendo 0 c o m e valore d e l p a r a m e t r o , invece, la partizione non verr mai controllata al b o o 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 N o n s e m p r e possibile p r e v e d e r e , al m o m e n t o dell'installazione, il num e r o di partizioni necessarie p e r un server. Sovente, q u i n d i , si d e v e intervenire sulla tabella delle partizioni successivamente. Per fare q u e s t o si d i g i t i il c o m a n d o s e g u e n t e in console:
sudo c f d i s k / d e v / s d a

inserendo al p o s t o di /dev/sda il file di dispositivo d e l l ' h a r d disk da m o d i ficare, se diverso. C o m p a r i r una schermata simile a l l ' i m m a g i n e s e g u e n t e (Figura 2.16). L'interfaccia d e l p r o g r a m m a cfdisk di semplice utilizzo. C o n i tasti freccia su e f r e c c i a g i si sceglie la partizione su cui intervenire, c o n i tasti freccia sinistra e d e s t r a si indica l'operazione da c o m p i e r e e p r e m e n d o Invio si p r o c e d e con l'azione prescelta. Ecco le operazioni c h e si p o s s o n o effettuare. possibile creare una partizione (New), renderla avviabile ( B o o t a b l e ) , cancellarla ( D e l e t e ) o p p u r e indicare il t i p o d i filesystem presente in essa (Type). Infine si p u uscire dal p r o g r a m m a (Quit) o memorizzare i c a m b i a m e n t i nella tabella delle 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)

- Em
sda2 sda3

sees

Primary Primary Pri/Log

IiW SI H U CE

Linux swap / Solaris Linux ext3 Free Space

I b i ff! SM c Me
1003.49 50001.48 9014.91

IliftTOBitt^] [ Delete 1 [ Quit ] [ Type ]

[ Help [ Units

] ]

[Maximize] [ Write ]

[ Print

Toggle bootable flag of the current partition

Figura 2.16 - L'interfaccia di cfdisk. Da qui si p o s s o n o manipolare le partizioni sui disco.


I passaggi da compiere per aggiungere una nuova partizione sono d u n que i seguenti: 1. si deve raggiungere la riga con la scritta Free Space e selezionare il pulsante N e w ; 2. p o i si sceglie se creare una partizione primaria o logica con i rispettivi pulsanti, Primary e Logicai; 3. quindi si indicano le dimensioni della partizione in MB; 4. il t i p o di filesystem di default per la nuova partizione linux. Per indicarne un altro si seleziona il pulsante Type e, nell'elenco che appare, si digita il numero corrispondente al filesystem prescelto; 5. infine, si preme il pulsante W r i t e per salvare le modifiche alla tabella delle 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 d e l

filesystem scelto p e r la partizione. Questi c o m a n d i iniziano c o n mkfs. e t e r m i n a n o c o n il n o m e d e l filesystem cui si riferiscono: mkfs.ext3, mkfs.
r e i s e r f s , m k f s . x f s e COS v i a .

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 jfsutils mentre per mkfs.reiser richiesto il pacchetto reiser4progs.

Per creare un filesystem ext3 si esegua d u n q u e il c o m a n d o sudo

mkfs.

ext3, s e g u i t o d a l file d i dispositivo della partizione. Possono risultare utili alcune opzioni d i mkfs.ext3: - c consente d i controllare sulla partizione la presenza d i blocchi rovinati prima d i p r o c e d e r e alla creazione d e l filesystem, m e n t r e l ' o p z i o n e -m seguita dalla percentuale di blocchi che bisogna riservare sulla partizione all'utente root. Ecco d u n q u e il c o m a n d o p e r creare un filesystem ext3 sulla partizione / d e v / s d a , verificando che n o n ci siano blocchi rovinati e assegnando il 2 % d e l l o spazio sulla partizione a root:
sudo mkfs.ext3 -c -m 2 /dev/sda6

Identificare le partizioni con l'ULUO Se nel file / e t c / f s t a b d e l p r o p r i o sistema si osservano le righe riguardanti le partizioni sull'hard disk si p u notare c o m e , nel p r i m o p a r a m e t r o , al p o sto d e l file d i dispositivo v e n g a utilizzata la dicitura lunga sequenza d i caratteri. L'UUID (Universally U n i q u e IDentifier) un insieme di n u m e r i esadecimali che identifica in m o d o u n i v o c o una partizione su d i un s u p p o r t o . Si tratta della f o r m a d i notazione predefinita in U b u n t u Server e viene utilizzata, d u n q u e , nella p r o c e d u r a iniziale d i installazione p e r indicare in / e t c / f s t a b le partizioni sul disco. Una scelta simile p e r m e t t e all'amministratore d i sistema d i esser certo che una d e t e r m i n a t a riga in / e t c / f s t a b corrisponda s e m p r e a una specifica partizione: l'ULIID, infatti, un " m a r c h i o " che una
UUID=

seguita da una

B?iyT)i'it:ilLifcSiykpr

partizione si porta dietro anche q u a n d o cambia il file di dispositivo mediante 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 c o m a n d o voi_id nel m o d o seguente (al posto di /dev/sda1 va inserito il file di dispositivo di cui si vuole ottenere l'UUID):
sudo v o l _ i d -u /dev/sdal

In o u t p u t si otterr una riga corrispondente all'UUID d e l dispositivo, per


e s e m p i o 2 0e2 3 a l b - 0 c l b - 4 6 b a - 8 c b a - 2 0eb8 0 f 5 c 5 b f .

Per visualizzare, in un colpo solo, gli UUID di tutte le partizioni si pu usare il c o m a n d o sudo bikid. Il risultato in console sar simile al seguente:
/dev/sdal: UUID="45ad37fa-386e-4ff0-be33-d4465e05o096" TYPE="ext3" / d e v / s d a 2 : T Y P E = " s w a p " U U I D = " 0 7 5 2 3 73 6 - 8 e 3 2 - 4 3 7 8 - b b f f - 3 b c a f 4 d 5 7 8 9 0 " /dev/sda3: UUID="20e23alb-Oclb-46ba-8cba-20eb80f5c5bf" TYPE="ext3"

Per inserire un nuovo dispositivo in /etc/fstab indicandone l'UUID, quindi, baster mettere come primo parametro l'UUID invece del file di dispositivo attuale. Una riga come quella che segue:
/dev/sda2 none swap sw 0 0

diventer d u n q u e cos:
UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none swap sw 0 0

I volumi LVIVI Nel primo capitolo si visto come procedere per effettuare un'installazione sfruttando il sistema LVM per il partizionamento del disco.

A q u e s t o p u n t o possibile a p p r o f o n d i r e l ' a r g o m e n t o . Un sistema LVM c o m p o s t o da tre strati b e n distinti: V o l u m i fisici. Possono essere interi dischi o singole partizioni. Si creano con il c o m a n d o pvcreate; G r u p p i di v o l u m e . Sono contenitori per i volumi fisici e, a loro volta, v e n g o n o ripartiti in volumi logici. Si creano con il c o m a n d o vgcreate; V o l u m i logici. Si tratta di dispositivi gestibili c o m e normali partizioni. Si creano con il c o m a n d o vcreate. Per creare un sistema LVM sul p r o p r i o server, q u i n d i , richiesta una procedura c o m p o s i t a : bisogna inizializzare d e i v o l u m i fisici, p o i necessario racchiuderli in un g r u p p o di v o l u m e e, infine, si d e v e s u d d i v i d e r e il g r u p p o in diversi v o l u m i logici. Q u e s t i ultimi a n d r a n n o q u i n d i collegati a d e i punti di m o u n t in / e t c / f s t a b , c o m e si trattasse di partizioni canoniche. Ecco q u i n d i i passaggi da seguire per utilizzare un sistema LVM, passaggi che sono stati in precedenza nascosti dagli a u t o m a t i s m i d e l p r o g r a m m a di installazione di U b u n t u Server.

Se nella procedura di installazione non stata scelta una delle due opzioni per il partizionamento LVM, per gestire i volumi LVM sar necessario installare il pacchetto ivm2.

Innanzitutto, si d e v o n o creare con cfdisk le partizioni che a n d r a n n o a costituire i v o l u m i fisici LVM sul disco: si creino, per e s e m p i o , le partizioni /dev/sda1, /dev/sda2 e /dev/sda3. Poi bisogna creare i v o l u m i fisici m e d i a n t e i c o m a n d i seguenti:
sudo p v c r e a t e sudo p v c r e a t e sudo p v c r e a t e /dev/sdal /dev/sda2 /dev/sda3

Q u i n d i , si inseriscono le tre partizioni in un n u o v o g r u p p o di v o l u m e , chiam a t o s e m p l i c e m e n t e gruppo:


sudo v g c r e a t e g r u p p o / d e v / s d a l / d e v / s d a 2 /dev/sda3

Per a g g i u n g e r e una partizione a un g r u p p o gi esistente si usa invece il Comando vgextend:


sudo v g e x t e n d g r u p p o /dev/sda5

Ora n o n rimane c h e ripartire lo spazio d i s p o n i b i l e nel g r u p p o di v o l u m e c r e a n d o i necessari v o l u m i logici. Ecco c o m e p r o c e d e r e :


sudo l v c r e a t e -L 700 -n v o l i g r u p p o sudo l v c r e a t e -L 4G -n v o l 2 g r u p p o sudo l v c r e a t e -L 3G -n v o l 3 g r u p p o

La prima riga d i e s e m p i o crea nel g r u p p o gruppo un v o l u m e l o g i c o d i 7 0 0 MB (-L 700) c h i a m a t o voli (-n voli); la seconda crea un v o l u m e voi2 grand e 4 GB; la terza linea crea il v o l u m e voi3 di 3 GB. A q u e s t o p u n t o si d e v o n o a g g i u n g e r e i relativi filesystem ai v o l u m i logici. N e g l i e s e m p i che s e g u o n o viene utilizzato il filesystem Ext3:
sudo m k f s . e x t 3 sudo m k f s . e x t 3 sudo m k f s . e x t 3 /dev/gruppo/voll /dev/gruppo/vol2 /dev/gruppo/vol3

Infine, si inseriscono le linee a p p r o p r i a t e in / e t c / f s t a b , cos da legare i v o l u m i logici ai punti di m o u n t desiderati:


/ d e v / g r u p p o / v o l l /home ext3 d e f a u l t s 0 2 / d e v / g r u p p o / v o l 2 / v a r ext3 d e f a u l t s 0 2 / d e v / g r u p p o / v o l 3 / t m p ext3 d e f a u l t s 0 2

Per eliminare un v o l u m e l o g i c o si usa invece il c o m a n d o ivremove, in q u e sto m o d o :


sudo I v r e m o v e /dev/gruppo/vol3

Cambiare le dimensioni dei volumi LVIVI Ora che i v o l u m i logici s o n o stati c o r r e t t a m e n t e creati, possibile m o d i f i carne f a c i l m e n t e e r a p i d a m e n t e le d i m e n s i o n i . I c o m a n d i p e r a u m e n t a r e e ridurre le d i m e n s i o n i d e i v o l u m i logici sono, r i s p e t t i v a m e n t e , vextend
e lvreduce.

Se si ha la necessit di a u m e n t a r e le d i m e n s i o n i d i un v o l u m e l o g i c o (per e s e m p i o voli) bisogna controllare, innanzitutto, che nel g r u p p o sia pre-

sente dello spazio libero. Per fare questo si usa il c o m a n d o vgdispiay:


sudo vgdisplay

N e l l ' o u t p u t del c o m a n d o si deve cercare una riga che inizia con Free PE / Slze: il valore che segue nella linea indica lo spazio vuoto disponibile. Se non c' spazio nel g r u p p o (Free PE / Size 0 / 0) si possono ridurre le dimensioni di uno degli altri volumi logici. Digitando il c o m a n d o sudo vdispiay si o t t e n g o n o quindi informazioni dettagliate su tutti i volumi esistenti (Figura 2.17): le dimensioni di un volume sono contenute nella riga che inizia con LV SIZE (per esempio, LV SIZE 7 0 0 , 0 0 MB).

Sjale@pitagora:~$ sudo Ivdisplay 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 VG Name LV UUID LV Write Access LV Status # open LV Size Current LE /dev/gruppo/vol2 gruppo 00ra21-XIkY-Lufu-3Ip2-X3jK-YJuH-8Fockh read/write available 0 4,00 GB 1024

Ili:

Figura 2.17 - L'output del comando sudo Ivdisplay mostra informazioni su tutti i volumi' logici creati.
A questo punto, controllando lo spazio disponibile sul voi2 si pu scoprire che questo volume logico sovradimensionato (LV Size 4,00 GB nell'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 resize2fs /dev/gruppo/vol3 3G

quindi si ridimensiona il volume logico stesso:


s u d o l v r e d u c e -L 3G /dev/gruppo/vol2

Il c o m a n d o resize2fs

richiede che il filesystem da ridimensionare sia / ) , poi si

s m o n t a t o . Prima di dare il c o m a n d o , quindi, bisogna sincerarsi di non essere all'interno del p u n t o di m o u n t del v o l u m e logico (ed deve smontare il v o l u m e ( s u d o umount d m o u n t del v o l u m e / h o m e ) . /home, per e s e m p i o , se II p u n t o

Adesso il volume voi2 stato ridotto da 4 a 3 GB. Non rimane che aumentare lo spazio su voli. Per fare questo, al contrario che nel caso della riduzione dello spazio su un volume, prima si ridimensiona il volume logico e poi il filesystem relativo, cos:
s u d o l v e x t e n d -L + 1 G / d e v / g r u p p o / v o l l sudo resize2fs /dev/gruppo/voll

Con questi due comandi il GB di spazio che stato sottratto al volume


voi2 stato a g g i u n t o ( p a r a m e t r o -L +IG d i lvextend) al voli.

Negli esempi riportati si fatto uso del filesystem Ext3. Se invece si utilizza ReiserFS, al posto del c o m a n d o resize2fs bisogna impiegare resize_reiserf s. Per ridurre un volume se ne indicano le nuove dimensioni nei
p a r a m e t r 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 primo esempio le nuove dimensioni saranno di 3G (-s 3G), mentre nel secondo si dice a resize_reiserfs di togliere un GB dal volume (-s -IG). Per aumentare le dimensioni di un volume, quindi, sufficiente richiamare il c o m a n d o in questo m o d o :
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 c o m a n d o mdadm --monitor lanciato al b o o t e avvertir l'amministratore di eventuali guasti inviando apposite email. Per default queste email v e n g o n o spedite all'utente root sulla macchina locale. Per cambiare il destinatario si apra il file di configurazione / e t d m d a d m . c o n f con sudo nano /etc/mdadm/mdadm.conf e si modifichi la riga:
MAILADDR root

indicando al posto di root l'indirizzo email del destinatario prescelto.

# mdadm.conf # # Please refer to mdadm.conf(5) for information about t h 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 e x i s t i n g M arrays D # 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 modificando mdadm. conf.
Fatto q u e s t o si d e v e riavviare il d e m o n e mdadm c o n il c o m a n d o che segue:
sudo /etc/init.d/mdadm restart

Per c o n s e n t i r e a mdadm l'invio d e l l e e m a i l richiesta la presenza di un mail server sulla m a c c h i n a . N e l C a p i t o l o 11 v e r r a n n o f o r n i t e istruzioni p e r l'installazione e la c o n f i g u r a z i o n e d e l 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 m d a d m . 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 l a n c i a il c o m a n d o c o s : sudo mdadm --query --detail <raid devices per

C o m e <raid

d e v i c e > si i n s e r i s c e 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 ,

e s e m p i o / d e v / m d 1 (Figura 2.19). Un altro c o m a n d o utile p e r c o n o s c e r e lo Stato d e l R A I D c a t /proc/mdstat.

ale@pitagora:-$ /dev/mdl: Version Creation Time Raid Level Array Size Used Dev Size Raid Devices Total Devices Preferred Minor Persistence Update Time State Active Devices Working Devices Failed Devices Spare Devices

sudo mdadm --query --detail /dev/mdl : : : : : : : : : 00.90.03 Wed Sep 24 18:53:49 2008 raidl 9767424 (9.31 GiB 10.00 GB) 9767424 (9.31 GiB 10.00 GB) 2 1 1 Superblock is persistent Wed Sep 24 18:59:53 2008 clean, degraded 1 1 0
0

UUID : 8bl8290c:0ab544df:58d6250f:b8f79aaa Events : 0.8 Number 0 Major 8 Minor 18 RaidDevice State 0 active sync

(local to host pitagora)

/dev/sdb2

1 Figura 2.19-Con il com su un dispositivo RAID.

1M 3 9

-query -detail si ot # 1 1 preziose

informazioni

'

1 i' :e

Q u a n d o uno dei dischi smette di funzionare, un sistema in RAID 1 come quello presentato nel capitolo precedente eliminer l'hard disk rotto dai dispositivi RAID attivi, in m o d o tale da permettere alla macchina il normale svolgimento delle attivit grazie al disco o ai dischi rimanenti. Nel m o m e n t o in cui un disco si rompe, prima di poterlo sostituire si devono rimuovere dai dispositivi RAID le partizioni contenute nel disco difettoso. Il c o m a n d o da usare il seguente:
sudo mdadm --remove <raid device> partizione

Ecco un paio di esempi:


sudo mdadm --remove /dev/mdO sudo mdadm --remove /dev/mdl /dev/sdal /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 creare una tabella delle partizioni sul nuovo disco che corrisponda a quella presente negli altri hard disk che c o m p o n g o n o il RAID. Un m o d o rapido per riversare la tabella da un disco attivo nel RAID (/ dev/sda) al disco appena inserito (/dev/sdb) quello utilizzare il c o m a n d o seguente:
s u d o sh -o " s f d i s k -d / d e v / s d a | 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 comandi da lanciare per aggiungere / d e v / s d b al RAID saranno i seguenti:
sudo mdadm --add /dev/mdO sudo mdadm --add /dev/mdl sudo mdadm --add /dev/md2 /dev/sdbl /dev/sdb2 /dev/sdb3

A questo p u n t o verr avviata la sincronizzazione d e i dati e il nuovo hard disk far attivamente parte del RAID. E anche possibile che compaiano errori su un disco senza che questo smetta del t u t t o di funzionare. Per segnalare al sistema il malfunzionament o di una partizione si utilizza l'opzione --faii di mdadm, cos:
sudo mdadm --fail /dev/mdO /dev/sdal

Segnalata la partizione guasta, sar p o i possibile rimuoverla dal dispositivo RAID c o n mdadm --remove.

Aggiungere un dispositiva RAID Per creare un nuovo dispositivo 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 i p o RAID1 (--level l) e d c o m p o s t o da d u e dischi (--raid-devices=2). La prima partizione che lo c o m p o n e / d e v / s d b 2 mentre l'altra verr indicata successivamente (missing). Per aggiungere la seconda partizione del dispositivo / d e v / m d l basta p o i richiamare mdadm con l'opzione --add:
sudo mdadm --add /dev/mdl /dev/sdc2

La creazione di un filesystem sulle partizioni che c o m p o n g o n o il device RAID avviene utilizzando come riferimento il file di dispositivo 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 b o o t II dispositivo 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 comand o pvcreate seguito dai file di dispositivo RAID da usare:
sudo pvcreate /dev/mdO /dev/mdl

Fatto questo, la configurazione dei relativi volumi logici LVM avverr nei m o d i indicati nel paragrafo I v o l u m i 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 " g r a n d e manutenzione": installare programmi, aggiungere partizioni e amministrare gli utenti sono tutte operazioni fondamentali ma che spesso v e n g o n o svolte saltuariamente, dal m o m e n t o che si concentrano d o p o le fasi di progettazione e installazione di un server. Una volta che l'impalcatura di una macchina stata messa a punto, d u n que, l'amministrazione quotidiana di un server richiede una notevole dimestichezza 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 d e l re degli 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 eseguire in m o d o 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 compatibilit di questa con la shell standard su Unix, B o u r n e Shell appunto. Per richiamare Bash non necessaria alcuna operazione: a meno di non modificare la configurazione di default, questa shell verr avviata tutte le volte che si effettuer il login nel sistema con un utente. Primo contatta La shell Bash quindi il primo punto di contatto tra l'utente e il sistema. Per l'amministratore, inoltre, si tratta di un vero e proprio ambiente privilegiato in cui controllare una macchina, anche a distanza, e impartire comandi su di essa.

ale@pitagora: man bash ale@pitagora:-$ df blocchi di File system 19380676 /dev/sdal 773168 varrun 773168 varlock 773168 udev 773168 devshm 773168 Irm eneric/volatile 48062468 /dev/sda3 19380676 gvfs-fuse-daemon alegpitagora: -$ 1

1K Usati Disponiti. Uso% Montato su 4474280 13929648 25% / 164 773004 1% /var/run 0 773168 0% /var/lock 52 773116 1% /dev 773156 1% /dev/shm 12 6% /lib/modules/2.6.2' 39760 733408 29129300 4474280 16491692 13929648 64% /home 25% /home/ale/.gvfs

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 sintassi derivata dal linguaggio C (da cui il nome). Chi volesse far pratica con shell diverse dalla classica Bash pu trovare i pacchetti di tutte queste shell alternative nei repository di Ubuntu.

C o m e si accennato, la shell p e r m e t t e di organizzare delle sequenze di istruzioni in programmi veri e propri. Un c o m p i t o basilare per l'amministratore quello di effettuare copie di riserva delle directory di sistema e dei file degli utenti: ecco d u n q u e 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 c o m a n d o 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:
#!/bin/bash # semplice script di backup G I O R N O = $ ( d a t e +%F) NOME=backup-$GIORNO.tar.gz D I R S = " / e t c /var" tar cvfz $NOME $DIRS

GNU nano 2."!7 #!/bin/bash # semplice script di backup GI0RN0=$(date +%F) N0ME=backup-$GI0RN0.tar.gz DIRECTORY="/etc /var" tar cvfz $N0ME $DIRECTORY 1

File: backup

f?odificato"~1

Figura 3.2 - Per creare uno script shell compongono lo script.

basta

aprire un editor e inserire le righe che

La prima riga dello script indica quale shell deve essere richiamata, al m o m e n t o dell'esecuzione, per interpretare il contenuto dello script. I ca-

ratteri ># sono quindi seguiti dal percorso c o m p l e t o della shell, in questo Caso /bin/bash. Nella seconda riga il carattere iniziale #, a indicare che la parte seguente della riga un c o m m e n t o e non va d u n q u e interpretata dalla shell: nell'esempio il c o m m e n t o descrive succintamente lo scopo dello script. La riga successiva mostra, in pochi caratteri, la grande potenza e duttilit della shell.
GIORNO

una variabile e a essa viene assegnato (=) il risultato

del c o m a n d o date +%F: un c o m a n d o circondato dalla sequenza di caratteri $( e ), infatti, viene eseguito dalla shell e al suo posto nella riga che lo richiama inserito l'output del c o m a n d o stesso. Seguendo l'esempio riportato, il c o m a n d o date +%F avr come risultato la data corrente mostrata nel f o r m a t o " a n n o - m e s e - g i o r n o " (2008-7-31, per esempio); quindi, al m o m e n t o dell'esecuzione dello script, alla variabile
GIORNO

sar assegnato c o m e valore una stringa che rappresenta la data

corrente. Anche nella quarta riga viene assegnato un valore a una variabile. In questo caso, possibile scoprire come sia semplice concatenare delle stringhe in uno script: alla variabile riabile
GIORNO NOME,

infatti, viene assegnata come valore


NOME,

la stringa formata dalla sequenza di caratteri backup-, dal valore della vae da .tar.gz. Il valore c o m p l e t o della variabile dunque, sar qualcosa come backup-2008-07-31 .tar.gz. C o m e si pu notare, ci si riferisce al valore di una variabile facendo precedere questa dal carattere $; variabile
GIORNO. DIRECTORY, $GIORNO,

quindi, rappresenta il valore della il cui valore non altro

La quinta riga contiene la terza variabile,

che l'elenco delle directory delle quali si desidera effettuare una copia di riserva. Nell'esempio v e n g o n o inserite in questa variabile le cartelle di sistema /etc e /var; la stringa risultante va inserita tra una coppia di d o p p i apici (carattere ") d a t o che presenta al suo i n t e m o degli spazi. L'ultima riga dello script contiene l'effettivo c o m a n d o da eseguire: tar il classico programma di archiviazione Unix ed installato per default su Ubuntu Server. In questo caso, il suo c o m p i t o quello di creare un file compresso che abbia come n o m e il valore della variabile contenuto il valore della variabile
DIRS. NOME

e come

Q u i n d i , q u a n d o lo script verr e s e g u i t o sar creato un file chiamato, p e r e s e m p i o , b a c k u p - 2 0 0 8 - 0 7 - 3 1 .tar.gz e q u e s t o conterr in f o r m a compressa le directory / e t c e /var.

La sintassi del comando tar utilizzato nello script di esempio piuttosto articolata. La sequenza cvfz indica una serie di quattro parametri. Il primo parametro, c, stabilisce che si vuole creare un archivio, mentre v indica che si vuole visualizzare in o u t p u t l'elenco d e i file inseriti nel file risultante. Poi f dichiara che si intende usare un file per memorizzare l'archivio e, infine, z stabilisce che l'archivio stesso d e b b a essere compresso con il sistema di compressione gzip.

Eseguire una script Conclusa la stesura e l'analisi d e l l o script d i e s e m p i o , n o n rimane che salvare il file e uscire d a l l ' e d i t o r nano. O r a bisogna rendere eseguibile lo script con il c o m a n d o s e g u e n t e :
c h m o d +x b a c k u p

Poi consigliabile copiare lo script in una d i r e c t o r y a scelta del e s e m p i o in / u s r / l o c a l / b i n :


sudo c p b a c k u p /usr/local/bin

PATH,

per

In questo m o d o lo script backup sar richiamabile qualunque sia la directory corrente, proprio come se si trattasse di una comune applicazione.

Il PATH la lista delle directory fra le quali v e n g o n o cercati i c o m a n d i da eseguire. Se un p r o g r a m m a o uno script presente in una directory del PATH, d u n q u e , sar possibile eseguirlo inserendone solo il n o m e , altrimenti sar necessario indicarne il percorso c o m p l e t o . Per conoscere il PATH attualm e n t e in uso s legga la variabile PATH con il c o m a n d o echo $PATH.

Adesso ci si sposti nella cartella in cui si vuole creare il file di backup, per esempio /var/backup: ed /var/backup. Quindi, si lanci lo script d i g i t a n d o semplicemente sudo backup e p r e m e n d o Invio. L'utilizzo di sudo necessario perch si andranno a utilizzare delle directory di sistema nelle quali, a volte, i file non sono leggibili dagli utenti normali. Il risultato a monitor sar simile a quanto visibile nell'immagine seguente (Figura 3.4).

/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/fontconfg/945677eb7aeaf62fld50efc3fb3ec7d8-x86. cache-2 /var/cache/fontconfg/fe547fea3a41b43a38975d292a2bl9c7-x86. cache-2 /var/cache/fontconfg/7ef2298fde41cc6eeb7af42e48b7d293-x86. cache-2 /var/cache/fontconfg/4794a0821666d79190d59a36cb4f44b5-x86.cache-2 /var/cache/fontconfg/3830d5c3ddfd5cd38a049b759396e72e-x86. cache-2 /var/cache/fontconfig/del56ccd2eddbdcl9d37a45b8b2aac9c-x86. cache-2 /var/cache/fontconfg/d82eb4fd963d448e2fcb7d7b793b5df3-x86. cache-2 /Var/cache/fontconfig/el3b20fdb08344e0e664864cc2ede53d-x86. cache-2 /Var/cache/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-x86. cache-2 /var/cache/fontconfg/0f34bcd4b6ee430af32735b75db7f02b-x86.cache-2 /var/cache/fontconfig/a755afe4a08bf5b97852ceb740Ob47bc-x86.cache-2 /var/cache/fontconfig/c855463f699352C367813e37f3f70ea7-x86. cache-2 /var/cache/fontconfg/6333f38776742dl8e214673cd2c24e34-x86. cache-2 /Var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86.cache-2 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86.cache-2 /var/cache/fontconfg/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 dello script, nella directory corrente sar presente il file con la copia di backup delle directory / e t c e /var. Q u a n d o si vorr scompattare l'archivio, quindi, baster entrare nella directory radice con ed / e lanciare il c o m a n d o tar xvfz seguito dal percorso c o m p l e t o dell'archivio, come in questo esempio:
tar xvfz /var/backup/backup-2008-07-31.tar.gz

Il costrutta condizionale if Nella creazione degli script possibile avvalersi dei tipici costrutti presenti nei linguaggi di programmazione. Ecco la struttura del costrutto condizionale i f :
if [ c o n d i z i o n e ] then istruzioni fi

Si tratta della struttura pi semplice per tale costrutto, in cui, all'avverarsi di una singola condizione, v e n g o n o eseguite delle istruzioni. La struttura p u essere espansa a d o t t a n d o le f o r m e elif ("altrimenti, se la condizione seguente vera...") e d else ("altrimenti esegui l'istruzione"), cos:
if [ c o n d i z i o n e ] then istruzioni elif [condizione2] then istruzioni2 else istruzioni3 fi

Le condizioni presenti nelle righe di if e d elif verranno verificate in successione 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 " $ F I L E " ] then e c h o "Il file $ F I L E

esiste"

else e c h o "Il file $ F I L E n o n e s i s t e " fi

La seconda riga dell'esempio assegna alla variabile

FILE

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/profile. I valori degli argomenti successivi sono contenuti nelle variabili $2, $3, $4 e cos via, mentre la variabile $ raccoglie l'insieme di tutti gli argomenti for@ niti richiamando lo script. Infine, il nome dello script contenuto in $0 e la variabile $# indica il numero di argomenti passati sulla linea di comando. La riga successiva dello script abbina il costrutto if a un operatore condizionale, -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, d a t o che /etc/profile un file standard su tutte le macchine Linux. Nella Tabella 3.1 v e n g o n o elencati i pi importanti operatori che possibile applicare sui file, sui valori numerici e sulle stringhe. Tabella 3.1 - I principali o p e r a t o r i applicabili a file, valori numerici e stringhe. Operatore -e -f
-d -X

Si applica su File File File File Numeri Numeri Numeri Numeri Stringhe Stringhe Stringhe Se il file esiste

vero Se si tratta di un file regolare, non di un dispositivo 0 di una directory Se si tratta di una directory Se il file ha i permessi di esecuzione Se i due valori confrontati sono uguali Se i due valori confrontati sono diversi Se il primo valore minore del secondo Se il primo valore maggiore del secondo Se le d u e stringhe sono uguali Se le due stringhe sono diverse Se la stringa nulla

-eq -ne -It

-gt
= =

!=

-z

Se q u i n d i il file indicato nel p r i m o a r g o m e n t o esiste, il then alla riga successiva fa visualizzare in o u t p u t dal c o m a n d o e c h o la scritta 11 file
$FILE

esi-

ste, sostituendo $ F I L E con l'effettivo file indicato sulla linea di c o m a n d o .

Se il file non presente nel sistema, invece, si salta all'else e in tal caso la stringa che viene mostrata il file
$FILE

n o n e s i s t e . In Figura 3.5 lo

script viene richiamato pi v o l t e utilizzando file differenti.

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 ale@pitagora:|

Figura 3.5 - Lo script controlla viene eseguito pi volte, inserendo come parametro file diversi.
Arrivati a q u e s t o p u n t o , oltre al c o s t r u t t o if si s o n o i n t r o d o t t i e l e m e n t i f o n d a m e n t a l i nella p r o g r a m m a z i o n e in Bash, quali la g e s t i o n e d e g l i argom e n t i e l'utilizzo d e g l i o p e r a t o r i .

Se non si inserisce uno script in una directory del PATH, per richiamare 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 degli script sono quelli di loop: for, whiie e untii. Ecco innanzitutto la struttura d e l ciclo for:
for V A R I A B I L E i n L I S T A do istruzioni done
VARIABILE

il nome della variabile il cui valore corrisponder via via a tutti


LISTA.

gli elementi presenti nella

Per ogni elemento estratto dalla

LISTA,

quindi, verranno eseguite le istruzioni che seguono il do e precedono il done. Al termine degli elementi si uscir dal ciclo. Indicata la struttura, quello che segue un esempio di utilizzo del ciclo for:
#!/bin/bash for I i n / h o m e / a l e / D o c u m e n t i / * do cp $1 $ 1 . b a k done

Nella seconda riga si indica, all'interno di un ciclo for, che i nomi di tutti i file contenuti nella 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 d e v o n o diventare, uno d o p o 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 c o m a n d o di copia cp. Se nella directory ci sono i file t e s i l .tex, tesi2.tex e tesi3.tex, d u n q u e , il ciclo creer i file di backup t e s i l .tex.bak, tesi2.tex.bak e tesi3.tex.bak. Il costrutto whiie ha una struttura m o l t o semplice:
while do done [condizione] istruzioni

Si tratta di un p e r i o d o le cui istruzioni v e n g o n o eseguite finch la condizione indicata vera. Segue un esempio esplicativo:
#!/bin/bash
NUM=10

while do

[ $NUM - n e 0 ]

echo $NUM NUM=$(( $NUM-1 )) done Nella seconda riga viene assegnato alla variabile NUM il valore 10. Il costrutto whiie inizia dalla riga successiva: le istruzioni racchiuse tra do e done v e n g o n o eseguite finch la variabile NUM ha un valore diverso da 0. La riga 5 c o n t i e n e l'istruzione per mostrare in o u t p u t il valore corrente della variabile NUM, m e n t r e la riga successiva mostra l'utilizzo delle espressioni a r i t m e t i c h e nella shell. Nella p e n u l t i m a riga, infatti, alla variabile NUM viene assegnato il valore della variabile stessa m e n o 1. L'operazione aritmetica va indicata inserendola tra i g r u p p i di caratteri $ ( ( e ) ). Il risultato in o u t p u t di q u e s t o script d ' e s e m p i o visibile n e l l ' i m m a g i n e s e g u e n t e (Figura 3.6).

ale@pitagora:-$ ./prova2 10 9
8 6

7 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 p e r i o d o whiie appena trattato: se le istruzioni presenti in whiie v e n g o n o eseguite finch la condizione vera, le istruzioni d e l costrutto untii v e n g o n o invece eseguite finch la condizione risulta falsa. Ecco un esempio simile al precedente, ma scritto per sfruttare il p e r i o d o untii:
#!/bin/bash NUM=1 untii [ $NUM -eq 10000 ] do echo $NUM N U M = $ ( ( $ N U M * 1 0 )) done

In questo caso viene assegnato a NUM il valore 1 e il ciclo untii esegue le istruzioni in esso contenute fino a q u a n d o la variabile non uguale a 10000. L'operazione aritmetica, in questo esempio, moltiplica ogni volta
NUM

per 10.

Il costrutto condizionale Case L'ultimo costrutto che viene q u i presentato case, che consente di semplificare complessi periodi if rendendoli di pi facile lettura. Eccone la struttura:
case "$VARIABILE" i n condizionel) istruzionil condizione2) istruzioni2 condizione3) istruzioni3 esac

C o m e si p u vedere, il costrutto case prende in considerazione una VARIABILE

e presenta una serie di blocchi di istruzioni che corrispondono ai

diversi valori che p u assumere la variabile stessa. L'utilizzo ideale di case nella gestione d e i parametri passati da riga di c o m a n d o o dei valori inseriti direttamente con la tastiera durante l'esecuzione di uno script.

Ecco un esempio:
#!/bin/bash echo "Scrivi uno oppure due e premi read testo case "$testo" uno) in echo due) e c h o " H a i s c r i t t o d u e !"
*)

Invio."

" H a i s c r i t t o u n o !"

echo "Non hai scritto n uno n esac

due..."

La prima riga interessante di questo script la terza: read un c o m a n d o Bash interno che legge l'input dalla tastiera e memorizza in una stringa, in questo caso testo, i tasti digitati fino 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, quindi, il c o m a n d o echo mostra una riga di o u t p u t che informa l'utente sul valore inserito. L'ultima condizione, indicata c o m e * ) , viene selezionata se tutte le precedenti condizioni risultano false: anche in questo caso echo visualizza un'apposita riga nel terminale. Nell'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 possibile utilizzare p e r costruire script pi o m e n o c o m plessi p o s s o n o essere d i g i t a t e d i r e t t a m e n t e nel t e r m i n a l e . C e r t a m e n t e , scrivere o g n i volta intere sequenze d i c o m a n d i e p r o g r a m m i p u risultare snervante: gli alias e le funzioni della shell, q u i n d i , si situano a met strada tra la semplice e diretta d i g i t a z i o n e di c o m a n d i e la laboriosa creazione di script. Prima di presentare la sintassi d i alias e funzioni, necessario stabilire se si desidera che q u e s t e siano utilizzabili da un unico u t e n t e o d a l l ' i n t e r o sistema. Se alias e funzioni si inseriscono nel file .bashrc o .profile della H O M E di un utente, infatti, essi saranno d i s p o n i b i l i solo p e r quel d e t e r m i n a t o utente. Se si inseriscono in / e t c / p r o f i l e o in / e t c / b a s h . b a s h r c , invece, gli alias e le funzioni che si creeranno p o t r a n n o essere utilizzati da t u t t i gli utenti nel sistema.

I file .bashrc e /etc/bash.bashrc v e n g o n o letti all'avvio delle shell interattive non di login, mentre i file .profile e /etc/profile v e n g o n o letti q u a n d o si apre una shell di login. Q u a n d o si effettua il login di un utente viene richiamata, appunto, una shell di login, mentre q u a n d o si lancia un terminale come iconsole o Gnome Terminal si avvia una shell interattiva non di login.

N e g l i e s e m p i che s e g u o n o si scelto di intervenire sulla configurazione di sistema, in m o d o tale da creare alias e funzioni per t u t t i gli utenti. D a t o c h e in U b u n t u , q u a n d o viene l e t t o il file / e t c / p r o f i l e , viene c o m u n q u e processato anche il c o n t e n u t o d i / e t c / b a s h . b a s h r c , si andr a m o d i f i care d i r e t t a m e n t e /etc/bash.bashrc: in q u e s t o m o d o , saranno d i s p o n i b i l i gli stessi alias e le stesse funzioni sia q u a n d o si avvier una shell di login sia q u a n d o si lancer una shell interattiva n o n di login. Si apra d u n q u e c o n l ' e d i t o r da r o o t il file / e t c / b a s h . b a s h r c m e d i a n t e il
C o m a n d o sudo n a n o /etc/bash.bashrc.

Si pu iniziare inserendo, alla fine del file, alcuni alias utili per semplificare la vita all'amministratore di sistema:
alias v=less a l i a s . . = " c d .." a l i a s b y e = " s u d o s h u t d o w n -r n o w " 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 = " l s -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 j Esci SI Salva gg Inserisci | Pag Prec. E ^ Taglia Q Qy Giustifica^ Cerca fQ Pag Succ. | Incolla Q Q Posizione B Ortografia

Figura 3.8 - Nel file /etc/bash.bashrc possibile inserire degli alias, cio delle scorciatoie per i comandi pi usati.
Un alias non altro che una parola che viene utilizzata per sostituire una stringa, solitamente un c o m a n d o usato di frequente o che richieda lunghe digitazioni sulla tastiera. Un alias, per essere "espanso" nella stringa che sostituisce, va digitato come parola iniziale di un c o m a n d o durante l'uso interattivo della shell. Creare degli alias, quindi, significa creare delle scorciatoie. La sintassi di un alias la seguente:
alias PAROLA=STRINGA

Il primo 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-

d o 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 d o p p i la stringa q u a n d o questa contiene degli spazi. In questo caso, q u a n d o si scriver . . il sistema lancer il c o m a n d o ed ... Gli ultimi d u e alias p e r m e t t o n o , r i s p e t t i v a m e n t e , di riavviare e s p e g n e re la macchina d i g i t a n d o s e m p l i c e m e n t e bye e byebye: un bel risparmio di t e m p o rispetto ai lunghi c o m a n d i sudo shutdown -r now e sudo shutdown -h now.

Per visualizzare l'elenco degli alias attivi basta eseguire nel terminale il c o m a n d o alias senza alcun argomento. L'output del c o m a n d o sar simile a quanto visibile nell'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 now 1 alias c='clear' alias cd+='mount /media/cdrom ; ed /media/cdrom' alias cd-='umount /media/cdrom ; eject' alias cdl2='hdparm -E 12 /dev/hdc 1 alias cd24='hdparm -E 24 /dev/hdc' alias cerca='find . -type f -printO | xargs -0 grep' alias em='emacclient -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 c o m o d i , ma non consentono di gestire gli argomenti nei comandi. Per esempio, non possibile creare un alias che possa eseguire il c o m a n d o is directory | less, p e r m e t t e n d o di cambiare la directory da visualizzare tramite un argomento.

Q u a n d o necessario manipolare degli argomenti si d e v o n o creare delle funzioni, che in Bash hanno la seguente sintassi:
function nome { istruzioni

Ecco d u n q u e una funzione di esempio che richiama il c o m a n d o is directory | less:

function lless { ls $1 | l e s s

La funzione ha come nome H e s s e contiene il semplice c o m a n d o is $1 | less. Durante l'esecuzione della funzione i caratteri $1 saranno sostituiti dal primo a r g o m e n t o fornito alla funzione stessa. Quindi, se nel terminale si lancia lless /home/aie/immagini, il c o m a n d o che il sistema eseguir
| less. S a r a ls / h o m e / a l e / I m m a g i n i

Le funzioni, per, non sono semplicemente degli alias con in pi la gestione degli argomenti. Una funzione, infatti, p u 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 m o l t o semplici, per, una sintassi alternativa pi pratica la seguente:
nome () { i s t r u z i o n e l ; istruzione2 ; }

Grazie a tale sintassi possibile scrivere una funzione utilizzando una singola riga: le istruzioni vanno separate dal carattere , e al termine dell'ultima istruzione va necessariamente inserito un carattere -, finale. Ecco d u n q u e la funzione d ' e s e m p i o in versione " r i d o t t a " :
lless () { ls $1 I less ; }

Nell'immagine seguente (Figura 3.10) viene mostrata la sezione di un file /etc/bash.bashrc d ' e s e m p i o dedicata alle funzioni.

GNU nano 2.0.7

File: /etc/bash,bashrc

# funzioni a p t u p O { 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 S Esci :
:

^ B

Salva Q Inserisci | P a g P r e c . | Taglia B ^ m Pao Succ. E B] Incolla Giustifica ( Cerca IKiUbP

Q E

Posizione Ortografie

WmSmmmfmiemst L'editar vi

Nelle pagine precedenti, q u a n d o stato necessario richiamare un editor, si scelto di utilizzare nano. Questo editor ha l'indubbio pregio di essere m o l t o semplice da usare, ma possiede un parco di funzionalit limitato: si tratta di un difetto rilevante, dato che l'editor per l'amministratore uno dei principali strumenti per gestire una macchina. Per i compiti di amministrazione pi ripetitivi o di maggiore complessit, quindi, necessario servirsi di un editor pi avanzato c o m e vi. Questo l'editor Unix standard e lo si trova installato su qualsiasi macchina, qualunque sia il dialetto Unix adottato. Se necessario effettuare degli interventi su di un sistema Unix o Linux, quindi, si pu essere ragionevolmente 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 compatibile 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 batti batti batti batti Aiuta i bambini poveri dell'Uganda! per informazioni help iccf<Invio> q<Invio> help<Invio> o <F1> help version7<Invio> per uscire per aiuto online 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 compiere, quindi, scegliere un pacchetto contenente una versione di Vim completa. Se sulla propria macchina non si intende utilizzare alcun ambiente grafico, si pu installare il pacchetto vim:
sudo apt-get instali vim

Questo pacchetto fornisce un eseguibile di Vim con tutte le funzionalit estese compilate, ma privo di interfaccia grafica. Anche il pacchetto vimnox include una versione dell'editor puramente testuale ma, a differenza del precedente, a g g i u n g e il supporto per la creazione di script in numerosi linguaggi di programmazione, tra cui Perl e Python. In caso di utilizzo dell'ambiente grafico G n o m e , invece, il pacchetto vimg n o m e fornisce t u t t o ci che serve per utilizzare questo austero editor mediante una gradevole interfaccia grafica. Scelta la versione di Vim che pi si gradisce, consigliabile installare anche 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 seconda 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 evidenziati i tasti che permettono di attivarle. Per orientarsi, per, bene sapere che le due modalit pi utilizzate sono senza d u b b i o 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 selezionata per default quando si avvia l'editor. Tabella 3.2 - Le modalit d i Vim. Modalit
Normal

Tasto Esc

Funzione Consente di eseguire i comandi dell'editor: cancellare una riga, modificare una parola ecc. Entrando in questa modalit il testo che

Insert

viene digitato automaticamente inserito nel file corrente La modalit visuale permette di selezio-

Visual

V,

nare un'area del testo e di eseguire un comando sull'area selezionata Seleziona un'area del testo. Quando si selezionata viene cancellata e si entra in Modalit Insert In questa modalit si p u inserire una riga di testo nella parte in basso della finestra. Viene usata da diversi comandi, che la attivano Consente di digitare linee di comandi Ex

gh in Modalit
Select

Normal, Ctrl+G digitano dei caratteri stampabili, l'area in Modalit Visual

Command

Line

/, ?, !
Q

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 collegamento al programma vim. L'editor dispone di un c o m o d o help in linea, indispensabile almeno nei primi t e m p i per non perdersi tra comandi, modalit e opzioni avanzate: lo si visualizza a schermo p r e m e n d o F1 o d i g i t a n d o :heip e b a t t e n d o Invio.

Nei paragrafi che seguono, quindi, si presenteranno i principali comandi per muoversi all'interno di un file e modificarne 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 p e r m e t t o n o di muoversi agevolmente all'interno di un file senza dover spostare le mani dalla parte della tastiera impiegata per la digitazione d e l testo. Di contro, i tasti freccia consentono di muovere il cursore senza dover abbandonare la modalit insert: sta al singolo utente, quindi, individuare i tasti di spostamento pi pratici. Per spostarsi da una parola all'altra si p r e m o n o 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 p o i il tasto G (il tasto G, da solo, fa raggiungere l'ultima riga del file o buffer corrente). Per esempio, d i g i t a n d o SG il cursore si sposter alla riga 5 del file. Molti comandi di V i m accettano un simile prefisso numerico. N o n fanno eccezione gli altri comandi di spostamento visti finora: d i g i t a n d o 4w, per esempio, ci si sposter in avanti di 4 parole, mentre p r e m e n d o o j il cursore si muover di 10 righe verso il basso. Altri tasti di spostamento fondamentali sono o, $ e A . Il primo 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 primo 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 corrente, 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 c o m a n d o x n o n altro che una scorciatoia p e r digitare il c o m a n d o c o m p o s t o di che, per l ' a p p u n t o , cancella il carattere posto s o t t o il cursore.

Jor example, there are many other ways to delete pieces of text. few often used ones: x X D dw db diw daw dG dgg delete delete delete delete delete delete delete delete delete character under the cursor (short for "dl") character before the cursor (short for "dh") from cursor to end of line (short for "d$") from cursor to next start of word from cursor to previous start of word word under the cursor (excluding white space) word under the cursor (including white space) until the end of the file until the start of the file

Here are a

If you use "c" instead of "d" they become change commands. yank the text. And so forth. |usr 04.txt [Aiuto] [RO] |[Senza nome]

And with "y" you

478,1 0,0-1

95%

Figura 3.13 - L'help in linea mostra alcuni dei comandi che possibile a partire dal comando d.

"costruire"

Grazie al c o m a n d o d possibile costruire comandi articolati a p p o n e n d o 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 p u far facilmente comprendere t u t t o il potenziale nascosto nei comandi di Vim: si tratta di veri e propri " m a t t o n cini" che, o p p o r t u n a m e n t e combinati, consentono di intervenire sul testo in maniera rapida ed estremamente precisa. Il c o m a n d o c (change) simile a d ma, d o p o l'operazione di cancellazione, fa entrare direttamente in modalit insert. Digitando cw, quindi, verr eliminata 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 c o m a n d o 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 c o m a n d o di copia, come d e c, seguito da un carattere di m o v i m e n t o e pu essere preceduto da un prefisso numerico. Con yy, d u n q u e , 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 l o c c o a p p u n t i " . V e n g o n o usati per registrare e richiamare r a p i d a m e n t e delle sequenze di caratteri. Servono anche per memorizzare i dati cancellati dal c o m a n d o d o salvati dal c o m a n d o y.

Per operazioni di copia pi complesse ci si p u 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 p u n t o desiderato.

Intervenire sui file Per salvare le m o d i f i c h e al file corrente si utilizza :w. Se il c o m a n d o seg u i t o d a l n o m e d i un file, il t e s t o viene m e m o r i z z a t o nel file indicato. Per uscire d a l l ' e d i t o r si digita :q, m e n t r e per salvare il file e uscire d a l l ' e d i t o r si uniscono i d u e c o m a n d i e si scrive : w q . C o n il c o m a n d o :e s e g u i t o d a l n o m e di un file si apre n e l l ' e d i t o r il file indicato. Infine, : r f i l e . t x t inserisce il c o n t e n u t o d i file.txt all'interno d e l testo corrente. Ricerca e sostituzione Le funzionalit p e r la ricerca e la sostituzione di stringhe in V i m s o n o d e cisamente avanzate. Per cercare s e m p l i c e m e n t e una stringa nel testo corrente si p r e m e il tasto / , si digita la stringa da ricercare e si p r e m e Invio. Per individuare le occorrenze successive della stringa si p r e m e n, m e n t r e per trovare q u e l l e p r e c e d e n t i si usa N. Il c o m a n d o / p u effettuare ricerche di parole p o s t e all'inizio o alla fine delle righe d i un d o c u m e n t o : p e r limitare le ricerche all'inizio delle righe si inserisce
A

prima della stringa da cercare, m e n t r e p e r cercare tra le parole

finali si p r e m e il tasto $ al t e r m i n e della stringa. Per e s e m p i o , scrivendo / A c a s a si cercheranno t u t t e le righe in cui la parola iniziale sia casa. Per sostituire una stringa c o n un'altra all'interno d e l l ' i n t e r o d o c u m e n t o si usa il c o m a n d o :%s, che ha la s e g u e n t e sintassi:
:%s/cerca/sostitusci/

Per e s e m p i o , p e r cambiare t u t t e le occorrenze della parola Linux in Ubuntu si d e v e scrivere : %s/Linux/ut>untu/. C o n la sintassi di default, per, il c o m a n d o sostituisce la stringa indicata solo p e r la prima occorrenza d i o g n i riga. Il c o m a n d o d ' e s e m p i o , cio, se trova una riga c o m e :
Linus Torvalds il padre di L i n u x . Linux u n sistema operativo libero

la cambia in:
Linus Torvalds il padre di Ubuntu. Linux u n sistema operativo libero

Per sostituire tutte le occorrenze in ogni riga bisogna aggiungere al com a n d o l'opzione finale g (che sta per giobai), cos:
:%s/cerca/sostituisci/g

Nell'immagine seguente (Figura 3.15) si p u osservare un esempio di sostituzione globale applicata su uno script: il c o m a n d o 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'ultimo c o m a n d o eseguito. In Vim questo si ottiene p r e m e n d o . (punto) sulla tastiera. Dato che il tasto . consente di ripetere esclusivamente quei comandi che effettuano d e i cambiamenti sul testo, possibile spostarsi liberamente all'interno di un d o c u m e n t o 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 cambiamenti precedenti. Per ripristinare una modifica al testo che stata annullata con u, invece, si deve premere la combinazione di tasti Ctrl+R (redo). Una sessione di esempio con Vim A questo punto si conoscono i comandi principali per effettuare le o p e razioni pi importanti in Vim. Ecco d u n q u e 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 h o m e dell'utente corrente. Nel terminale si lancia d u n q u e il c o m a n d o seguente:
vi .bashrc

A p e r t o il file, la prima operazione che si vuole compiere attivare l'aiias 11='is -1' c o m m e n t a t o nel file di configurazione di default. Per procedere, innanzitutto si individua la riga interessata con il c o m a n d o seguente:
/alias 11

Il cursore verr posizionato sulla riga della prima e unica occorrenza della stringa indicata e, pi in particolare, sul primo carattere della stringa stessa. La riga corrente sar d u n q u e 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 f o n d o al file. Per fare questo si raggiunge la riga del primo comand o alias e si preme il tasto v. Si entrer cos nella modalit visuale, che consente di selezionare intere righe. A questo p u n t o si preme j finch non v e n g o n o evidenziate tutte le righe degli alias, quindi si usa x per togliere le righe dalla posizione corrente. Infine si preme G per raggiungere la fine del d o c u m e n t o e si usa il tasto p per spostare l le righe degli alias.

. ' l.ife

Per finire, si preme i per entrare in modalit insert e si aggiungono una manciata di alias nel file. Quindi si preme Esc per tornare in modalit Normai. Le modifiche al d o c u m e n t o sono concluse. N o n rimane che premere :wq per salvare il file e uscire dall'editor.

$TERM dumb /usr/bin/dircolors 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

en

# 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 -I 1 #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 possibile creare delle scorciatoie, simili agli alias della shell, grazie al c o m a n d o map. Tale c o m a n d o ha la seguente sintassi:
map scorciatoia comandi

La scorciatoia p u essere un qualsiasi tasto o sequenza di tasti, mentre i comandi non sono altro che la successione d e i tasti che d e v o n o 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 c o m a n d o map abbina alla pressione del tasto F5 la sequenza oi#<Esc>: o fa spostare il cursore sul p r i m o carattere della riga attuale, mentre i passa in modalit insert e # inserisce il carattere di cancelletto nella posizione corrente. Infine, <ESC> fa tornare l'editor in modalit Normai. C o n questa scorciatoia, q u i n d i , p r e m e n d o il tasto F5 la riga su cui p o s t o il cursore verr c o m m e n t a t a , d a t o che il cancelletto in posizione iniziale indica negli script shell una riga d i c o m m e n t o . C h i a r a m e n t e , le righe di map d i g i t a t e d u r a n t e l'utilizzo interattivo d i V i m saranno richiamabili nella sola sessione in corso. Per memorizzare delle scorciatoie, q u i n d i , bisogna inserire le relative righe di map nel file di c o n figurazione .vimrc. Q u e s t o file va p o s t o nella h o m e d e l l ' u t e n t e . Se .vimrc non esiste, lo si crea con il c o m a n d o vi .vimrc e si inseriscono p o i , m e d i a n t e l'editor, t u t t e le righe d i map che si desidera.

" Configuriazione personate di vim syntax on set noautoindent set modelines=5 tabstop=2 &term =- "rxvt" || &term set background=light endif augroup filetype au BufRead /postponed/* augroup END map Q {!}par 72qjh"M} |a <F5> 0i#<Esc> "xterm" || &term "screen"

mmmmm

ft=mail

".vimrc" 17L, 292C scritti

17,1

Tut

Figura 3.17-11 file di configurazione .vimrc dell'editor Vim.


Modificare le opzioni Nel file di configurazione .vimrc possibile inserire delle righe p e r m o d i f i care i valori d i default di un gran n u m e r o d i opzioni dell'editor. Il c o m a n d o

per modificare il valore di u n ' o p z i o n e set, che ha la sintassi seguente: set opzione=valore A l c u n e opzioni p o s s o n o assumere i soli valori Vero e Falso. In tal caso, il valore viene indicato s e m p l i c e m e n t e m e d i a n t e il n o m e d e l l ' o p z i o n e : se il valore Falso va premesso no al n o m e d e l l ' o p z i o n e . Per e s e m p i o , per attivare l ' a u t o i n d e n t a z i o n e si inserisce la riga: set autoindent m e n t r e per disabilitarla si scrive: set noautoindent

L'opzione di autoindentazione fa s che una nuova riga segua l'indentazione della linea precedente. Per esempio, se in una riga inseriamo dei caratteri di tabulazione, questi saranno presenti anche nelle righe successive.

Tra le o p z i o n i che p u essere utile m o d i f i c a r e vi sono history, tabstop e ncsearch. La prima, history, p e r m e t t e di indicare il n u m e r o di c o m a n d i e pattern di ricerca che l ' e d i t o r d e v e memorizzare. Per e s e m p i o , con set history=ioo si m a n t e r r a n n o in m e m o r i a 100 c o m a n d i e pattern. L'opzione tabstop stabilisce il n u m e r o di spazi bianchi che d e v o n o corris p o n d e r e a un carattere di tabulazione. C o n set tabstop=2 un t a b corris p o n d e a 2 spazi. Infine, incsearch attiva la ricerca incrementale: q u a n d o si premer il tasto / verr m o s t r a t o i m m e d i a t a m e n t e , carattere d o p o carattere, il p u n t o del testo d o v e a p p a r e la stringa ricercata. Per orientarsi tra la m o l t i t u d i n e di opzioni che V i m m e t t e a disposizione, basta digitare n e l l ' e d i t o r il c o m a n d o : options. C o m p a r i r un d o c u m e n t o con un elenco c o m m e n t a t o delle opzioni presenti, suddivise per argomento.

nrformats

set js nojs "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 shiftwidth smarttab softtabstop option-window number of spaces a <Tab> in the text stands for (local to buffer) set ts=2 number of spaces used f o r each step of (auto)indent (local to buffer! set sw=8 a <Tab> in an indent inserts 'shiftwidth 1 spaces set nosta sta if non-zero, number of spaces to insert for a <Tab> (local to buffer) set sts=0 445,1 0,0-1

54% Tutl

[Senza nome' : options|

Figura 3.18- li comando :options mostra un elenco commentato delle opzioni disponibili in Vim.
Per concludere questi paragrafi dedicati a Vim, la Tabella 3.3 una sorta di "guida per la sopravvivenza", con i comandi fondamentali per l'utilizzo di questo p o t e n t e ma complesso editor. Tabella 3.3 - I comandi per "sopravvivere" in Vim. Comando
h, j, k , :W :q X

Funzione M u o v e il cursore a sinistra, in basso, in alto e a destra Salva i cambiamenti al d o c u m e n t o corrente Fa uscire dall'editor Cancella il carattere sotto il cursore Cancella una riga Registra una riga in memoria Copia nel d o c u m e n t o i dati salvati in memoria dai comandi c o m e x, d d e yy Ricerca una stringa nel d o c u m e n t o

dd yy p /

F I

\\

1 i

4. Log e processi periodici


I! 1 O isS IE If"1 di IH sistema di l o g e gii strumenti per amministrare al meglio

scheduling

una macchina.

Se gli strumenti fondamentali per un amministratore sono la shell e l'editor, 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, d u n q u e , sar dedicato a sysiog e cron: il primo 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 informazioni inviate da un c o m p o n e n t e 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 e m p o l'insorgere di eventi imprevisti e malfunzionamenti. Il sistema per la gestione dei log syslogd contenuto nel pacchetto sysklog d , installato per default. I file di log sono raccolti nella directory /var/log: nella Tabella 4.1 v e n g o n o presentati alcuni dei principali file di log.

Tabella 4.1 - Alcuni d e i principali file di l o g . auth.log daemon.log dmesg kern.log mail.err, mail.info, mail.log, mail.warn messages Xorg.*.log Autorizzazioni. Per il comando sudo, per esempio Comunicazioni relative ai demoni Contiene i messaggi inviati dal kernel durante la procedura di b o o t L'insieme dei messaggi provenienti dal kernel Messaggi relativi alla posta Importante file di log, raccoglie un nutrito numero di tipi di messaggi diversi Informazioni e messaggi di errore inviati dal server grafico X W i n d o w 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. Faciity indica il tipo di programma che invia le informazioni di log, mentre e v e i individua la gravit del singolo messaggio inoltrato. L'insieme di faciiity e levei, dunque, definisce in m o d o granulare le informazioni di log cui ci si vuole riferire.
Le faciiity d i s p o n i b i l i SOnO auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (corrisponde a auth), syslog, user, uucp e localO-7.

Alcune faciiity riguardano le autorizzazioni (auth e authpriv), altre il kernel (kern), altre ancora singoli d e m o n i avviati sulla macchina (cron, ftp, ipr, mail, news). La faciiity syslog relativa ai messaggi dello stesso d e 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 Figura 4.1-11 file di configurazione letto da syslog

1,1 /etc/syslog.conf.

Cim

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 c h e p u assumere il level s o n o debug, info, notice, warning, err,

crit, aiert, emerg. Il valore che indica la gravit pi bassa per un messaggio 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 * (include 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

N a m e d pipe. Il messaggio di log viene mandato a una named pipe (pipe persistente). Esempio: |/dev/xconsole Lista di utenti. 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 tutti 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 selezione di tutti i livelli di gravit superiore a esso: in /var/log/auth.log, quindi, saranno raccolti i messaggi di log di tipo auth.info, auth.notice e cos via,
f i n o 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 riverseranno nel file di log i soli messaggi della faciiity auth e d i 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/mal

In questo esempio tutti i livelli per la faciiity mail confluiscono in /var/log/ mail, tranne il livello notice. Nella riga vengono impiegati insieme i caratteri ! e = per precisare il level da escludere. Indicando invece mail.*,-mail. notice verrebbero selezionati tutti i level di mail tranne quelli a partire da notice: nel file di log, in questo caso, sarebbero 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 tipo "tutti 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
facility mail e news: mail,news.=info @empedocle

Sulla macchina empedocie, quindi, per poter ricevere messaggi di log dall'esterno sar necessario aprire il file /etc/default/syslogd e cambiare la riga:
SYSLOGD=""

in:
SYSLOGD="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 "ruotati" 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 Figura 4.3 - La configurazione di logrotate contenuta nel file /etc/logrotate.conf

Cim

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/logrotate.d raccoglie i file di configurazione per singoli programmi o servizi: questa directory viene popolata da file creati in automatico durante l'installazione dei pacchetti, ma pu essere utilizzata anche dall'amministratore per inserire direttive di configurazione senza dover intervenire sul file centrale logrotate.conf. Nella Tabella 4.2 sono elencate le principali direttive riconosciute da logrotate. Tabella 4.2 - Le direttive di logrotate. Direttiva com press daily weekly monthly notifempty olddir x rotate x size=x mail x traria nocompress 1 file di log vengono ruotati giornalmente 1 file di log vengono ruotati ogni settimana 1 file di log vengono ruotati ogni mese Se il file di log vuoto non viene ruotato. La direttiva contraria ifempty (default) 1 vecchi file di log vengono spostati nella directory x Prima di essere cancellati o inviati per email i file di log vengono ruotati x volte Se le dimensioni del file di log sono maggiori di x il file viene ruotato Raggiunto il termine massimo di rotazioni, il file di log viene inviato via email all'indirizzo x Significato 1 vecchi file di log vengono compressi. La direttiva con-

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 effettuate 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 determinata 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 sovradimensionata 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 direttamente 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 comandi 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 esecuzioni giornaliere si utilizzer la directory /etc/cron.daily, per quelle settimanali /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 programma logrotate viene eseguito tutti i giorni in m o d o automatico.

ale@pitagora:-$ Is -al /etc/cron.daily/ totale 72 drwxr-xr X 2 root root 4096 2008 09 22 drwxr-xr X 138 root root 12288 2008 09 22 1 root root 311 2007 03 05 -rwxr-xr X 219 2008 04 18 -rwxr-xr X 1 root root 1 root root 7441 2008 04 22 -rwxr-xr X 314 2008 04 04 -rwxr-xr X 1 root root 502 2007 12 12 1 root root -rwxr-xr X 71 2008 01 24 -rwxr-xr X 1 root root 89 2006 06 19 1 root root -rwxr-xr X 954 2008 03 12 -rwxr-xr X 1 root root 183 2008 03 08 -rwxr-xr X 1 root root -rwxr-xr X 1 root root 1154 2008 03 07 102 2008 04 08 -rw-r--r 1 root root -rwxr-xr X 1 root root 3295 2008 04 08 -rwx r-x r X 1 root root 1309 2007 11 23 ale@pitagora:

it

12:43 12:43 07:38 17:58 17:20 11:56 14:59 20:02 20:21 14:24 man db 19:22 21:24 20:02 .placeholder 20:02 10:06

Figura 4,4 - Il contenuto della directory /etc/cron.daily.


Per esempio, per far cancellare ogni settimana il contenuto della directory / h o m e / a l e / t m p sfruttando questa modalit di utilizzo semplificata di cron,

tutto 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 precedente. 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 configurazione 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.

|# |# |# l#

/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, 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 |47 6 * * 7 root /cron.weekly ! 52 6 1 * * root /cron.monthly )

/cron.daily )

report /etc

test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc test x /usr/sbin/anacron || ( cd / && run-parts --report /etc|

"/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 iniziano 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


SHELL

PATH

devono assumere durante l'esecuzione dei comandi indicati


MAIL-

nel file di configurazione. Nel caso si assegni un valore alla variabile generati dai comandi quando questi vengono eseguiti.

TO, inoltre, tale valore indicher l'utente a cui cron deve inviare i messaggi Dopo queste righe si elencano i diversi comandi da lanciare a scadenze regolari. La sintassi utilizzata in un file crontab per stabilirne l'esatta esecuzione 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 minuto ora giorno mese giorno_settimana Significato Indica il minuto in cui eseguire il comando. Pu assumere un valore fra 0 e 59 Indica l'ora. Pu assumere un valore fra 0 e 23 Indica il giorno del mese. Pu assumere un valore fra 1 e 31 Indica il mese. Pu assumere un valore fra 1 e 12 Indica il giorno della settimana. Pu assumere un valore fra 0 e 7: per indicare la domenica possibile usare il numero 0 o 7 utente comando Stabilisce quale utente deve eseguire il comando indicato Il comando da lanciare. Pu contenere spazi e non va inserito tra virgolette

Nei cinque campi che definiscono l'orario di esecuzione possibile utilizzare 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 invece 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 prestabilito consentito l'utilizzo di / in aggiunta al carattere - come scorciatoia per l'inserimento dei valori. Ecco un esempio per il campo minuto:
0-60/15

Questa indicazione di valori significa "esegui il comando ogni quindici minuti" e corrisponde alla scrittura per esteso:
0,15,30,45,60

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 * * * *
r 0 ot

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 precedente.

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 memorizzati 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 cambiare 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 doni mon dow command

# m h I

A questo punto possibile assegnare specifici valori a delle variabili d'ambiente 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 tutti 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 dell'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'effettiva 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 dettaglio 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'installazione 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 identifica 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 locale 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'istruzione 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 predecessore. 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 tipo di indirizzo. Tabella 5.1 - Le principali modalit di configurazione p e r inet. I Modalit loopback static manual dhcp Significato Definisce un'interfaccia di loopback Definisce una configurazione statica dell'interfaccia, con gli indirizzi indicati direttamente Il sistema non effettua alcuna configurazione dell'interfaccia Per la configurazione dell'interfaccia viene contattato 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 limitante. Impiegando indirizzi che possono mutare da una sessione all'altra, infatti, non possibile n far aprire al firewall determinate porte su specifiche macchine, n riferirsi ai PC della rete indicandone direttamente l'IP.

In questi casi, le soluzioni che si possono adottare sono diverse. Se il proprio 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 solitamente 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/interfaces 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, quindi, per aggiornare la configurazione dell'interfaccia di rete nella sessione
c o r r e n t e basta e s e g u i r e 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 m o d o pi semplice 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 peculiarit 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, verr 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 procedura 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 :1 fe00 ff00 ff02 f f2 ff02 following lines are desirable for IPv6 capable hosts ip6-localhost ip6-loopback 0 ip6-localnet 0 ip6-mcastprefix 1 ip6-allnodes 2 ip6-allrouters 3 ip6-allhosts

'/etc/hosts" 15L, 414C scritti Figura 5.2 - Un file /etc/hosts completo, con le informazioni

4,29

Tut

su tutte le macchine della LAN.

Il modo pi semplice per inserire un FQDN nella configurazione di sistema, 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 locale 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 tutti i computer della LAN, in m o d o 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 necessario sperimentare, apportando cambiamenti talvolta rilevanti alle impostazioni di rete. In tal caso preferibile impartire comandi che intervengano 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 sulle interfacce di rete attive, mentre se si esegue ifconfig -a l'output visualizzato concerne tutte le interfacce disponibili, che siano attive o meno. Nell'immagine seguente (Figura 5.3) possibile vedere un output d'esempio del comando ifconfig. Ogni blocco di informazioni riguarda una specifica 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 broadcast 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:59590 (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-bc07fff 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:!

lo

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 interfaccia.

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 l e i m p o s t a zioni di un'interfaccia di rete. Ecco un e s e m p i o : sudo ifconfig ethO 192.168.0.5 netmask Con questo comando, all'interfaccia 255.255.255.0 ethO viene assegnato l'indirizzo

1 9 2 . 1 6 8 . 0 . 5 c o n la c l a s s i c a 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 sibile indicare d i r e t t a m e n t e l'indirizzo di b r o a d c a s t tramite l'opzione o m o n i m a d i ifconfig: sudo ifconfig ethl 192.168.1.6 netmask 255.255.255.128 192.168.1.127 up In questo esempio, oltre a essere assegnato l'indirizzo broadcast

di

broadcast

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 , s e 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 esempi

p r psentati, allora l'interfaccia attivata automaticamente e quindi l'aggiunta 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 Inserire nel file, tra le righe di opzioni successive all'istruzione come la seguente:
broadcast 192.168.1.127

iface,

una riga

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 percorso 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 possibile usare il comando netstat con le opzioni -nr o -r. Nel primo caso vengono mostrati direttamente gli indirizzi numerici, nel secondo le informazioni 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 destinazione (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 seguono il percorso indicato.

|ale@pitagora:~$ netstat -nr Kernel IP routing table Destination Gateway 192.168,1.0 0.0.0.0 169.254.0.0 0.0.0.0 0.0.0.0 192,168.1,1 ;ale@pitagora:-$ |

Genmask 255.255.255.0 255.255.0.0 0.0.0,0

Flags U U UG

MSS 0 0 0

Window 0 0 0

irtt 0 0 0

Ifa eth' eth' eth'

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 consente 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 seguente: 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 d o p o netmask, quindi a gw segue l'indirizzo del gateway che va contattato per questo percorso, 192.168.5.1. L'ultimo parametro indica l'interfaccia di rete da usare, in questo caso e t h 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 parametro 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 ifconf g e route scompaiono allo spegnimento della macchina. Per renderle i 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 righe che possibile inserire in /etc/network/interfaces diretta. Per esemp i o , un c o m a n d o c o m e 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 all'interfaccia di rete cui i comandi si riferiscono. Le righe di route si riportano 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 t h 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 comando 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 duttile modalit di collegamento per le macchine, di solito in aggiunta a una rete cablata. Dato che il funzionamento delle WLAN basato sull'uso delle trasmissioni radio, una rete senza fili diffonde i dati in transito su di essa nell'ambiente circostante. Per proteggere le informazioni, dunque, necessario adottare un solido protocollo di sicurezza che cripti i dati rendendoli illeggibili agli utenti non autorizzati. Il vecchio protocollo WEP (Wired Equivalent Privacy) ha notevoli falle di sicurezze che consentono a uno sconosciuto di ricavare facilmente e velocemente 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 protocolli WPA e WPA2 e per connettere a essa le varie macchine.

I protocolli WPA e WPA2 forniscono entrambi una protezione molto pi sicura rispetto a quella che pu assicurare il protocollo WEP. Rispetto a quest'ultimo, 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 W L A N di maggiori dimensioni sono presenti pi AP. Bisogna controllare che la banda gestibile dall'Access Point sia sufficiente per il numero di macchine da connettere alla rete: i dispositivi compatibili 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 s e r v e r in r e t e

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 generalmente 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 consente 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 funzionamento dell'AP: se si tratta dell'unico Access Point di cui si dispone, la modalit deve essere quindi Access Point.

. ?"... * v - i i i i - _ ; r < Modifica Visualizza Cronologia Segnalibri Strumenti guida t# C3 # v http7/192.168.1 2/ndex.a

EPTRONIC
Security
K ; : ; Basic Setting flf ' Advanced ; Setting '." f Security MAC Filtering

J ..IL, nbwttc CS4APk/Accg<$ f'

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 accessi 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 (possibilmente 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 occulta il nome della WLAN e, quindi, nasconde la presenza stessa della rete agli estranei. In realt, una simile protezione facilmente aggirabile utilizzando 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.

I file Modifica Visualizza Cronologia Segnalibri Strumenti Guida *'"" http .7192.168.1.2/mdex asp

' I

unii m i ii'lim

(i n

CONCEPTROHIC
M A C A d d r e s s Filtering

Coiiceptronic C64APM Access Paint

Advanced i Setting 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 momento di configurare la scheda Wi-Fi sulla macchina server. Come nel caso delle connessioni cablate, anche la configurazione del collegamento tramite Wi-Fi va inserita nel file /etc/network/interfaces. Un blocco di righe per collegare il PC alla W L A N 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 stabilire la modalit di configurazione dell'interfaccia indicata. In questo caso l'interfaccia e t h l viene autoconfigurata per mezzo di un server DHCP. Le righe successive contengono istruzioni specifiche per le reti che adottano 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 d o p o 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 stringa 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 configurazione 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 gestire i protocollo WPA. Se i driver wext non dovesse funzionare a dovere, l l si controlli il chipset presente sulla scheda di rete e si indichi poi i driver l adatto tramite l'istruzione wpa-driver. Tabella 5.2 - I principali driver per gestire il WPA. [ Driver wext madwifi h osta p ipw atmel Schede compatibili Driver generico Schede con chipset Atheros Schede con chipset Prism Schede con chipset Intel Centrino ipw2100 e ipw2200. Driver per kernel < 2.6.14; per i kernel recenti il driver wext Schede con chipset ATMEL AT76C5XXx I

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-ssd 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 ) veng o n o 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.

ale@pitagora:iwconfig 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: no wireless extensions,

eth0

ale@pitagora:~$ |

wireless

Figura 5.8 - L'output del comando disponibili.

iwconfig

mostra informazioni

su t u t t e le

interfacce

In tutte le configurazioni e negli esempi forniti in questo volume la modalit 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 direttamente tra loro impostando su queste la modalit Ad-Hoc; Master. La scheda di rete, in questa modalit, assume le funzionalit 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 frequenza in uso. Lanciando iwconfig seguito da un'interfaccia di rete (per esempio iwconfig ethi) verranno mostrate informazioni su quest'unica interfaccia. Il comando iwconfig dispone anche di una serie di parametri che consentono di modificare le impostazioni di un'interfaccia di rete. Un elenco dei principali parametri viene mostrato nella Tabella 5.3.

Tabella 5.3 - I parametri principali del c o m a n d o iwconfig. Parametro mode channel freq rate essid Significato Cambia la modalit di funzionamento cia Cambia il canale utilizzato Stabilisce la frequenza per le comunicazioni Imposta il bitrate di funzionamento della scheda Indica l'ESSID dell'Access Point cui ci si connette iwconfig ethO channel 6 iwconfig e t h l freq 2.422G iwconfig e t h l rate 24M iwconfig e t h l essid wifi dell'interfac- iwconfig ethO m o d e Ad-Hoc Esempio i

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 protocolli WPA e WPA2, le istruzioni con il prefisso 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 raggiungibili dall'interfaccia di rete. Questi dati si ottengono mediante il comando iwlist e il parametro scan. La sintassi da usare iwlist <interfaccia> 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 ancora. Nell'immagine seguente (Figura 5.9) si mostra l'output di esempio per un Access Point.

Cell 09

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 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 Channel Channel Current

09 : 2.452 GHz 10 : 2.457 GHz 11 : 2.4S2 GHz Channel=0

Ulteriori parametri interessanti del comando iwlist sono rate, che mostra 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 conoscere alcuni degli strumenti indispensabili per controllare il corretto funzionamento della LAN o WLAN. In questa breve sezione del capitolo, quindi, Si Scopriranno sintassi e Utilizzo dei c o m a n d i 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 C t r 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) 64 bytes from 192.168.1.4: icmp_seq=l 64 bytes from 192.168.1.4: icmp_seq=2 64 bytes from 192.168.1.4: icmp_seq=3 64 bytes from 192.168.1.4: icmp_seq=4 64 bytes from 192.168.1.4: icmp_seq=5 bytes of data. ttl=64 time=0.038 ttl=64 time=0.039 ttl=64 time=0.042 ttl=64 time=0.043 ttl=64 time=0.042 ms ms ms ms 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 pacchetti 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 t e m p o richiesto dai pacchetti per viaggiare dovrebbe risultare omogeneo, con minime differenze non significative. Se i valori indicati si discostano 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 aptget 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 strada percorsa per giungere a www.ubuntu.com. Ogni riga di output rappresenta 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 1 9 2 . 1 6 8 . 1 . 1 ( 1 9 2 . 1 6 8 . 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 a destinazione. di traceroute con i diversi gateway attraversati per giungere

Per ciascun hop, quindi, vengono individuati i tempi di percorrenza mostrando tre differenti rilevazioni. Nell'esempio, il primo gateway che il pacchetto 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 individuare 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 stampa CUPS, invece, netstat -nat produce la seguente riga di output:
top 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
(LISTEN)

Nella riga in esame il server CUPS risponde localhost


(127.0.O.I:63I).

sulla porta 631 di


LISTEN

In caso di connessione attiva, al posto di


ESTABLISHED.

sarebbe presente la dicitura

Per visualizzare anche le porte UDP si aggiunge l'opzione -u: il comando precedente diventa quindi netstat -natu. Eliminando l'opzione -n, invece, 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 statistiche riguardanti il protocollo IP:
ip:

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 macchina della rete.

E. Configurazione avanzata della rete


C r e a r e l e r e g a l e p e r il

firewall,

attivare i

l'IP

IVIcisquerading

proteggere

servizi.

Nei capitoli che seguono verranno affrontati argomenti via via pi complessi 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 uncomplicated firewall), un'interfaccia per iptables di facile utilizzo. Nella configurazione 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 opportune: per orientarsi tra le opzioni disponibili in ufw si veda la Tabella 6.1. Tabella 6.1 - Le opzioni interne d e l p r o g r a m m a u f w . Opzione enable disable allow deny delete default Attiva il firewall Disattiva il firewall Crea una regola per consentire il traffico d i determinati pacchetti Crea una regola per fermare il traffico di determinati pacchetti Elimina una regola creata in precedenza Imposta il funzionamento di default del firewall. Con default allow si apre in partenza tutto il traffico, con default deny si blocca in partenza tutto il traffico if logging status Con logging on attiva la creazione dei log, con logging off disattiva la creazione dei log Mostra lo stato del firewall con le regole attive Significato

La prima operazione da compiere stabilire se si vuole partire da una configurazione di base del firewall in cui tutto aperto o da una in cui tutto 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 regole 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 anzich un numero di porta (per esempio, sudo ufw deny smtp). La corrispondenza 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 allow 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 filtrare 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 pacchetti 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 ACCEPT DROP REJECT QUEUE RETURN LOG Significato Il pacchetto verr accettato. Il pacchetto verr scartato. Il pacchetto verr scartato e sar inviato un pacchetto di errore IDCMP Fa gestire il pacchetto a un programma estemo Fa terminare una catena creata dall'utente Quando il pacchetto ricevuto vi una segnalazione nei log

ULOG REDIRECT ,.,Dnnn


M1KKUK

Come l'azione LOG ma pi flessibile Manda il pacchetto a un proxy Inverte gli IP di origine e di destinazione e trasmette 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 comando 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 utilizzando 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 precedenti, si pu procedere alla cancellazione di queste usando il comando interno 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 elimina tutti i pacchetti in entrata (catena INPUT), mentre la seconda ferma tutti i pacchetti diretti verso un'altra rete (catena FORWARD). Ora bisogna indicare i pacchetti che si vogliono autorizzare. Lo si fa costruendo delle regole per iptables che, a determinate condizioni, richiamino 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 t h 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 dall'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
-s -a

Significato Indica l'origine del pacchetto Indica la destinazione del pacchetto Specifica la porta di origine del pacchetto Specifica la porta di destinazione del pacchetto Il pacchetto proviene da una determinata interfaccia Il pacchetto viene inviato a una determinata interfaccia Controlla il tipo di protocollo (TCP, UDP, ICMP) Controlla il tipo di ICMP

Esempio
-s 1 9 2 . 1 6 8 . 0 . 2 - d 127.0.0.1

--sport

--sport 22 --dport 25 -i ethO -o pppO -p tcp - i c m p - t y p e echo-request

--dport

-i

-o

-P --icmptype

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 netmask, 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 prenderanno 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 accettare solo quei pacchetti provenienti dall'esterno che rispondono a delle connessioni avviate dalla rete interna. Ecco il comando completo di iptables 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, RELATED e INVALID. Un pacchetto NEW quando genera una nuova connessione, 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 risultata 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 questo m o d o 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 forwarding: 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 3 8 -- VISUALE LINEA -Figura 6.2 - Decommentando su IPv4. una riga in /etc/sysctl.conf si abilita il packet

49% forwarding

Per attivare il packet f o r w a r d i n g anche p e r il p r o t o c o l l o IPv la riga da d e c o m m e n t a r e #net.ipv6.ip_forward=i. Poi si a g g i o r n a la configurazione d e i parametri d e l kernel nella sessione corrente con il c o m a n d o sudo syscti -p. Q u i n d i , n o n rimane che attivare l'IP M a s q u e r a d i n g c o n la s e g u e n t e riga d i iptables: sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ethl -j MASQUERADE La tabella su cui si interviene quella d i nat (-t nat) e la catena POSTROUTING. Attraverso i parametri successivi si p e r m e t t e ai pacchetti p r o v e n i e n t i dalla rete 192.168.1.0/24 (-s 192.168.1.0/24) e che vanno inviati all'interfaccia d i rete collegata a Internet, e t h l ( - 0 ethi), d i essere " m a s c h e r a t i " e di assumere l'IP p u b b l i c o f o r n i t o d a l p r o v i d e r Internet. D a t o c h e nel paragrafo p r e c e d e n t e si sono bloccati t u t t i i pacchetti nella catena F O R W A R D (sudo iptables -P FORWARD DROP), nel caso di attivazione dell'IP M a s q u e r a d i n g necessario che i p a c c h e t t i " m a s c h e r a t i " possano r a g g i u n g e r e la rete p u b b l i c a . Per fare ci si d e v e intervenire sulla catena FORWARD, c o m e in questa riga di e s e m p i o : sudo iptables -A FORWARD -s 192.168.1.0/24 -o ethl -j ACCEPT Q u i si consente ai pacchetti p r o v e n i e n t i dalla LAN (-s 192.168.1.0/24) d i arrivare a Internet m e d i a n t e l'interfaccia d i rete e t h l ( - 0 ethi). Per accettare il traffico in risposta ai pacchetti inviati verso Internet si p u q u i n d i inserire una regola d e l 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 c o m a n d o sono valide fino allo spegnimento della macchina. A l successivo riavvio, infatti, si scoprir con amarezza che le regole costruite con tante fatica... sono sparite! Per memorizzare su disco la configurazione d e l firewall si usa il c o m a n d o iptabies-save c o n t e n u t o nel p a c c h e t t o iptables. Una volta create le r e g o le necessarie p e r iptables, si e s e g u e iptabies-save in q u e s t o m o d o : sudo sh -c "iptabies-save > /etc/iptables.rules"

Il file /etc/iptables.rules adesso conterr tutte le informazioni sulla configurazione attuale del firewall. Tramite il comando iptabies-restore, quindi, si potr leggere questo file e ripristinare le regole di iptables memorizzate 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 esegua iptabies-restore < /etc/iptabies-restore. Tale riga deve precedere l'istruzione e x i t o al termine del file, come nell'immagine seguente (Figura 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 exit 0 /etc/iptables.rules

13,0-1 Figura 6.3 - Il file /etc/rc.local razione del firewall. dopo che stata inserita la riga per ripristinare la

Tut configu-

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 Figura 6.4.


auto lo 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

mmmm H i

"/etc/network/interfaces" 9L, 210C scritti

3 ,-i

Tut

Figura 6.4 - Il file /etc/network/interfaces con le righe per ripristinare salvare le regole e del firewall.
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'intera rete. Nei paragrafi seguenti, quindi, verranno presentati file e software aggiuntivi 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 scopre che questi contengono una lunga serie di righe di commento: nella configurazione di default risultano quindi essere file vuoti. A g g i u n g e n d o 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 allowed to access the syste See the manual pages hosts__ ccess(S) and hosts options(5 <ample: ALL: some,host,name, .some.domain ALL EXCEPT in.fingerd: other.host. .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, consigliabile adottare una politica iniziale restrittiva e chiudere i servizi a tutti. Nel file /etc/hosts.deny si inserisca quindi questa semplice riga:
ALL : ALL

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 specifici 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 tranne
(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 m e t o d o di verifica fallisce nonostante l'eseguibile richiami effettivamente il wrapper TCP si p u utilizzare un comando alternativo come questo:
strings servizio | grep access

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 quindi, legge hosts.allow e hosts.deny.

hosts.access.

Il servizio,

Il super-server xinetd Un demone viene comunemente attivato al b o o t della macchina e risulta cos sempre disponibile, anche quando dalla rete non giungono richieste per il relativo servizio. Installando un super-server, invece, possibile avviare un demone solo nel momento in cui il servizio che questo fornisce viene effettivamente contattato. Il super-server x i n e t d 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 interpretato il contenuto dei file /etc/hosts.allow e /etc/hosts.deny e solo successivamente, se al client verr concesso l'accesso, si consulter la configurazione 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:
sudo apt-get instali xinetd

Il file di configurazione principale di xinetd /etc/xinetd.conf, ma vengono 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'installazione 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/>:: Figura 6.7-11 contenuto /etc/xinetd.d. del file time, uno dei file di configurazione

l,l di default

Cim presenti in

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 log__on_success log_on_failure only_from = = = = = = = /usr/sbin/proftpd root stream no HOST PID HOST RECORD 192.168.1.0/24

In questo blocco di righe si definiscono i parametri del servizio FTP (service 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 tipo 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, impostano la gestione dei log per il singolo servizio, mentre la riga finale stabilisce che l'accesso al server FTP concesso solo alle macchine della rete
1 9 2 . 1 6 8 . 1 . 0 / 2 4 (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 configurare x i n e t d . I Opzione
server

Significato L'eseguibile del d e m o n e da avviare quando si richiede il servizio L'utente che deve avviare il demone Determina se d o p o aver avviato il d e m o n e bisogna accettare nuove richieste. Se il servizio multi-threaded il valore no, se single-threaded il valore yes

user

wait

Opzione socket_type

Significato Il t i p o di socket. Pu essere stream, dgram, raw o seqpacket. Si sceglie stream per i servizi TCP e dgram per i servizi UDP

bind

Indica l'indirizzo dell interfaccia di rete su cui va reso disponibile il servizio Il numero massimo di server che possono essere attivi simultaneamente per un servizio Il primo argomento indica il numero massimo di connessioni per secondo. Il secondo argomento indica i secondi da attendere prima di ripristinare il servizio quando si supera il numero massimo di connessioni

instances

cps

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 connessione). 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 scegliere se sfruttare il classico gestore di log sysiog (valore zione) o salvare i log direttamente su un file (valore Nel caso si indichi come valore
SYSLOG, FILE). SYSLOG

per l'op-

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

FILE

del parametro iog_type, invece, richiede l'inserimento agFILE:

giuntivo del percorso completo del file che deve contenere i log. La riga seguente presenta un esempio per i valore l
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 specificano ulteriori valori per i medesimi parametri. Per fare ci si crea un particolare blocco di configurazione che inizia con la riga defauits:
defaults cps instances log_on_success log_on_faiIure log_type
= 3 0 60 = 50
= HOST = = HOST SYSLOG PID

authpriv

Il blocco defauits si inserisce nel file /etc/xinetd.conf (Figura 6.8). In questo modo, il file di configurazione principale conterr i soli parametri generici, 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 configurazione del servizio.

# 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 servzi.
Per e s e m p i o , se in un file di configurazione di x i n e t d il b l o c c o di righe per il service ftp Contiene server = /usr/sbin/proftpd, in Un i p o t e t i c o file hosts.allow, per riferirsi a tale servizio, si utilizzer proftpd, c o m e nella lnea s e g u e n t e : proftpd: 192.168.1.* Nel caso non fosse presente alcun p a r a m e t r o server nella configurazione di un servizio, in hosts.allow e hosts.deny ci si riferir a q u e s t o richiamand o il n o m e indicato nella riga service della configurazione di x i n e t d relativa al servizio stesso.

r " " :

7. Amministrare da remoto
Gestire a distanza una macchina con un

semplice terminale, via w e b o mediante


una completa interfaccia grafica.

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 terminale, un'interfaccia web o un vero e proprio client grafico. In questo capitolo, dunque, viene presentata una panoramica delle principali applicazioni disponibili per gestire comodamente un computer a distanza.

Un terminale remoto
Gestire una macchina remota mediante un semplice terminale pu risultare la soluzione ideale in molte circostanze: l'occupazione di banda irrisoria, gli strumenti da adottare sono di facile configurazione e le operazioni 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 Telnet. Purtroppo, si tratta d i un sistema client-server scarsamente sicuro: basti pensare al fatto che le password inserite al login passano in chiaro nella rete. Al posto di Telnet fortemente consigliabile utilizzare macchina remota mediante connessione criptata.
SSH ( s e c u r e

sheii),

un protocollo con il relativo software che consente il collegamento a una

ale@pitagora:~$ ssh 192.168.1.4 1 The authenticity of host '192.168.1.4 (192.168.1.4) 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 cosiddetta crittografia asimmetrica. Si tratta di una forma di cifratura che adotta una coppia di chiavi per il proprio funzionamento, una chiave privata 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 tutti 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 pubblica pu essere decriptata solo da colui che abbia accesso alla rispettiva chiave privata, mentre un'informazione criptata con una chiave privata pu essere decodificata da tutti coloro che possiedano la relativa chiave pubblica. Quindi, l'operazione di cifratura tramite chiave pubblica permette di nascondere un'informazione e rivelarla a un unico destinatario. Cifrare mediante chiave privata, invece, consente di inviare un'informazione con un "attestato di paternit": infatti, tutti 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 connessi a uno specifico server SSH ed anche il meccanismo grazie al quale ci si p u collegare a un server SSH in m o d o 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 amministrare. Su questo computer, nel caso non si fosse scelto di includere OpenSSH server durante l'installazione iniziale del sistema operativo, bisogna installare manualmente il pacchetto openssh-server con il comando
sudo a p t - g e t i n s t a l i openssh-server.

L'installazione del pacchetto comporter la creazione della coppia di chiavi 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 pacchetti i n corso Selezionato i l pacchetto openssh-server, che non l o 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 ;iale@pitagora:~$

[ OK ]

C o n f i g u r a z i o n e d e i clienti S S H
Su u n a 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 n e 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 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 . Server,

Tutte le p r i n c i p a l i d i s t r i b u z i o n i f o r n i s c o n o p a c c h e t t i p r e c o m p i l a t i c l i e n t O p e n S S H . Nel caso si v o g l i a p r o c e d e r e alla c o m p i l a z i o n e

del del

p r o g r a m m a , la p a g i n a w e b da cui partire p e r scaricare i s o r g e n t i h t t p : / / w w w . o p e n s s h . c o m / . Un v a l i d o c l i e n t SSH p e r W i n d o w s invece Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/).

U n a v o l t a c h e sul P C 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 s s h 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 v e r r a v v i a t a una c o n n e s s i o n e SSH cifrata v e r s o q u e s t ' u l t i m o .

Ecco un e s e m p i o : s s h 1 9 2 . 1 6 8 .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 S S H 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 di c o n f e r m a r e l'autenticit d e l server. Un f i n g e r p r i n t n o n altro che

la v e r s i o n e r i d o t t a d i u n a 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 v e r i f i c a 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 u n s e r v e r S S H si d e v e e s e g u i r e il c o m a n d o ssh-keygen -if s u l l a s t e s s a m a c c h i n a s e r v e r . Il c o m a n d o v a lanciato

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 R S A (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 s c 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 i s " ) , il c o m a n d o d a e s e g u i r e : ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

N e l c a s o , i n v e c e , d i u t i l i z z o 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 s e guente: ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub

Per r a g i o n i d i sicurezza s c o n s i g l i a b i l e e s e g u i r e il c o m a n d o ssh-keyg e n -lf d a / e m o t o . Un m e t o d o sicuro p e r c o n o s c e r e il f i n g e r p r i n t d i un sistema lanciare il c o m a n d o d i r e t t a m e n t e d a l server. Un altro m e t o d o c o n s i g l i a t o q u e l l o di farsi c o m u n i c a r e il f i n g e r p r i n t d a l l ' a m m i n i s t r a t o r e d e 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

ef-

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 y e s s u l l a 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 n s e r i s c e 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 s u l l a m a c c h i n a s e r v e r e si o t t i e n e c o s 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 s s h , 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 a l l a 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 s u l l a m a c c h i n a c l i e n t : s e a l a n c i a r e s s h 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 s u l l a m a c c h i n a s e r v e r c o m e m a r i o . P e r f a r e 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 ssh test@192.168.0.7 test come nell'esempio seguente:

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 S S H a l l ' a c c o u n t d e l l ' u t e n t e

sulla m a c c h i n a c o n indirizzo 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 , possibile eseguire 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 remoto.

p r o p r i o c o m e s e c i si t r o v a s s e d a v a n t i a l l a t a s t i e r a d e l c o m p u t e r Accesso s e n z a 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 sistema d i a u t e n t i c a z i o n e a d o p p i a chiave possibile avere accesso a u n a m a c c h i n a r e m o t a senza d o v e r inserire 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 c h i a v 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 n v i o p e r c o n f e r m a r e il p e r c o r s o d i d e f a u l t in cui m e m o r i z z a r e la c h i a v e p r i v a t a .

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 c o m a n d o ssh-keygen seguito da -t dsa. L'algoritmo DSA pi rapido nel generare una firma SSH ed m a g g i o r m e n t e portabile rispetto a RSA. In situazioni normali, per, la scelta tra un algoritmo e l'altro non comporta vantaggi o svantaggi di rilievo.

F a t t o q u e s t o , p o s s i b i l e i n s e r i r e u n a p a s s p h r a s e p e r p r o t e g g e r e la c h i a v e p r i v a t a : se si i n d i c a u n a p a s s p h r a s e , q u i n d i , sar n e c e s s a r i o d i g i t a r l a n u o v a m e n t e al m o m e n t o d e l l a c o n n e s s i o n e al s e r v e r r e m o t o . Q u e s t o f o r n i s c e u n ' u l t e r i o r e barriera p r o t e t t i v a nel m a l a u g u r a t o caso in cui un e s t r a n e o si i m p a d r o n i s s e d e l l ' a c c o u n t c o n il q u a l e si a c c e d e al server rem o t o . D i g i t a t a la p a s s p h r a s e , b i s o g n a p o i inserirla d i n u o v o p e r c o n f e r m a .

S e si p r e m e I n v i o a l l a r i c h i e s t a 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 r e n e l l a m a c c h i n a s e r v e r s e n z a d o v e r d i g i t a r e n u l l a o l t r e al c o m a n d o s s h . 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 s u l s e r v e r r e m o t o , i n s e r e n d o l a n e l l a lista d e l l e c h i a v i c o n o s c i u t e dall'utente

n e l s e r v e r d i c u 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 . P e r f a r e q u e s t o si u t i l i z z a 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 i n t a s s i s e g u e n t e : ssh-copy-id -i - / . s s h / i d _ r s a . p u b utenteSserver corrente;

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

in c a s o d i u t i l i z z o 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 i n s e r i r e la m a c c h i n a r e m o t a s u l l a 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 c u i si d e s i d e r a i n v i a r e la c h i a v e pubblica (peresempio, mario@eraclito.ufficio.lan).

L a n c i a t o il c o m a n d o , v e r r r i c h i e s t a 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 s u l 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 s s h si p o t r a v e r e a c c e s s o a l l a m a c c h i n a s e r v e r s e n z a d o v e r i n s e rire a l c u n a p a s s w o r d .

Rendere il server 5SH pi sicura


U n a v o l t a c h e si s o n o c o p i a t e s u l s e r v e r S S H t u t t e le c h i a v i p u b b l i c h e d e i client, 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 server SSH p e r m i g l i o r a r n e la s i c u r e z z a . La p r i m a o p z i o n e s u c u 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 di a u t e n t i c a z i o n e , infatti, i n t r i n s e c a m e n t e m e n o sicura d i q u e l l a m e d i a n te chiave pubblica. 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 c e r c h i n e l f i l e la r i g a s e g u e n t e : #PasswordAuthentication yes e la si m o d i f i c h i i n : PasswordAuthentication no

P e r 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 a c c e s s 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 n e l s i s t e m a c o m e u t e n t e r o o t . P e r o t t e n e r e q u e s t o la riga PermitRootLogin yes d e v e diventare PermitRootLogin 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 S S H 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 XllDisplayOffset 10 5IM 74%

Figura 7.5 - Modificando alcune opzioni nel file /etc/ssh/sshd_confg aumentare la sicurezza di ssh.

possibile

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 file / 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 s s h d a t t i v o n e c e s s a r i o l a n c i a r e s u l s e r v e r il c o m a n d o s u d o / 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 z z a r e u n a 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 i n s e r i r e una password a o g n i connessione remota certo limitata dal d o v e r digitare, c o m u n q u e , la p a s s p h r a s e s t a b 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 f a r e 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 u n a 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 successiva sessione d i ssh.

P e r 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 s s h v a l a n c i a t o sul c l i e n t il c o m a n d o seguente: exec ssh-agent /bin/bash sbloccare passphrase login, /bin/

P o i si e s e g u e s s h - a d d 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 la c h i a v e . F a t t o q u e s t o , s s h 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

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 s u l c l i e n t . A l s u c c e s s i v o 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 e x e c b a s h e s s h - a d d 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 . ssh-agent

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 rsa) ale@pitagora:-$ |

Nella c o n f i g u r a z i o n e di d e f a u l t d i U b u n t u , alla p a r t e n z a d e l server g r a f i c o v i e n e avviata a n c h e un'istanza di ssh-agent. Per q u e s t a r a g i o n e , se si

utilizza u n ' i n t e r f a c c i a grafica l'unico c o m a n d o da e s e g u i r e nel t e r m i n a l e p e r far m e m o r i z z a r e la passphrase ssh-add.

O l t r e a p o t e r a v v i a r e u n a s e s s i o n e S S H v e r a e p r o p r i a su d i u n

sistema

r e m o t o , il c o m a n d o s s h p e r m e t t e a n c h e d i l a n c i a r e c o m a n d i d i r e t t i , c o m e nell'esempio seguente: s s h s e r v e r . ufficio . l a n p s aux

Eseguendo questa macchina locale.

riga

si lancia il c o m a n d o

p s

aux sul s i s t e m a

remoto della

s e r v e r . u f f i c i o . l a n e l ' o u t p u t r i s u l t a n t e v i e n e m o s t r a t o sul t e r m i n a l e

T r a m i t e l ' o p z i o n e - x d i ssh, p o i , p o s s i b 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 r e s e n t i sul s e r v e r v i s u a l i z z a n d o l e s u l l o s c h e r m o d i u n c l i e n t c o m e si t r a t t a s s e d i f i n e s t r e l o c a l i . L a n c i a n d o s s h -X server.ufficio.lan gcalctool, p e r e s e m p i o , sul PC s e r v e r . u f f i c i o . l a n v e r r l a n c i a t o g c a l c t o o l (la c a l c o l a t r i c e d i G n o m e ) , m e n t r e sul PC c l i e n t c o m p a r i r la f i n e s t r a d e l p r o g r a m m a . Per p o t e r s f r u t t a r e l ' o p z i o n e - x d i ssh n e c e s s a r i o c h e n e l f i l e / e t c / s s h / sshd_config l'opzione xiiForwardng abbia valore yes. I n f i n e , n e 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, c h e p e r m e t t e d i copiare f a c i l m e n t e d e i file d a una macchina all'altra. possib i l e t r a s f e r i r e f i l e t r a d u e c o m p u t e r r e m o t i o t r a il PC l o c a l e e u n a m a c c h i na r e m o t a . La sintassi d i b a s e d e l c o m a n d o e l e m e n t a r e : scp u s e r O h o s t l :filel u s e r @ h o s t 2 :file2 Sia l ' i n d i c a z i o n e d e l l ' u s e r sia q u e l l a d e l l ' h o s t s o n o o p z i o n a l i . esempio pratico: scp / t m p / d o c u m e n t o . t x t m a r i o @ s e r v e r . ufficio. l a n : d o c C o n q u e s t o c o m a n d o il f i l e / t m p / d o c u m e n t o . t x t p r e s e n t e n e l l a m a c c h i n a locale v i e n e c o p i a t o a l l ' i n t e r n o della d i r e c t o r y d o c nella 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 ) sulla m a c c h i n a r e m o t a s e r v e r . u f f i c i o . l a n . Il p r o g r a m m a s c p utilizza ssh p e r il t r a s f e r i m e n t o d e i file e l ' a u t e n t i c a z i o n e n e i sistemi r e m o t i . Q u i n d i , se si s c e l t o d i a u t e n t i c a r s i t r a m i t e p a s s p h r a s e si d o vr inserire q u e s t ' u l t i m a (a m e n o c h e n o n si sia a v v i a t o ssh-agent) al m o m e n t o d e l l a c o n n e s s i o n e c o n l'host, a l t r i m e n t i si d i g i t e r la n o r m a l e p a s s w o r d . Ecco un

Amministrazione pi comoda con screen


Q u a n d o ci si c o l l e g a a u n s e r v e r t r a m i t e u n t e r m i n a l e r e m o t o si h a a d i s p o sizione un'unica console, all'interno della q u a l e bisogna effettuare 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 c h e la g e s t i o n e d i u n s e r v e r ripartire c o m o d a m e n t e i diversi c o m p i t i d a svolgere. richiede.

S a r e b b e c o m o d o , in q u e s t i casi, a v e r e 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 c u i

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 f a t ti, c o n s e n t e di creare e gestire all'interno di u n ' u n i c a sessione di t e r m i n a l e pi " f i n e s t r e " , o g n u n a d e l l e quali p u c o n t e n e r e una shell 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 s o 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 n s t a l l a r e il p r o g r a m m a s u U b u n t u S e r v e r si l a n c i a il c o m a n d o apt-get instali sudo la

screen. Fatto q u e s t o , una volta effettuata t r a m i t e ssh

c o n n e s s i o n e al s e r v e r si a v v i a 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 c e m e n t e il c o m a n d o s c r e e n .

sempli-

N e l t e r m i n a l e c o m p a r i r u n a s c h e r m a t a d i b e n v e n u t o ( F i g u r a 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 n u l l a c a m b i a t o n e l l a c o n s o l e r e m o t a ; in r e a l t s c r e e n o r a 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 t a s 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

[Press Space or Return to end.] I

Le c o m b i n a z i o n i d i t a s 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 . P e r e s e m p i o ,

per

v i s u a l i z z a r e 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

p r e m e C t r l + A s e g u i t o d a C . U n a lista 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 a s t i in s c r e e n m o s t r a t a n e l l a T a b e l l a 7 . 1 .

Tabella 7.1 - Le combinazioni di tasti di screen pi utilizzate. Tasti Ctrl+A+D


Ctrl+A+0...9

Funzione Apre una nuova console di terminale all'interno d screen


Passa screen alla console numero 0...9 all'interno di

Ctrl+A+D
Ctrl+A+Ctrl+A

Chiude la console corrente


Passa a l l ' u l t i m a c o n s o l e u t i l i z z a t a p r i m a d i q u e l l a attuale

Mostra un elenco delle console aperte in screen. Ctrl+A+" Con i tasti cursore ci si sposta tra le console e con Invio si passa alla console selezionata
Ctrl+A+D Funzione " d e t a c h " . Per scollegarsi dalla sessione corrente di screen

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 a s 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 s e n z a c h e le c o n s o l e e i p r o g r a m m i a v v i a t i i n e s s a v e n g a n o e f f e t t i v a m e n t e chiusi. Utilizzando questa c o m b i n a z i o n e d i tasti q u i n d i possibile scollegarsi m o m e n t a n e a m e n t e d a l s e r v e r , 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 c u i q u e s t a e r a s t a t a i n t e r r o t t a . P e r r i p r i s t i n a r e la s e s 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 s c r e e n m a s c r e e n -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 anche di uso complesso. A c c e d e r e a un c o m p l e t o ambiente inap-

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, invece, p u risultare u n a scelta

Linux Llbuntu per s e r v e r e reti

p r o p i n a t a p e r l ' e c c e s s i v a 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 operazioni di manutenzione da svolgere.

delle

Un valido c o m p r o m e s s o costituito d a W e b m i n , un'interfaccia 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 te da un c o m u n e w e b browser.

ile Modifica Visualizza ' & .

Cronologia

Segnalibri Strumenti

guida

b 11 p s ://1 oc a ih osti 10000/

J Webmin System 'i Servers Networking

Q
System hostname Operating system Webmin version Time on system System uptime CPU load averages Real memory Virtual memory Local disk space

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

A view Module's Logs f ^System information: Refresh Modules #Logout

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 possibile con il programma Webmin.
Installazione e avvia di webmin

web?

W e b m i n n o n incluso nei repository d i Ubuntu. Ecco q u i n d i i passaggi necessari p e r installarlo: 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 http://www.webmin.com/

d o w n l o a d . h t m l e si s e g u a il l i n k 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 della stesura d e l presente volum e , il l i n k p u n t a a w e b m i n _ 1 . 4 2 0 _ a l l . d e b ; 2. si s c a r i c h i il f i l e d a l l a r e t e , 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 e d n e l l a d i r e c t o r y i n c u i il b r o w s e r s a l v a i d o w n l o a d : s e 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 s c r i v e r e s a r d u n q u e Cd Download;

3.

n e l l a c o n s o l e si l a n c i 1 c o m a n d o s u d o g d e b i webrain_l. 420 alla 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 s o f t w a r e ?

all.debe

[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 . V e r r c o s 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 i s p o n i b i l e un r e p o s i t o r y D e b i a n n o n ufficiale da cui p o s s i b i l e installare il p a c c h e t t o d i W e b m i n . Per a g g i u n g e r e il r e p o s i t o r y si inserisce nel file / e t c / a p t / s o u r c e s . l i s t la riga s e g u e n t e : deb http://download.webmin.com/download/repository Poi si salva il file e in un t e r m i n a l e si lancia sudo sarge contrib update p e r

apt-get

a g g i o r n a r e la lista d e i p a c c h e t t i . Il p a c c h e t t o w e b m i n c o n t e n u t o in q u e sto r e p o s i t o r y p i e n a m e n t e c o m p a t i b i l e c o n U b u n t u .

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 a v v i a in a u t o m a t i c o il d e m o n e d i 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 .

Webmin,

Per f a r c o m p a r i r e l ' i n t e r f a c c i a d i W e b m i n n e l c o m p u t e r stesso in c u i s t a t o i n s t a l l a t o il p r o g r a m m a , si a p r a c o n u n b r o w s e r l ' i n d i r i z z o h t t p s : / / l o calhost: 10000. N e l l a p a g i n a c h e a p p a r e b i s o g n a e f f e t t u a r e il l o g i n i n s e r e n d o il n o m e d e l l ' u t e n t e a m m i n i s t r a t o r e e la relativa p a s s w o r d . Se n e l s i s t e m a a t t i v o l ' u t e n t e r o o t si inserisca q u e s t o , a l t r i m e n t i si p u d i g i t a r e il n o m e d e l l'utente principale (quello, cio, che p u acquisire i poteri di root tramite i c o m a n d o sudo) e la relativa p a s s w o r d . l

Dato che gli utenti di w e b m i n non coincidono necessariamente con gli utenti di sistema, possibile accedere all'interfaccia di W e b m i n tramite root senza che questo utente sia attivo nel sistema. Per questo, basta indicare la password di root in w e b m i n mediante il c o m a n d o 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 s c h e r m a t a d i b e n v e n u t o d i W e b m i n f o r n i s c e a l c u n e i n f o r m a z i o n i sul s i s t e m a sul q u a l e s t a t o i n s t a l l a t o : il n o m e d e l l ' h o s t , il s i s t e m a o p e r a t i v o u t i l i z z a t o , la m e m o r i a d i s p o n i b i l e e cos via. A sinistra nella p a g i n a , q u i n d i , p r e s e n t e u n m e n u c o n t e n e n t e le d i v e r s e s e z i o n i d i W e b m i n c u i p o s s i b i l e a c c e d e r e e a l c u n e s i n g o l e v o c i p e r richiamare le f u n z i o n a l i t d i b a s e .

Se si utilizza come browser Firefox 3 per visualizzare l'interfaccia di W e b m i n , 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


un'eccezione, certificato p o i s u Aggiungi e i n f i n e s u Conferma eccezione, eccezione

possibile

aggiungere
Acquisisci

q u i n d i sul p u l s a n t e 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

impostazioni

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 i n i s t r a , q u i n d i , si d e v e f a r e c l i c s u l l a s c r i t t a 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 Con-

f i g u r a t i o n . A q u e s t o p u n t o , nella parte principale della p a g i n a w e b c o m parir una serie di icone: o g n u n a di esse r a p p r e s e n t a un 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 cui p o s s i b i l e i n t e r v e n i r e .

Eile Modifica Visualizza Cronologia I"

Segnalibri Strumenti

guida

https://localhost: 10000/ Module Config

Login: ale Webmin Backup Configuration Files Change Language and Webmin Actions Log Webmin Configuration Webmin Servers index Webmin Users S System 3 i i Servers ill Networking -J Cluster SI others 43 Un-uMKl Modui

Webmin Configuration

IP Access Control

"

Ports and Addresses

m
O

Logging

User interface

Webmin Modules

index Page Options

upgrade Webmin

Operating System and Environment

A a

Proxy Servers and Downloads

Language

A # 3 &

View Module's Logs System Information Refresh Modules Logout

m
Anonymous Module Access

01
*

Reassign Modules

Advanced Options

&

File Locking

Mobile Device Options =3 SSL Encryption

JL 1

JL.
Blocked Hosts and Users Certificate Authority localhost:10000 & U (H)

Debugging Log File

Si f a c c i a 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 i n l a n g u a g e e si f a c c i a

clic sul pulsante C h a n g e L a n g u a g e .


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 h a 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 c o s le v a r i e i c o n e n e l l a p a g i n a . P e r f a r e 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 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 r e c l i c s u l l ' u l t i m a v o c e d e l 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 a c c e s s 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 del

menu,

Linux U b u n t u per s e r v e r e r e t i

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 i g u r a 7 . 1 1 ) .

f j n i i p s '/loclho5i"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 u n n u m e r o l i m i t a t o d i i n d i r i z z i IP sia p e r m e t t e r e l'accesso a t u t t i gli indirizzi t r a n n e alcuni. L'opzione Permetti

l'accesso a Webmin ha tre valori possibili: da qualunque indirizzo IP, solo dagli indirizzi elencati e a t u 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 i n d i r i z z i d i c o n t r o l l a r e il P C 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 nel r i q u a d r o s o t t o s t a n t e i vari ind i r i z z 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 i n d i r i z z i d i r e t i ( 1 9 2 . 1 6 8 . 1 . 0 , per esempio). P e r 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 aggiun-

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 n d i r i z z i si f a 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 l e 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 a l l a s u a i n t e r f a c c i a d a r e m o t o . B a s t a i n s e r i r e al p o s t o d i 1 2 7 . 0 . 0 . 1 l'indirizzo

d e l P C s u c u 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 , s e l ' i n d i r i z z o IP d a r a g g i u n g e r e 1 9 2 . 1 6 8 . 1 . 4 , l ' U R L d a d i g i t a r e n e l w e b b r o w s e r sar tps://192.168.1.4:10000 h i

Come gestire il sistema


A questo punto possibile esplorare i numerosissimi elementi di cui c o m p o s t a l ' i n t e r f a c c i a d i W e b m i n . N e l l a T a b e l l a 5.1 m o s t r a t o u n e l e n c o d i t u t t e le s e z i o n i d i s p o n i b i l i n e l m e n u d e l p r o g r a m m a .

Tabella 7.2 - Le sezioni d e l menu di W e b m i n . Sezione


Webmin

Contenuto

Un-used Modules

Linux b u n t u per s e r v e r 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 pu 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 s u l l a 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 . P e r f a r e 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 n e l l a s e z i o n e S i s t e m a e si f a c l i c s u l l a v o c e P r o c e s s i i n 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 processi attivi sulla m a c c h i n a . La riga in a l t o c h e i n i z i a 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 s u C P U v e r r a n n o v i s u a l i z z a 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 clic

processore,

mentre selezionando M e m o r i a i primi processi elencati saranno quelli che occupano pi RAM. 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 . B a s t a f a r e c l i c sul n u m e r o d e l p r o c e s s o p o s t o sotto

il c a m p o I D P r o c e s s o , q u i n d i n e l l a s c h e r m a t a c h e a p p a r e n o n r e s t a c h e

p r e m e r e i pulsanti T e r m i n a o Kill.

I Eile Modifica Visualizza I I Login: ale 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 S Rete 3 -il Hardware a cluster Others i o Un used Modules Search: ~ <5>

Cronologa

Segnalibri Strumenti

Guida -lllc;-

https://localhost: 10000/ j~1 indice modulo

Informazioni sul Processo


Processo padre CPU 10 (Predefinito) :J j Cambia j /sbin/init 6.3% 00:01:58

Comando ID Processo Proprietario Dimensione Livello Nice Gruppo reale

Utente reale Invia Segnale HUP ; Termina Kill Sospendi h Riprendi | Controlla Processo | ! File e Connessioni j

A View Module's Logs & System Information S Refresh Modules @ Disconnettiti Completato

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 s e z i o n e S i s t e m a , si f a c l i c s u 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 la p a s s w o r d .

modificare

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 n s e r i s c e 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 n e , si f a 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 s u l t a r e 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 un 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 s t a 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 s e r v i z i o a l l ' a v v i o . In W e b m i n si f a c l i c s u l l a v o c e B o o t u p and Shutdown della consueta

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 lista il s e r v 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 ? . P e r f i n i r e si f a

clic su Salva.

iie Modifica Visualizza Cronologia 4a 4 "r

Segnalibri Strumenti

Suida

htt P s://localhost:10000/ j""j configurazione del i i modulo

L icf- " . " Avvio e Spegnimento


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 >r levels oi |/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 refreshable braille terminals. 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 localhost:10000 S (N) V

Logn: ale 3 Webmin Sistema Bootup and Shutdown 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

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

A View Module's Logs = System Information 5 Refresh Modules @ Disconnettiti https://iocalhost:10000/init/

Figura 7.13 - Webmin consente di gestire anche i servizi avviati al boot della macchina.
I n f i n e , s e 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 una

santi dell'interfaccia w e b , W e b m i n m e t t e a disposizione d e l l ' u t e n t e

pratica Console dei comandi.


E n t r a n d o nella 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 clic su C o n s o l e dei 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 s e 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 a i 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 a n c i a r e v a 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 nella 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 e s e 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 ) . S e si h a 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 clic sulla voce

L o g i n T e l n e t / S S H nella stessa s e z i o n e O t h e r s verr avviata u n a sessione T e l n e t o S S H 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 r e 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'amministrazione di u n a macchina p u n o n risultare a p p r o p r i a t o p e r i propri scopi. Q u e l l o c h e serve un a m b i e n t e grafico c o m p l e t o cui avere 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 .

V N C sta per Virtual N e t w o r k C o m p u t i n g 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 l e 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 v a r 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 s u i m o v i m e n t i d e l m o u s e e sulla p r e s s i o n e d e i tasti. 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 della facilit d ' u s o d e l l e m o d e r n e interfacce grafiche.

Installazione di TightVIMC sul server


V N C , nel suo funzionamento di base, richiede molta banda p e r funzionar e a l m e g l i o . Il p r o t o c o l l o s u c u 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 dati grafici d a trasferire. TightVNC unaversione potenziata di V N C che permette di amministrare una 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 velocit, 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 irrisoria. 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 v a i n s t a l l a t o s u l P C 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 : s u 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 l a n c i il c o m a n d o s u d o apt-get instali tightvncserver.

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 : vncserver :1

Il c o m a n d o a p p e n a i n s e r i t o l a n c i a v n c s e r v e r ( c h e in r e a 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 t i g h t v n c s e r v e r ) 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 risulti 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 alm e n o c i n q u e caratteri, che d o v r p o i essere d i g i t a t a sulle m a c c h i n e client 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 , s a r c h i e s t o a l l ' u t e n t e s e v u o l e i n s e r i r e o m e n o una password secondaria di t i p o view-only: i client che inseriranno 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 s u a l i z z a r e il c o n t e n u t o d e l l o s c h e r m o , m a n o n p o t r a n n o u s a r e 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 . I n s e r i t a la p a s s w o r d p r i n c i p a l e e , s e l o 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 i g u r a 7 . 1 4 ) . L e p r o s s i m e v o l t e c h e si l a n c e 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 : verranno che

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 s e r v e r . S e 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 u s a r e 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 connessione dei client.

Il client per TightVIMC


Sui P C 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 i n s t a l l i il p a c chetto xtightvncviewer: sudo apt-get instali xtightvncviewer

In q u e s t o p a r a g r a f o si p r e s u p p o n e c h e a n c h e sui c l i e n t sia p r e s e n t e una d i s t r i b u z i o n e U b u n t u o D e b i a n . Per altre d i s t r o p o s s i b i l e scaricare i pacchetti o i sorgenti di T i g h t V N C direttamente dall'indirizzo http://www. t i g h t v n c . c o m / d o w n l o a d . h t m l . Nella stessa p a g i n a w e b s o n o d i s p o n i b i l i a n c h e g l i e s e g u i b i l i p e r W i n d o w s d e l client e d e l server T i g h t V N C .

P e r 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 i n t a s s i d e l c o m a n d o d a l a n c i a r e la s e g u e n t e : vncviewer indirizzo:display

P e r 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 deve eseguire vncviewer 1 9 2 . 1 6 8 . 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 t a t a i n s e r i t a 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 s e r v e 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 z z o v i e w - o n l y del desktop remoto. Fatto questo, apparir una finestra simile a quella visibile nell'immagine

s e g u e n t e (Figura 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 dalla 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 . Una caratteristica davvero comoda del funzionamento di V N C che,

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 l e 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 accesso d i u n client. P r e m e n d o il t a s t o F 8 n e l l a f i n e s t r a c r e a t a d a v n c v i e w e r si h a a c c e s s o a u n u t i le m e n u i n t e r n o . Le v o c 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 i s u a l i z z a r e 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 Fullscreen), d i uscire d a l client ( 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 d e l l a c l i p b o a r d l o c a l e n e l l a c l i p b o a r d r e m o t a e v i c e risulteranno d i s p o n i b i l i al s u c c e s s i v o

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 total Mem: 1546340 1282936 623332 - / + buffers/cache: 0 Swap: 979956 ale@pitagora:~$ df F i l e system /dev/sdal ivarlock devshm Irm eneric/volatile /dev/sda3 igvfs-fuse-daemon ale@pitagora:

263404 923008 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 server V N C , infatti, p e r risparmiare b a n d a avvia p e r d e f a u l t un'interfaccia grafica minimale, c o m p o s t a d a una finestra d i terminale e da un semplice w i n d o w manager. per possibile modificare queste impostazioni v e n e n d o su u n file d i c o n f i g u r a z i o n e d e l PC server. inter-

Configurare il server VI\IC


Il f i l e s u 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 nella 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 lanciat o v n c s e r v e r . E c c o l e 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 di default: #!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey x-terminal-emulator -geometry 80x24+10+10 Desktop" S e x-window-manager & C o n queste righe, q u a n d o

-ls -title

"$VNCDESKTOP

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 i g a x s e t r o o t ) , 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 i g a 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 a v v i a il w i n d o w manager

d i d e f a u l t nel s i s t e m a (riga x - w i n d o w - m a n a g e r ) . M o d i f i c a n d o l ' u l t i m a r i g a , q u i n d i , p o s s i b i l e i n d i c a r e il p r o p r i o w i n d o w m a n a g e r p r e f e r i t o .

Il file /usr/bin/x-window-manager indica sui sistemi Debian e derivati il w i n d o w manager di default. Questo file non altro che un collegamento simbolico a /etc/alternatives/x-window-manager e viene creato q u a n d o si installa un w i n d o w manager nel sistema. Per modificare il w i n d o w manager d default si lancia il c o m a n d o seguente: sudo update-alternatives --config x-window-manager

Un v a l i d o 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 p r a t i c 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 installa sulla m a c c h i n a s e r v e r c o n il c o m a n d o sudo a p t - g e t i n s t a l i fiuxbox, p o i n o n resta c h e c a m b i a r e la riga f i n a l e d i . v n c / x s t a r t u p in startfluxbox & o m o d i f i c a r e il w i n d o w m a n a g e r d i d e f a u l t m e d i a n t e il c o m a n d o u p d a t e - a i t e r n a t v e s .

A l t r i w i n d o w m a n a g e r a d a t t i p e r u n ' a m m i n i s t r a z i o n e r e m o t a s o n o iceWM ( i n s t a l l a b i l e t r a m i t e il p a c c h e t t o i c e w m ) e w i n d o w M a k e r ( p a c c h e t t o w m a k e r ) . E n t r a m b i f o r n i s c o n o u n ' i n t e r f a c c i a g r a f i c a s e m p l i c e e d i f a c i l e utilizzo. Per a v v i a r e q u e s 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 s e r v e r V N C , g l i e s e g u i b i l i c h e b i s o g n a r i c h i a m a r e n e l l ' u l t i m a riga d i . v n c / x s t a r t u p s o n o , r i s p e t t i v a m e n t e , icewm e wmaker.

Cannessiane cifrata al server VM I C


N e l n o r m a l e utilizzo d i V N C le u n i c h e i n f o r m a z i o n i c h e v e n g o n o cifrate s o n o le p a s s w o r d s c a m b i a t e n e l l e c o m u n i c a z i o n i iniziali t r a c l i e n t e server. Il resto d e i d a t i c h e t r a n s i t a n o t r a le m a c c h i n e v i a g g i a in chiaro. p e r p o s s i b i l e n a s c o n d e r e le i n f o r m a z i o n i c r e a n d o u n t u n n e l c i f r a t o t r a m i t e SSH. Per q u e s t o n e c e s s a r i o c h e sulla m a c c h i n a d a a m m i n i s t r a r e v i a V N C sia a t t i v o u n s e r v e r SSH. S o d d i s f a t t a q u e s t a p r e m e s s a , il c o m a n d o p e r lanciare v n c v i e w e r su u n PC c l i e n t d i v e n t a : vncviewer -via 192.168.1.4 localhost: 1 d o v e al p o s t o d i 1 9 2 . 1 6 8 . 1 . 4 si inserisce l ' i n d i r i z z o IP d e l s e r v e r V N C a c u i 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 d e l d i s p l a y c h e si d e s i d e r a visualizzare in r e m o t o . E s e g u i t o il c o m a n d o , verr p r i m a richiesta la p a s s w o r d o la p a s s p h r a s e p e r c o n n e t t e r s i al s e r v e r SSH, q u i n d i la p a r o l a d ' a c c e s s o p e r a c c e d e r e al d i s p l a y r e m o t o d e l s e r v e r 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
chine

sull'hard disk, anche con mac-

Windows

In u n a r e t e l o c a l e p o s s i b 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:

c h e si

t r a t t i d i u n a s t a m p a n t e o d i u n a s e r i e d i c a r t e l l e su d i s c o , a v e r e a c c e s s o da p i m a c c h i n e a un singolo dispositivo p e r m e t t e d i ottimizzare i costi d e l l ' h a r d w a r e e d i g e s t i r e in m o d o o c u l a t o le a t t i v i t d i r e t e e g l i s p a z i fisici disponibili. 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 s a r a n n o d u n q u e il s e r v e r d i s t a m p a C U P S , il f i l e s y s t e m d i s t r i b u i t o N F S e S a m b a , u n s o f t w a r e c h e c o n s e n t e la c o n d i visione d i risorse 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 Unix Printing System) n o t o p e r essere orm a i il s i s t e m a d i s t a m p a d i d e f a u l t s u l l e p i d i f f u s e d i s t r i b u z i o n i L i n u x . In realt, CUPS anche un p o t e n t e print server che p e r m e t t e d i c o n d i v i d e r e u n a o p i s t a m p a n t i t r a i d i v e r s i c o m p u t e r c o n n e s s i in r e t e . Per installare il server d i s t a m p a su U b u n t u va l a n c i a t o il c o m a n d o s e g u e n t e : sudo apt-get instali cupsys

L'installazione del p a c c h e t t o cupsys c o m p o r t e r l'attivazione

immediata

d e l d e m o n e d i s t a m p a c u p s d , c h e r i s p o n d e r s u l l a p o r t a 6 3 1 . La c o n f i g u r a z i o n e i n i z i a l e 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'interfaccia w e b di cupsd, richiamabile a p p u n t o c o l l e g a n d o s i p o r t a 631 della m a c c h i n a server. Nella configurazione di default il s e r v e r d i s t a m p a accetta connessioni impostazione alla

e s c l u s i v a m e n t e d a l l a m a c c h i n a l o c a l e . Per m o d i f i c a r e q u e s t a

si a p r a c o n u n 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 i g a : Listen 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 s u 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 , esempio: Listen 192.168.1.4:631 per

Per a s c o l t a r e s u 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 g a d a i n s e r i r e i n v e c e : Listen *:631

!ogLevel warning IsystemGroup Ipadmin # Only listen for connections from the local machine. 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 </Location> Location /admin/conf> AuthType Default Require user @SYSTEH # Restrict access to the configuration files... Order allow,deny </Location> Policy defaults 4,1 Cim

Figura 8.1 - Nella configurazione di default il demone cupsd ascolta solo di rete locale.

sull'interfaccia

B i s o g n a 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 g h e : 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 A l l o w c h e i n d i c h i n o g l i indirizzi d e i c l i e n t c h e p o s s o n o c o n n e t t e r s i al s e r v e r 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 e n 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 permettere il c o l l e g a m e n t o al s e r v e r di stampa all'intera rete

1 9 2 . 1 6 8 . 1 . 0 , la r i g a A l l o w d a u t i l i z z a r e d i v e n t a A l l o w 1 9 2 . 1 6 8 . 1 . * . D o p o a v e r e f f e t t u a t o le n e c e s s a r i e m o d i f i c h e al f i l e 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 s e r v e r c u p s d n e c e s s a r i o r i a v v i a r e il d e m o n e : sudo /etc/init.d/cupsys restart stampante

A q u e s t o p u n t o si p u p a s s a r e a l l a c o n f i g u r a z i o n e d e l l a di rete.

Configurare la stampante di rete


Per a g g i u n g e r e u n a s t a m p a n t e al p r i n t s e r v e r b a s t a r i c h i a m a r e l ' i n t e r f a c c i a 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 direttamente d a l l a m a c c h i n a server, b i s o g n a a p r i r e in u n q u a l s i a s i w e b b r o w s e r l ' i n d i r i z z o 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 u n a n u o v a s t a m p a n t e d a u n a m a c c h i n a c l i e n t , si d e v e i n s e r i r e in u n b r o w s e r l a n c i a t o sul c l i e n t l ' i n d i r i z z o IP d e l s e r v e r sulla r e t e , a g g i u n g e n d o p o i : 6 3 1 c o m e r i f e r i m e n t o alla p o r t a d a u s a r e . Per p o t e r a g g i u n g e r e u n a s t a m p a n t e d a r e m o t o n e c e s s a r i o m o d i f i c a r e il f i l e / e t c / c u p s / c u p s d . c o n f d e l l a m a c c h i n a su c u i a t t i v o il s e r v e r : 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 , i n f a 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 s e r v e r p o s s o n o essere e f f e t t u a t e solo d a l sistema locale.

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 Location /admin> # R e s t r i c t a c c e s s to the a d m i n Order allow,deny </Location>

righe

seguente:

pages...

e a g g i u n g e r e u n a r i g a A l l o w c o n g l i i n d i r i z z i IP d e i c l i e n t c u i

permesso

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 L o c a t i o n / > ( F i g u r a 8.2). A n c h e in q u e s t o c a s o , 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 f a 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 s e r v e r c o n il c o m a n d o s u d o / e t c / i n i t . d / c u p s y s 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 SetJob-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 accettare connessioni dall'esterno.
R a g g i u n t o d a locale o da r e m o t o l'indirizzo d e l p r i n t server, a p p a r i r nella 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 ) . P e r 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 i c sul p u l s a n t e Ag-

g i u n g i s t a m p a n t e , p o i n e l l a s c h e r m a t a c h e a p p a r e si i n s e r i s c e n e g l i a p p o siti s p a z 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 c u 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 e s t e s a d e l l a s t a m p a n t e stessa ( 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 n s e 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 Description.

I ile Modifica Visualizza Cronologia tv t !e

Segnalibri Strumenti

Guida

http://localhost:631/

C o m m o n UNiX P r i n t i n g S y s t e m 1.3.7
^ principale IM.TiHU'iAJi.UM.lJI B E B 1 MW.H.U UM.MfrHH.HI
Benvenuto!

.:::::: ec;
Mii I.U.H.U

Q u e s t e p a g i n e w e b t i c o n s e n t o n o 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 o p e r a z i o n i di s t a m p a n o n c h e s e g u i r e o p e r a z i o n i di a m m i n i s t r a z i o n e del s i s t e m a . Fai clic su o g n u n a delle s c h e d e in a l t o o s u i p u l s a n t i s e g u e n t i p e r e f f e t t u a r e u n ' o p e r a z i o n e . 4 T O 4EEilMfi3811 > a password, inserisci il nome utente e la password di accesso o il nome utente e la password

Se ti viene richiesto un nome utente o dell'utente "root".

Informazioni su CUPS
CU PS f o r n i s c e un s o t t o s l s t e m a di s t a m p a p o r t a b i l e p e r i s i s t e m i o p e r a t i v i b a s a t i su UNIX . S v i l u p p a t o e g e s t i t o da A p p l e I n c . p e r p r o m u o v e r e u n a s o l u z i o n e di s t a m p a s t a n d a r d . CUPS il s i s t e m a di s t a m p a s t a n d a r d u t i l i z z a t o su MacOS X e sulla m a g g i o r p a r t e delle d i s t r i b u z i o n i Linux. CUPS utilizza 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 p e r la g e s t i o n e delle o p e r a z i o n i di s t a m p a e delle code e a g g i u n g e la n a v i g a z i o n e delle s t a m p a n t i di r e t e e o p z i o n i di s t a m p a b a s a t e su P o s t S c r i p t P r i n t e r D e s c r i p t i o n ("PPD") per s u p p o r t a r e t u t t e le n e c e s s i t di s t a m p a . H r i u o r I Completato Hi c t a m n a o a c c i c t o n 7 a

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 i c 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 utilizzato s e l e z i o n a n d o una d e l l e voci disponibili per 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 alla p o r t a U S B d e l l a m a c c h i n a s e r v e r si s e l e z i o n e r , n e l m e n u r e l a t i v o 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 f a r clic sul p u l s a n t e C o n t i n u a . P o i 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 f a c l i c s u A g g i u n g i

stampante.

Per avere a d i s p o s i z i o n e i p r i n c i p a l i d r i v e r p e r s t a m p a n t i su

Ubuntu apt-

Server si consiglia di installare i s e g u e n t i p a c c h e t t i m e d i a n t e sudo get

instali: c u p s y s - d r i v e r - g u t e n p r i n t , f o o m a t i c - d b - g u t e n p r i n t , f o o m a -

tic-db-hpijs e foomatic-db-engine.

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 n a r e le p r e f e r e n z e d e l p r i n t s e r v e r v e r r r i c h i e s t o d i i n s e r i r e 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 r e l a t i v a p a s s w o r d . N e l l a s c h e r m a t a s u c c e s s i v a sar p o i p o s s i b i l e i m p o s t a r e a l c u n i p a r a m e t r i d i s t a m p a : p e r lasciare i v a l o 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 u n a s t a m p a n t e d i r e t e su u n c l i e n t u n ' o p e r a z i o n e c h e 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 r n i t i d a l l ' a m b i e n t e g r a f i c o p r e s e n t e sulla m a c c h i n a o p p u r e m e d i a n t e l'interfaccia w e b d e l server CUPS installato sul client stesso. Per u t i l i z z a r e q u e s t a s e c o n d a i n t e r f a c c i a si p u n t a il w e b b r o w s e r a l l ' i n d i r i z z o l o c a l h o s t : 6 3 1 , q u i n d i n e l l a s c h e r m a t a d i b e n v e n u t o d e l s e r v e r C U P S sul c l i e n t si fa clic su A g g i u n g i s t a m p a n t e . P o i si i n s e r i s c o n o le i n f o r m a z i o n i d i b a s e sulla s t a m p a n t e d i r e t e , c o m e n e l l ' e s e m p i 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 (Figura 8.4).

Modifica Visualizza Cronologia | '

Segnalibri Strumenti

Guida

Sj 1 ttp://localhost:631/admin?OP=add-printer

^Aggiungi stampante
lMffiB Amministrazione ffigSii

sra

Elissa

Add New Printer


Name: L A N P n n t e r (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< o marchi registrati da Easy S o f t w a r e P r o d u c t s . CUPS un copyright 1997-2006 d Easy Software Products, Tutti i diritti sono riservati.

Figura 8.4 - Valori di esempio di Name, Location e Description per una stampante di rete.
F a t t o q u e s t o , n e l l a s c h e r m a t a s u c c e s s i v a si s c e g l i e I n t e r n e t P r i n t i n g P r o -

t o c o l (ipp) come Dispositivo.

Si fa clic su C o n t i n u a e si i n d i c a c o m e URI d e l d i s p o s i t i v o una riga cos composta: pp://<IPserver>/ipp/printers/<nome> A l p o s t o d i < i p s e r v e r > si inserisce l ' i n d i r i z z o IP d e l l a m a c c h i n a s e r v e r cui c o n n e s s a f i s i c a m e n t e 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 i g i t a il n o m e d e l l a s t a m p a n t e r e m o t a . Per e s e m p i o , se l ' i n d i r i z z o 1 9 2 . 1 6 8 . 1 . 4 e la s t a m p a n t e si c h i a m a M L - 1 6 1 0 la riga d a i n s e r i r e sar q u e s t a : ipp://192.168.1.4/ipp/printers/ML-1610

Per conoscere il nome della stampante remota basta entrare nella pagina di benvenuto di CUPS sulla macchina server (localhost:631) e, nella schermata che appare, fare clic sul pulsante S t a m p a n t i in alto. Apparir un elenco di tutte le stampanti attive nel sistema.

D o p o a v e r i n d i c a t o TURI d e l l a s t a m p a n t e d i r e t e si s c e g l i e G e n e r i c c o m e M a r c a e si fa clic su C o n t i n u a , q u i n d i si i n d i c a il M o d e l l o d e l l a s t a m p a n t e

Generic PostScript Printer (en).


A d e s s o n o n r i m a n e c h e f a r e clic su A g g i u n g i s t a m p a n t e e inserire sul c l i e n t 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 relativa p a s s w o r d . N e l l a s c h e r m a t a successiva, i n f i n e , b a s t a f a r e clic 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/client.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 predefinita sul client.

Linux U b u n t u p e r s e r v e r e reti

Modifica Visualizza Cronologia Segnalibri Strumenti Guida ' Ir? | 6 http://localhost.631/admin j j

'Aggiungi stampante
Amministrazione i'-i umentaz ione/Aiuto

Modello/Driver per LANPrinter


Modello: Generic Generic Generic Generic Generic Generic Generic Generic Generic O fornisci un file PPD: PCL 6/PCL XL Printer Foomatic/ljadith (eni PCL 6/PCL XL Printer Foomatic/lj5groy (en) PCL 6/PCL XL Printer Foomatic/ljet4 (en) PCL 6/PCL XL Printer Foomatic/ljet4d (en) PCL 6/PCL XL Printer Foomatic/pxlmono (recommended) (en) PDF file generator (en) _ PostScript Printer (en> PostScript Printer Foomatic/Postscript (recommended) (en) text-only printer (en) Sfoglia

Generic ZjStream Printer Foornatie/too2zjs (recommended) (en)

Se il c l i e n t utilizza c o m e s i s t e m a o p e r a t i v o u n a v e r s i o n e d i M i c r o s o f t W i n d o w s , p e r p o t e r s t a m p a r e t r a m i t e il p r i n t s e r v e r CUPS n e c e s s a r i o a g g i u n g e r e u n a s t a m p a n t e , i n d i c a r e c h e si v u o l e f a r e u s o d i u n a s t a m p a n t e d i r e t e e q u i n d i f o r n i r e al s i s t e m a il s e g u e n t e URI (di n u o v o , < i P s e r v e r > l ' i n d i r i z z o IP d e l p r i n t s e r v e r e < n o m e > il n o m e d e l l a s t a m p a n t e ) : h t t p ://<IPserver>: 6 3 l / p r i n t e r s / < n o m e > Infine, si s c e g l i e d a l l ' e l e n c o u n q u a l s i a s i d r i v e r d i s t a m p a P o s t S c r i p t : i n o m i d e i d r i v e r P o s t S c r i p t h a n n o t u t t i c o m e p a r o l a f i n a l e PS.

Filesystem di rete I I 5 XF
NFS u n f i l e s y s t e m d i r e t e d u t t i l e e s e m p l i c e d a c o n f i g u r a r e . Installare un s e r v e r N F S su u n a m a c c h i n a 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 p e r c o n d i v i d e r e f i l e e d i r e c t o r y t r a p i c o m p u t e r Linux: si p e n s i alla p o s s i b i l i t di a m m i n i s t r a r e le d i r e c t o r y / h o m e d i p i PC su d i u n u n i c o s e r v e r o d i avere accesso a un archivio m u l t i m e d i a l e centrale d a una m o l t i t u d i n e d i m a c c h i n e , senza u n i n u t i l e s p r e c o d i s p a z i o sui d i s c h i .

Configurazione di IVF5 sul server


P e r i n s t a l l a r e il s e r v e r N F S s u l l a m a c c h i n a c h e d e v e r e c t o r y si l a n c i a il c o m a n d o sudo apt-get instali seguente: "esportare" le d i -

nfs-kernel-server

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 u n u n i c o f i l e d i c o n figurazione, /etc/exports. P e r 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

inserisce u n a riga n e l file, c o m e in q u e s t o e s e m p i o : /usr/local/share/video pitagora(rw,async)

A l l ' i n i z i o d e l l a r i g a 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 . P e r d e f a u l t t u t t e l e 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 ( q u i p i t a g o r a ) , c o n l e 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 g a 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 l a 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 e s s a i n l e t t u r a e s c r i t t u r a (rw) e i n 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 c h i a 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 t c / e x p o r t s . Opzione


rw ro

Significato
Il f i l e s y s t e m e s p o r t a t o i n l e t t u r a e s c r i t t u r a Il f i l e s y s t e m e s p o r t a t o i n s o l a l e t t u r a . il c o m p o r t a mento di default Le s c r i t t u r e 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 s i n c r o n o . Default Le s c r i t t u r e s u 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 a s i n c r o n o .

sync

async

Pi v e l o c e d e l l a m o d a l i t s i n c r o n a m a m e n o s i c u r a (in caso d i crash alcuni dati p o s s o n o essere persi o corrotti) G l i a c c e s s i t r a m i t e l ' u t e n t e 0 ( r o o t ) e il g r u p p o relativo

root_squash

v e n g o n o t r a d o t t i in accessi t r a m i t e a c c o u n t e g r u p p o anonimo. Default

LifeSi . *:

Opzione
no_root_squash

Significato
Gli 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 c o m e t a 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 e n t p o t r a v e r e a c c e s s o ai f i l e d i r o o t sul s e r v e r 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 i G I D d e l l ' a c c o u n t a n o l
n i m o P e r

anonuid=x, anongid=x noaccess

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 nel

filesystem esportato Ecco q u i n d i altre righe di e s e m p i o : /home *.home.lan(rw,no_root_squash) /media/musica piatone(rw,async) pitagora(ro) / v a r / c a c h e / a p t / a r c h i v e s *(rw) N e l l a 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 d e l l a r e t e h o m e . i a n , c o n p e r m e s s i in s c r i t t u r a e la p o s s i b i l i t d i a c c e d e r e ai f i l e c o n l ' u t e n t e r o o t . La s e c o n d a r i g a 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 r e n t i a s e c o n d a d e l c l i e n t c h e si c o n n e t t e al s e r v e r N F S : p i a t o n e o t t i e n e i p e r m e s s i in s c r i t t u r a e l ' a t t i v a z i o n e d e l l a m o d a l i t a s i n c r o n a , m e n t r e il c l i e n t p i t a g o r a si d e v e a c c o n t e n t a r e d e i soli p e r m e s s i in l e t t u r a . L ' u l t i m a r i g a 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 p a c chetti d e b scaricati dalla rete, / 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 s c r i t t u r a ai c l i e n t c h e 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 l e / 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 s e r v e r N F S n e c e s s a r i o e s e g u i r e il c o m a n d o s u d o e x p o r t f s -a.

NFS sul client


Per a c c e d e r e d a u n c l i e n t a u n f i l e s y s t e m c o n d i v i s o c o n N F S n e c e s s a r i o c h e sul c l i e n 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 c a s o c o n t r a r i o va i n s t a l l a t o c o n s u d o a p t - g e t i n s t a l i comando mount. Ecco un e s e m p i o : sudo mount Parmenide :/media/musica /mnt/nfs/musica nfs-common. F a t t o q u e s t o , si p u m o n t a r e il f i l e s y s t e m 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 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

/media/

m u s i c a e s p o r t a t a dalla m a c c h i n a Parmenide. Per e f f e t t u a r e

correttamente

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 e s i s t e r e 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 r e l a t i v e ai f i l e s y s t e m c o n d i v i s i d a u n 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 s h o w m o u n t , c o n t e n u t o n e 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 s h o w m o u n t -e i n d i r i z z o si a v r in o u -

t p u t un e l e n c o delle directory e s p o r t a t e dal PC indirizzo. Un e s e m p i o di u t i l i z z o d e l p r o g r a m m 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 i g u r a 8.6).

ale@pitagora:~$ Export list for /home/ale/Video ale@pitagora:-$

showmount -e 192.168.1,4 192.168.1.4: 192.168.1.5 |

Figura 8.6 - C o n showmount macchina in rete.

si ottengono

informazioni sui filesystem esportati da una

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 a v v i a u n client p e r avere accesso alle 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 poss i b i l e i n s e 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 e s y stem NFS all'avvio della macchina. 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 : / m e d i a / m u s i c a All'interno di questa richiamate riga, /mnt/nfs/musica n f s rw,bg,intr 0 0 non

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

nel p r e c e d e n t e c o m a n d o mount. Nella Tabella 8.2, q u i n d i , ven-

ute

g o n o p r e s e n t a t e le p r i n c i p a 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 u n c l i e n t il m o u n t d i u n f i l e s y s t e m N F S . P e r r i c h i a m a r e t a l i o p z i o n i d i r e t t a m e n t e d a m o u n t le si fa p r e c e d e r e d a -o, cos: s u d o m o u n t -o r w , b g , i n t r P a r m e n i d e : / m e d i a / m u s i c a /mnt/nfs/musica

Tabella 8.2 - Le opzioni per m o n t a r e un filesystem NFS Opzione


rw ro intr

Significato
Il f i l e s y s t e m m o n t a t o in l e t t u r a e s c r i t t u r a Il f i l e s y s t e m m o n t a t o in s o l a l e t t u r a Attivando questa opzione gli utenti possono fermare u n ' o p e r a z i o n e sul f i l e s y s t e m N F S . Utile q u a n d o q u e s t ' u l t i m o risulta b l o c c a t o Se il s i s t e m a n o n r i e s c e a e f f e t t u a r e il m o u n t d e l f i l e s y -

bg

s t e m N F S l ' o p e r a z i o n e p a s s a 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 altri f i l e s y s t e m

I S12 6 T

P e r m e t t e d i i n d i c a r e la g r a n d e z z a d e l b u f f e r d i l e t t u r a , e s p r e s s a in b y t e P e r m e t t e d i i n d i c a r e la g r a n d e z z a d e l b u f f e r d i s c r i t t u ra, e s p r e s s a in b y t e

WS ZG=X

Condividere con Samba


In u n a rete e t e r o g e n e a , d o v e m a c c h i n e W i n d o w s p o s s o n o p e r e s e m p i o e n t r a r e in c o n t a t t o e s c a m b i a r e d a t i c o n server D e b i a n , la c o n d i v i s i o n e d e i d a t i p u risultare p r o b l e m a t i c a , d a t e le v i s t o s e d i f f e r e n z e t r a u n s i s t e m a o p e r a t i v o e l'altro. I n s t a l l a n d o S a m b a su u n server Linux tali p r o b l e m i . . . d i d i a l o g o p o s s o n o sparire o ridursi d r a s t i c a m e n t e : S a m b a , infatti, u n ' i m p l e m e n t a z i o n e libera d e l p r o t o c o l l o d i r e t e S M B / C I F S utilizzato d a M i c r o s o f t W i n d o w s e p u essere u s a t o p e r c o n d i v i d e r e f a c i l m e n t e d e l l e c a r t e l l e p r e s e n t i su u n server Linux c o n m a c c h i n e W i n d o w s (e n a t u r a l m e n t e a n c h e Linux).

Installazione di Samba sul server


Per i n s t a l l a r e S a m b a sulla m a c c h i n a s e r v e r s u f f i c i e n t e i n s t a l l a r e t r a m i t e a p t - g e t 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 l e r i s o r s e 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 v a l a n c i a t o c o n la s i n t a s s i seguente: sudo smbpasswd -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 n s e 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 esistere un u t e n t e c o r r i s p o n d e n t e nel file 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 f a 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 u n a 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 i n s e r i r l a p o i u n a s e c o n d a v o l t a per conferma.

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.

P e r c a n c e l l a r e u n u t e n t e s a m b a si l a n c i a 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 nell'esempio che segue: sudo smbpasswd -x a l e un

C o n l ' o p z i o n e -d d i s m b p a s s w d , 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 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

Sam-

b a . P e r 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 s u l s e r v e r , q u i n d i , si u t i l i z z a

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 i a t t i vato l'utente antonio: s u d o s m b p a s s w d -d a n t o n i o s u d o s m b p a s s w d -e a n t o n i o A q u e s t o p u n t o , p o s s i b i l e i n t e r v e n i r e sul file 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 a v e r a p e r t o d a r o o t il f i l e c o n l ' e d i t o r (sudo v i / e t c / s a m b a / s m b . c o n f ) , p e r c o n d i v i d e r e u n a 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 l e d e l l e righe s i m i 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 i g a s t a b i l i s c e il n o m e d e l l a risorsa c o n d i v i s a , c h e in q u e s t o c a s o d o c u m e n t i . Tale risorsa 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 n e l l a m a c c h i n a su c u i a t t i v o il s e r v e r S a m b a : la r i g a c h e inizia con path determina questa corrispondenza. N e l l a r i g a s u c c e s s i v a , m e d i a n t e il p a r a m e t r o v a l i d u s e r s v e n g o n o e l e n c a t i g l i u t e n t i c h e p o s s o n o a c c e d e r e alla risorsa c o n d i v i s a 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 i m a r i g a , i n f i n e , i n d i c a c h e sulla 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 s c r i v e r e .

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 i c u r e z z a in S a m b a u n a r g o m e n t o c o m p l e s s o e la sua t r a t t a z i o n e e s a u s t i v a 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 s p a z i d i s p o n i b i l i su d i e s s o . E c c o , d u n q u e , alcune semplici informazioni di base sull'argomento. 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 s u l l ' u l t i m a s e z i o n e d e l f i l e 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 l e r i s o r s e 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 l e i n v e c e o c c u p a t a d a l l a s e z i o n e [Global], c h e r a c c o g l i e le impostazioni globali d e l server Samba. Si a n d r d u n q u e a i n t e r v e n i r e su q u e s t a s e z i o n e p e r l i m i t a r e l ' a c c e s s o al s e r v e r a l l e s o l e m a c c h i n e c o n n e s s e alla r e t e l o c a l e .

g [global]

===== Global Settings

= = = = = = = = = = = =

## 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 i n i z i a l e d i s m b . c o n f si c e r c h i la r i g a s e g u e n t e : interfaces = 127.0.0.0/8 Q u e s t a riga va d e c o m m e n t a t a ethO togliendo 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 n s e 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 g a c h e s e g u e : bind interfaces only = 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 lista d i i n d i r i z z i c u i c o n s e n t i t o l ' a c c e s s o . P e r f a r e 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 riga hosts allow all'interno della sezione [Global] di smb.conf: hosts allow = 192.168.1., 192.168.2.10

C o n q u e s t a r i g a 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 alle m a c c h i n e nella rete 1 9 2 . 1 6 8 . 1 . 0 e all'indirizzo 192.168.2.10.

In a l c u n i c a s i p u e s s e r e 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 l e r i s o r 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 i c u r e z z a 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 s e c u r i t y : 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 u s e r e i n d i c a , a p p u n t o , l'utilizzo

di una diversa p a s s w o r d p e r o g n i u t e n t e cui c o n s e n t i t o l'accesso alle 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 s h a r e al p a r a m e t r o , i n v e c e , s a r p o s s i b i l e e s p o r t a r e le risorse s e n z a 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 [ G l o b a l ] si c e r c h i d u n q u e la r i g a : ; security = user

e la si m o d i f i c h i c o s i : security = share

!####### Authentication ####### # "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.

P e r o t t e n e r e u n a c c e s s o s e n z a 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 ( g u e s t ) .

Per default l'utente guest nobody, ma questo pu essere modificato intervenendo sul parametro guest questa riga: guest account = ale account nella sezione [Global] di smb.conf. Per esempio, per utilizzare come guest l'utente ale si inserisca

N o n r i m a n e q u i n d i c h e inserire g u e s t senza p a s s w o r d . 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 g u e s t ok = y e s read only = yes

ok

= yes nelle righe di s m b . c o n f

d e d i c a t e alla risorsa d a c o n d i v i d e r e , cos d a p e r m e t t e r e l ' a c c e s s o a essa

In q u e s t e r i g h e v i e n e a s s e g n a t o il n o m e v i d e o alla risorsa, si d a c c e s s o alla d i r e c t o r y / u s r / i o c a i / s h a r e / v i d e o e si c o n s e n t e la c o n n e s s i o n e senza p a s s w o r d a un u t e n t e a n o n i m o . Infine, si i n d i c a c h e la risorsa d e v e essere a sola l e t t u r a . 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 e l server, 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 q u e s t o f u n z i o n i c o r r e t t a m e n t e . In u n a c o n s o l e si installi il p a c c h e t t o s m b c i i e n t C o n sudo a p t - g e t i n s t a l i s m b c l i e n t e SI lanci il c o m a n d o s e g u e n t e , inser e n d o c o m e < i n d i r i z z o > l ' i n d i r i z z o IP d e l s e r v e r S a m b a e c o m e < u t e n t e > il n o m e d e l l ' u t e n t e c h e d e v e e f f e t t u a r e la c o n n e s s i o n e : s m b c l i e n t -L / / i n d i r i z z o -U < u t e n t e >

Una v o l t a d i g i t a t a la p a s s w o r d d e l l ' u t e n t e s a m b a i n s e r i t o , in o u t p u t si o t t e r r u n a serie d i i n f o r m a z i o n i sulle d i v e r s e (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 risorse i n d i c a t e nel file s m b . c o n f r i s u l t a n o a t t i v e , 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 e ci si p u d e d i care ai c l i e n t d a c o n n e t t e r e . risorse condivise dal server

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 Workgroup WORKGROUP ale@pitagora:-$ | Comment Master PITAGORA

Figura 8.70 - Con smbclient -L si ottengono da un server Samba.

informazioni sulle risorse condivise

Un altro c o m a n d o utile p e r verificare la c o n f i g u r a z i o n e d i un server S a m b a testparm, c o n t e n u t o n e l p a c c h e t t o s a m b a - c o m m o n . Q u e s t o c o m a n d o , e s e g u i t o senza alcun p a r a m e t r o a g g i u n t i v o , verifica la correttezza d e l file s m b . c o n f . Se l ' o u t p u t n o n rivela errori, q u i n d i , il file d i c o n f i g u r a z i o n e sar c o r r e t t a m e n t e caricato d a l d e m o n e s a m b a sul server.

Callegarsi al server Samba


S e 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 smbclient. Dopo a v e r i n s t a l l a t o il p a c c h e t t o omonimo modo: 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 i n q u e s t o smbclient //<indirizzo>/<risorsa>

-U <utente>

P e r 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 a i e a c c e d e n d o a l l a r i s o r s a d o c u m e n t i si d i g i t a : smbclient //192.168.1.4/documenti -U ale

A q u e s t o p u n t o v e r r c h i e s t o d i i n s e r i r e 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 a v r a c c e s s o a u n a 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 s e r v e r , 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 principali c o m a n d i interni dell'interfaccia s o n o i c a n o n i c i ed (per c a m b i a r e d i r e c t o r y ) , d i r ( p e 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 ) , g e t ( p e r s c a r i c a r e u n f i l e d a l s e r v e r ) e p u t ( p e r c a r i c a r e u n f i l e n e l s e r v e r ) . Si p u o t t e n e r e un e l e n c o d e i c o m a n d i interni di smbclient 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 0 Mon Jun 2 13:36:04 2008 ubuntu D 0 Mon Aug 11 11:21:58 2008 ubuntu stampa D 46936 blocks of size 1048576. 15188 blocks available smb: \fag\> ed ubuntu smb: \fag\ubuntu\> dir D 0 Mon Jun 2 13:36:04 D 0 Tue Jun 17 16:31:13 , libro.doc . 854016 Mon Jun 2 13:38:20 libro.odt 153089 Mon Jun 2 13:37:58 0 Mon Jun 2 13:28:55 > Figure ; D 46936 blocks of size 1048576. 15188 blocks available smb: \fag\ubuntu\> | Figura 8.11 - L'interfaccia di smbclient simile a quella dei client FTP a caratteri.

2008 2008 2008 2008 2008

Per o p e r a z i o n i p i a r t i c o l a t e s u l l e r i s o r s e o , s e m p l i c e m e n t e , p e r u n a c c e s s o p i c o m o d o a e s s e c o n s i g l i a b i l e i n s t a l l a r e 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 i s o r s a r e m o t a s u l l a m a c c h i n a l o c a l e c o m e s e si t r a t t a s s e d i un normale disco. Il c o m a n d o d a u t i l i z z a r e 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 i n t a s s i : sudo mount -t smbfs -o username=<utente> //<indirizzo>/<risorsa> <directory>

A l p o s t o d i < d i r e c t o r y > si d e v e i n s e r i r e la d i r e c t o r y , e s i s t e n t e n e l s i s t e m a , a l l ' i n t e r n o d e l l a q u a l e la risorsa r e m o t a d e v e e s s e r e resa d i s p o n i b i l e sul c l i e n 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 m o u n t -t smbfs -o u s e r n a m e = a l e / / 1 9 2 . 1 6 8 . 1 . 4 / d o c u m e n t i /mnt/samba

D o p o a v e r 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 d e l l a risorsa d o c u m e n t i sar a c c e s s i b i l e in / m n t / s a m b a . Per m o n t a r e u n a d i r e c t o r y r e m o t a in a u t o m a t i c o a l l ' a v v i o p o s s i b i l e i n t e r v e n i r e sul f i l e / e t c / f s t a b . E c c o q u i n d i l ' e s e m p i o fin q u i riportato t r a d o t t o in u n ' a p p o s i t a r i g a p e r / e t c / f s t a b : /mnt/samba smbfs username=ale,password=x 0 0

//192.168.1.4/documenti

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 p a s s w o r d (il c a r a t t e re x va c a m b i a t o c o n l ' e f f e t t i v a p a s s w o r d u t i l i z z a t a ) p e r a v e r e a c c e s s o alla risorsa d a l l ' a v v i o d e l c l i e n t s e n z a c h e l ' u t e n t e d e b b a d i g i t a r e n u l l a . N e l c a s o si c o n s e n t a la c o n n e s s i o n e s e n z a 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 ' a c c e s s o al s e r v e r S a m b a d a u n a m a c c h i n a W i n d o w s b i s o g n a a s s i c u r a r s i c h e il w o r k g r o u p i m p o s t a t o n e l l a 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 n e l f i l e / e t c / s a m b a / s m b . c o n f d e l s e r v e r . Per m o d i f i c a r e q u e s t ' u l t i m o b a s t a e n t r a r e in s m b . c o n f e c a m b i a r e il v a l o r e ass 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 n e l l a riga s e g u e n t e : workgroup = WORKGROUP F a t t o q u e s t o , le r i s o r s e e s p o r t a t e d a l s e r v e r S a m b a s a r a n n o v i s i b i l i d a l client W i n d o w s c o m e normali dischi condivisi.

Attenzione. Se sulle macchine client si utilizza W i n d o w s Vista necessario che sul server sia installata una versione 3.x di Samba, presente c o m u n q u e nei repository di U b u n t u Server 8.04.

9. Il backup
Eli strumenti per effettuare

CDpiB di riserpartizioni

va

di directory e di intere

Effettuare 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 interi dischi n o n u n m e r o scrup o l o m a u n a n e c e s s 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 i n s e r i t e in u n ' a r t i c o l a t a L A N sia c h e si a m m i n i s t r i n o u n p a i o d i P C in a m b i t o d o m e s t i c o . I n f a t t i , s e n z a d e i sani e f r e q u e n t i b a c k u p n u l l a si p o t r c o n t r o la r o t t u r a d i u n h a r d d i s k o la c a n c e l l a z i o n e a c c i d e n t a l e d i f i l e i m p o r t a n t i . In q u e s t i casi, l ' u n i c a d i f e s a p o s s i b i l e u n a 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 c h e s e g u o n o , q u i n d i , v e r r a n n o presentati alcuni diffusi strum e n t i d i b a c k u p . Si c o m i n c e r d a 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 n e , a u t i l i z z a r e s i s t e m i c l i e n t - s e r v e r a d a t t i sia a d a m b i t i a z i e n d a l i sia a reti 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 efficace strategia d i b a c k u p consiste nel creare d e i f i l e i m m a g i n e d e l l e p a r t i z i o n i p r e s e n t i s u l l ' h a r d d i s k , in m o d o t a l e c h e , in c a s o d i p r o b l e m i , sia p o s s i b i l e di una macchina s e m p l i c e m e n t e partizioni. ripristinare il c o r r e t t o f u n z i o n a m e n t o su d i s c o le i m m a g i n i d e l l e

ritrasferendo

Un simile m e t o d o di conservazione d e i dati l'ideale per s p o r a d i c h e o p e r a z i o n i d i c o p i a , m a n o n c o n s e n t e la c r e a z i o n e d i b a c k u p i n c r e m e n t a l i . P u r i s u l t a r e u t i l e , t u t t a v i a , su s i s t e m i d o m e s t i c i in c u i i d a t i r i l e v a n t 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 r e a z i o n e d i f i l e i m m a g i n e p u c o s t i t u i r e 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 sistemi simili tra loro.

Il b a c k u p incrementale p e r m e t t e di memorizzare solo i c a m b i a m e n t i avvenuti nei file d o p o l'ultimo backup effettuato. La creazione delle c o p i e di riserva dei dati, una volta effettuato il b a c k u p c o m p l e t o iniziale, d u n q u e pi rapida rispetto a un backup totale dei file.

P a r t i m a g e un'applicazione che, per mezzo di una g r a d e v o l e e semplice interfaccia, p e r m e t t e di creare e ripristinare file i m m a g i n e di partizioni

f o r m a t t a t e con un n u m e r o nutrito di filesystem. Inoltre, 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 l e i m m a g i n e i s e t t o r i v u o t i p r e s e n t i in u n a 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 v e l o c i t n e l l a c o p i a d e i d a t i c h e 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 t a d i q u e 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 , R e i s e r 3 , X F S , J F S e F A T 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 p a r t i z i o n i H F S (il f i l e s y s t e m d i M a c O S ) 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 ; anche l'utilizzo di partizioni NTFS c o n P a r t i m a g e c o n s i d e r a t o sperimentale.

Pur essendo la compatibilit di Partimage con il filesystem NTFS limitata, le probabilit di riuscire a creare un file i m m a g i n e di una partizione NTFS a u m e n t a n o se questa risulta p o c o frammentata. Prima di avviare Partimage, quindi, consigliabile d e f r a m m e n t a r e la partizione NTFS che si intende copiare.

a . Il backup

Una distribuzione per Partimage


p o s s i b i l e installa re e u t i l i z z a r e 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 S e r v e r m a c o n s i g l i a b i l e a v v a l e r s 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 sys t e m R e s c u e C D , p e r a v v i a r e il p r o g r a m m a . In q u e s t o m o d o si c e r t i c h e t u t t e le p a r t i z i o n i d i s p o n i b i l i r i s u l t i n o 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 s c a r i c a d a l l ' i n d i r i z z o : http://www.sysresccd.org/Main Page

U n a v o l t a m a s t e r i z z a t a su C D l ' i m m a g i n e I S O p i r e c e n t e d e l l a d i s t r i b u z i o n e , c h e al m o m e n t o d e l l a s t e s u r a d e l l i b r o s y s t e m r e s c u e c d - x 8 6 - 1 . 0 . 4 . i s o , si i n s e r i s c e il C D e si e f f e t t u a il b o o t d e l l a m a c c h i n a d a q u e s t o s u p p o r t o .

Elle Modifica i/isualizza Cronologia W " $ ..s

Segnalibri Strumenti

Guida

< & http://www.sysresccd.org/Main_Page , > <

.. I-jiicE

System
. HOMEPAGE .FORUMS . NEWS

Main Page
English page | Page e n f r a n a i s | Pgina e n e s p a n o l

xcue C

Welcome to SystemRescueCd
Description: SystemRescueCd is a Linux s y s t e m o n a b o o t a b l e CD-ROM f o r r e p a i r i n g y o u r s y s t e m a n d r e c o v e r i n g y o u r d a t a a f t e r a crash. It aims t o p r o v i d e a n easy way t o c a r r y o u t a d m i n tasks o n y o u r c o m p u t e r , such as c r e a t i n g a n d e d i t i n g t h e p a r t i t i o n s of t h e hard disk. It c o n t a i n s a l o t o f system utilities ( p a r t e d , p a r t i m a g e , f s t o o l s , . . . ) a n d basic tools (editors, m i d n i g h t c o m m a n d e r , n e t w o r k tools). It is very easy t o use: just b o o t t h e CDROM. The k e r n e l s u p p o r t s most of t h e i m p o r t a n t file s y s t e m s (ext2/ext3, reiserfs, reiser4. xfs, jfs, v f a t , ntfs, iso9660), as well as network filesystems (samba a n d nfs).

(SMI
. .

Home Screenshots download HowTo FAQ ChangeLog-x86 ChangeLog-ppc ChangeLog-sparc System tools Package-iist-x86 Package-list-sparc Kernel Seta-x86

Quick start Guide

(edit)

If this is t h e f i r s t t i m e y o u use SystemRescueCd, please r e a d t h e Quick start guide (english)

Recent news about this project


You can f i n d m o r e d e t a i l s a b o u t t h e r e c e n t changes m a d e in SystemRescueCd in t h e news

[edit]

s e c t i o n s o f this w e b s i t e . Below a r e t h e r e c e n t news t h a t give you m o r e details about the

Figura 9.1 - La home page della distribuzione

Live

SystemRescueCD.

Sullo s c h e r m o d e l PC apparir una s c h e r m a t a simile a 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.2). A q u e s t o p u n t o b a s t a p r e m e r e il t a s t o I n v i o p e r f a r a v v i a r e il s i s t e m a o p e r a t i v o . Q u a n d o a p p a r i r la r i g a < < 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 2 1 e si p r e m a I n v i o p e r s e l e z i o n a r e la t a s t i e r a i t a l i a n a 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 a c c e t t a r e la t a s t i e r a d i d e f a u l t , c h e quella americana.

Linux Uburitu per s e r v e r e reti

i Si _) __/ ! S , S__ ; ; :

_ _) _

S / < S/ / s \ / ! ( i I _ I !

_ ! / _ S

/ ! i

! /

! ( _

_ !_s_ s_s

/s

!s ,_!s

is

Linux kernel-2.6.25 (with Reiser4 and btrfs filesystems s u p p o r t ) Both 32bits (IA32) and 64bits (AMD64/EM64T) are supported GParted graphical partitioning tool (partition magic c l o n e ) File systems tools (ext3, r e i s e r , n t f s , ...) and LUM2 Disk tools (parted, s f d i s k , p a r t i m a g e , t e s t d i s k , p h o t o r e c ) Ntfs-3g (ntfs full read-write s u p p o r t ) and ntpass (reset windows p a s s w o r d s ) Network tools (samba, n f s , s s h , lftp, t c p d u m p , ...) . Network booting via PXE (press F6 for help) H * X.Org / Xvesa graphical environments with JUM and F i r e f o x H * Hardware autodetection and Midnight Commander H > Press F5 for help if you have boot problems with SystemRescueCd <==

W J e l c o m e to SystemRescueCd for x86 (i486+amd64) - version 1.0.4 H F 2 , F 3 , F 4 , F 5 , F 6 , F 7 for boot options and more h e l p . E n t e r to b o o t . 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 a p p a 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 r e a r e i f i l e i m m a g i n e d e l l e partizioni.

Per

non

avvertire

troppo

vincoli

dell'interfaccia

fornita

da

SystemRescueCD, p u risultare c o m o d o creare inizialmente le i m m a g i n i delle partizioni su di un disco r i g i d o esterno. Poi, q u a n d o si avr accesso alla distribuzione installata sul PC, si trasferiranno i file i m m a g i n e sull'effettivo s u p p o r t o di memorizzazione (per e s e m p i o , un DVD-ROM) utilizzando le applicazioni che si preferiscono.

Se, p e r e s e m p i o , si fa u s o d i u n h a r d d i s k U S B , 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 c r e a la d i r e c t o r y in c u i v e r r e f f e t t u a t o il m o u n t (mkdir / m n t / d i s k , ad esempio). F a t t o 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 c u i si v o g l i o n o c o p i a r e i f i l e 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 d a l a n c i a r e sar m o u n t / d e v / s d b l /mnt/disk.

N e l c a s o n o n si c o n o s c a il f i l e 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 d a m o n t a r e , si p u e s e g u i r e d m e s g n e l l a 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 c o l l e g a l ' h a r d d i s k al PC. Tra l e u l t i m e righe d i o u t p u t r e s t i t u i t e d a l c o m a n d o saranno presenti linee simili alle s e g u e n t i : [ 6633.221040] sd 4:0:0:0: (20004 M B ) [ 6633.222010] sd 4:0:0:0: [ 6633.222018] sd 4:0:0:0: [ 6633.222023] sd 4:0:0:0: [ 6633.222030] sdb: sdbl Queste righe [sdb] 3 9 0 7 0 0 8 0 5 1 2 - b y t e h a r d w a r e [sdb] W r i t e P r o t e c t is o f f [sdb] M o d e S e n s e : 08 00 00 00 [sdb] A s s u m i n g d r i v e c a c h e : w r i t e sectors

through

indicano c h e stato individuato un nuovo dispositivo nel

s i s t e m a ( l ' h a r d d i s k e s t e r n o a p p e n a c o l l e g a t o ) e c h e a e s s o s t a t o asseg n a t o il f i l e 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 i g a v e n g o n o p o i e l e n c a t e t u t t e le p a r t i z i o n i p r e s e n t i sul d i s c o : in q u e s t o c a s o l ' u n i c a p a r t i z i o n e d i sponibile /dev/sdb1.

Creare il file immagine di una partizione


E f f e t t u a t o il m o u n t d e l l a p a r t i z i o n e su c u i c o p i a r e i f i l e i m m a g i n e , n o n resta c h e a v v i a r e P a r t i m a g e l a n c i a n d o n e l l a 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 p a r t i m a g e . A p p a r i r la s c h e r m a t a v i s i b i l e in F i g u r a 9 . 3 .

-j Partit ion Image 0.6.? * Partition to save/restore -unknounramio -unknownramll -unknounramlZ -unknounraml3 -unknounraml4 -unknownraml5

-sswrnmrnrnm^mm

16.00 16.00 16.00 16.00 16.00 16.00

MiB MiB MiB MiB MiB MiB

* Image file to create/use Action to be done: (*) Save partition into a new image file ( ) Restore partition from an image file ( ) Restore an I1BR from the imagefile 1 [ 1 Connect to server IP/name of the server: SSLAlog in disabled a t compile time <Mext (F5>> <About> <Exit (F6)> Port:

Figura

9.3 - L'interfaccia

che appare

eseguendo

il comando

partimage.

U t i l i z z a r e l ' i n t e r f a c c i a d i P a r t i m a g e s e m p l i c e . C o n il t a s t o T a b si p a s s a d a u n e l e m e n t o d e l l ' i n t e r f a c c i a al s u c c e s s i v o , c o n S p a z i o si s e l e z i o n a u n ' o p z i o n e e c o n i t a s t i f r e c c i a su e g i ci si s p o s t a a l l ' i n t e r n o d i u n e l e n c o .

Come Action indicata per default Save partition into a new image file.
Per c r e a r e u n f i l e i m m a g i n e , q u i n d i , b a s t a s e l e z i o n a r e 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 c u 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 T a b 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 l e i m m a g i n e d a g e n e r a r e . Per e s e m p i o , se si v u o le c r e a r e il f i l e 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 s c r i v e / 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 n v i o . F a t t o q u e s t o si p r e m e F 5 p e r p r o s e g u i r e . N e l l a s c h e r m a t a s u c c e s s i v a si p u s c e g l i e r e il l i v e l l o d i c o m p r e s s i o n e d e l f i l e 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 l e v e r r c r e a t o c o n e s t r e m a 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 i s u l t e r d i g r a n d i d i m e n s i o n i . G z i p i n v e c e la s c e l t a d i d e f a u l t e p r e s e n t a un a c c e t t a b i l e c o m p r o m e s s o tra v e l o c i t d i creazione d e l file e d i m e n s i o n i finali di q u e s t o . B z i p 2 , infine, g e n e r e r un file dalle 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 . N e l l a g r a n p a r t e d e i casi c o n s i gliabile scegliere Gzip. U n ' a l t r a o p z i o n e i n t e r e s s a n t e If f i n i s h e d s u c c e s s f u l l y : , c h e c o n s e n t e d i s t a b i l i r e l ' a z i o n e d a i n t r a p r e n d e r e q u a n d o la c r e a z i o n e d e l f i l e i m m a g i n e t e r m i n a c o n s u c c e s s o . V a l o r 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 Reb o o t , p e r s p e g n e r e e r i a v v i a r e la m a c c h i n a a o p e r a z i o n e c o n c l u s a . N e l l a m e d e s i m a s c h e r m a t a , i n f i n e , p o s s i b i l e i n d i c a r e se si d e s i d e r a s u d d i v i d e r e l ' i m m a g i n e d e l l a p a r t i z i o n e in p i f i l e e in c h e m o d o bisogna

farlo. La scelta prestabilita per l'opzione Image split mode Into files
w h o s e s i z e is:, s e g u i t a d a l v a l o r e n u m e r i c o 2 0 3 7 M i B . Per d e f a u l t , q u i n d i , i f i l e i m m a g i n e v e n g o n o r i p a r t i t i in s i n g o l i f i l e d a l l a d i m e n s i o n e m a s s i m a di 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 v a l o r e d e l l ' o p z i o n e , i n v e c e , il f i l e i m m a g i n e sar s u d d i v i s o in p i f i l e s o l o n e l c a s o in c u i f i n i s s e l o s p a z i o d i s p o n i b i l e sul d i s p o s i t i v o . In u n a s i m i l e e v e n t u a l i t , v e r r c h i e s t o d i i n s e r i r e il p e r c o r s o d i u n n u o v o f i l e i m m a g i n e d o v e r i v e r s a r e la p a r t e r e s t a n t e d e l l a partizione da copiare.

Mettendo la spunta su Wait after each volume change, infine, il prog 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 t e n d e creare d e i file i m m a g i n e d a m e m o r i z z a r e p o i su C D - R O M

si lasci Into files whose size is: come valore di Image split mode e si
i n d i c h i c o m e valore n u m e r i c o 6 5 0 o 7 0 0 M i B , a s e c o n d a della capienza d e i dischi i m p i e g a t i . Nel caso d i utilizzo d i D V D - R O M il valore da inserire 4400 MiB.

: Macchina

Dispositivi

Aiuto sve 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 b e f o r e s a v i n g [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 rsum]

S c e 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 F 5 . Se l o si d e s i d e r a , q u i n d i , si p u i n s e r i r e u n a 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 Invio.

Life

Linux U b u n t u per s e r v e r e reti

A q u e s t o p u n t o c o m p a r i r u n a f i n e s t r a i n f o r m a t i v a sulla p a r t i z i o n e c h e si intende copiare. O r a n o n rimane che premere ancora Invio e attendere c h e il f i l e 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 n e 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 r e p a r t i z i o n i d a c o p i a r e .

Ripristinare un file immagine su discu


La p r o c e d u r a n e c e s s a r i a p e r r i p r i s t i n a r e l ' i m m a g i n e d i u n a p a r t i z i o n e s i m i l e a q u e l l a s e g u i t a p e r c r e a r e il f i l e i m m a g i n e . E c c o u n s u c c i n t o r i e p i l o g o d e i diversi passaggi: 1. si a v v i a p a r t i m a g e d a l l a c o n s o l e d i S y s t e m R e s c u e C 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 , in a l t o , la p a r t i z i o n e d a r i p r i s t i n a r e ; 2. si p r e m e il t a s t o T a b e si d i g i t a il p e r c o r s o d e l f i l e i m m a g i n e . D a t o c h e P a r t i m a g e a g g i u n g e a u t o m a t i c a m e n t e l ' e s t e n s i o n e . 0 0 0 al p r i m o file i m m a g i n e g e n e r a t o , il n o m e d e l f i l e d a r i p r i s t i n a r e d e v e c o n t e n e r e i c a r a t t e r i . 0 0 0 finali. Per e s e m p i o , se il f i l e i m m a g i n e c r e a t o d e b i a n . i m g , il n o m e d e l f i l e d a r i p r i s t i n a r e 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 w r i t t e n ) t 1 Erase free blocks with zero values

a a r

IHL
l'IM

If finished

successfully:

<Continue (F5)>

<Exit (F6)>

<Main window (F?)>

{initializing the operation t to c a n c e l , CtrlS to p a u s e , CtrlQ to r e s u m e ] Figura 9.5 - La schermata di Partimage con le opzioni per il ripristino di una partizione.

3. si preme Tab e si sceglie Restore p a r t i t i o n f r o m an image file come


A c t i o n . Si p r e m e F 5 p e r p r o s e g u i r e . N e l l a s c h e r m a t a s u c c e s s i v a 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 n o v o l u t e : p e r s i m u l a r e l'operazione s e n z a s c r i v e r e n u l l a sulla 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 o n e 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 . P o i si p r e m e a n c o r a F 5 ;

4. a p p a r i r u n a f i n e s t r a 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 sulla p a r tizione da 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 c h e l ' o p e r a z i o n e d i r i p r i s t i n o a b b i a t e r m i n e . Sar p o i p o s s i bile ripristinare altre partizioni s e g u e n d o i m e d e s i m i passaggi.

Il backup di file e directory


Per u n a s e l e z i o n e 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 d a c o p i a r e e d i r e t t o d i file e directory. N e l caso d e l ripristino ripristinare, n e c e s s a r i o a v v a l e r s i d i p r o g r a m m i c h e 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 una s e m p l i c e cartella o d i u n g r u p p o d i f i l e , i n f a 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 r e c u p e r o dell'intera partizione c o n t e n e n t e i file desiderati, c o n u n 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 risultati n o n v o l u t i . In q u e s t a s e z i o n e 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 r e s e n t a 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 d a t i , t a r e r s y n c , f o r n e n d o p e r essi la c o n s u e t a serie 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 s e m p l i c e e p o t e n t e c h e c o n s e n t e d i archiviare il c o n t e n u t o d i i n t e r e d i r e c t o r y in u n u n i c o file o su d i u n n a s t r o tar. Si g i i n c o n t r a t o q u e s t o c o m a n d o n e l l e p a g i n e d e d i c a t e alla stesura d e g l i s c r i p t e , a q u e s t o p u n t o , 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 c o n o s c e r n e le o p z i o n i d i s p o n i b i l i . N e l l a Tabella 9 . 1 v e n g o n o e l e n c a t e le o p z i o n i p r i n c i p a l i d i t a r , q u e l l e c i o c h e s e l e z i o n a n o la m o d a l i t d i f u n z i o n a m e n t o d e l p r o g r a m m a .

Tabella 9.1 - Le opzioni principali di tar. Opzione


-c o - - c r e a t e -x o - e x t r a c t -t o - l i s t -r o - a p p e n d -u o - u p d a t e

Funzione
Crea un n u o v o archivio Estrae i file c o n t e n u t i nell'archivio M o s t r a in o u t p u t c i c h e c o n t i e n e l ' a r c h i v i o A g g i u n g e d e i file a un archivio esistente A g g i u n g e d e i f i l e s o l o s e q u e s t i s o n o n u o v i o p i recenti d e l l e c o p i e m e m o r i z z a t e negli archivi Confronta i dati memorizzati nell'archivio c o n quelli

-d o compare

presenti attualmente nel sistema

-delete -A o - c a t e n a t e

E l i m i n a d e i f i l e d a l l ' a r c h i v i o . N o n f u n z i o n a p e r g l i archivi su n a s t r o 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 archivi e s i s t e n t i all'archivio indicato

A l l a serie d i o p z i o n i i n d i c a t e va a g g i u n t o u n a m p i o v e n t a g l i o d i o p z i o n i ausiliarie. Le p i i m p o r t a n t i s o n o -f, p e r i n d i c a r e il f i l e o 1 d i s p o s i t i v o c o r r i s p o n d e n t e a l l ' a r c h i v i o d a usare, -z p e r g e s t i r e archivi c o m p r e s s i c o n g z i p , -j p e r utilizzare archivi b z i p 2 e , i n f i n e , -v p e r a u m e n t a r e il l i v e l l o d i verbosit d e l l ' o u t p u t . Altre opzioni d'uso c o m u n e verranno presentate nel corso d e i paragrafi seguenti. Le o p e r a z i o n i di base con t a r Il p r o g r a m m a t a r va l a n c i a t o f o r n e n d o sulla linea d i c o m a n d o u n ' o p z i o n e principale, seguita d a altre o p z i o n i nel caso q u e s t e fossero un e s e m p i o : tar cjf h o m e _ a l e . t a r . b z 2 /home/ale richieste. Ecco

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 ( o p z i o n e c) l ' a r c h i v i o su f i l e ( f ) h o m e _ a l e . t a r . b z 2 . A l s u o i n t e r n o si c o p i a l ' i n t e r o c o n t e n u t o d i / h o m e / a l e , s o t t o d i r e c t o r y c o m p r e s e , c o m p r i m e n d o i d a t i m e d i a n t e b z i p 2 (j). C o m e si p u n o t a r e , l ' u t i l i z z o d e l c a r a t t e r e - c h e p r e c e d e le s i n g o l e o p z i o n i f a c o l t a t i v o : lo stesso c o m a n d o a v r e b b e p o t u t o essere s c r i t t o t a r -cjf, t a r -c -j -f o p p u r e , a n c o r a , t a r - - c r e a t e --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 difetti e d errori anche lievi su di un supporto, per, un archivio compresso rischia di risultare t o t a l m e n t e illeggibile. 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 della h o m e d i r e c t o r y d e l l ' u t e n t e ale. N e l l ' i m m a g i n e che s e g u e (Figura 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 un 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 t a t a 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 programma.

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 mostrati a mano a mano i file inseriti.

vengono

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 presente nel sistema, c o n f r o n t a n d o i dati d e l p r i m o c o n l'effettivo c o n t e n u t o d e l f i l e s y s t e m . P e r q u e s t a o p e r a z i o n e si e n t r a n e l l a directory

r a d i c e c o n e d / e si u t i l i z z a l ' o p z i o n e - - c o m p a r e (-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 dell'archivio, c o m e nell'esempio seguente: tar dvf /tmp/home_ale.tar.bz2

R i p o s t o l ' a r c h i v i o s u 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 n e l l a d i r e c t o r y d i q u e s t o e si l a n c e r t a r c o n l ' o p z i o n e - - l i s t (-t): tar tjf home_ale.tar.bz2

N e l 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 v e r r a n n o e l e n c a t i t u t t i i f i l e e le d i r e c t o r y p r e s e n t i n e l l ' a r c h i v i o i n d i c a t o . Infine, p e r r i p r i s t i n a r e il c o n t e n u t o d e l l ' a r c h i v i o sul d i s c o si e n t r a d i r e c t o r y r a d i c e e si e s e g u e tar home_ale.tar.bz2, c o m e nell'esempio seguente: t a r xjf /media/cdrom/home_ale.tar.bz2 nella xjf seguito dal percorso c o m p l e t o di

Per esser c e r t i c h e i p e r m e s s i nei f i l e r i p r i s t i n a t i c o r r i s p o n d a n o a q u e l li c o n t e n u t i n e l l ' a r c h i v i o , alla linea 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 s a m e - p e r m i s s i o n s (-p): tar x j p f /media/cdrom/home_ale.tar.bz2 --

Q u e s t a o p z i o n e i m p l i c i t a q u a n d o si e s t r a e un a r c h i v i o d a r o o t . Per c o n c l u d e r e q u e s t a carrellata sulle o p e r a z i o n i d i b a s e in tar, u n ' o p z i o n e u t i l e q u a n d o si d e v o n o c r e a r e c o p i e d i b a c k u p d i d i r e c t o r y v o l u m i n o s e --exclude, c h e p e r m e t t e d i e s c l u d e r e f i l e e i n t e r e d i r e c t o r y d a l l ' a r c h i v i o c h e si v u o l e g e n e r a r e . Ecco un e s e m p i o : tar cjf h o m e _ a l e . t a r . b z 2 /home/ale - - e x c l u d e *.jpg - - e x c l u d e /home/ale/Musica

In q u e s t a riga v e n g o n o esclusi d a l l ' a r c h i v i o i f i l e c h e t e r m i n a n o c o n il suffisso . j p g e l ' i n t e r a d i r e c t o r y / h o m e / a l e / M u s i c a . Se g l i e l e m e n t i d a e s c l u d e r e s o n o m o l t i c o n s i g l i a b i l e inserirli a l l ' I n t e r n o d i un f i l e d i t e s t o , un e l e m e n t o p e r ciascuna riga, e r i c h i a m a r e p o i t a r c o n l ' o p z i o n e - - e x c l u d e - f r o m (-x) s e g u i t a d a l p e r c o r s o d e l file: tar cjf h o m e _ a l e . t a r . b z 2 -X / t m p / e s c l u s i . t x t /home/ale

Richiamando le opzioni -d e -x di tar stato necessario entrare nella directory radice prima di poter lanciare il c o m a n d o . Questo perch, per default, q u a n d o crea un archivio, t a r elimina il carattere iniziale / dai nomi dei file. Per mantenere il percorso c o m p l e t o nei nomi dei file si deve usare l'opzione - -absolute-names (-p) nella creazione e nell'estrazione degli archivi.

/home/ale/Video /home/ale/Download /home/ale/doc/musica /home/ale/Immagini

mmm

"esclusi.txt"

5 L , 76C

5,0-1

Tut

Figura 9.7 - Gli elementi da escludere in un apposito file di testo.

da un archivio

possono

venire

elencati

Tar e i backup incrementali


Il p r o g r a m m a t a r p e r m e t t e d i c r e a r e d i a r c h i v 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 d a t a a l l ' o p z i o n e - - l i s t e d - i n c r e m e n t a i (-g) e a l l ' u t i l i z z o d i u n f i l e d i s n a p s h o t : si t r a t t a d i u n 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 t a r i n f o r m a z i o n i sullo stato d e i file e d e l l e d i r e c t o r y p r e s e n t i in u n archivio. A v e n d o a disposizione una "istantanea" d e l contenuto pi recente di un a r c h i v i o , q u i n d i , il p r o g r a m m a p u c r e a r e il s u c c e s s i v o f i l e 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 file 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 volta. Q u a n d o si c r e a u n a r c h i v i o 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 r e l a t i v o f i l e d i s n a p s h o t . E c c o u n e s e m p i o p e r il b a c k u p d e l l a d i r e c t o r y / e t c : t a r cf e t c - 1 5 0 8 0 8 . t a r -g / t m p / e t c . i n c / e t c

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'archivio iniziale e t c - 1 5 0 8 0 8 . t a r , c h e u n a r c h i v i o 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 t u r i f i l e i n c r e mentali sono memorizzate nello snapshot /tmp/etc.inc. Q u a n d o si v o r r a g g i o r n a r e il b a c k u p d e l l a d i r e c t o r y / e t c b i s o g n e r s e m p r e f a r e r i f e r i m e n t o al f i l e 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 archivi incrementali: t a r cf e t c - 2 1 0 8 0 8 . t a r -g /tmp/etc.inc / e t c

M e d i a n t e q u e s t i d u e c o m a n d i , d u n q u e , si p r i m a c r e a t o u n a r c h i v i o c o m p l e t o ( e t c - 1 5 0 8 0 8 . t a r ) e p o i u n a r c h i v i o i n c r e m e n t a l e ( e t c - 2 1 0 8 0 8 . t a r ) . Per e s t r a r r e il c o n t e n u t o d e g l i archivi e r i p r i s t i n a r e cos le v e r s i o n i p i a g g i o r n a t e d e i f i l e in / e t c , b i s o g n a s e g u i r e il p e r c o r s o d i c r e a z i o n e d e g l i archivi r i c h i a m a n d o il file d i s n a p s h o t r e l a t i v o : tar xf e t c - 1 5 0 8 0 8 . t a r -g / t m p / e t c . i n c tar xf e t c - 2 1 0 8 0 8 . t a r -g / t m p / e t c . i n c

Nei nomi degli archivi incrementali usati come esempio la data stata inserita manualmente, per maggiore chiarezza. Per indicare la data in m o d o automatico basta impiegare il c o m a n d o d a t e , come si visto in precedenza: tar cf e t c - $ ( d a t e + % d % m % y ) . t a r -g / t m p / e t c . i n c / e t c Per conoscere la sintassi di d a t e si legga la man page del comando (man date).

Archivi multivolume
p o s s i b i l e c r e a r e c o n t a r archivi m u l t i v o l u m e , archivi c i o c h e v e n g o n o s u d d i v s i e m e m o r i z z a t i su p i s u p p o r t i . C i p u risultare u t i l e n e l c a s o in cui, p e r il b a c k u p d e i p r o p r i d a t i , si u t i l i z z i n o nastri, u n i t Z i p o s e m p l i c i f l o p p y d i s k e u n s i n g o l o s u p p o r t o n o n risulti s u f f i c i e n t e p e r c o n t e n e r e l ' i n t e r o a r c h i v i o t a r c h e si i n t e n d e c r e a r e . L ' o p z i o n e necessaria p e r g e s t i r e g l i archivi m u l t i v o l u m e - - m u i t i - v o i u m e (-M): u t i l i z z a n d o q u e s t a o p z i o n e , n e l m o m e n t o in c u i lo s p a z i o d i s p o n i b i l e su u n s u p p o r t o si e s a u r i s c e il p r o g r a m m a a t t e n d e c h e l ' u t e n t e inserisca un n u o v o s u p p o r t o e cos fa p e r i successivi, f i n c h l ' i n t e r o a r c h i v i o n o n stato copiato. N e l l ' i m m a g i n e s e g u e n t e (Figura 9.8) p r e s e n t e u n c o m a n d o d ' e s e m p i o p e r la c r e a z i o n e d i u n a r c h i v i o m u l t i v o l u m e . A l l e o p z i o n i --create e --mult i - v o l u m e si a g g i u n g e l'utilizzo d e l f i l e d i d i s p o s i t i v o / d e v / s t O c o m e a r g o m e n t o d i --file. N e l l a riga d ' e s e m p i o r i p o r t a t a , d u n q u e , la c a r t e l l a / r o o t v i e n e a r c h i v i a t a su u n ' u n i t a n a s t r o (il file d i d i s p o s i t i v o / d e v / s t O , a p p u n t o ) utilizzando un archivio 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 c h e t a r n o n riconosca c o r r e t t a m e n t e l'avvenuto r a g g i u n g i m e n t o della fine d i un nastro. Tramite l ' o p z i o n e - L , q u i n d i , si p u indicare la lunghezza massima c h e d e v e avere un s i n g o l o s e g m e n t o d i un archivio m u l t i v o l u m e , espressa in KB. Q u a n d o un s e g m e n t o ha r a g g i u n t o tali d i m e n s i o n i , il p r o g r a m m a chieder all'utente d i inserire un n u o v o 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 s e si trattasse d i u n archivio a s stante, senza r i c h i e d e r e l'utilizzo d e l l ' o p z i o n e - - m u i t i - v o i u m e in fase 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 s u p i s u p p o r t i ; in t a 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 i n c u i p r e s e n t e tale file 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 installato 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 intere 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 . Ci 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 rete o p p u r e

p e r creare d e l l e c o p i e d i riserva d i cartelle d i a m p i e d i m e n s i o n i (directory di file 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 z o d i r s y n c 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 /home/ale esterno: sudo rsync -av /home/ale/ /media/disk/backup/ 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 disk

N e l l a r i g a r i p o r t a t a si f a u s o d e l l ' o p z i o n e

-a d i r s y n c p e r i m p o s t a r e

la

modalit archivio: questa p e r m e t t e di effettuare una copia fedele

della

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 e s s a , 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 , c o s 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 v e 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 n e l t e r m i n a l e il risultato del c o m a n d o a p p e n a impartito.

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 su un disco esterno, t: 1 di /home/ale

Le v o l t e s u c c e s s i v e in c u i si l a n c e r l o s t e s s o c o m a n d o r s y n c il c o n t e n u t o delle directory di origine (nell'esempio /home/ale) e di destinazione (/med i a / d i s k / b a c k u p ) verr " s i n c r o n i z z a t o " , c o p i a n d o sulla s e c o n d a directory

solo i file 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 s u un

s i s t e m a r e m o t o . La s i n t a s s i d a u t i l i z z a r e i n r s y n c p e r la c o p i a i n r e t e

d e l t u t t o slmile 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'ovvia differenza 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 , s e 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 c u i inviare i dati. Il m e t o d o p i s e m p l i c e p e r t r a s f e r i r e f i l e in r e m o t o c o n rsync q u e l l o d i sfruttare SSH: nella m a c c h i n a c h e 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 u n s e r v e r SSH. N e l l a r i g a 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 n e l l a c a r t e l l a . / 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 : s u d o r s y n c - a v z -e s s h - - d e l e t e lan:./copia / h o m e / m a r i o / m a r i o @ b a c k u p . ufficio.

C o m e si p u v e d e r e , l ' i n s i e m e d i o p z i o n i i n s e r i t e sulla l i n e a d i c o m a n d o un p o c o p i articolato rispetto 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 s t a t a 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 f a s c h e i dati vengano compressi durante i trasferimenti e ci consente di rendere i b a c k u p i n r e t e p i r a p i d i . L ' o p z i o n e -e, q u i n d i , s e g u i t a d a l l a s h e l l r e m o t a (ssh) d a u t i l i z z a r e 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 - - d e l e t e fa c a n c e l l a r e d a l l a 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 l e n o n p i presenti nella directory d i origine.

Bacula, un server per il backup


B a c u i a u n c o m p l e t o e a r t i c o l a t o s i s t e m a c l i e n t - s e r v e 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 c u i c o n f i g u r a z i o n e p u v a r i a r e 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 d e l l ' a m b i e n t e d i rete e delle p r o p r i e necessit. In q u e s t e p a g i n e , d u n q u e , v e r r p r o p o s t a u n a c o n f i g u r a z i o n e d i b a s e d i Bacula adatta p e r u n sistema d i b a c k u p m i n i m a l e . impostazioni

Installazione di Bacula
La s t r u t t u r a m o d u l a r e d i B a c u l a c o n s e n t e d i a d a t t a r e il s i s t e m a a l l e p i s v a r i a t e c o n f i g u r a z i o n i . N e l l a T a b e l l a 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 che costituiscono l'impalcatura dell'applicazione.

Linux U b u n t u per s e r v e r e reti

Tabella 9.2 - Le componenti di Bacula.


Director Daemon Storage Daemon 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 i n cipali del sistema di b a c k u p C o m p o n e n t e c h e si o c c u p a d i g e s t i r e i d i s p o s i t i v i in cui 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 avviat o sul c o m p u t e r su c u i s o n o p r e s e n t i t a l i d i s p o s i t i v i D e m o n e c h e va a v v i a t o su o g n i m a c c h i n a d i c u i si des i d e r a e f f e t t u a r e il b a c k u p L ' i n t e r f a c c i a 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 B a c u l a Il d a t a b a s e n e l q u a l e v e n g o n o i n s e r i t i i d a t i r e l a t i v i ai backup

File D a e m o n Console Catalog

N e l l a p r o c e d u r a d i i n s t a l l a z i o n e c h e s e g u e , p e r m a g g i o r e c h i a r e z z a , si p r e s u p p o n e c h e i t r e d e m o n i n e c e s s a r i al f u n z i o n a m e n t o d i B a c u l a s i a n o t u t t i a t t i v i sulla 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 (Director D a e m o n ) , q u e l l a d e i d i s p o s i t i v i di m e m o r i z z a z i o n e prescelti (Stor a g e D a e m o n ) e q u e l l a d e i d a t i d i c u 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 , n e g l i e s e m p i r i p o r t a t i a v v e n g o n o su d i u n u n i c o PC. Per u s a r e B a c u l a n e c e s s a r i o i n s t a l l a r e u n s i s t e m a d i d a t a b a s e a s c e l t a t r a M y S Q L , S Q L i t e e P o s t g r e S Q L . Per l ' i n s t a l l a z i o n e d i e s e m p i o si s c e l t o M y S Q L , q u i n d i p r i m a di installare Bacula b i s o g n a effettuare l'installazione d e l d a t a b a s e s c e l t o ( i n s t a l l a n d o M y S Q L p r i m a d i B a c u l a si c o n s e n t i r a q u e s t ' u l t i m o di g e n e r a r e tutti i file di c o n f i g u r a z i o n e di default): sudo apt-get instali mysql-server

D u r a n t e l'installazione d e l p a c c h e t t o verr richiesto l ' i n s e r i m e n t o di una p a s s w o r d per 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 (Figura 9.10). U n a v o l t a 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 i c u r e z z a , la p r o c e d u r a d ' i n stallazione di M y S Q L terminer. A q u e s t o p u n t o si p o s s o n o i n s t a l l a r e i n e c e s s a r i p a c c h e t t i d i B a c u l a c o n il c o m a n d o s u d o a p t - g e t i n s t a l i b a c u l a . Il g e s t o r e d i p a c c h e t t i f a r a p p a r i re u n a s c h e r m a t a in c u i v e r r r i c h i e s t o d i i n s e r i r e 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 c h e 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 utilizza

9 . Il b a c k u p

una sola m a c c h i n a , s u f f i c i e n t e p r e m e r e I n v i o p e r selezionare localhost, c i o la m a c c h i n a l o c a l e .

onfigurazione del pacchetto

Coni igurazione in corso di mysql--seruer-5 . G | Sebbene non sia o b b l i g a t o r i a , si raccomanda d'impostare una password per l'utente d'amministrazione root di M y S Q L . Se questo campo lasciata v u o t o , la password non uiene c a m b i a t a . Nuova password per l'utente root di MySQL:

N e l l a s c h e r m a t a s u c c e s s i v a b i s o g n a i n d i c a r e q u a l e u t e n t e a m m i n i s t r a il s e r v e r M y S Q L . P r e m e n d o I n v i o v e r r c o n f e r m a t a la s c e l t a d i d e f a u l t , r o o t . F a t t o 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 i n s e r i t a 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 s e r v e r ( F i g u r a 9 . 1 1 ) .

Figura

9.11 - In questa

schermata

della configurazione

di Bacula si inserisce

la

password

per amministrare

MySQL.

I n f i n e , 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 u s a t o d a B a c u l a ( b a c u l a ) e si i n s e r i s c e u n a p a s s w o r d p e r t a l e u t e n t e , d i gitandola una seconda volta p e r conferma. A q u e s t o p u n t o l'installazione d i B a c u l a 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 sistema d i backup.

La configurazione passo per passo


La s t r u t t u r a a r t i c o l a t a d i B a c u l a richiede c h e ciascuna c o m p o n e n t e d e l sistema v e n g a o p p o r t u n a m e n t e configurata. I file d i c o n f i g u r a z i o n e delle diverse c o m p o n e n t i s o n o t u t t i raccolti nella 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 c h e si i n t e n d e utilizzare i n t e r v e n e n d o nel file d i c o n f i g u r a z i o n e della c o m p o n e n t e Storage, / e t c / bacula/bacula-sd.conf. N e l file d i d e f a u l t f o r n i t o dalla d i s t r i b u z i o n e s o n o presenti, c o m m e n t a t e , delle righe di configurazione p e r un nutrito numero d i d i s p o s i t i v i d i b a c k u p . Per e s e m p i o , e c c o le r i g h e n e c e s s a r i e p e r utilizzare u n ' u n i t a n a s t r o D D S - 4 : Device { N a m e = "Tape D r i v e " Device Type = tape Media Type = DDS-4 Archive Device = /dev/stO AutomaticMount = yes; AlwaysOpen = Yes; ReraovableMedia = y e s ; 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 f o r n i t e in g r u p p i d i righe r a c c h i u s e t r a p a r e n t e s i g r a f f e e p r e c e d u t e d a u n a p a r o l a c h i a v e (che in q u e s t o c a s o 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 u n 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 , T a p e D r i v e . La r i g a M e d i a T y p e i n d i c a 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 A r c h i v e D e v i c e c o n t i e n e il f i l e d i d i s p o s i t i v o relativo all'unit di b a c k u p prescelta. Le r i g h e q u i i n d i c a t e s o n o g i p r e s e n t i n e l f i l e 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 v a r l e s u f f i c i e n t e e l i m i n a r e il c a r a t t e r e d i c o m m e n t o i n i z i a l e ('#') d a c i a s c u n a d i e s s e .

.!i-,iLfesm.:pr.

L'unit a nastro DDS-4 consente la memorizzazione di 20 GB di dati su un singolo nastro. Il sistema DDS (Digital Data Storage), nelle sue varie incarnazioni dal DDS-1 al DAT-160, fa uso di nastri digitali DAT. Il f o r m a t o pi recente, DAT-160 p e r m e t t e di salvare 80 GB di informazioni per s u p p o r t o (160 GB con compressione).

Nella c o n f i g u r a z i o n e di d e f a u l t di Bacula s o n o presenti delle righe

per

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 t e s s o . Per c o m p l e t a r e la c o n f i g u razione di q u e s t o " j o b " (lavoro) di b a c k u p p r e d e f i n i t o , p e r , necessario m o d i f i c a r e u n a riga d e l f i l e / 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 d e l l a r i g a A r c h i v e D e v i c e = c h e S e g u e N a m e = F i l e S t o r a g e e M e d i a T y p e = F i l e (nel f i l e 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 S e r v e r la riga 4 9 ) . In F i g u r a 9 . 1 2 questa riga v i e n e evidenziata.

In q u e s t a r i g a 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 c h e i b a c k u p su f i l e 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 , p e r u t i l i z z a r e 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 i g a d e v e d i v e n t a r e cos: Archive Device = /mnt/backup E f f e t t u a t a q u e s t a m o d i f i c a , p o s s i b i l e s a l v a r e il f i l e / e t c / b a c u l a / b a c u l a s d . c o n 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 i s t r u z i o n i in / e t c / b a c u l a / b a c u l a - d i r . 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 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 l e 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 uno 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 d a a d o t t a r e ) , u n F i l e S e t (le d i r e c t o r y d i c u 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 u n a S c h e d u l e (la p i a n i f i c a zione del backup). Si c o m i n c i a d a l l a s e z i o n e S t o r a g e . E c c o 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 A d d r e s s = eraclito.ufficio, l a n S D P o r t = 9103 Password = "Cv70F6pflt6pBopT4vQ0nigDrR0v3LT3Cgkiyj" D e v i c e = "Tape D r i v e " Media Type = DDS-4

La r i g a d i A d d r e s s c o n t i e n e l ' i n d i r i z z o F Q D N o l'IP d e l l a m a c c h i n a in c u 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 P a s s w o r d i n d i c a t a d e v e c o r r i s p o n d e r e alla p a s s w o r d p r e s e n t e n e l f i l e b a c u l a - s d . c o n f , n e l l a s e z i o n e D i r e c t o r ( F i g u r a 9 . 1 3 ) . La r i g a D e v i c e , q u i n d i , r i p o r t a il v a l o r e d e l l a r i g a N a m e n e l f i l e 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 r e s c e l t o . Il M e d i a Type, infi n e , d e v e c o r r i s p o n d e al M e d i a T y p e 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 d a i n s e r i r e nel b a c k u p . B i s o g n a c r e a r e u n a s e z i o n e F i l e S e t s i m i l e alla 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 e S e t v i e n e a s s e g n a t o il n o m e BackupFiles e v e n g o n o atti-

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 c u i si e f f e t t u a il b a c k u p (riga 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 file m e d i a n t e GZIP (riga c o m p r e s s ion=GZIp). La r i g a c h e i n i z i a c o n F i l e = i n d i c a c h e si v u o l e c r e a r e u n a 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 e s s a . P e r g e s t i r e 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 F i l e , in q u e s t o modo: File = /usr/local 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 indicate. directory

Linux Uburitu per s e r v e r e reti

E c c o q u i n d i u n ' i p o t e t i c a s e z i o n e S c h e d u l e d a i n s e r i r e in b a c u l a - d i r . c o n f : Schedule { Name = "BackupDaily" R u n = F u l l d a i l y at 0 8 : 0 0

La c o n s u e t a riga N a m e i n d i c a il n o m e d a d a r e a q u e s t a S c h e d u l e . N e l l a

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 u n 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) alle o r e 8 : 0 0 A M (at o s : o o ) . 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 altre righe Run c o n differ e n t i i n d i c a z i o n i t e m p o r a l i p o s s o n o e s s e r e le s e g u e n t i : Run = Incremental mon-fri at 20:05 R u n = D i f f e r e n t i a l o n 1 at 0 5 : 0 1 La p r i m a r i g a d ' e s e m p i o e f f e t t u a u n b a c k u p i n c r e m e n t a l e d a l l u n e d al v e n e r d a l l e 2 0 : 0 5 , m e n t r e la s e c o n d a crea u n b a c k u p d i f f e r e n z i a l e o g n i p r i m o d e l m e s e a l l e 5 : 0 1 . Per a v e r e u n e l e n c o e s a u s t i v o d e i v a l o r i c h e p o s s i b i l e i n s e r i r e n e l l e r i g h e R u n si v e d a la G u i d a d i B a c u l a a l l ' i n d i r i z z o : http://www.bacula.org/en/dev-manual/Bacula Users Guide.html

File Modifica Visualizza Cronologia ' :

Sfignalibri Strumenti

Guida

http://www.bacula.org/en/dev-manual/What is Bacila htmi*SECT;ON043000000000ui.

BUE:

Interactions Between the Bacula Services


T h e following block diagram shows the typical interactions b e t w e e n the Bacula Services f o r a backup job. Each block r e p r e s e n t s in general a s e p a r a t e p r o c e s s (normally a daemon). In general, the Director o v e r s e e s the f l o w of information. It also maintains the Catalog.

rU> Aiutata DU

Next| Up| Previousj Comenis| Index|

N e x t ^ T h e C w i w n t fflifttft Of U p : Bacula User's Guide P r e v i o u s : List of T a b l e s Completato

Con tents

Index

Figura 9.14 - La Guida di Bacula online del programma.

una preziosissima

fonte

di informazioni

sull'uso

Un b a c k u p differenziale memorizza t u t t i

i file modificati

dall'ultimo

b a c k u p c o m p l e t o . A differenza del b a c k u p incrementale, q u i n d i , per ripristinare la versione pi recente dei dati sar sufficiente avere accesso a l l ' u l t i m o b a c k u p c o m p l e t o e all'ultimo b a c k u p differenziale e f f e t t u a t o .

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 l e S e t e S c h e d u l e in u n u n i c o J o b c r e a n d o la s e z i o n e r e l a t i v a n e l f i l e b a c u l a - d i r . conf. Eccola: 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 i n i z i a n o c o n F i l e S e t , s c h e d u l e e S t o r a g e 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 valori inseriti nelle righe Name d e l l e rispettive sezioni d e l file

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 L o c a l B a c k u p , 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 d e l l a m a c c h i n a d i c u 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 w r i t e B o o t s t r a p , i n v e c e , i n d i c a il f i l e n e l q u a l e si d e s i d e r a scri-

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 : u n f i l e 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 n a r e u n s i s t e m a s e n z a c h e sia n e c e s s a r i a la p r e s e n z a d i un C a t a l o g . A t t i v a r e un file di 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 raccomandabile. D o p o aver inserito queste ultime 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 s a l v a r e 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 z z a t o . O r a n o n r i m a n e c h e f a r l e g g e r e la c o n f i g u r a z i o n e g i o r n a t a ai d a e m o n d i B a c u l a , 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 ag-

La console e le label
Prima 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 n a s 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 . P e r f a r e 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 i n 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 s u s c h e r m o s a r 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 (Figura 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 p o t e r lanciare bconsoie

d a un u t e n t e c o m u n e necessario che q u e -

sto a p p a r t e n g a al g r u p p o bacula: si o t t i e n e q u e s t o m e d i a n t e il c o m a n d o sudo adduser utente bacula, i n s e r e n d o al p o s t o d i utente il n o m e

e f f e t t i v o d e l l ' u t e n t e d a a g g i u n g e r e al g r u p p o .

P e r 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 , nella c o n s o l e d i Bacula b i s o g n a d i g i t a r e label e p r e m e r e Invio. 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 risorse p e r l o S t o r a g e d e f i n i t e nella 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 lista 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). P o i si i n d i c h i u n n o m e a p r o p r i a s c e l t a p e r il V o l u m e

corrente

(il n a s t r o , n e 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 n e , 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 i n c o n s o l e per q u e s t i vari 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 p o o l n o n altro c h e u n i n s i e m e d i V o l u m i , nastri o file c h e siano. Utilizzando p i p o o l p o s s i b i l e s u d d i v i d e r e e organizzare i s u p p o r t i utilizzati a s e c o n d a d e l t i p o d i b a c k u p che s i n t e n d e m e m o r i z z a r e su d i essi. A o g n i p o o l p o s s o n o essere a t t r i b u i t i p a r a m e t r i d i f f e r e n t i : q u e s t i saranno assegnati a u t o m a t i c a m e n t e ai vari V o l u m i a p p a r t e n e n t i al p o o 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 l a n c i il p r o g r a m m a questa volta acquisendo i poteri di root: sudo bconsole bconsole,

N e l l a c o n s o l e d i B a c u l a 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 r u n . V e r r m o s t r a t o un elenco dei J o b di b a c k u p che possibile avviare, c o m e queste righe di o u t p u t d ' e s e m p i o : A J o b n a m e m u s t b e specified. T h e defined J o b r e s o u r c e s a r e : 1: C l i e n t i 2 : BackupCatalog 3: R e s t o r e F i l e s 4 : LocalBackup S e l e c t 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. in

D o p o a v e r p r e m u t o I n v i o s u l l a 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 e S e t , P o o l , S t o r a g e e c o s v i a . " 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 r e a l e 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 l a n c i a r e s t a t u s p e r v i s u a l i z z a r e 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 quelli che v e r r a n n o avviati nelle prossime 24 ore (Figura 9.17). Digitando

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 Full Full

Backup Backup Backup

10 11 10

02-set-08 23:05 02-set-08 23:10 03-set-08 08:00

Clienti BackupCatalog LocalBackup

unknown* unknown* 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 d a t i d i u n b a c k u p si avvia la c o n s o l e d i B a c u l a c o n s u d o b c o n s o i e e si lancia il c o m a n d o i n t e r n o r e s t o r e . V e r r m o s t r a t o in c o n s o l e u n n u t r i t o n u m e r o d i o p z i o n i t r a c u i s c e g l i e r e . Tra q u e s t e , q u e l l a d i m a g g i o r e u t i l i t e d i p i i m m e d i a t o u t i l i z z o p r o b a b i l m e n t e la n u m e r o 5 ,

Select t h e most recent backup f o r a client, che consente di ripristinare il


b a c k u p pi recente di una d e t e r m i n a t a macchina client. Se si s c e g l i e q u e s t a o p z i o n e , d o p o a v e r i n d i c a t o il c l i e n t d i c u 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 n o si s e l e z i o n a il F i l e S e t c u i si i n t e r e s s a t i , q u i n d i si specificano u n o o pi J o b di backup. F a t t o q u e s t o , si e n t r a n e l l a m o d a l i t p e r la s e l e z i o n e d e i f i l e : in q u e s t a m o d a l i t si utilizza il c o m a n d o m a r k p e r i n d i c a r e a B a c u l a d i r i p r i s t i n a r e u n d e t e r m i n a t o f i l e o d i r e c t o r y ( c o n m a r k * si s e l e z i o n a l ' i n t e r o 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 file. Per t e r m i n a r e si d i g i t a d o n e . 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 mark done /home/ale/Documenti /home/test/archivio

Q u i n d i v e r r i n d i c a t o il V o l u m e d a i n s e r i r e p e r e f f e t t u a r e il Non rimane

ripristino

del

backup e saranno fornite informazioni dettagliate sull'operazione. p o i c h e r i s p o n d e r e " y e s " alla d o m a n d a OK t o r u n ? , cos d a p r o c e d e r e n e l r i p r i s t i n o . R i s p o n d e n d o " m o d " , i n v e c e , sar p o s s i b i l e m o d i f i c a r e a l c u n 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 c u i d o v r a n n o e s s e r e m e m o rizzati i f i l e r i p r i s t i n a t i .

ID. Costruire un Media Center


a u n e l e m e n t a r e S e r v e r a u d i o al pi completo

Media Center multimediale

G i u n t i a q u e s t o p u n t o la r e t e l o c a l e 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 n c i p a 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 i s o r s e e t u t t o p r o n t o p e r m e t t e r e in p r a t i c a le c o n o s c e n z e a c q u 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 l e s t i r u n s i s t e m a 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 n e l s a 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 u n n o r m a l e PC d o m e s t i c o , c o n la r e l a t i v a i n f r a s t r u t t u r a d i r e t e , m e n t r e il s o f t w a r e n e cessario verr f o r n i t o d i r e t t a m e n t e dalla d i s t r i b u z i o n e Linux. Gli e s e m p i d i M e d i a C e n t e r forniti nelle p a g i n e c h e s e g u o n o saranno via via p i c o m p l e s s i . Si i n i z i e r 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 m u s i c a l i e si a r r i v e r p o i a c o s t r u i r e u n c o m p l e t o s i s t e m a m u l t i m e d i a l e , ricco d i f u n zionalit e duttile c o m e solo p u esserlo un dispositivo costruito, pezzo d o p o p e z z o , s e c o n d o le e s i g e n z e d i c h i l o utilizza.

Server musicale
Si c o m i n c i a c o n u n s e m p l i c e s e r v e r m u s i c a l e : l ' a r c h i v i o m u s i c a l e sar c o n t e n u t o in u n c a p i e n t e h a r d d i s k su d i u n s e r v e r c e n t r a l e e d o v r e s s e r e a c c e s s i b i l e d a t u t t e le m a c c h i n e c o n n e s s e in r e t e , sia c h e u t i l i z z i n o L i n u x sia c h e a d o t t i n o W i n d o w s c o m e s i s t e m a o p e r a t i v o .

Per q u e s t o c o m p i t o v e r r i n s t a l l a t o S a m b a s u l s e r v e r L i n u x : 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 e n t N F S p e r W i n d o w s , la p r e s e n z a d i u n 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 r e t e M i c r o s o f t r e n d e r la f r u i z i o n e d e i c o n t e n u t i m u s i c a 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


Nella 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 installato Samba, m e n t r e il c l i e n t B h a a c c e s s o alla d i r e c t o r y c o n d i v i s a d a l l a m a c c h i n a A . Il s e r v e r p o s s i e d e n e l l a L A N l ' i n d i r i z z o IP 1 9 2 . 1 6 8 . 0 . 2 , m e n t r e il c l i e n t h a 192.168.0.3. Per c o m o d i t , n e l l a c o n n e s s i o n e al m u s i c s e r v e r si o f f r e l ' a c c e s s o ai f i l e musicali 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 a v e r i n s t a l l a t o S a m b a sulla m a c c h i n a A , q u i n d i , n e l f i l e / e t c / s a m b a / s m b . c o n f si i n s e r i s c e a l l ' i n t e r n o d e l l a s e z i o n e [Global] la r i g a : security = share e poi, p e r sicurezza, si limita la c o n n e s s i o n e alla sola rete locale c o n 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 l e / 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 i m i l i alle s e g u e n t i : [musica] path = /usr/local/share/musica comment = Musica condivisa guest ok = yes read only = no Il v a l o r e d i p a t h v a c a m b i a t o c o n la d i r e c t o r y c h e c o n t i e n e i f i l e a u d i o s u l p r o p r i o server musicale. O l t r e al c o n t r o l l o d e l t r a f f i c o in e n t r a t a 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 u n u l t e r i o r e l i v e l l o d i p r o t e z i o n e g r a z i e al f i r e w a l l . Le p o r t e d a a p r i r e p e r S a m b a s o n o le 1 3 7 , 1 3 8 U D P e le 1 3 9 , 4 4 5 TCP. E c c o d e l l e r i g h e d i e s e m p i o p e r i p t a b i e s c h e a c c e t t a n o c o n n e s s i o n i al s e r v e r S a m b a esclusivamente dalla rete locale 192.168.0.0/24: s u d o i p t a b i e s -p u d p -s 1 9 2 . 1 6 8 . 0 . 0 / 2 4 s u d o i p t a b i e s -p u d p -s 1 9 2 . 1 6 8 . 0 . 0 / 2 4 - - d p o r t 137 -j A C C E P T - - d p o r t 138 -j A C C E P T

s u d o i p t a b l e s -m s t a t e - - s t a t e N E W - m t c p -p t c p -s - - d p o r t 1 3 9 -j A C C E P T s u d o i p t a b l e s - m s t a t e - - s t a t e N E W - m t c p -p t c p -s - - d p o r t 4 4 5 -j A C C E P T

192.168.0.0/24 192.168.0.0/24

P r o t e t t o a d o v e r e 1 s e r v e r , 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 s e 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 a s s u n t o d a l c l i e n t B: n e l p r i m o c a s o s a r il s i s t e m a L i n u x n e l s a l o t t o d i c a s a 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 P C 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

alcun hard disk interno per funzionare. 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 , s u l l a s t e s s a m a c c h i n a A o c c o r r e i n s t a l l a r e , 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 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 Li-

direttamente

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 i m i l a r e ) , 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 dalla

directory / m n t / s a m b a , d o v r a g g i u n g e r e nel file / e t c / f s t a b una riga c o m e la s e g u e n t e : //192.168.0.2/musica /mnt/samba smbfs guest 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

<dump> 0 ext3 ext3 swap

<pass> 0 relatime,erro relatime sw

# /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

12,0-1 Figura 10.1 - Sulla macchina client il file /etc/fstab sar simile a questo.

Tut

N e l c a s o d i u n M e d i a C e n t e r " r i c e v e n t e " , i n v e c e , s u f f i c i e n t e inserire la riga d i / e t c / f s t a b a p p e n a riportata sulla m a c c h i n a B e q u i n d i f a r p u n t a r e u n q u a l s i a s i p l a y e r a u d i o ai f i l e m u s i c a l i c o n t e n u t i nella d i r e c t o r y / m n t / s a m b a .

Per ragioni didattiche, in questa sezione si scelto di adottare p e r la creazione d i un server musicale delle applicazioni trattate nel corso d e l v o l u m e . Un eccellente sistema alternativo M P D (Music Player Daemon): si tratta d i un player audio d i t i p o server-client che, a b b i n a t o a un software p e r lo streaming musicale c o m e icecast, consente d i costruire una vera e propria stazione radio domestica via rete! Per m a g g i o r i informazioni: h t t p : / / w w w . m u s i c p d . o r g e http://www.icecast.org.

Il Media Center completa


A v e r e n e l p r o p r i o s a l o t t o u n d i s p o s i t i v o c h e c o n s e n t a d i a s c o l t a r e la m u sica m e m o r i z z a t a su u n h a r d d i s k d i g r a n d i d i m e n s i o n i c e r t o comodo. 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 u n a m a c c h i n a m u l t i m e d i a l e c h e r a c c h i u d a in p o c h i c e n t i m e t r i d i s p a z i o le f u n z i o n a l i t d i TV, v i d e o r e g i stratore, lettore D V D , w e b browser e m o l t o altro. T u t t o q u e s t o r e s o p o s s i b i l e d a u n 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 (Personal V i d e o Recorder) p e r Linux c h i a m a t o MythTV. N e l l e p a g i n e c h e seg u o n o , q u i n d i , si f o r n i r a n n o le i s t r u z i o n i p e r i n s t a l l a r e e c o n f i g u r a r e q u e s t a applicazione. Il M e d i a C e n t e r r i s u l t a n t e sar i n s e r i t o a l l ' i n t e r n o d i u n a L A N , cos d a p e r m e t t e r e l ' a c c e s s o ai c o n t e n u t i v i d e o in e s s o m e m o r i z z a t i d a t u t t e le m a c c h i n e c o n n e s s e in r e t e . M y t h T V u n s o f t w a r e c o m p l e s s o e r i c c o d i f u n z i o n a 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 p o s s i b i l e f o r n i r e i n f o r m a z i o n i e s a u s t i v e sulla sua c o n f i g u r a z i o n e e i s u o i m o l t e p l i c i utilizzi. N e i p a r a g r a f i a s e g u i r e si p r e s u p p o n e q u i n d i c h e l ' h a r d w a r e d e l M e d i a C e n t e r (TV t u n e r , s c h e d a g r a f i c a c o n u s c i t a T V - O u t ecc.) sia g i s t a t o 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 m a g g i o r i informazioni si rimanda alla sezione D o c u m e n t a t i o n nel sito di MythTV: http://www.mythtv.org/ e alla pagina wiki d e l p r o g e t t o : http://www.mythtv.org/wiki/index.php/Main Page

Installazione di MythTV
MythTV costituito da un vasto insieme di p r o g r a m m i principali e plugin 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 n s t a l l a z i o n e e la c o n f i g u r a z i o n e , la d i s t r i buzione Ubuntu fornisce un g r u p p o di pacchetti Mythbuntu: installando

q u e s t i sar p o s s i b i l e s c e g l i e r e c o n f a c 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 a v e r e s u l p r o p r i o M e d i a C e n t e r e v e r r f o r n i t o , i n o l t r e , u n 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 c u i a v v i a r e l ' i n t e r f a c c i a d i M y t h T V .

M y t h b u n t u , oltre a essere un insieme di pacchetti, anche una vera e propria distribuzione: basata su Ubuntu, c o m e lascia intuire il n o m e , consente d i installare su un PC un sistema o p e r a t i v o c o m p l e t o con t u t t o il necessario p e r il f u n z i o n a m e n t o d i MythTV. L'home p a g e d i questa interessante distro h t t p : / / w w w . m y t h b u n t u . o r g .

Sulla m a c c h i n a c h e d e v e e s s e r e a d i b i t a a M e d i a C e n t e r , q u i n d i , si lanci il c o m a n d o seguente: sudo apt-get instali mythbuntu-desktop

V e r r a n n o cos s c a r i c a t i e i n s t a l l a 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 n e c e s s a r i o p e r la c o n f i g u r a z i o n e i n i z i a l e d i M y t h T V . D u r a n t e 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 d e i p a c c h e t t i , i n o l t r e , si p u i n d i c a r e al s i s t e m a il m o d e l l o d e l t e l e c o m a n d o a i n f r a r o s s i d a u s a r e , se c e n ' u n o d i s p o n i b i l e ( F i g u r a 10.2). p o i p o s s i b i l e c o n f i g u r a r e a n c h e u n 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 o r a a c c e d e r e a l l ' a m b i e n t e g r a f i c o f o r n i t o d a M y t h b u n t u . Per f a r e q u e s t o si d e v e l a n c i a r e G D M , il l o g i n m a n a g e r g r a f i c o , 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 richiamato automatica-

A l s u c c e s s i v o r e b o o t d e l l a m a c c h i n a , G D M sar

m e n t e a l l ' a v v i o . N e l l a s c h e r m a t a c h e a p p a r e , q u i n d i , si i n s e r i s c e 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 r e l a t i v a 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 di M y t h b u n t u , chiamato Xfce. L'aspetto c o m p l e s s i v o dell'interfaccia grafica a disposizione d e l l ' u t e 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 10.3). U n ' i n s t a l l a z i o n e 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 F r o n t e n d o a v e r e e n t r a m b i i r u o 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 r e g i s t r a z i o n i d a l l a 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 t e r f a c c i a p e r v i s u a l i z z a r e i c a n a l i t e l e v i s i v i , g u a r d a r e e i m p o s t a r e le r e g i s t r a z i o n i e cos via.

ID. Costruire u n Media center

I Eile Modifica Visualizza Cronologia Segnalibri Strumenti " SI < hleffAisr/share/mythbunturtiomeflndexhtml B

isitati- OSegnalibri smart*- >Getbng Started ~ 'LatestHeadlines-

Related Projects

!ubuntu
jxubuntu

Mythbuntu is an community su on tor Ubuntu fix setting up a standotene Myth TV Based PVR si a standalone system a for integrali! 1 existing MythTV Unlike similar prefects. Mythbuntu kee( ties with Ubuntu ion! is given back to Ubuntu. This architecture allows isfroma 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 i n i z i a l e d e l l ' i n s t a l l a z i o n e d i M y t h T V p r e s e n t e n e l sistem a il s o l o F r o n t e n d . Se il M e d i a C e n t e r u n 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 c h e d e v e e s s e r e c o l l e g a t o in r e t e a u n PC p r o v v i s t o d i T V T u n e r , l ' i n s t a l l a z i o n e p u d i r s i t e r m i n a t a . Se i n v e c e il M e d i a C e n t e r p r o v v i s t o d i s c h e d a T V e d e v e a v e r e il r u o l o d i s e r v e r m u l t i m e d i a l e p e r a l t r e m a c c h i n e , a l l o r a b i s o g n a a g g i u n g e r e t u t t o il n e c e s s a r i o p e r la f u n z i o n a l i t d i Backend. Per f a r e q u e s t o i n n a n z i t u t t o si d e v e i n s t a l l a r e il d a t a b a s e r e l a z i o n a l e M y S Q L , n e c e s s a r i o 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 i n s t a l l a r e il d a t a b a s e , q u i n d i , si p u a p r i r e u n a 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 i c 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 n e l m e n u c h e a p p a r e si e n t r a n e l s o t t o m e n u A c c e s s o r i e s e si s e l e z i o n a c o n u n clic d e l m o u s e la v o c e T e r m i n a l e . N e l l a f i n e s t r a 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 s u d o instali m y s q i - s e r v e r - 5 . o e si p r e m a I n v i o alla r i c h i e s t a d i apt-get inserimento

d e 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 r e s t i t u i t o u n e r r o r e 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 a p r i r 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 : si e n t r a in A p p l i c a -

tions, quindi si va nel sottomenu System e si fa clic su Centro di controll o M y t h b u n t u . D o p o a v e r 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 , n e l l a f i n e s t r a c h e a p p a r e si e n t r a n e l l a s e z i o n e S y s t e m R o l e s ( F i g u r a 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 clic sul p u l s a n t e A p p l i c a in b a s s o . V e r r a n n o cos i n s t a l l a 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 funzionalit di Backend di MythTV.

Mythbuntu Control Centre I Q ] S y s t e m Roles 1^1 MythTV Configuration ^ Applications & Plugins S y s t e m Roles

Although a Mythbuntu machine is intended to be used as an appliance, active roles may be added, removed, or modified at any time.
B a c k e n d 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 O Backend secondario
F r o n t e n d Role

30* Proprietary Drivers ^ Infrared Devices System Services ^ A r t w o r k & Login Behavior F j MythTV Themes ^ P r o p r i e t a r y Codecs Advanced Mangement

Backend primario

A machine containing a frontend role will connect to a master backend to obtain recorded content Nessun frontend
D e s k t o p Role

Frontend

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

A system role that will allow you to operate additional Frontend clients without installing Mythbuntu on them. Diskless Server Add DHCP server

Diskless S e r v e r

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 i n s t a l l a t o , 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 r e g i s t r a r e p r o g r a m m i TV. Per a g g i u n g e r e u l t e r i o r i m o d u l i b a s t a e n t r a r e n e l l a s e z i o n e 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 ) c h e si d e s i d e r a i n s t a l l a r e . F a c e n d o c l i c s u l l ' o p z i o n e 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 u n c o l p o s o l o 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 installare i p a c c h e t t i a g g i u n t i v i richiesti.

ID. Costruire un M e d i a c e n t e r

Nella Tabella

10.1 v e n g o n o

elencati i principali plugin disponibili

per

M y t h T V . Tra q u e s t i si c o n s i g l i a d i i n s t a l l a r e 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 u n 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 o n e d i t u t t i i contenuti audio e v i d e o possibili.

Tabella 10.1 - I principali plugin di MythTV. Nome


MythArchive MythBrowser

Funzionalit
C o n s e n t e d i masterizzare su D V D le r e g i s t r a z i o n i d a l l a T V 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 di avviare dei giochi d i r e t t a m e n t e dall'inter-

MythGame MythMusic MythVideo MythWeb

HHIHHHHHHEHHhHHHH
Un c o m p l e t o lettore musicale 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 Permette di controllare MythTV da remoto

faccia di MythTV. 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

tramite

un'interfaccia w e b

S c e l 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 o r a c h i u d e r e la f i n e s t r a 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 p a s s a r 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 : n e 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 r a f i c o b i s o g n a d u n q u e e n t r a r e in Sy-

stem e selezionare la voce MythTV Backend Setup.


N e l l a s c h e r m a t a c h e 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 c e v i t o r e TV, sceg l i e r e il t i p o d i G u i d a T V p r e f e r i t a e d e f f e t t u a r e la s c a n s i o n e d e i c a n a 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 c h e , 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 i s u l t a r e 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 : http://www.mythtv.org/wiki/index.php/Mythtv-setup T e r m i n a t o q u e s t o p a s s a g g i o d e l l a c o n f i g u r a z i o n e d i M y t h T V , si p u a v v i a r e l ' i n t e r f a c c i a 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.


D a l l a s c h e r m a t a c h e a p p a r e ( F i g u r a 1 0 . 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 visualizzare registrazioni cos c o m e a c c e d e r e alle funzionalit f o r n i t e dai vari p l u g i n installati.

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 s u l l ' i n s t a l l a z i o n e d i M y t h T V , il m o m e n t o d i f a r 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 r e m a c c h i n e c o n n e s s e in r e t e . 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 c u i i n s t a l l a t o il B a c k e n d d i M y t h T V ha c o m e i n d i r i z z o IP 1 9 2 . 1 6 8 . 1 . 4 , m e n t r e il c l i e n t su c u i a t t i v o il F r o n t e n d possiede l'indirizzo 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 u t i l i z z a r e d a l c l i e n t rem o t o n e c e s s a r i o i n s t a l l a r 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 Mythbuntu. Il Backend, nella configurazione di default, risponde risponde all'indirizzo IP

1 2 7 . 0 . 0 . 1 , q u i n d i p u e s s e r e c o n t a t t a t o s o l o d a u n F r o n t e n d a t t i v o sulla m a c c h i n a locale. Per m o d i f i c a r e l'indirizzo c u i il B a c k e n d , sulla Backend m a c c h i n a in c u i q u e s t o i n s t a l l a t o si d e v e l a n c i a r e il M y t h T V S e t u p e d entrare nella sezione 1. G e n e r a l . Nella schermata c h e appare, quindi, bisogna modificare i valori delle o p zioni Locai 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 per e n t r a m b e l'indirizzo

IP d e l l a m a c c h i n a B a c k e n d s u l l a r e t e 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 t e s s a s c h e r m a t a si i n d i c a il P I N d i s i c u r e z z a p e r le c o n n e s s i o n i r e 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: Port: 6543 0000 192.168.1.4 Status Port: 6544

Security Pin (Required): 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 Figura 10.6 - In questa schermata si configura l'indirizzo IP del Backend. Next >

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 s u l l a m a c c h i n a

Backend

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 o c a l e . P e r 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 g a : bind-address = 127.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 s u l l a L A N . S e 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 g a d i v e n t a q u i n d i c o s : bind-address = 192.168.1.4

I n f i n e si d e v e r i a v v i a r e il s e r v e r M y S Q L c o n il c o m a n d o : sudo /etc/init.d/mysql restart

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 s u l l a 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 s u l 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 l a n -

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 e n 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 r e t e e si c o l l e g h e r a e s s o .

Condividere le cartelle di MythTV con I I S XF


S e g u e n d o le i s t r u z i o n i n e 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 u n B a c k e n d d i M y t h T V c o n u n 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 o r a p o s s i b i l e g u a r d a r e la T V e d e f f e t t u a r e r e g i s t r a z i o n i s f r u t t a n d o la s c h e d a T V p r e s e n t e sulla m a c c h i n a B a c k e n d . Se si u t i l i z z a n o 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 arc h i v i v i d e o e a u d i o p r e s e n t i sul B a c k e n d n o n r i s u l t e r a n n o a c c e s s i b i l i d a l F r o n t e n d . P e r r i m e d i a r e n e c e s s a r i o c o n d i v i d e r e t r a m i t e N F S le d i r e c t o r y c o n t e n e n t i g l i a r c h i v i , in m o d o t a l e c h e il c l i e n t p o s s a l e g g e r l e . Sulla m a c c h i n a in c u i p r e s e n t e il B a c k e n d , q u i n d i , v a i n s t a l l a t o il s e r v e r N F S c o n il c o m a n d o s u d o a p t - g e t i n s t a l i n f s - k e r n e l - s e r v e r . P o i S d e v e c r e a r e u n a p p o s i t o f i l e / e t c / e x p o r t s c h e p e r m e t t a al c l i e n t d i 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 c o n g l i a r c h i v i m u l t i m e d i a l i . P e r c o m o d i t si e s p o r t a l ' i n t e r a c a r t e l l a / v a r / l i b / m y t h t v , c h e la d i r e c t o r y d i d e f a u l t n e l l a q u a l e s o n o r a c c o l t e le v a r i e 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 l e m u s i c a l i , le i m m a g i n i e i v i d e o gestiti d a i diversi p l u g i n . Ecco un file / 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 i n d i r i z z o IP 1 9 2 . 1 6 8 . 1 . 5 l ' a c c e s s o in l e t t u r a e s c r i t t u r a a / v a r / l i b / m y t h t v . D o p o a v e r m o d i f i c a t o il f i l e 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 s e r v e r N F S c o n s u d o e x p o r t f s -a. Sulla m a c c h i n a c l i e n t , q u i n d i , n o n resta c h e 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 e s s e r e il m e d e s i m o s u l F r o n t e n d rem o t o e sul B a c k e n d : s u d o m o u n t -t n f s 1 9 2 . 1 6 8 . 1 . 4 : / v a r / l i b / m y t h t v /var/lib/mythtv

I n f i n e , s u l l o s t e s s o c l i e n t , u n a v o l t a v e r i f i c a t o c h e le c a r t e 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 i a n o o r a e f f e t t i v a m e n t e a c c e s s i b i l i d a i rispettivi p l u g i n , p u e s s e r e c r e a t a 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 directory NFS: 192.168.1.4 :/var/lib/mythtv /var/lib/mythtv n f s 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 i s t r u z i o n 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 tra p i m a c c h i n e c o n n e s s e in rete utilizzando i p r o t o c o l l o N F S e S M B / C I F S . In e n t r a m b i i casi, a t a l e s c o p o , sulla 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 t a t e i n s t a l l a t e 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 i n s t a l l e r a n n o altri s o f t w a r e d i t i p o s e r v e r d ' u s o c o m u n e . Si c o m i n c e r c o n il m a i l s e r v e r P o s t f i x , p o i si p a s s e r al s e r v e r FTP v s f t p d e q u i n d i si i n s t a l l e r A p a c h e c o m e w e b s e r v e r e B I N D c o m e server DNS. Tutte queste applicazioni sono duttili, potenti ma anche notevolmente

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 l e s o l e i n f o r mazioni d i base p e r una corretta installazione e p e r una configurazione minimale.

Il mail server Postfix


P o s t f i x u n M T A ( M a i l T r a n s f e r 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 h a il c o m p i t o d i t r a s f e r i r e 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 f r a le m a c c h i n e . L ' i n s t a l l a z i o n e d i u n M T A ( o m a i l s e r v e r ) p e r m e t t e d i s m i s t a r e la p o s t a c h e g l i u t e n t i si i n v i a n o , i n 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 in u s c i t a e in e n t r a t a d a l l a r e t e . della macchina locale, m a c o n s e n t e anche d i gestire a u t o n o m a m e n t e le email

Nella catena d i p r o g r a m m i che gestiscono la posta elettronica, un client di posta c o m e Evolution o Mozilla T h u n d e r b i r d ha il ruolo d i Mail User A g e n t (MUA). L'applicazione che si occupa d i consegnare le email ai destinatari chiamata invece Mail Delivery A g e n t (MDA). Un n o t o e diffuso M D A procmail. Infine, un M U A p u scaricare la posta da un account r e m o t o c o n t a t t a n d o un server POP3 o IMAP.

Postfix fornisce 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 , inoltre riesce a smaltire carichi anche m o l t o elevati d i traffico email e i m p l e m e n t a avanz a t e p o l i t i c h e d i s i c u r e z z a . E c c o d u n q u e le i s t r u z i o n i p e r i n s t a l l a r e q u e s t o m a i l s e r v e r 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 alle p r o p r i e e s i g e n z e .

Installazione e configurazione iniziale


E s e g u e n d o il c o m a n d o s u d o a p t - g e t i n s t a l i postfix v e r r s c a r i c a t o il p a c c h e t t o p r i n c i p a l e d e l m a i l s e r v e r e sar a v v i a t a u n a 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 s e m p l i f i c a t a . Q u e s t a c o n s e n t e d i s t a b i l i r e in m o d o f a c i l e e v e l o c e d e l l e i m p o s t a z i o n i a d a t t e p e r a l c u n e t i p i c h e m o d a l i t d i utilizzo d i u n M T A . N e l l a s c h e r m a t a c h e a p p a r e d o p o a v e r l a n c i a t o il c o m a n d o p e r l ' i n s t a l l a z i o n e d i P o s t f i x , 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 u n a 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 l o r o s i g n i f i c a t o . Prem e n d o O K sar p o i p o s s i b i l e s c e g l i e r e u n a 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 u n e l e n c o ( F i g u r a 11.1). Se si v u o l e i n s t a l l a r e P o s t f i x p e r il s o l o s m i s t a m e n t o d e l l a p o s t a sulla m a c china locale (per e s e m p i o p e r ricevere i m e s s a g g i inviati dal 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 i s c h i R A I D " ) si s c e l g a d a l l ' e l e n c o la v o c e S o l o l o c a l e . Per c o n f i g u r a r e u n M T A c o n n e s s o a I n t e r n e t si i n d i c h i i n v e c e 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 u t i l i z z a r e u n m a i l s e r v e r 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 r o v i d e r , p e r l ' i n v i o d e l l e e m a i l si s e l e z i o n i la v o c e S i t o

i n t e r n e t con smarthost.

gurazioiie del pacche

Postfix Configuration Profilo generale di configurazione:

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 della scelta effettuata, c o m p a r i r a n n o delle ulteriori s c h e r m a t e di configurazione. Scegliendo Sito i n t e r n e t , per e s e m p i o , apparir una

s c h e r m a t a in c u 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 n s e r i s c e 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 verr 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 Postfix 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-

r e 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 s e r v e r , m a in e s s a s a r 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 r e lativa alla scelta 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 di configurazione:

Destinatario della posta diretta a root e postmaster. Si indica


l ' u t e n t e c u 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 a g l i a c c o u n t d i a m m i n i strazione;

Destinazioni per cui accettare la posta. Le email per i domini aggiuntivi indicati v e r r a n n o c o n s i d e r a t e locali;

Forzare gli a g g i o r n a m e n t i sincroni della coda di posta. Con i mod e r n i f i l e s y s t e m si l a s c i a 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 . L e r e 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 l e e m a i l d a l o c a l h o s t . P e r i n s e 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 alla riga , 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 l e c a s e 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 i m i t a t o ) . Se n o n c i 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 degli indirizzi locali e Protocolli intern 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 c a s o in c u 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 i s u l t a s s e 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 file d i c o n f i g u r a z i o n e d e l mail 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 impostare i valori p e r i parametri desiderati inserendo delle s e g u e n t e sintassi: parametro = valore 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 l e e m a i l in u s c i t a il r e l a y h o s t ( s m a r t host) mail.provider.it: relayhost = [mail.provider.it] righe c o n la

L ' a v e r 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 di n o n effettuare alcun M X lookup. 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 richiamabili nel file main.cf s o n o diverse centinaia: nella Tabella 11.1 n e v e n g o n o indicati alcuni tra i principali, m e n t r e un 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 nella 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 n e l l a s e z i o n e 5 d i m a n (man 5 p o s t c o n f ) .

Tabella 11.1 - Alcuni parametri fondamentali nella configurazione di Postfix. | Parametro


mydestination mydomain myhostname mynetworks myorigin relayhost

Valore
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 o c a l i I n d i c a il d o m i n i o d e l s e r v e r I n d i c a il n o m e d e l s e r v e r Le r e t i c u i c o n s e n t i t o u t i l i z z a r e il s e r v e r c o m e per l'inoltro della posta 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 l e e m a i l l o c a l i Il m a i l s e r v e r c u i d e v o n o e s s e r e i n v i a t i i m e s s a g g i p o s t a n o n locali di relay

P e r m o d i f i c a r e u n p a r a m e t r o n e 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 z z a r e 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. P e r e s e m p i o , p e r i m p o s t a r e c o m e r e lay h o s t m a i l . p r o v i d e r . i t si p u l a n c i a r e in c o n s o l e il s e g u e n t e sudo postconf -e " r e l a y h o s t = [mail.provider.it]" comando:

U n ' a l t r a o p z i o n e u t i l e 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 p a r a m e t r i d i P o s t f i x c h e h a n n o v a l o r i d i f f e r e n t i d a q u e l l i d i d e f a u l t ( F i g u r a 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 t l s s e s s i o n c a c h e database = btree:${data_directory}/smtp_scache smtpd banner = $myhostname ESMTP $mail name (Ubuntu) smtpdjtlscertfile = /etc/ssl/certs/ssl-cert-snakeoil.pem s m t p d t l s k e y file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd tls session cache database = btree:${datadirectory}/smtpd scache s m t p d u s e t l s = 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 U t i u n t u per server e reti

E s e g u e n d o postconf

-d, i n v e c e , v e n g o n o visualizzati in o u t p u t i v a l o r i d i aggiunto

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 alla stessa o p z i o n e v i e n e

u n 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 inserito. L a n c i a n d o p o s t c o n f s e n z a 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 lista d i tutti i parametri di configurazione con i rispettivi valori.

FTP server cari vsftpd


T a l v o l t a si h a 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 stire c h e c o n s e n t a d i f o r n i r e l'accesso in r e t e a d e i file p r e s e n t i su u n a m a c c h i n a . Il s e r v e r F T P v s f t p d p u e s s e r e 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 simili: grazie a q u e s t a a p p l i c a z i o n e , infatti, f o r n i r e u n servizio d i FTP " a n o nimo" davvero semplice.

Installazione del server


Un server FTP c o n f i g u r a t o p e r consentire l'accesso a n o n i m o permette

di c o n d i v i d e r e file c o n u t e n t i privi d i u n o s p e c i f i c o a c c o u n t sul server 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 blicamente. Per i n s t a l l a r e 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 a n c i a r e il comando seguente: sudo apt-get instali vsftpd sar

U n a 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 t e , q u e s t o v e r r i n s t a l l a t o ,

c r e a t o l ' u t e n t e f t p n e l s i s t e m a , c o n la r e l a t i v a 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 v s f t p d . 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 s e r v i z i o d i F T P a n o n i m o la c o n f i g u razione d e l server t e r m i n a t a . Baster q u i n d i inserire i file 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 l e m a c c h i n e c u 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 ale@pitagora:| [ OK ]

Figura 11.3 - Installando il pacchetto FTP anonimo.

vsftpd verr attivato automaticamente

un servizio

Configurazione del server


Nella configurazione preimpostata d i vsftpd abilitato l'accesso 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 n v i a r e d e i f i l e al s e r v e r . 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 a g l i u t e n t i n o r m a l i . P e r 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 n e l f i l e / e t c / v s f t p d . c o n f e cambiare i parametri desiderati. Nella Tabella 11.2 sono indicati i p a r a m e t r i p r i n c i p a l i , c o n i rispettivi valori d i d e f a u l t .

Tabella 1 1 . 2 - 1 parametri principali di v s f t p d . c o n f . Parametro


anonymous_ enable write_enable anon_upload_ enable

Valore
C o n s e n t e l'accesso agli u t e n t i a n o n i m i . D e f a u l t YES C o n s e n t e l ' a c c e s s o in s c r i t t u r a sul s e r v e r FTP. D e f a u l t N O P e r m e t t e agli u t e n t i a n o n i m i d i fare u p l o a d sul server F T P ( 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 ble). D e f a u l t N O

Parametro
anon_mkdir_ write enable

Valore
Permette agli utenti a n o n i m i di creare directory (deve 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 l e ) . fault N O I n d i c a 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 a c c e s s i a n o n i m i . P e r 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 P e r m e t t e l ' a c c e s s o FTP a g l i u t e n t i l o c a l i . D e f a u l t NO De-

anon_root local_enable

A v v i a al b o o t u n d e m o n e v s f t p d (YES), a l t r i m e n t i il serlisten ver 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 Y E S xferlog_enable 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 Y E S

E c c o , 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 s c r i t t u r a agli utenti anonimi e indicare c o m e directory di partenza / m n t / f t p : write_enable=YES anon_up1oad_enab1e=YES 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 a g l i u t e n t i n o r m a l i p u e s s e r e u t i l e i n d i c a r e q u a l i f r a q u e s t i p o s s o n o c o l l e g a r s i al s e r v e r , e s c l u d e n d o c o s t u t t i gli altri u t e n t i d a l servizio. 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 userlist_enable=YES 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 n e l l a T a b e l l a 1 1 . 2 , m e n t r e le d u e righe successive r i c h i e d o n o qualche informazione aggiuntiva. La r i g a u s e r i i s t _ e n a b i e = Y E S fa c a r i c a r e al s e r v e r la lista d i u t e n t i c o n t e n u t a n e 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 i g a u s e r i i s t _ d e n y = N o , 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 e s s e r e 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 c u i c o n c e s s o l ' a c c e s s o al s e r v e 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 c u i vietato l'accesso.

I n s e r i t e q u e s t e t r e righe in / e t c / v s f t p d . c o n f , n o n rimane p o i c h e s c r i v e r e i n / 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 c o l l e g a r s i al s e r v e r 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 s e r v e r d o p o a v e r a p p o r t a t o delle m o d i f i c h e al f i l e 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 l a n c i a r e 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 i m p o s t a z i o n i i n s e r i t e n e i file / e t c / h o s t s . a l l o w e / e t c / h o s t s . d e n y , d u n q u e p e r g e s t i r e g l i accessi p o s s i b i l e i n t e r v e n i r e su q u e sti d u e file. Per e s e m p i o , p e r c o n s e n t i r e a l l ' i n d i r i z z o IP 1 9 2 . 1 6 8 . 1 . 5 il c o l l e g a m e n t o al s e r v e r FTP si p u inserire la riga s e g u e n t e in / e t c / h o s t s . a l l o w : vsftpd: 192.168.1.5

Il web server Apache


A p a c h e u n o d e i w e b s e r v e r p i d i f f u s i su I n t e r n e t . Si t r a t t a d i u n a p i a t t a f o r m a flessibile e d i g r a n d e p o t e n z a c h e p u essere utilizzata p r o f i c u a m e n t e anche p e r fornire p a g i n e w e b all'interno d i una L A N o c o m e pratic o a m b i e n t e d i s v i l u p p o p e r la c r e a z i o n e d i a p p l i c a z i o n i w e b , se i n s e r i t o p e r e s e m p i o a l l ' i n t e r n o d i u n c o m p l e t o sistema 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 n e c e s s i t u n w e b s e r v e r 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 laboriosa 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 S e r v e r p u c o n siderarsi u n valido p u n t o di partenza.

Installazione di Apache
Per i n s t a l l a r e A p a c h e , i m o d u l i p r i n c i p a l i e a l c u n i p r o g r a m m i b a s t a l a n c i a r e il c o m a n d o s u d o a p t - g e t i n s t a l i apache2. accessori

A p a c h e un w e b server modulare. c o m p o s t o da una sezione " c o r e " centrale e da un insieme di m o d u l i aggiuntivi che forniscono funzionalit supplementari. Ci sono m o d u l i p e r gestire modalit differenti d i autenticazione, p e r a g g i u n g e r e il s u p p o r t o a SSL e TLS e cos via. Per un indice c o m p l e t o d e i m o d u l i si veda: http://httpd.apache.Org/docs/2.0/mod/

Pu capitare c h e 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 u n errore d e l genere: apache2 : Could not reliably determine the server' s fully qualified

domain name, using 127.0.1.1 for ServerName C i s i g n i f i c a c h e al s e r v e r n o n risulta a s s e g n a t o u n F Q D N . P e r r i s o l v e r e il p r o b l e m a si p u i n t e r v e n i r e s u l f i l e / e t c / h o s t s , c o m e s p i e g a t o n e l p a r a g r a f o 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 a p r i r e c o n u n e d i t o r d a 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 i n s e r i r e la riga 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 n d i r i z z o h t t p : / / 1 2 7 . 0 . 0 . 1 c o n un qualsiasi w e b browser d o v r e b b e apparire una p a g i n a simile a quella 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 11.4). B e n e ! Il w e b s e r v e r a t t i v o e perfettamente funzionante.

I File

Modifica Visualizza Cronologia Segnalibri stiumenti C , http u m 0 ri l i

Suida

I t works!

Configurazione del web server


I file 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 nella d i r e c t o r y / e t c / apache2.

N e l l a Tabella 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 file e le d i r e c t o r y t r o v a n o in / e t c / a p a c h e 2 .

che

Tabella 1 1 . 3 - 1 file e le directory in /etc/apache2. | Elemento


apache2.conf

Utilizzo
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 t a z i o n i g e n e r a l i p e r il s e r v e r w e b File d i c o n f i g u r a z i o n e ascolto del server w e b 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 u a 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 u a l i a t t i v i sul in c u i si i m p o s t a la p o r t a di

ports.conf

sites-available/

sites-enabled/

server. Q u e s t i f a n n o r i f e r i m e n t o agli h o s t virtuali p r e senti nella directory sites-available

mods-available/

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 c a r i c a r e e c o n f i g u r a r e i moduli disponibili 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 i m o d u l i a t t i v i sul server. Fanno 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

mods-enabled/

conf.d/

I f i l e in q u e s t a d i r e c t o r y v e n g o n o l e t t i d a a p a c h e 2 . c o n f . 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 u n f i l e a p p o s i t o nella d i r e c t o r y sites-available. C i a s c u n o di q u e s t i file, rappresenta un diverso host virtuale. U n o s t e s s o s e r v e r w e b p u g e s t i r e p i siti 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 z o d e g l i h o s t v i r t u a l i : la s c e l t a 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 u n a s p e c i f i c a 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 quindi,

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 , u n a s i n g o l a m a c c h i n a p u f a 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 siti 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 u n u n i c o h o s t v i r t u a l e , la c u i c o n figurazione c o n t e n u t a nel file / 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 . righe i n i z i a l i d i q u e s t o f i l e s o n o v i s i b i l i in F i g u r a 1 1 . 5 . Le

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 g a 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 permette d i i n d i c a r e l ' i n d i r i z z o IP s u c u i il w e b s e r v e r s a r i n 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 u a l i . In q u e s t a r i g a , 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 s u q u a l s i a s i i n d i r i z z o (*). La s e c o n d a r i g a 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 gurazione di un host virtuale. Questa direttiva p u applicarsi a uno specif 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 f e r i r s i a t u t t i g l i i n d i r i z z 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 v a p o i c h i u s a c o n la d i r e t t i v a </virtuaiHost>.

La r i g a 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 i g a DocumentRoot

/ v a r / w w w / , 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 c u 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 / s u l l a m a c c h i n a s e r v e r . 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 c u 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 .

Infine, le r i g h e racchiuse tra 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 tengono o p z i o n i c h e si a p p l i c a n o alle sole d i r e c t o r y indicate, sottodi-

rectory incluse. 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 iniziale d e l l e o p z i o n i d i config 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 z z a r e 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 . Nel file / 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 , 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 q u i n d i , si m o d i f i c h i la riga

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 c u i

s o n o c o n t e n u t i i file d e l p r o p r i o sito w e b . Ecco u n e s e m p i o : DocumentRoot /usr/local/share/web/

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 "default" 43L, 1009C scritti

4,1-2

Cim

Figura 1 1.6 - Cambiando poche righe nel file default possibile creare una configurazione 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 i g a D i r e c t o r y / v a r / w w w / > i n s e r e n d o al p o s t o d i / v a r / w w w / la d i r e c t o r y i n d i c a t a d a D o c u m e n t R o o t . 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 / v e r r a t t r i b u i t o alla n u o v a directory. I n f i n e , d a t o c h e s o n o s t a t e 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 f a r ril e g g e r e al s e r v e r 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 s u d o d/apache2 reload. /etc/init.

Aggiungere un sito
La c o n f i g u r a z i o n e p r e d e 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 t e r i o r i siti al w e b s e r v e r in m o d o d a v v e r o s e m p l i c e . A n c h e in q u e s t o c a s o , il p u n t o d i p a r t e n z a sar il f i l e d e f a u l t in / e t c / a p a c h e 2 / s i t e s - a v a i l a b l e . Si c r e i u n n u o v o f i l e , c h i a m a t o p e r e s e m p i o s i t o , e si c o p i al s u o i n t e r n o il c o n t e n u t o d e l file default: sudo cp /etc/apache2/sites-available/default available/sito /etc/apache2/sites-

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 l e i n t e r v e n e n d o s u l l e p r i n c i p a l i d i r e t tive di configurazione. I n n a n z i t u t t o , va e l i m i n a t a la r i g a i n i z i a l e c o n 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 : q u e s t a , i n f a t t i , v i e n e l e t t a d a l f i l e d e f a u l t e n o n b i s o g n a inserirla 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 < v i r t u a i H o s t > si d e v e p o i a g g i u n g e r e u n a riga s e r v e r N a m e c o n t e n e n t e il n o m e d i h o s t c o m p l e t o p e r il s i t o . U n a r i g a d i e s e m p i o la s e g u e n t e : ServerName sito.internet.it

La r i g a s e r v e r N a m e c o n s e n t e d i i n d i v i d u a r e il v i r t u a i H o s t c h e d e v e r i s p o n d e r e a u n a r i c h i e s t a e f f e t t u a t a al s e r v e r w e b d a u n c l i e n t . Se n o n v i e n e t r o v a t o a l c u n h o s t v i r t u a l e c h e c o r r i s p o n d a al n o m e d i h o s t r i c h i e s t o , v i e n e i n t e r p e l l a t o l ' h o s t v i r t u a l e d i d e f a u l t , n e l l a c u i c o n f i g u r a z i o n e la d i r e t t i v a ServerName assente. N e l b l o c c o < v i r t u a i H o s t > va p o i m o d i f i c a t a la r i g a 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 in m o d o t a l e c h e q u e s t a i n d i c h i la d i r e c t o r y r a d i c e p e r il n u o v o s i t o . P o i si c a m b i a la r i g a D i r e c t o r y directory radice desiderata. / v a r / w w w / > i n s e r e n d o a n c h e q u i la

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 l a 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 v a r i siti. 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 s a l v a il f i l e s i t o e l o si a t t i v a n e 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 seguente: sudo a2ensite sito comando

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 i n t a s s i , p e r d i s a b i l i t a r e u n s i t o a 2 d i s s i t e . 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 nel file sito, q u i n d i , va lanciato sudo a2dissite Dopo sito. neces-

l'esecuzione dei c o m a n d i a2ensite e a2dissite infine la c o n f i g u r a z i o n e c o n s u d o

sario far r i l e g g e r e ad A p a c h e d/apache2 reload.

/etc/init.

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 ale@pitagora:-$ |

[ OK ]

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 siti c h e rispondono a un medesimo

IP, m a p e r f a r e in m o d o c h e t a l i siti 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

sulla 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 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 tipo CNAME. 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 u a l i c o n f i g u r a t i , righe per, sufficiente a g g i u n g e r e nel file / e t c / h o s t s della m a c c h i n a server d e l l e 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 n d i r i z z o IP d e l w e b s e r v e r e i n o m i d i h o s t a c u i r i s p o n d o n o g l i h o s t v i r t u a l i i n c u i p r e s e n t e la d i rettiva ServerName.

Host: virtuali IP-based


La p r o c e d u r a di configurazione presentata in q u e s t i paragrafi mostra c o m e c r e a r e d e g l i h o s t v i r t u a l i d i t i p o n a m e - b a s e d ( u n s o l o i n d i r i z z o IP, siti identificati d a l n o m e d e l l ' h o s t richiesto dal client). Per u t i l i z z a r e h o s t v i r t u a l i I P - b a s e d (indirizzi IP d i f f e r e n t i p e r siti d i f f e r e n t i ) , i n v e c e , 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 h o s t v i r t u a l e a u n d i v e r s o i n d i r i z z o 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 r e t e o p p u r e c o n f i g u r a n d o delle interfacce d i rete virtuali. 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 sfruttarla basta ifconfig in q u e s t o m o d o : s u d o ifconfig ethO : 0 1 9 2 . 1 6 8 . 1 . 1 0 0 n e t m a s k Il comando crea l'interfaccia virtuale 255.255.255.0 le a s s e g n a l'indirizzo richiamare

eth0:0,

192.168.1.100 e dichiara una netmask 255.255.255.0. quindi possibile a t t i v a r e c o n l o s t e s s o p r o c e d i m e n t o le i n t e r f a c c e e t h 0 : 1 , e t h 0 : 2 e c o s v i a . Per c o n f i g u r a r e le i n t e r f a c c e d i r e t e v i r t u a l i a l l ' a v v i o d e l l a m a c c h i n a s u f 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 iniziali c o m e la s e g u e n t e : iface ethO: 0 inet static righe

C r e a t e le i n t e r f a c c e v i r t u a 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 i s t r u z i o n 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 h o s t v i r t u a l i n a m e - b a s e d . In q u e s t o c a s o , p e r , n o n si d e v e i n s e r i r e a l c u n a d i r e t t i v a N a m e v i r t u a i H o s t e n e l l e righe < v i r t u a i H o s t > va i n s e r i t o l ' i n d i r i z z o IP d e l l ' i n t e r f a c c i a d i r e t e virtuale abbinata all'host virtuale corrente.

Ecco q u i n d i un semplice 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 BI 1 IX D
N e l C a p i t o l o 5 si v i s t o c o m e t r a d u r r e i n o m i d i h o s t in i n d i r i z z i IP i n s e r e n d o o p p o r t u n e righe d i c o n f i g u r a z i o n e nel file / e t c / h o s t s . Q u e s t o m e t o d o p u e s s e r e f u n z i o n a l e in r e t i d i p i c c o l i s s i m e d i m e n s i o n i , m a g a r i c o s t i t u i t e d a d u e o t r e m a c c h i n e , m a c e r t o i n e f f i c i e n t e e p o c o p r a t i c o in L A N a n che p o c o pi grandi. In q u e s t o c a s o n e c e s s a r i o f a r g e s t i r e la r i s o l u z i o n e d e i n o m i d i h o s t a u n s e r v e r D N S i n s t a l l a t o su u n c o m p u t e r d e l l a L A N : le v a r i e m a c c h i n e n e l l a r e t e l o c a l e c o n t a t t e r a n n o q u i n d i il s e r v e r D N S o g n i v o l t a c h e d o v r a n n o risolvere un n o m e . Un b e l passo avanti rispetto al d o v e r r e p l i c a r e e m o d i f i c a r e il f i l e / e t c / h o s t s su t u t t i i PC d e l l a r e t e . N e i p a r a g r a f i 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 i s t r u z i o n i p e r i n s t a l l a r e il s e r v e r D N S B I N D e u t i l i z z a r n e a l c u n e f u n z i o n a l i t d i b a s e .

Installazione e configurazione iniziale


Per i n s t a l l a r e B I N D va l a n c i a t o in c o n s o l e il c o m a n d o s u d o stali a p t - g e t inb i n d 9 . A l t e r m i n e d e l l ' i n s t a l l a z i o n e , q u e l l o c h e si o t t e r r sar u n

D N S server di caching attivo nel sistema e fornito d i una configurazione quasi completa. Prima d i c o n t i n u a r e , necessaria q u a l c h e precisazione iniziale sui t i p i d i server D N S c h e possibile 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 s e r v e r i n s t a l l a t o c o n t a t t a u n a l t r o D N S s e r v e r p e r la r i s o l u z i o n e d e i n o m i e m e m o r i z z a le r i s p o s t e n e l l a c a c h e , c o s d a o f f r i r l e ai c l i e n t p e r le s u c c e s s i v e r i c h i e s t e ; 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 s e r v e r i n s t a l l a t o r i s o l v e d i r e t tamente i nomi ricercando le i n f o r m a z i o n i su d e i f i l e d i c o n f i g u r a z i o ne locali. c h i a m a t o a n c h e server m a s t e r ;

S e r v e r a u t o r i t a t i v o s e c o n d a r i o . Il DNS server ricava le informazioni richieste da un server autoritativo primario. c h i a m a t o anche server slave.

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 d i B I N D , q u i n d i , il s e r v e r D N S n o n fa a l t r o che ricevere d a t i d a u n a f o n t e e s t e r n a 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 i e n z a d i u n a r e t e l o c a l e , a u m e n t a n d o la v e l o c i t d i r i s o l u z i o n e d e i n o m i e r i d u c e n d o il t r a f f i c o D N S n e l l a 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 u n s e r v e r D N S d i c a c h i n g , q u i n di, sufficiente inserire nel file / e t c / b i n d / n a m e d . c o n f . o p t i o n s gli indirizzi IP d e i s e r v e r D N S d a 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 r o v i d e r . D o p o a v e r a p e r t o il f i l e c o n u n e d i t o r d a r o o t , si c e r c h 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 c a r a t t e r i / / iniziali d i c o m m e n t o : // f o r w a r d e r s {
/ / / / }

0 . 0 . 0 . 0 ;

Q u i n d i , si i n s e r i s c a n o al p o s t o d i o . o . o . o , - g l i i n d i r i z z i IP d e s i d e r a t i . E c c o u n e s e m p i o d i c i c h e si d e v e o t t e n e r e : forwarders { 195.110.128.1; 212.48.4.11;

}:

F a t t o q u e s t o , si riavvii il s e r v e r D N S c o n il c o m a n d o s u d o bind9 restart.

/etc/init.d/

N o n r i m a n e p o i c h e m o d i f i c a r e il f i l e / e t c / r e s o l v . c o n f d e l l a m a c c h i n a serv e r in m o d o t a l e c h e su q u e s t a v e n g a c o n t a t t a t o il s e r v e r D N S l o c a l e p e r r i s o l v e r e i n o m i . La r i g a n a m e s e r v e r d e v e d i v e n t a r e cos: nameserver 127.0.0.1

N e l caso siano p r e s e n t i p i r i g h e c h e s p e c i f i c a n o gli indirizzi d e i server D N S d a u s a r e , n e c e s s a r i o c h e il s e r v e r l o c a l e v e n g a i n d i c a t o p e r p r i m o . I n s e r i r e in / e t c / r e s o l v . c o n f sia il p r o p r i o s e r v e r D N S sia q u e l l i d e l p r o v i d e r , quindi, consente di risolvere i n o m i d i h o s t a n c h e q u a n d o il s e r v e r n e l l a r e t e l o c a l e risulta i r r a g g i u n g i b i l e ( F i g u r a 11.8).

nameserver 127.0.0.1 nameserver 195.110.128.1 Jameserver 212.48.4.11

"/etc/resolv.conf" 3L, 69C scritti Figura 11.8 - Il file /etc/resolv.conf

3,1

Tut

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 n e , il p r i m o n a m e s e r v e r i n d i c a t o n e 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 i n c u i installato BIND.

La cache d i B I N D n o n v i e n e m e m o r i z z a t a su d i s c o m a m a n t e n u t a in R A M . In caso d i eccessiva o c c u p a z i o n e d i m e m o r i a sul server p o s s i b i l e limitare le d i m e n s i o n i della cache i n s e r e n d o in n a m e d . c o n f . o p t i o n s l ' o p z i o n e max-cache-size. Per cancellare le i n f o r m a z i o n i c o n t e n u t e nella rade - s 127.0.0.1 flush.

c a c h e , invece, si lancia il c o m a n d o s u d o

Configurare un server DIM5 primaria


L'utilizzo d i B I N D c o m e server 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 servizio u t i l e in u n a 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 server D N S . E c c o q u i n d i le istruzioni p e r creare u n server 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 s a r 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 o c a -

le, d e m a n d a n d o a u n s e r v e r 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 e s t e r n i v e r s o la L A N . Per a t t i v a r e u n s e r v e r p r i m a r i o n e c e s s a r i o d e f i n i r e n e l s e r v e r u n a z o n a D N S locale. Una zona n o n altro che una parte d e l l o spazio d e i s p o n d e n t e agli indirizzi della p r o p r i a L A N . N e g l i e s e m p i c h e s e g u o n o v i e n e u t i l i z z a t o il n o m e d i d o m i n i o u f f i c i o . l a n . Q u a n d o q u e s t o a p p a r e n e 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 i n s e r i r e al s u o p o s t o il n o m e d i d o m i n i o d e l l a p r o p r i a r e t e . Le m a c c h i n e c h e c o m p o n g o n o la r e t e s o n o q u i n d i m a r c o ( 1 9 2 . 1 6 8 . 1 . 1 0 ) , c a r i o ( 1 9 2 . 1 6 8 . 1 . 2 0 ) , g i a n n i ( 1 9 2 . 1 6 8 . 1 . 3 0 ) e ns ( 1 9 2 . 1 6 8 . 1 . 4 0 ) . Su q u e s t ' u l t i m a i n s t a l l a t o il server D N S . Si a p r a d u n q u e il f i l e / 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 seguenti: z o n e "ufficio, lan" { type master; file " / e t c / b i n d / d b . ufficio. lan" ; nomi D N S : 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 , d u n q u e , c r e a r e u n a z o n a c o r r i -

};

F a t t o q u e s t o , va c o n f i g u r a t a p e r la r e t e l o c a l e u n a z o n a i n v e r s a : q u e s t a c o n s e n t e d i r i s o l v e r e u n i n d i r i z z o IP n e l r e l a t i v o n o m e d i h o s t . S e m p r e n e l f i l e n a m e d . c o n f . l o c a l si i n s e r i s c a n o q u e s t e r i g h e : zone "1.168.192.in-addr.arpa" type master; file " / e t c / b i n d / d b . 1 9 2 " ; {

};

L ' i n d i c a z i o n e 1 . 1 6 8 . 1 9 2 n e l l a p r i m a riga n o n a l t r o c h e la s c r i t t u r a i n v e r s a dei p r i m i tre n u m e r i che c o m p o n g o n o l'indirizzo della L A N . Nella terza r i g a , i n v e c e , 1 9 2 il p r i m o n u m e r o d e l l ' i n d i r i z z o . A q u e s t o p u n t o , d o p o a v e r s a l v a t o il f i l e 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 r e a r e d e i r e c o r d , c i o le v o c i d e l d a t a b a s e d e l D N S , sia p e r la z o n a d i r e t t a sia p e r q u e l l a i n v e r s a . Per la z o n a d i r e t t a si p u u s a r e c o m e m o d e l l o il f i l e / e t c / b i n d / d b . l o c a i , il c u i c o n t e n u t o v i s i b i l e in F i g u r a 1 1 . 9 .

; BIND data file for local loopback interface $TTL @ IN 604800 50A localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL NS localhost. A 127.0.0.1 AAAA : : 1

@ IN @ IN @ IN

/etc/bind/db. local" 14L, 270C Figura 11.9 - Si usa /etc/bind/db.

1,1

Tut

locai come modello per creare il file della zona.

Si c r e 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 : s u d o c p / e t c / b i n d / d b . l o c a i / e t c / b i n d / d b .ufficio. l a n 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 SOA localhost. root.localhost. (

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 i n s e r i r e 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 . , i n v e c e , si i n d i c a l ' i n d i r i z z o e m a i l d e l l ' a m m i n i s t r a t o r e sul s e r v e r 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 n e l f i l e d b . l o c a i . P e r e s e m p i o , s e si u s a 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 g a d i v e n t a c o s : @ IN SOA ns.ufficio.lan. admin.ufficio. l a n . (

Q u e s t a p r i m a r i g a m o d i f i c a t a l ' i n i z i o d e l r e c o r d S O A p e r la z o n a c h e si s t a 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 h a 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 chiusura. righe n e 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

La riga s u c c e s s i v a n e l f i l e c o n t i e n e il v a l o r e d e l s e r i a l . 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 nel file 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 . U n a 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 s e r i a l e la d a t a c u 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 r e f i n a l i in per

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 g a d i esempio: 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 l a s c i a r e 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 g a s u c c e s s i v a : @ IN NS localhost.

Q u e s t a c o n t i e n e un record di t i p o NS, che indica i server primari e second 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 anche nella riga

i n i z i a l e 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 u s a t a 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 c u i la r i g a si riferisce. Se il s e r v e r D N S n e l l a 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 i g a d e v e d i v e n t a r e cos: @ IN NS n s . ufficio. l a n .

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 1 1 . 4 , q u i n d i , viene presentato un elenco dei tipi di record D N S pi importanti.

Tabella 11.4 - I principali tipi di record DNS. I Tipo


SOA NS

Descrizione
Sta p e r S t a 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 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 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 S t a p e r P o i n T e R 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 rizzo e un n o m e 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 esser e i n v i a t e le e m a i l Fornisce a un host un n o m e supplementare

HI
PTR MX CNAME

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 n e 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 n d i r i z z 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 o c a l e . Si i n s e r i s c e 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 s u 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 n e 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 : marco cario gianni IN IN IN A A A 192.168.1.10 192.168.1.20 192.168.1.30 il f i l e

F a t t o q u e s t o , s o n o s t a 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 :

d b . u f f i c i o . i a n risultante visibile n e l l ' i m m a g i n e che s e g u e (Figura 11.10).

f BIND data file for local loopback interface $TTL 604800 IN SOA n s . u f f i c i o . I a n . admin.ufficio.lan. ( 2008092800 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL g IN NS n s . u f f i c i o . I a n . 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,lan 1 ' 16 linee --6%-Figura 11.10-11 file /etc/bind/db.ufficio.lan dopo le modifiche.

1,1

Tut

P o i si p a s s a 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 n v e r s a . A n c h e in q u e s t o c a s o si u t i l i z z a u n f i l e c o m e m o d e l l o , d b . 1 2 7 : sudo cp /etc/bind/db.127 /etc/bind/db.192

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

diretta. visto

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 i g a d e l r e c o r d S O A n e l m o d 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 . P o i 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 n e , si i n s e r i s c e 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 n e l l a r e t e l o c a l e , in q u e s t o 10 20 30 40 IN IN IN IN PTR PTR PTR PTR modo: marco.ufficio, lan. cario.ufficio, l a n . g i a n n i . ufficio, l a n . n s .ufficio, l a n .

1 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 s a r s i m i l e a l l ' i m m a g i n e s e 1 g u e n t e ( F i g u r a 1 1 . 1 1 ) . 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 nata e n o n resta c h e riavviare B I N D c o n sudo /etc/init ,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 10 IN 20 IN 30 IN 40 IN NS PTR PTR PTR PTR ns. ufficio, lan. marco.ufficio.lan. cario.ufficio.lan. gianni.ufficio.lan. ns.ufficio.lan.

("/etc/bind/db. 192" 16L, 376C scritti Figura 11.11 - Il file /etc/bind/db. 192 con la configurazione

1,1 della zona inversa.

Tut

12. Ottimizzare il sistema


La procedura per c o m p i l a r e facilmente il

kernel e le applicazioni.

A r r i v a t i a q u e s t o p u n t o , q u e l l o c h e si o t t e n u t o u n a 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 n e c e s s a r i o p e r e r o g a r e servizi nella rete o p e r d i v e n t a r e u n 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 c u i si d i s p o n e n o n s f r u t t a t o al m e g l i o d a l s i s t e m a o p e r a t i v o o d a i p r o g r a m m i c h e si u t i l i z z a n o 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 i m i z z a r e il sis t e m a c o m p i l a n d o il k e r n e l e l e a p p l i c a z i o n i , in m o d o t a l e d a o t t e n e r e la m i g l i o r e aderenza possibile tra h a r d w a r e p o s s e d u t o e software utilizzato.

Compilazione del kernel


Il k e r n e l f o r n i t o c o n U b u n t u Server d o v r e b b e c o n s e n t i r e p r e s t a z i o n i s o d d i s f a c e n t i nella m a g g i o r p a r t e d e l l e s i t u a z i o n i e d e l l e c o n f i g u r a z i o n 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 c u i c o n s i g l i a b i l e c o m p i l a r e u n k e r n e l p e r s o n a l i z z a t o la ricerca d i u n a 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 , infatti, c h e un dispositivo v e n g a riconosciuto c o r r e t t a m e n t e d a l kernel d i default e ci p u c o m p o r t a r e malfunzionamenti, prestazioni mediocri o l ' i m p o s s i b i l i t d i u s a r e il d i s p o s i t i v o s t e s s o . A l t r e v o l t e u n e l e m e n t o ril e v a n t e d e l P C , c o m e p e r e s e m p i o la C P U , v i e n e s f r u t t a t o al m a s s i m o d e l l e p o t e n z i a l i t . riconosciuto ma non

Per c o m p i l a r e u n p r o p r i o k e r n e l n e c e s s a r i o s c e g l i e r e q u a l e v e r s i o n e d e i s o r g e n t i d e l k e r n e l Linux utilizzare: le s c e l t e p r i n c i p a l i s o n o il k e r n e l u f f i c i a le, c h i a m a t o a n c h e k e r n e l v a n i i i a , e il k e r n e l U b u n t u . S c e g l i e n d o il p r i m o si ha la p o s s i b i l i t d i scaricare s e m p r e l ' u l t i m a r e l e a s e s t a b i l e d e l k e r n e l d i s p o n i b i l e , m e n t r e il s e c o n d o e s p r e s s a m e n t e p e n s a t o p e r integrarsi nel sistema U b u n t u e fornisce spesso patch e driver pi aggiornati rispetto al c o r r i s p e t t i v o k e r n e l v a n i l l a .

Kernel ufficiale e kernel Ubuntu


Per p o t e r c o m p i l a r e il k e r n e l si i n s t a l l i n o i n n a n z i t u t t o a l c u n i p a c c h e t t i c o n il c o m a n d o s e g u e n t e : sudo a p t - g e t i n s t a l i b u i l d - e s s e n t i a l f a k e r o o t k e r n e l - p a c k a g e libncurses5-dev bin86

Q u i n d i , se si d e s i d e r a a d o t t a r e il k e r n e l u f f i c i a l e , si scarichi l ' u l t i m a v e r s i o n e s t a b i l e d e l k e r n e l d a 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 d e l l a stesura d i q u e s t o l i b r o l ' u l t i m a release d i s p o n i b i l e la 2 . 6 . 2 6 . 5 e p e r e f f e t t u a r e il d o w n l o a d d e l f i l e c o r r i s p o n d e n t e b a s t a l a n c i a r e in c o n s o l e 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 l e Modifies ^isualizza Cronologia Sfignalibri Strumenti Guide V & < http://www.kemel.orq/ " > C4

The Linux Kernel Archives


Welcome t o t h e Linux Kernel Archives. This is t h e p r i m a r y site f o r t h e Linux kernel source, b u t it has m u c h m o r e t h a n j u s t Linux

Protocol
HTTP FTP RSYNC The latest stable version of the Linux kernel is:

Location
;http://www. k e r n e l . o r g / p u b / ftR.;//ftp A .keijieLQ.rg/pub/ rsync://rsync.kernel.org/pub/ 2.6.26.5 2008-09-08 17:43 UTC F V VI Q Chanqeloq 2008-09-21 22:48 UTC B V VI C Channeled Chanqelon Q Chanqeloq Chanqeloq Chanqeloq Chanqeloq 2008-09-07 10:22 UTC V 2008-09-07 16:41 UTC fi V 2004-02-25 00:28 UTC V 2005-01-12 23:55 UTC fi V V]

The latest prepatch for the stable Linux kernel tree is: 2.6.27-rc7 The latest 2.4 version of the Linux kernel is: The latest prepatch for the 2.4 Linux kernel tree is: The latest 2.2 version of the Linux kernel is: The latest prepatch for the 2.2 Linux kernel tree is: The latest -mm patch to the stable Linux kernels is: 2.4.36.7 2.4.37-rcl 2.2.26 2.2.27-rc2

The latest snapshot for the stable Linux kernel tree is: 2.6.27-rc7-ait5 2008-09-26 12:01 UTC fi V

2.6.27-rc5-mmI 2008-09-05 05:03 UTC fi V

Figura

12.1 - Da www.kernel.org

possbile

scaricare

il kernel

Linux

ufficiale.

Poi si c o p i a il f i l e s c a r i c a t o in / u s r / s r c e lo si s c o m p a t t a c o n : tar xvfj linux-2.6.26.5.tar.bz2

Per poter scrivere nella directory /usr/src necessario che l'utente attivo sia presente nel g r u p p o src. Per inserire nel g r u p p o l'utente ale, per esempio, si esegue il c o m a n d o sudo adduser ale src.

N e l c a s o si p r e f e r i s c a i n v e c e utilizzare il k e r n e l f o r n i t o d a U b u n t u , si d e v e installare il p a c c h e t t o l i n u x - s o u r c e c o n : sudo a p t - g e t instali linux-source

Poi si e n t r a nella d i r e c t o r y / u s r / s r c e si s c o m p a t t a l ' a r c h i v i o d e l k e r n e l c o n 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 c o n f i g u r a z i o n e d e l k e r n e l : si e n t r a nella d i r e c t o r y in c u i s o n o stati s c o m p a t t a t i i s o r g e n t i d e l k e r n e l ( l i n u x - 2 . 6 . 2 6 . 5 p e r il k e r n e l v a n i l l a , l i n u x - s o u r c e - 2 . 6 . 2 4 p e r q u e l l o U b u n t u ) e si lancia il C o m a n d o m a k e menuconfig. A p p a r i r l ' i n t e r f a c c i a p e r la c o n f i g u r a z i o n e d e l k e r n e l (Figura 12.2). Q u i possibile attivare o disabilitare delle parti d e l kernel o p p u r e d e i m o d u l i (cio e l e m e n t i d e l k e r n e l e s t e r n i al k e r n e l stesso), a p r o p r i a scelta. Per o r i e n t a r s i si p u s f r u t t a r e il s i s t e m a d i h e l p i n t e r n o : b a s t a e v i d e n z i a r e u n a v o c e n e l m e n u e q u i n d i s e l e z i o n a r e il p u l s a n t e H e l p in b a s s o , cos d a o t t e n e r e u n a p a g i n a e s p l i c a t i v a sulla v o c e c o r r e n t e . T e r m i n a t a la c o n f i g u r a z i o n e , si p r e m a E x i t p e r uscire d a l l ' i n t e r f a c c i a e si s c e l g a d i salvare le n u o v e i m p o s t a z i o n i p e r il k e r n e l . Si t o r n e r cos al p r o m p t della console. A q u e s t o p u n t o bisogna eliminare dalla directory d e l kernel i file generati dalle eventuali c o m p i l a z i o n 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> t o e x i t , <?> f o r Help, </> f o r 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.


P o i 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 s e guente: make-kpkg --rootcmd fakeroot --initrd kernel_image modules_image

U n a 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 n e l l a 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 . P e r i n s t a l l a r l o , q u i n d i , n o n r e s t e r c h e u s a r e il c o m a n d o s u d o 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 l e 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 kernel.

E p o s s i b i l e , p e r , u t i l i z z a r e 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 kernel Ubuntu di default. P e r 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 kernel Ubuntu

n e 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 . P e r e s e m p i o , s e 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 lanciare sar: s u d o c p /boot/config-2 . 6 . 2 4 - 1 9 - s e r v e r P o i si p o t r richiamare make / u s r / s r c / l i n u x - 2 . 6 . 2 6 . 5 / . config

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 l e

impostazioni d e l kernel a partire dalla configurazione di U b u n t u . Nel caso d i utilizzo d i u n a versione d e l kernel p i a g g i o r n a t a rispetto 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 S e r v e r , 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 u n a 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 semplici d o m a n d e relative alle o p z i o n i a g g i u n t e d a u n a release all'altra (Figura 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 ( B S D P R 0 C E S S A C C T V 3 ) [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 ni p r o g r a m m i o librerie. A n c h e risultare utile c o m p i l a r e comusono in q u e s t o c a s o , c i c h e si r i c e r c a

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

miglioramenti

s b a l o r d i t i v i m a , s o p r a t t u t t o n e l c a s o d i i n t e r v e n 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 nella 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 risultare 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 u n 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 i m i z z a t a d e i s o r g e n t i , c h i a m a t o a p t - b u i l d . P e r i n s t a l l a r l o si d e v e l a n c i a re s u d o a p t - g e t i n s t a l i apt-build. D u r a n t e 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 v i e n e c h i e s t o d i s t a b i l i r e il l i v e l l o d i o t t i m i z z a z i o n e p e r i p a c c h e t t i : si c o n s i g l i a d i lasciare il livello 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 t a l e c h e v e n ga attivato un repository locale c o n i pacchetti compilati tramite apt-build. I n f i n e , si i n d i c a l ' a r c h i t e t t u r a d e l p r o p r i o P C t r a q u e l l e p r e s e n t i in u n e l e n c o ( F i g u r a 12.4) e si r i t o r n a al p r o m p t d e 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 i n c e r a r s i c h e n e l f i l e / e t c / a p t / s o u r c e s . l i s t le r i g h e r e l a t i v e 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 a n o c o m m e n t a t e . T u t t e le

r i g h e d e b - s r c c o n 1 c a r a t t e r e # i n i z i a l e , q u i n d i , v a n n o U n a riga c o m e : # deb-src http://it.archive.ubuntu.com/ubuntu/ d e v e d i v e n t a r e cos: deb-src http://it.archive.ubuntu.com/ubuntu/

decommentate.

hardy main

restricted

hardy main

restricted

F a t t o q u e s t o , va a g g i o r n a t o l ' e l e n c o d e i p a c c h e t t i nei r e p o s i t o r y c o n sudo apt-get u p d a t e . O r a si p o s s o n o c o m p i l a r e e o t t i m i z z a r e t u t t i i p a c c h e t t i d e s i d e r a t i . Per e s e m p i o , p e r scaricare, c o m p i l a r e e installare a p a c h e 2 si lanci il c o m a n d o s e g u e n t e : sudo a p t - b u i l d i n s t a l i apache2

I n f i n e , 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 i n s t a l l a t o nel sis t e m a , va a g g i u n t a al c o m a n d o i n t e r n o i n s t a l i d i a p t - b u i l d --reinstall. l'opzione

Potrebbero piacerti anche