Sei sulla pagina 1di 300

Linux Ubuntu i

per server e reti


*pro
DigitalLifeStyle
Alessandro Di ilicola

isario per installare e amministrare un server »


li risorse con macchine Linux e Windows »
configurazione di web server, mail server e DOS server »
reare un completo fììedia Center e metterlo in rete »
EDIZIONI

FAG * >ro
MILANO DigitalLifeStyle

kl centro non c'è la macchina. ci siamo noi. Con la nostra voglia di capire e ili fare.
Informazione essenziale ma completa, raccolta direttamente sul campo.
Ecco i libri Digital UfeStyle Pro. Uno strumento nuovo, per nuovi lettori,
che nel digitale trovano la loro passione o la loro professione.

Linux Ubuntu per server e reti


Quando si pensa al sistema operativo Linux in ambito server si pensa solitamente ad austeri centri di calcolo, ad ambienti di ricerca all'avanguardia
e a enormi reti di computer. Un server Linux, però, può essere anche un comune PC e una rete di computer può essere costituita, perché no, da una
manciata di macchine. Una rete di tal fatta può venire sfruttata per condividere una medesima stampante fra più PC o per creare un file server
grazie al quale i membri di un team di lavoro possono scambiarsi documenti con estrema facilità. Singole macchine, poi. possono essere adibite
al ruolo di uieb server e mail server oppure, ancora, possono venire impiegate per allestire dei media center. Ouesto libro spiega come costruire
dalle fondamenta reti e server basati su Linux, utilizzando come guida la distribuzione Ubuntu Server: la scelta di un'unica distribuzione consente
di fornire informazioni mirate su strumenti specifici e di guidare passo per passo il lettore anche nelle procedure più articolate, per guanto molte
indicazioni di carattere metodologico fornite nel libro abbiano un valore generale.

Tra gli argomenti trattati


• Installazione di Ubuntu Server sui PC della rete, con indicazioni su quali filesystem impiegare e quale software installare per i
singoli compiti.
• L'ambiente di lavoro di un server: la shell, gli editor principali, gli strumenti per gestire la rete e quelli per creare copie di backup dei dati.
• L'amministrazione del sistema da remoto con strumenti sicuri. Vengono trattate anche l'amministrazione via uieb e quella mediante inter-
faccia grafica.
• Installazione e configurazione dei principali software server. Dal filesystem di rete (1FS al server CUPS per la condivisione delle stampanti,
dal web server Apache al mail server Postfix.
• Come costruire dalle fondamenta un flledia Center audio o audio/video.

L'autore
Alessandro Di nicola collabora con riviste di informatica come Linux Pro e Linux (llagazine, per la quale redige mese per mese l'articolo di
copertina, ed è dottore in Lettere moderne. Ha precedentemente pubblicato per le Edizioni FA6 il libro "Linux Ubuntu per l'uso desktnn"

Edizioni FAG srl


via Garibaldi. 5 - 20090 Assago (mi)
ISBN 978-88-8233-7

tel.024885241 -uiujuj.fag.it

ujujuj.digital-lifestyle.it € 25,00
9 788882 3374
9 * i f • r *

J C
W

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

Copyright © 2008 Edizioni FAG Milano


Via G. Garibaldi 5 - 20090 Assago (MI) - www.fag.it

Finito di stampare: nel mese di novembre 2008 da escom - Milano

Nessuna parte del presente libro può essere riprodotta, memorizzata in un sistema che ne permetta
l'elaborazione, né trasmessa in qualsivoglia forma e con qualsivoglia mezzo elettronico o meccanico,
né può essere fotocopiata, riprodotta o registrata altrimenti, senza previo consenso scritto dell'editore,
tranne nel caso di brevi citazioni contenute in articoli di crìtica o recensioni.
La presente pubblicazione contiene le opinioni dell'autore e ha lo scopo di fornire informazioni precise
e accurate. L'elaborazione dei testi, anche se curata con scrupolosa attenzione, non può comportare
specifiche responsabilità in capo all'autore e/o all'editore per eventuali errori o inesattezze.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive aziende.L'autore
detiene i diritti per tutte le fotografie, i testi e le illustrazioni che compongono questo libro.
Si ringraziano CanonicaI e il progetto Ubuntu per l'uso del logo in copertina (il libro è una pubblicazione
indipendente e non è formalmente collegato né a Canonical né al progetto Ubuntu).
The book is not endorsed by Canonical and is not related to the Ubuntu project in any way.
Sommario
INTRODUZIONE 7

1. INSTALLAZIONE 11
Il CD di installazione 11
Avvio dal CD 13
Installare Ubuntu Server 15
Il partizionamento dei dischi 20
I dischi in RAID 37
Dati utente e software 44

2. GESTIRE IL SISTEMA 47
Amministrare gli utenti 47
La gestione dei pacchetti 60
Le partizioni 75

3. GLI STRUMENTI DELL'AMMINISTRATORE 91


La shell Bash 91
L'editor vi 108

4. LOG E PROCESSI PERIODICI 123


Gestire i log 123
Processi periodici con cron 130

5. IL SERVER È IN RETE 137


Le informazioni di base 137
Le reti Wi-Fi 150
Gli strumenti di controllo 159

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


II firewall 163
Proteggere i servizi 174
7. AMMINISTRARE D A R E M O T O 183
Un terminale remoto 183
Amministrazione dal w e b 195
Q u a n d o il server grafico è remoto 204

8. CONDIVIDERE IN RETE 211


Il server di stampa 211
Filesystem di rete NFS 218
Condividere con Samba 222

9. IL BACKUP 231
Copiare intere partizioni 231
Il backup di file e directory 239
Bacula, un server per il backup 247

10. COSTRUIRE UN MEDIA CENTER 261


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

11.1 SERVER 273


Il mail server Postfix 273
FTP server con vsftpd 278
Il w e b server Apache 281
Il server DNS BIND 289

12. OTTIMIZZARE IL SISTEMA 297


Compilazione del kernel 297
Compilare i p r o g r a m m i 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 quan-
d 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 ser-
vire 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 pra-
tico 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 dut-
tile ed economico Media Center: insomma, dagli austeri centri di calcolo
si è passati al salotto di casa!
In questo libro viene spiegato come allestire server e reti utilizzando Li-
nux, un sistema 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 "di-
stro"): 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 distri-
buzione 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 cor-
rette falle di sicurezza e saranno risolti i b u g rilevanti nelle applicazioni.

A differenza di Ubuntu Server, nella versione di Ubuntu dedicata all'uten-


za desktop il supporto per le release LTS è di tre anni. Nelle normali
release di Ubuntu, quelle prive della dicitura LTS e che vengono rilasciate
ogni 6 mesi, il supporto ha invece una durata di soli 18 mesi.

Ubuntu Server è una distro derivata da Debian, una storica distribuzione


Linux: questo significa che le istruzioni e le nozioni fornite in questo libro
risulteranno valide, richiedendo solo minimi adattamenti, anche nel caso
di utilizzo di sistemi Debian. Nel caso di altre distribuzioni, invece, le mo-
difiche necessarie per adattare comandi e procedure presenti nei capitoli
a seguire possono risultare più rilevanti.
Nel 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 ini-
ziale della rete locale. Si comincia con la presentazione di informazioni
generiche e quindi si individuano gli strumenti necessari per inserire una
macchina all'interno di una rete cablata o senza fili. Infine, si fa la cono-
scenza di una manciata di programmi necessari per controllare il corretto
funzionamento della rete stessa.
Il sesto capitolo costituisce una sorta di spartiacque nel volume. Gli ar-
g 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 con-
figurazione della rete: si allestisce un firewall, quindi si scopre c o m e con-
dividere 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 ter-
minale 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-Win-
dows e presenta una rapida guida all'installazione e all'utilizzo del server
Samba.
Il nono capitolo fornisce una panoramica sugli strumenti di backup dispo-
nibili su Linux: si comincia presentando Partimage, un pratico e semplice
software per la creazione di immagini di intere partizioni, poi si passa alla
gestione del backup di file con tar e rsync e infine si arriva a installare e a
utilizzare Bacula, un 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 ac-
quisite 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 in-
stallano 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, otti-
mizzando 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 di ubuntu Server e in-


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

Per installare Ubuntu Server su una macchina è necessario usare un appo-


sito 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
Online training
for the desktop
: Ayailatne at the
Get Ubuntu Ubuntu shop te**- w

» What is Ubuntu? 1 Get Ubunty » Download Ubuntu


» Gal Ubuntu
The fastest way for most people to get Ubuntu is by downloading the CO Installer The CO Installer is nearly j
• Download 700MB If you don't have a fast internet connection you may want to consider requesting a CO
' Puf chase
> Request CDs 61Download Ubuntu J Buy UbsjnttJerr ) Rssjuest free
- Release Notes
» Upgrading Which release do youDwant? CDs

* Countdown Ü Ubuntu 8.04 LTS Desktop Edition - Supported to 2011


: f)
Ubuntu 8 04 LTS Server Edition - Supported to 2013
• Mirror Ubuntu
• Software Catalogue Tl>e "L TS"¥e'SIOri ol ub"n!u rece'ves long-term support. 3 years for desktop versions and 5 years lor serve
» Mflfchartdis«
• Cose Studies What type of computer do you have?
® Standard personal computer (x86 architecture, PentiumTM. Celeron TM. Athlon TM. SempronTM)
> 64bit AMD and Intel computers
-WÉ
*''<•# G e t Ubuntu
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 sca-
ricato da Internet bisogna masterizzarlo su CD: per fare questo basta uti-
lizzare un comune software di masterizzazione come Nero (su Windows),
K3b o Braserò (su Linux).
Creato il CD di installazione non rimane che inserire questo nel lettore
del PC e avviare la macchina. Per procedere nell'installazione è neces-
sario che nel BIOS il lettore 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 esse-
re utilizzata nella procedura di installazione: nell'elenco che appare sullo
schermo ci si sposta da una voce all'altra tramite i tasti cursore; raggiunta
la voce Italiano si preme il pulsante Invio per confermare la scelta.

Language
Arabic Hindi Portugués
BejiapycKaq Hrvatski Romana
6"b/irapcKH Magyarul Pycckwfi
Bengali Bahasa Indonesia Sámegillii
Bosanski Slovenoina
Català B*fS Slovenscina
Cestina Shqip
Dansk Khmer Svenska
Deutsch Tamil
Dzongkha Kurdi Thai
EXXHUIKK Lietuviskai Tagalog
English Latviski Tiirkçe
Esperanto HakeaoHCKM yKpaïHCbKa
Español Malayalam Tiê'ng Viêt
Eesti Norsk bokmal Holof
Euskaraz Nepali
Suomi Nederlands tías®)
Français Norsk nynorsk
Galego Punjabi(Gurmukhi)
Gujarati Polski
Hebreui Portugués do Brasil
FI Help F2 Language F3 Keymap F4 Modes F5 Accessibility F6 Other Options

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

A questo 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: an-
che qui, per muoversi tra le voci presenti si utilizzano i tasti cursore, poi si
preme Invio per scegliere un'opzione tra quelle presenti.
Instali Llbuntu Server
Controlla d i f e t t i sul CO
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 effetti-
vamente integro: in caso di blocchi e malfunzionamenti durante le opera-
zioni di installazione si consiglia di controllare il CD per mezzo di questa
opzione. Se il CD risulta difettoso, quindi, non rimane che effettuare una
nuova masterizzazione su di un supporto affidabile.
L'opzione successiva, Ripristina un sistema d a n n e g g i a t o , consente di av-
viare 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 neces-
sarie per rimettere in sesto il sistema.

Root è l'utente di amministrazione nei sistemi derivati da Unix. Ha pieni


poteri nell'accesso ai dispositivi e nella manipolazione di file e directory.
Una console di root, quindi, è un terminale in cui è possibile amministra-
re liberamente il sistema impartendo comandi diretti.

La quarta opzione disponibile è Test della m e m o r i a e consente di veri-


ficare che tutti i banchi di RAM presenti sul PC siano perfettamente fun-
zionanti. Se il PC va spesso in crash, prima di dare la colpa al sistema
operativo, è consigliabile effettuare un controllo 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 pro-
gramma di installazione, che fa sfoggio di una spartana ma solida inter-
faccia a caratteri. Ecco come muoversi tra i vari elementi presenti nell'in-
terfaccia: con i tasti freccia su e g i ù si passa da un'opzione all'altra, con
Tab si salta dalle opzioni ai pulsanti in basso nello schermo e viceversa e,
infine, con Invio si selezionano l'opzione o il pulsante attivi al 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 ser-
ver DHCP viene configurata in automatico la scheda di rete.

Un server DHCP consente di assegnare automaticamente degli indirizzi


IP ai computer presenti in una rete locale.

Nel caso in cui non fosse raggiungibile alcun server DHCP, bisogna confi-
gurare 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 appli-
cato a un indirizzo di rete 192.168.0.0 stabilisce che gli indirizzi IP da
192.168.0.1 a 192.168.0.255 appartengono alla rete locale.

Quindi, c o m e gateway si inserisca l'indirizzo del router ADSL, se dispo-


nibile, 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'installazio-
ne iniziale.

Una LAN (Locai Area Network) è una rete locale. Solitamente viene uti-
lizzato il protocollo Ethernet per la trasmissione dei dati in questo tipo di
reti. Una WLAN (Wireless Locai Area Network) è, in particolare, una rete
locale in cui la connessione tra le macchine avviene senza fili, ma tramite
onde radio. In questo caso i protocolli impiegati sono quelli contrasse-
gnati dalla sigla IEEE 802.11 (Wi-Fi).

Tabella 1.1 - Gli indirizzi IP riservati alle reti locali


Indirizzo iniziale Indirizzo finale
10.0.0.0 10.255.255.255
172.16.0.0 172.31.255.255
192.168.0.0 192.168.255.255

Se si hanno dei d u b b i e si preferisce configurare la rete d o p o l'installa-


zione 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 Con-
figura 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 com-
puter: questo consentirà di individuare il singolo PC all'interno della rete
locale. Nella schermata successiva dell'installazione (Figura 1.6), quindi,
viene proposto 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 scher-
mata ci viene richiesto di inserire anche il n o m e del d o m i n i o , cioè la par-
te 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 scher-
mata 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 parti-
zione di swap. La partizione di root occuperà la prima partizione primaria su
disco, mentre la partizione di swap utilizzerà la prima partizione logica.

Le partizioni primarie sono le normali partizioni su hard disk: se ne posso-


no creare al massimo quattro su di un singolo disco. Le partizioni logiche,
Invece, non hanno questa limitazione e vanno inserite in una partizione
"contenitore", la partizione estesa.

Per confermare queste scelte si seleziona il pulsante Sì in basso, altrimenti


si sceglie N o : in questo secondo caso comparirà la schermata per il par-
tizionamento 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'inte-


ro 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 au-
mentandole, 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 rovina-
t 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 parti-


zioni che saranno presenti sul disco. Nel dettaglio, il sistema creerà auto-
maticamente 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 verran-
no 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 VG e r a c l i t o , LV suiap_l come swap
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 infor-


mazioni, 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à se-
guire 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 pas-
sphrase, 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 con-
siglia 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 scher-
mata 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 passphra-
se 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 con-
figurazioni 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 par-
tizioni 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 siste-
ma 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 determi-
nata 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 siste-
ma, quindi, tale file viene consultato e ciò consente di ottenere un filesy-
stem 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 caratteri-
stiche di ciascuno di essi:
• Ext3: si tratta del filesystem scelto come default da Ubuntu Server per
i partizionamenti guidati. Le sue doti di spicco sono una grande soli-
dità e la presenza di un sistema di journaling di 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, inve-
ce, la possibilità di ottenere un filesystem consistente non implica la
certezza di ritrovare sull'hard disk gli ultimi aggiornamenti sui file;
• Reiserfs: ha prestazioni ragguardevoli soprattutto q u a n d o si ha a
che fare con file m o l t o piccoli. Nel complesso, un filesystem piutto-
sto robusto e molto veloce;
• Reiser4: filesystem innovativo non ancora incluso nel kernel stan-
dard Linux. L'architettura modulare lo rende un filesystem estrema-
mente 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 cancella-
zione dei file. Si tratta di un filesystem m o l t o solido, che rappresen-
ta 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 partizio-
ne 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 di-
sco. 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 Dig¡talLifeStyle»pro
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 indubita-
bili 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 malfunzio-
namenti 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 di-
sponibile sul supporto: nel caso di utilizzo della sola partizione di root,
questo comporterà l'impossibilità di scrivere sull'intero disco, con un evi-
dente danno per l'intero sistema. Se si fa uso di una pluralità di partizioni,
invece, a risultare piena sarà la sola partizione su cui è avvenuta l'opera-
zione di scrittura.
Nella Tabella 1.2, quindi, 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
dalla partizione di root è possibile reinstallare una distri-
/home
buzione m a n t e n e n d o i file personali intatti: utile se un ser-
ver è 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 -
tazione ed i file di sviluppo. Creando una partizione se-
/usr
parata si possono differenziare i file di sistema dalle ap-
plicazioni
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 partizio-
ne 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 scon-
giurare exploit di questo t i p o
Contiene i file del kernel. Utilizzando una partizione sepa-
rata, 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 si-
stema. Dedicarle una partizione può essere utile per effet-
tuare 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'ante-
prima delle partizioni presenti sul disco.
In questo paragrafo si utilizzerà come esempio una configurazione del-
le partizioni tipica per una piccola macchina server: le partizioni presenti
sono / 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 par-
tizioni: 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 dispo-
nibile 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 .
II 1i
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
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 per-
centuale (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 dispo-
nibile 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 me-
moria, 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 par-
tizione (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: relatime


Etichetta: nessuna
Blocchi r i s e r v a t i 5%
Uso t i p i c o : standard
A t t i v a f l a g «avviabilé»: 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 sele-
zionata. 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'albe-
ro 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 (pa-
rametro 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 partizio-
ne / 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 LIBE-
RO, si sceglie poi l'opzione Crea una nuova partizione e si arriva alla scher-
mata 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 dal-
l'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
Usato come:

Opzioni di mount: relatime


Etichetta: nessuna
Blocchi riservati 5%
Uso tipico: standard
Attiva flag « a w i a b i l e » : 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 parti-
zione 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 con-
cedere uno spazio limitato alla partizione radice, d a t o che è sempre pos-
sibile 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 (precisa-
mente, 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 ag-
giungere / 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, quin-
di, 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 ag-
giungere 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 riparti-
zione 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 specifi-


co, la percentuale dei Blocchi riservati. Date le ampie dimensioni della
partizione / h o m e , infatti, una percentuale abbassata al 2 % costituirà co-
munque 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'antepri-
ma delle partizioni, che sarà ora simile all'immagine seguente (Figura 1.16).
A questo punto non rimane che selezionare l'opzione Terminare il par-
t i z 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 suc-
cessiva 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] Partizionare-
Questa è un'anteprima delle partizioni e dei punto di mount
attualmente configurati. Selezionare una partizione per modificarne
le impostazioni (file system, mountpoint, ecc.), uno spazio libero
per creare delle partizioni o un dispositivo per inizializzarne la
tabella delle partizioni.

Partizioriamento guidato
Aiuto sul partizionamento

SCSIl (0,0,0) (sda) - 12.9 GB ATA VBOX HARDDISK


N ( 1 primaria 255.0 MB f STOP sutap
n* 2 primaria 49.4 MB B f ext3 /boot
n° 3 primaria 5.0 GB f ext3 /
n* 5 logica 2.0 GB f ext3 /var

Annullare i cambiamenti alle partizioni


Terminare il partizionamento e scrivere 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 - usa-
re 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, ridi-
mensionandone 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<IfìB>_SBgsta.. tra elementi; <Spazio> seleziona; <Invio> attiva i bottoni

Figura 1.17 - La schermata nella quale si ridimensiona una partizione per far spazio
a Ubuntu Server.

È possibile inserire direttamente lo spazio in MB o GB che deve occupare


la partizione, 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 in-
tegre installando Ubuntu Server nello spazio che resta sul disco.
Utilizzando il partizionamento manuale, infine, nella schermata con l'ante-
prima delle partizioni è possibile selezionare una partizione preesistente e
poi ridimensionarla o cancellarla tramite le rispettive opzioni presenti nella
schermata delle impostazioni.

I dischi in RAID
RAID sta per Redundant Array of Independent Disks 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
prestazioni in lettura e scrittura rispetto all'utilizzo
RAIDO
di un unico hard disk. Questa tecnica viene chia-
mata "striping"
Gli stessi dati vengono scritti su più dischi. Se un
disco si guasta il sistema continua a funzionare
RAID 1
utilizzando gli altri dischi. Questa tecnica è chia-
mata "mirroring"
Effettua lo striping ma in più dedica un intero di-
sco alle informazioni di parità. Queste informazio-
RAID 4
ni 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
un unico disco virtuale di grandi dimensioni. Se
RAID lineare
un solo hard disk si rompe l'intero RAID smette
di funzionare

Il sistema di installazione di Ubuntu Server consente di adottare il RAID sui


propri dischi in maniera semplice e diretta.
Nel paragrafo seguente, dunque, si vedrà come procedere nell'installa-
zione del sistema operativo utilizzando due hard disk in RAID 1, /dev/sda
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 neces-
sariamente il flag «avviabile» attivato (Figura 1.18).
Terminata la creazione delle partizioni sul primo disco, si effettua la me-
desima 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; <-sna7Ìn> selezionai <Invio> attiva i bottoni

Figura 1.19-In questa schermata si devono collegare le partizioni nei due dischi.

Sotto la scritta Device 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 configu-
razione d i multidisk. Si tornerà così alla schermata con la lista delle parti-
zioni 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 di-
spositivo 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 cambia-
m 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 par-
tizione 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)igiialLifeSlylc«pro ^¿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 succes-
siva 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 Configurare il Logicai Volume Manager è pos-


sibile che appaia una schermata di errore con la dicitura Iniziale "Error
informing the kernel about modifications to partition". Si tratta di un
errore irrilevante e per proseguire è sufficiente andare su Ignore.

Fatto questo, si indica / 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)

I 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 oc-
cupare. 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 (inizia-
no 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 vo-
lume 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 appa-
rirà 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!e»pro o
Per maggiori informazioni sul boot loader LILO (Linux LOader) un vali-
do documento introduttivo è il LILO mini-HOWTO. Lo si può trovare
all'indirizzo:
http://www.tldp.org/HOWTO/LILO.html
La traduzione Italiana di questo testo si trova all'indirizzo:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/it/html sin-
gle/LILO.html.gz

Dati utente e software


Una volta configurate le partizioni e installati i pacchetti di base, l'instal-
lazione prosegue con una schermata in cui viene richiesto di digitare il
nome 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 amministra-
zione avvengono dando, in maniera provvisoria, pieni poteri all'utente
principale nel sistema. Se lo si reputa necessario è comunque possibile
rendere attivo il classico utente root.

Dal nome 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 modifi-
care il nome dell'account.
Quindi, si deve inserire la password per l'account e nella schermata che
segue essa va digitata nuovamente, per conferma.
Nella schermata successiva è possibile indicare un proxy HTTP per ac-
cedere a Internet: 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 seguen-
te (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 Utenti, gestire il

parca programmi e aggiungere nuove

partizioni.

Al riavvio del PC ci si troverà davanti al prompt di login: qui bisogna inse-


rire il nome dell'utente principale e digitare la relativa password, così da
avere accesso al sistema tramite la console di terminale. Fatto questo, si
può cominciare a prendere confidenza con alcuni degli elementi più im-
portanti del sistema operativo.

Amministrare gli utenti


In un sistema appena installato, l'unico utente attivo è quello principale. Si
è anticipato come l'utente principale possa acquisire al bisogno le prero-
gative e i poteri del superutente root. Per ottenere questo si fa precedere
dall'istruzione sudo il comando che si desidera eseguire con i permessi di
root, quindi si inserisce la password dell'utente principale.
Ecco un esempio, da digitare direttamente nella console di terminale:

sudo mkdir Immagini


D o p o aver scritto 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 pre-


mere Invio.

ale@pitagora:~/tmp$ sudo mkdir Immagini


[sudo] password for ale:
ale@pitagora: ~/tmp$

Figura 2.1 - Con sudo si ottengono i privilegi dell'utente root inserendo la password
dell'utente principale.

Per maggiore comodità, il comando sudo memorizza la password


inserita per un determinato periodo di tempo (per default 15 minuti).
Richiamando più volte sudo in questo arco di tempo, quindi, non verrà
richiesto all'utente di digitare nuovamente la password.

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


tire 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 del-
l'utente principale.
Talvolta, però, è necessario lanciare una lunga serie di comandi da root e in
tal caso il dover premettere ogni volta sudo p u ò costituire un intralcio seccan-
te. La soluzione è quella di utilizzare l'opzione -s di sudo, in questo m o d o :

sudo -s

I DìgitalLife.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 è sufficien-
te 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 que-


sta non è stata inserita in precedenza, quindi si deve indicare una password
per root e digitarla poi una seconda volta per conferma (Figura 2.2).

ate@pitagora:~$ sudo passwd root


Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
ale@pitagora: -$

Figura 2.2 - Per attivare l'utente root bisogna semplicemente dotarlo di una password.

Fatto questo si potrà effettuare il login direttamente da root, oppure, se


si è effettuato l'accesso con un altro utente, sarà possibile acquisire i 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 tor-
nerà 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 anco-
ra. 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 real-
tà, 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 al-
l ' 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 con-
dividere 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, baste-
rà 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 stan-
d 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 elimi-
nare 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 di deiuser è possibile eliminare anche la


home di un utente.

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 lo-
gin 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 diretta-
mente una nuova password senza dover indicare quella corrente: un'op-
zione c o m o d a , per esempio, q u a n d o un utente ha smarrito la propria pas-
sword 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 pas-
s 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 riguar-
d 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 disatti-
vare 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- 3
ale ale 4096 2008-•06- 23 16:02 .Skype
2
ale ale 4096 2008- 04 28 09:00 .ssh
•X 3
ale ale 4096 2008--06-•13 18:38 .streamtuner
1
ale ale 0 2008 04 23 08:59 .sudoasadminsuccessful
•X 3
ale ale 4096 2008--06 •02 12:03 .themes
jdrwx 4
ale ale 4096 2008 06 •10 09:59 .thumbnails
|drwxr-xr •X ;>
ale ale 4096 2008 -06- 24 17:02 tmp
|drwxr-xr •X 5
ale ale 4096 2008--04-•24 16:48 .transmission
|-rw-r--r 1
ale ale 619 2008 •06 •07 17:36 .ufrawrc
Jdrwxr-xr •X 2
ale ale 4096 2008 -04-•30 12:25 .update-manager-core
idrwx 2
ale ale 4096 2008 04 •28 09:00 .update-notifier
Idrwxr-xr •X 2
ale ale 4096 2008--04--26 12:37 Video
- rw 1
root root 6366 2008 •06 •24 18:05 .viminfo
1
ale ale 274 2006 •01 •18 23:44 .vimrc
•X 4
ale ale 4096 2008 -06 •13 16:55 .VirtualBox
-X 3
ale ale 4096 2008 •05 22 11:46 .vie
Idrwx- ale
2 ale 4096 2008 •04 -28 09:42 .w3m
•X 2
ale ale 4096 2008 -06 -24 15:12 .wapi
•X 2
ale ale 4096 2006- 11 23 18:01 .wordtrans
1
ale ale 119 2008-•06 •24 15:11 .Xauthority
-X ale ale 4096 2008 -06 •12 19:10 .xine
•X 10 ale ale 4096 2006 •07 •11 12:03 . xntame
J-rw-r- • • 1 ale ale 9873 2008--06 •24 18:05 .xsession-errors
|ale@pitagora

Figura 2.5 - Con il comando te -al vengono fornite informazioni dettagliate sui file pre-
senti nella directory corrente.

In una linea del genere sono presenti diversi campi separati da un ca-
rattere vuoto: il 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 di-
rectory. 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 di-
rectory, 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 leggi-
bile, 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 Do-


cumenti risulta leggibile, scrivibile ed eseguibile dall'utente che la possie-
de, 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 no-
tazione mnemonica.
II parametro utenti può contenere una o più lettere tra u, g, o e a. La lette-
ra u indica l'utente a cui 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 com-
posto da una o più lettere tra r, w, x, x, s e t. Le lettere r, w e x indicano,
rispettivamente, i permessi in lettura, scrittura 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 . Infi-
ne, 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 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
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 .

Per visualizzare la man page di un comando si deve eseguire in console


man comando. Nel caso di chmod, quindi, si dovrà lanciare man chmod.
Per scorrere riga per riga le pagine si utilizzano i tasti freccia su e freccia
giù, per andare avanti di una pagina si preme Spazio e per tornare indie-
tro di una pagina si preme b. Con q si esce dalla man page.
Modificare utente e gruppo di un file

Riprendendo l'output del c o m a n d o is -ai riportato nel paragrafo prece-


dente, si è visto come nella riga d ' e s e m p i o i campi terzo e quarto mostri-
no 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 di-


venti 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 appartenga-
no 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 pre-


sente 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 otte-


nere in output una lista dei gruppi attivi nel sistema, presentata in ordine
alfabetico e depurata da ogni informazioni accessoria. Per fare questo si
esegua il comando seguente:
cat /etc/group / cut -fi -d / eort
Una simile catena di comandi viene chiamata pipe.
La gestione dei pacchetti
In Ubuntu Server i 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 verran-
no 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 pacchet-
t 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 com-
patibili 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 nu-
mero di pacchetti dalla compatibilità reciproca certa.
L'insieme dei repository attivi in una macchina, d u n q u e , forma un eco-
sistema armonioso in cui ogni singolo elemento si integra con le parti
restanti: la versione del kernel è adatta alle librerie di sistema installate, le
singole applicazioni alle diverse librerie presenti e così via.

Installare e cercare pacchetti

II 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 coman-
d 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 NEW packages w i l l be i n s t a l l e d :
apache2 apache2-mpm-worker apache2-utils apache2.2-common l i b a p r l f:
libaprutill
0 upgraded, 6 newly i n s t a l l e d , 0 to remove and 0 not upgraded. If
¡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]? |

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 risul-
tati 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 search


diventa l'input di sort (che ordina i dati), quindi l'output di sort diventa
l'input di less (che visualizza i dati in schermate separate).

In 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 se-


guita 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 (meta-


carattere) e significa "qualsiasi successione di caratteri, anche vuota".
L'argomento libe*, quindi, viene tradotto dal comando dpkg in "i
caratteri I, i, b e c seguiti da una qualsiasi successione di caratteri". Una
sequenza come libe* è chiamata glob pattern.

Informazioni complete

Una volta che si è 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 pre-


senti 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 dispo-
nibili, 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à ragio-
nevolmente al riparo da b u g insidiosi che possano c o m p r o m e t t e r e la si-
curezza 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 si-
stema 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'in-
stallazione 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 coman-
d 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 pacchet-
t 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 mac-
china, 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 il
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 pac-
chetti che non sono più scaricabili dai repository su Internet (e dei quali,
dunque, non risulta più di alcuna utilità avere una copia sull'hard disk).
Per eliminare tutti i file d e b da /var/cache/apt/archives va usato il coman-
d 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-0ubuntu7Ì386.deb
compiz-plugins I%3a0.7.4-0ubuntu7 i386.deb
compiz iya6.7.4-0ubuntu7ali .deb
evolution-common 2.22.2-0ubuntu2 ali.deb
evolution-plugins 2.22.2-Oubuntu2 Ì386.deb
evolution_2.22.2-Bubuntu2 Ì386.deb
googleearth 4.3.7204.836-0medibuntul ali.deb
gtwitter 1.0~beta-6ubuntul ali.deb
libdecorationO I%3a0,7.4-0ubuntu7 i386.deb
libglib2.0-0 2.16.3-lubuntu3 Ì386.deb
libglib2.0-data 2.16.3-lubuntu3 ali.deb
libldap-2.4-2J.4.9-0ubuntu0.8.04 Ì386.deb
libpoppler-glib2 8.6.4-lubuntu2 Ì386.deb
libpoppler-qt2 076.4-lubuntu2 Ì386.deb
libpoppler2 0.6.4-lubuntu2 Ì386.deb
libsoup2.2-8 2.2.105-4 Ì386.deb
libssl0.9.8 0.9.8g-4ubuntu3.3 i386.deb
linux-heade rs-2.6,24-19-gene rie 2.6.24-19.34 i386.deb
linux-headers-2.6.24-19 2.6.24 19.34 ali.deb
linux-image-2.6.24-19-generic 2.6.24-19.34 i386.deb
linux-source-2.6.242.6.24-19.34 ali.deb
linux-ubuntu-modules-2.6.24-19-generic_2.6.24-19.28 i386.deb

Figura 2.10-Se /var/cache/apt/archives è piena, con sudo apt-get clean si cancellano


tutti i file dalla directory.

Con sudo apt-get autoclean, invece, verranno cancellati solo i file di cui
non è più possibile effettuare il download.
Gestire i repository

Nella configurazione di default di Ubuntu Server sono attivi tutti i reposi-


tory necessari per mantenere costantemente aggiornato il proprio server.
È possibile, c o m u n q u e , gestire direttamente i repository abilitati nel siste-
ma 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 program-
mi, 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 modifica-
re 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 nel-
l'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 (Fi-
gura 2.11).
L'editor nano è m o l t o semplice da usare: con i tasti freccia ci si sposta al-
l'interno del file aperto, con la combinazione di tasti C t r l + O si salva il file
e con C t r l + X si esce dall'editor. Premendo 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 131 Read File |Q Prev Page |g Cut Text E Cur Pos
l Exit E Justify Q Where Is |E Next Page §1 UnCut T e x t ® To Spell

Figura 2.11 - L'editor nano con aperto il file /etc/apt/sources.list.

In questi primi capitoli del volume vengono trattati argomenti più sem-
plici di quelli affrontati nelle sezioni successive. Per il momento, quindi,
si è scelto di utilizzare un editor di base come nano. Si forniranno poi
informazioni dettagliate sul più complesso vi, l'editor standard nelle
macchine Unix.

Il file sources.list per i repository

Prendendo c o m e riferimento il file /etc/apt/sources.list di default su Ubun-


tu 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 configurazio-
ne 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 saran-
no 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 atti-


vare 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 solitamen-
te dell'indirizzo Internet da cui prelevare i pacchetti, privo della parte che
specifica la versione della distribuzione cui si è interessati. L'elemento di-
stribuzione, quindi, indica la release della distro installata sulla macchina:
hardy, gutsy, 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 reposi-
tory 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 aggior-
namenti 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 fina-
le di uno o più repository che si desidera abilitare: per indicare più com-
ponenti è necessario che questi abbiano uri e distribuzione in comune.
Nella Tabella 2.1 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 Significato
Pacchetti open source direttamente supportati da
main 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 ag-
giornamenti 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 re-
muitiverse lativi aggiornamenti di sicurezza sono gestiti dalla co-
munità di utenti
Pacchetti non disponibili sotto licenza libera ma diret-
restricted tamente supportati, per quanto possibile. Contiene dri-
ver per hardware non altrimenti supportato su Linux
partner Pacchetti commerciali

L'insieme di tutti questi elementi forma quindi una riga in /etc/apt/sour-


ces.list come la seguente:

deb http://it.archive.ubuntu.com/ubuntu/ hardy main restricted

Un repository a parte è http://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 pos-
sono disattivare tutti i repository di t i p o deb-src: in questo m o d o la pro-
cedura 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 direttamen-


te supportato da Ubuntu: in tal m o d o si sarà certi che, qualunque applica-
zione 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, bi-
sogna poi aggiornare la lista dei pacchetti nei repository con sudo apt-get
update.
Se si desidera aggiungere dei repository ma non si vuole "sporcare" il file
sources.list principale, infine, è possibile creare nella directory / e 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 in-


seriti 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 conte-
nuto 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 indiriz-
zi 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 vici-


nanze. 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 mir-
rar 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. CD Images
1. CD Image Mirrors
3. DVD Images
1. DVD Image Mirrors

Sub-pages

Mirror-Mirrors

The following package archive mirrors are available, for you to mirror from, if
you would rather mirror from a downstream mirror than from the master servers
at Ubuntu:

(See also the mirror list at launchpad: [WWW] https://launchpad.net/ubuntu/


+archivemirrors )

Australia

• [WWW] http://ftp.iinet.net.au/pub/ubuntu/

• [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 è disponibile un


elenco dei mirror Ubuntu.

Il gestore semigrafico dei pacchetti

È disponibile per la console una pratica interfaccia semigrafica per il ge-


store 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 que-
ste 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 pacchet-
ti 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'amministra-
zione 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 compilazio-
ne 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 rag-
giungerlo.
Ecco un esempio:

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

A differenza di apt-get e aptitude, dpkg agisce a un livello più basso e non


gestisce la risoluzione delle dipendenze: se il pacchetto indicato richiede
delle dipendenze, quindi, sarà necessario procedere manualmente alla
loro installazione.
Per installare pacchetti svincolati dai repository e, al t e m p o stesso, risolve-
re 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 pac-
chetti 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 opera-
zioni 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 ope-
razioni 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 tra-
duzione 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,


<-/ V>1
Name MTime Name Size MTime
. kderc May 21 10:31 /bin 4696 Jun 16 18:69 "
. lesshst Jun 26 19:42 /boot 4696 Jun 26 16:11 *
. mailcap May 13 22:06 -cdrom 11 Apr 28 68:34
. mcoprc May 2 1 09:14 /dev 13966 Jun 2 7 16:24
. profile Apr 15 05:36 /etc 12288 Jun 27 16:25
. pulse-cookie Apr 28 09:00 /home 4696 Jun 2 4 13:23
. realplayerrc Jun 2 16:18 /initrd 4696 Apr 22 19:48
. recently-used Jun 27 16:30 /lib 4696 Jun 17 68:55
.recent-ed.xbel Jun 27 17:03 /lost+found 16384 Apr 28 68:34
.signature.mail Feb 19 2003 /media 4696 Jun 27 16:24
.sitecopyrc Oct 29 2007 /mnt 4696 Apr 15 07:53
.sudo a-cessful Apr 28 08:59 /proc 6 Jun 27 16:24
.viminfo Jun 27 12:24 /root 4696 Jun 4 16:55
Jan 18 2006 /sbin 4696 Jun 26 11:21
/srv 4696 Apr 22 19:48

.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 aggiun-
gere ulteriori partizioni o p p u r e modificare alcuni parametri di quelle esi-
stenti. Per effettuare cambiamenti nella configurazione delle partizioni si
deve intervenire sul file /etc/fstab.

Il file /etc/fstab

Si apra /etc/fstab con nano, acquisendo i poteri di root:

sudo nano /etc/fstab

La struttura del file /etc/fstab è elementare: o g n i riga rappresenta un di-


verso dispositivo nel sistema; fanno eccezione le linee con all'inizio il ca-
rattere #, 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.

# <file system> <mount point> <type> <options> <dump> <pass>


proc /proc proc defaults 0 0
# /dev/sdal
UUID=45ad37fa -386e-4ff0-be33-d4465e05c096 / ext3 relatime,erro$
# /dev/sda3
UUID=2Oe23alb-0clb-46ba-8cba-20eb80f5c5bf /home ext3 relatime $
# /dev/sda2
UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none swap
/dev/scdO /media/cdromO udf,iso9660 user,noauto,exec,utf8 0

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

Ecco una linea di esempio di /etc/fstab:

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

I parametri sono separati gli uni dagli altri per mezzo di spazi vuoti. Il pri-
mo 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 dia-
logare con un dispositivo come una partizione dell'hard disk o un floppy
disk. I file di dispositivo possono essere letti e scritti: ciò consente di
leggere il contenuto dei dispositivi hardware e di scriverci sopra.
Gestire il s i s t e m a

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 Dispositivo hardware
Il primo hard disk presente nel sistema. La pri-
/dev/sda ma partizione di /dev/sda è /dev/sda1, la se-
conda è / 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 se-
conda è / d e v / s d b 2 e così via
/dev/scdO Lettore C D / D V D
/dev/fdO Floppy disk
/dev/videoO Videocamere e w e b c a m

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 in-
dicato. 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 venga-
no 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 program-
ma 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 con-
trollate 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 nu-


m e r o di partizioni necessarie p e r un server. Sovente, q u i n d i , si d e v e in-
tervenire 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 frec-
cia 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 par-
tizione (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 » sees IHiUW SCIE ISbMiMfcfe!


sda2 Primary Linux swap / Solaris 1003.49
sda3 Primary Linux ext3 50001.48
Pri/Log Free Space 9014.91

IliftTOBitt^] [ Delete 1 [ Help ] [Maximize] [ Print ]


[ Quit ] [ Type ] [ Units ] [ Write ]

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 rispet-
tivi 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 tabel-
la 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 jfsu-
tils 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 filesy-
stem, m e n t r e l ' o p z i o n e -m è seguita dalla percentuale di blocchi che biso-
gna 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 UUID= seguita da una
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 si-
stema 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

B?iyT)¡i'it:ilLifcSiyk»»pr»
partizione si porta dietro anche q u a n d o cambia il file di dispositivo me-
diante il quale la partizione diventa accessibile al sistema.

L'impiego degli UUID al posto dei file di dispositivo può essere utile in
molte occasioni. Se si utilizzano più hard disk, per esempio, grazie agli
UUID è possibile collegare i dischi in un ordine differente senza dover
metter mano ogni volta al file /etc/fstab per cambiare i rispettivi punti
di mount.

Per conoscere l'UUID di una partizione si usa il 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 dispositi-
vo 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'installazio-


ne 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 partizio-
ni. 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 pro-


cedura 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à neces-
sario 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 co-


stituire 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 /dev/sdal
sudo p v c r e a t e /dev/sda2
sudo p v c r e a t e /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 , chia-


m 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 gran-
d 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 /dev/gruppo/voll
sudo m k f s . e x t 3 /dev/gruppo/vol2
sudo m k f s . e x t 3 /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 Ili:


— Logical volume - -
LV Name /dev/gruppo/voll
VG Name gruppo
LV UUID MtrwOB-gwvR-NJIp-WTbl-DpAU-j kQn-70Rkeb
LV Write Access read/write
LV Status available
# open 0
LV Size 700,00 MB
Current LE 175
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0

--- Logical volume -


LV Name /dev/gruppo/vol2
VG Name gruppo
LV UUID 00ra21-XIkY-Lufu-3Ip2-X3jK-YJuH-8Fockh
LV Write Access read/write
LV Status available
# open 0
LV Size 4,00 GB
Current LE 1024

Figura 2.17 - L'output del comando sudo Ivdisplay mostra informazioni su tutti i volumi'
logici creati.

A questo punto, controllando lo spazio disponibile sul voi2 si può sco-


prire 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


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 / ) , poi si
deve smontare il v o l u m e ( s u d o umount /home, per e s e m p i o , se II p u n t o
dì m o u n t del v o l u m e è / h o m e ) .

Adesso il volume voi2 è stato ridotto da 4 a 3 GB. Non rimane che aumen-
tare lo spazio su voli. Per fare questo, al contrario che nel caso della ridu-
zione dello spazio su un volume, prima si ridimensiona il volume logico e
poi il filesystem relativo, così:

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 uti-
lizza ReiserFS, al posto del c o m a n d o resize2fs bisogna impiegare resi-
ze_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 MD arrays

# This file was auto-generated on Wed, 24 Sep 2008 11:09:26 +02OO


# by mkconf $Id$

"/etc/mdadm/mdadm.conf" 22L, 625C 15,0-1 Tut

Figura 2.18 - È possibile cambiare il destinatario delle email inviate da mdadm modifi-
cando mdadm. conf.

Fatto 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

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 , per

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:-$ sudo mdadm --query --detail /dev/mdl


/dev/mdl:
Version : 00.90.03
Creation Time : Wed Sep 24 18:53:49 2008
Raid Level : raidl
Array Size : 9767424 (9.31 GiB 10.00 GB)
Used Dev Size : 9767424 (9.31 GiB 10.00 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time Wed Sep 24 18:59:53 2008


State clean, degraded
Active Devices 1
Working Devices 1
Failed Devices 0
Spare Devices 0

UUID : 8bl8290c:0ab544df:58d6250f:b8f79aaa (local to host pitagora)


Events : 0.8

Number Major Minor RaidDevice State


0 8 18 0 active sync /dev/sdb2

1
Figura 2.19-Con il com
1 M9 3 -query -detail— si ot # 1 1 preziose informazioni
su un dispositivo RAID.

' 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 norma-
le 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 devo-
no rimuovere dai dispositivi RAID le partizioni contenute nel disco difetto-
so. 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 /dev/sdal


sudo mdadm --remove /dev/mdl /dev/sda2

Fatto questo, è possibile spegnere la macchina e sostituire l'hard disk


rotto con uno nuovo.

Nel caso di utilizzo di dischi di tipo hot-swap è possibile togliere un hard


disk difettoso e sostituirlo con dispositivo nuovo a "caldo", cioè senza
dover riavviare la macchina.

Effettuata la sostituzione e riavviato il computer, è quindi necessario crea-


re una tabella delle partizioni sul nuovo disco che corrisponda a quella
presente negli altri hard disk che 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 co-
mandi da lanciare per aggiungere / d e v / s d b al RAID saranno i seguenti:

sudo mdadm --add /dev/mdO /dev/sdbl


sudo mdadm --add /dev/mdl /dev/sdb2
sudo mdadm --add /dev/md2 /dev/sdb3

A questo 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 malfunzionamen-
t 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 dispositi-


vo 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 coman-
d 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 partizio-
ni 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 di-
mestichezza con la shell e l'utilizzo di un editor evoluto. In questo capitolo
si scopriranno quindi trucchi e segreti della shell standard su Linux, Bash,
e si farà la conoscenza 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 ese-
guire 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 pri-
vilegiato in cui controllare una macchina, anche a distanza, e impartire
comandi su di essa.

ale@pitagora: man bash


ale@pitagora:-$ df
File system blocchi di 1K Usati Disponiti. Uso% Montato su
/dev/sdal 19380676 4474280 13929648 25% /
varrun 773168 164 773004 1% /var/run
varlock 773168 0 773168 0% /var/lock
udev 773168 52 773116 1% /dev
devshm 773168 12 773156 1% /dev/shm
Irm 773168 39760 733408 6% /lib/modules/2.6.2'
eneric/volatile
/dev/sda3 48062468 29129300 16491692 64% /home
gvfs-fuse-daemon 19380676 4474280 13929648 25% /home/ale/.gvfs
alegpitagora: -$ 1

Altre shell disponibili sono ksh (Korn Shell), Tcsh, zsh (Z Shell) e csh (C
Shell). Quest'ultima ha come caratteristica precipua l'utilizzo di una sin-
tassi derivata dal linguaggio C (da cui il nome). Chi volesse far pratica
con shell diverse dalla classica Bash può trovare i pacchetti di tutte que-
ste shell alternative nei repository di Ubuntu.
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'ammini-
stratore è 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 File: backup f?odificato"~1§

#!/bin/bash
# semplice script di backup

GI0RN0=$(date +%F)
N0ME=backup-$GI0RN0.tar.gz
DIRECTORY="/etc /var"
tar cvfz $N0ME $DIRECTORY
1

Figura 3.2 - Per creare uno script shell basta aprire un editor e inserire le righe che
compongono lo script.

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: nel-
l'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 que-
sto caso, è possibile scoprire come sia semplice concatenare delle strin-
ghe in uno script: alla variabile NOME, infatti, viene assegnata come valore
la stringa formata dalla sequenza di caratteri backup-, dal valore della va-
riabile GIORNO e da .tar.gz. Il valore c o m p l e t o della variabile NOME, dun-
que, 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 pre-
cedere questa dal carattere $; $GIORNO, quindi, rappresenta il valore della
variabile GIORNO.

La quinta riga contiene la terza variabile, DIRECTORY, il cui valore non è altro
che l'elenco delle directory delle quali si desidera effettuare una copia di
riserva. 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 NOME e come
contenuto il valore della variabile DIRS.
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'ar-
chivio 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 PATH, per
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
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 attual-
m 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 è neces-
sario 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).

I
/var/cache/fontconfig/99e8edOe538f84Oc565b6ed5dad60d56-x86.cache-2
/var/cache/fontconfig/e383d7ea5fbe662a33d9b44caf393297-x86. cache-2
/var/cache/fontconfig/c69fO4ab05004e31a6d5e715764fl6d8-x86.cache-2
/var/cache/fontconfig/d52a8644073d54cl3679302call8O695-x86. cache-2
/var/cache/fontconfig/707971e003b4ae6c8121c3a920e507f5-x86. cache-2
/var/cache/fontconfÌg/945677eb7aeaf62fld50efc3fb3ec7d8-x86. cache-2
/var/cache/fontconfÌg/fe547fea3a41b43a38975d292a2bl9c7-x86. cache-2
/var/cache/fontconfÌg/7ef2298fde41cc6eeb7af42e48b7d293-x86. cache-2
/var/cache/fontconfÌg/4794a0821666d79190d59a36cb4f44b5-x86.cache-2
/var/cache/fontconfÌg/3830d5c3ddfd5cd38a049b759396e72e-x86. cache-2
/var/cache/fontconfig/del56ccd2eddbdcl9d37a45b8b2aac9c-x86. cache-2
/var/cache/fontconfÌg/d82eb4fd963d448e2fcb7d7b793b5df3-x86. cache-2
/Var/cache/fontconfig/el3b20fdb08344e0e664864cc2ede53d-x86. cache-2
/Var/cache/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-x86. cache-2
/var/cache/fontconfÌg/0f34bcd4b6ee430af32735b75db7f02b-x86.cache-2
/var/cache/fontconfig/a755afe4a08bf5b97852ceb740Ob47bc-x86.cache-2
/var/cache/fontconfig/c855463f699352C367813e37f3f70ea7-x86. cache-2
/var/cache/fontconfÌg/6333f38776742dl8e214673cd2c24e34-x86. cache-2
/Var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86.cache-2
/var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86.cache-2
/var/cache/fontconfÌg/de9486f0b47a4d768a594cb4198cblc6-x86.cache-2
/var/cache/apt/
/var/cache/apt/pkgcache. bin

Figura 3.4 - L'output dello script di esempio: la sequenza dei file inseriti nell'archivio di
backup.
Al termine dell'esecuzione dello script, nella directory corrente sarà pre-
sente 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 condizio-
nale 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 suc-


cessione e, nel caso risultassero tutte false, verranno eseguite le istruzioni
indicate da else.
Ecco un esempio del costrutto if:

# ! /bin/bash
FILE=$1
if [ -e " $ 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 condi-
zionale, -e, che dà risultato positivo se il file che lo segue nella riga esiste.
Lanciando controlla /etc/profiie, quindi, l'operatore condizionale darà
certamente esito true, 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 ope-
ratori 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 Si applica su È vero
-e File Se il file esiste
Se si tratta di un file regolare, non di un
-f File
dispositivo 0 di una directory
-d File Se si tratta di una directory
-X File Se il file ha i permessi di esecuzione
-eq Numeri Se i due valori confrontati sono uguali
-ne Numeri Se i due valori confrontati sono diversi
-It Numeri Se il primo valore è minore del secondo
-gt Numeri Se il primo valore è maggiore del secondo
= = Stringhe Se le d u e stringhe sono uguali
!= Stringhe Se le due stringhe sono diverse
-z Stringhe Se la stringa è nulla
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 succes-
siva 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 argo-
m 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 richiama-
re questo dalla cartella in cui è memorizzato basta premettere . / al
nome dello script. Per esempio, se lo script controlla è nella directory
/home/ale/scripts non si deve far altro che entrare in questa directory
(ed /home/ale/scripts) ed eseguire ./controlla. Nella Figura 3.5
lo script viene appunto richiamato dalla directory corrente, nel modo
appena indicato.
• costrutti di loop
Altri costrutti basilari nella costruzione 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
gli elementi presenti nella LISTA. 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 [condizione]
do
istruzioni
done

Si tratta di un p e r i o d o le cui istruzioni v e n g o n o eseguite finché la condi-


zione indicata è vera. Segue un esempio esplicativo:

#!/bin/bash
NUM=10
while [ $NUM - n e 0 ]
do
echo $NUM
NUM=$(( $NUM-1 ))
done

Nella seconda riga viene assegnato alla variabile NUM il valore 10. Il co-
strutto 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 inseren-
dola 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
7
6
5
4
3
2
1
ale@pitagora:~$

Figura 3.6 - Lo script d'esempio per il costrutto while produce questo output nel terminale.

Per creare un ciclo di loop infinito è possibile usare while inserendo come
condizione true, come nell'esempio seguente: #/bin/bash
while true
do
echo "loop infinito"
done
Per uscire dal loop, quindi, si dovrà premere la combinazione di tasti
Ctrl+C.
Il costrutto untii è speculare al p e r i o d o whiie appena trattato: se le istru-
zioni 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 condi-
zione 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 sem-


plificare 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 VA-


RIABILE 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'esecu-
zione di uno script.
Ecco un esempio:

#!/bin/bash
echo "Scrivi uno oppure due e premi Invio."
read testo

case "$testo" in
uno)
echo " H a i s c r i t t o u n o !"

due)
e c h o " H a i s c r i t t o d u e !"

*)
echo "Non hai scritto né uno né due..."

esac

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, quin-
di, 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 uten-
te. 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 inte-


rattive 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 SI Salva gg Inserisci |Q Pag Prec. E ^ Taglia Q Posizione


j Esci Qy Giustifica^ Cerca fQ Pag Succ. |Q Incolla B Ortografia

Figura 3.8 - Nel file /etc/bash.bashrc è possibile inserire degli alias, cioè delle scorcia-
toie per i comandi più usati.

Un alias non è altro che una parola che viene utilizzata per sostituire una
stringa, 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 shu-
tdown -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='emacàclient -a emacs'
alias j='jobs'
alias l='ls -al -F'
alias ll='ls -l -F'
alias ls='ls --color=auto'
alias po='popd'
alias pu='pushd'
alias r='reset'
alias src='cd /usr/src'
alias ss='ps aux'
alias v='less'
alias wget mirror='wget -r -l 1 -np -k'
alias x='exit'

Figura 3.9 - Con il comando alias si ottiene l'elenco degli alias che è possibile richiamare.

Gli alias sono senz'altro c o m o d i , ma non consentono di gestire gli argo-


menti 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 di-


rectory | 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à
S a r a ls / h o m e / a l e / I m m a g i n i | less.
Le funzioni, però, non sono semplicemente degli alias con in più la gestio-
ne 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 sin-
gola riga: le istruzioni vanno separate dal carattere ,• e al termine del-
l'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 ^ Salva Q Inserisci |B P a g P r e c . |^ Taglia Q Posizione


S Esci B Giustifica (£ Cerca m Pao Succ. E B] Incolla E Ortografie

:: IKiUbP
WmSmmmfmiemst

L'editar vi
Nelle pagine precedenti, 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 macchi-
na, qualunque sia il dialetto Unix adottato. Se è necessario effettuare degli
interventi su di un sistema Unix o Linux, quindi, si può essere ragionevol-
mente certi di trovare sempre un eseguibile di vi a propria disposizione.
In realtà, in queste pagine viene utilizzato come riferimento l'editor vim,
una versione potenziata di vi ma in gran parte 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

- Aiuta i bambini poveri dell'Uganda!


batti help iccf<Invio> per informazioni

batti q<Invio> per uscire


batti help<Invio> o <F1> per aiuto online
batti help version7<Invio> per informazioni su versione

0,0-1 Tut

Figura 3.11 - Vim è una versione potenziata di vi, il re degli editor su Unix.

In Ubuntu Server viene preinstallato il pacchetto vim-tiny, che fornisce un


eseguibile di Vim con funzionalità minimali. La prima operazione da com-
piere, quindi, è scegliere un pacchetto contenente una versione di Vim
completa. Se sulla propria macchina non si intende utilizzare alcun am-
biente grafico, si può installare il pacchetto vim:

sudo 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 vim-
nox 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 numero-
si linguaggi di programmazione, tra cui Perl e Python.
In caso di utilizzo dell'ambiente grafico G n o m e , invece, il pacchetto vim-
g 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 an-
che il pacchetto vim-doc, che contiene una pratica versione in HTML del
manuale dell'editor.
• concenti fondamentali di vi
Il programma vi, così come la versione estesa Vim, è un editor modale:
il funzionamento dell'editor e il valore assegnato ai tasti cambiano a se-
conda della modalità in cui ci si trova. Ciò può risultare d'impaccio per
l'utente alle prime armi ma, una volta presa confidenza con la peculiare
interfaccia del programma, sarà facile apprezzarne l'enorme praticità e la
grande velocità nell'esecuzione di operazioni complesse sui testi.
La Tabella 3.2 contiene un elenco delle modalità presenti in Vim, con evi-
denziati i tasti che permettono di attivarle. Per orientarsi, però, è bene sa-
pere che le due modalità più utilizzate sono senza 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à sele-
zionata per default quando si avvia l'editor.

Tabella 3.2 - Le modalità d i Vim.


Modalità Tasto Funzione
Consente di eseguire i comandi del-
Normal Esc l'editor: cancellare una riga, modificare
una parola ecc.
Entrando in questa modalità il testo che
Insert i viene digitato è automaticamente inse-
rito nel file corrente
La modalità visuale permette di selezio-
Visual V, V nare un'area del testo e di eseguire un
comando sull'area selezionata
gh in Modalità Seleziona un'area del testo. Quando si
Normal, Ctrl+G digitano dei caratteri stampabili, l'area
Select
in Modalità selezionata viene cancellata e si entra in
Visual Modalità Insert
In questa modalità si p u ò inserire una
riga di testo nella parte in basso della fi-
Command Line /, ?, ! nestra. Viene usata da diversi comandi,
che la attivano
Ex Q Consente di digitare linee di comandi Ex
Ex è un vecchio editor di linea, cioè un editor che opera sulle linee di
un file anziché fornire una visione complessiva del testo da modificare.
Attualmente ex costituisce, come si è visto, una modalità di vi e dei suoi
cloni: entrando in modalità Ex si richiamano Infatti i comandi disponibili
nell'editor ex. Lanciando in un terminale il comando ex si avvia vim e si
entra direttamente in modalità Ex.

Per aprire un file con Vim basta eseguire in un terminale vi seguito dal
nome del file. In Ubuntu, infatti, l'eseguibile vi non è altro che un collega-
mento al programma vim.
L'editor dispone di un 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 uten-
te, 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 cur-
sore 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 corren-
te, d$ cancellerà tutti i caratteri dalla posizione attuale del cursore alla fine
della riga e così via. Digitando dd verrà eliminata un'intera riga.

In realtà, il 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. Here are a
few often used ones:

x delete character under the cursor (short for "dl")


X delete character before the cursor (short for "dh")
D delete from cursor to end of line (short for "d$")
dw delete from cursor to next start of word
db delete from cursor to previous start of word
diw delete word under the cursor (excluding white space)
daw delete word under the cursor (including white space)
dG delete until the end of the file
dgg delete until the start of the file

If you use "c" instead of "d" they become change commands. And with "y" you
yank the text. And so forth.

|usr 04.txt [Aiuto] [RO] 478,1 95% 1


|[Senza nome] 0,0-1

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

Grazie al 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à eli-
minata la parola sotto il cursore e se ne potrà inserire subito un'altra, senza
dover cambiare modalità.
Per spostare del testo si usa il tasto p (paste): prima si cancella la frazione
del testo da spostare con una qualsiasi combinazione del 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 è se-


g 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 cor-
rente 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/sostituìsci/

Per e s e m p i o , p e r cambiare t u t t e le occorrenze della parola Linux in Ubun-


tu 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 co-
m 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 so-


stituzione 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 que-


sto 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 cambia-
menti 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 procede-
re, 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 stes-
sa. 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 coman-
d 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 man-
ciata 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 en


eval "'dircolors -b"
alias Is 'Is --color=auto
#alias dir='ls --color=auto --format=vertical'
#alias vdir='ls --color=auto --format=long'

#alias grep='grep --color=auto'


#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi

# enable programmable completion features (you don't need to enable


# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ /etc/bash_completion
/etc/bash_completion

# some more Is aliases


alias 11 Is -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 è possi-


bile 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, men-
tre 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.

mmmmm
" Configuriazione personate di vim

syntax on
set noautoindent
set modelines=5
tabstop=2

&term =- "rxvt" || &term "xterm" || &term "screen"


set background=light
endif

augroup filetype
au BufRead »/postponed/* ft=mail
augroup END

map Q {!}par 72qjh"M}


|a <F5> 0i#<Esc>

".vimrc" 17L, 292C scritti 17,1 Tut

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

Modificare le opzioni

Nel 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'inden-


tazione della linea precedente. Per esempio, se in una riga inseriamo
dei caratteri di tabulazione, questi saranno presenti anche nelle righe
successive.

Tra le 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 corri-
s p o n d e r e a un carattere di tabulazione. C o n set tabstop=2 un t a b corri-
s 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 ca-
rattere, 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 argo-
mento.
• W H
set js nojs
nrformats "alpha", "octal" and/or "hex"; number formats recognized for
CTRL-A and CTRL-X commands
(local to buffer)
set nf=octal hex

14 tabs and indenting

tabstop number of spaces a <Tab> in the text stands for


(local to buffer)
set ts=2
shiftwidth number of spaces used f o r each step of (auto)indent
(local to buffer!
set sw=8
smarttab a <Tab> in an indent inserts 'shiftwidth 1 spaces
set nosta sta
softtabstop if non-zero, number of spaces to insert for a <Tab>
(local to buffer)
set sts=0
¿option-window 445,1 54%

1 1
• [Senza nome' 0,0-1 Tutl
: options|

Figura 3.18- li comando :options mostra un elenco commentato delle opzioni disponi-
bili in Vim.

Per concludere questi paragrafi dedicati a Vim, la Tabella 3.3 è una sorta
di "guida per la sopravvivenza", con i comandi 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 Funzione
M u o v e il cursore a sinistra, in basso, in alto e a
h, j, k , ì
destra
:W Salva i cambiamenti al d o c u m e n t o corrente
:q Fa uscire dall'editor
X Cancella il carattere sotto il cursore
dd Cancella una riga
yy Registra una riga in memoria
Copia nel d o c u m e n t o i dati salvati in memoria
p
dai comandi c o m e x, d d e yy
/ Ricerca una stringa nel d o c u m e n t o
F • \\ I —
1
I i

4. Log e processi periodici

I«! 11 O isS IE If"- IH sistema di l o g e gii strumenti

di scheduling per amministrare al meglio

una macchina.

Se gli strumenti fondamentali per un amministratore sono la shell e l'edi-


tor, la gestione quotidiana di una macchina non può prescindere dalla
conoscenza approfondita dei sistemi di log e dei principali software per
la gestione dei processi periodici (scheduling). Questo capitolo, 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 informazio-
ni 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 sysklo-
g 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 Autorizzazioni. Per il comando sudo, per esempio


daemon.log Comunicazioni relative ai demoni
Contiene i messaggi inviati dal kernel durante la
dmesg
procedura di b o o t
kern.log L'insieme dei messaggi provenienti dal kernel
mail.err, mail.info,
Messaggi relativi alla posta
mail.log, mail.warn
Importante file di log, raccoglie un nutrito nume-
messages
ro di tipi di messaggi diversi
Informazioni e messaggi di errore inviati dal ser-
Xorg.*.log
ver 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. Faci-


ìity 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 ker-
nel (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 1,1 Cim

Figura 4.1-11 file di configurazione letto da syslog è /etc/syslog.conf.

Tramite mark, infine, si generano messaggi di timestamp (delle "marche


temporali") a intervalli regolari: ciò può risultare utile per individuare con
precisione il momento in cui si manifesta un problema sulla macchina.
I valori 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 messag-
gio è debug (informazioni per ¡1 debugging), mentre emerg (emergenza!)
rappresenta la gravità più alta possibile per un log.
Per l'indicazione della facility e del level è consentito usare il valore * (in-
clude tutti i valori possibili), mentre per il solo level è permesso l'utilizzo
anche della parola chiave none (non include alcun valore). Per esempio,
mail.* applica un'azione a tutti i livelli della facility mail. Con il selettore
news.none, invece, si indica che a nessun livello della facility news deve
corrispondere una determinata azione di log.
II campo azione, quindi, stabilisce ¡1 destinatario del log. Ecco l'elenco
delle azioni possibili:
• File regolare. Il log viene scritto su un file, che va indicato con il
percorso completo. Esempio: /var/log/auth.log
• Macchina remota. Il log viene inviato al demone syslogd di una
macchina remota. Può essere usato un nome di host o un indirizzo
IP. Esempio: ©192.168.1.12
• 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 selezio-
ne 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 riverseran-
no 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/maìl

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 carat-
teri ! 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, sa-
rebbero dunque memorizzati solo i messaggi con priorità debug e info.
Nello stesso esempio si utilizza il carattere ; per indicare su una stessa riga
due diversi selettori. I selettori vengono letti in successione: un selettore
può quindi escludere quanto stabilito dai selettori precedenti. L'utilizzo
canonico del carattere ; è appunto quello di riunire un selettore generico
(mail. *) e uno di esclusione (mail. ! =notice), così da ricreare in una singola
riga un costrutto del 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 dal-
l'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 Cim

Figura 4.3 - La configurazione di logrotate è contenuta nel file /etc/logrotate.conf


Fra i pacchetti preinstallati in Ubuntu Server è presente logrotate, un
potente strumento per la gestione dei log. Grazie a esso è possibile
ruotare, cancellare e inviare per email i file di log. La configurazione del
programma è contenuta nel file /etc/logrotate.conf: nell'immagine nella
pagina precedente (Figura 4.3) è possibile vedere parte del contenuto
di default di questo file.
In aggiunta a quanto presente in logrotate.conf, la directory /etc/logro-
tate.d raccoglie i file di configurazione per singoli programmi o servizi:
questa directory viene popolata da file creati in automatico durante l'in-
stallazione dei pacchetti, ma può essere utilizzata anche dall'amministra-
tore per inserire direttive di configurazione senza dover intervenire sul file
centrale logrotate.conf.
Nella Tabella 4.2 sono elencate le principali direttive riconosciute da lo-
grotate.

Tabella 4.2 - Le direttive di logrotate.


Direttiva Significato
1 vecchi file di log vengono compressi. La direttiva con-
com press
traria è nocompress
daily 1 file di log vengono ruotati giornalmente
weekly 1 file di log vengono ruotati ogni settimana
monthly 1 file di log vengono ruotati ogni mese
Se il file di log è vuoto non viene ruotato. La direttiva
notifempty
contraria è ifempty (default)
olddir x 1 vecchi file di log vengono spostati nella directory x
Prima di essere cancellati o inviati per email i file di log
rotate x
vengono ruotati x volte
Se le dimensioni del file di log sono maggiori di x il file
size=x
viene ruotato
Raggiunto il termine massimo di rotazioni, il file di log
mail x
viene inviato via email all'indirizzo x
Nelle righe d'esempio che seguono viene riportato un file logrotate.conf
minimale:

weekly
rotate 3
compress

/var/log/dpkg.log {
monthly
rotate 12
notifempty
}

Le prime tre righe impostano una configurazione generale per tutti i file di
log da gestire, mentre le righe successive stabiliscono le direttive da usare
per il solo file /var/log/dpkg.log.
Come si può vedere, per limitare il valore delle opzioni a un determinato
file di log è sufficiente creare un blocco di direttive inserite tra parentesi
graffe, dichiarando prima del blocco il nome stesso del file di log.
In queste righe di esempio, dunque, per default i log vengono compressi
(compress) e ruotati ogni settimana (weekiy). Dopo che stato state effettua-
te tre rotazioni (rotate 3), un log viene eliminato. Per il file /var/log/dpkg.
log, invece, i log vengono ruotati mensilmente (monthly) e per dodici volte
(rotate 12), ma non se risultano vuoti (noifempty).

Processi periodici con cron


Nelle pagine precedenti si è visto come logrotate possa essere utilizzato
per far ruotare i log dal sistema in modo automatico. Logrotate non avvia
alcun demone al boot della macchina: il programma viene semplicemente
eseguito ogni giorno da uno script che lo richiama.
Questa non è altro che un'operazione di scheduling effettuata tramite
cron. Mediante cron, dunque, è possibile eseguire dei comandi secondo
scadenze temporali prestabilite: si può decidere di cancellare una deter-
minata directory ogni settimana alle 8:00, di controllare se un server è
attivo ogni primo mercoledì del mese alle 17:30 e così via.
La configurazione diretta di cron è piuttosto articolata e può risultare so-
vradimensionata per le operazioni di scheduling più elementari. Nei pa-
ragrafi che seguono, quindi, si presenteranno prima gli strumenti per una
gestione semplificata degli eventi da eseguire, poi si interverrà diretta-
mente sulla configurazione di cron.

Scheduling semplificata
Ubuntu, così come altre diffuse distribuzioni Linux, fornisce delle directory
mediante le quali è possibile programmare l'esecuzione via cron di co-
mandi secondo scadenze rigide: ogni ora, ogni giorno, ogni settimana e
ogni mese.
Inserendo un file con i comandi da lanciare nella directory /etc/cron.hourly,
quindi, le istruzioni in esso presenti verranno eseguite ogni ora. Per le ese-
cuzioni giornaliere si utilizzerà la directory /etc/cron.daily, per quelle setti-
manali /etc/cron.weekly e per quelle mensili, infine, /etc/cron.monthly.
Se in un terminale si prova a leggere con is il contenuto di /etc/cron.daily
(Figura 4.4), per esempio, si vedrà che tra i vari file presenti nella directory
è indicato anche logrotate: è proprio grazie a questo file che il program-
ma logrotate viene eseguito 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 12:43
drwxr-xr X 138 root root 12288 2008 09 22 12:43
-rwxr-xr X 1 root root 311 2007 03 05 07:38
-rwxr-xr X 1 root root 219 2008 04 18 17:58
-rwxr-xr X 1 root root 7441 2008 04 22 17:20
-rwxr-xr X 1 root root 314 2008 04 04 11:56
-rwxr-xr X 1 root root 502 2007 12 12 14:59
-rwxr-xr X 1 root root 71 2008 01 24 20:02
-rwxr-xr X 1 root root 89 2006 06 19 20:21
-rwxr-xr X 1 root root 954 2008 03 12 14:24 man db
-rwxr-xr X 1 root root 183 2008 03 08 19:22
-rwxr-xr X 1 root root 1154 2008 03 07 21:24
-rw-r--r - 1 root root 102 2008 04 08 20:02 .placeholder
-rwxr-xr X 1 root root 3295 2008 04 08 20:02
-rwx r-x r X 1 root root 1309 2007 11 23 10:06
ale@pitagora: it

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 prece-
dente. In questi casi è necessario modificare o creare un file di crontab: si
tratta dei file di configurazione di cron, dotati di una sintassi particolare
che ora si andrà a descrivere.
Il file crontab principale è /etc/crontab e in esso è contenuta la confi-
gurazione di sistema per cron, mentre la directory /etc/cron.d contiene
specifici file di configurazione aggiuntivi installati dai singoli pacchetti.
Nell'immagine seguente (Figura 4.5) è possibile vedere le righe di cui è
composto il file /etc/crontab di default su Ubuntu Server.

/etc/crontab: system-wide crontab


|# Unlike any other crontab you don't have to run the 'crontab'
|# command to install the new version when you edit this file
|# and files in /etc/cron,d. These files also have username fields,
l# that none of the other crontabs do,

|SHELL=/bin/sh
|pftTH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

|# m h dom mon dow user command


ll7 * * * * root cd / && run-parts --report /etc/cron.hourly
¡25 6 * * * root test * u bin/ || cd / M , run p report /etc
/cron.daily )
|47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc
/cron.weekly !
¡52 6 1 * * root test x /usr/sbin/anacron || ( cd / && run-parts --report /etc|
/cron.monthly )

"/etc/crontab" 17L, 724C 1,1 Tut

Figura 4.5 - Il file /etc/crontab installato per default su Ubuntu.


All'inizio di questo file sono presenti alcune righe di commento, che inizia-
no con il carattere #. Quindi compaiono le righe seguenti:

SHELL=/bin/sh
PATH=/usr/locai/sbin:/usr/locai/bin:/sbin:/bin:/usr/sbin:/usr/bin

In queste due righe viene dichiarato il valore che le variabili ambientali


SHELL e PATH devono assumere durante l'esecuzione dei comandi indicati
nel file di configurazione. Nel caso si assegni un valore alla variabile MAIL-

TO, inoltre, tale valore indicherà l'utente a cui cron deve inviare i messaggi
generati dai comandi quando questi vengono eseguiti.
Dopo queste righe si elencano i diversi comandi da lanciare a scadenze
regolari. La sintassi utilizzata in un file crontab per stabilirne l'esatta ese-
cuzione è la seguente:

minuto ora giorno mese giorno_settimana utente comando

Una spiegazione dettagliata dei singoli campi è contenuta nella Tabella 4.3.

Tabella 4.3 - I campi per specificare un comando in crontab.


Campo Significato
Indica il minuto in cui eseguire il comando. Può
minuto
assumere un valore fra 0 e 59
ora Indica l'ora. Può assumere un valore fra 0 e 23
Indica il giorno del mese. Può assumere un valore
giorno
fra 1 e 31
mese Indica il mese. Può assumere un valore fra 1 e 12
Indica il giorno della settimana. Può assumere un
giorno_settimana valore fra 0 e 7: per indicare la domenica è possi-
bile usare il numero 0 o 7
Stabilisce quale utente deve eseguire il comando
utente
indicato
Il comando da lanciare. Può contenere spazi e
comando
non va inserito tra virgolette

Nei cinque campi che definiscono l'orario di esecuzione è possibile uti-


lizzare il carattere * per indicare tutti i valori possibili. Si può inoltre rap-
presentare una sequenza di valori unendo due numeri tramite il trattino
-, mentre per indicare un insieme di valori non sequenziali questi vanno
separati con il carattere ,.
Per esempio, scrivendo 6-7 nel campo giorno si stabilirà che I giorni di
esecuzione del comando saranno il sabato e la domenica. Scrivendo in-
vece 1,4,5 nel campo mese il lancio del comando avverrà esclusivamente
durante i mesi di gennaio, aprile e maggio.
Nel caso di valori non sequenziali ma che seguano un intervallo prestabili-
to è consentito l'utilizzo di / in aggiunta al carattere - come scorciatoia per
l'inserimento dei valori. Ecco un esempio per il campo minuto:

0-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 pre-
cedente.
Creare crantab personali
Il file /etc/crontab e i file contenuti nella directory /etc/cron.d possono
essere manipolati esclusivamente dall'utente root. Ai singoli utenti è data
però la possibilità di gestire file crontab personali: questi vengono memo-
rizzati nella directory /var/spool/cron/crontabs e possono essere creati e
modificati tramite il comando crontab -e.
Lanciando questo comando verrà aperto, con l'editor di default, il file di
crontab dell'utente attualmente attivo e sarà possibile aggiungere o cam-
biare righe di configurazione seguendo la sintassi indicata in precedenza
per il file /etc/crontab principale.
L'unica differenza tra un file di crontab gestito da root e uno creato da
un utente comune è l'assenza nel secondo del campo utente: il nome
dell'utente che deve lanciare i comandi, infatti, in questo caso coincide
con il nome del file corrispondente in /var/spool/cron/crontabs (file ale,
giovanni, mario e così via).
Una volta lanciato il comando crontab -e apparirà una schermata simile a
quella dell'immagine seguente (Figura 4.6).

• i •• u n h « ^ M H m n n M i W - a i ' 1 ' H U W E i i E

# m h doni mon dow command


I
A questo punto è possibile assegnare specifici valori a delle variabili d'am-
biente e inserire righe per l'esecuzione di comandi, come questa:

30 0 * * * $HOME/bin/dailycron

Nella riga si indica a cron di lanciare il comando $HOME/bin/dailycron tut-


ti i giorni, alle ore 00:30. La variabile $HOME viene espansa nel percorso
della home dell'utente che ha creato il file crontab corrente.
Per memorizzare e rendere attivo il crontab, quindi, è sufficiente salvare il
file e uscire dall'editor.

Per cambiare l'editor di default è possibile Impostare opportunamente


le variabili EDITOR o VISUAL in un file .profile personale o in quello di
sistema. Per esempio:
export EDITOR-vi
Oppure, si può scegliere l'editor di default lanciando il comando sudo
update-alternaiives --config editor e selezionando una delle voci
disponibili dall'elenco che appare.

L'amministrazione di un crontab avviene mediante il programma crontab


stesso. Per visualizzare il contenuto di un crontab si esegue il comando
crontab -ì, mentre crontab <fiie> elimina il file di crontab attuale del-
l'utente e lo rimpiazza con il contenuto di <fiie>. Infine, crontab -r elimina
un crontab.
Quando il comando crontab viene eseguito dal superutente, questo può
gestire direttamente i file crontab degli utenti normali tramite l'opzione
aggiuntiva -u <utente>. Ecco un esempio che fa visualizzare nel terminale
usato da root il crontab dell'utente mario:

crontab -u mario -1
5. Il server è in rete

GII strumenti E i file di configurazione


per inserire ii server io una rete locale.

Un computer adibito a server che non sia connesso ad alcuna rete locale
è certo una macchina di scarsa utilità.
La procedura di installazione di Ubuntu Server riconosce le schede di rete
presenti su un PC e consente di configurarle con facilità. A volte, però, le
impostazioni di rete al momento dell'installazione differiscono dall'effetti-
va struttura di rete in cui deve inserirsi una macchina server e, del resto, gli
strumenti semplificati presenti in un sistema di installazione difficilmente
possono soddisfare tutte le esigenze.
In questo capitolo si vedrà dunque come configurare fin nel minimo detta-
glio le schede di rete presenti su un PC, utilizzando prevalentemente tool
a linea di comando e intervenendo sui file di configurazione di sistema.
Verrà spiegato come inserire la macchina sia all'interno di una rete cablata
sia in una WLAN.

Le informazioni di base
I dati sulla configurazione delle schede di rete sono contenuti nel file /etc/
network/interfaces. Ora che si conoscono le potenzialità e i comandi di
base di Vim, è possibile aprire il file di configurazione con questo editor:

sudo vi /etc/network/interfaces
Il contenuto del file rispecchierà le impostazioni indicate durante l'instal-
lazione del server. Per esempio, se si utilizza una sola interfaccia di rete
e si richiede l'indirizzo IP tramite DHCP il file, dopo una serie di righe di
commento introduttive, conterrà le righe seguenti:

# The loopback network interface


auto lo
iface lo inet loopback

# The primary network interface


auto ethO
iface ethO inet dhcp

Si tratta di due blocchi di righe, ognuno dei quali è dedicato a una diversa
interfaccia di rete.
La prima interfaccia è quella di loopback, un'interfaccia fittizia che iden-
tifica la macchina locale: serve a poter mettere in comunicazione, in un
computer, i programmi che utilizzano il protocollo TCP/IP quando non è
disponibile alcuna effettiva connessione di rete.
Se si installa un web server sulla propria macchina, per esempio, è proprio
grazie all'indirizzo di loopback (127.0.0.1) che è possibile accedere in lo-
cale alle pagine web indipendentemente dalla loro disponibilità in rete.
L'interfaccia di loopback è fondamentale per il corretto funzionamento di
una macchina ed è sconsigliabile eliminarla.
La riga auto io stabilisce che io, cioè l'interfaccia di loopback, deve essere
attivata automaticamente (auto) all'avvio del sistema.
Nella riga successiva, quindi, viene configurata l'interfaccia tramite l'istru-
zione iface. Questa ha la seguente sintassi:
iface interfaccia tipo modalità
interfaccia è il nome dell'interfaccia di rete da configurare. Nell'esempio
si tratta di lo. Segue il tipo di indirizzo richiesto dall'interfaccia: inet per
IPv4, inet6 per IPvó o ipx. Infine si indica la modalità di configurazione
dell'interfaccia, che nella riga dell'esempio è loopback.
IPv6 è II successore di IPv4, il Protocollo Internet attualmente in uso.
Consente di gestire un numero molto più alto di indirizzi rispetto al pre-
decessore. IPX sta per Internetwork Packet Exchange ed è un protocollo
di rete, ora in disuso, che veniva utilizzato nelle reti NetWare.

Nella Tabella 5.1 vengono elencate le principali modalità di configurazione


che è possibile impiegare quando si utilizza inet come tipo di indirizzo.

Tabella 5.1 - Le principali modalità di configurazione p e r inet.


I Modalità Significato
loopback Definisce un'interfaccia di loopback
Definisce una configurazione statica dell'interfac-
static
cia, con gli indirizzi indicati direttamente
Il sistema non effettua alcuna configurazione del-
manual
l'interfaccia
Per la configurazione dell'interfaccia viene contat-
dhcp
tato un server DHCP

Le righe successive di /etc/network/interfaces configurano l'interfaccia di


rete etho, cioè la prima scheda Ethernet sulla macchina. La riga iniziale
auto etho attiva automaticamente l'interfaccia della scheda, mentre iface
etho inet dhcp configura etho per richiedere l'IP a un server DHCP.

Configurare un indirizzo statico

La presenza di un server DHCP nella propria rete locale semplifica certo la


gestione della LAN. L'assegnazione di IP dinamici può risultare però limi-
tante. Impiegando indirizzi che possono mutare da una sessione all'altra,
infatti, non è possibile né far aprire al firewall determinate porte su speci-
fiche macchine, né riferirsi ai PC della rete indicandone direttamente l'IP.
In questi casi, le soluzioni che si possono adottare sono diverse. Se il pro-
prio server DHCP lo consente, innanzitutto, è possibile fare in modo che
questo assegni degli indirizzi statici a singoli MAC Address nella rete. In
alternativa, si può far gestire al server DHCP un sottoinsieme degli indirizzi
IP e assegnare manualmente il resto degli indirizzi.
Una soluzione più radicale, infine, è quella di abbandonare le comodità
offerte dai server DHCP e configurare manualmente le interfacce di rete
di tutti i PC nella LAN (ma se la rete locale è di ampie dimensioni ciò può
risultare poco pratico e inutilmente laborioso).

Nel caso di LAN domestica, il servizio di server DHCP viene fornito soli-
tamente dal router per la connessione ADSL. Per configurare il server
DHCP, quindi, è sufficiente accedere all'interfaccia web di gestione del
proprio router.

A meno di poter configurare il server DHCP in modo tale da abbinare un


indirizzo fisso a un MAC Address, quindi, è necessario che a una o più
macchine della rete il file /etc/network/interfaces assegni degli IP statici.
Ecco come procedere. Prima di tutto si deve scrivere in /etc/network/in-
terfaces una riga con la corretta istruzione iface, inserendo l'interfaccia di
rete da configurare seguita da inet e dalla modalità statici

iface ethO inet static

Quindi si digitano le righe con le informazioni per configurare la scheda:

address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1

Come address si inserisce l'indirizzo IP che si vuole assegnare alla scheda,


mentre la netmask indica l'indirizzo della maschera di rete adottata nella
propria LAN. La riga gateway, infine, va inserita se la macchina è collegata
a un dispositivo gateway (per esempio un router) e il valore da inserire non
è altro che l'indirizzo IP del gateway stesso.
Prima di salvare il file e chiudere l'editor con il comando :Wq, se si desi-
dera far attivare l'interfaccia di rete all'avvio della macchina è necessario
inserire la riga auto etho (cambiando ethO con l'effettiva interfaccia della
propria scheda di rete) prima del blocco di righe per la configurazione
della scheda.
Nell'immagine seguente (Figura 5.1) è possibile osservare il contenuto del
file /etc/network/interfaces, completo di tutte le righe per l'attivazione e
la configurazione di un indirizzo statico.

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
¡address 192.168.0.5
netmask 255.255.255.0
S]ateway 192.168.0.1

8,1 Tut

Figura 5.1 - Il file /eic/network/ìnterfaces Con le righe per configurare un'interfaccia


dotata di IP statico.

Una volta inserite o modificate delle righe in /etc/network/interfaces, quin-


di, per aggiornare la configurazione dell'interfaccia di rete nella sessione
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ù sempli-
ce e diretto per assegnare dei nomi agli indirizzi IP della LAN è intervenire
sul file di configurazione /etc/hosts.
Ecco come appare il contenuto di un file /etc/hosts di default su Ubuntu
Server:

127.0.0.1 localhost
127.0.1.1 pitagora

# The following lines are desirable for IPv6 capable hosts


: :1 ip6 -localhost
feOO 0 ip6 -localnet
ffOO 0 ip6 -mcastprefix
f f 02 1 ip6 -allnodes
f f 02 2 ip6 -allrouters
f f 02 3 ip6 -allhosts

Ciascuna riga presenta un indirizzo IP e, a seguire, un nome per l'indirizzo


e un alias opzionale.
La prima riga stabilisce che all'indirizzo 127.0.0.1 (l'interfaccia di loopback)
venga assegnato il nome localhost. La seconda riga, invece, è una pecu-
liarità delle distribuzioni Debian e Ubuntu e associa all'indirizzo 127.0.1.1
il nome di host della macchina (nell'esempio, il nome è pitagora). Le righe
successive del file /etc/hosts di default, invece, riguardano la gestione
degli indirizzi IPv6.
Se nella rete locale ufficio.lan uno degli host ha come indirizzo IP
192.168.0.5 e ha come nome eraclito, una riga appropriata in /etc/hosts
sarebbe la seguente:

192.168.0.5 eraclito. ufficio, lan eraclito


In questa riga ¡1 nome di dominio completo è eraclito.ufficio.lan, mentre
eraclito è un alias, in questo caso una scorciatoia per indicare rapidamente
l'host. Ogni riferimento a eraclito.ufficio.lan oppure a eraclito, quindi, ver-
rà tradotto nell'indirizzo IP 192.168.0.5. Nello stesso modo è poi possibile
assegnare i nomi agli altri PC presenti nella LAN.
Il nome dell'host per la macchina locale è stato indicato durante la procedu-
ra di configurazione del sistema operativo. Se si lancia il comando hostname
verrà mostrato in output il nome dell'host, per esempio eraclito. Lanciando
hostname -f sarà visualizzato invece il FQDN (Fully Qualified Domain Name,
cioè il nome di dominio completo), come eraclito.ufficio.lan.
Nella configurazione di default di Ubuntu Server il FQDN non è impostato
e l'output del comando hostname -f mostra il semplice nome di host. Se il
nome di dominio abbinato alla scheda di rete è fisso e la rete locale stessa
è sempre attiva, la prassi comune è quella di indicare come FQDN il nome
dell'host seguito dal nome di dominio della LAN.

127.0.0.1 localhost
192.168.0.2 pitagora.home.lan Pitagora

# Le altre macchine nella LA[JJ


192.168.0.3 empedocle.home.lan empedocle
192.168.0.4 Parmenide.home,lan Parmenide
192.168.0.5 piatone,home.lan piatone

# The following lines are desirable for IPv6 capable hosts


:1 ip6-localhost ip6-loopback
fe00 0 ip6-localnet
ff00 0 ip6-mcastprefix
ff02 1 ip6-allnodes
f f©2 2 ip6-allrouters
ff02 3 ip6-allhosts

'/etc/hosts" 15L, 414C scritti 4,29 Tut

Figura 5.2 - Un file /etc/hosts completo, con le informazioni su tutte le macchine della LAN.

Il modo più semplice per inserire un FQDN nella configurazione di siste-


ma, quindi, è intervenire sul file /etc/hosts. Si elimina la riga che inizia
per 127.0.1.1 e se ne inserisce una contenente l'indirizzo IP assegnato
all'interfaccia di rete della macchina, il FQDN con il nome di dominio della
LAN e il nome dell'host come alias.
Nell'immagine nella pagina precedente (Figura 5.2) viene presentato un
file /etc/hosts completo, nel quale il FQDN indicato per la macchina lo-
cale 192.168.0.2 è pitagora.ufficio.lan e in cui sono stati inseriti tutti gli
indirizzi dei PC connessi in rete.
Una volta conclusa la scrittura del file /etc/hosts sulla macchina locale,
quindi, non rimane che copiare lo stesso file su 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 neces-
sario sperimentare, apportando cambiamenti talvolta rilevanti alle impo-
stazioni di rete. In tal caso è preferibile impartire comandi che intervenga-
no direttamente sulla rete, invece di andare a modificare volta per volta
file di configurazione di sistema come /etc/network/interfaces.
Un importante comando per amministrare la rete è ifconfig. Lanciando il
comando senza argomenti vengono mostrate informazioni dettagliate sul-
le interfacce di rete attive, mentre se si esegue ifconfig -a l'output visua-
lizzato concerne tutte le interfacce disponibili, che siano attive o meno.
Nell'immagine seguente (Figura 5.3) è possibile vedere un output d'esem-
pio del comando ifconfig. Ogni blocco di informazioni riguarda una spe-
cifica interfaccia di rete. Il primo blocco in figura indica che l'interfaccia
ethO è attiva nel sistema, ha il MAC Address (HWaddr) oo : of : bo : a7:8a:4e e
l'indirizzo IP è 192.168.1.4, mentre il broadcast (Bcast) ha come indirizzo
192.168.1.255 e la maschera di rete (Mask) è 255.255.255.0.

L'indirizzo di broadcast consente di inviare pacchetti a tutte le macchine


di una sottorete. In una struttura di rete elementare l'indirizzo di broa-
dcast viene desunto dall'indirizzo di rete e dalla relativa netmask.

[ DigitaiLifeSiyie*pro
lSj?@pitagora:~$ ifconfig
ethO Link encap:Ethernet HWaddr 00:0f:bO:a7:8a:4e
inet addr : 192.168.1.4 Bcast : 192.168.1.255 Mask : 255.255.255.0
inet6 addr: fe80::20f:bOff:fea7:8a4e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric: 1
RX packets:2664 errors:0 dropped:© overruns:© frame:0
TX packets:2977 errors:© dropped:© overruns:© carrier:©
collisions:© txqueuelen:100©
RX bytes:1409139 (1.3 MB) TX bytes:595©90 (581.1 KB)
Interrupt:22 Base address:0x5000

ethl Link encap:Ethernet HWaddr 00:13:ce:c6:©5:53


inet6 addr: fe80: :213:ceff:fec6:553/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:150© Metric:1
RX packets:1320 errors:© dropped:© overruns:© frame:0
TX packets:3507 errors:© dropped:© overruns:© carrier:l
collisions:© txqueuelen:100©
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:23 Memory:bc007000-bc©07fff

lo Link encap:Local Loopback


inet addr:127.0,0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:!

Figura 5.3- L'output del comando ifconfig mostra informazioni sulle interfacce attive nel
sistema.

C o n ifconfig «interfaccia» ( p e r e s e m p i o ifconfig ethi), q u i n d i , v e n g o n o

m o s t r a t e i n f o r m a z i o n i su d i u n a s i n g o l a 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 255.255.255.0

Con questo comando, all'interfaccia 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 broadcast


192.168.1.127 up

In questo esempio, oltre a essere assegnato l'indirizzo 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'ag-
giunta dell'opzione up non è necessaria.

Se è necessario memorizzare in /etc/network/interfaces l'indirizzo di


broadcast di un'interfaccia di rete, tutto quello che bisogna fare è Inseri-
re nel file, tra le righe di opzioni successive all'istruzione iface, una riga
come la seguente:
broadcast 192.168.1.127

Con il comando ifconfig «interfaccia» up, dunque, si attiva l'interfaccia


Indicata, mentre con ifconfig «interfaccia» down la si disattiva:

sudo ifconfig ethl up


sudo ifconfig ethl down

Instradamento dei pacchetti

Un pacchetto, per raggiungere la propria destinazione, effettua un per-


corso a volte semplice e lineare, a volte lungo e tortuoso. L'instradamento
dei pacchetti viene chiamato routing e le informazioni sul percorso che
i diversi pacchetti devono percorrere vengono inserite nelle cosiddette
tabelle di routing.
Per conoscere nel dettaglio le tabelle di routing di una macchina è pos-
sibile usare il comando netstat con le opzioni -nr o -r. Nel primo caso
vengono mostrati direttamente gli indirizzi numerici, nel secondo le infor-
mazioni vengono indicate risolvendo i nomi.
Nell'immagine seguente (Figura 5.4) è visibile l'output del comando netstat
-nr eseguito su di una macchina con una configurazione di rete basilare.
Il primo campo mostrato in ogni riga di percorsi (route) indica la destina-
zione (Destination) cui si fa riferimento ed è solitamente un indirizzo di
rete. Il secondo campo contiene il Gateway necessario per raggiungere
la rete di destinazione, mentre il campo successivo, Genmask, mostra la
maschera di rete di Destination. L'ultimo campo presente, infine, è iface
e indica l'interfaccia di rete cui devono essere inviati i pacchetti che se-
guono il percorso indicato.
|ale@pitagora:~$ netstat -nr
Kernel IP routing table
¡Destination Gateway Genmask Flags MSS Window irtt Ifa
192.168,1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth'
Ì169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth'
Ì0.0.0.0 192,168.1,1 0.0.0,0 UG 0 0 0 eth'
;ale@pitagora:-$ |

Nell'output di esempio sono presenti tre righe di route. Nella prima


l'indirizzo di destinazione è 192.168.1.0 e il Gateway è indicato come
0.0.0.0: si tratta dalla rete locale, quindi non è necessario contattare
alcun gateway per inoltrare i pacchetti. La seconda riga indica una route
con destinazione 169.254.0.0 e, anche qui, Gateway 0.0.0.0. Si tratta
semplicemente di un percorso creato dal servizio Avahi, nel caso esso
risulti installato sul sistema.

Avahi è un'implementazione libera di Zeroconf, un protocollo che con-


sente dì creare una rete senza richiedere configurazioni da parte degli
utenti o la presenza di servizi come DNS e DHCP.

La terza e ultima riga, infine, presenta l'indirizzo di Gateway 192.168.1.1


e indica come destinazione 0.0.0.0. Questo è il gateway di default, che
viene contattato per tutte le destinazioni che non rientrano nelle regole di
routing precedenti.
Il significato complessivo di queste tre semplici righe è dunque il seguen-
te: i pacchetti destinati all'indirizzo di rete 192.168.1.0 sono diretti alla
LAN, tutti gli altri devono uscire dalla rete locale e richiedono dunque
l'intervento del gateway, raggiungibile all'indirizzo 192.168.1.1.
Ovviamente, in reti anche di piccole dimensioni l'insieme delle tabelle di
routing risulta inevitabilmente molto più complesso di quello indicato ma,
ciononostante, le modalità di lettura dell'output di netstat rimangono le
medesime. Per modificare le tabelle di routing si usa il comando route.
Per aggiungere un percorso si fa seguire il comando dal parametro add,
come in questo esempio:

sudo route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.5.1 ethl

Nella riga si indica 192.168.4.0 come destinazione della route. Dato che
viene premesso il parametro -net, 192.168.4.0 è un indirizzo di rete; per
inserire un indirizzo di host come destinazione, questo va preceduto dal
parametro -host.
La maschera di rete 255.255.255.0 viene dichiarata d o p o netmask, quindi
a gw segue l'indirizzo del gateway che va contattato per questo percor-
so, 192.168.5.1. L'ultimo parametro indica l'interfaccia di rete da usare,
in questo caso e 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 parame-
tro dei seguito dall'indirizzo di destinazione presente nella route:

sudo route del 192.168.4.0

Rendere permanenti le modifiche

Le modifiche alla configurazione della rete effettuate con i comandi ifcon-


fig e route scompaiono allo spegnimento della macchina. Per renderle
definitive, quindi, è necessario mettere mano al file di configurazione /
etc/n etwo rk/i n te rfa ces.
La corrispondenza tra le opzioni disponibili con il comando ifconfig e le ri-
ghe che è possibile inserire in /etc/network/interfaces è diretta. Per esem-
p 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 al-
l'interfaccia di rete cui i comandi si riferiscono. Le righe di route si ripor-
tano integralmente e vanno precedute dall'opzione up. Una riga come
route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.4.2 ethl
si inserisce quindi nel blocco dedicato a e 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 co-
mando subito prima che l'interfaccia venga disattivata. Per eliminare la
route indicata nell'esempio precedente quando viene chiusa l'interfaccia,
si aggiunga la riga seguente:

down route del 192.168.5.0


Le reti Wi-Fi
Le reti senza fili o WLAN forniscono una pratica e duttile modalità di col-
legamento per le macchine, di solito in aggiunta a una rete cablata. Dato
che il funzionamento delle WLAN è basato sull'uso delle trasmissioni ra-
dio, una rete senza fili diffonde i dati in transito su di essa nell'ambiente
circostante. Per proteggere le informazioni, dunque, è necessario adotta-
re un solido protocollo di sicurezza che cripti i dati rendendoli illeggibili
agli utenti non autorizzati.
Il vecchio protocollo WEP (Wired Equivalent Privacy) ha notevoli falle di sicu-
rezze che consentono a uno sconosciuto di ricavare facilmente e velocemen-
te la chiave di cifratura utilizzata in una rete. Ottenuta la chiave WEP, l'intruso
può avere accesso alla WLAN e agire indisturbato all'interno di essa.
Nelle pagine che seguono, quindi, si offriranno le informazioni necessarie
per creare una rete Wi-Fi protetta mediante i protocolli WPA e WPA2 e per
connettere a essa le varie macchine.

I protocolli WPA e WPA2 forniscono entrambi una protezione molto più sicu-
ra rispetto a quella che può assicurare il protocollo WEP. Rispetto a quest'ul-
timo, il WPA dispone di una chiave di cifratura di maggiori dimensioni e che
viene modificata per ogni pacchetto trasmesso. Infine, il WPA2 si differenzia
dal WPA per l'utilizzo del solidissimo algoritmo di cifratura AES.

L'Access Paint:

L'Access Point (AP) è il dispositivo che consente di collegare a una WLAN


dei PC forniti di scheda Wi-Fi o qualsiasi altro dispositivo che permetta di
accedere a una rete senza fili. In una rete casalinga è presente solitamente
un solo Access Point, mentre in W L A N di maggiori dimensioni sono pre-
senti più AP.
Bisogna controllare che la banda gestibile dall'Access Point sia sufficiente
per il numero di macchine da connettere alla rete: i dispositivi 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 general-
mente sufficienti per condividere una connessione a Internet ADSL e una
stampante e per scambiare documenti di piccole dimensioni.
Un AP può essere configurato per funzionare secondo diverse modalità.
Nella modalità Access Point il dispositivo fa da tramite tra una rete cablata
e i client Wi-Fi: si tratta della modalità di utilizzo più diffusa.
Un AP, però, può anche avere la funzione di Bridge. Questa modalità con-
sente di collegare due o più Access Point così da mettere in contatto più
reti cablate. Infine, in modalità Repeater un AP non fa altro che ripetere
il segnale Wi-Fi che riceve, in modo tale da estendere la copertura di
una WLAN preesistente. Tipicamente, un Access Point va configurato per
mezzo di un'interfaccia web. Nelle pagine di configurazione vanno quindi
stabiliti l'ESSID, cioè il nome che identifica la WLAN e la modalità di fun-
zionamento dell'AP: se si tratta dell'unico Access Point di cui si dispone,
la modalità deve essere quindi Access Point.

. ?"... * v - i i i i - ¡ _ ; r <

J
Modifica Visualizza Cronologia Segnalibri Strumenti guida

t# - £ C3 # v http7/192.168.1 2/ìndex.a

EPTRONIC
• ..IL, nbwttc CS4APk/ÌAccg<ì$ f'itir,

Security
K ; : ; Basic Setting 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.
flf ' Advanced
; Setting

'." f Security | WPA pre-shared key : j

MAC Filtering •WPA(TKIP) WPA2<AES) VVPA2

Figura 5.6 - L'interfaccia web perla configurazione di un Access Point Conceptronic C54APM.
Poi si indica il protocollo di sicurezza che la rete deve adottare. Per reti di
piccole e medie dimensioni è possibile scegliere il protocollo WPA PSK
(Pre-Shared Key), mentre per WLAN più estese è consigliabile utilizzare
WPA o WPA2 con autenticazione tramite server RADIUS.

I protocolli WPA e WPA2 permettono di utilizzare due diverse modalità di


autenticazione, Pre-Shared Key e RADIUS. La prima è basata su di un'unica
passphrase, cioè una lunga sequenza di caratteri con cui si ha accesso alla
WLAN, condivisa da tutte le macchine che si connettono alla rete. RADIUS,
invece, è un protocollo che permette la gestione centralizzata degli acces-
si e richiede l'impiego di un server per effettuare le autenticazioni.

Adottando un'autenticazione PSK ci si deve sincerare che la passphrase


prescelta non sia individuabile con facilità. Infatti, è possibile sferrare un
attacco basato su dizionario contro una rete protetta tramite WPA PSK:
per tale ragione, è consigliabile scegliere una passphrase lunga (possibil-
mente di 20 caratteri o più) e formata da una sequenza casuale di lettere,
numeri e segni d'interpunzione.
Nelle pagine di configurazione dell'Access Point è solitamente possibile
anche disattivare il broadcast dell'ESSID: si tratta di una pratica che occul-
ta il nome della WLAN e, quindi, nasconde la presenza stessa della rete
agli estranei. In realtà, una simile protezione è facilmente aggirabile utiliz-
zando strumenti per la rilevazione e lo sniffing di reti Wi-Fi come Kismet.
Un'altra pratica protettiva diffusa, anch'essa comunemente disponibile
nella configurazione degli AP, è il MAC Address Filtering. Questa consiste
nella creazione di una tabella con gli indirizzi MAC di tutte le macchine cui
è consentito accedere alla WLAN.
Anche in questo caso, però, si tratta di una protezione blanda, dato che
è molto semplice modificare il MAC Address di una scheda di rete e, di
rimando, impadronirsi di uno degli indirizzi cui l'accesso è permesso.
M
I file Modifica Visualizza Cronologia Segnalibri Strumenti Guida
'I unii m i ii'lim (ni
- *'"" http .•7192.168.1.2/mdex asp

CONCEPTROHIC
Coiiceptronic C64APM Access Paint

M A C A d d r e s s Filtering

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


to di configurare la scheda Wi-Fi sulla macchina server. Come nel caso
delle connessioni cablate, anche la configurazione del collegamento tra-
mite Wi-Fi va inserita nel file /etc/network/interfaces.
Un blocco di righe per collegare il PC alla 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 stabi-


lire 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 adot-
tano il protocollo WPA. L'istruzione wpa-ssid è seguita dall'ESSID della
rete Wi-Fi cui ci si vuole collegare (wireless, nell'esempio). La passphrase,
invece, va inserita 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 strin-
ga esadecimale di 63 caratteri (nell'esempio si tratta di ba7b5adc ecc.).
Nell'ultima riga del file /etc/network/interfaces si indica con wpa-driver il
driver necessario per gestire il protocollo WPA. Se nel file di configurazio-
ne non è presente alcuna riga con l'istruzione wpa-driver, viene utilizzato
il driver generico wext, che dovrebbe consentire il corretto funzionamento
del WPA su molte schede Wi-Fi.
Nella Tabella 5.2 vengono elencati i principali driver disponibili per gesti-
re il protocollo WPA. Se il driver wext non dovesse funzionare a dovere,
si controlli il chipset presente sulla scheda di rete e si indichi poi il driver
adatto tramite l'istruzione wpa-driver.

Tabella 5.2 - I principali driver per gestire il WPA.


[ Driver Schede compatibili I
wext Driver generico
madwifi Schede con chipset Atheros
h osta p Schede con chipset Prism
Schede con chipset Intel Centrino ipw2100
ipw e ipw2200. Driver per kernel < 2.6.14; per i
kernel recenti il driver è wext
atmel Schede con chipset ATMEL AT76C5XXx
Se si è scelto di disattivare il broadcast dell'ESSID, per connettersi a una
rete con ESSID nascosto si devono aggiungere al blocco di righe per
l'interfaccia di rete Wi-Fi in /etc/network/interfaces le righe seguenti:
wpa-ap-scan 1
wpa-scan-ssid 1

Se il proprio Access Point è configurato per usare il protocollo di sicurezza


WPA2 PSK, le righe da inserire in /etc/network/interfaces saranno:

iface ethl inet dhcp


wpa-ssìd wireless
wpa-psk 1234567890
wpa-driver wext
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK

Come si vede, rispetto all'esempio precedente si tratta semplicemente di


aggiungere le quattro istruzioni finali wpa-proto, wpa-pairwise, wpa-group
e wpa-key-mgmt con i valori appropriati per il WPA2.

Gestire l'interfaccia di rete Wi-Fi cnn iwconfig

Il comando iwconfig è il corrispettivo di ifconfig per le reti Wi-Fi e consente


di mostrare informazioni su un'interfaccia di rete e modificare i parametri
di funzionamento di questa.
Eseguendo in un terminale iwconfig senza argomenti, verranno visualizzate
informazioni dettagliate su tutte le interfacce wireless presenti nel sistema.
Un esempio di output è mostrato nell'immagine seguente (Figura 5.8).
Per ogni interfaccia wireless attiva (nell'esempio è presente solo eth 1 ) ven-
g 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:©

eth0 no wireless extensions,

ale@pitagora:~$ |

Figura 5.8 - L'output del comando iwconfig mostra informazioni su t u t t e le interfacce


wireless disponibili.

In tutte le configurazioni e negli esempi forniti in questo volume la modali-


tà utilizzata è Managed, in quanto è necessaria per il collegamento di una
scheda di rete a un Access Point. Le principali altre modalità disponibili
sono Ad-Hoc, Master e Monitor. Ecco il loro significato:
• Ad-Hoc. In una configurazione in cui la WLAN è priva di Access
Point, due o più schede di rete possono essere connesse diretta-
mente tra loro impostando su queste la modalità Ad-Hoc;
• Master. La scheda di rete, in questa modalità, assume le funziona-
lità di un Access Point;
• Monitor. Si tratta di una modalità "passiva", mediante la quale la
scheda di rete può ascoltare tutto il traffico in transito sulla frequen-
za in uso.

Lanciando iwconfig seguito da un'interfaccia di rete (per esempio iwconfig


ethi) verranno mostrate informazioni su quest'unica interfaccia. Il coman-
do iwconfig dispone anche di una serie di parametri che consentono di
modificare le impostazioni di un'interfaccia di rete. Un elenco dei princi-
pali parametri viene mostrato nella Tabella 5.3.
Tabella 5.3 - I parametri principali del c o m a n d o iwconfig.
Parametro Significato Esempio i
Cambia la modalità di fun-
mode zionamento dell'interfac- iwconfig ethO m o d e Ad-Hoc
cia
channel Cambia il canale utilizzato iwconfig ethO channel 6
Stabilisce la frequenza per
freq iwconfig e t h l freq 2.422G
le comunicazioni
Imposta il bitrate di funzio-
rate iwconfig e t h l rate 24M
namento della scheda
Indica l'ESSID dell'Access
essid iwconfig e t h l essid wifi
Point cui ci si connette

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


fisso wireless-, quando hanno istruzioni equivalenti con il prefisso wap-,
vanno sostituite con queste ultime. Al posto di wireiess-essid, quindi, nel
file /etc/network/interfaces va inserito wpa-ssid.

Conoscere le reti disponibili con iwlist

A volte si ha bisogno di avere informazioni dettagliate sugli Access Point


raggiungibili dall'interfaccia di rete. Questi dati si ottengono mediante il
comando iwlist e il parametro scan. La sintassi da usare è iwlist <inter-
faccia> scan, per esempio:

iwlist ethl scan


in output si otterrà l'elenco completo degli Access Point e delle schede
impostate in modalità Ad-Hoc presenti nei paraggi.
Per ogni dispositivo rinvenuto vengono indicati MAC Address, ESSID,
protocolli compatibili, modalità impostata, sistema di cifratura e altro an-
cora. Nell'immagine seguente (Figura 5.9) si mostra l'output di esempio
per un Access Point.

48 Mb/s; 54 Mb/s
Quality=35/lO0 Signal level=-79 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra: Last beacon: 7424ms ago
Cell 09 Address: 00:80:5A:47:0B:01
ESSID:"wireless-net"
Protocol:IEEE 802.llbg
Mode:Master
Frequency:2.462 GHz (Channel 11)
Encryption key:on
Bit Rates: 1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Quality=99/100 Signal level=-21 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra: Last beacon: 44ms ago

ale@pitagora:-$

Figura 5.9 - Con iwlist è possibile avere informazioni dettagliate sugli AP e le schede
Ad-Hoc nelle vicinanze.

Il comando iwlist dispone di altri parametri utili. Con channel vengono


mostrati tutti i canali e le frequenze disponibili. Eseguendo iwlist ethi
channel, per esempio, sarà visualizzato un output simile al seguente:

ethl 11 channels in total; available frequencies :


Channel 01 2 412 GHz
Channel 02 2 417 GHz
Channel 03 2 422 GHz
Channel 04 2 427 GHz
Channel 05 2 432 GHz
Channel 06 2 437 GHz
Channel 07 2 442 GHz
Channel 08 2 447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.4S2 GHz
Current Channel=0

Ulteriori parametri interessanti del comando iwlist sono rate, che mo-
stra i bitrate supportati dalla scheda di rete, e keys che, invece, elenca
le dimensioni supportate per le chiavi di cifratura e visualizza le chiavi
attualmente in uso. In questo secondo caso, per ottenere le informazioni
è necessario eseguire iwlist da root, così:

sudo iwlist ethl keys

Gli strumenti di controllo


Ora che le fondamenta della rete locale sono state poste, è necessario co-
noscere alcuni degli strumenti indispensabili per controllare il corretto fun-
zionamento della LAN o WLAN. In questa breve sezione del capitolo, quin-
di, Si Scopriranno sintassi e Utilizzo dei 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) bytes of data.


64 bytes from 192.168.1.4: icmp_seq=l ttl=64 time=0.038 ms
64 bytes from 192.168.1.4: icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from 192.168.1.4: icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from 192.168.1.4: icmp_seq=4 ttl=64 time=0.043 ms
64 bytes from 192.168.1.4: icmp_seq=5 ttl=64 time=0.042 ms

192.168.1.4 ping statistics


5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.038/0.040/0.043/0.008 ms

Ogni riga di ping mostra l'IP dell'host, il numero di sequenza ICMP (icmp_seq=)
e, quindi, il tempo richiesto dal pacchetto per andare e tornare (time=).
In una situazione ideale non sono presenti salti tra un numero di sequenza
ICMP e quelli nelle righe adiacenti: la serie deve essere infatti icmp_seq=i,
icmp_seq=2, icmp_seq=3 e così via. In caso contrario, si sono persi dei pac-
chetti e tale rilevazione può costituire l'inizio di un'analisi più approfondita
della rete: in una rete in stato ottimale, infatti, il numero di pacchetti persi
dovrebbe essere esiguo.
Il t e m p o richiesto dai pacchetti per viaggiare dovrebbe risultare omoge-
neo, con minime differenze non significative. Se i valori indicati si disco-
stano vistosamente dalla norma, invece, ciò significa che le prestazioni
nel segmento di rete in esame hanno subito un decadimento e si può
procedere con ulteriori analisi.
Per avere un'idea, pur approssimativa, dello stato complessivo della rete è
consigliabile lanciare dei comandi ping scegliendo un host via via sempre
più distante. Si inizia controllando con ping locaihost che il protocollo TCP/
IP sia perfettamente funzionante, quindi si effettua un ping sull'indirizzo IP
della macchina nella LAN, poi si passa al gateway predefinito e così via.

Traceraute per tracciare i pacchetti

Il comando traceroute mostra il percorso effettuato da un pacchetto per


arrivare a destinazione. Una volta installato il programma con sudo apt-
get instali traceroute, per lanciare traceroute è sufficiente inserire come
argomento l'indirizzo IP o l'hostname di destinazione:

traceroute www.ubuntu.com
Nell'immagine seguente (Figura 5.10) è possibile seguire parte della stra-
da percorsa per giungere a www.ubuntu.com. Ogni riga di output rappre-
senta un hop, cioè un salto effettuato dal pacchetto, che passa di gateway
in gateway fino ad arrivare a destinazione.

a l e @ p i t a g o r a : t r a c e r o u t e www.ubuntu.com
traceroute to www.ubuntu.com (91.189,94.250), 30 hops max, 40 byte packets
1 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 di traceroute con i diversi gateway attraversati per giungere
a destinazione.

Per ciascun hop, quindi, vengono individuati i tempi di percorrenza mo-


strando tre differenti rilevazioni. Nell'esempio, il primo gateway che il pac-
chetto incontra nel tragitto è il router ADSL (192.168.1.1), che è il default
gateway nella LAN. I tempi di percorrenza sono quindi molto brevi. Negli
hop successivi si esce dalla LAN e si entra in Internet, con l'inevitabile
allungamento dei tempi che questo comporta.
Una volta individuate delle anomalie nel funzionamento di una rete con
ping, quindi, è proprio grazie a traceroute che è possibile cercare di in-
dividuare i gateway che ostacolano il passaggio dei pacchetti, per poi
verificarne la corretta configurazione.
Informazioni sulla rete con netstat

In precedenza si è visto come visualizzare le tabelle di routing mediante


netstat. In realtà, con questo comando è possibile ottenere un elenco
delle connessioni in corso, mostrare statistiche di rete e altro ancora.
Il comando netstat -nat mostra una lista contenente le porte TCP in
ascolto e quelle in cui la connessione è attiva. Nella configurazione di
default di Ubuntu Server non ci sono porte in ascolto, quindi l'output del
programma non produce righe informative. Se si installa il server di stam-
pa CUPS, invece, netstat -nat produce la seguente riga di output:

top 0 0 127.0.0.1:631 0.0.0.0:* LISTEN

Nella riga in esame il server CUPS risponde (LISTEN) sulla porta 631 di
localhost (127.0.O.I:63I). In caso di connessione attiva, al posto di LISTEN

sarebbe presente la dicitura ESTABLISHED.

Per visualizzare anche le porte UDP si aggiunge l'opzione -u: il comando


precedente diventa quindi netstat -natu. Eliminando l'opzione -n, inve-
ce, al posto degli indirizzi numerici verranno mostrati quelli simbolici.
Infine, eseguendo netstat -s vengono mostrate delle statistiche di rete
ripartite per protocollo: IP, ICMP, TCP e UDP. Ecco uno stralcio delle stati-
stiche riguardanti il protocollo IP:

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 macchi-
na 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 l'IP


IVIcisquerading e proteggere i servizi.

Nei capitoli che seguono verranno affrontati argomenti via via più com-
plessi e anche l'utilizzo della rete locale diverrà sempre più articolato: ai
client si forniranno servizi di fondamentale importanza e anche la rete sarà
inevitabilmente più estesa ed esposta. Tutto ciò richiede l'adozione di
strumenti di gestione e protezione avanzati.

Il firewall
Il firewall è uno strumento di importanza centrale per la messa in sicurezza
di una rete: si tratta di un dispositivo hardware o di un applicativo software
che controlla il traffico in entrata e in un uscita e che consente di eliminare
i pacchetti indesiderati mediante l'applicazione di regole.
In Linux il componente che gestisce le funzionalità di firewall si chiama
Netfilter ed è incluso nel kernel. L'amministratore di sistema può utilizzare
il programma iptabies per controllare direttamente Netfilter, oppure può
affidarsi a un'interfaccia di gestione semplificata.
Firewall semplice con ufw
Su Ubuntu Server viene installato per default ufw (che sta per uncomplica-
ted firewall), un'interfaccia per iptables di facile utilizzo. Nella configura-
zione preimpostata ufw non è però abilitato e bisogna dunque attivarlo
con il comando seguente:

sudo ufw enable

A questo punto il firewall è attivato e sarà caricato nei successivi riavvii della
macchina. Ora non rimane che aggiungere al firewall delle regole opportu-
ne: per orientarsi tra le opzioni disponibili in ufw si veda la Tabella 6.1.

Tabella 6.1 - Le opzioni interne d e l p r o g r a m m a u f w .


Opzione Significato
enable Attiva il firewall
disable Disattiva il firewall
Crea una regola per consentire il traffico d i determi-
allow
nati pacchetti
Crea una regola per fermare il traffico di determinati
deny
pacchetti
delete Elimina una regola creata in precedenza
Imposta il funzionamento di default del firewall. Con
default default allow si apre in partenza tutto il traffico, con
default deny si blocca in partenza tutto il traffico
Con logging on attiva la creazione dei log, con log-
logging
if ging off disattiva la creazione dei log
status Mostra lo stato del firewall con le regole attive

La prima operazione da compiere è stabilire se si vuole partire da una con-


figurazione di base del firewall in cui 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 re-
gole è molto facile grazie ai comandi interni allow e deny di ufw.
Ecco un esempio che apre la porta 25, per qualsiasi host di origine e di
destinazione:

sudo ufw allow 2 5

Tutto qui! E quindi possibile specificare il protocollo (sudo ufw allow 25/tcp)
oppure utilizzare una sintassi più articolata per la creazione della regola:

sudo ufw allow proto tcp from 192.168.1.4 to any port 22

Con questo comando si consente il traffico TCP (proto tcp) sulla porta 22
da 192.168.1.4 a qualsiasi altro indirizzo (to any). Per chiudere il traffico su
una porta si segue la medesima sintassi inserendo semplicemente deny al
posto di allow. È possibile, inoltre, indicare nelle regole un servizio anzi-
ché un numero di porta (per esempio, sudo ufw deny smtp). La corrispon-
denza tra porte e servizi è indicata nel file /etc/services.
Per cancellare una regola del firewall, quindi, basta inserire il comando
interno delete tra ufw e la regola stessa. Se la regola da eliminare è al-
low 25, dunque, il comando completo da eseguire per cancellarla sarà il
seguente:

sudo ufw delete allow 25

Le regole inserite saranno poi correttamente caricate durante i successivi


avvii della macchina. L'ordine con cui si creano le regole è importante: tra
due regole, infatti, ha la precedenza quella inserita per prima. Per questa
ragione si devono creare inizialmente le regole più specifiche e poi quelle
generiche.
Per esempio, per consentire il traffico sulla porta 25 bloccando però i soli
pacchetti provenienti da 192.168.1.4 si devono creare le due regole in
questa precisa sequenza:

sudo ufw deny proto tcp from 192.168.1.4 to any port 25


sudo ufw allow 25

Configurazione diretta di iptables

Il programma ufw risulta inevitabilmente insufficiente quando si devono


gestire configurazioni per il firewall di una minima complessità. In questi
casi è necessario dialogare direttamente con iptabies.
Le regole che è possibile creare con questo software sono organizzate
in "catene" e le catene stesse vengono inserite all'interno di opportune
tabelle, ognuna delle quali è adibita a uno scopo differente. Ecco quali
sono le tabelle messe a disposizione da iptables:
• Tabella filter. È la tabella cui ci si riferisce per default quando si
aggiungono regole a una catena di iptables. Si occupa di filtra-
re i pacchetti nella rete e presenta tre catene: INPUT, OUTPUT e
FORWARD. La catena INPUT riguarda i pacchetti che arrivano al
sistema locale, mentre le regole in OUTPUT controllano i pacchetti
in partenza dal sistema. La catena FORWARD, infine, instrada pac-
chetti giunti dall'esterno verso un'altra rete;
• Tabella nat. Questa tabella gestisce la regole per il NAT (Network
Address Translation): si tratta della procedura mediante la quale si
riscrive l'indirizzo IP di un pacchetto. Il NAT viene utilizzato sovente
per tradurre più indirizzi IP di una rete locale in un unico indirizzo IP
valido per Internet (tecnica chiamata IP Masquerading);
• Tabella mangle. Questa tabella permette di alterare gli header dei
pacchetti. È generalmente poco usata.

Quando un determinato pacchetto trova corrispondenza con una regola


di una catena, viene compiuta un'azione prestabilita (target) sul pacchetto
stesso. Le azioni possibili per la fondamentale tabella filter sono elencate
nella Tabella 6.2.

Tabella 6.2 - Le azioni della tabella filter.


Azione Significato
ACCEPT Il pacchetto verrà accettato.
DROP Il pacchetto verrà scartato.
Il pacchetto verrà scartato e sarà inviato un pacchetto
REJECT
di errore IDCMP
QUEUE Fa gestire il pacchetto a un programma estemo
RETURN Fa terminare una catena creata dall'utente
Quando il pacchetto è ricevuto vi è una segnalazione
LOG
nei log
ULOG Come l'azione LOG ma più flessibile
REDIRECT Manda il pacchetto a un proxy
,.,Dnnn Inverte gli IP di origine e di destinazione e trasmette
M1KKUK
nuovamente il pacchetto

Presentate le tre tabelle e i target per la tabella predefinita, è il momento


di entrare nel vivo della configurazione del firewall.
Si può iniziare richiedendo informazioni dettagliate a iptables. Con il co-
mando iptabies -L, quindi, è possibile ottenere una "fotografia" dello
stato attuale del firewall: all'inizio le tre catene (chain) INPUT, FORWARD
e OUTPUT sono vuote, come è possibile vedere dall'immagine seguente
(Figura 6.1).

Per default vengono mostrate informazioni sulla tabella filter, ma utilizzan-


do l'opzione - t è possibile indicare una specifica tabella per l'operazione
da compiere in iptables. Per visualizzare il contenuto delle catene nella
tabella nat, quindi, si richiamerebbe il programma così:

sudo iptables -t nat -L


Nel caso fossero presenti, all'interno delle catene, delle regole preceden-
ti, si può procedere alla cancellazione di queste usando il comando inter-
no di iptables -F:

sudo iptables -F

Questo comando può essere seguito dal nome della catena da ripulire. Se
non si fornisce alcun parametro a -F verranno cancellate le regole di tutte
le catene della tabella predefinita.
A questo punto è consigliabile adottare come politica iniziale del firewall
il blocco preventivo di qualsiasi pacchetto proveniente dall'esterno, per
poi decidere caso per caso le singole eccezioni. Si imposta tale politica di
sicurezza con i due comandi che seguono:

sudo iptables -P INPUT DROP


sudo iptables -P F0RWARD DROP

Il comando interno -p di iptables permette di stabilire il comportamento


di default (policy) per una determinata catena. La prima riga fornita elimi-
na tutti i pacchetti in entrata (catena INPUT), mentre la seconda ferma tutti
i pacchetti diretti verso un'altra rete (catena FORWARD).
Ora bisogna indicare i pacchetti che si vogliono autorizzare. Lo si fa co-
struendo delle regole per iptables che, a determinate condizioni, richiami-
no il target ACCEPT su una catena. Ecco alcuni esempi:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT


sudo iptables -A FORWARD -i ethl -p ANY -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

Il comando interno -A di iptables consente di aggiungere una regola alla


fine di una catena. La prima riga aggiunge (-A) alla catena INPUT della
tabella filter (predefinita) la regola seguente: se arriva un pacchetto con
protocollo TCP (-p tcp) sulla porta di destinazione 22 (--dport 22) bisogna
farlo passare ( - j ACCEPT).

La riga successiva fa passare sulla catena FORWARD tutti i pacchetti


provenienti dall'interfaccia e 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 dal-
l'esterno al server SSH (porta 22) sul computer, si consente ai pacchetti
che arrivano dalla seconda scheda Ethernet (ethl) di raggiungere un'altra
rete e si permette il traffico interno nella macchina.
Nella Tabella 6.3 vengono presentati i principali parametri di iptables utili
per costruire regole per il firewall.

Tabella 6.3 - I parametri di iptables per costruire regole.


1 Parametro Significato Esempio
-s Indica l'origine del pacchetto -s 1 9 2 . 1 6 8 . 0 . 2
Indica la destinazione del pac-
-a - d 127.0.0.1
chetto
Specifica la porta di origine del
--sport --sport 22
pacchetto
Specifica la porta di destinazio-
--dport --dport 25
ne del pacchetto
Il pacchetto proviene da una
-i -i ethO
determinata interfaccia
Il pacchetto viene inviato a una
-o -o pppO
determinata interfaccia
Controlla il tipo di protocollo
-P -p tcp
(TCP, UDP, ICMP)
--icmp-
Controlla il tipo di ICMP - i c m p - t y p e echo-request
type

Il protocollo ICMP (Internet Control Message Protocol) consente alle


macchine in rete di inviare e ricevere informazioni di vario genere.
All'interno di un messaggio ICMP il "tipo" è un valore numerico che
specifica il significato del messaggio trasmesso. L'elenco completo dei
valori ammessi per il tipo si può leggere su http://www.ietf.org/rfc/
rfc1700.txt.
| valori indicati per questi parametri possono essere preceduti dal carattere
!. In tal caso il senso dell'espressione viene invertito: per esempio, -i ! etho
stabilisce che, per essere vera la regola, l'interfaccia non deve essere ethO.
I parametri -se -d accettano come valori singoli indirizzi IP e indirizzi con net-
mask, anche nella notazione CIDR. Per esempio, scrivendo 192.168.3.0/255
.255.255.0 o 192.168.3.0/24 si indicheranno tutti gli indirizzi 192.168.3.X.
Per rappresentare una sequenza di porte nei parametri --sport e --dport
si usa il carattere :. Inserendo in una riga --sport 21:80, dunque, si pren-
deranno in considerazione le porte di origine dalla 21 alla 80.

La notazione CIDR (Classless Inter-Domain Routing) consente di indicare


in modo sintetico una maschera di rete. Questa viene espressa mediante
un semplice numero, che corrisponde al numero di bit rappresentanti la
parte di indirizzo che si riferisce alla rete.

Una regola sicuramente utile in un firewall è quella che consente di accet-


tare solo quei pacchetti provenienti dall'esterno che rispondono a delle
connessioni avviate dalla rete interna. Ecco il comando completo di ipta-
bles per ottenere questo:

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Questa riga richiede una spiegazione aggiuntiva. Tramite l'opzione -m


state e il successivo parametro --state viene controllato lo stato della
connessione di un pacchetto, che può essere NEW, ESTABLISHED, RELA-
TED e INVALID. Un pacchetto è NEW quando genera una nuova connes-
sione, ESTABLISHED quando è inserito in una connessione già in atto e
RELATED quando avvia una connessione ma è legato a una connessione
esistente. Infine, lo stato di un pacchetto è INVALID quando non è risulta-
ta possibile la sua identificazione.
Nella riga presentata, quindi, viene verificato per la catena INPUT lo stato
di ogni singolo pacchetto e, se questo risulta RELATED o ESTABLISHED,
viene fatto passare.
IP Masquerading
Mediante iptables si può attivare l'IP Masquerading su una rete. In que-
sto 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 forwar-
ding: ciò consentirà di far passare i pacchetti da una rete a un'altra. Per
ottenere questo va aperto da root con un editor il file /etc/sysctl.conf,
quindi va decommentata la riga:

#net.ipv4.ip_forward=l

che diventa, quindi, così:

net.ipv4.ip_forward=l

# Comment the next two lines to disable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
net,ipv4,conf.default.rp_filter=l
net.ipv4.conf.all.rp_filter=l

# Uncomment the next line to enable TCP/IP SYN cookies


# This disables TCP Window Scaling (http://lkml.org/lkml/2008/2/5/167)
#net.ipv4.t cp_syncookies=l

# Uncomment the next line to enable packet forwarding for IPv4

# Uncomment the next line to enable packet forwarding for IPv6


#net.ipv6.ip_forward=l

# Additional settings - these settings can improve the network


# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
-- VISUALE LINEA --
3 8 49%

Figura 6.2 - Decommentando una riga in /etc/sysctl.conf si abilita il packet forwarding


su IPv4.
Per attivare il packet 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 è PO-


STROUTING. 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 accet-
tare 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 confi-
gurazione attuale del firewall. Tramite il comando iptabies-restore, quin-
di, si potrà leggere questo file e ripristinare le regole di iptables memo-
rizzate in esso:

sudo iptabies-restore < /etc/iptables.rules

Il modo più semplice per far leggere il file /etc/iptables.rules direttamente


all'avvio della macchina è inserire nel file /etc/rc.local una riga che ese-
gua iptabies-restore < /etc/iptabies-restore. Tale riga deve precedere
l'istruzione e x i t o al termine del file, come nell'immagine seguente (Fi-
gura 6.3).

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing,

iptabies-restore /etc/iptables.rules

exit 0

13,0-1 Tut

Figura 6.3 - Il file /etc/rc.local dopo che è stata inserita la riga per ripristinare la configu-
razione del firewall.

Questo metodo, però, richiede che in caso di modifiche alle regole del
firewall si esegua iptabies-save prima di spegnere la macchina.
Per automatizzare la procedura di salvataggio e ripristino delle regole si
può quindi richiamare l'esecuzione di iptabies-save e iptabies-restore
in /etc/network/interfaces, facendo lanciare il primo comando prima che
venga attivata un'interfaccia di rete (opzione pre-up) e il secondo dopo
che questa è stata disattivata (opzione post-down).
Una volta che si è individuato in /etc/network/interfaces il blocco di righe
relative all'interfaccia di rete utilizzata (per esempio ethO), si inseriscano
prima della fine del blocco le due righe seguenti:

pre-up iptables-restore < /etc/iptables.rules


post-down iptables-save -c > /etc/iptables.rules

Il file /etc/network/interfaces risultante sarà simile a quello visibile in Fi-


gura 6.4.

mmmm • • • H i
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

"/etc/network/interfaces" 9L, 210C scritti 3 ,©-i Tut

Figura 6.4 - Il file /etc/network/interfaces con le righe per ripristinare salvare


e le regole
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'in-
tera rete.
Nei paragrafi seguenti, quindi, verranno presentati file e software aggiun-
tivi per il controllo degli accessi ai servizi forniti su un server. Si comincerà
facendo la conoscenza dei file di sistema /etc/hosts.allow e /etc/hosts,
deny e si procederà poi con l'installazi one e la configurazione di xinetd,
un demone che ha lo specifico compito di gestire i servizi.

I file hosts.allow e hosts.deny

Se si prova ad aprire i due file /etc/hosts.allow e /etc/hosts.deny si sco-


pre che questi contengono una lunga serie di righe di commento: nella
configurazione di default risultano quindi essere file vuoti. 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, è consiglia-
bile 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 speci-
fici indirizzi. Ecco alcuni esempi di righe di configurazione per hosts.allow:

ALL : 12 7.0.0.1
sshd : 192.168.1.5
leafnode : 192.168.2.* EXCEPT 192.168.2.15

Nella prima riga si aprono tutti i servizi all'indirizzo IP del loopback device,
mentre la seconda riga consente l'accesso al server SSH esclusivamente a
192.168.1.5. L'ultimo esempio è leggermente più complesso: è permessa
la connessione al news server leafnode a tutti gli indirizzi 192.168.2.x tran-
ne (EXCEPT) che al singolo indirizzo IP 192.168.2.15.
Non tutti i servizi, ma solo quelli che utilizzano il wrapper TCP, seguono le
direttive presenti nei file hosts.allow e hosts.deny.

Il wrapper TCP è il sistema che controlla gli accessi ai servizi mediante i


file hosts.allow e hosts.deny. Il wrapper TCP viene richiamato tramite un
super-server come inetd o xinetd oppure facendo caricare all'eseguibile
del servizio da gestire l'apposita libreria libwrap.

Per scoprire se un servizio legge effettivamente i due file di configurazione


si esegua il comando seguente, inserendo a posto di servizio il percorso
completo del servizio da controllare (per esempio /usr/sbin/sshd):

ldd servizio | grep libwrap

Se appare una riga di output come

libwrap.so.0 => /lib/libwrap.so.0 (0xb7f5e000)

significa che il servizio carica la libreria del wrapper TCP (libwrap) e quindi
consulta i file hosts.allow e hosts.deny.
Se questo 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 hosts.access. Il servizio,
quindi, legge hosts.allow e hosts.deny.

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 av-
viare 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 interpre-
tato il contenuto dei file /etc/hosts.allow e /etc/hosts.deny e solo succes-
sivamente, se al client verrà concesso l'accesso, si consulterà la configura-
zione di xinetd relativa alla gestione delle connessioni.
Il pacchetto di xinetd non è presente nella dotazione di default di Ubuntu
Server. Va quindi installato con il comando seguente:

sudo apt-get instali xinetd

Il file di configurazione principale di xinetd è /etc/xinetd.conf, ma ven-


gono letti dal super-server anche i file presenti all'interno della directory
/etc/xinetd.d: in questa sono raccolti i file di configurazione di default per
i singoli demoni. Tali file vengono creati in automatico durante l'installa-
zione dei relativi pacchetti.

§ default: off
# description: An RFC 868 time server. This protocol provides a
# site-independent, machine readable date and time, The Time service sends back
# to the originating source the time in seconds since midnight on January first
# 1900,
# This is the tcp version.
service time
{
disable yes
type = INTERNAL
id -• time-stream
socket type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service time
{
disable yes
type = INTERNAL
id time-dgram
•time' 28L, 72/>:: l,l Cim

Figura 6.7-11 contenuto del file time, uno dei file di configurazione di default presenti in
/etc/xinetd.d.
La struttura di xinetd.conf e dei file in /etc/xinetd.d è la medesima. Per
configurare un servizio si crea un blocco di righe che inizia con service
<servizio> e in cui le righe contenenti le opzioni di configurazione sono
racchiuse tra parentesi graffe. Ecco un esempio:

service ftp
{
server = /usr/sbin/proftpd
user = root
socket_type = stream
wait = no
log__on_success = HOST PID
log_on_failure = HOST RECORD
only_from = 192.168.1.0/24

In questo blocco di righe si definiscono i parametri del servizio FTP (ser-


vice ftp). Questo servizio viene fornito dal demone proftpd (server =
/usr/sbin/proftpd) e l'utente che esegue il processo è root (user = root).
Il socket è di 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, impo-
stano la gestione dei log per il singolo servizio, mentre la riga finale stabi-
lisce che l'accesso al server FTP è concesso solo alle macchine della rete
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 Significato
L'eseguibile del d e m o n e da avviare quando si richiede
server
il servizio
user L'utente che deve avviare il demone
Determina se d o p o aver avviato il d e m o n e bisogna ac-
wait cettare nuove richieste. Se il servizio è multi-threaded il
valore è no, se è single-threaded il valore è yes
Opzione Significato
Il t i p o di socket. Può essere stream, dgram, raw o se-
socket_type qpacket. Si sceglie stream per i servizi TCP e dgram per
i servizi UDP

Indica l'indirizzo dell interfaccia di rete su cui va reso


bind
disponibile il servizio
Il numero massimo di server che possono essere attivi
instances
simultaneamente per un servizio
Il primo argomento indica il numero massimo di con-
cps nessioni per secondo. Il secondo argomento indica i
secondi da attendere prima di ripristinare il servizio
quando si supera il numero massimo di connessioni

Gli ultimi ritocchi per xinetd

In un sistema che fornisce servizi ad altre macchine in rete, un'accorta


politica di gestione dei log è fondamentale. Il super-server xinetd, quindi,
fornisce due parametri di configurazione da utilizzare allo scopo, iog_on_
success e log_on_failure.
Il primo controlla quali informazioni devono comparire nei log quando
la connessione a un servizio avviene con successo. I principali valori che
è possibile inserire per questo parametro sono PID (mostra nei log il PID
del processo del server), HOST (mostra l'indirizzo dei client connessi al
server), USERID (mostra l'user id dell'utente remoto) e DURATION (mostra
la durata dell'accesso).
Il parametro iog_on_faiiure, invece, gestisce i log per tutte le connessioni
fallite. I valori che può assumere questo parametro sono HOST, USERID e
ATTEMPT (rivela nei log che è avvenuto un tentativo fallito di connessio-
ne). L'ultimo valore è implicito se si indicano gli altri.
Stabilito cosa si vuole inserire nei log, si ha la possibilità di determinare
dove questi vadano memorizzati. Tramite l'opzione iog_tyPe si può sce-
gliere se sfruttare il classico gestore di log sysiog (valore SYSLOG per l'op-
zione) o salvare i log direttamente su un file (valore FILE).

Nel caso si indichi come valore SYSLOG, si deve aggiungere la faciIity di


syslog desiderata (authpriv, daemon, mail e così via) e opzionalmente il
livello del log (alert, err, info ecc.). Se non viene indicato alcun livello si
assume per default il livello info. Ecco un esempio:

log_type = SYSLOG auth_priv

Il valore FILE del parametro iog_type, invece, richiede l'inserimento ag-


giuntivo del percorso completo del file che deve contenere i log. La riga
seguente presenta un esempio per il valore FILE:

log_type = FILE /var/log/xinetd.log

Nella configurazione di xinetd è possibile indicare dei valori predefiniti


per alcuni parametri: questi saranno validi per tutti i servizi che non spe-
cificano ulteriori valori per i medesimi parametri. Per fare ciò si crea un
particolare blocco di configurazione che inizia con la riga defauits:

defaults

cps = 3 0 60
instances = 50
log_on_success = HOST PID
log_on_faiIure = HOST
log_type = SYSLOG authpriv

Il blocco defauits si inserisce nel file /etc/xinetd.conf (Figura 6.8). In que-


sto modo, il file di configurazione principale conterrà i soli parametri ge-
nerici, mentre la configurazione dei singoli servizi sarà demandata ai file
posti nella directory /etc/xinetd.d.
Per controllare tramite hosts.allow e hosts.deny gli accessi a un servizio
gestito da xinetd si fa riferimento al parametro server, inserito nella con-
figurazione del servizio.
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

cps = 30 60
instances = 50
log on success a HOST PID
log on failure = HOST
log type = SYSLQG authpriv
>
includedir /etc/xinetd.d

13,0-1 Tut

Figura 6.8 - Il file /etc/xinetd.conf con la sezione defaults per impostare f parametri
predefiniti per i servìzi.

Per 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
lìnea 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 richiaman-
d o il n o m e indicato nella riga service della configurazione di x i n e t d rela-
tiva al servizio stesso.
r " " :

7. Amministrare da remoto

Gestire a distanza una macchina con un

semplice terminale, via w e b o mediante

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

Un terminale remoto
Gestire una macchina remota mediante un semplice terminale può risul-
tare la soluzione ideale in molte circostanze: l'occupazione di banda è
irrisoria, gli strumenti da adottare sono di facile configurazione e le opera-
zioni di intervento sulla macchina, una volta presa confidenza con i diversi
programmi a linea di comando, possono risultare estremamente rapide.
Un semplice strumento per l'amministrazione remota è il classico Tel-
net. Purtroppo, si tratta 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 SSH ( s e c u r e sheii),

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


macchina remota mediante connessione criptata.

ale@pitagora:~$ ssh 192.168.1.4


The authenticity of host '192.168.1.4 (192.168.1.4) 1 can't be established.
RSA key fingerprint is 46:9f:Od:12:b7:a8:73:89:dd:84:5f:8a:cf:40:db:al.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.4' (RSA) to the list of known hosts.
ale@192.168.1.4's password:
Linux pitagora 2.6.24-19-generic #1 SMP Fri Jul 11 23:41:49 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by


applicable law.

To access official Ubuntu documentation, please visit:


http://help.ubuntu.com/
Last login: Sat Aug 2 08:56:31 2008
ale@pitagora: |

Figura 7.7 - SSH consente di amministrare una macchina da remoto in piena sicurezza.

Teoria di funzionamento di §5H

Il sistema di autenticazione del protocollo SSH è basato sull'uso della co-


siddetta crittografia asimmetrica. Si tratta di una forma di cifratura che
adotta una coppia di chiavi per il proprio funzionamento, una chiave pri-
vata e una pubblica: la chiave privata è presente sulla sola macchina locale
ed è conosciuta esclusivamente dall'utente che gestisce questa macchina,
mentre la chiave pubblica viene consegnata a 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 pub-
blica può essere decriptata solo da colui che abbia accesso alla rispetti-
va chiave privata, mentre un'informazione criptata con una chiave privata
può essere decodificata da tutti coloro che possiedano la relativa chiave
pubblica.
Quindi, l'operazione di cifratura tramite chiave pubblica permette di na-
scondere un'informazione e rivelarla a un unico destinatario. Cifrare me-
diante chiave privata, invece, consente di inviare un'informazione con un
"attestato di paternità": infatti, 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 con-
nessi 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 am-
ministrare. Su questo computer, nel caso non si fosse scelto di includere
OpenSSH server durante l'installazione iniziale del sistema operativo, bi-
sogna installare manualmente il pacchetto openssh-server con il comando
sudo 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 chia-
vi SSH per la macchina server e l'attivazione del demone sshd al boot
della macchina. A questo punto il server SSH è in funzione e non rimane
che configurare i PC che avranno la funzione di client.
ale@pitagora:-$ sudo apt-get install openssh-server
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso
Lettura delle informazioni di stato... Fatto
Pacchetti suggeriti:
molly-guard rssh
I seguenti pacchetti NUOVI (NEW) saranno installati:
openssh-server
O aggiornati, 1 installati, 0 da rimuovere e 0 non aggiornati.
È necessario prendere QB/254kB di archivi. Iff
Dopo questa operazione verranno occupati 676kB di spazio su disco.
Preconfigurazione dei 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 [ OK ]

;iale@pitagora:~$ §

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 Server,

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

Tutte le 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 del
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

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

g 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 come nell'esempio seguente:

ssh test@192.168.0.7

C o n q u e s t o c o m a n d o si a c c e d e t r a m i t e S S H a l l ' a c c o u n t d e l l ' u t e n t e test


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

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 inse-
rire la p a s s w o r d d i u n u t e n t e .

Per q u e s t o b i s o g n a i n n a n z i t u t t o g e n e r a r e su u n PC c l i e n t u n a c o p p i a d i
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ù rapi-
do 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 re-
m 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

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 corrente;
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_confìg è possibile


aumentare la sicurezza di ssh.

Una v o l t a a p p o r t a t e le m o d i f i c h e d e s i d e r a t e al 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

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 sbloccare
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 passphrase
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 login,
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 ssh-agent /bin/
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 .

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 riga si lancia il c o m a n d o p s aux sul s i s t e m a remoto
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 della
macchina locale.
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 xiiForwardìng 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. È possi-
b 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 . Ecco un


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 .

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 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
ripartire c o m o d a m e n t e i diversi c o m p i t i d a svolgere.
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 sudo
apt-get instali screen. Fatto q u e s t o , una volta effettuata t r a m i t e ssh la
c o n n e s s i o n e al s e r v e r si 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 sempli-
c e m e n t e il c o m a n d o s c r e e n .
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 Funzione
Apre una nuova console di terminale all'interno
Ctrl+A+D
dì screen
Passa alla console numero 0...9 all'interno di
Ctrl+A+0...9
screen

Ctrl+A+D 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
Ctrl+A+Ctrl+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
Funzione " d e t a c h " . Per scollegarsi dalla sessione
Ctrl+A+D
corrente di screen

Mostra l'help con l'elenco delle combinazioni di


Ctrl+A+?
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
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 inap-
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 à delle
operazioni di manutenzione da svolgere.
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
Q u u e b m i n
«á Networking System hostname Pitagora
Operating system Ubuntu Linux 8.04.1
Webmin version 1.420
Time on system Tue Aug 12 11:49:53 2008
System uptime 3 hours, 31 minutes
CPU load averages 0.24 (1 min) 0.26 (5 mins) 0.22 (15 mins)
Real memory 1.47 GB total. 691.97 MB used

A view Module's Logs Virtual memory 956.9! 4 kB UÍ


fà ^System information:
Local disk space 64.32 GB total, 33.84 GB used
Refresh Modules
#Logout

https://locaihost:10000/rlght.cgi?open=system&open=status localhost:10000 ¿3 @ Ü (N) ^

Figura 7.8 - Amministrare un sistema direttamente dal web?


È possibile con il programma Webmin.

Installazione e avvia di webmin

W e b m i n n o n è 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 volu-

m 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 all.debe
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 ? [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 instal-


lare 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 sarge contrib

Poi si salva il file e in un t e r m i n a l e si lancia sudo apt-get update p e r


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 Webmin,

c h e sarà p o i l a n c i a t o a o g n i b o o t d e l l a m a c c h i n a .
Per 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
il c o m a n d o sudo) e la relativa p a s s w o r d .

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 è possibile aggiungere


un'eccezione, p o i s u Aggiungi eccezione, q u i n d i sul p u l s a n t e Acquisisci

certificato e i n f i n e s u Conferma eccezione di sicurezza.


La p r i m a o p e r a z i o n e d a c o m p i e r e è m o d i f i c a r e a l c u n e d e l l e 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 Segnalibri Strumenti guida

- Ê I"» https://localhost: 10000/

Login: ale Module Config


Webmin Webmin Configuration
Backup Configuration
Files

m
Change Language and

Webmin Actions Log


Webmin Configuration
â "
IP Access Control Ports and Addresses
A
Logging

Proxy Servers and Downloads
Webmin Servers index

a Ö
Webmin Users
S3 System
i i Servers
O
ill Networking User interface Webmin Modules Operating System and Language
Environment

-J Cluster
SI others
43 Un-uMKl Moduiï» index Page Options
#
upgrade Webmin Reassign Modules

A View Module's Logs


m 01 JÜL JL.
&
# System Information
3
&
Refresh Modules
Logout
Anonymous Module Access File Locking
1
Mobile Device Options Blocked Hosts and Users

£
Advanced Options
*
Debugging Log File
«=£3

SSL Encryption
©
Certificate Authority

localhost:10000 & © U (H)

Si f 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 del

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 menu,
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 -
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 '/loc«lho5i"i

Controllo degli accessi IP


mfigurato in modo da impedire o consentire I': ¡so ad indirizzi IP predefiniti utilizzando questa pagina.
icrni di host (come foo.bar.com) e reti IP {com 254.3.0 o 10.254.1.0/255.255.255.128). Dovresti limitare
indirizzi sicuri, specialmente se accessibile tramite 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 in-
d 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à h i
tps://192.168.1.4:10000
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 Contenuto

Webmin

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 clic
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 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 Cronologìa Segnalibri Strumenti Guida

I ~ <5> » https://localhost: 10000/ -lllc;-

I Login: ale j~1 indice modulo


Informazioni sul Processo
¡J Sistema
Bootup and Shutdown
Cambio Password Comando
Comandi pianificati
ID Processo Processo padre /sbin/init
Dischi e rete
Filesystem Backup Proprietario CPU 6.3%
Log File Rotation Dimensione 00:01:58
MIME Type Programs Livello Nice 10 (Predefinito) :J j Cambia j
PAM Authentication
Pianificazione Cron job Gruppo reale
Processi in esecuzione
Registri di sistema
Software Packages Utente reale
System Documentation
Users and Groups Invia Segnale HUP ; Termina Kill Sospendi h Riprendi | Controlla Processo | ! File e Connessioni j

S3 Rete
-il Hardware
a cluster
Others
i o Un used Modules
Search:

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 modificare
la p a s s w o r d .
F a t t o c i ò , si d i g i t a la n u o v a p a s s w o r d n e l l o s p a z i o b i a n c o a d e s t r a d i N u o -
v a p a r o l a d ' o r d i n e e si r e i 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 Segnalibri Strumenti Suida

4a 4- - è "Ìr htt P s://localhost:10000/ L£ icf- " . "


Logìn: ale j""j configurazione del
3 Webmin i i modulo Avvio e Spegnimento
Sistema
Bootup and Shutdown

Comandi pianificati ilNrr script to check w


I • acpi-support BUGS: unless we start »really* late, v
Filesystem Backup ithere to command.
Log File Rotation Check for daemon presence
MIME Type Programs O dlsa-utils iThis script stores and restores rr >r levels oi
• anacron |/etc/init.d/anacron: start anacron
Pianificazione Cron Job
Processi in esecuzione • apmd ^Advanced Power Management (APM) daemon
Registri di sistema •japparmor AppArmor rc file. This rc script inserts the apparmor
Software Packages • apport automatic crash report generation
Û atd Debian init script for the atd deferred e;
Users and Groups • avahi-daemon Zeroconf daemon for configuring your netw
3 Server Start bluetooth daemons
• bluetoot'n
ai Rete
S3 Hardware • bootclean
& Cluster Q bootlogd Starts or stops the bootlogd log program
• "bootmisc.sh
• brltty ¡Used to provide acces refreshable braille terminals.
• checkfs.sh Check all filesystems.
• checkroot.sh Check to root file system.
• console screen.; iPrepare console
A View Module's Logs Set console font and keymap
• console-setup
=§• System Information ;cron is a standard UNIX program
• cron
5 Refresh Modules • cryptdisks
@ Disconnettiti n.crvotdisks-earlv
localhost:10000 £ © Sì (N) V
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 -

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 una

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 funziona-
r 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 che
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 al-
m 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
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 connessio-
ne 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 pac-
chetti 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 risulteranno d i s p o n i b i l i al s u c c e s s i v o

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 -
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 263404
- / + buffers/cache: 623332 923008
Swap: 979956 0 979956
ale@pitagora:~$ df
F i l e system IK Usati Disponib
/dev/sdal 4432312 13971616 :
168 773000
ivarlock 0 773168
44 773124
devshm 28 773140
Irm 39760 733408
eneric/volatile
/dev/sda3
igvfs-fuse-daemon
ale@pitagora:

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

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.

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

t 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 -ls -title "$VNCDESKTOP
D e s k t o p " Se
x-window-manager &

C o n queste righe, q u a n d o il s e r v e r V N C v i e n e l a n c i a t o si s t a b i l i s c e u n
c o l o r e p e r l o s f o n d o d e l l o s c h e r m o ( r 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 VIMC

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 lancia-
re 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 sull'hard disk, anche con mac-

chine 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 or-
m 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 alla
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
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 impostazione
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 , per
esempio:

Listen 192.168.1.4:631

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. K
•Bisten localhost:631
' Listen /var/run/cups/cups.sock

• # Disable printer sharing and shared printers.
Browsing Off
DefaultAuthType Basic
«Location />
# Restrict access to the server...
Order allow,deny
</Location>
«Location /admin>
# Restrict access to the admin pages.,.
Order allow,deny
</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 sull'interfaccia
di rete locale.
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

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 stampante
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 righe seguente:

«Location /admin>
# R e s t r i c t a c c e s s to the a d m i n pages...
Order allow,deny
</Location>

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 Set-
Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Ge
t-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job
CUPS-Move-Job>
Require user 0OWNER ©SYSTEM
Order deny,allow
9,1 29%

Figura 8.2 -1 due biacchi <Location /> e <Location /admin> con le modifiche per accet-
tare connessioni dall'esterno.

R a g g i u n t o d a 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 Segnalibri Strumenti Guida

tv- • t» !e http://localhost:631/
.::::::• ìec;
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 Mii I.U.H.U»
Benvenuto!
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 >

Se ti viene richiesto un nome utente o a password, inserisci il nome utente e la password di accesso o il nome utente e la password
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 Hi c t a m n a o a c c i c t o n 7 a
I Completato © 3 (N> 3 j

Figura 8.3 - La schermata di benvenuto del server CUPS. Da questa pagina è possibile
aggiungere una stampante.

D o p o a v e r f a t t o c l 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

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

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
lÉMffiB 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 pagi-
na 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 prede-
finita 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 PCL 6/PCL XL Printer Foomatic/ljadith (eni


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

Se il c l 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 IXIF5


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 "esportare" le d i -
r e c t o r y si l a n c i a il c o m a n d o seguente:

sudo apt-get instali 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 Significato
rw 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 -
ro
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 .
sync
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 .
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 . *: f
Opzione 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
no_root_squash 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
anonuid=x, I n d i c a n o e s p l i c i t a m e n t e l'UlD e il G I D d e l l ' a c c o u n t a n o -
anongid=x n i m o P e r d e f a u l t q u e s t i ha U I D e G I D 6 5 5 3 4

I m p e d i s c e l'accesso a una s o t t o d i r e c t o r y c o n t e n u t a nel


noaccess

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 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
comando mount.
Ecco un e s e m p i o :

sudo mount Parmenide :/media/musica /mnt/nfs/musica


C o n q u e s t o c o m a n d o si m o n t a in / m n t / n f s / m u s i c a la d i r e c t o r y /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:~$ showmount -e 192.168.1,4


Export list for 192.168.1.4:
/home/ale/Video 192.168.1.5
ale@pitagora:-$ |

Figura 8.6 - C o n showmount si ottengono informazioni sui filesystem esportati da una


macchina in rete.

O v v i a m e n t e , d o v e r e s e g u i r e il c o m a n d o m o u n t o g n i v o l t a c h e si 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 ò pos-

s 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 /mnt/nfs/musica n f s rw,bg,intr 0 0

All'interno di questa riga, in p i ù , s o n o s t a t e a g g i u n t e d e l l e o p z i o n i non

richiamate 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 Significato
rw 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
ro 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
intr 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
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 ,
IT S 1 2ü 6
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 -
WSÌ ZG=X
ra, e s p r e s s a in b y t e

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

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 un
u t e n t e in m o d o t a l e d a i m p e d i r e a q u e s t o d i c o l l e g a r s i al s e r v e r 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 Settings = = = = = = = = = = = =

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = WORKGROUP

# server string is the equivalent of the NT Description field


server string = %h server (Samba, Ubuntu)

# Windows Internet Name Serving Support Section:


# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
; wins support = no

# WINS Server - Tells the NMBD components of Samba to be a WINS Client


# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z

# This will prevent nmbd to search for NetBIOS names through DNS,
dns proxy = no
20,1 6%

Figura 8.8 - Nella prima parte del file smb.coni sono contenute le impostazioni globali.

N e l l a p a r t e 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 ethO

Q u e s t a riga va d e c o m m e n t a t a 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

I
!####### 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 account nella sezione [Global] di
smb.conf. Per esempio, per utilizzare come guest l'utente ale si inserisca
questa riga:
guest account = ale

N o n r i m a n e q u i n d i c h e inserire g u e s t 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
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

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 , inse-
r 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 risorse condivise dal server
(Figura 8.10).
Se t u t t o c o r r i s p o n d e a q u a n t o v o l u t o e le 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 .
ale@pitagora:-$ smbclient -L //192.168.1.4 -U ale
SPassword:
Domain=[PITAGORA] 0S= [Unix] Server=[Samba 3.0.28a]

Sharename Type Comment

IPC$ IPC IPC Service (pitagora server (Samba, Ubuntu))


documenti Disk
print$ Disk Printer Drivers
PDF Printer PDF
ML-1610 Printer Samsung ML-1610
Domain=[PITAGORA] 0S= [Unix] Server=[Samba 3.0.28a]

Server Comment

Workgroup Master

WORKGROUP PITAGORA
ale@pitagora:-$ |

Figura 8.70 - Con smbclient -L si ottengono informazioni sulle risorse condivise


da un server Samba.

Un altro c o m a n d o 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 corret-


tezza 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 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 modo:

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
ubuntu D 0 Mon Jun 2 13:36:04 2008
ubuntu stampa D 0 Mon Aug 11 11:21:58 2008

46936 blocks of size 1048576. 15188 blocks available


smb: \fag\> ed ubuntu
smb: \fag\ubuntu\> dir
D 0 Mon Jun 2 13:36:04 2008
D 0 Tue Jun 17 16:31:13 2008
,. libro.doc 854016 Mon Jun 2 13:38:20 2008
libro.odt 153089 Mon Jun 2 13:37:58 2008
>; Figure D 0 Mon Jun 2 13:28:55 2008

46936 blocks of size 1048576. 15188 blocks available


• smb: \fag\ubuntu\> |
1
Figura 8.11 - L'interfaccia di smbclient è simile a quella dei client FTP a caratteri.

Per o p e r a z i o n i p i ù a r t i c o l a t e 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 :

//192.168.1.4/documenti /mnt/samba smbfs username=ale,password=x 0 0

C o m e si p u ò n o t a r e , si è a g g i u n t a u n ' u l t e r i o r e o p z i o n e 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 as-
s e g n a t o a l l ' o p z i o n e w o r k g r o u p 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 è neces-


sario 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 riser-


va di directory e di intere partizioni

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


p 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 stru-
m 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 crea-
re 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 ripristinare il c o r r e t t o f u n z i o n a m e n t o
di una macchina s e m p l i c e m e n t e ritrasferendo su d i s c o le i m m a g i n i d e l l e
partizioni.
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 sempli-


ce 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 limita-


ta, 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 sy-
s 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 Segnalibri Strumenti Guida

W " $ ¡¡..s <,<&> http://www.sysresccd.org/Main_Page .. I-jiicE

Main Page
System
Éèxcue C English page | Page e n f r a n ç a i s | Pégina e n e s p a n o l

Welcome to SystemRescueCd
. HOMEPAGE
.FORUMS
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
. NEWS
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
(SÉMI 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
» Home 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,
« Screenshots 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
» download
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,
« HowTo
iso9660), as well as network filesystems (samba a n d nfs).
. FAQ
• ChangeLog-x86
• ChangeLog-ppc Quick start Guide (edit)
» ChangeLog-sparc
. System tools 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)
« Package-iist-x86
« Package-list-sparc Recent news about this project [edit]
« Kernel
» Seta-x86 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
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 _ S _ / ! !
Si «_) / S/ \ / ! i ! ! / _ S ! /
; ; : _ < / s \ ( ¡ I _ I ¡ i ¡ ( _ ¡
_í !_s_¡ s_s /s !s ,_!s is s
_) ! S__
__/ S , ¡

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 <==
I
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 i 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à acces-
so 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: [sdb] 3 9 0 7 0 0 8 0 5 1 2 - b y t e h a r d w a r e sectors


(20004 M B )
[ 6633.222010] sd 4:0:0:0: [sdb] W r i t e P r o t e c t is o f f
[ 6633.222018] sd 4:0:0:0: [sdb] M o d e S e n s e : 08 00 00 00
[ 6633.222023] sd 4:0:0:0: [sdb] A s s u m i n g d r i v e c a c h e : w r i t e through
[ 6633.222030] sdb: sdbl

Queste righe 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 asse-
g 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
ramio -unknoun- 16.00 MiB
ramll -unknown- 16.00 MiB
ramlZ -unknoun- 16.00 MiB
raml3 -unknoun- 16.00 MiB
raml4 -unknoun- 16.00 MiB
raml5 -unknown- 16.00 MiB
-sswrnmrnrnm^mm
* Image file to create/use

Action to be done: <Mext (F5>>


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

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 Re-
b 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 pro-
g r a m m a d a r à m o d o a l l ' u t e n t e d i c a m b i a r e il s u p p o r t o d i m e m o r i z z a z i o n e
in c a s o d i n e c e s s i t à .

Se si i n 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

sàve partition io image lile

Compression level
( ) Hone (very fast + very big file)
(*) Gzip i.gz: medium speed + small image file)
( ) BzipZ (.bzZ: very slow • very small image file)

Options If finished successfully:


[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

<Cont inue (F5)> <Exit (F6)> <t1ain window (F?)>

initializing the operation. [» to cancel, CtrlS to pause, CtrlQ to résumé]

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

If finished successfully:

IHL
— a a r

»l'IM»

<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 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 r e t t o d i file e directory. N e l caso d e l ripristino 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 Funzione
-c o - - c r e a t e Crea un n u o v o archivio

-x o - e x t r a c t Estrae i file c o n t e n u t i nell'archivio

-t o - l i s t 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

-r o - a p p e n d 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 ù re-
-u o - u p d a t e
centi 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
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 ar-
-delete
chivi 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
-A o - c a t e n a t e
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 richieste. 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

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

È c o n s i g l i a b i l e v e r i f i c a r e c h e l ' a r c h i v i o a p p e n a c r e a t o sia la c o p i a e s a t t a d i
q u a n t o 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 nella
d i r e c t o r y r a d i c e e si e s e g u e tar xjf seguito dal percorso c o m p l e t o di
home_ale.tar.bz2, c o m e nell'esempio seguente:

t a r xjf /media/cdrom/home_ale.tar.bz2

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 - - e x c l u d e *.jpg - - e x c l u d e /home/ale/Musica


/home/ale

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


fisso . 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'estra-
zione degli archivi.
mmm
/home/ale/Video
/home/ale/Download
/home/ale/doc/musica
/home/ale/Immagini
1

"esclusi.txt" 5 L , 76C 5,0-1 Tut

Figura 9.7 - Gli elementi da escludere da un archivio possono venire elencati


in un apposito file di testo.

Tar e i backup incrementali

Il p r o g r a m m a 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 --mul-
t 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 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
esterno:

sudo rsync -av /home/ale/ /media/disk/backup/


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

Le v o l t e s u c c e s s i v e in 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 (/me-
d 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 / h o m e / m a r i o / m a r i o @ b a c k u p . ufficio.
lan:./copia

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

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 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 -
Daemon 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
Storage
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 avvia-
Daemon
t 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 de-
File D a e m o n
s 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
Console
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
Catalog
backup

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 (Sto-
r 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 nume-
ro 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-,iLìfesm.:«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 directory

indicate.
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 diffe-
r 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;ON0Ò43000000000ui. 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» • D«U

I
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 Con tents Index


Completato
Figura 9.14 - La Guida di Bacula online è una preziosissima fonte di informazioni sull'uso
del programma.
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 ag-
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
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 uti-

lizzati 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 bconsole,

questa volta acquisendo i poteri di root:

sudo 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 in
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.
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 . Digitando
" 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).

•status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 1
pitagora-dir Version: 2.2.8 (26 January 2008) i486-pc-linux-gnu debian lenny/sid
Daemon started 02-set 08 17:36, 5 Jobs run since started.
Heap: heap=397,312 smbytes=38,210 max_bytes=42,720 bufs=220 max bufs=242

Scheduled Jobs:
Level Type Pri Scheduled Name Volume

Incremental Backup 10 02-set-08 23:05 Clienti •unknown*


Full Backup 11 02-set-08 23:10 BackupCatalog •unknown*
Full Backup 10 03-set-08 08:00 LocalBackup •unknown*

Running Jobs:
No Jobs running.

Figura 9.17- L'output del comando interno status nella console di Bacula.
Ripristina del backup
Per ripristinare i 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 /home/ale/Documenti
mark /home/test/archivio
done

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 ripristino del
backup e saranno fornite informazioni dettagliate sull'operazione.
Non rimane 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ù com-

pleto 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 - - d p o r t 137 -j A C C E P T
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 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 192.168.0.0/24
- - 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 192.168.0.0/24
- - d p o r t 4 4 5 -j A C C E P T

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 Li-
n u x p r e f e r i t e p e r la f r u i z i o n e m u s i c a l e . Q u e s t e l e g g e r a n n o 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> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sdal
UUID 45ad37fa-386e-4ff0-be33-d4465e05c096 / ext3 relatime,erro
s= remount-ro 0 1
# /dev/sda3
UUID 20e23alb-0clb-46ba-8cba-20eb8Of5c5bf /home ext3 relatime
0 2

# /dev/sda2
UUID=07523736-8e32-4378-bbff-3bcaf4d57890 none swap sw
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 Tut

Figura 10.1 - Sulla macchina client il file /etc/fstab sarà simile a questo.
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 softwa-
re 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 (Per-
sonal 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 se-
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 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

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à richiamato automatica-


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 éì <B hleffAisr/share/mythbunturtiomeflndexhtml

isitati- OSegnalibri smart*- ®>Getbng Started ~ 'LatestHeadlines-

Related Projects

Mythbuntu is an community su •on tor Ubuntu fix


!ubuntu 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
jxubuntu 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 siste-
m 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 apt-get
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 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 control-
l 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


- n X

I Q ] S y s t e m Roles S y s t e m Roles

Although a Mythbuntu machine is intended to be used as an appliance, active roles may be


¡1^1 MythTV Configuration added, removed, or modified at any time.

B a c k e n d Role
^ Applications & Plugins 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
30* Proprietary Drivers Nessun backend • Backend primario

O Backend secondario
^ Infrared Devices
F r o n t e n d Role
A machine containing a frontend role will connect to a master backend to obtain
System Services recorded content

Nessun frontend * Frontend


^ A r t w o r k & Login Behavior
D e s k t o p Role
If you later decide that you would like to use this machine as a desktop, you can
F j MythTV Themes
convert a machine from an applicance into a standalone machine that also has
Mythbuntu configured
¡ ^ P r o p r i e t a r y Codecs 0 Ubuntu Desktop • Xubuntu Deskop 0 Kubuntu Desktop

Diskless S e r v e r
Advanced Mangement A system role that will allow you to operate additional Frontend clients without
installing Mythbuntu on them.
• Diskless Server • Add DHCP server

A q u e s t o p u n t o il M e d i a C e n t e r è c o r r e t t a m e n t e 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 Funzionalità
MythArchive 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
MythBrowser 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 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
HHIHHHHHHEHHhHHHH
MythMusic Un c o m p l e t o lettore musicale
MythVideo 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 tramite
MythWeb
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, sce-
g 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 re-
m 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 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 risponde il B a c k e n d , sulla
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 Backend
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: 192.168.1.4

Port: 6543 Status Port: 6544

Security Pin (Required): 0000

Master Backend
IP address: 192.168.1.4

Enter the IP address of this machine. Use an externally accessible address (ie, not
127.0.0.1) if you are going to be running a frontend on a different machine than this one.

Cancel Next >

Figura 10.6 - In questa schermata si configura l'indirizzo IP del Backend.

F a t t o q u e s t o , è n e c e s s a r i o c h e il s e r v e r M y S Q L 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 IXIFS

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 ar-
c 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 re-
m 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 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
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 .
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 avan-
z 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 . Pre-
m 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 ag-
giuntivi 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 mo-
d 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 inter-


n e t d a u s a r e . Si m a n t e n g a n o i v a l o r i p r e d e f i n i t i .

Configurazione diretta di Postfix

N e l 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 righe c o n la


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]

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

tinaia: 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 Valore
mydestination 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
mydomain I n d i c a il d o m i n i o d e l s e r v e r

myhostname 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 relay
mynetworks
per l'inoltro della posta

myorigin 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 di
relayhost
p o s t a n o n locali

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 comando:

sudo postconf -e " r e l a y h o s t = [mail.provider.it]"

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


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

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 , sarà

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 [ OK ]

ale@pitagora:|

Figura 11.3 - Installando il pacchetto vsftpd verrà attivato automaticamente un servizio


FTP anonimo.

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


ti 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 Valore
anonymous_
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
enable
write_enable 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


anon_upload_
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 -
enable
ble). D e f a u l t N O
Parametro Valore
Permette agli utenti a n o n i m i di creare directory (deve
anon_mkdir_
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 ) . De-
write enable
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 .
anon_root
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
local_enable 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
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 ser-
listen 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
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
xferlog_enable
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 prati-
c o a m b i e n t e d i s v i l u p p o p e r la c 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 accessori
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.

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 autenti-
cazione, 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 Suida

- C , Í • http u m 0 ri l i

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 che
t r o v a n o in / e t c / a p a c h e 2 .

Tabella 1 1 . 3 - 1 file e le directory in /etc/apache2.


| Elemento Utilizzo I
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 -
apache2.conf
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 in c u i si i m p o s t a la p o r t a di
ports.conf
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 -
sites-available/
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
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

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
mods-available/
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. Fan-


mods-enabled/
no 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

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 .
conf.d/
C o n t e n g o n o d i r e t t i v e a g g i u n t i v e p e r la c o n f i g u r a z i o n e

S e g u e n d o q u e s t a s t r u t t u r a a d o t t a t a p e r o r g a n i z z a r e la c o n f i g u r a z i o n e d i
A p a c h e , o g n i s i t o c h e si i n t e n d e g e s t i r e r i c h i e d e l ' i n s e r i m e n t o d i 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, quindi,
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
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 . Le
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 .
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 speci-

f i c o i n d i r i z z o IP o a u n n o m e c o m p l e t o d i d o m i n i o o p p u r e , c o m e in q u e s t o

c a s o , p u ò r i 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 confi-
g u r a z i o n e d i s p o n i b i l i in A p a c h e .

Modificare la configurazione

A q u e s t o p u n t o è p o s s i b i l e u t i l i 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 , q u i n d i , si m o d i f i c h i la riga


c o n la d i r e t t i v a D o c u m e n t R o o t i n s e r e n d o c o m e v a l o r e la d i r e c t o r y in 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 configura-
zione per il proprio sito.
Q u i n d i , b i s o g n a c a m b i a r e la r 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 ri-
l 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 /etc/init.
d/apache2 reload.

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 /etc/apache2/sites-


available/sito

A d e s s o b i s o g n a m o d i f i c a r e il n u o v o f i 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 / v a r / w w w / > i n s e r e n d o a n c h e q u i la
directory radice desiderata.
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 comando
seguente:

sudo a2ensite sito

Il c o m a n d o s p e c u l a r e , d a l l a m e d e s i m a s 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 sito.

Dopo l'esecuzione dei c o m a n d i a2ensite e a2dissite è infine neces-


sario far r i l e g g e r e ad A p a c h e la c o n f i g u r a z i o n e c o n s u d o /etc/init.

d/apache2 reload.

ale@pitagora:~$ sudo a2ensite sito


Site sito installed; run /etc/init.d/apache2 reload to enable.
ale@pitagora:~$ sudo /etc/init.d/apache2 reload
* Reloading web server config apache2 [ OK ]
ale@pitagora:-$ |

Figura 11.7- Dopo aver attivato un sito si fa rileggere la configurazione al server web.

A q u e s t o p u n t o A p a c h e g e s t i s c e p i ù 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 , 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
righe a g g i u n t i v e . Q u e s t e d e v o n o c o n t e n e r e l ' i 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 richiamare


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 255.255.255.0

Il comando crea l'interfaccia virtuale eth0:0, le a s s e g n a l'indirizzo


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 righe
iniziali c o m e la s e g u e n t e :

iface ethO: 0 inet static

C r e a t e le i n 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 BIIX1D


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 a p t - g e t in-
stali b 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 informa-
zioni 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 ;

/ / } I

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 /etc/init.d/
bind9 restart.
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 ser-
v 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 3,1 Tut

Figura 11.8 - Il file /etc/resolv.conf con il server DNS locale e quelli forniti dal provider.

N e g l i a l t r i c o m p u t e r d e l l a L A N , I n f i 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
c a c h e , invece, si lancia il c o m a n d o s u d o rade - s 127.0.0.1 flush.

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 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 -
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" ;
};

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

; BIND data file for local loopback interface

$TTL 604800
@ IN 50A localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA : : 1

•/etc/bind/db. local" 14L, 270C 1,1 Tut

Figura 11.9 - Si usa /etc/bind/db. locai come modello per creare il file della zona.

Si c 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 ù 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

chiusura.
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 in
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 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 secon-


d a r i p e r u n a d e t e r m i n a t a z o n a . Il c a r a t t e r e p r e s e n t e 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 Descrizione j
SOA 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

NS 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

••HI 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 -
PTR
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 esse-
MX
r e i n v i a t e le e m a i l
CNAME Fornisce a un host un n o m e supplementare

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 IN A 192.168.1.10
cario IN A 192.168.1.20
gianni IN A 192.168.1.30

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 : il f i l e
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%-- 1,1 Tut

Figura 11.10-11 file /etc/bind/db.ufficio.lan dopo le modifiche.

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.
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 visto
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 modo:

10 IN PTR marco.ufficio, lan.


20 IN PTR cario.ufficio, l a n .
30 IN PTR g i a n n i . ufficio, l a n .
40 IN PTR n s .ufficio, l a n .

11 c o n t e n u t o d e l f i l e al t e r m i n e d e l l e m o d i f i c h e s a r à 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 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 NS ns. ufficio, lan.


10 IN PTR marco.ufficio.lan.
20 IN PTR cario.ufficio.lan.
30 IN PTR gianni.ufficio.lan.
40 IN PTR ns.ufficio.lan.

("/etc/bind/db. 192" 16L, 376C scritti 1,1 Tut

Figura 11.11 - Il file /etc/bind/db. 192 con la configurazione della zona inversa.
12. Ottimizzare il sistema

La procedura per 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 si-
s 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 ri-
l 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 riconosciuto ma non è
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 à .
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 bin86
libncurses5-dev

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/ - C- 4

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 Location
HTTP ;http://www. k e r n e l . o r g / p u b /
FTP ftR.;//ftp A .keijieLQ.rg/pub/
RSYNC rsync://rsync.kernel.org/pub/

The latest stable version of the Linux kernel is: 2.6.26.5 2008-09-08 17:43 UTC F V VI Q Chanqeloq
The latest prepatch for the stable Linux kernel tree is: 2.6.27-rc7 2008-09-21 22:48 UTC B V VI C Channeled
The latest snapshot for the stable Linux kernel tree is: 2.6.27-rc7-ait5 2008-09-26 12:01 UTC fi V £
The latest 2.4 version of the Linux kernel is: 2.4.36.7 2008-09-07 10:22 UTC £ V £ Chanqelon
The latest prepatch for the 2.4 Linux kernel tree is: 2.4.37-rcl 2008-09-07 16:41 UTC fi V Q Chanqeloq
The latest 2.2 version of the Linux kernel is: 2.2.26 2004-02-25 00:28 UTC £ V Chanqeloq
The latest prepatch for the 2.2 Linux kernel tree is: 2.2.27-rc2 2005-01-12 23:55 UTC fi V V] Chanqeloq
The latest -mm patch to the stable Linux kernels is: 2.6.27-rc5-mmI 2008-09-05 05:03 UTC fi V Chanqeloq

Figura 12.1 - Da www.kernel.org è possìbile scaricare il kernel Linux ufficiale.


Poi si 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 / u s r / s r c / l i n u x - 2 . 6 . 2 6 . 5 / . config

P o i si p o t r à richiamare make 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 ò risultare utile c o m p i l a r e comu-
ni p r o g r a m m i o librerie. A n c h e in q u e s t o c a s o , c i ò c h e si r i c e r c a sono
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 decommentate.
U n a riga c o m e :

# deb-src http://it.archive.ubuntu.com/ubuntu/ hardy main restricted

d e v e d i v e n t a r e così:

deb-src http://it.archive.ubuntu.com/ubuntu/ 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 si-


s 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 l'opzione
--reinstall.

Potrebbero piacerti anche