Sei sulla pagina 1di 213

Consultazione della rivista Inter.Net sul world wide web.

Corso di Linux

prova articolo
Linux: installiamolo!
Linux: facciamolo funzionare
Linux: colleghiamolo in rete
Linux: sfruttiamo le risorse di rete
Linux: utilizziamo la posta.
Leggiamo le news
Fatti l'alias e il dominio virtuale
Chi cerca trova... con i permessi giusti
Anche tu della tribù Apache
Proteggi Forte Apache
Glossario Linux - Seconda Parte
Nessuno mi capisce
GLOSSARIO LINUX
Ogni pacchetto al suo posto
Bash, scripting e le espressioni regolari
E ora l'interfaccia grafica
Pronti a prendere il largo
Spostiamoci tra le directory
Tuffiamoci nel sistema
Un pinguino vestito da postino
Bash, ultima frontiera

http://www.interpuntonet.it/RIVISTA/Corsi/Linux/index.html03/04/2006 1.20.13
Consultazione della rivista Inter.Net sul world wide web.

Linux: installiamolo!

Parte Prima LINUX: installiamolo!


Come installare un sistema Linux utilizzando Red
Hat 5.1
di Guia Ferrero (guiami@yahoo.com)

Con questa nuova rubrica apriamo alcune pagine


di questa rivista ad un'analisi approfondita di
Linux, con l'intento di aiutarvi a conoscere questo
sistema operativo, imparare ad installarlo,
configurarlo, personalizzarlo secondo le vostre
esigenze e utilizzarlo per portare a termine i lavori
di tutti i giorni.
Contrariamente a quanto si è soliti sentire, Linux
non è affatto un sistema operativo complesso da
utilizzare, e non ha nulla da invidiare, in termini di
produttività, a Windows 98, NT o MacOS. La
compatibilità tra i vari mondi è garantita dall'Os
stesso, basta infatti pensare che un pc con
installata una recente versione di Linux è in grado
di comunicare con reti Novell, Os2, Microsoft ed
AppleTalk; quanto alle applicazioni, poi, vi sono
centinaia di programmi per l'office automation, la
grafica, il web publishing, la statistica, l'analisi
matematica, e via discorrendo.
Ciò di cui intendiamo parlare, inoltre, è un sitema
operativo che, se correttamente configurato, è
assolutamente stabile e di cui è possibile è in ogni
momento verificare lo stato di funzionamento.
Insomma, un sistema operativo in cui,
contrariamente a Windows, l'utente sa che cosa
sta succedendo e, presumibilmente, cosa
succederà lanciando un determinato comando.
Infine Linux è estremamente leggero e potente:
leggero perché è stato pensato per poter
funzionare su 386 e 486 con soli 8 Mb di ram
installati, potente perché è realmente un ambiente
multitasking nel quale più applicazioni vengono
utilizzate contemporaneamente e in cui tutte, nello
stesso tempo, possono eseguire differenti
operazioni.
Dovendo iniziare questo percorso che ci porterà
ad utilizzare Linux come strumento di lavoro,
ovviamente il primo passo sarà quello che ogni
utente si trova costretto ad intraprendere per
potere utilizzare un sistema operativo:
l'installazione.

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (1 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

Una premessa
Linux da solo sarebbe un sistema operativo
assolutamente inutilizzabile, esso infatti si
preoccupa unicamente di fornire un'interfaccia di
dialogo tra le varie parti che compongono un pc.
Al sistema operativo, infatti, si appoggiano più
moduli atti a svolgere le più disparate funzioni: vi è
un modulo per la visualizzazione delle
informazioni sotto forma grafica, una gui (Graphic
User Interface) insomma, uno per la gestione della
scheda audio, un altro per la gestione dei dischi,
un altro ancora per la connettività in rete locale o
remota, insomma vi è un modulo per ogni
esigenza. Se il sistema operativo è uno, la
combinazione di differenti moduli e pacchetti
applicativi è molteplice ed è quella che origina le
diverse distribuzioni. Generalizzando, il sistema
operativo nudo e crudo viene indicato con il
termine di kernel (traducibile in italiano con
nocciolo), mentre le distribuzioni hanno i nomi più
disparati: RedHat, Slackware, S.u.s.e, Debian e
TurboLinux. Tra le varie distribuzioni abbiamo
scelto una tra le più semplici da installare e
configurare, approfittando, inoltre, del recente
rilascio della versione aggiornata: la RedHat. Sul
Cd allegato alla rivista dello scorso mese
troverete, all'interno della directory RedHat, la
release completa della versione 5.1 della per
macchine Intel i386, contentente quanto vi serve
per iniziare ad esplorare Linux. Nei numeri
successivi, di volta in volta che introdurremo nuovi
argomenti, metteremo a disposizione su cd rom i
programmi di cui avremo discusso.

Per iniziare
La prima cosa da fare è quella di preparare il disco
fisso all'installazione del sistema operativo,
riservandogli dello spazio sul disco rigido.
Sebbene Linux possa essere installato
direttamente all'interno di una partizione Ms-Dos
(purché non Fat-32), ciò è sconsigliabile dato un
file system non nativo pregiudica gravemente del
sistema operativo. Pertanto è necessario creare
almeno due nuove partizioni che verranno
formattate da Linux secondo i propri standard. Nel
caso abbiate a disposizione i più dischi, ed alcuni
di questi abbiano dello spazio libero, non
formattato, il processo di partizionamento risulterà
semplice ed intuitivo, e tutte le operazioni
verranno svolte direttamente dall'interno del

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (2 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

programma di installazione. Nel caso in cui, invece


disponiate di un solo disco, o in cui abbiate
utilizzato tutto lo spazio disponibile di tutti i dischi,
si rende necessario il ripartizionamento. Per
ripartizionare il disco rigido senza perdere i dati in
esso contenuti potete utilizzare delle utility
commerciali quali Partition Magic, oppure una
piccola applicazione shareware chiamata Fips.
Prima di utilizzare questo programma è opportuno
effettuare un backup dei dati, fatta eccezione per
quelle applicazioni di cui disponete i dischetti o i
cd rom di installazione. Il ripartizionamento tramite
Fips o Partition Magic, sebbene sicuro lascia
sempre spazio a qualche imprevisto. Partition
Magic lavora direttamente dall'interno
dell'ambiente grafico di Windows, e non ci
soffermeremo ad analizzarne le procedure, dal
momento che si tratta di un software commerciale
non in possesso di tutti i nostri lettori. Fips invece
lavora in ambiente Ms-Dos e necessita di un disco
di avvio per poter funzionare. Formattate quindi un
dischetto, rendendolo avviabile e dandogli
un'etichetta riconoscibile (format a: /v:disco_fips /
s), estraete al suo interno il file Fips15.zip ed in
seguito leggetevi molto attentamente il file Fips.
doc. Passare almeno un'ora a capirne a fondo il
funzionamento è sicuramente preferibile al
rischiare di perdere tutti i vostri dati.
Per poter ridimensionare correttamente una
partizione è necessario che lo spazio libero su
disco sia contiguo, per cui è bene deframmentare i
dati utilizzando il Defra di Windows 95 o lo Speed
Disk della Norton; deframmentate quindi il disco
sul quale volete ricavare le partizioni e quindi
riavviate il pc dal dischetto che avete preparato in
precedenza. Appena lanciato, Fips, dopo aver
diagnosticato il sistema operativo sotto cui è stato
lanciato, individuerà i dischi installati sulla vostra
macchina e vi richiederà di specificare su quale
disco operare (se sul disco selezionato sono
presenti più partizioni vi chiederà quale di queste
ridimensionare). Utilizzate quindi i cursori (frecce)
per indicare al programma da quale settore partire
per il ridimensionamento, ricordandovi che se
partirete dal primo settore libero, non lascerte
alcuno spazio alla precedente partizione.
Terminato il ripartizionamento, se non saranno
incorsi errori potrete riavviare normalmente; Fips
registrerà sempre e comunque la precedente
struttura delle partizioni in una sorta di file di

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (3 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

backup, e potrete recuperare il vostro disco


riavviando la macchina da dischetto ed eseguendo
il programma Restorrb.exe. Riavviate il pc ancora
da dischetto ed eseguite Fips in modalità test,
postponendo al nome la flag -t (fips -t); se non
verranno segnalati problemi riavviate normalmente
il computer. A questo punto l'utility avrà dunque
generato una nuova partizione primaria, che
dovrete cancellare dall'interno del programma di
installazione di Linux.

Si comincia
Tornati all'ambiente Windows utilizzate il
programma Rawrite.exe per creare un disco di
boot da utilizzare per dare inizio all'installazione.
Lanciato Rawrite vi verrà chiesto il percorso
dell'immagine da installare: esso sarà d:\RedHat
\i386\Images\B+
oot.img, dove d è la lettera che contraddistingue la
vostra unità cd rom. Specificato il percorso dovrete
indicare la lettera di identificazione dell'unità
floppy, generalmente a:, e quindi inserire un
dischetto vuoto nel lettore. Riavviate quindi la
macchina, con inserito il dischetto appena creato
ed il cd rom allegato alla rivista; al termine del
caricamento del sistema operativo, comparirà la
scritta boot: premete Enter (per spostarvi
all'interno delle finestre del programma di
installazione utilizzate il tabulatore, il tasto posto a
sinistra della lettera Q e le frecce cursore). A
questo punto vi verrà chiesto il linguaggio di
installazione; non essendo presente l'italiano nella
versione da noi utilizzata, abbiamo scelto l'inglese.
Fatto questo, la finestra successiva riguarda la
scelta della tastiera: scorrete i differenti tipi di
tastiera fino a trovare It e selezionatela.
Se state installando Linux su di un portatile, verrà
a questo punto diagnosticata la presenza di un
lettore di schede pcmcia e vi verrà chiesto se
vorrete il supporto per tale lettore: scegliete Si solo
se utilizzate un lettore cd rom collegato a una
scheda pcmcia o se intendete avvalervi di schede
pcmcia in futuro. Il passo successivo richiede di
specificare da quale supporto va installato il
sistema operativo: scegliete cd rom e procedete
indicando che state effettuando una installazione
ex-novo e non un upgrade. Se disponete di un
adattatore scsi rispondete di si e seguite le
procedure di identificazione del controller,
altrimenti passate alla fase successiva.

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (4 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

A spasso coi dischi


Siamo dunque arrivati alla parte più ostica di tutta
l'installazione, quella in cui indicheremo al
programma d'installazione su quali partizioni
lavorare. E' il momento di creare due partizioni:
una per il sistema operativo e le applicazioni, o
partizione di root, ed un'altra per lo swap, ossia la
memoria virtuale. Per una installazione minima
sono necessari almeno 300-400 Mb per la
partizione di root ed almeno 16 Mb per quella di
swap. Una soluzione più completa, invece,
richiede 650 Mb per la partizione di root e vi
consigliamo vivamente di creare una partizione di
swap di almeno 32 Mb e non più grande di 64.
Selezionate il disco su cui lavorare: esso sarà
indicato come hda se master primario, hdb se
slave primario, hdc se master secondario e hdd se
slave secondario. Le partizioni vengono indicate
con numeri progressivi, dall'1 al 4 per le partizioni
primarie ed a partire dal 5 per quelle estese. Se
state installando Linux sullo spazio appena
liberato da Fips, o su un disco su cui è già
comunque presente una partizione primaria,
utilizzate Fdisk, altrimenti passate direttamente a
Disk Druid. Per avere una lista completa dei
comandi di Fdisk digitate m e quindi return.
Cancellate la partizione creata da Fips con d,
seguito dal numero della partizione; se siete
indecisi usate il comando p per visualizzare la lista
delle partizioni presenti sul disco. Create una nuva
partizione estesa con il comando n e all'interno di
questa create due partizioni delle dimensioni
sopra indicate. Modificate ora con t il tipo di
partizione, utilizzando il codice 83 per la partizione
di root e 82 per quella di swap. Quando avete
finito digitate w e passate a Disk Druid. Se state
installando Linux su di un disco vuoto contenente
due partizioni, create due partizioni primarie
(sarebbe opportuno creare più di due partizioni,
ma vedremo questo nelle successive rubriche).
Da Disk Druid dovrete selezionare la partizione di
root, editarla ed inserire come mount point /. Così
facendo notificherete al programma d'installazione
che in quella partizione andranno scritti tutti i file.
Selezionando Ok procederete con la
formattazione delle partizioni, a cominciare da
quella di Swap; è opportuno selezionare per ogni
partizione l'opzione di verifica e riallocazione dei
Bad Block e, se possibile, per la sola partizione di

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (5 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

root, l'opzione growable.

Pacchetti e conclusione
Ora non rimane che selezionare i pacchetti da
installare, ossia scegliere quali funzionalità
implementare sulla vostra macchina. Se non avete
almeno 650 Mb a disposizione evitate i vari server
(news, http, ftp, gopher, etc), gli strumenti di
sviluppo, TeX, i giochi e i pacchetti di networked
workstation e limitatevi all'essenziale. Fatte le
vostre scelte, premete Ok per iniziare la fase di
installazione dei pacchetti, al termine della quale il
sistema operativo diagnosticherà la presenza ed il
tipo di mouse collegato al vostro computer; se non
verrà diagnosticato il mouse corretto potrete
sempre effettuare manualmente la configurazione
in un secondo momento. Fatto questo è il
momento di configurare il server X che gestisce
l'interfaccia grafica, operazione che viene eseguita
automaticamente da Linux. Selezionate quindi il
vostro fuso orario (Europe-Rome o Gmt+1) e
procedete. Ignorate sia la schermata relativa ai
servizi (services) da abilitare all'avvio del pc che
quella relativa alla stampante (che analizzeremo
nella prossima puntata). Vi verrà quindi chiesta
una password di root, ovvero di accesso
incondizionato al sistema: utilizzate una
combinazione a voi nota di numeri e lettere e
segnatevela su un foglio.
Per ultimo vi verrà chiesto di creare un dischetto di
boot: inserite un floppy vuoto nel lettore e
procedete. Ignorate (Skip), la richesta di
installazione di Lilo (Linux Loader), e avrete
portato a termine l'installazione. Riavviate con il
dischetto, digitate root come user e
successivamente la password e sarete pronti ad
utilizzare Linux. Per passare all'ambiente grafico
digitate startx e ricordate che siete collegati come
utente con privilegi illimitati, quindi attenti a quello
che fate. Per uscire dal sistema NON spegnete il
Pc, ma digitate halt e quindi aspettate la scritta
System Halted prima di spegnere o riavviare.
Per ora siamo arrivati al termine. Fate un po' di
esperienza con il nuovo sistema operativo che
avete appena installato e il prossimo mese
impareremo qualche trucco per configurare al
meglio Linux.
Se volete ulteriori informazioni potete inviare una
mail all'indirizzo di posta elettronica
linux@systems.it, oppure consultate libri quali

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (6 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

Running Linux della O'Reilly, tradotto in Italiano, o


l'ultimo libro sulla RedHat pubblicato da Tecniche
Nuove.

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/39/Linux/corso.html (7 di 7)03/04/2006 1.20.20


Consultazione della rivista Inter.Net sul world wide web.

Linux: facciamolo funzionare

Parte seconda LINUX: FACCIAMOLO


FUNZIONARE
Dopo l'installazione, il momento più critico è
sicuramente la configurazione; impariamo a
muovere i primi passi nel sistema operativo

di Guia Ferrero guiami@yahoo.com

Dopo aver visto, il mese scorso, come installare il


sistema operativo, questa volta ci occuperemo
della sua messa a punto. Per evitare che vi
limitiate ad essere semplici esecutori delle nostre
istruzioni analizzeremo, inoltre, nell'ultima pagina
di questa puntata una prima serie di comandi così
da facilitarvi i primi passi attraverso questo nuovo
mondo.
Per cominciare inserite il dischetto di boot, creato
nel corso dell'installazione, e avviate la macchina.
Al comparire del prompt LILO: digitate linux vga=1
per impostare il video nella modalità 80 righe per
50 colonne e, qualora disponiate di più di 64 Mb di
ram, mem=xM dove x rappresenta la quantità di
memoria fisicamente installata sulla macchina. Ad
esempio, per una macchina con 96Mb di Ram
installati dovrete digitare linux vga=1 mem=96M.
Per verificare l'effettivo riconoscimento della
memoria installata sul pc utilizzate il comando free
e osservate la cifra riportata sotto Mem: total; essa
rappresenta la quantità di memoria ram
effettivamente gestita dal sistema.
Fatto questo possiamo entrare nel vivo della
configurazione avviando X con il comando startx.

Messa a punto
Una volta comparso il desktop premete il tasto
destro del mouse così da far comparire il menu
Start o agite sulla barra degli strumenti posta
orizzontalmente alla base dello schermo e
selezionate la voce Program-Administration-Cont+
rol Panel: comparirà una finestra con i principali
tool di configurazione del sistema.
Per prima cosa cambiamo le impostazioni relative
alla lingua in modo da avere quanti più messaggi
visualizzati in lingua italiana: cliccate sull'etichetta
"Control" e quindi sulla voce "Features". Alla voce
"Language" selezionate "Italian", premete "Accept"
ed uscite da X utilizzando il comando Exit Fvwm

http://www.interpuntonet.it/Inter.Net/RIVISTA/40/linux/articolo_corretto40.html (1 di 4)03/04/2006 1.20.23


Consultazione della rivista Inter.Net sul world wide web.

da Start. Riavviate l'interfaccia grafica con il


comando startx e dovreste vedere i menu di
configurazione in lingua italiana
Passiamo ora a qualcosa di più vitale per il
sistema, ovvero la creazione di un nuovo utente.
Nei sistemi Unix è possibile definire più utilizzatori
di uno stesso sistema, ognuno con privilegi e limiti
da definire. L'utente con il maggior numero di
possibilità è il Super User, il quale può modificare
qualsiasi parametro del sistema e, al limite,
cancellare qualsiasi file presente sul disco rigido.
E' ovvio che entrare in un sistema come super
user (detto anche root) è sempre un pericolo, dato
che alla minima distrazione si rischia sempre
qualche cosa. L'operazione più proficua da
compiere consiste sicuramente nel creare uno o
più utenti con minori possibilità di azione, ed
accedere al computer utilizzando quell'account.
Procediamo per piccoli passi. Cliccate sull'icona
che rappresenta un direttore d'orchestra (System
Configuration). Non utilizzate la prima icona a
disposizione, quella raffigurante differenti facce
(User and Group Configuration) poiché da qui non
è possibile una corretta impostazione dei
parametri relativi alle password. Selezionato il
direttore d'orchestra comparirà una schermata di
introduzione, leggetela attentamente e quindi
premete il pulsante "Quit". Nella schermata
successiva selezionate la voce "Account degli
utenti".

Utenti e Gruppi
Osservate la lista degli utenti già abilitati
all'accesso al vostro sistema, quindi premete il
pulsante "Aggiungi". Riempite i primi campi
inserendo il nome di accesso dell'utente (login) e il
suo nome completo, quindi, se volete,
assegnategli un gruppo di appartenenza. Per ora
non ci soffermeremo su cosa sono i gruppi,
argomento che affronteremo in seguito. Per ora
basti sapere che più utenti possono essere
aggregati in gruppi che possiedono privilegi
particolari; ad esempio, posso decidere che
cinque o sei utenti facciano parte del gruppo ftp e
in questo caso solo loro possono accedere al
sistema utilizzando il protocollo ftp. Detto questo,
passate alla finestra "Privilegi". In "Controllo
generale del sistema" abilitate la voce "Può
spegnere" mentre in "User account management"
attivate invece "gestore accessi PPP", così da

http://www.interpuntonet.it/Inter.Net/RIVISTA/40/linux/articolo_corretto40.html (2 di 4)03/04/2006 1.20.23


Consultazione della rivista Inter.Net sul world wide web.

abilitare il nuovo utente all'accesso a connessioni


Point to point protocol o ppp. Vi verrà ora chiesta
la password per l'utente: digitatela e premete
"Accetta". Finita la configurazione del sistema, per
la quale è necessario un accesso con privilegi
Super User, potrete ricollegarvi con l'utente
appena creato.

Nella rete
Ora apprestiamoci ad andare in rete. Per abilitare
il supporto internet non vi sono molte operazioni e
X facilita le cose. Da "Control Panel" selezionate
l'icona raffigurante un telefono e indicate al
sistema a quale porta seriale avete collegato il
modem. Tornate quindi a "System Configurator" e
scegliete "Rete". In "Basic host configuration"
impostate il nome che volete venga assegnato alla
vostra macchina; questo potrà essere il suo ip, un
nome di fantasia, qualsiasi cosa vogliate, vi serve
solo per rendere identificabile il vostro computer.
Ricordatevi solo di non utilizzare un nome che
possa aiutare a scoprire la password assegnata
ad un degli utenti abilitati all'accesso al sistema.
Nella schermata successiva, "Adaptor 1",
configurate la vostra scheda di rete inserendo,
nell'ordine, il nome del dominio in cui vi trovate,
l'indirizzo ip (se disponete di un ip fisso), la
Netmask, l'indirizzo della scheda di rete
(solitamente eth0) ed il tipo di scheda di rete.
Passate ora a "Name Server
Specifications" (DNS) ed inserite il nome del
dominio cui appartiene il name server ed il suo,
suoi, indirizzi numerici. Se il vostro computer
dipende da un gateway per l'accesso in rete, e a
internet, inserite il suo indirizzo ip in "Routing and
Gateways". Passate ora a "PPP/SLIP/PLIP",
scegliete la voce "Aggiungi" e quindi "PPP";
premete "Accetta". Impostate numero di telefono,
comprensivo di prefisso, selezionate l'opzione
"Autentificazione PAP", supportata dai maggiori
provider, e quindi impostate identificativo di
accesso e password, facendo attenzione al fatto
che la password risulterà perfettamente visibile a
chi vi starà alle spalle. Passate ora alla voce
"Customize". Nella finestra "Hardware" abilitate
l'opzione "Allow any user (de)activate the
interface", così da consentire anche a chi non è
Super User di attivare e disattivare la connessione
ppp. Nella finestra successiva, Communication,
inserite la stringa X3 tra AT e DT nel campo

http://www.interpuntonet.it/Inter.Net/RIVISTA/40/linux/articolo_corretto40.html (3 di 4)03/04/2006 1.20.23


Consultazione della rivista Inter.Net sul world wide web.

"Modem dial command", così da ignorare il


segnale di linea in chiamata. Linux ora è
configurato per l'accesso in rete e per attivare un
collegamento a internet attraverso il protocollo
ppp. Per verificare le impostazioni appena
assegnate alle interfacce di rete potete cliccare
sull'icona "Network Configuration".

Ora, si stampi
Passiamo alla configurazione della stampante,
accessibile attraverso l'icona rappresentante una
stampante laser. Dopo aver cliccato su "Add",
selezionate "Local Printer" e quindi due volte "Ok".
Lasciate tutto invariato e selezionate "Filter",
quindi specificate i parametri relativi alla vostra
stampante. Dalla finestra "RHS Linux Print System
Manager", all'interno del menu "Tests", potete
lanciare una pagina di prova per verificare la
corretta configurazione.
Se l'ora e la data assegnate al sistema non sono
corrette, potete sempre cambiarle agendo
attraverso l'icona raffigurante un orologio posto
davanti ad una agenda, "Time and Date". Un'unica
precauzione, attenti a non avere processi
particolari attivi al momento del cambio dell'ora o
della data, altrimenti potrebbero fare brutti scherzi.
A questo punto la configurazione del sistema può
dirsi pressoché completa.

...e poi ?
Nella prossimo numero vi spiegheremo come
attivare la connessione a internet, vi illustreremo
quali siti visitare, come scaricare ed installare i
differenti programmi di posta, navigazione, lettura
news e chat. Inoltre inizieremo a considerare più
attentamente il fattore sicurezza e cercheremo di
rendere pressoché impossibile l'accesso al nostro
sistema. Per evitare attacchi dall'esterno, infine,
proveremo anche a configurare un piccolo firewall
che blocchi i pacchetti indesiderati.

Riferimenti e links:
● Linux: facciamolo funzionare (Articolo)
● I Comandi Linux (parte prima) (listato)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/40/linux/articolo_corretto40.html (4 di 4)03/04/2006 1.20.23


Consultazione della rivista Inter.Net sul world wide web.

Linux: colleghiamolo in rete

Parte terza LINUX: COLLEGHIAMOLO IN RETE


Ecco come collegare il vostro sistema Linux alla
rete e personalizzare il vostro desktop sotto
Xwindow.

di Marco Giardini oesse@tecnogi.com

Come tutti i sistemi Unix (FreeBSD, BSDI, Sinix,


Aix...) anche Linux ha un'ottima implementazione
del protocollo tcp/ip e quindi delle risorse di rete.
Per la maggior parte dei lettori, la necessità vera è
quella di collegare il sistema tramite modem al
proprio provider ottenendo un indirizzo ip dinamico
(ovvero che varia ogni volta che vi collegate) e
una porta d'accesso ad internet.
Per iniziare a configurare il sistema, serve però la
conoscenza minima di un editor per poter creare e/
o modificare gli script di connessione e di
configurazione del sistema. Infatti, nonostante
esistano sulla rete pacchetti anche grafici per la
gestione del collegamento, è più istruttivo creare i
propri file a mano, imparando in questo modo
come il sistema interagisce con i file di
configurazione. Inoltre, in questo modo non si
rimane vincolati ad un particolare programma ma
si è in grado di scrivere i propri strumenti di
connessione su qualsiasi macchina, utilizzando
quelle applicazioni comuni che si ritrovano su tutte
le distribuzioni Linux.

Un editor: Vi

Vi (pronuncia vi-ai) è forse uno degli editor di testo


più antichi ed usati nel mondo Unix. Pur non
avendo un'interfaccia utente di facile utilizzo, la
sua snellezza e le sue potenzialità lo rendono uno
degli strumenti più diffusi nel suo genere, insieme
ad emacs, anche se l'apparenza spartana
sicuramente tiene lontani i meno esperti. Vediamo
allora di imparare i comandi base per iniziare ad
utilizzare questo programma, senza addentrarci
per ora nelle decine di combinazioni di tasti che
consentono di fare quasi di tutto ma che adesso è
prematuro considerare.
La sintassi per l'avvio dell'editor è semplicissima:

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (1 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

vi nome_file

per iniziare ad editare il file e/o crearlo se non


esiste. Attenzione però: Vi non scrive nulla fino a
quando non verrà dato il comando di scrittura; fino
a quel momento il testo scritto viene tenuto in un
buffer di memoria ed è quindi particolarmente
esposto al pericolo di andare perso in seguito ad
un calo di tensione nel computer o a
un'operazione azzardata.
Prima di dare un'occhiata all'elenco dei comandi
che utilizzeremo per editare i file di configurazione
per l'accesso alla rete, accenniamo alle modalità
operative di Vi. In pratica, premendo il tasto ESC
(il primo in alto a sinistra sulla tastiera) seguito da
alcuni caratteri si può passare dalla modalità
"insert", che consente di modificare un testo, a
quella "command" che permette di configurare
alcuni parametri dell'editor stesso, compiere
ricerche all'interno del file e altri comandi in
generale.
Ecco la lista:

ESC i entra in modalità inserimento


ESC o aggiungi una riga sotto il cursore ed entra
in modalità inserimento
ESC O aggiungi una riga sopra il cursore ed entra
in modalità inserimento
ESC x cancella la lettera sotto il cursore
ESC dd cancella la riga in cui si trova il cursore
ESC :w salva il file
ESC :w nome_file salva il file con nome nome_file
ESC :q esci da Vi
ESC :wq salva e esci
ESC /chiave per cercare la parola chiave
specificata dopo /. Usare poi n e p per ricercare le
ulteriori istanze, seguenti o antecedenti, della
parola.

Fate qualche prova: cancellate, salvate,


aggiungete caratteri e muovetevi lungo il testo
utilizzando i tasti freccia. Una volta che vi sarete
impratichiti dei comandi base dell'editor, passate
alla prossima sezione, ovvero come si configura
Linux per accedere ad internet.

Colleghiamoci al provider!

Dato che la quasi totalità dei provider nazionali


utilizza l'autenticazione via chap / pap e fornisce i

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (2 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

propri utenti di un indirizzo dinamico, creeremo


degli script di collegamento che possano
funzionare tramite questo tipo di autenticazione.
Prima di iniziare, però, ricordiamo che a causa
della radicalità degli interventi è necessario
accedere a Linux come root, l'unico utente con
tutti i permessi per l'editing dei file di sistema
Il primo file da modificare è sicuramente

/etc/resolv.conf

nel quale il sistema può trovare gli indirizzi dei dns


da utilizzare per risolvere gli indirizzi web nei loro
corrispondenti ip numerici. Se questo file non
esiste o è mal configurato, Linux non sarà in grado
di collegarsi ad alcuna macchina, rimanendo come
"cieco" a meno di non inserire direttamente
indirizzi in formato numerico, sicuramente molto
difficili da ricordare. Qualora il file non fosse
presente, createlo utilizzando vi (vi /etc/resolv.
conf).
La sintassi con la quale vanno scritte le
informazioni nel file resolf.conf è alquanto
semplice:

search dominio.isp
nameserver ip dns1
nameserver ip dns2
nameserver ip dns3

ove dominio.isp è il dominio del vostro provider


(per esempio tin.it o flashnet.it) ed i vari ip dns#
sono gli ip numerici dei dns che avete intenzione
di usare.
Inseriti i dati, passiamo ad editare il file /etc/ppp/
options, che contiene le opzioni riguardanti il
collegamento telefonico con il fornitore di
connettività. Aprendo il file /etc/ppp/options
dovreste leggere più o meno una schermata di
questo tipo:

/dev/ttyS0 #porta del modem


115200 #velocità della porta seriale collegata al
modem
debug #per avere una traccia su file delle
operazioni effettuate dal pppd
lock #per impedire ad altre applicazioni oltre al
pppd l'utilizzo della porta di comunicazione del
modem
modem #per utilizare i comandi modem (at)
crtscts #per utilizzare il flusso di controllo

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (3 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

hardware
defaultroute #per aggiungere una route alla tavola
di routing del sistema
asyncmap 0 #specifica che caratteri di controllo
non devono essere ricevuti sulla linea del modem
remotename name.it #configura il nome del
sistema remoto ai fini dell'autenticazione
mtu 552 #imposta la dimensione dei pacchetti in
trasmissione
mru 552 #imposta la dimensione dei pacchetti in
ricezione

Non vi preoccupate nel leggere che la porta cui è


collegato il modem è /dev/ttyS0 (o, con una
obsoleta definizione, dev/cua0): si tratta della
solita vecchia seriale che in Dos e Windows viene
definita com1 o com2, mentre in Linux prende il
nome di /dev/ttyS0 o /dev/ttyS1.
Inoltre, ricordate che "name.it" va sostituito con il
dominio del vostro provider che, nel caso fosse ad
esempio flashnet, assume il valore "flashnet.it"
Ora bisogna inserire lo username e la password
assegnavi dal provider all'interno del file

/etc/ppp/pap-secrets

Tali valori saranno passati automaticamente al


vostro isp che li verificherà e, in caso di risposta
positiva provvederà, a connettervi al suo sistema.
La sintassi è molto semplice:

username * password

Se, ad esempio, il vostro username è pippo e la


password pluto, dovrete scrivere:

pippo * pluto

Ed eccoci infine alla creazione dello script che


lancia la connessione al provider. Sempre
utilizzando Vi, create il file di collegamento
direttamente nella directory /usr/local/bin, in modo
tale che possa essere utilizzato da tutti gli utenti
che hanno inserito nella variabile d'ambiente
PATH questo percorso, che viene di solito
utilizzato per installare i programmi non di sistema.
Scegliete un nome abbastanza corto e semplice
da ricordare, magari ispirato al vostro provider e
data il comando

vi /usr/local/bin/+

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (4 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

nome_file_script

Cosa dovrete scrivere? Prendete ad esempio le


seguenti righe:

#!/bin/bash
/usr/sbin/pppd connect '/usr/sbin/chat -v ""
ATDTnumero_telefono CONNECT ""' user
username -d -detach &

dove numero_telefono è il numero di telefono che


deve essere chiamato dal vostro modem e
username lo stesso definito nel file pap-secrets
(nell'esempio di prima pippo).
E' da sottolineare che il demone pppd, che si
occupa delle connessioni via tcp/ip, può essere
eseguito esclusivamente dall'utente root. Esistono
metodi per modificare i permessi e renderlo
eseguibile anche da altri utenti che non hanno tutti
i privilegi dell'amministratore del sistema, ma non
è ora il momento di trattarli.
Limitiamoci a definire i permessi di esecuzione
corretti affinché possa essere lanciato, utilizzando
il comando

chmod 744 /usr/local/bin/+


nome_file_script

che definisce i permessi di lettura, scrittura ed


esecuzione per l'utente root (che è il proprietario
del file) e di sola lettura per gli utenti del gruppo e
per tutti gli altri.
A questo punto per lanciare il collegamento al
provider (che utilizzi sia il pap come
autenticazione e assegni un indirizzo ip dinamico),
basterà semplicemente digitare nome_file_script
ed aspettare pochi secondi per sentire il modem
iniziare a emettere qualche rumore.
Per verificare se la connessione è stata attivata,
basta digitare

ifconfig ppp0

ed osservarne l'output del tipo:

ppp0 Link encap:Point-Point Protocol


inet addr:212.216.65.190 P-t-P:151.99.115.18
Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:552 Metric:1
RX packets:237 errors:0 dropped:0 overruns:0
TX packets:213 errors:0 dropped:0 overruns:0

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (5 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

Questo signfica che il collegamento è stato


effettuato con esito positivo al server
212.216.65.190 e che alla nostra macchina è stato
abbinato l'ip 151.99.115.18.
Un ultimo metodo di verifica, utile specialmente se
si verificano dei problemi di connessione, consiste
nell'andare a leggere in tempo reale i messaggi
che i processi scrivono nei file di log. Al nostro
scopo basterà andare a leggere il file messages
tramite l'apposito comando:

tail -f /var/log/messages

Se tutto è in ordine e non ricevete messaggi di


errore, vuol dire che siete pronti per navigare!

Configuriamo le interfacce grafiche

I gestori di finestre usati ed installati in Linux sono


molti e variano in funzione delle distribuzioni
utilizzate. RedHat installa fvwm95, altre installano
fvwm1

Screen-fvwm.jpg: ecco come può apparire il


desktop con Fvwm

ed altre ancora permettono di scegliere il window


manager preferito al momento dell'installazione.
In queste pagine impareremo ad usarne solo due,
giusto per familiarizzare con questo genere di
programmi. Il primo è Fvwm1, uno dei più vecchi e
robusti windows manager, mentre il secondo è
Windows Maker; entrambi hanno il vantaggio di
essere leggeri, veloci e semplici da gestire.

Fvwm1

Sviluppato quando ancora i processori non


avevano la potenza di calcolo dei chip dell'ultima
generazione e la ram costava molto più di ora,
Fvwm1 è uno dei manager più leggeri in
circolazione, pur senza essere sorpassato; oltre
alla leggerezza e all'affidabilità, la sua lunga
carriera lo ha dotato di semplici comandi e una
configurazione di base intuitiva.
L'utilizzo di un gestore di finestre prevede sempre
l'esistenza di un file denominato .xinitrc nella
propria home directory nel quale occorre
specificare al sistema quale window manager si

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (6 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

intende utilizzare; nel caso non esista, il sistema


carica di default il file xinitrc presente in /etc/X11/
xinit/.
Per utilizzare Fvwm, bisogna quindi dotarsi di un
file .xinitrc ed editarlo, specificando al suo interno
che si vuole utilizzare proprio quel manager
particolare.
Scorrendo il file in questione, sostituite
all'eventuale dicitura fvwm95 (se è questo il
gestore di default utilizzato dal sistema) la stringa
fvwm; per comodità vi ricordiamo che nel 99% dei
casi, il nome del window manager viene
specificato nell'ultima riga del file.
Dopo avere indicato quale strumento utilizzare, è il
momento di configurarlo tramite il file .fvwm che va
collocato nella home directory dell'utente, dato che
in un sistema Linux ogni utente può utilizzare un
window manager differente e una configurazione
propria ed è quindi necessario specificare i dettagli
a livello di singolo utente, inserendoli nella sua
directory.
Se non è presente alcun file .fvwm, viene utilizzata
una configurazione di default che si trova in /etc/
X11/fvwm/system.+
fvwmrc; ogni modifica apportata a questo file si
ripercuoterà su tutti gli utenti che pur utilizzando
Fvwm non abbiano creato un file .fvwm a parte. Il
nostro consiglio rimane comunque quello di
personalizzare unicamente il proprio file,
ricopiando /etc/X11/fvwm/system.+
xinitrc nella propria home directory e
rinominandolo .fvwmrc.
Il file è abbastanza lungo e a prima vista
complesso ma con un minimo di attenzione vi
renderete conto che la sintassi usata è molto
semplice ed intuitiva ed inoltre anche molto ben
commentata.
La prima parte definisce i colori delle finestre, dei
menu, delle zone evidenziate e del pager: per
ognuno di questi oggetti sono definiti i colori di
background e foreground (sfondo e testo), che
possono essere scelti grazie a tool quali xcolors.
Segue poi la sezione dedicata ai font da utilizzare
sulle finestre e nei menu, poi quella relativa
all'emulazione di MWM, la sezione relativa al
posizionamento e l'attivazione delle finestre e,
dopo la parte dedicata alle icone associate ai
programmi, arriverete al blocco dedicato ai menu
personalizzabili.
Se avete già lanciato l'ambiente grafico digitando

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (7 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

startx, avrete notato che utilizzando il tasto sinistro


del mouse compare un menu con alcune voci che
a loro volta aprono nuovi sottomenu. Il nome del
menu viene definito con la seguente sintassi:

Popup "nome menu"


Title "titolo del menu"
Exec "programma" exec comando &
EndPopup

La funzione Popup identifica il nome del menu nel


quale sono contenuti i nomi dei file eseguibili, con
le eventuali opzioni. Un tipico esempio è il
seguente:

Popup "Shells"
Title "Shells"
Exec "Xterm (7x14 font)" exec /usr/bin/X11/xterm -
sb -sl 500 -j -ls -fn &
Exec "Color Rxvt (VT100 emulator)" exec /usr/bin/
X11/rxvt -fn 7x14 -ls &
Exec "Color Xterm (7x14 font)" exec nxterm -sb -sl
500 -j -ls -fn 7x14 &
EndPopup

Come si può vedere dall'esempio, il menu Shells


contiene tre eseguibili: Xterm, Color Rxvt e Color
Xterm. La prima parte (Exec "Xterm (7x14 font)") è
il nome con cui il file apparirà nel menu mentre la
seconda (exec /usr/bin/X11/xterm -sb -sl 500 -j -ls -
fn &) esegue il programma specificato dopo exec
(in questo nostro esempio xterm). I valori
preceduti dal simbolo "-" sono le opzioni con cui
xterm sarà eseguito.
Se si vuole inserire un separatore tra le diverse
voci dei menu, basterà utilizzare Nop "" (senza
spazi tra gli apici). Una volta terminato un menu
basta chiudere il blocco di codice con la parola
chiave EndPopup.

Window Maker

Giunto ormai alla release 0.20.1, questo window


manager si sta diffondendo sempre di più grazie
alla sua semplicità d'uso ed alle sue capacità
grafiche. L'installazione è davvero intuitiva
(partendo dai binari precompilati: basta eseguire il
comando wmaker.inst e rispondere alle poche
domande poste dallo script e il gioco è fatto.
Grazie all'utility Wprefs,

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (8 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

presente sul desktop, sarà poi possibile eseguire


tutta la configurazione nei minimi dettagli, fatta
eccezione per i menu che, utilizzando questo
strumento, devono essere riscritti completamente.
Per ovviare a questo inconveniente, basterà
editare a mano il file ~/GNUstep/Library/+
WindowMaker/menu inserendo e/o modificando le
voci esistenti.

Come per Fvwm, anche Window Maker ha la


possibilità di gestire menu e sotto menu in
maniera molto semplice: in questo caso
l'identificazione di un blocco di istruzioni per la
creazione di un menu viene identificato da
un'etichetta inserita fra doppi apici (ad es.
"Applicazioni") seguita dalla parole chiave MENU.
Le righe successive devono contenere, tra doppi
apici, il nome del programma che si vuol far
comparire sul menu seguita dall'istruzione EXEC
ed il nome del binario da eseguire. Arrivati alla fine
del menu, chiudetelo riportando l'etichetta, sempre
fra doppi apici, seguita dalla parola chiave END.
Facciamo un esempio, costruendo un menu
Applicazioni contenente xterm, Netscape e Gimp:

"Applicazioni" MENU
"Xterm" EXEC xterm
"Netscape" EXEC netscape
"GIMP" EXEC gimp
"Applicazioni" END

Se volete una soluzione più articolata, è possibile


creare dei sotto menu, annidando i blocchi di
codice uno dentro l'altro. In questo esempio, il
menu Graphics è un sotto menu di Applications e
contiene i vari programmi Gimp, XV, Xpaint e Xfig.

"Applications" MENU
"Graphics" MENU
"Gimp" EXEC gimp >/dev/null
"XV" EXEC xv
"XPaint" EXEC xpaint
"XFig" EXEC xfig
"Graphics" END
"LyX" EXEC lyx
"Netscape" EXEC netscape
"Ghostview" EXEC ghostview %a(Enter file to
view)
"TkDesk" EXEC tkdesk
"Applications" END

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (9 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

In poche linee di codice, come avete potuto


vedere, è possibile aggiungere o rimuovere
qualsiasi programma al vostro menu iniziale, il
tutto in pochi secondi. In più, la funzione di
"dockit" (l'icona in alto a destra), vi consentirà di
avere direttamente sul vostro desktop le icone dei
programmi più utilizzati: vi basterà attivare un
programma e trascinare con il mouse la sua icona
su dockit.

Un ultimo accenno in chiusura alla


personalizzazione dei colori, del mouse, delle
finestre e di tutto ciò che riguarda l'ambiente di
Window Maker; non c'è bisogno di dire molto:
basta cercare su internet il programma
wmakerconf e il gioco è fatto!

Riferimenti e links:
● Linux: colleghiamolo in rete (Articolo)
● Internet Ready to go! (riquadro)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/corso_linux_corretto.html (10 di 10)03/04/2006 1.20.24


Consultazione della rivista Inter.Net sul world wide web.

Linux: sfruttiamo le risorse di rete

Parte quarta Linux: sfruttiamo le risorse di rete


Una rapida carrellata sui client ftp ed irc con le
spiegazioni per poterli usare meglio.
di Marco Giardini<oesse@tecnogi.com>

Nei numeri precedenti abbiamo imparato ad


installare una distribuzione Linux (la Red Hat), a
configurare l'ambiente grafico (Xfree) e il Window
Manager ed infine a collegarci ad un provider.
Queste operazioni sono solo la base di partenza
per poter avere una macchina in "rete" in tutto e
per tutto sostituibile a quella con il caro
Windows95/98.
Il punto debole di un sistema Linux nei confronti
del ben più famoso Windows95 sta, purtroppo per
i neofiti, nella non facile ed immediata
configurabilità del sistema e dei suoi applicativi.
Microsoft ha sviluppato negli anni una interfaccia
utente comoda e immediata, ricca di bottoni e
menu, mentre Linux (e come lui la maggior parte
dei sistemi operativi Unix) sta arrivando a questi
risultati solo ora.
Qualcosa si sta muovendo anche dal punto di
vista della semplice installazione dei programmi
visto che le maggiori distribuzioni (Red Hat,
Debian, Suse e Slackware, solo per citare le
maggiori) hanno implementato diversi tipi di
pacchetti che, alla stregua di un unico file
compresso in stile Windows, si auto installano,
verificando anche l'esistenza sul sistema delle
librerie e/o di altri pacchetti sui quali il nuovo
programma si basa. Debian, in particolare, ha
messo a punto una sorta di configuratore
automatico che dopo l'installazione di un
pacchetto consente di scegliere i parametri
necessari per il suo buon funzionamento, il tutto
tramite semplici domande.
A parte questa digressione sullo user friendly, se
avete seguito le lezioni finora esposte vi troverete
con un sistema abbastanza "amichevole", in grado
di portarvi su internet e dotato delle principali
applicazioni, come un navigatore grafico
(Netscape) o testuale (Lynx), i quali, tra l'altro, vi
consentono di navigare ne più ne meno come
avete sempre fatto in Windows95.
Ma la rete non è solo navigare: vi permette di
utilizzare protocolli diversi quali irc ed ftp oltre al

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (1 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

comodissimo telnet. Come fare in Unix a sfruttare


questi servizi che, specialmente per irc, sono stati
resi di utilizzo semplificato per gli utenti Windows?
Diamo un'occhiata ai prodotti che sono presenti in
ambito Linux, programmi che possono essere
facilmente installati e configurati e che sono, tutto
sommato, di semplice utilizzo.

FTP
Il protocollo ftp permette di "uploadare" ed
"downloadare" (caricare e scaricare) file da una
macchina remota alla vostra e viceversa. Ovvero
vi permette di prendere file presenti su di una
macchina collegata in rete e anche, se ne avete i
permessi, di depositare vostri file su quella
macchina.
Esistono diversi client ftp disponibili per Linux, sia
in formato RedHat (estensione rpm) che in
formato Debian (estensione deb), nonché in
formato sorgente pronti per essere compilati e resi
così eseguibili.
Solitamente, l'installazione base di Linux prevede
un semplice client testuale eseguibile da console o
xterm; il suo utilizzo è abbastanza semplice: basta
digitare ftp seguito dall'indirizzo da raggiungere,
oppure potete scrivere solo ftp e dopo dare il
comando open nome_server (ad esempio, ftp ftp.
tecnogi.com oppure solo ftp ed al prompt "open ftp.
tecnogi.com").
Subito un consiglio: se ci sono delle macchine a
cui accedete spesso, può essere comodo inserire
un alias nel file /etc/hosts, in modo da poterle
raggiungere più facilmente. Ad esempio, per
raggiungere il sito ftp.tecnogi.com non server
scrivere "ftp ftp.tecnogi.com" ma si può ovviare
utilizzando un alias "tecnogi". Aggiungendo nel
file /etc/hosts questa riga:

195.22.104.11 ftp.tecnogi.+
com tecnogi

non solo potrete collegarvi digitando solamente


"ftp tecnogi" ma avrete un vantaggio in più non
indifferente. Infatti, nel caso in cui il server dns da
voi utilizzato avesse qualche problema, il vostro
sistema non ne risentirà dato che non avrà
bisogno di collegarsi ad esso per ottenere l'ip
numerico di ftp.tecnogi.com, ma lo ritroverà nel file
che abbiamo modificato.

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (2 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

Una volta collegati, comunque, vi sarà chiesto lo


user name e la password; apriamo una parentesi:
molti sistemi consentono ftp anonimo, ovvero non
necessitano che lo user che si collega abbia un
account presso la macchina remota. Inserendo
come user "anonymous" e come password il
proprio indirizzo di posta elettronica, (e mi
raccomando, non usate indirizzi falsi, è solo una
questione di correttezza verso chi vi sta ospitando)
avrete accesso alla sezione pubblica della
macchina.
Una volta collegati all'indirizzo preferito, vi
troverete un prompt del tipo

ftp>

dal quale potrete eseguire alcuni comandi molto


simili a quelli presenti in una shell Unix. Per
visualizzare il contenuto di una directory, ad
esempio, utilizzate il comando ls, per muovervi
usate cd e, molto importante, per prendere un file
affidatevi a get. Per un aiuto in linea, invece,
provate a scrivere help e sarà visualizzata la lista
dei comandi che avete a disposizione; per
informazioni più dettagliate sui comandi, digitate
help comando (per esempio "help get" o "help
put") ed il sistema vi fornirà un manuale del
comando con la giusta sintassi e tutte le opzioni
correlate..
Facciamo un esempio pratico e supponiamo di
collegarci al sito ftp.tecnogi.com, entrare nella
directory /pub/linux/WindowMaker e prelevare il
file test.tar.gz. La serie di comandi sarà

ftp ftp.tecnogi.com
[login:] anonimous
[password:] pippo@pluto.it
cd /pub/linux/WindowMaker
get test.tar.gz

Se non ricordiamo il nome esatto del file,


possiamo cercare di individuarlo con il comando ls
seguito da una porzione rilevante del nome e
utilizzando gli asterischi, o wildcards, come
mostrato nella seconda puntata del corso.
Riepilogando:

ls test* Mostra tutti i file che iniziano per test


ls *tar* Mostra tutti i file che contengono tar nel
nome
ls *gz Mostra tutti i file che finiscono per gz

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (3 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

Riassumiamo ora i comandi più utilizzati in una


sessione ftp:

Ls lista il contenuto della dir corrente


Get nomefile preleva il file nomefile
Put nomefile spedisci il file nomefile al sistema
remoto
Hash visualizza una serie di # durante il
trasferimento
Prompt on/off obbliga all'uso di un prompt
interattivo (on ed off)
Binary imposta il trasferimento in formato binario
Ascii imposta il trasferimento in formato ascii
Open nomeserver apre la connessione al server
specificato
Mget file1..file 2...* prende tutti i file specificati (si
può usare con le wildcards *)
Mput files invia tutti i file specificati (si può usare
con le wildcards *)
Lcd cambia la directory sulla macchina locale

Trasferire file è, a volte, un'operazione faticosa.


Spesso, durante lo scaricamento di programmi di
grandi dimensioni si finisce per essere disconnessi
da server proprio a pochi minuti dalla fine. Come
fare per non dovere ricominciare tutto da capo?
Alcuni server, e alcuni client, prevedono
un'opzione di resume che consente proprio di
continuare il prelievo dei dati dall'ultimo byte
scaricato, evitando in questo modo di perdere
ulteriore tempo in rete. Come abbiamo detto, non
tutti i server e client supportano questa opzione e
anche un leader come Netscape non prevedere
una funzione di resume, cosa che costituisce
sicuramente un punto a sfavore di questo ottimo
navigatore.
Esistono comunque parecchi client ftp di buon
livello sia testuali, come ftp, Ncftp o Cftp, che
grafici, come ad esempio Wxftp o Xftp.
Per ovviare a questo inconveniente, consiglio
l'utilizzo di client (testuali) come Ftp, Ncftp o grafici
come Xftp.
Abbiamo appena accennato ai client testuali: sono
poveri come interfaccia utente ma sono veloci e
affidabili e consentono l'uso di wildcards, e, nel
caso di Ncftp, rendono possibile il download di
interi alberi di directory (get -R file*) e consentono
di utilizzare un comodo bookmark nel quale
memorizzare gli indirizzi delle macchine cui vi

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (4 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

siete già collegati, associandovi un alias. Comodo,


vero?
Se non amate i client testuali ma preferite sfruttare
a fondo le possibilità grafiche del vostro sistema,
allora vi conviene provare Wxftp o Xftp.
Wxftp, in particolare è di facile utilizzo per gli utenti
provenienti dal mondo Microsoft, dato che ricorda
molto Wsftp, un client freeware molto diffuso in
ambiente Windows. Come per il proprio
"omonimo" Wxftp consente di creare una rubrica
di profili nella quale possono essere catalogati i siti
visitati, con password utilizzare, directory remote e
locali e altri dettagli. Una nota importante: dopo
aver editato un profilo salvatelo immediatamente
in modo da evitare di perdere i dati. Oltre alla
rubrica è presente un'ulteriore interessante
sezione che riguarda le opzioni del client tramite le
quali è possibile personalizzarne il comportamento
decidendo, ad esempio, quanti tentativi di
riconnessione effettuare, quanto tempo lasciare
trascorrere fra un tentativo e l'altro, scegliendo se
abilitare gli effetti sonori e quale password inviare
in caso di ftp anonimo.
Definiti i parametri di configurazione e impostati
alcuni profili e' tempo di provare il primo
collegamento. Semplice, fin troppo. Il client è
diviso, a grandi linee, in due finestre: la parte a
sinistra consente di spostarsi fra le directory dei
propri dischi locali, e di selezionare i file che si
vogliono inviare, mentre a destra potrete navigare
sui dischi remoti e scegliere quali programmi
scaricare sul vostro computer. In mezzo due
frecce, una rivolta a destra e una a sinistra, che
indicano da dove a dove devono avvenire i
trasferimenti. Basta scegliere con un clic il file da
trasferire, premere il bottone con la freccia
appropriata e il trasferimento avrà inizio, segnalato
da una comoda finestra di stato che mostra i byte
già transitati e la velocità del collegamento.
Internet non è solo navigazione o scambio di file,
questo è noto. Spesso ci si incontra sulla rete per
fare quattro chiacchiere o per trovare una mano,
qualche consiglio. Irc è il modo ideale per parlare
in rete, tanto più che ora esistono programmi che
rendono semplice utilizzare questo modo di
comunicare anche in Linux, sia in ambiente
testuale che in quello grafico, per il quale esistono
client semplici da utilizzare e molto colorati.
Quali programmi scegliere per collegarsi alla rete
di irc? Anche qui bisogna seguire le proprie

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (5 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

preferenze: chi vuole chiacchierare da console,


con font di grosse dimensioni e senza troppi
fronzoli provi IrcII, installato da qualsiasi
distribuzione; chi, invece, preferisce sempre la
console ma vuole un minimo di colori può
utilizzare BitchX. Se invece ci spostiamo sotto X,
vi è una scelta ancora più altra con programmi
come Tkirc, Circus e Zircon, solo per citarne
alcuni.
Ma vediamo più da vicino questi client.

IRC ed EPIC
Di gran lunga i più usati, anche se testuali, IrcII ed
Epic sono semplici client che svolgono
degnamente il loro dovere nonostante abbiano
un'interfaccia molto carente. Entrambi sono, per
fortuna, abbastanza semplici da configurare: tutto
quello che c'è da cambiare va scritto il un file

.ircrc

che deve essere messo nella home directory


dell'utente. In questo file vengono salvate le
opzioni base del client quali il nickname da
utilizzare, il server a cui collegarsi, i canali nei
quali entrare allo startup del programma e altro
ancora. Tutti e due, inoltre, utilizzano un secondo
file, che di solito si chiama

/usr/lib/irc/ircII.server +

e che contiene l'elenco dei server irc cui


connettersi per aprire una sessione irc; nel caso in
cui il primo non sia disponibile, il client tenterà di
connettersi al seguente, fino a quando non avrà
trovato un server utilizzabile. Il file, comunque,
potrebbe avere nome diverso e trovarsi addirittura
in un differente percorso, secondo specifiche che
possono venire definite in fase di compilazione.
Il file .ircrc non è l'unico modo per definire il
comportamento di ircII o di Epic; esistono alcune
variabili d'ambiente che possono essere rilevate
da questi due programmi e sostituire addirittura le
impostazioni date nel file di configurazione. Ecco
un breve elenco di alcune di queste variabili:

IRCNICK - specifica il vostro nickname


IRCNAME - specifica il vostro nome
IRCSERVER - specifica il server di default a cui

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (6 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

collegarsi
IRCPATH - Specifica una lista di directory in cui
ricercare eventuali script
IRCRC - specifica un alternativa al file di
configurazione $HOME/.ircrc.

Come fare a specificare queste variabili?


Semplice; le variabili d'ambiente devono essere
scritte nel file di configurazione della shell che
state usando (.profile, .bashrc, .bash_profile) con
la sintassi:

Export variabile=valore

Anche per i client grafici si trovano molto


facilmente i binari compilati in formato rpm e deb,
pronti per essere installati utilizzando utility
apposite quali rpm, dpkg e alien tools. Volendo,
comunque, è sempre possibile prenderne i
sorgenti e compilarli a seconda delle proprie
esigenze.
Iniziamo quindi ad esaminare i vari programmi
partendo da quello che più sembra in grado di
rivaleggiare per semplicità e potenza con Mirc,
ovvero Tkirc. L'unico reale svantaggio di questo
client è dovuto alla necessità di installare le librerie
Tcl/Tk, che sono però facilmente reperibili
ovunque, anche sui cd dai quali avete installato il
vostro Linux. Per il resto, il programma ha
un'interfaccia utente davvero semplice da
utilizzare composta da due aree principali: la
prima, e più ampia, visualizza tutti i messaggi che
passano per il canale, mentre la seconda, una
sorta di colonna, mostra gli utenti collegati.
Cliccando con il tasto destro del mouse su un
nome è possibile, inoltre, effettuare delle azioni
sull'utente corrispondente, come iniziare una dcc
chat, lanciare un whois e molto altro ancora. La
barra dei menu in alto consente di visualizzare dei
menu a tendina attraverso i quali si accede alla
nutrita serie di opzioni e comandi che
caratterizzano il programma. Si può cambiare
server, entrare in un canale utilizzando una
finestra già aperta o aprirne una nuova,
disconnettersi, cacciare un utente o modificarne lo
stato. Insomma, avrete parecchio da
sperimentare, tutto però ben in ordine nei menu di
Tkirc.
La prima cosa da fare in assoluto è sicuramente
editare il file di configurazione

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (7 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

.tkirc

che deve risiedere nella home directory


dell'utente. Quando installate il file binario vi viene
copiato sul disco un esempio che dovrete
rinominare, modificare e spostare nella directory
appropriata.

Il file consta di diverse sezioni nelle quali vengono


definiti i differenti aspetti programma,
dall'interfaccia grafica alle modalità di
connessione, fino al comportamento stesso del
programma che risponde automaticamente a dati
"eventi". Possiamo, ad esempio, intervenire sulla
definizione dei font da usare, la dimensione dei
bordi delle finestre, i colori da impiegare, la
geometria delle finestre, quando segnalare
acusticamente un determinato evento ed altro
ancora. Tutti questi parametri possono essere
tranquillamente lasciati invariati, dato che le
impostazioni di default funzionano egregiamente,
mentre suggerisco di modificare la sezione che
riguarda il nickname e i server a cui collegarsi,
nonché la definizione dei canali di maggior utilizzo.

La parte riguardante i nickname viene definita in


questo modo:

Set preferred_nicknames {
"oesse" "defrag" "gigi_sull" "F-U-R-Y" "new_nick"
}

dove il nickname definito viene incluso tra doppi


apici. Nel caso non fosse possibile utilizzare
oesse, Tkirc tenterà di avviare una sezione irc
come utente defrag e così via fino a quando non
avrà trovato un nickname valido da utilizzare.
Ovviamente potete sostituire i nickname di default
o aggiungerne di nuovi, sempre utilizzando i doppi
apici e rimanendo all'interno della sezione definita
dalle doppie parentesi graffe.

Possiamo, in maniera analoga, definire un numero


di canali preferiti, che appariranno nel menu
apposito quando lancerete il programma. La
sintassi è la seguente:
Set preferred_channels {
"#linux-it" "#linux" "#unix" "#nuovo-canale"
}

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (8 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

dove il canale deve essere sempre compreso tra


doppi apici e preceduto dal cancelletto #.

Per i server, invece, utilizzate la sintassi:

Set preferred_servers {
{"irc.fun.uni.net" 6667} {"irc.tin.it" 6667}
{"new.irc.server" porta}
}

I server vengono specificati oltre che con il nome,


anche con il numero della porta a cui ci si deve
collegare (normalmente la 6667) e con una
sintassi identica a quella degli esempi precedenti.
La definizione della porta può anche essere
omessa ma quando un server opera ad un
indirizzo differente da 6667 è necessario
specificare questo parametro.
Se volete essere un po' più amichevoli e non
amate i messaggi predefiniti, potete scrivervi
qualche frase di saluto o commiato, oppure per
quando siete in away o quando qualche utente vi
da lo status di op, o meglio ancora, per quando
usate un salutare /kick su qualche lamer di
passaggio.
La sintassi in questi casi è la seguente:

Set preferred_signoffmessages {
"messaggio" "messaggio2"
}

Set preferred_partmessages {
"ciao" "a dopo" "saluti"
}

Set preferred_awayreasons {
"sono away" "non ci sono"
}

Set preferred_kickreasons {
"gioca altrove" "non riprovarci" "stattene fuori"
}

C'è molto ancora da configurare in Tkirc ma sono


perlopiù aspetti secondari che lasciamo a voi
sperimentare, dato che la sintassi con la quale
vengono definiti è più o meno simile agli esempi
visti finora; per questa sua flessibilità e
completezza Tkirc risulta a mio avviso uno dei
migliori client irc grafici.
Non esiste, ovviamente un solo programma per

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (9 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

chattare in rete. Un'ottima alternativa è Zircon


(catless.ncl.ac.uk) un altro client basato sulle
librerie Tcl/Tk (ultima release 8.0.3) e anch'esso
un ottimo approdo per chi proviene dal mondo
Microsoft.
L'interfaccia grafica di Zircon si ispira molto a
quella di Mirc per Windows95/98; il client è infatti
diviso in tre sezioni: la finestra del canale, la
finestra del server ed un piccolo pannello di
controllo. La prima finestra ha un valore
puramente amministrativo, e infatti si vedono
scorrere i messaggi di servizio del server cui si è
connessi, tramite i quali si può sapere chi si è
connesso, chi è entrato nel quale ci troviamo e se
la rete sta subendo delle disconnessioni. La
finestra del canale (che appare solo dopo che si è
entrati in un canale tramite il comando /join
#nome_canale da dare nella finestra server) è a
sua volta divisa in 4 aree ben distinte: in alto la
zona del topic, ovvero la descrizione che gli
operatori del canale hanno dato al canale stesso.
Sulla destra compaiono i nick usati dalle persone
intente a chiacchierare, in basso la zona nella
quale scrivere i messaggi e, evidente in mezzo, lo
spazio per leggere ciò che viene scritto dagli
utenti.

Come per Tkirc, Zircon permette di effettuare


azioni sugli utenti del canale unicamente
selezionandoli e cliccando il tasto destro del
mouse, che fa apparire un menu popup il quale
mostra ciò che è possibile fare in relazione al nick
scelto. Il suo file di configurazione (~/.zircon/
preferences) viene creato da Zircon stesso tramite
la procedura "configure" che trovate sul pannello
di controllo del programma. Da qui potete definire i
nick da usare ed i server, ma niente di più;
purtroppo non ha la stessa potenza di Tkirc ne di
IrcII ma la semplicità con cui può essere utilizzato
e la relativa povertà di opzioni con le quali
"giocare" lo rendono uno strumento ideale per chi
è alle prime armi.
Se non siete soddisfatti di Zircon, potete provare
Circus (www.nijenrode.nl), il quarto client irc che
andiamo a scoprire in questa breve carrellata, che
ha una buona interfaccia grafica, la più semplice
vista finora, dato che consta unicamente di due
finestre: la parte server e quella relativa al canale.
La prima presenta dei comodissimi bottoni che
eseguono le operazioni più elementari quali il "join

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (10 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

" del canale, il cambio del nick, il "quit" per uscire e


altro ancora. La parte canale è anch'essa divisa in
più zone, con i nick sulla destra, una sezione dove
scrivere ciò che si vuole comunicare agli altri, e
una zona molto ampia, al centro, nella quale
scorrono gli interventi pubblici; in basso invece c'è
una specie di status box dove appaiono le
comunicazioni di sistema del server cui si è
collegati. Anche per Circus esiste la possibilità di
effettuare particolari azioni su di un determinato
nick, utilizzando il tasto destro del mouse e
cliccando sul nick nel riquadro di destra. Potete in
questo modo molto comodamente iniziare una
conversazione privata (query) con un altro utente,
mandare file (dcc send) ed interrogare il server per
varie informazioni sugli utenti del canale quali
nome, client usato, ping ed altro ancora.
Circus ha un file di configurazione molto simile a
quello di Tkirc (.circusrc) ed anche lui, oltre a
definire la parte grafica come i font ed i colori,
imposta anche il nickname ed i server con una
sintassi molto semplice:

Set nick pippo


Set ircname "ciao, sono pluto"
Set ircserver {
Irc.fun.uni.net
Irc.tin.it
Irc.nonloso.it
Irc.newserver.com
Irc.tin.it:7000
Irc.newserver.it:porta
}

Come potete vedere anche in Linux chiacchierare


in rete diventa semplice grazie alla presenza di
programmi facili da utilizzare e molto flessibili.
Grazie all'utilizzo di finestre, mouse e pulsanti, il
loro uso non si discosta molto da quello dei client
per Windows e, anzi, consentono di godere di una
stabilità dell'applicazione decisamente maggiore.
Spero di avervi dato con queste brevi note una
infarinatura molto generale sui programmi
elencati, nozioni di base che vi consentiranno di
scegliere il client che fa per voi, configurarlo e
installarlo a dovere. Se volete saperne di più,
leggetevi la documentazione presente nel
manuale (man tkirc per esempio), oppure le note
comprese con il programma (solitamente nella dir/
usr/doc).

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (11 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

Per ora provate i programmi e fate la vostra scelta.


Il prossimo mese ci dedicheremo ai client di posta
elettronica e ai programmi per leggere le news,
addentrandoci sempre più nel fantastico mondo
Linux!

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/42/Linux/corso_di_linux_ultima_correzione.html (12 di 12)03/04/2006 1.20.26


Consultazione della rivista Inter.Net sul world wide web.

Linux: utilizziamo la posta.

Corso di Linux - Parte quinta


LINUX: UTILIZZIAMO LA POSTA
Impariamo a configurare ed utilizzare i client più
diffusi per la posta elettronica con Linux.
di Marco Giardini <oesse@tecnogi.com>

Una delle grandi comodità della rete, che hanno


permesso il suo veloce sviluppo e che viene
riconosciuta all'unanimità come una necessità
ormai insostituibile, è la posta elettronica. Grazie
ad essa, infatti, è possibile raggiungere in pochi
secondi un utente dall'altra parte del globo,
mandargli file in attachment di qualsiasi tipo,
contattare gli indirizzi trovati sulle pagine dei Web
visitati. Tutto questo è possibile utilizzando il
protocollo smtp (simple mail transfer protocol) in
una rete tcp/ip attraverso quelli che vengono
comunemente definiti mta (mail transport agent) e
mua (mail user agent). Ma vediamo cosa
significhino in dettaglio queste sigle. Se vogliamo
mandare una mail ad un amico (gianni@pippo.
pluto.it per esempio), abbiamo bisogno di un
programma che ci aiuti a scriverla, ovvero ci dia
una mano a definire il file di posta in un formato
tale per cui possa essere spedito, ricevuto ed
interpretato dalla macchina del destinatario. Come
forse già sapete, l'indirizzo di posta elettronica
consta del nome dell'utente (nel nostro caso
gianni) ed del nome della macchina (compreso il
dominio) presso cui quell'utente ha una casella
(pippo.pluto.it), il tutto unito da una chiocciola @
che in gergo si legge at (presso). In un'analogia
con la posta normale, il nome della macchina
rappresenta l'indirizzo ed il dominio la città.
Quindi, per mandare una lettera a Gianni che ha
un account sulla macchina pippo del dominio pluto.
it, basterà indirizzare la mail a gianni@pippo.pluto.
it.
Può darsi che l'amministratore del sistema abbia
deciso che tutte le macchine del suo dominio
(pluto.it) ricevano la posta su di un unica
macchina, ed avrà istruito il dns per poter fare ciò.
In questo caso non sarà allora necessario
specificare il nome della macchina, ma
unicamente il dominio. Ne segue che la mail che

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (1 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

mandiamo sarà indirizzata a gianni@pluto.it. Ma


per poter essere spedito e letto, un messaggio di
posta elettronica deve contenere un'intestazione
(header) un corpo (body) ed una busta (envelope).
Per poter fare questo, un programma apposito
(mua) ci permette di scrivere e mandare la mail
senza dover preoccuparci di come scrivere e
formattare la nostra missiva. Ci basta specificare il
destinatario, l'oggetto, includere eventualmente
dei file, scrivere la nostra mail ed inviarla. Il mua si
preoccuperà di fare il resto, tutto da solo senza il
nostro intervento; d'altronde . non fa altro che
questo e molti dei client che conosciamo si
occupano di decodificare l'intestazione, busta e
corpo senza che noi ce ne rendiamo conto. Sino a
questo punto la mail, anche se inviata, non è
ancora uscita dalla nostra macchina e il compito di
inviarla spetta ad un altro programma già citato,
ovvero mta. Il più comune di questi software è
sicuramente sendmail, seguito da qmail. Noi non
ci preoccuperemo oggi della configurazione di
questi importantissimi pacchetti in quanto le
distribuzioni più usate installano mta preconfigurati
che consentono quanto meno l'invio della posta.
Per le connessioni dial-up, ovvero per coloro che
si collegano saltuariamente al proprio provider
tramite modem, la ricezione di una mail diventa
più complessa in quanto l'ip che viene assegnato
è dinamico e cambia ogni volta. Come risulterebbe
difficile mandare una lettera a qualcuno che
cambia residenza ogni volta, lo stesso vale se il
nostro ip varia di connessione in connessione, il
che rende impossibile ricevere qualsiasi
messaggio. L'unica soluzione praticabile consiste
nel far arrivare la posta sul computer del provider
e poi prenderla da li e leggerla tranquillamente sul
nostro sistema.
Vediamo come fare, dando per prima cosa
un'occhiata ai programmi per trasferire le email dal
provider a casa vostra.

Fetchmail e Popclient
Quando ricevete la posta al vostro indirizzo presso
il provider avete comunque la necessità di
trasferirla in locale, sulla vostra macchina, per
poterla leggere, e per rispondere. Con Netscape le
cose diventano abbastanza semplice: le due
azioni di prelievo e di visualizzazione della posta
sono raggruppate in un unica operazione e la

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (2 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

configurazione della sezione mail di è davvero


intuitiva e quindi vi rimandiamo al menu Modifica/
Preferenze.
Altri programmi necessitano invece di avere già la
posta e diventa indispensabile installare un agente
in grado di prelevare i messaggi dal vostro
provider e inserirli nella mail box sul vostro
computer. Programmi di questo genere ne
esistono parecchi ma senza perderci in prodotti
sconosciuti affidiamoci ai due titoli più diffusi,
fetchmail e popclient.
La configurazione di fetchmail è: si tratta di
scrivere un file .fetchmailrc (come sempre i file di
configurazione terminano per rc ed iniziano con un
punto) che dovrà risiedere nella vostra home
directory, all'interno del quale dovrete scrivere i
comandi da far eseguire al programma.
Ammettiamo che la vostra posta arrivi presso la
macchina "posta.isp.it", che la vostra user sia
"utente" e la vostra password sia "segreta". In
questo caso il contenuto di .fetchmailrc sarà:

poll post.isp.it protocol POP3 username utente


password segreta flush

e per lanciarlo digitate:

[apollo ~] # fetchmail

mentre per popclient la sintassi è:

[apollo ~] # popclient -3 -u username -p segreta -


o /var/spool/mail/utente server.mail.isp

In questo caso, sia fetchmail che popclient fanno il


polling sulla macchina specificata, per lo user
utente con relativa password e rimuovono la posta
dal server del isp, d'ora in poi potrete usare un
mua per leggere i messaggi che si troveranno
nella directory /var/spool/mail/utente del vostro pc.

Pine e Mutt
Ora che abbiamo le email in locale è il caso di
leggerle ed eventualmente rispondere. Per questo
genere di operazioni esistono parecchi client, sia
grafici che testuali e la scelta su quale usare non
deve ricadere sull'utilizzo dell'interfaccia X, quanto
piuttosto sulla semplicità di utilizzo: individuate
quello che più vi aggrada ed usate sempre quello,
in modo da carpirne i segreti e trovarvi comodi.

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (3 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

Tra i client testuali non possiamo dimenticare Pine


e Mutt; il primo ricorda vagamente i programmi
DOS di una volta, con un menu iniziale da cui è
possibile selezionare le azioni da intraprendere.
Per utilizzare questo programma è sufficiente
lanciarlo da linea di comando e vedrete subito
apparire l'interfaccia un po' spartana. Nella parte
in alto a destra troverete il numero di messaggi
contenuti nella vostra casella di posta, mentre
proprio al centro dello schermo sono elencati i
menu principali, cui potete accedere premendo la
corrispondente lettera.
La prima cosa da fare per configurare un client
che sia in grado di funzionare correttamente è di
sicuro la definizione dell'indirizzo di posta
elettronica. Quasi tutti questi programmi
assumono di default la vostra login login@nome.
vostra.macchina (nome definito in /etc/hostname
ed in /etc/hosts). Se la macchina non e' connessa
in rete permanentemente, il nome da voi scelto
sarà molto presumibilmente fittizio in quanto non
registrato in nei dns, e quindi inutilizzabile. Anzi,
se attivate la connessione via modem, vi
renderete conto che l'ip assegnatovi è registrato
nel dns con un altro nome, diverso da quello
scelto da voi. Per ovviare a questo problema
dovrete modificare l'impostazione della voce
REPLY TO address, in modo che chi riceve la
vostra mail veda un indirizzo di risposta valido. Per
modificare i parametri di funzionamento di Pine
dovete quindi accedere al menu di setup
premendo il tasto S che farà comparire un
ulteriore menu attraverso il quale accederete alle
varie opzioni messe a disposizione del
programma.

Scegliendo la opzione C si arriverete alla sezione


dedicata al client vero e proprio: qui vanno
specificati nome e cognome, basta posizionarsi
alle voci interessate e confermare con invio, il
server smtp (localhost se ne avere uno installato
sulla vostra macchina) e il server nntp nel caso
vogliate usare Pine come lettore di news.
Tutto qui. Con queste poche specifiche avete fra
le mani un ottimo programma per la gestione della
posta funzionante. A dire il vero, le voci presenti
nei vari menu sono davvero parecchie e
consentono di adattare questo client alle vostre
esigenze, ma questo sta a voi; date un'occhiata e
decidete cosa aggiungere alla confiturazione di

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (4 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

base.
Una volta finito di impostare tutte le opzioni che vi
interessano, uscite dal menu di configurazione
premendo E, confermando con il tasto y. Per
essere sicuri che le modifiche apportate siano lette
dal client, uscite (con q) e rilanciate pine. A questo
punto siete pronti per poter scrivere la vostra
prima mail o leggere quelle già prelevate.
Utilizzate C (compose) per attivare la parte di
editor che permette l'intestazione e la scrittura di
una mail e vi troverete di fronte ad una schermata
di questo tipo:

To :
Cc :
Attchmnt :
Subject :
-----------Message Text -------

Qui dovete inserire l'indirizzo del destinatario (o gli


indirizzi nel caso si voglia raggiungere più
persone, separandoli con una virgola), eventuali
persone cui spedire delle copie (Cc) e l'oggetto
della vostra prima mail, semplicemente
muovendovi tra i vari campi con l'utilizzo del tasto
invio o attraverso i tasti di direzione. Nel caso
abbiate la necessità di mandare anche delle bcc
ovvero blind carbon copy (in modo che il
destinatario non sappia chi oltre a lui ha ricevuto la
mail) utilizzate la combinazione di tasti Control + r:
in questo modo la parte di intestazione verrà
arricchita di altre opzioni che comprendono anche
il bcc, come da voi richiesto. Pine offre, inoltre, la
possibilità di mandare allegati (attachment)
utilizzando la sequenza di tasti Control+j e
selezionando il file con Control+t Ora è tempo di
scrivere il testo del vostro messaggio.
Posizionatevi al di sotto della linea tratteggiata e
digitate quello che volete, proprio come se vi
trovaste in un editor qualsiasi: premendo invio
andrete a capo e per cancellare basta utilizzare il
tasto delete o backspace. Finito il messaggio è
tempo di firme. Se non volete scrivere ogni volta la
stessa cosa, o se vi piacerebbe inserire un ASCII
art per abbellire la corrispondenza, è meglio
affidarsi alla gestione delle signature (firme):
editando un file .signature (o anche di nome
diverso, basta specificarlo in sede di
configurazione) nella vostra home directory, Pine
aggiungerà il suo contenuto alla fine di ogni email.

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (5 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

Ora è tempo di spedire la vostra prima


composizione premendo i tasti control+x e
confermando con y; la vostra mail sarà inviata al
server smtp specificato nella configurazione e da
qui al destinatario finale.
Vediamo adesso come leggere la posta che
qualcuno vi ha inviato. Dal menu principale
(raggiungibile con il tasto M) selezionate I (Folder
Index). Vi apparirà l'elenco delle email, che potrete
scorrere con le frecce, dal quale potrete
selezionare quella che vorrete semplicemente
posizionandovici sopra e premendo invio. Avete
trovato un messaggio interessante cui vale la
pena dare una risposta? Con R Pine Pine attiverà
la modalità di replay, chiedendovi se volete
includere il testo originale nel vostro messaggio e
se avete intenzione di rispondere a tutti i
destinatari della mail arrivata (se più di uno); ora
editate la vostra risposta e il gioco è fatto.
Avere tanti corrispondenti può diventare un
problema, dato che ricordare a memoria l'indirizzo
di ognuno non è cosa semplice. Per fortuna è
possibile ricorrere all'address book (rubrica),
selezionandolo dal menu principale, che vi
consente di associare uno pseudonimo ad ogni
indirizzo email registrato e di poter inviare un
messaggio alla persona giusta digitandone solo
l'alias. Allo stesso modo diventa semplice creare
elenchi di indirizzi (liste) a cui mandare una email
simultaneamente, mentre si rivela di davvero
comoda la possibilità di aggiungere nuovi contatti
nella rubrica, estraendo le informazioni
direttamente dai messaggi arrivati.
Ricordiamo infine che Pine mantiene una copia
delle mail inviate in uno specifico folder gestibile
attraverso l'opzione L dal menu principale. Per
vedere la posta inviata premete L dal menu
principale e selezionate il folder desiderato.
Pur non essendo di gestione comodissima, Pine
prevede la possibilità di utilizzo dei newsgroup. Se
da menù principale si seleziona L (Folder List),
verranno visualizzati i cartelle presenti sulla
macchina tra cui anche quella relativa ai
newsgroup. Si dovrà dapprima scaricare la lista
dei newsgroup ricevuti dal vostro server tramite la
scelta subscribe (A), selezionare ciò che si vuole
leggere desiderati tramite L ed X per poi poterne
vedere i contenuti e trattare i messaggi come se
fossero delle normalissime email.
Se non siete soddisfatti di questo programma,

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (6 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

potete rivolgervi a Mutt, un client un po' più difficile


da configurare ma molto semplice da utilizzare. In
questo caso dovrete editare un file .muttrc e
metterlo nella vostra home directory. A
semplificare leggermente le cose ci pensa un
esempio distribuito insieme al programma stesso:
copiatelo e modificatelo solo dopo avere letto il
manuale (man mutt).
Esaminando la schermata che appare all'utente,
possiamo notare nella parte alta un sommario dei
comandi che si possono utilizzare: m per scrivere
una mail, r per fare il reply, s per salvare e così
via. Mutt ha un approccio molto più interattivo
nella creazione della mail, ed evidenzia nell'ultima
riga un campo della intestazione alla volta che
dovrà essere completato da voi. Compilata
l'intestazione verrà richiamato l'editor di sistema,
definita nella variabile EDITOR, che servirà per la
composizione della mail stessa (export
EDITOR=vi nel vostro file di configurazione della
shell come .bashrc per esempio). Se utilizzate vi,
l'editor di default, potete uscire con esc ZZ
(maiuscole) ed a questo punto spedire il tutto
digitando y, come appare dalla riga di menu in alto
sul client.
Se volete avere una buona veduta d'insieme di
tutti i comandi e scorciatoie per accedere alle varie
funzioni del programma, provate a premere il tasto
h e a richiamare la pagina di help. Lasciamo Mutt
con un ultimo consiglio: utilizzando la
combinazione Control+b potrete seguire le url
presenti nella messaggio che state leggendo;
ovviamente dovete aver definito un browser nel
file di configurazione del programma, ma questo è
il minimo per usufruire di una opportunità così
esclusiva tra i client testuali.
Molte persone non amano particolarmente la
modalità testo e preferiscono lavorare in ambiente
grafico: se vi considerate in questa categoria di
utenti allora xcmail è quello che fa per voi.
Elementare nell'utilizzo, completamente gestibile
da mouse e configurabile via menu, xcmail si
presta ad essere usato come client posta da chi
non ha particolari esigenze di personalizzazione.
Svolge il suo compito degnamente, senza tanto
pretese e può anche fare il polling (prelievo) della
posta da un server pop3, eliminando l'uso di
fetchmail o di popclient.
Lanciando il programma la prima cosa che si può
apprezzare è la semplicità dell'interfaccia, intuitiva,

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (7 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

con gli con gli abituali menu in alto e la finestra per


la visualizzazione dei messaggi in basso che
possono essere raggruppati in differenti cartelle,
create all'occorrenza per suddividere le mail a
seconda della loro importanza o a secondo del
loro oggetto.
La grande scomodità di xcmail è la sua totale
mancanza di bottoni sul toolbar superiore, cosa
che obbliga l'utente a dover scorrere i menu per
attivare le funzioni scelte. Otto bottoni sono invece
presenti sul toolbar inferiore, tramite i quali si può
inviare una nuova mail, leggerla, cancellarla e
farne un reply. A mio giudizio un po' "pochini" per
un client che ha grosse ambizioni per la gestione
della posta.
Tramite il tasto F5 si attiva il menu dei settaggi
generali, che comprendono la scelta della
signature, il numero di colonne da utilizzare nelle
mail uscenti, la possibilità di salvare una copia dei
messaggi in partenza in un outbox, la selezione
della stampante, il formato della carta, i dati per
scaricare la posta da un server remoto, la
definizione dell'host smtp, i parametri per l'utilizzo
di pgp per criptare o firmare le mail, e vi è anche la
possibilità di definire un programma per la verifica
ortografica.
Di default questo client visualizza nella finestra
centrale la cartella principale (inbox), ma se avete
bisogno di accedere ad altri folder, accedete alla
toolbar che appare premendo il bottone che
trovate sulla destra. Scelta la cartella è possibile
ripulirla dei messaggi meno interessanti
spostandoli in archivi (anche compressi) che
potete definire attraverso il folder manager,
attivabile tramite F9.
Comporre una mail è un gioco da ragazzi:
individuate il bottone in basso, premetelo e
vedrete apparire una nuova finestra. Compilate
l'header e poi inserite il testo; se volete
aggiungere un allegato servitevi del comodo
browser in alto a destra, vicino all'intestazione, e
utilizzate il comando add. Se invece avete bisogno
di qualche campo aggiuntivo, tipo quello relativo al
Bcc o alle priorità, selezionate l'opzione Extra field
dal menu Message, oppure la scorciatoia Control
+E. Fatto. Tutto molto semplice, quasi a livello di
Netscape.
Tutte queste opzioni rendono xcmail un client
gradevole, abbastanza comodo da usare anche se
abbastanza fuori dal coro, dato che la tradizionale

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (8 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

natura di Unix prevede molto l'utilizzo di xterminal


sensibilmente più veloci e leggeri.
Per ora terminiamo qui la lezione. Non abbiamo
esaminato tutti i programmi in circolazione per
gestione della posta, ne questa era la nostra
lezione. Ci siamo limitati a proporvi delle valide
alternative e a darvi immediatamente la possibilità
di leggere e spedire i vostri messaggi.
Ovviamente, girando per la rete troverete altri
software analoghi. Meglio forse fare prima un po'
di esperimenti con Pine, Mutt e xcmail e poi
potrete avventurarvi alla ricerca del vostro client
preferito.
Nei prossimi numeri tratteremo in dettaglio la
gestione dei newsgroup, questa sorta di bacheche
virtuali dove avrete modo di trovare moltissime
soluzioni ai vostri eventuali problemi con Linux.
Per ora non mi resta che augurarvi un buon
utilizzo del vostro sistema che, giorno dopo giorno,
si sta arricchendo di potenzialità mai esplorate con
il vecchio Win95/98.

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/43/Linux/corlin.html (9 di 9)03/04/2006 1.20.27


Consultazione della rivista Inter.Net sul world wide web.

Leggiamo le news

Corso di Linux - Parte sesta LEGGIAMO LE


NEWS
Fare quattro chiacchiere nei forum di discussione
non è difficile. Vediamo come.
di Marco Giardini <oesse@tecnogi.com>

Uno degli strumenti più utili in rete per acquisire


nuove conoscenze, risolvere problemi, o anche
solo per fare quattro chiacchiere, sono
sicuramente i newsgroup, forum tematici nei quali
ci si incontra per scambiarsi messaggi pubblici. A
differenza di irc o delle email, quando si sfoglia un
newsgroup si possono leggere "storie", temi che si
articolano lungo giorni, settimane o addirittura
mesi: a volte basta spedire una sola email ad un
newsgroup per ricevere decine di risposte, che a
loro volta possono generare dibattiti sempre più
approfonditi ed interessanti. È quindi un peccato
privarsi di un servizio di tale importanza anche
perché, installando il giusto client, gestire le newsè
tutt'altro che difficile e risulta poco oneroso per il
vostro sistema. Come nostro solito, non ci
dilungheremo nel presentarvi una rassegna di tutti
i software in circolazione, ma ne sceglieremo solo
alcuni, fra i migliori, e vedremo come installarli e
configurarli.
Iniziamo con il distinguere fra due tipi i client: quelli
grafici, funzionanti in X Window, e quelli testuali,
che possono essere lanciati da console o in un
xterm. La scelta di quale programma adottare sta
a voi e alle vostre esigenze; se preferite una
interfaccia grafica, l'utilizzo del mouse e dei
pulsanti, utilizzate i client sotto X, mentre con
quelli testuali avrete un minore impatto sulle
risorse di sistema e una leggibilità non indifferente
grazie ai font di console.
Iniziamo con il dare un'occhiata a Netscape, il più
diffuso navigatore per Linux, che non si limita ad
essere un client web ma offre anche la possibilità
di leggere la posta e, ciò che ora più ci interessa,
di sfogliare i newsgroup. Ma come fare?
Per prima cosa cercate un server di news; il vostro
provider dovrebbe avervi già dato questa
informazione quando vi siete abbonati, altrimenti
usatene uno pubblico come, ad esempio

news.retina.ar

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (1 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

In gergo questo è definito server nntp (network


news protocol), ed è la macchina dalla quale
dovrete prelevare i messaggi e alla quale dovrete
inviare le vostre risposte. Una volta che sapete a
quale macchina in rete dovete fare riferimento, è
ora di configurare Netscape affinché la riconosca:
andate nel menu Edit -> Preferences -> Mail &
Newsgroup -> Newsgroup Server e inserite qui
l'indirizzo che vi siete procurati, e sarete a metà
dell'opera. Ora non resta che collegarsi utilizzando
il comodo bottone nella tray bar che si trova in
basso a destra tramite il quale si apre il client vero
e proprio.
Al primo collegamento sarete "costretti" a
scaricare sul vostro computer la lista dei
newsgroup disponibili tra i quali potrete scegliere
quelli che più vi interessano, iscrivendovi ai vari
forum. In effetti, ogni server dispone di un gran
numero di gruppi provenienti da tutto il mondo,
dagli argomenti più svariati in grado di soddisfare
le esigenze di quasi tutti gli utenti. È ovvio che
scorrere tutti i messaggi di qualche migliaio di
gruppi di discussione non è l'operazione più
veloce che si possa pensare; al contrario, è meglio
pensare ad un modo per filtrare gli accessi ai
newsgroup e visualizzare solo quelli che vi
interessano veramente. L'operazione che porta a
tale risultato si chiama iscrizione: per prima cosa
scaricate la lista di tutti i gruppi aprendo il client di
news/mail Netscape e posizionandovi sul nome
del server; premete il tasto destro del mouse e
selezionate Subscribe to Newsgroups per iniziare
il download.
Scaricato tutto (attenzione, potrebbe anche volerci
qualche minuto), utilizzate l'opzione search per
cercare i newsgroup che contengono nel loro titolo
l'argomento che vi interessa, selezionate quello
che vi sembra faccia al caso vostro e utilizzate il
bottone subscribe. Ora provate a leggere qualche
messaggio. Netscape 4.5 visualizza i newsgroup
utilizzando 3 riquadri: sulla sinistra compaiono i
vari server news a cui avete accesso ed i
newsgroup ai quali vi siete iscritti, mentre sulla
destra vi sono 2 riquadri posti uno sopra l'altro; in
quello superiore appaiono i riferimenti essenziali
ad ogni messaggio, ovvero il titolo, la data, e il
mittente, e in quello inferiore viene mostrato il
contenuto dell'articolo selezionato. Semplice e
molto efficace, tenuto conto anche della bottoniera
nella parte alta dello schermo che consente di

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (2 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

operare velocemente sia sui gruppi che sui singoli


messaggi. Ad esempio, potete provare ad ordinare
le news in base alla loro data, che per
appartenenza (il famoso thread) o per dimensione
ed anche per mittente. Il tutto solo con la
pressione di qualche tasto.
Una altra opportunità offerta da Netscape è
l'inserimento automatico della signature, ovvero
della firma che viene aggiunta ad ogni messaggio
in partenza dal nostro client. Molti usano la firma
automatica per chiudere con i saluti, oppure per
mettere qualche riferimento personale, come
numero di telefono, email, etc. Se volete qualcosa
di più artistico vi consigliamo di procurarvi figlet,
una utility in grado di trasformare i vostri
messaggi, associandovi dei font ASCII.
Semplice e di sicuro effetto, ma ricordatevi di non
abusarne: firme eccessivamente lunghe o
complicate sono difficili da leggere e
rappresentano un "costo" per la rete.
Abbandoniamo ora Netscape per cercare una
soluzione più leggera, su console o xterm, che
però garantisca una certa semplicità nelle
operazioni di gestione della messaggistica. Tin, ad
esempio, è uno di quei programmi che a prima
vista ricorda molto i software per Dos di una
decina fa: gira sotto xterm e che consente non
solo di leggere le news in locale (da /var/spool/
news) ma di prelevare dal server i messaggi e di
vederli in remoto, lanciandolo come rtin o tin -r.
L'installazione non è difficoltosa, basta tenere
presente i tre file fondamentali che ne governano il
funzionamento: in tin.defaults (o un file dal nome
simile, dato che su differenti distribuzioni può
variare) potrete editare le caratteristiche generali
del programma; .newsrc contiene la lista dei
newsgroup e dei messaggi già letti e serve a Tin
per tenere traccia delle proprie operazioni e
impedire che vengano scaricati articoli già letti;
infine /etc/nntpserver consente di specificare a
quale server il programma deve collegarsi (in
alternativa potete esportare la variabile d'ambiente
NNTPSERVER, impostata nel file di
configurazione della vostra shell).
Nella grande maggioranza dei casi, non si deve
modificare il file tin.defaults, in quanto le
impostazioni standard risultano essere corrette per
tutti gli utenti, mentre il file .newsrc, che risiede
nella vostra home directory, viene creato
automaticamente da Tin alla sua prima

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (3 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

esecuzione. Il file ~/.newsrc presente o creato


nella vostra dir potrebbe avere un aspetto di
questo tipo:

alt.os.linux: 1-8238
comp.os.linux.help: 1-1909
comp.os.linux.misc: 1-140434
comp.os.linux.networking: 1-58974
comp.os.linux.questions: 1-913
comp.os.linux.setup: 1-83388
it.comp.linux: 1-17713
it.comp.linux.pluto: 1-3187
it.comp.linux.setup: 1-2504

Mentre il file /etc/nntpserver potrebbe essere:

[oesse ~]# cat /etc/nntpserver


news.retina.ar

Tin è strutturato in 4 livelli: il livello di selezione dei


gruppi, il livello di lettura del gruppo, quello di
lettura dei thread ad infine il livello di lettura delle
news. Con un ENTER si passa da un livello
all'altro mentre con q si torna indietro sino al livello
principale o alla uscita dal programma. All'avvio
vengono evidenziati tutti i gruppi presenti sul
server: Sulla parte inferiore del client compaiono i
principali comandi tramite i quali scorrere, leggere
e rispondere o postare nel gruppo prescelto. Se la
prima schermata visualizza solo i gruppi,
selezionandoli, si entra all'interno di ogni singolo
forum dove si possono leggere le news li postate.
Ma quali sono i comandi principali di Tin? Eccovi
una breve legenda:

<n>=per passare al gruppo / articolo listato come


n
TAB= si va al messaggio seguente non letto
/=per la ricerca,
c)atchup = per segnare il gruppo / articolo come
letto
g)oto, j=linea giù , k=linea su
h)elp, = aiuto
m)ove, = per spostare un gruppo
q)uit, = per lasciare il programma o il gruppo che
si sta visualizzando
r=toggle all/unread, per segnare i gruppi / le news
come lette
s)ubscribe, per l'iscrizione ad un gruppo
S)ub pattern, per l'iscrizione utilizzando una
chiave di ricerca

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (4 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

u)nsubscribe, per rimuovere l'iscrizione


U)nsub pattern, per rimuovere l'iscrizione
utilizzando una chiave di ricerca
m) mail
w) posta una nuova news
r) reply mail
f) follow up

Ricordatevi che il menu nella parte bassa del


client si modifica arricchendosi di funzioni
specializzandosi a seconda del livello di lettura nel
quale ci si trova e consente, quindi, operazioni
diverse in aree differenti.
Una opzione davvero interessante di Tin consente
di collegarsi al server nntp e filtrare in automatico i
newsgroup che si vogliono consultare: in questo
caso basta lanciare il programma qon questa linea
di comando:

[oesse ~]# rtin -a it.comp.*

e verranno visualizzati tutti i gruppi che


presentano nel loro nome it.comp. A questo punto
sarà molto facile iscriversi o visitare solo i
newsgroup da voi prescelti.
Adesso complichiamo un po' le cose dando
un'occhiata a Leafonode, un client che non solo
consente di consultare i forum online, ma vi
permette di salvare i messaggi in locale per
rivederli con calma quando avrete terminato il
collegamento. Configurarlo è tutto sommato
un'operazione veloce e abbastanza semplice;
aprite il file leafnode.conf ed inserite le seguenti
istruzioni:

server = server_name
expire = numero dei giorni dopo cui i threads (filoni
di discorso) devono essere cancellati (se non letti)
maxfetch = massimo numero di news da prelevare
per ogni gruppo

Tenete presente, comunque, che in relazione al


pacchetto utilizzato dalla vostra distribuzione (rpm,
deb, tgz) questo file può avere un nome diverso
ed una localizzazione differente da

/etc/leafnode.conf

Se volete operare un po' a basso livello, ecco


come fare per gestire i newsgroup direttamente da
shell. Sapendo che Leafnode salva i messaggi in

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (5 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

directory che prendono il proprio nome dal


newsgroup di appartenenza, e che queste
risiedono sotto

/var/spool/news

ipotizziamo di volere scaricare gli articoli del


gruppo it.comp.linux.pluto. Create la directory

/var/spool/news/it/comp/+
linux/pluto

e date il comando

chmod 775 /var/spool/news/it/comp/+


linux/pluto

seguito da

chmod u+s 775 /var/spool/news/it/comp/+


linux/pluto

Il programma crea una serie di altre directory in /


var/spool/news, quali: out.going, dove vengono
memorizzati i posting in uscita; failed.posting dove
trovate posting rifiutati, message.id che, contiene
degli hard link ad ogni messaggio ed interesting.
posting che contiene dei file a 0 byte per ogni
gruppo che un client nntp ha cercato di prelevare.
Piccolo trucco: forzando con un touch il file il cui
nome corrisponde a quello del gruppo di cui volete
prelevare gli articoli, al fetch (prelievo dei
messaggi) successivo forzerete il suo download.
Fetch, per inciso, è l'utility che consente di
prelevare le news secondo dei parametri
configurabili, come abbiamo visto, nel file leafnode.
conf. Fatto questo, non ha più importanza come
vorrete leggere gli articoli: potete usare Leafnode
stesso oppure un semplice lettore, o anche
Netscape. Quest'ultimo richiede però l'aggiunta di
un nuovo server nel menu di configurazione, che
chiamerete localhost (che corrisponde alla vostra
macchina):
ora Netscape andrà a prelevare le news
direttamente dal vostro server locale e diventerà
nient'altro che un lettore di news offline.
Considerate inoltre che, una volta che le news
sono presenti su di un server, qualsiasi client ha la
possibilità di leggerle; in questo modo potete quasi
costruirvi un piccolo server locale per la gestione
delle news.

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (6 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

Per ora abbiamo terminato. Provate a configurare


il client che preferite e sfogliate i newsgroup
iniziando ad informarvi su sendmail. Nella
prossima lezione, infatti, impareremo a gestire
questo programma per la gestione della posta
elettronica utilizzando qualche trucchetto per
aumentarne la sicurezza e adattarlo al nostro
sistema. Preparatevi quindi, i newsgroup sono una
vasta fonte di informazioni!

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/44/news/newsreader_corretto.html (7 di 7)03/04/2006 1.20.29


Consultazione della rivista Inter.Net sul world wide web.

Fatti l'alias e il dominio virtuale

Corso di Linux - Parte ottava FATTI L'ALIAS E IL


DOMINIO VIRTUALE
Col server di posta puoi avere messaggi
@tuonome.it, ma pure proteggerti dallo spam ed
evitare che qualcuno ti usi per farlo.
di Marco Giardini <oesse@tecnogi.com>

Continuiamo la nostra lezione su Sendmail,


approfondendo un aspetto meno comune della
sua configurazione, ma forse per questo non
proprio semplice, ovvero la gestione dei domini
virtuali.
Ammettiamo che sulla vostra macchina ci siano
più domini: per esempio dom1.com e dom2.com e
che per ogni dominio voi vogliate creare una email
di contatto tipo info@dom1.com e info@dom2.
com: senza un'opportuna configurazione Sendmail
non saprebbe come interpetare questi due indirizzi
e segnalerebbe un errore.
E' quindi necessario modificare il file sendmail.cf
definendo l'opzione VIRTUALUSERTABLE, che a
sua volta si appoggia ad un file esterno, tramite la
quale vengono impostate le regole per la
redirezione delle email destinate a info@dom1.
com e info@dom2.com.
Iniziamo con il creare il file di supporto

/etc/virtusertable

nel quale scriveremo

info@dom1.com pippo@dom1.com
info@dom2.com pluto@dom2.com

Dovremo quindi creare il database associato alla


virtusertable (operazione che dovrà essere
ripetuta ad ogni aggiornamento del file) con il
comando:

makemap hash /etc/virtusertable < /etc/


virtusertable

Fatto questo, basta rilanciare Sendmail per vedere


applicate le nuove modifiche.
Un altro problema molto sentito, specialmente
dagli utenti di grossi provider è l'assegnazione
arbitraria degli indirizzi di email. A volte capita di

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (1 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

vedere email del tipo marbor@dominio.it, creato


usando parte del nome e del cognome. Il
problema in questo caso, pur usando il
mascheramento del dominio, nasce nel momento
in cui lo user attivato sulla macchina locale
(normalmente quella a casa) risulta diverso da
quello presente sul provider. Come facciamo a far
corrispondere il nostro mario locale al marbor
remoto? La soluzione è data dall'opzione
GENERICSTABLE che permette di ridefinire
l'header delle email in base ad una tabella creata
appositamente dall'amministratore di sistema
(root). Come in precedenza, anche questa
opzione si appoggia ad un file in cui sono definiti
gli user e gli indirizzi di email da modificare.
Vi ricordate dei ruleset? Tramite i ruleset potrete
fare quasi di tutto con il vostro sendmail
Dovendo quindi "rimappare" l'utente locale su
quello remoto, dovremo scrivere:

mario marbor@dominio.it

Mario, ovviamente, è l'utente presente sulla nostra


macchina, mentre marbor@dominio.it indica
l'utente che apparirà nell'header, modificato da
Sendmail, delle email in partenza. Anche in questo
caso, la creazione del database dovrà essere
compiuta ogni volta che viene modificato il file di
appoggio, il cui nome deve essere definito
nell'opzione relativa in fase di creazione del file.
mc.
Per creare il database dovremo dare il comando Il
comando:

Makemap hash /etc/genericstable < /etc/


genericstable

Mentre per definire l'opzione genericstable


dovremo scrivere :

Feature(genericstable, hash -o /etc/genericstable)

Abbiamo visto come rendere possibile lo scambio


della posta; ma come impedire che qualcuno,
spammer o utenti indesiderati, utilizzino in nostro
server? In questo caso, l'opzione interessata e'
access_db, tramite la quale è possibile creare un
database di domini / utenti per i quali non ricevere
posta.
Supponiamo infatti che i domini @spam.com e
@money.com così come gli l'utente

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (2 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

pippo@dominio.com siano soliti mandare spam


(ovvero posta indesiderata). Un semplice modo
per impostare un filtro che blocchi lo spamming da
questi indirizzi consiste nel creare un file

/etc/mail/access

nel quale inserire domini e gli utenti da bloccare,


eventualmente aggiungendo un codice di errore
con il quale rispondere.
Per esempio:

spam.com 550 Spamming domain


money.com 550 No mail, thanks
pippo@dominio.com 550 no mail from you!
@altro_dominio.com 550 No spam
*.dominio3.it 550 no grazie
pippo@dominio3.it OK

Fate attenzione all'ultima riga: nonostante


dominio3.it sia bloccato, sarà possibile ricevere
posta da pippo@dominio3.it, ma solo da lui,
mentre tutti gli host del suo dominio sono stati
bloccati con una wildcard. Anche in questo caso
fate attenzione: le wildcard possono essere usate
solo per la parte mancante del dominio (il nome
dell'host).
Si potrà dunque usare *.dom2.com ma non *dom2.
com.
Anche in questo caso, la sintassi per definire la
feature nel nostro linux.mc è la seguente:

FEATURE(access_db, hash -o /etc/mail/access)

alla quale deve seguire il comando

makemap hash /etc/mail/access < /etc/mail/


access

per la creazione del database.

Supponiamo che abbiate scritto il vostro linux.mc


e che contenga le seguenti righe:

divert(0)dnl
VERSIONID(`@(#)linux.mc 8.9.3')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
define(`LOCAL_MAILER_PATH'+
, `/usr/bin/procmail')dnl
MAILER(local)dnl

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (3 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

MAILER(`procmail', `/usr/bin/procmail')dnl
MAILER(smtp)dnl
MASQUERADE_AS(provider.+
com)dnl
FEATURE(`masquerade_envelop+
è)dnl
FEATURE(allmasquerade)dnl +

FEATURE(`masquerade_entire_+
domain')dnl

Dnl sta per delete new line, ovvero si tratta di un


comando che elimina le righe vuote creato da m4
nella generazione delle istruzioni corrispondenti ad
ogni feature. Infatti, m4 traduce ogni comando
feature in un blocco di istruzioni separato da altri
blocchi tramite una riga vuota. Con Dnl questa riga
vene soppressa .
La creazione del sendmail.cf a questo punto è
facilissima: digitate dalla directory in cui avete
creato il vostro linux.mc (dovreste essere in /usr/
local/sendmail-8.9.3/+
cf/cf )

m4 ../m4/cf.m4 linux.mc > sendmail.cf

ed in pochi secondi il file di configurazione del


vostro Sendmail verrà creato, pronto per essere
copiato in /etc:

[marco ~]# cp /usr/local/sendmail-8.9.3/+


cf/cf/sendmail.cf /etc

Ricordate ora di rilanciare sendmail (sendmail -bd -


15m) e provate a mandare qualche email ai vostri
amici per verificare che la configurazione sia
corretta.

Gli alias
Come forse già sapete, Sendmail gestisce un file

/etc/aliases

nel quale ove vengono definiti gli alias di posta


secondo la seguente sintassi:

user1: user2

In questo modo, la posta diretta a user1, che può


addirittura non essere un utente vero (definito in /
etc/passwd), viene inviata allo user2, che deve

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (4 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

necessariamente essere un utente reale. Il file /etc/


aliases può avere le seguenti definizioni:

user: user
user: /file
user: |programma
user: :include: list

Come potete vedere, un secondo utente non è


l'unico destinatario possibile per le email in
transito: queste possono venire trasferite verso un
file, un programma oppure ad una mailing list.
Ne primo caso potremmo avere anche una
sintassi del tipo:

user: user, user2, user3, user4@altro_dominio.


com

che sta a significare che il primo user (preceduto


da \) è un utente locale e che quindi Sendmail non
dovrà verificarne l'esistenza nelle righe successive
di /etc/aliases, mentre user2 e user3 potrebbero
essere alias di altri utenti e user4 essere
addirittura su di un altra macchina.
Se la parte destra del vostro aliases è del tipo :
include: list, la lista dovrà essere un file (con
percorso) che presenti gli indirizzi a cui dovranno
essere spediti i messaggi indirizzati all'utente
specificato nella parte sinistra della riga.
Supponiamo, ad esempio, che in aliases sia
presente una direttiva del tipo:

ml_list: :include: /home/pippo/lista

e che

/home/pippo/lista

sia così definito:

pluto
mimmo@dom2.com
andrea@dom3.com
buzzz@dom4.com
mario
#commento
veronica

Notate che alcuni indirizzi sono privi della parte


relativa al dominio di appartenenza: ciò sta ad
indicare che ci si riferisce ad utenti locali, mentre

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (5 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

per gli utenti esterni va scritto l'indirizzo completo.


Un'email indirizzata a ml_list verrà mandata a tutti
gli utenti presenti in /home/pippo/lista. Particolare
riguardo deve essere dedicato alla gestione del
proprietario della mailing list, in modo che gli
eventuali errori siano mandati ad uno user locale,
indipendentemente da chi ha spedito il messaggio
che ha generato l'errore. Definiamo quindi il
proprietario usando la parola chiave owner-
nome_alias nel file aliases:

ml_list: :include: /home/pippo/lista


owner-ml_list: veronica

Per essere sicuri che tutti gli errori generati nella


mailing list possano essere verificati da qualcuno,
possiamo definire anche un proprietario dei
proprietari delle mailing list, usando la sintassi

owner-owner: pippo

Qualora veronica non fosse raggiungibile, la


segnalazione dell'errore sarà mandata a pippo, in
quanto proprietario dei proprietari delle mailing list.
Sebbene il file /etc/aliases sia modificabile solo da
root, il file lista potendo risiedere nella home di un
qualsiasi utente, può essere editato da un utente
qualsiasi senza che vi sia nemmeno bisogno di
riavviare Sendmail per rendere effettive le
modifiche apportate, il che svincola l'utente root
dalla gestione di ogni singola mailing list. Al
contrario, gli aggiornamenti di /etc/aliases
prevedono l'esecuzione del comando newaliases
per la ricostruzione del database degli alias.
Gli utenti che per un breve periodo di tempo siano
raggiungibili presso un altro indirizzo di posta, non
hanno bisogno di ricorrere alla modifica del file di
alias per gestire la propria posta. Più
semplicemente, possono creare nella propria
home un file

.forward

nel quale scrivere l'indirizzo cui spedire i messaggi


utilizzando la seguente sintassi:

/user, user@dominio.com

Ovviamente, user è l'utente nella cui home si trova


il file .forward, mentre user@dominio è il nuovo
indirizzo al quale la stessa persona è

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (6 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

raggiungibile. Come avete visto, senza l'intervento


dell'amministratore di sistema e con un solo file, è
possibile portarsi "a spasso" i propri messaggi.
Infine, prima di addentrarci in questioni di
sicurezza, ricordiamo un aspetto interessante del
file

/etc/sendmail.cw

Questo file riassume i domini per i quali accettare


la posta, dato che è possibile avere su una stessa
macchina più domini, oppure rendere il proprio
sistema un hub che raccoglie la posta di diverse
altre macchine (campo MX del DNS). In sendmail.
cw dovremo quindi indicare tutti i domini per i quali
si accetta di amministrare il servizio di posta
elettronica, inserendo una semplice lista di domini,
come ad esempio:
dom1.com
dom2.com
pippo.pluto.com

Sicurezza
Sendmail è sicuramente il mailer più utilizzato nel
mondo Unix, ed è anche il più esposto agli
attacchi che sfruttino i bug del software per entrare
nel sistema attraverso la porta smtp (25). A parte
gli exploit che cercano generalmente di garantire
un accesso alla shell di root, vi è un pericolo meno
grave a livello locale, ma più diffuso e, per certi
versi, fastidioso, ovvero il fenomeno del
"volantinaggio" , che consiste nel mandare veri e
propri volantini a migliaia di utenti senza che
questi li abbiano richiesti. Questo fenomeno
denominato spamming è possibile nel caso in cui
mailer non venga configurato correttamente,
consentendo ad altri host al di fuori della rete
locale di utilizzarlo come "relay", ovvero come
postino per smistare i volantini. Le ultime versioni
di
Sendmail hanno una perfetta gestione dello
spamming e consentono, per fortuna, di negare
l'accesso al vostro server di posta elettronica agli
host non autorizzato. In effetti, il mailer può essere
anche configurato per usare come relay una
macchina diversa dalla vostra; infatti, provate a
dare un'occhiata al file sendmail.cf e cercate la
seguente riga:

# "Smart" relay host (may be null)

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (7 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

DS

In questo caso DS non ha alcun valore, ma basta


modificarlo in

DSpippo.pluto.com

(senza spazi) e la posta in uscita sarà indirizzata


al mda esistente su pippo.pluto.com e da li inviata
ai destinatari finali.
Questo però è possibile solo nel caso in cui pippo.
pluto.com consenta al nostro indirizzo ip di usarlo
come relay. Date un'occhiata alla configurazione
dei relay definita nel file

/etc/mail/relay-domains

nel quale sono indicati gli indirizzi ip (o le classi di


ip) ai quali consentire l'utilizzo della macchina
locale come relay. La sintassi con la quale viene
definito l'elenco è semplice, vediamone un
esempio:

123.34.56.*
244.193.212.18

Con queste due righe viene consentito alle


macchine con ip da 123.34.56.0 a 123.34.56.255
ed anche 244.193.212.18 di usare il nostro
Sendmail come relay.
Apportate tutte le modifiche del caso, non rimane
che controllare se il nostro mailer stia lavorando in
maniera corretto: lanciate da root il comando

tail -f /var/log/maillog

(o il nome del file di log per le email in entrata e in


uscita, il cui nome è riscontrabile in /etc/syslog.
conf) e chiedete ad un amico di mandarvi un
messaggio.

Nel syslog potete decidere quali informazioni


scrivere e in quali file farlo. Da qui potete scoprire
anche quale è il file di log delle email

Otterrete un qualcosa del genere:

Feb 7 09:41:51 tecnogi sendmail[32250]:


JAA32249: to=<oesse@tecnogi.com>,
delay=00:00:04, xdelay=00:00:00, mailer=local,
stat=Sent
Feb 7 10:16:13 tecnogi sendmail[32266]:

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (8 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

KAA32266: from=<kc@versiontracker.com>,
size=23509, class=0, pri=53509, nrcpts=1,
msgid=<199902070915.+
EAA06070@versiontracker.+
com>, proto=ESMTP, relay=versiontracker.com
[209.68.63.234]
Feb 7 10:16:13 tecnogi sendmail[32267]:
KAA32266: to=oesse@tecnogi.com,
delay=00:00:18, xdelay=00:00:00, mailer=local,
stat=Sent

Il file nel quale viene tenuta traccia di tutte le email


in transito è un ottimo punto di osservazione per
vedere se Sendmail sta funzionando
correttamente

Se volete tenere traccia di tutta posta in entrata e


in uscita, lanciate Sendmail con l'opzione -X /path/
file (X maiuscola). In questo modo, troverete nel
file indicato tutto quello che sarà passato per il
mailer. Visto che in questo modo viene tenuta
traccia di tutto, proprio tutto, questa è un'opzione
indicata solo in fase di test, dato che su di un
server con discreto traffico di posta rallenta il
sistema e da origine ad un file enorme che dovrà
essere gestito in maniera costante.
Finita la fase di configurazione, provate le nuove
opzioni e verificato il buon funzionamento del
vostro mailer, abbiamo terminato la parte dedicata
a Sendmail. Fate qualche prova e tenetevi pronti
per la prossima lezione!

Torna indietro

http://www.interpuntonet.it/RIVISTA/46/linux/sendmail2.html (9 di 9)03/04/2006 1.20.31


Consultazione della rivista Inter.Net sul world wide web.

Chi cerca trova... con i permessi giusti

Corso di Linux - Parte nona


CHI CERCA TROVA... CON I PERMESSI GIUSTI

Usare il proprio sistema per scambiare file e dai


con amici o corrispondenti può portare a qualche
problema di sicurezza e di gestione. Vediamo come
configurare un accesso ftp efficiente e sicuro.

di Giorgio Zarrelli <zarrelli@systems.it>

Avere un buon server ftp è un po' un desiderio di


tutti e, per fortuna, la maggior parte delle
distribuzione, o meglio, tutte, hanno già un server
preconfigurato con un accesso anonimo definito,
pronto per l'uso. Il problemi sorgono quando volete
creare qualcosa di un po' più complicato, come ad
esempio, dare un accesso ftp a qualche amico, o
creare un "deposito" privato di file per scambiare in
sicurezza i propri programmi, documenti e
quant'altro abbiate bisogno.
Ecco quindi che viene l'esigenza di imparare a
configurare un server ftp in modo semplice e
sicuro, lasciando da parte i più famosi wu-ftpd o
Beroftpd per concentrarci su un server ftp più
semplice da gestire per chi inizia a sperimentare
con linux.
Per questo abbiamo scelto ProFTPD, un
programma configurabile editando un unico file e
che non ha bisogno di utility, librerie e programmi
aggiuntivi per funzionare correttamente. Scordatevi
di replicare alberi del sistema operativo nelle home
directory dei vostri account ftp: basta imparare
qualche semplice comando e avrete il controllo sui
vostri utenti ftp.
Inoltre, ProFTPD consente di gestire siti virtuali
multipli, può funzionare come utente con privilegi
ristretti (ottimo per evitare attacchi alla sicurezza
del sistema), gestisce directory nascoste, riconosce
le shadow password e non consente l'esecuzione
di direttive "site exec".
Per tutte queste ragioni, soprattutto l'utente alle
prime armi, ma anche quello più esperto, potranno
creare delle configurazioni di base senza troppi
sforzi, mentre con un po' più di esperienza si riesce
a gestire dei siti ftp davvero complessi.
Vediamo allora come creare il nostro sito.
Immaginiamo un ipotetico dominio crisis.org sul

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (1 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

quale vogliamo creare un account ftp archivio


destinato allo scambio di file fra vari utenti in
possesso della giusta login e della password
corretta.
La struttura delle directory del sito sarà la
seguente:

/
|---home
|---archivio
|---invio
|---prelievo
|---nascosta

Gli utenti che accederanno all'account archivio


vedranno solo una parte del ramo, ovvero quella
sezione che inizia dalla directory archivio,
interpretando questa come la loro root; in pratica,
l'albero risulterà visibile all'utente in come se fosse:

/
|---invio
|---prelievo
|---nascosta

ovvero la directory archivio è per l'utente la radice


dell'albero delle directory da lui esplorabile.

Infatti, se si tentasse di risalire dando il comando

cd \

ci si ritroverebbe comunque nella directory

/
|---home
|---archivio

vista come

In questo modo impediremo agli occasionali


visitatori di girare per il nostro disco rigido,
mettendo il naso fra i nostri dati privati.
Le tre directory a disposizione di chi accede al
nostro server hanno della caratteristiche particolari
che esamineremo dettagliatamente:

1) La directory di root (/) non consente di inviare

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (2 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

(STOR) e prelevare (READ) alcun file, ne consente


operazioni di scrittura varie (WRITE) , quali la
cancellazione dei file o il cambiamento del loro
nome
2) La directory prelievo consente di prelevare
(READ) i file ma non di spedirli (STOR) o di
effettuare delle operazioni di scrittura (WRITE),
tranne nel caso in cui si sia collegati da un ip
preciso, nel qual caso le operazioni di invio (STOR)
vengono abilitate.
3) Nella directory invio è invece possibile spedire i
file (STORE) ma non di prelevarli (READ) ne di
scrivere in alcun altro modo (WRITE). Inoltre,
qualsiasi file presente nella directory, anche se
spedito dall'utente connesso, risulta invisibile.
4) Infine la directory nascosta, come dice il nome,
risulta invisibile all'utente marco. Non si può entrare
(CWD), ne vederne il contenuto (DIRS), nemmeno
prelevare (READ), inviare (STOR) o cancellare e
rinominare file (WRITE).

La struttura delle directory e le loro proprietà


rispondono ad alcune esigenze particolari.
Innanzitutto vi è un'esigenza di ordine e
riconoscibilità: i file possono essere inviati solo in
una directory e prelevati solo da un'altra, quindi è
intuibile dove andare per eseguire una determinata
operazione. Inoltre, rendere invisibile il contenuto
della directory invio consente di tutelare la privacy
dei documenti inviati e di evitare noiosi problemi
legali: se volete scambiare dati privati con un
amico, non siete costretti a creare un account ftp
personale; basterà che spedisca tutto in invio e
nessun altro potrà vederlo, tranne il voi. In questo
modo potrete anche evitare situazioni
indesiderabili, come ad esempio l'invio di materiale
protetto da copyright: anche se qualcuno inviasse
un file "illegale" questo sarebbe automaticamente
reso invisibile e indisponibile a chiunque,
lasciandovi il tempo di cancellarlo dal sistema. Per
maggiore sicurezza potreste spostare tutto nella
directory nascosta, praticamente inesistente per chi
accede al vostro sistema come utente ftp marco, in
modo da potere esaminare con calma ciò che
avete ricevuto. Infatti, potreste crearvi un altro
account con la stessa home directory ftp, e con la
directory nascosta in bella evidenza e senza più
limiti in scrittura e lettura. Vedremo in seguito come
fare.
Ora concentriamoci sulle prime operazioni da fare,

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (3 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

ovvero prelevare e installare il server

I preliminari
Per prima cosa bisogna procurarsi l'archivio
contenente i file necessari per compilare il server.
Recatevi quindi al seguente indirizzo

ftp.ProFTPD.org

e scaricate il file

/distrib/ProFTPD-1.2.0pre.+
tar.gz (questa è la versione disponibile al momento
della scrittura di questo articolo)

Fatto questo, copiate il file in una directory


temporanea e decomprimetelo con il comando

tar xvfz ProFTPD-1.2.0pre.tar.gz

Entrate nella directory

ProFTPD-1.2.0pre3

Diventate utente root e date il comando

./configure

al termine del quale potrete lanciare

make

per compilare i sorgenti e

make install

per installarli.

Ora vi ritroverete con due file fondamentali da


tenere sott'occhio. Il primo è l'eseguibile del server,
che trovate in

/usr/local/sbin/ProFTPD

mentre il secondo è il file di configurazione

/usr/local/etc/ProFTPD.+
conf

che dovrete però creare sulla base dei file di


esempio che trovate nella directory

sample-configurations

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (4 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

all'interno della directory dei sorgenti.

Dato che creeremo un account ftp per l'ipotetico


utente archivio accertiamoci di creare l'albero delle
directory relativo. Il modo più semplice consiste nel
aggiungere un utente archivio con password
archivio al nostro sistema, usando il tradizionale
comando

adduser archivio

Spostiamoci in

/home/archivio

e creiamo le directory invio, prelievo e nascosta e


rendiamo le prime due di proprietà dell'utente
archivio tramite i comandi

chown archivio.archivio invio


chown archivio.archivio prelievo

mentre lasceremo nascosta di proprietà di root.

Ora, togliamo il privilegio di lettura della directory


invio all'utente archivio

chmod -R u-r invio

Questo ci servirà, vedremo in seguito, ad impedire


che gli utenti collegati in ftp possano vedere il
contenuto della directory in questione.
A questo punto abbiamo quasi finito di lavorare su
file e directory e possiamo dedicarci quasi
completamente all scrittura del file di
configurazione.

La configurazione del server


In questo articolo ci limiteremo a creare una
configurazione adatta ad un utente archivio di con
alcuni privilegi interessanti, trascurando la
creazione di un account anonimo, dato che già
esiste un esempio di configurazione già pronto
nella directory apposita; non tratteremo, inoltre, la
creazione di server virtuali sia perché questi non
sono molto usati da un utente medio, sia perché
dopo aver compreso i concetti base, vi basterà
leggere la documentazione online per lavorare
senza problemi.

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (5 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

Esamineremo un file ProFTPD.conf già pronto,


commentando i vari blocchi di istruzioni per capirne
il significato.

ServerName "F-U-R-Y's ftp server"


ServerType standalone
ServerAdmin "zarrelli@tiscalinet.it"

Iniziamo con qualche parametro "amministrativo",


ovvero il nome del server, nome che verrà mostrato
all'utente al prompt di login, la modalità di
funzionamento, e l'indirizzo dell'amministratore.
Le modalità di funzionamento del server possono
essere di due tipi, standalone oppure inetd. Nel
primo caso dovrete lanciare il server con uno script
al boot della macchina (mettete lo script in /etc/rc.
x), oppure a mano, mentre nel secondo caso, a
farlo funzionare ci penserà il super server inetd. Il
vantaggio della prima opzione consiste nella
velocità di risposta del servizio, che però rimane
attivo in continuazione, togliendo risorse al sistema;
venendo lanciato da inetd, invece, ProFTPD rimane
inattivo fino a quando non viene richiesto il servizio
ftp: in questo modo la risposta sarà leggermente
più lenta ma il programma viene tenuto in
esecuzione solo per il tempo necessario ad
eseguire i suoi compiti. Per lanciare il server da
inetd bisogna compiere due modifiche: per prima
cosa dovete cambiare il tipo di server nel file di
configurazione

ServerType inetd

Quindi modificare il file

/etc/inetd.conf

sostituendo alla stringa associata al demone


classico di ftp

ftp stream tcp nowait +


root /usr/sbin/tcpd /usr/+
sbin/in.ftpd

la seguente stringa che richiama ProFTPD

ftp stream tcp nowait +


root /usr/sbin/tcpd /usr/+
local/sbin/ProFTPD

Eseguita anche questa modifica non vi rimane che

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (6 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

far ripartire inetd dando il comando

killall -HUP inetd

Passiamo adesso alla gestione dei timeout

TimeoutLogin 120
TimeoutIdle 300
TimeoutNoTransfer 120
TimeoutStalled 240

Visto che avere gente in ftp che rimane inerte per


lungo tempo non è un bene per le risorse del nostro
sistema, vediamo come fare per scollegare gli
utenti indesiderati dopo qualche minuto di inattività.
Iniziamo con un TimeoutLogin che ci consente di
filtrare gli utenti con delle connessioni troppo lente:
dando un valore di 120 secondi, chi non avrà
introdotto login e password entro 2 minuti si vedrà
chiudere il collegamento. Continuiamo poi con un
TimeoutIdle 300 che penalizza quei client che
rimangono connessi senza fare alcunché per
almeno 5 minuti, mentre se dopo il login non viene
creata una connessione dati passiva o attiva
(TimeoutNoTransfer 120) per due minuti si chiude
ancora una volta il collegamento; lo stesso,
ovviamente, avviene anche quando non vengono
trasferiti dati per quattro minuti (TimeoutStalled
240).

Port 21
Umask 022
MaxInstances 30
User nobody
Group nogroup

Port 21 specifica la porta alla quale risponde il


servizio, tradizionalmente la 21 ma potreste volere
una porta più alta o bassa a seconda delle vostre
esigenze e preferenze (come ad esempio rendere
un po' più "nascosto" il vostro server). Non
dimenticatevi poi di impostare una umask, ovvero
una maschera che definisce i permessi che non
vengono attribuiti all'utente che ha inviato un file. I
permessi vengono di solito espressi in ottale con
una combinazione di cifre che rimanda alle
proprietà di read, write ed execution per l'utente, il
suo gruppo, o per gli altri utenti. Il valore della
proprietà di read viene espresso con il numero 4,
mentre per la scrittura si usa il 2 e per esprimere la
possibilità di lanciare un eseguibile si usa 1 (4=r,

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (7 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

2=w, 1=x). La umask ha valore negativo, ovvero


indica quali permessi vanno sottratti all'utente
proprietario di un file, quindi 022 indica che al
proprietario non viene sottratto alcun privilegio,
mentre al suo gruppo e agli altri utenti viene tolta la
possibilità di scrivere (w=2).
Per interpretare meglio la umask, fate questa
equivalenza:

022
rwx rx rx
u(ser) g(roup) o(thers)

Con MaxInstances, invece, si intende il numero


massimo di "copie" di ProFTPD che possono
essere generate dal primo processo in esecuzione
per soddisfare le richieste di più utenti
contemporanei. Ogni utente, o meglio ogni
connessione alla porta 21, causa la creazione di un
nuovo processo ftp pronto a "servire" il potenziale
client: ciò rende vulnerabile il server ad un attacco
dos (denial of service) tramite connessioni multiple
alla porta 21 che porterebbero il sistema ad un
rapido esaurimento delle risorse. Limitare il numero
di processi contemporanei, limitazione che ha
effetto solo in modalità standalone, consente di
mantenere il controllo sulle risorse ftp.
Fate molta attenzione alle direttive user e group:
queste indicano l'utente che farà funzionare il
server. In pratica, per poter prendere "possesso"
della porta 21, il server deve partire come se fosse
lanciato dall'utente root anche se questo genera
qualche problema di sicurezza. Infatti, se con
qualche attacco un utente riuscisse a prendere il
controllo della shell dell'utente che ha lanciato
server, si ritroverebbe nel computer con i diritti di
root, e quindi con il completo controllo della
macchina. Impostando nobody e nogroup l'utente e
il gruppo di esecuzione di ProFTPD (controllate in /
etc/passwd che esistano l'utente nobody e il gruppo
nogroup, altrimenti createli), appena lanciato e
preso il controllo della porta 21, il server funzionerà
come se fosse stato lanciato dell'utente nobody
privo di importanti privilegi.

<Directory /*>
AllowOverwrite on
</Directory>

Iniziamo a dare qualche permesso alle directory

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (8 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

tramite i tag <Directory x> </Directory> con x


uguale al percorso indicante la directory cui si
vogliono attribuire i permessi. In questo caso
lasciamo che i file contenuti nella directory di root (/
*) di qualsiasi account che definiremo siano
sovrascrivibili. Fate attenzione anche in questo
caso: tutti gli attributi e le limitazioni che si
applicano alle directory vengono ereditate dalle sub
directory in esse nidificate, a meno di indicazioni
precise definite directory per directory; vedremo più
avanti un'applicazione che chiarirà questo principio.

<Anonymous ~archivio>

Definiamo le proprietà dell'account archivio, che


vanno specificate all'interno dei tag <Anonymous
x> </Anonymous>, con x che indica la directory di
home dell'utente. Per prima cosa costringiamo
l'utente nella sua home, senza possibilità di
accedere ai rami superiori delle directory,
preponendo all'indicazione della directory il
carattere ~.

AccessGrantMsg "Accesso consentito all'utente %


u."

Predisponiamo ora un messaggio che informi


l'utente, definito dalla variabile %u (nella tabella
codici troverete un elenco di variabili), del successo
della sua procedura di accesso alla macchina.

AllowRetrieveRestart on
AllowStoreRestart off

Quindi consentiamo il resume dei download


interrotti tramite il comando ftp rest, mentre
disabilitiamo la possibilità di riprendere gli upload
interrotti, quest'ultima opzione evita possibili
corruzioni del file system.

DisplayFirstChdir .primo_cambio
DisplayLogin .benvenuto

Ora lasciamo che gli utenti vedano il contenuto del


file .benvenuto al termine delle procedure di login, e
che possano vedere alcune informazioni addizionali
al primo cambio di directory.

ExtendedLog /var/log/ftp.log read,write,auth

Teniamo traccia delle azioni compiute dagli utenti

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (9 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

tramite il file di log /var/log/ftp.log, nel quale


verranno scritte tutte le operazioni di lettura,
scrittura e autenticazione (invio di login e
password).

AnonRequirePassword yes

Abilitando questa opzione, l'utente marco dovrà


inviare la password relativa al suo account.
Impostando il valore off, invece, l'utente dovrà
inviare come password un indirizzo email.

MaxClients 10 "E' stato raggiunto il limite di utenti


ammessi (%m)."

MaxClientsPerHost 1 "E' gia' connesso 1 utente dal


tuo dominio."

Ora definiamo un limite agli utenti presenti


contemporaneamente sul nostro sito, e al numero
di client provenienti da uno stesso indirizzo ip,
predisponendo anche degli appositi messaggi.

RequireValidShell yes

Se non vogliamo che un utente privo di una shell


reale (presente nel file /etc/shells) possa collegarsi
al nostro sito, abilitiamo questa funzione. Volendo,
potreste disabilitare questa opzione e modificare la
shell dell'utente archivio, impostandola come

archivio:x:1002:1002:Accoun+
t di Prova ftp,,,:/home/archivio:/+
bin/true

all'interno del file

/etc/passwd

In questo modo l'utente archivio avrà un accesso


ristretto alla vostra macchina, senza la possibilità di
entrare in telnet.

<Directory *>
<Limit WRITE>
DenyAll
</Limit>
<Limit READ>
DenyAll
</Limit>
<Limit DIRS>
AllowAll

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (10 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

</Limit>
</Directory>

Eccoci alla nostra prima directory, la root del nostro


utente archivio. Poniamo qualche limite all'interno
degli appositi tag <Limit x> </Limit>, con x che
indica una operazione o un gruppo di operazioni
(fate riferimento all'apposita tabella).

Per questioni di ordine e sicurezza impediamo


qualsiasi operazione di scrittura e lettura a
chiunque (DenyAll), mentre lasciamo la possibilità
di listare il contenuto della directory.

<Directory /home/archivio/nascosta>
HideUser root
HideNoAccess
<Limit READ>
IgnoreHidden on
</Limit>
<Limit CWD>
DenyAll
</Limit>
</Directory>

Il blocco di limitazioni ora definite ci consente di


creare una directory inesistente per l'utente archivio
che acceda in ftp al nostro server. Qui potremmo
spostare, usando un comando temporizzato (cron),
il contenuto della directory invio, per poterlo poi
prelevare collegandosi con un altro account che
abbia come root directory /home/archivio/archivio.
Questo viene reso possibile da un'interazione fra
proprietà delle directory e le direttive Hide e Ignore.
Per prima cosa abbiamo reso la directory nascosta
(all'interno del blocco Anonymous possiamo
indicare le directory anche con percorsi relativi),
quindi l'abbiamo nascosta a qualsiasi utente che
non sia root (HideUser root), l'abbiamo
completamente resa insensibile ad ogni comando
di listing da parte degli utenti che non via hanno
accesso (HideNoAccess), e infine abbiamo
impedito di manipolarli con qualsiasi comando
utilizzando IgnoreHidden on; infine, per maggiore
sicurezza, limitiamo anche il comando di change
directory (Limit CWD), in modo che nessuno possa
entrare nella directory nascosta.

<Directory /home/archivio/prelievo>
<Limit STOR>

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (11 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

DenyAll
Allow 192.168.1.2
</Limit>
</Directory>

Ora passiamo velocemente a definire una directory


di prelievo dalla quale i nostri utenti potranno
scaricare i file che mettiamo pubblicamente a
disposizione. Per questioni di sicurezza e di ordine,
facciamo in modo che non possa essere inviato
alcun file in questa directory, usando la direttiva
<Limit STOR> e la parola chiave DenyAll,
concedendo però agli utenti provenienti
dall'indirizzo

Allow 192.168.1.2 la possibilità di uploadare ciò che


vogliono. In questo modo, per esempio, se voi
possedete un indirizzo fisso, potete gestire il
materiale messo a disposizione degli utenti
inviando via ftp, dalla vostra postazione, tutti i nuovi
programmi o documenti di cui siete a disposizione.
Nessuno, comunque, potrà cancellare file via ftp,
dato che la directory prelievo eredita da quella di
root la direttiva <Limit WRITE> DenyAll.
Da ultimo, vediamo quali valori deve avere un
directory predisposta a ricevere i file spediti dagli
utenti che visitano il vostro sito.

<Directory /home/archivio/invio>
Umask 222

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (12 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

Indichiamo il percorso che punta alla directory, e


facciamo in modo che i file creati non possano
essere sovrascritti o manipolati, usando una Umask
222 che toglie i diritti di scrittura sui file creati.

<Limit STOR>
AllowAll
</Limit>

Ora, consentiamo a chiunque di inviare file, tramite


la direttiva <Limit STOR> associata alla parola
chiave AllowAll.

<Limit READ>
DenyAll
Allow 192.168.1.2
</Limit>
</Directory>
</Anonymous>

Infine, impediamo che i file possano venire


scaricati, utilizzando il comando <Limit READ>
limitando le operazioni di scaricamento a tutti,
DenyAll, tranne che all'indirizzo specificato Allow
192.168.1.2, e chiudiamo il blocco di istruzioni che
si riferisce all'account archivio (</Anonymous>).
Prima di finire, comunque, andate nella directory /
home/archivio e date il comando

chmod -R u-r invio

In questo modo, tutti i file presenti nella directory


risulteranno illeggibili per l'utente archivio, ma non
per gli altri utenti, come ad esempio quegli utenti ftp
che avessero un differente account ma anche un
accesso a questa directory...

Ecco fatto. Il sito è pronto. L'ultima cosa che


dovrete fare, se volete lanciare ProFTPD come
standalone alla partenza della vostra macchina è
creare uno script di startup e collegarlo al runlevel
di partenza. In Debian, per esempio, basta andare
nella directory

/etc/init.d

ed editare un file con un nome a vostra scelta, ad


esempio, ftpd. Bastano semplicemente due righe:

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (13 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

#|/bin/bash
/usr/local/sbin/ProFTPD

e rendere lo script ftpd eseguibile con un

chmod a+x ftpd

A questo punto create il link con il comando

ln -s /etc/init.d/ftpd /etc/rc2.d/S20ftpd

Fatto. In /etc/rc2.d vi ritroverete con un link


simbolico che farà partire il vostro server ftp tutte le
volte che il sistema operativo sarà lanciato.
Per ora siamo a posto. Il nostro sito è operativo e
pronto all'uso. Da qui in poi potete sperimentare a
vostro piacimento, creando un account ftp anonimo
vero e proprio, oppure utilizzando i molti comandi
messi a disposizione dal programma. Per motivi di
spazio non abbiamo potuto vederli tutti, ma se
avete capito come funziona ProFTPD, non avrete
problemi a partire dagli esempi che abbiamo
proposto per mettere in piedi un sito da fare invidia
a chiunque. Date un'occhiata sul cd rom e vi
troverete il programma ProFTPD, e i file di
configurazione che vi abbiamo proposto, pronti per
essere copiati e modificati.
Al prossimo mese!

Riferimenti e links:
● Chi cerca trova... con i permessi giusti (Articolo)
● Tabella operazioni (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/47/ftp/corsolinux47.html (14 di 14)03/04/2006 1.20.33


Consultazione della rivista Inter.Net sul world wide web.

Anche tu della tribù Apache

Anche tu della tribù di Apache Come installare il


server http più diffuso al mondo e configuralo senza
problemi
di Omar Scali smox@isacnet.com

Utilizzare Linux come server internet è forse una


delle applicazioni più “naturali” per questo sistema
operativo che vede soprattutto nel web server uno
strumento di ampia diffusione. Apache, presente in
ogni distribuzione, è infatti il server http più
popolare sulla rete, a quanto disulta dall'ultimo
"Netcraft Web Server Survey" (www.netcraft.com).
Gratuito, affidabile, flessibile, qualsiasi webmaster
ne può scaricare i sorgenti e compilarlo secondo le
proprie esigenze, oppure affidarsi a binari
precompilati e pronti all'uso, sia per Unix che, da
qualche tempo, per Windows 98/NT.

COMPILAZIONE E INSTALLAZIONE DI APACHE


Se avete bisogno di una configurazione standard
potete scaricare l'ultima versione di Apache in
formato .deb o .rpm che consente di effettuare una
installazione molto rapida.
La sintassi da usare per l'installazione è la
seguente (RedHat)

rpm –i versione_apache.rpm

Se invece volete aggiornare il server, potete forzare


l'installazione del nuovo pacchetto utilizzando il
comando

rpm-i –force versione_apache.rpm

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (1 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

Sul sito di Apache abbiamo a disposizione un


database per la ricerca dei moduli

Fatto questo, sul vostro sistema saranno state


create alcune directory che dovrete imparare a
conoscere:

/etc/httpd/conf
Qui il server tiene tutti i suoi file di configurazione.

/etc/rc.d
La struttura ad albero contenuta in questa directory
contiene gli script di avvio del sistema; qui trovate
lo script per avviare e attestare Apache.

/home/httpd
Questo è il posto giusto per aggiungere icone e per
trovare i cgi installati dal pacchetto.

/usr/doc e /usr/man
Manuali in linea e documentazione.

/usr/bin
In questa directory si trovano gli eseguibili.

E' fondamentale, per chi voglia cimentarsi nella


configurazione di Apache, tenere sempre a mente
quali sono i file di configurazione del server, quei
file che andranno modificati qualora decidessimo di
operare qualche cambiamento: httpd.conf , srm.
conf, access.conf . Vedremo in seguito come
modificarli.
Adesso concentriamoci su una delle fasi più difficili
dell'installazione del web server. Volendo partire
dai sorgenti e quindi compilare il server secondo le

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (2 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

proprie esigenze, bisogna compiere una serie di


passi non privi di difficoltà
Una volta scaricati e decompressi i sorgenti, il
modo semplice e veloce per compilarli è costituito
risulta

./configure –prefix=PERCORSO
make
make install

PERCORSO è da sostituire con il path della


directory di destinazione in cui si vuole che venga
installato il server. In questo modo abbiamo
ottenuto un server funzionante, più o meno simile a
quello distribuito con i vari rpm e deb, senza grandi
opzioni aggiuntive.
Per dare qualche funzionalità in più ad Apache,
possiamo intervenire sul file Configuration in due
modi.
Per prima cosa possiamo intervenire sul file
Configuration.tmpl, che si trova nella directory src,
un template che contiene le specifiche di
configurazione.

cd <directory con la distribuzione di Apache>


cp Configuration.tmpl Configuration
vi Configuration

Se non vogliamo modificare a mano il file possiamo


lanciare lo script configure che si occuperà di
gestire in automatico alcune fasi della
configurazione, accettando anche le specifiche
immesse su linea di comando dall'utente. Per
vedere quali opzioni potete utilizzare, date il
comando

./configure –help

Modifichiamo il file Configuration

All'inizio vi consigliamo di non modificare le


impostazioni di default e di mettere mano solo alle
specifiche relative al compilatore da utilizzare,
all'hardware della vostra macchina e ai moduli da
compilare. In pratica si tratta di:

Impostare la definizione di CC con il nome del


compilatore C che si intende usare.
Rimuovere i commenti (#) in corrispondenza delle
definizioni AUX_CFLAGS e AUX_LIBS relative al
proprio hardware. Volendo installare Apache su

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (3 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

Linux dovremo modificare il file in questo modo

# For SunOS 4
#AUX_CFLAGS= -DSUNOS4
# For Linux -m486 ONLY IF YOU HAVE 486
BINARY SUPPORT
AUX_CFLAGS= -DLINUX

Copiare i moduli necessari nella directory /src e


inserirli nel file di configurazione tramite la riga

AddModule nome_modulo module.o

MODULI
I moduli sono dei programmi che estendono le
funzionalità di Apache. Si ricordi che di default i
moduli base vengono compilati come parte
integrante dell'eseguibile del server e come tali
contribuiscono a renderlo più grande e “pesante” in
termini di risorse occupate.
Esiste comunque la possibilità di compilare i moduli
come dso (dynamic shared objects), ovvero come
vere e proprie librerie da caricare solo nel momento
in cui ne vengono richiesti i servizi. Se volete
avvalervi dei dso basta lanciare configure con la
seguente sintassi:

./configure –prefix=PERCORSO –enable-


shared=max

Non si pensi tuttavia che i moduli elencati nel file di


configurazione siano gli unici disponibili: basta fare
un salto all'url modules.apache.org

per rendersi conto di quanti moduli aggiuntivi siano


disponibili e quali servizi consentano di
implementare nel server. Fra questi, i più
interessanti sono sicuramente

Autenticazione degli utenti


Gestione dei database
Implementazione del protocollo ssl per transazioni
sicure
Monitoraggio e amministrazione del server
Implementazione del supporto perl
Esecuzione di servlet Java

In pratica ognuno può costruirsi un server web


personalizzato scegliendo i moduliche
maggiormente rispondano alle proprie esigenze.
Ecco una serie di moduli che vi consigliamo di

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (4 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

installare:

mod_include: è il modulo che gestisce il parsing dei


documenti e arricchisce Apache con il supporto dei
server side include (ssi).
mod_env: serve ad estendere il numero di variabili
d'ambiente passate agli script cgi; la direttiva
SetEnv all'interno dei file di configurazione
permette infatti di definire nuove variabili.
mod_perl, mod_perl_fast: in questo modo potete
aggiungere a livello del server degli interpreti per
che consentono di eseguire gli script cgi con una
maggiore velocità.
mod_proxy: con questo modulo non avrete la
necessità di installare un proxy server, esso viene
integrato direttamente in Apache.
mod_auth_cookies_file: se avete bisogno di
implementare dei meccanismo di autenticazione
tramite cookies, ecco questo è ciò di cui avete
bisogno.
mod_php: questo modulo rende disponibile il
supporto per il linguaggio php che consente di
interagire con i database relazionali (es. msql).

CONFIGURAZIONE
Sia che abbiate compilato i sorgenti o che abbiate
eseguito un'installazione manuale o abbiate usato
un rpm, è arrivato il momento di configurare il
server. L'ordine con cui i file di configurazione
vengono processati da Apache è il seguente:

httpd.conf
srm.conf
access.conf

HTTPD.CONF
All'interno di questo file troviamo le direttive
generali che influenzano il comportamento del
server. Qui possiamo decidere dove tenere i file di
log, sotto quale utente lanciare l'eseguibile httpd, la
porta sul quale farlo funzionare e altro ancora. Noi
ci limiteremo a prendere in considerazione le
direttive principali, che ci consentiranno di avere un
server funzionante in breve tempo.

ServerType standalone

La direttiva ServerType permette di informare


Apache sul modo in cui questo viene avviato. Se
volete lanciare il server utilizzando uno script
utilizzate l parola chiave standalone, mentre se

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (5 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

preferite fornire il web come servizio usate la parola


chiave inetd, ma ricordatevi di modificare il file /etc/
inetd.conf. La prima soluzione consente di
rispondere più velocemente alle richieste dei
browser, ma ha come svantaggio il dovere tenere il
server sempre in esecuzione, anche quando non
ne avete bisogno. Come servizio, avrete un minore
carico del sistema, ma risposte più lente.

Port 80

Si tratta dell'indicazione della porta sulla quale il


server rimane in ascolto attendendo le chiamate dei
browser

Listen 8080

Se httpd viene utilizzato in modo standalone è


possibile fare in modo che lavori anche su un'altra
porta, utilizzando questa direttiva.

HostnameLookups off

Permette di decidere se registrare nei file di log


l'indirizzo numerico o il nome degli host che
accedono al servizio. Attivando questa direttiva (on)
si registrano i nomi degli host.

ServerAdmin smox@prova.com

ServerAdmin consente di definire l'indirizzo email


dell'amministratore del server

ServerName www.prova.com

Qui possiamo dichiarare espressamente il nome di


dominio del server web. Può trattarsi di un alias
definito a livello di dns, ma quello che conta è che
si tratti di un nome valido.

User nobody
Group nobody

Queste due direttive definiscono l'utente e il gruppo


sotto il quali funzionare il servizio. In pratica,
quando si legge un file html, o si lancia un
programma cgi, lo si fa come se si fosse l'utente
indicato. Solitamente, per motivi di sicurezza, si
utilizza l'utente e il gruppo nobody, con privilegi
minimi. Se, per qualche motivo si preferisce
utilizzare l notazione numerica, è possibile usare il
numero uid e gid, preceduto dal simbolo #.

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (6 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

ServerRoot /etc/httpd

Rappresenta la directory a partire dalla quale si


diramano le informazioni sulla configurazione, sul
log e simili, insomma la directory principale del
server.

ResourceConfig conf/srm.conf
AccessConfig conf/access.conf

Qui definiamo il percorso nel quale il programma


cercherà il file di configurazione delle risorse e
quello per la gestione degli accessi.

<VirtualHost numero_ip>
ServerAdmin email
DocumentRoot /nome_sito
Servername www.prova.com
</VirtualHost>

Questa sezione è indispensabile qualora fossero


presenti dei siti web virtuali, per i quali definiamo
l'indirizzo email dell'amministratore, la directory che
contiene le pagine html e l'hostname visibile.

ErrorLog /var/log/httpd/error_log
TransferLog /var/log/httpd/access_log +

Qui definiamo i file di log. Generalmente, i percorsi


indicati sono relativi; in tal caso si riferiscono alla
directory ServerRoot come punto iniziale.

ScoreBoardFile /var/run/apache_status

Definisce il nome e la collocazione di un file


contenente una serie di informazioni sul
funzionamento corrente del server, necessarie al
server stesso per la comunicazione tra processi.

SRM.CONF
Questo file viene letto solo se menzionato nella
direttiva ResourceConfig specificata in httpd.conf.
Qui vanno indicate alcune specifiche della
configurazione che per qualche motivo
l'amministratore di sistema vuole tenere separate,
ed infatti vi troviamo la gestione delle risorse che
riguardano il sito web, le impostazioni correlate alla
posizione dei documenti html e alle directory dei
programmi cgi.
Anche in questo caso, esaminiamo le opzioni più

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (7 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

interessanti:

DocumentRoot /home/httpd/html

DocumentRoot dichiara la directory principale nella


quale possiamo copiare i file html o le directory che
li contengono.

UserDir www

UserDir indica in quale directory, all'interno della


propria home, gli utenti possono collocare le pagine
html personali. In questo modo, sarà possibile
vedere il sito pesonale di ogni utente utilizzando
come url http://<host>/~<utente>. Ad esempio,
un'ipotetica url www.prova.com fa effettivamente
riferimento al file ~smox/www/index.html.

UserDir DISABLED

Adesso togliamo agli utenti la possibilità di rendere


accessibili le pagine html poste nella home di ogni
utente.

UserDir DISABLED root

Quando si concede agli utenti di creare proprie


pagine html, occorre tenere presente che questo
fatto può creare #problemi di sicurezza del sistema:
chiunque potrebbe creare un semplice link
simbolico verso un file o una directory che pur
risultando leggibile a tutti gli utenti non era intesa
come accessibile al mondo intero. A questo si può
porre rimedio, ma occorre intervenire sul file access.
conf, come verrà mostrato in seguito. A partire dalla
versione 1.3 di Apache è possibile specificare a
quali utenti impedire la costruzione di pagine
personali; nell'esempio, l'utente root non potrà
rendere visibile alcuna pagina, nemmeno se
inserita nella directory /root/www.

DirectoryIndex index.html index.htm

Quando l'url termina con l'indicazione di una


directory, invece che di un file html, è possibile
caricare un file di default invece di visualizzare il
contenuto della directory stessa. In pratica,
indichiamo un file indice standard da caricare in
caso non fosse stato specificato nient'altro.
Solitamente si utilizza il nome index.html o index.
htm

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (8 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

FancyIndexing on

Quando visualizziamo una directory via web,


possiamo veder i file in essa contenuta sia come
semplice elenco testuale che in forma di piacevole
lista in cui ai file viene associata un'icona
identificativa. Per abilitare quest'ultima vista,
indicate on.

AddIconByType (TXT,/icons/text.gif) text/*


AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*

Ora dobbiamo abbinare ad ogni tipo di file un'icona


identificativa che possa essere visualizzata nel
caso in cui abbiate abilitato la direttiva
FancyIndexing In pratica si tratta di abbinare
un'icona a un tipo/sottotipo mime,. La sigla (TXT,
IMG,SND) rappresenta una stringa da utilizzare al
posto dell'icona quando non è possibile la sua
rappresentazione.

AccessFileName .htaccess

È possibile definire il nome di un file di


configurazione che, se presente, serve per definire
l'accesso alla directory in cui si trova. Il nome
predefinito di questo è file è .htaccess. Tenete
presente che le regole di accesso definite in .
htaccess prevalgono su quelle definite nel file di
configurazione globale access.conf.

ErrorDocument <n-errore> <file-alternativo>


ErrorDocument <n-errore> <url-esterno>
ErrorDocument <n-errore> "<messaggio>

Se volete personalizzare i messaggi di errore del


server questi ultimi possono essere riscritti in forma
di file html o di programma cgi. Potete indicare i file
da caricare in cado di errore usando una delle tre
sintassi mostrate. Vediamo come possiamo
caricare il file documento_mancante.html quando si
verifica un errore di tipo 404:

ErrorDocument 404 /documento_mancante.html

ACCESS.CONF
Questo file permette di controllare l'accesso a quali
file e directory si può accedere via web e chi ha
diritto di farlo. La configurazione di default fornisce
accesso senza restrizioni ai documenti in

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (9 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

DocumentRoot.

L'esempio seguente mostra la semplice


dichiarazione della directory /home/httpd/html/,
corrispondente a DocumentRoot, della quale è
consentito visualizzare il contenuto e seguire, se
presenti, i link simbolici.

<Directory /home/httpd/html>
Options Indexes FollowSymLinks
</Directory>

Nella tabella 1 sono descritte alcune delle direttive


che possono essere usate all'interno della sezione
Directory. La direttiva Options permette di definire
alcune opzioni in forma di parole chiave e
generalmente se ne possono usare più di una per
definire le proprietà di una directory. La sintassi è
abbastanza semplice: utilizzando un segno +
attribuiremo determinate opzioni, mentre con il
segno – le toglieremo. In ogni caso, per facilitare la
lettura, sarebbe opportuno dichiarare ogni volta le
opzioni che si vuole vengano abilitate.

AVVIO E FUNZIONAMENTO DEL WEBSERVER


Una volta configurato il server occorre avviarlo
lanciando il binario httpd. Tipicamente, ciò deve
essere fatto durante la fase di boot del sistema,
utilizzando uno dei file di inizializzazione (file rc),
oppure lanciando a mano lo script di
inizializzazione del server, httpd.init, che trovate in /
etc/rc.d/init.d. Infine, potreste anche decidere di
lanciare “brutalmente” l'eseguibile, dando il
comando

/usr/sbin/httpd

In questo caso, potrete passare al server, sulla


linea di comando, alcune opzioni

-d serverroot
Specifica la "ServerRoot" directory, nel caso in cui
essa non sia stata indicata nel file di
configurazione.

-X
Serve per lanciare solo il processo padre httpd. Si
usa solitamente in fase di prova del server.

-v

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (10 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

Visualizza la versione del server ed esce.

-h
Visualizza le direttive supportate da httpd.

-l
Visualizza la lista dei moduli compilati.

-?
Visualizza la lista delle opzioni ed esce.

Una volta lanciato il server, per controllare che tutto


sia funzionante a dovere, lanciate un navigatore
dandogli come url

localhost

Se tutto è andato liscio, il serve vi risponderà senza


problemi. In caso contrario vi verrà mostrato una
pagina contenente un codice di errore. In questa
seconda ipotesi, c'è probabilmente qualche errore
di configurazione, che potrete scoprire analizzando
il file error_log nella directory log/.

SICUREZZA
Permettere a tutti i navigatori di accedere ai
documenti presenti sul vostro server, pone una
serie di importanti problemi in merito ai problemi di
sicurezza.
Quando si concede agli utenti di un sistema la
possibilità di mettere in linea le proprie pagine html,
occorre tenere presente che questo fatto può dar
luogo a dei potenziali “buchi” nella sicurezza del
sistema: un utente, ad esempio, potrebbe creare un
semplice link simbolico verso un file o una directory
che pur risultando leggibile a tutti gli utenti, non era
intesa come accessibile al mondo intero, e quindi
concedere a chiunque la possibilità di leggere
documenti riservati o prelevare dati importanti. Per
ovviare in parte a questo problema, eccovi qualche
indicazione di massima per iniziare a “lavorare”
sulla sicurezza:

Controllate le pagine degli utenti di sistema.


Verificate la sicurezza e l'assenza di bug negli
script cgi: infatti cercate di evitare che lo script
faccia lo spawn di una shell (ad esempio comando
system o `...` in perl). Se viene passata una stringa
non controllata (ad esempio ;), possono venire
eseguiti dei comandi non previsti sul server.

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (11 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

Consentite l'esecuzione di script cgi solo da una


directory ad accesso controllato (tipicamente cgi-
bin).
Non fate girare il server come root: farlo partire
come root (altrimenti non è possibile utilizzare la
porta 80, quella di default per http), poi
“declassarlo” in utente non privilegiato tramite
l'apposita direttiva.
Analizzate periodicamente i file di log. Fate
attenzione, in particolare, ai tentativi di esecuzione
di programmi di sistema (ad es. rm, login, chmod,
ecc.) e a url molto lunghe (potrebbero essere
indicative di tentativi di overflow dei buffer di input
di un programma).
Infine, vi consigliamo di leggere il documento di
Lincoln Stein sulla sicurezza dei siti web,
raggiungibile all'indirizzo www-genome.wi.mit.edu.

Congratulazioni. A questo punto disponete di un


server web opportunamente configurato e pronto
ad ospitare le vostre prime pagine html. Certo, non
abbiamo ancora affrontato tematica particolari
come la creazione di siti virtuali o la definizione di
regole di accesso molto accurate per directory di
particolare interesse. Questi saranno alcuni degli
argomenti trattati nella prossima puntata del Corso
di Linux, nella quale impareremo a gestire a
puntino il nostro server web.

Riferimenti e links:
● Anche tu della tribù Apache (Articolo)
● Alcuni comandi con Options (riquadro)
● Bibliografia (riquadro)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/apache_corretto.html (12 di 12)03/04/2006 1.20.35


Consultazione della rivista Inter.Net sul world wide web.

Proteggi Forte Apache

Corso di Linux - Parte undicesima


PROTEGGI FORTE APACHE

Con neppure 20 righe di istruzioni è possibile


bloccare l'accesso ad aree sensibili del tuo server
web.
di Omar Scali smox@isacnet.com

Mettere in piedi un server web, come abbiamo già


visto, non è un'operazione troppo difficile. Basta
configurare gli opportuni parametri, copiare i file
che daranno vita ad un sito nella root directory di
Apache e il gioco è fatto.
Più difficile, invece, rendere più flessibile il
comportamento del server, filtrando gli accessi alle
pagine, creando zone ad accesso limitato, oppure
tenendo fuori da alcune sezioni navigatori
provenienti da alcuni siti. La procedura più
semplice è la classica accoppiata username/
password, ma, vedremo, un server apache 1.3
consente altre forme di protezione, anche più
sofisticate.
La configurazione degli accessi alle risorse di un
web server può essere operata su due livelli.
Possiamo definire delle regole generali, che
varranno per tutti le directory che costituiscono il
sito web, oppure possiamo operare una
configurazione mirata, directory per directory.

Gestione centralizzata
Se decidiamo di optare per una gestione
centralizzata del server, o meglio delle directory
nelle quali sono ospitate le pagine web, dovremo
prendere confidenza con access.conf, il file di
deputato al controllo degli accessi, che permette di
definire il tipo di accesso consentito agli utenti del
sito e i documenti a loro disposizione. Se non
avere esigenze particolari potete lasciare la
configurazione originale, che consente l'accesso a
tutti i documenti presenti nella DocumentRoot,
oppure potete aprire il file nel vostro editor e
modificarlo. Vediamo quindi di capire qual'è la
struttura del file access.conf e quali le direttive da
utilizzare per configurarlo.

Tag <Directory>

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (1 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

Per prima cosa è necessario familiarizzare con i


delimitatori, simili a tag html, che permettono di
definire il contesto a cui si riferiscono le direttive in
essi contenute. In effetti possiamo riferirci ad ogni
blocco di istruzioni contenuti fra questi tag come a
sezioni.
La sezione più comune in access.conf è
sicuramente Directory, identificata dal tag di
apertura <Directory> seguito dal percorso cui si
applica il blocco di istruzioni, e chiusa da </
Directory>.
Una sezione Directory tipo potrebbe avere, questa
forma:

<Directory /home/httpd/html>
DIRETTIVE
</Directory>

In questo caso il blocco di istruzioni, rappresentato


dal nome di fantasia DIRETTIVE, si applica alla
directory /home/httpd/html/. Vediamo quindi quali
sono le istruzioni tramite le quali possiamo gestire
una corretta politica di accesso alle directory di un
sito web.

Options
La direttiva Options consente di definire alcune
opzioni in forma di parole chiave, che trovate
descritte in tabella 1. Da notare che le opzioni
None e All non possono essere usate
contemporaneamente, in quanto sono
reciprocamente esclusive.

L'esempio seguente mostra la semplice


dichiarazione della directory /home/httpd/html/ in
cui è consentito visualizzare il listato del contenuto
(Indexes) e seguire link simbolici
(FollowSymLinks).

<Directory /home/httpd/html>
Options Indexes FollowSymLinks
</Directory>

AllowOverride
La direttiva AllowOverride consente di definire
quali opzioni possono essere prevaricate dalle
direttive particolari contenute nei file di accesso
delle singole directory (.htaccess).

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (2 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

L'esempio seguente mostra la semplice


dichiarazione della directory /home/httpd/html/ in
cui è consentito visualizzare il listato del contenuto
e seguire link simbolici. Per questa directory non
possiamo ridefinire nessuna direttiva utilizzando i
file .htaccess.

<Directory /home/httpd/html>
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
Autorizzazioni
Attraverso una serie di istruzioni possiamo
condizionare l'acceso a una directory tramite la
richiesta di un nominativo e una password, che
vanno specificati in un file di testo da creare
tramite l'applicazione htpasswd; unica condizione,
è necessario che i nominativi e password
contenuti non siano gli stessi che utilizzate per
accedere al sistema.
Per prima cosa, se vogliamo porre questa
limitazione, dobbiamo identificare il contesto nel
quale viene richiesta l'autorizzazione tramite la
direttiva AuthName. Ciò che specifichiamo con
questo comando apparirà come testo nella finestra
di richiesta dati che apparirà al visitatore che
tenterà di accedere all'area protetta. In pratica,
potremmo scrivere, ad esempio:

AuthName File personali

Dopo aver identificato il contesto, dobbiamo ora


indicare il tipo di autorizzazione richiesta/
concessa, anche se attualmente la scelta è
obbligata, dato che possiamo usare solo il tipo
Basic

AuthType Basic

Ora passiamo a specificare il nome e il percorso


del file da utilizzare come elenco di utenti e
password che, in questo caso, si chiama
htpasswd. Per crearlo e aggiornarlo dobbiamo
utilizzare sempre la stessa utility, htpasswd, e non
abbiamo alcuna limitazione sulla sua posizione.
Nel nostro esempio abbiamo creato una directory
a parte chiamata autorizzazioni

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (3 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

AuthUserFile </home/httpd/autorizzazioni/+
htpasswd>

Adesso creiamo a mano il file .htgroup da


utilizzare come elenco dei gruppi abbinati agli
utenti.

AuthGroupFile < /home/httpd/+


autorizzazioni/.htgroup>

Infine inseriamo qualche istruzione che obblighi il


server a richiedere l'identificazione dell'utente
attraverso una login e una password. Possiamo
indicare un riconoscimento basato sul singolo
utente, elencato di seguito alla direttiva, oppure
sui gruppi specificati, o, infine, lasciare che
qualsiasi utente riconosciuto dalla macchina possa
accedere alla directory.

require user utenti...


require group gruppo...
require valid-user

Ecco un esempio di come potrebbe essere definita


una sezione ad accesso ristretto con
riconoscimento degli utenti. Da notare che solo gli
utenti nomeA nomeB possono entrare nella parte
del sito contenuta nella directory personale.

<Directory /home/httpd/html/+
personale>
AllowOverride None
Options Indexes

AuthName "File personali"


AuthType Basic
AuthUserFile /home/httpd/+
autorizzazioni/htpasswd
AuthGroupFile /home/httpd/+
autorizzazioni/.htgroup
require user nomeA nomeB

</Directory>

Limitazione dell'accesso in base agli host di


provenienza
Oltre a limitare l'accesso alle directory in base agli

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (4 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

utenti possiamo decidere di "tenere alla larga", o


lasciare entrare, interi host, indicandoli attraverso
il nome di dominio, completo o parziale, oppure
attraverso l'indirizzo numerico, completo o
parziale.

deny from host


allow from host

Se decidiamo una politica di accesso di questo


tipo dobbiamo assicurarci, però, che Apache sia in
grado di risolvere i nomi di dominio, attivando la
direttiva HostnameLookups nel file httpd.conf.
Volendo essere ancora più esigenti, possiamo
sostituire al nome dell'host "all"

deny from all


allow from all

Nel primo caso nessuno potrà entrare, mentre nel


secondo non abbiamo alcuna restrizione.
Nell'esempio seguente possiamo vedere come
l'accesso alla directory personale sia negato agli
utenti del dominio warning.com:

<Directory /home/httpd/html/+
personale>
AllowOverride None
Options Indexes

order allow,deny
allow from all
deny from .warning.com
</Directory>

Come indicato dalla direttiva order, vengono prese


in considerazione prima le istruzioni che
consentono l'accesso, e solo dopo quelle che lo
negano. In effetti, un tale ordine potrebbe essere
espresso come "Consenti a tutti, tranne che a
warning.com".

L'esempio seguente invece concede solo


l'accesso solo al dominio secure.com

<Directory /home/httpd/html/+
personale>
AllowOverride None
Options Indexes

order deny,allow
deny from all

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (5 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

allow from .secure.com


</Directory>

In questo caso, dato l'ordine in cui vengono


considerate le direttive, viene prima negato
l'accesso a tutti, e poi posta un'unica eccezione
per il dominio secure.com.
Ora diamo un'occhiata ad un ulteriore esempio in
cui indichiamo non solo un dominio, ma anche ad
una sottorete, indicata con un indirizzo numerico:

<Directory /home/httpd/html/+
personale>
AllowOverride None
Options Indexes

order deny,allow
deny from all
allow from .secure.com 192.168.2.
</Directory>

Tag <Limit>

All'interno di una sezione Directory possiamo


annidare un gruppo di istruzioni, specificate dal
tag Limit, che consentono di limitare solo alcuni
metodi di accesso specificati. Ad esempio,
possiamo limitare l'accesso ad una directory solo
nel caso in cui vengano utilizzati i metodi GET e
POST, nel qual caso viene richiesta una login e
password. In linea di massima, comunque, la
sezione Limit può contenere qualsiasi direttiva,
precludendo però la dichiarazione di ulteriori
sezioni.
Vediamo, in pratica, come tradurre in listato la
limitazione che abbiamo appena ipotizzato:

<Directory /home/httpd/html/+
personale>
AllowOverride None
Options Indexes

AuthName Informazioni riservate


AuthType Basic
AuthUserFile /home/httpd/+
autorizzazioni/.htpasswd

<Limit GET POST>


require valid-user
</Limit>

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (6 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

</Directory>

Tag <Location>

Le sezioni Location raccolgono le direttive di


controllo per un particolare indirizzo url. Si tratta di
qualcosa molto simile alla sezione Directory, con
la differenza che in questo caso le limitazioni
vengono poste nei confronti di un'url piuttosto che
ad una directory. Spesso si fa ricorso a questo tipo
di istruzioni quando si vuole abilitare l'accesso a
pagine di particolare importanza, ad esempio
interfacce di gestione o pagine di statistiche del
server, solo da alcuni host.
Nell'esempio seguente concederemo la
consultazione dell'url /status (www.mioserver.
com), cui è abbinata la generazione e
visualizzazione di informazioni sul sistema, solo
all'host secure.com:

<Location /status>
SetHandler server-status
order deny,allow
deny from all
allow from secure.com
</Location>

Gestione distribuita
Quando il server riceve una richiesta del
documento verifica se all'interno della directory
contenente la pagina esiste un file chiamato .
htaccess, e se lo trova esegue le direttive che vi
sono specificate; In questo caso, però, le
limitazioni non valgono per qualsiasi directory, ma
solo per quella in cui si trova il file di controllo.
Volendo, potreste configurare Apache senza mai
fare uso dei file .htaccess, ma nel caso li
utilizzaste, ricordatevi che la loro gestione deve
essere controllata attraverso la direttiva
AllowOverride nel file access.conf.
Ma come creare un file di controllo?

Creazione del file .htaccess


Il file .haccess non è altro che un semplice
insieme di direttive in formato ascii molto simili al
seguente esempio:

AuthUserFile /home/httpd/+
autorizzazioni/htpasswd

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (7 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

AuthName "File personali"


AuthType Basic

Come potete notare, la sintassi è identica a quella


utilizzata nel file access.conf e quindi non richiede
commenti aggiuntivi; in effetti è una trasposizione
localizzata delle direttive globali di configurazione
e possono contenere, in linea di massima, le
direttive elencate nella tabella 4

Creazione del file di password htpasswd


Una volta specificate le limitazioni del caso, ci
troviamo di fronte all'esigenza di creare il file
contenente gli utenti che potranno accedere alle
varie zone a utilizzo ristretto. Per questo scopo
possiamo utilizzare il programma htpasswd,
un'utility distribuita insieme ad Apache.
Per creare il file htpasswd useremo quindi il
comando

htpasswd -c /percorso/htpasswd nomeutente

il quale vi richiederà di inserire una password per


l'utente specificato. Nel caso sia necessario
inserire un altro utente all'interno del file htpasswd,
usate la stessa linea di comando, ma senza
l'opzione -c, utilizzabile solo la prima volta per la
creazione del file in questione.

File di gruppi
Per facilitare la gestione di utenti che accedono a
directory protette, possiamo realizzare dei gruppi e
inserirli in un file chiamato .htgroup, il quale non
contiene alcuna password. La sintassi dei record
che compongono questo file è molto semplice:

nomegruppo: utente

Se, ad esempio, volessimo raggruppare alcuni


utenti, i cui nominativi e password sono specificati
nel file .htpasswd, nel gruppo webmaster, la
sintassi sarebbe la seguente:

webmaster: pippo topolino pluto

Nell'esempio seguente limitiamo l'accesso a un


insieme di utenti ai quali viene richiesto
nomeutente e password.
Proviamo ora a fare un esempio pratico,Il file .
htaccess e htpasswd devono essere modificati

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (8 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

secondo lo schema seguente, inoltre è necessario


creare un altro file (.htgroup) che riporta i nomi
degli utenti che costituiscono il gruppo. Ricordo
che il file .htaccess deve risiedere nella directory
da proteggere.
Sicurezza
Agendo opportunamente su alcuni parametri di
configurazione del server, è possibile ottenere un
servizio http relativamente "sicuro". Sottolineiamo
alcuni punti:

1. È molto importante che l'utente e il gruppo con i


quali opera il demone http corrispondano a
nobody, ovvero ad un utente privo di particolari
privilegi.

2. I file amministrativi di Apache, cioè quelli di


configurazione e di registrazione degli eventi, e
quelli che costituiscono i documenti ipertestuali
non devono essere accessibili in scrittura da
nessuno ad esclusione di root.

3. È consigliabile utilizzare la direttiva


SymLinksIfOwnerMatch per evitare che gli utenti
locali possano creare link simbolici ai file di
sistema.

4. È bene evitare di permettere l'utilizzo di


programmi cgi al di fuori della directory definita
con la direttiva ScriptAlias nel file srm.conf.

Il vero problema del meccanismo di autenticazione


di Apache consiste, purtroppo, nel continuo
scambio fra utente, o meglio il suo navigatore, e
server della password e della login. Dato che http
è un protocollo privo di stato, ad ogni accesso
riservato l'utente deve inviare ad Apache il proprio
nominativo e la password, che in questo modo
viaggiano di continuo in chiaro sulla rete.
Che sicurezza ci può offrire questo sistema di
autenticazione? Quando ci colleghiamo digitiamo
la password in chiaro e la parola viene trasmessa
come testo nella rete, nonostante sia nella forma
codificata (uuencoded); dunque la password non
sarà immediatamente riconoscibile da chiunque
osservi la trasmissione del pacchetto, però lo sarà
dopo una facile decodifica. Il protocollo http quindi
non è più sicuro di un semplice telnet, ed è
soggetto ad intercettazioni nemmeno troppo
complicate. Ricordatelo quando dovrete installare
il vostro nuovo server Apache.

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (9 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

Riferimenti e links:
● Proteggi Forte Apache (Articolo)
● Alcune opzioni della direttiva Options (listato)
● Alcune opzioni della direttiva AllowOverride
(listato)
● Alcune delle direttive utilizzabili nella sezione
Limit (listato)
● Alcune delle direttive utilizzabili nella file.
htaccess (listato)

Torna indietro

http://www.interpuntonet.it/RIVISTA/49/linux/corso_linux_11.html (10 di 10)03/04/2006 1.20.37


Consultazione della rivista Inter.Net sul world wide web.

Glossario Linux - Seconda Parte

Glossario Linux I comandi fondamentali - Seconda


parte
Di Maurizio Napolitano napo@itc.it

ls - mostra il contenuto di una directory o gli


attributi di un file

Ls è un comando versatile che consente di


ottenere la lista (da qui ls) del contenuto di una
directory. Di solito, chi si avvicina la prima volta a
Linux è solito dare il comando dir e accontentarsi
di questo, senza sapere che in realtà ha lanciato
un per ls -la, alias definito nei file di
inizializzazione del sistema in molte distribuzioni
Linux.
Andiamo però per gradi, nello scoprire cosa ls può
fare per noi. Per prima cosa, provate a digitare ls;
otterrete un semplice elenco, nulla più.. Per avere
qualche informazione in più, ad esempio per
visualizzare i file che iniziano con un punto, di
solito nascosti, aggiungete alla linea di comando
l'opzione -a, mentre per visualizzare il contenuto
delle sotto directory usate un -R. Se infine volete
sapere tutto dei vostri file, tutto ben incolonnato,
con nome del proprietario, del gruppo, dimensioni,
ora dell'ultimo accesso, nome del file ed eventuali
link che puntino ad esso, aggiungete un ulteriore
parametro, -l.

Un tipico risultato a video del comando ls -la


potrebbe essere, ad esempio:

drwxr-xr-x 19 root root 1024 Sep 14 14:29 .


drwxr-xr-x 19 root root 1024 Sep 14 14:29 ..
-rw-r--r-- 1 root root 129557 Apr 15 1999 System.
map
drwxr-xr-x 2 root root 1024 Apr 15 1999 bin

Guardate la prima colonna; questa, ad esclusione


del primo carattere che indica la presenza di una
directory (d), va letta a blocchi di tre: la prima
tripletta indica gli attributi per l'utente, la seconda
per il gruppo, la terza per tutti coloro che possono
accedere al sistema. In breve, i possibili attributi
per un file sono:

- = nessun attributo

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (1 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

l = link
d = è una directory
r = permesso di lettura
w = permesso di scrittura
x = è un file eseguibile

Altri paramentri importanti sono:

Qualora abbiate necessità di "paginare" l'output


(caso in cui l'output scorra velocemente sullo
schermo) potete associare ls al comando more
usando una pipe (= |)

ls -laFR | more

Per operare su più file contemporaneamente


possiamo utilizzare i simboli * e ? detti anche
wildcards:

ls * (il carattere * può venire omesso) appaiono


tutti i file o directory.
ls testa* vengono visualizzati tutti i file o directory
che iniziano con la parola testa, con ls *coda
vengono elencati tutti i file che finiscono con la
parola coda.

L'uso del carattere ? vincola il numero di caratteri:


con ls ???, infatti vengono visualizzati solo quei
file che sono composti da 3 caratteri. Infatti:

ls nome? mostra solo i file composti da cinque


caratteri i cui primi quattro corrispondono alla
parola nome; quindi nome1, nome2 ecc..., ma non
nome12, nome123, ecc...

rm - elimina un file o una directory

Per cancellare un file basta digitare:

rm nomefile

Prima di eliminare un file, il sistema chiede una


conferma, il che evita spiacevoli errori. Ricordate
che in Linux non esiste alcun cestino e una volta
eliminato un file è molto difficile recuperarlo.

Se vi sentite sicuri, e non volete continuare a


rispondere alla domanda di conferma, forzate
l'esecuzione del comando con l'opzione -f

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (2 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

rm -f nomefile

Anche i rm supporta i simboli speciali come ? o *;


questo, però, costringe a racchiudere entro degli
apici quei nomi di file che contenessero un
carattere speciale:

rm 'nome?file'

Per cancellare una directory e il suo contenuto


utilizziamo, combinate, l'opzione -r, che indica di
operare sulle directory, e l'opzione -f, che vi evita
di confermare la rimozione di ogni singolo file:

rm -fr cartella

Attenzione: se entrate nel vostro sistema come


utente root, non lanciate mai il comando

rm -fr /

altrimenti cancellerete tutti i file dal vostro disco


rigido.

mount - monta un file system

Tutti i file in Linux sono gestiti come un grande


albero, la cui radice è la directory root (ossia /).
Ogni singolo file viene registrato su un device (una
periferica, dischi rigidi, dischi virtuali, floppy, cd
rom, zip, etc...), che va montato, ovvero aggiunto
alla struttura ad albero, per essere messo a
disposizione del sistema.
Montare una periferica non è un'operazione molto
difficile, basta seguire la seguente sintassi.

mount <device> <mount point> -t <tipo di


filesystem>

Per prima cosa, per poter montare un device,


dobbiamo capire come questo viene identificato
dal sistema operativo. I dischi rigidi, ad esempio,
vengono identificati con il prefisso (hd = hard
disk), al quale va aggiunto una lettera che indica
su quale dei canali ide si trova la periferica: hda
identifica il disco rigido master del primo canale,
hdb, lo slave del primo canale, hdc il master del
secondo canale ide, hdd lo slave. A questi
indicatori, va sempre preposto un /dev/, dato che i
device, ovvero le periferiche, vengono sempre
viste come esistenti in /dev.
Ovviamente, nessuno monta un intero disco, ma

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (3 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

di solito si vuole accedere alle partizioni che vi


sono state create: se avete necessità di montare
la prima partizione del disco master del secondo
canale ide, non monterete /dev/hdc, ma /dev/hdc1.
Per montare le periferiche scsi si segue, più o
meno la stessa strategia: i dischi rigidi sono visti
come /dev/sdXY (sd = scsi disk), con X che
identifica la posizione fisica del disco nella catena
scsi (a, b, c ,d), e Y indica la partizione cui si vuole
accedere. Ad esempio, /dev/sda1 identifica la
prima partizione sul primo disco nella catena scsi.
Per i cd è la stessa cosa, cambia solo
l'identificativo, che in questo caso è /dev/scdN,
con N che indica la posizione del cd nella catena
dei cd rom scsi.
Per quanto riguarda gli zip, sia scsi che ide, questi
vengono visti come dischi rigidi che hanno
un'unica partizione, la quarta (per lo zip parallelo
si deve compilare il kernel con il supporto per
questa periferica).
Infine i dischetti. I floppy sono visti come /dev/fdX
(fd = floppy disk). X può indicare sia il numero
dell'unità, e quindi quello che nei sistemi Windows
è il floppy A, in Linux diventa /dev/fd0, mentre B è /
dev/fd1, etc. In alternativa, con di X si possono
passare al sistema alcune informazioni di base
sull'unità. Ad esempio, possiamo indicare a linux
che il primo floppy ha una capienza di 1,44 Mb,
indicando la periferica con /dev/fd0H1440, con H
che indica altà densità, mentre per un dischetto a
doppia densità potremo puntare alla periferica /
dev/fd0d720.

Dopo avere individuato il device da montare,


dobbiamo scegliere un mount point, ovvero la
directory dalla quale poter accedere alla periferica.
Molte distribuzioni creano una directory dal nome
mnt nella quale si trovano altre sotto directory
come: cdrom, floppy, disk, etc.

Per montare correttamente un'unità, dobbiamo


sapere con esattezza quale file system contiene:

ext2 -> ext2 file system (quello di linux)


dos -> fat16 (quello di MS-DOS e Win95 prima
release)
vfat -> fat32 (quella di Win95 osr2, Win98)
iso9660 -> il file system dei cd rom

Ovviamente esistono molti altri tipi di file system;


noi vi abbiamo elencato solo quelle più comuni.

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (4 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

Ricordate, però, che affinché Linux possa


riconoscere una partizione bisogna che il supporto
per questa venga preventivamente compilato
all'interno del kernel

Proviamo quindi a rendere più chiara la sintassi


del comando mount facendo un esempio pratico.
Immaginiamo di dover montare una partizione
contenente Windows 98, che si trova sul master
del primo canale ide, accedendovi dalla directory /
mnt/disk:

mount /dev/hda1 /mnt/disk -t vfat

Attenzione: senza particolari modifiche al file /etc/


fstab (fs = file system, tab = table), tutte le
operazioni di mount potranno essere eseguite solo
dall'utente root.

umount - smonta un file system

La sintassi di umount è molto semplice:

umount <device> oppure umount <mountpoint>

Per "smontare" una periferica dal sistema, dovrete


per prima cosa uscire dal device, altrimenti ogni
vostro tentativo darà come unico risultato un
messaggio di errore che vi informerà
dell'impossibilità di effettuare l'operazione a causa
del "device busy". Ovviamente, se ci siete dentro,
la periferica risulterà per forza occupata.
Ritornando all'esempio dato per mount,
immaginiamo di volere "smontare" la partizione
precedentemente montata:

umount /dev/hda1

oppure

umount /mnt/disk

Attenzione: prima di togliere il supporto rimovibile


da una periferica, e stiamo parlando di floppy,
cdrom, zip e altro, assicuratevi di avere "smontato"
il device cui fa riferimento. In caso contrario
potrebbero accadere almeno due inconvenienti:
potreste semplicemente non riuscire ad estrarre il
supporto, come nei cdrom. Il problema più grave,
invece, si verifica con le periferiche, dato che
umount forza il flush della memoria tampone nella
quale vengono scritti i dati da inviare alla

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (5 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

periferica. Senza uno scaricamento forzato dei


dati dalla memoria tampone potrebbe accadervi lo
spiacevole inconveniente di estrarre un dischetto
vuoto, anche se siete sicuri di averci copiato
dentro qualcosa!

Torna indietro

http://www.interpuntonet.it/RIVISTA/52/Glossario_Linux/glossariolinux2corr52.html (6 di 6)03/04/2006 1.20.38


Consultazione della rivista Inter.Net sul world wide web.

Nessuno mi capisce

Ssl, Ssh, Stunnel: al riparo da sguardi indiscreti -


seconda parte NESSUNO MI CAPISCE
di Lindo Nepi (lindo@linux.it)

Continuiamo il nostro viaggio nella sicurezza,


affrontando ssh, il migliore protocollo per criptare
posta, web, telnet e ftp.

Anche se in un periodo in cui l'e-commerce sta


esplodendo e quindi la sicurezza delle transazioni
su web è un tema assai ricorrente, non dobbiamo
dimenticarci che ci sono ben altre occasioni nelle
quali la sicurezza dei nostri dati è in serio pericolo.
Nell'uso quotidiano di un server in rete i rischi non
sono davvero trascurabili. Se possiamo rendere
molto difficile indovinare la nostra password
d'accesso, dobbiamo considerare che difficilmente
un aggressore tenterà di recuperare a caso il
nostro codice d'accesso, sia perché non si tratta di
un'operazione fattibile in tempi brevi, sia perché si
correrebbe il rischio di venire immediatamente
scoperti al primo controllo dei log di sistema. Molto
più semplice, discreto, efficiente cercare di
intercettare i dati mentre viaggiano sulla rete.
Ovviamente, non è così semplice: non basta
essere collegati ad internet per "sniffare" le
connessioni altrui, ma occorre trovarsi in punti
strategici, come ad esempio su un gateway tra due
reti. Nessuna paura per chi si collega ad un
provider internet; se tutto è fatto alla perfezione non
c'è nessun rischio di intercettazione.
Il vero problema è che quando viene fata una login
via rete su un host, la password viene trasmessa in
chiaro, e quindi chiunque riesca ad intercettarla non
dovrà nemmeno fare la fatica di decrittarla. Certo,
con un tcp-wrapper o un'accoppiata user/host è
possibile inibire login remote da server non fidati,
ma anche questa soluzione non garantisce una
grande sicurezza, dato che un indirizzo ip può
essere simulato, in gergo spoofato, senza grandi
difficoltà.

É vero che il discorso del login su macchine remote


(telnet) non interesserà l'utente medio di internet,
dato che non
tutti hanno la possibilità di avere una shell su una
macchina remota;tuttavia é importante,

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (1 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

specialmente per coloro che amministrano server


da remoto ricorrere a software in grado di
crittografare le informazioni scambiate via telnet. È
quindi d'obbligo parlare di ssh, un protocollo che
pone un rimedio alla vulnerabilità di servizi come
telnet e pop, che trasmettono i dati in chiaro.
Innanzitutto diciamo che ssh non consente solo il
login su macchine remote, ma permette all'utente di
lanciare comandi a distanza, rimpiazzando utility
come rlogin, rsh, rcp, molto meno sicure.

Installando il servizio ssh, quindi, migliorerete


sicuramente la sicurezza del vostro server,
abilitando nel frattempo un canale di connessione
sicuro, che vi consentirà di entrare nel sistema in
tutta sicurezza. Per i nostri scopi tratteremo solo
della versione 1 di ssh, tralasciando per problemi di
compatibilità e di copyright ssh2, più recente ma
meno indicato dato che, per esempio, con un client
ssh1 non potrete comunicare con un server ssh2.

Per prima cosa procuratevi i sorgenti recandovi al


sito

www.cs.hut.fi

Decomprimete l'archivio tar.gz, entrate nella


directory che si è creata e lanciate lo script di
configurazione

./configure

In questa fase potete passare allo script alcune


opzioni per abilitare delle funzioni non attivate dalla
configurazione standard (per una lista completa di
opzioni digitate ./configure -help). Molto
interessante, ad esempio, è la possibilità di abilitare
il supporto per il tcp-wrapper, in modo da poter
utilizzare anche con ssh il meccanismo di controllo
basato sui file hosts.allow e hosts.deny:

./configure --with-libwrap

Il nostro suggerimento è di utilizzare il supporto tcp-


wrapper per inserire un elemento di sicurezza in più
nei collegamenti ssh. Infatti, se la richiesta di
connessione ssh proviene da un client non
presente nella lista di macchine che hanno il
permesso di collegarsi al server (cioé non sono
presenti nel file /etc/hosts.allow), l'utente riceve il
messaggio

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (2 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

Connection closed by foreign host.

e non può collegarsi in alcun modo. Come avete


visto, vale proprio la pena di spendere 5 minuti per
vedere quali opzioni potrebbero servirvi.
Configurate quindi il servizio e lanciate la
compilazione dei binari:

make
make install
make hostinstall

Bastano questi tre comandi per compilare,


installare i binari, copiare i file di configurazione
nelle directory a di destinazione e generare la
chiave che verrà utilizzata nelle connessioni cifrate.
La prima fase è conclusa, ed in effetti non è stato
molto difficile. Ben più complicato è intervenire sulla
configurazione del server ssh, che va modificata
agendo sul file

/etc/sshd_config

Qui possiamo definire in maniera molto precisa


cosa potrà fare il nostro server. Ad esempio,
possiamo decidere di utilizzare un sistema di
autenticazione rhost che consente a tutti gli utenti
provenienti da una serie di host definita nei file .
rhosts e .shots di accedere al sistema senza
inserire alcuna password.
Un metodo di autenticazione del genere, però, per
quanto comodo é estremamente pericoloso; basti
pensare al caso in cui un hacker riesca a far
passare il proprio computer per un host "fidato", e
vi renderete conto di come sia facile accedere ad
un server illegalmente, magari come root. Evitiamo
quindi che qualcuno possa collegarsi dell'esterno
come root e preveniamo l'utilizzo
dell'autenticazione rhost:

PermitRootLogin no
IgnoreRhosts yes
RhostsAuthentication no

Volendo possiamo aumentare maggiormente il


livello di sicurezza, agendo su

AllowHosts
DenyHosts

per negare/consentire ad alcuni client di collegarsi.

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (3 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

Ricordate, inoltre, che ssh utilizza i file

~/.ssh/known_hosts

/etc/ssh/ssh_known_hosts

per collezionare le chiavi pubbliche degli host


conosciuti. Infatti, non appena un nuovo client si
collega al nostro server, la sua chiave viene
registrata e conservate. Questo consente di avere
un maggiore controllo anche in caso di spoofing di
un host autorizzato alla connessione con il server:
anche se l'ip risulta il medesimo, la chiave spedita
dall'host risulta comunque differente da quella
memorizzata nel file known_hosts.
Proseguendo nella configurazione del demone,
possiamo impostare la lunghezza della chiave di
cifratura, variando il valore del parametro
ServerKeyBits; una chiave lunga meno di 512 bit é
ritenuta facilmente attaccabile e infatti il valore
consigliato è di almeno 1024 bit (nella versione
ssh2 é questa la lunghezza di default), che
garantisce un livello di sicurezza più che sufficiente.
Impostiamo quindi un valore medio

ServerKeyBits 768

Anche abilitando una chiave di cifratura, una


semplice password non da la sicurezza che può
garantire un meccanismo di autenticazione rsa,
basato su chiave pubblica: ci sono cioè due chiavi,
una per crittare (public key, conosciuta da tutti) e
l'altra per decrittare (private key, segreta) e non é
possibile, pur conoscendo la public key, risalire alla
private key. Attivata l'autenticazione rsa

RSAAuthentication yes

dovrete utilizzare l'utility ssh-keygen per generare


la coppia di chiavi, che viene protetta da una
passphrase, in modo che se vi viene rubata la
chiave pubblica questa non possa essere utilizzata
senza conoscere la frase che la "sblocca". La
chiave pubblica viene conservata in chiaro nel file

~/..ssh/identity.pub

nella home dell'utente, mentre la chiave è nel file

~/.ssh/identity

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (4 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

protetta dalla passphrase.


Per accedere ad un server utilizzando
l'autenticazione rsa dovremo quindi aggiungere la
chiave pubblica nel file

~/.ssh/authorized_keys

sulla macchina cui vogliamo collegarci. Fatto


questo, possiamo tentare un login remoto dando il
comando

ssh <nome_server> -l <username>

vi verrà chiesta la passphrase che protegge la


private key, dopodiché il server, nel caso abbiate
dato la risposta giusta, vi darà accesso al sistema.

Anche in questo caso, possiamo aggiungere al


meccanismo di autenticazione un controllo sugli
host di provenienza, abilitando rhost:

RhostsRSAAuthentication yes

Ecco, ora abbiamo un discreto livello di sicurezza,


e quindi non dobbiamo far altro che assicurarci che
il demone venga lanciato. Se non avete troppa
esperienza di Linux, potete semplicemente
riavviare la macchina.

Leggete la vostra posta in tutta sicurezza anche


con Netscape

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (5 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

Ssh all'opera

Ora è venuto il momento di provare il nostro server


ssh. Lanciamo quindi una connessione sicura
utilizzando l'utility ssh:

ssh <nome_server> -l <username>

Se, invece, non vogliamo accedere al sistema, ma


semplicemente avviare un programma, o eseguire
un comando, la sintassi da utilizzare è leggermente
diversa:

ssh <nome_server> -l <username> <comando>

Quest'ultimo utilizzo di ssh si presta ad alcune


operazioni di manutenzione molto comode. Ad
esempio, volendo eseguire sulla nostra macchina il
backup della home directory dell'utente pippo, che
risiede sul server server.dominio.it, basterà digitare:

ssh -l pippo server.dominio.it tar czf - /home/pippo/


> pippobackup.tar.gz

Complichiamo un po' le cose. Ipotizziamo di essere


a casa e di volere copiare dei file fra due server in
rete. Come fare? In questo caso usiamo un'utility
chiamata scp, molto simile a rcp, in grado però di
operare su canali criptati. Per copiare i file da una
macchina all'altra usate la seguente sintassi:

scp [utente@host1:]path/filesorgente
[utente@host2:]path/filedestinazione

che potrete complicare aggiungendo varie opzioni,


come ad esempio la copia ricorsiva delle directory
o la compressione dei dati durante il trasferimento;
un'occhiata alla man page di scp vi chiarirà meglio
cosa potrete fare con questa utility.

Pop3 e ssh

Come abbiamo già detto, con ssh è possibile fare


più cose che una semplice connessione telnet;
potete utilizzarlo, ad esempio, per rendere più
sicuro il prelievo delle email, mettendovi al riparo
dagli sniffer di rete che potrebbero intercettare la
password con la quale accediamo alla casella di
posta elettronica.
Per criptare un canale di comunicazione bisogna

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (6 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

ricorrere ad un'opzione di ssh chiamata port


forwarding ovvero la capacità di trasferire i servizi
da una porta all'altra. Infatti, grazie ad ssh
possiamo mettere in comunicazione una porta del
nostro sistema locale, ad esempio la 11110, con la
porta remota del servizio pop3, creando un canale
criptato sicuro. In questo caso, la sintassi da
utilizzare sarà:

ssh -C -f username@popserver -L 11110:


popserver:110 sleep 100

A questo punto basta lanciare un telnet sulla porta


11110 del vostro

telnet localhost 11110

e apparirà un messaggio simile a quello riportato in


figura; ora nessuno potrà più intercettare la vostra
password in chiaro!
Ora che avete creato un canale protetto, dovete
insegnare al vostro client di posta elettronica come
utilizzarlo. Se utilizzate fetchmail (www.tuxedo.
org ), un'utility in grado di scaricare sul vostro
computer tutti i messaggi depositati su vari
account, email che leggerete in locale con qualsiasi
mailreader, vi basterà aggiungere tre righe al suo
file di configurazione

.fetchmailrc

Immaginate di essere l'utente pippo, che vuole


accedere al server dolce.casa.it, sul quale si trova
la sua casella di posta elettronica protetta dalla
password cipresso. Aprite il file di configurazione
utilizzando un editor di testo e scrivete:

poll dolce.casa.it via localhost port 1234 with proto


pop3:
preconnect "ssh -f -L 1234:dolce.casa.it:110 pippo
sleep 20 </dev/null >";
password cipresso

In questo modo fetchmail non si collegherà al pop


server ma a localhost, sulla porta 11110, mentre il
comando preconnect esegue il forwarding tra la
porta 110 del pop server e la porta 11110 del
nostro host ogni volta che fetchmail viene eseguito,
facendo transitare i dati attraverso il canale creato
tramite ssh.

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (7 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

Usando un vero e proprio mail reader, le cose si


rivelano più semplici: vi basterà abilitare ssh sul
pop server e li fare un port forwarding dalla porta
110 alla stessa porta 110 (accertiamoci prima di
aver tolto da inetd.conf la riga che lancia il demone
pop3 per evitare di trovare la "porta occupata"). Ora
basta inserire nel vostro client i dati relativi al pop
server, come se si trattasse di un servizio in chiaro,
e non vi accorgerete di alcuna differenza.

X11 ATTRAVERSO ssh

Abbiamo parlato in passato di come tramite X sia


possibile eseguire applicazioni su server remoti
vedendone l'output sulla nostra macchina. Anche in
questo caso, possiamo utilizzare ssh per rendere il
tutto più sicuro.
Occorre innanzitutto avviare il server X sulla propria
macchina e quindi collegarsi, da una finestra xterm,
via ssh ad un host remoto, senza impostare la
variabile d'ambiente DISPLAY, dato che viene
configurata automaticamente. Fatto questo,
lanciate un qualsiasi applicativo e ne vedrete
l'output sul nostro monitor.
Per aprire una shell sull'host remoto utilizzate il
comando

xterm -e ssh nomehost &

oppure, potete direttamente lanciare un applicativo


senza entrare nella shell remota, utilizzando il
comando :

ssh -n host programma_da_eseguire

VNC e ssh

A volte, si ha la necessità di lavorare sulla propria


macchina, usando il solito desktop e le applicazioni
solite, anche da remoto. In questi casi viene
comodo usare programmi per il virtual network
computing, come ad esempio Vnc, di cui parliamo
in un altro articolo, in questo numero. Anche qui in
questo caso, però il problema della sicurezza è
reale,, dato che lavoriamo con i nostri documenti,
trattando dati riservati che si trovano a viaggiare
lungo la rete.
Ricorrendo a ssh possiamo predisporre un canale
sicuro attraverso cui, tramite il forwarding, verranno
fatti passare i nostri dati. Abilitate sshd e il server
vnc sulla macchina server e lanciate il comando

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (8 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

ssh -C username@nomeservervnc -L 5901:


nomeservervnc:5901

sul client, eseguite quindi il vnc viewer, sempre


sulla macchina client, specificando che il server a
cui dovremo collegarci é localhost.

In pratica, tramite il port forwarding di ssh abbiamo


creato un canale sicuro che collega i due host, o
meglio che fa in modo che i dati passino dalla porta
5901 (ovvero il "desktop numero 1" del server) alla
porta 5901 del nostro localhost, cui noi andremo
poi a collegarci.
Dato che è possibile lanciare più di un server Vnc,
ricordate che è possibile usare per il forwarding
delle porte sequenziali, dalla 5902 in su, che
corrispondono al secondo, al terzo, al quarto
deesktop, etc. Un'ultimo avvertimento, visto che
siamo in tema di sicurezza: ricordatevi che
accedendo a un sistema Linux tramite Vnc avrete
gli stessi privilegi dell'utente che ha lanciato il
vncserver; attenzione quindi a quale utente lancerà
il server.

SIAMO VERAMENTE AL SICURO ORA?

La crittografia, come abbiamo visto, ci pone al


riparo da sguardi indiscreti, ma non crediate che il
vostro server o la vostra rete sia completamente al
sicuro solo perché tutte le informazioni sono
codificate.
Non dimenticatevi che i dati contenuti nei singoli
host che compongono la nostra rete, sono "in
chiaro" (ovviamente potreste ricorrere a soluzioni di
file system crittografato, come tcfs) e che
comunque anche un sistema a cui si accede via
ssh, specialmente se il software che gestisce il tutto
non é aggiornato, può essere violato ricorrendo alle
decine di utilità che si possono trovare facilmente in
rete.
Attenzione quindi a seguire i forum sulla sicurezza,
tenendo aggiornato il vostro server ssh con versioni
possibilmente non bacate e filtrando quanto più
possibile tutte le vostre comunicazioni con l'esterno
attraverso questo servizio. Non l'abbiamo citato, ma
così come potete criptare telnet e pop3, anche ftp
può essere codificato con una semplice linea di
comando. A voi scoprire come, non è difficile.

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (9 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

Riferimenti e links:
● Nessuno mi capisce (Articolo)
● Client per usare SSH da Windows (riquadro)
● Bibliografia AFIA (riquadro)
● LSH l'alternativa GNU a SSH (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/53/Ssh/articolo2sshcor53.html (10 di 10)03/04/2006 1.20.43


Consultazione della rivista Inter.Net sul world wide web.

GLOSSARIO LINUX

Glossario Di Maurizio Napolitano (napo@itc.it)

find - cerca uno o più file all'interno di una


directory

Le potenzialità di questo comando sono enormi:


potete cercare file per data, per dimensione, per
utente proprietario, per permessi di accesso, e
altro ancora, addirittura accodando alcuni comandi
per processare i file trovati.
La sintassi generale di find è:

find percorso -parametro argomenti

Questa, ovviamente, è la sintassi di base alla


quale possiamo aggiungere tutta una serie di
parametri che attivano funzioni particolari.
Vediamone alcuni:

name 'nome file'


Identifica il nome del file, fra apici ('), del quale si
vuole fare la ricerca. Il nome del file puó essere
composto dai metacaratteri * e ?. Il nome del file
deve essere messo tra apici (').
Esempio
Mostra tutti i file con estensione .jpg presenti nella
mia home -> find /home/napo -name '*.jpg'

iname 'nome file'


Ha lo stesso effetto del parametro name solo che
non fa alcuna differenza se il nome è scritto con
caratteri maiuscoli o minuscoli (ricordiamo che i
sistemi Unix fanno differenza fra lettera maiuscola
e minuscola).

size +/- n b/k


Trova i file di dimensioni uguali a n (n), maggiori di
n (+n) o minori di n (-n). Ovviamente n è un valore
numerico e la lettera b indica blocchi da 512 byte,
k kilobyte.
Esempio:
Cerca tutti i file immagine in formato jpg di
dimensioni superiori a 500K presenti nel disco
rigido -> find / -iname '*.jpg' -size +500k

user login_utente

http://www.interpuntonet.it/RIVISTA/54/GLOSSARIO/glossario4_54.html (1 di 5)03/04/2006 1.20.49


Consultazione della rivista Inter.Net sul world wide web.

Trova tutti i file di proprietà dell'utente login_utente


Esempio:
Visualizza tutti i file dell'utente napo in tutto il
sistema di dimensioni superiori a 100K -> find / -
user napo -size +100k

cmin n
Mostra i file modificati n minuti fa. N è un valore
numerico che espresso in minuti
Esempio:
Mostra tutti i file modificati/creati negli ultimi 10
minuti da parte dell'utente napo -> find / -user
napo -cmin 10

ctime n
Mostra i file modificati/creati negli ultimi n giorni
Esempio:
Trova tutti i file modificati negli ultimi 3 giorni ->
find / -ctim 3

exec comando {}/;


Esegue un comando di shell, passando ad esso il
valore trovato da find. Le due parentesi graffe
rappresentano il valore che find ha trovato, mentre
il simbolo / serve per evitare che questo valore
venga interpretato dalla shell e non dal comando
usato; infine, il punto e virgola, indica la fine del
comando.
Supponiamo che abbiate la necessità di trovare
tutti i file di proprietà dell'utente napo. che devono
essere definitivamente cancellati dal sistema:

find / -user napo -exec rm {} /;

Vediamo piú dettagliatamente cosa intendiamo:


con find specifichiamo che vogliamo fare una
ricerca, con / intendiamo farla a partire dal ramo
principale del nostro sistema, con -user napo
intendiamo trovare tutti i file di proprietà dell'utente
napo, con -exec ci prepariamo a passare un
comando di shell: in questo caso rm.

more - mostra il contenuto di un file, una


schermata per volta

Spesso si ha la necessità leggere il contenuto di


un file ascii. Bene, è il caso di imparare ad
utilizzare al meglio il comando more. La sua
sintassi è, tutto sommato, banale:

more nomefile

http://www.interpuntonet.it/RIVISTA/54/GLOSSARIO/glossario4_54.html (2 di 5)03/04/2006 1.20.49


Consultazione della rivista Inter.Net sul world wide web.

Spesso gli utenti si fermano a questo livello d'uso,


ma si possono passare molti altri parametri che lo
rendono molto più flessibile. Provate a vedere
quante opzioni avete a disposizione, premendo il
tasto h, una volta che avete lanciato il comando
more. Analizziamone alcune, dividendole in
procedure di spostamento e di ricerca:

Procedure di spostamento all'interno del testo


More provvede a bloccare il testo mostrando di
volta in volta k linee (k di default vale 25). Per
spostarsi da pagina a pagina, potete utilizzare
diversi comandi: barra spaziatrice (<space>),
enter/invio (<return>), z, s, d o ctrl-d; per tornare
indietro, invece, potete avvalervi del solo tasto b.
Letto ciò che volete sapere, uscite dal programma
con ctrl-c, oppure con il tasto q.

Procedure di ricerca stringhe


Durante la lettura di un file, è facile che si abbia
l'esigenza di cercare una determinata stringa:
provate quindi a premere il tasto / seguito dalla
stringa che stiamo cercando; se avete bisogno di
trovare più occorrenze di una stessa stringa,
premete più volte il tasto n e visualizzerete di volta
in volta le parti del testo dove essa si trova. Siete
arrivati in fondo al testo e volete intraprendere
nuove ricerche? Tornate all'inizio con il tasto ' e
controllate su quale riga vi trovate con =, mentre
con :f visualizzerete il nome del file che avete
aperto. Avete trovato un errore? Premete v e
aprirete il file nel vostro editor di default.

file - indica il tipo di file

Quando trovate un file privo di estensione nel


vostro sistema e non ne conoscete il contenuto, il
comando file è pronto a darvi una risposta,
dandovi le giuste informazioni sul file che gli avete
passato come argomento. L'uso del comando è
molto semplice:
file nomefile

Diamo un'occhiata ad un paio di opzioni:

-z Tenta di analizzare i file contenuti in un archivio


compresso
-f nomefile legge dal file filename la lista dei file da
analizzare, i nomi dei file da analizzare devono

http://www.interpuntonet.it/RIVISTA/54/GLOSSARIO/glossario4_54.html (3 di 5)03/04/2006 1.20.49


Consultazione della rivista Inter.Net sul world wide web.

essere scritti uno per riga


Attenzione però: nel caso di file binari otterrete
risposte "precise" (ovviamente questo dipende da
quanto è aggiornato il vostro file di definizioni /etc/
magic) sul tipo di file (jpeg, mp3, gif, c compilato,
pdf, etc.), mentre con i file ascii non mancherà di
stupirvi con messaggi in grado di dirvi se si tratta
di un documento html, un sorgente C o codice perl
o, addirittura, se siete di fronte ad un semplice
documento ascii...scritto in inglese!

diff - confronta il contenuto di due file

Se dovete cercare delle differenze fra due file


apparentemente identici, diff è l'utility che fa per
voi: grazie ad un output sintetico, avrete a video
una "formula" che vi riassumerà tutte le differenze
in poco spazio.
Facciamo un esempio; supponiamo che il file1
contenga il seguente testo su due righe:

La nebbia a gl'irti colli


piovvigginando sale

e che il file2 contenga il testo su tre righe:

La nebbia a gl'irti colli

piovvigginando salle

Con il comando

diff file1 file2

otterremo

2c2,3
< piovvigginando sale
---
>
> piovvigginando salle

Quel 2c2,3 è la "formula" che indica le differenze


tra i due file e può essere interpretata nel
seguente modo:

"A partire dalla riga 2 del primo file [quindi il primo


numero] il secondo file contiene un testo diverso
[quella c fa da separatore] nella seconda e terza
riga [quel 2,3 finale]"

Con < viene indicato il testo individuato in file1,

http://www.interpuntonet.it/RIVISTA/54/GLOSSARIO/glossario4_54.html (4 di 5)03/04/2006 1.20.49


Consultazione della rivista Inter.Net sul world wide web.

che è diverso da quello in file2, mentre i tre trattini


separano i testi dei due file, e con > vengono
mostrati i contenuti che "sostituiscono" ciò che è
stato individuato nel primo file

Per migliorare la comparazione si può fare ricorso


a diverse opzioni (riportiamo quelle che riteniamo
più significative, per la lista completa è sufficente
digita diff --help):

-i non fa alcuna differenza tra caratteri maiuscoli e


minuscoli
-w ignora tutte le differenze di spazi fra parole
-b ignora le linee vuote
-I espressione non considera le linee che
contengono la parola espressione
-y mostra il contenuto dei due file su due colonne

Ricordiamo che queste opzioni vanno inserite tra il


comando e i file che vengono passati a diff, ossia
diff opzione file1 file2

Torna indietro

http://www.interpuntonet.it/RIVISTA/54/GLOSSARIO/glossario4_54.html (5 di 5)03/04/2006 1.20.49


Consultazione della rivista Inter.Net sul world wide web.

Ogni pacchetto al suo posto

Finita l'era dei tgz, le migliori distribuzioni si


affidano a pacchetti autoinstallanti che aiutano
l'utente a districarsi nell'intrico delle "dipendenze".
Cosa sono i package manager e come si
utilizzano

di Pier Luigi De Rosa p.derosa@flashnet.it

In principio era il tar. Chi di voi ha iniziato a usare


Linux qualche anno fa si ricorderà che l'unico
"pacchetto" a disposizione era il buon vecchio tar,
un semplice archivio nel quale erano presenti
indistintamente sorgenti o binari. Nessun database
dei pacchetti installati, nessun controllo sulle
versioni dei programmi, solo le poche opzioni
messe a disposizione dall'utility di sistema.
Questo sistema di gestione dei programmi è
continuato con le distribuzioni come Yggdrasil
Plug & Play, SLS o Slackware, che tuttora
continua a mantenere un suo discreto fascino a
causa di un certo look "pioneristico". Purtroppo, la
mancanza di un vero package manager è una
delle limitazioni più sentite in una distribuzione,
dato che non si ha la possibilità di gestire
automaticamente degli aggiornamenti delicati
come ad esempio la sostituzione della libc o di
altre parti vitali del sistema. Ovviamente, queste
sono operazioni non alla portata di tutti, anzi
decisamente gestibili solo da utenti esperti.

Ecco perché, a partire dalle successive


distribuzioni, si è pensato ad un meccanismo
basato su pacchetti che contenessero delle
informazioni da inserire in un database di sistema
che tenesse traccia dei programmi e delle librerie
installate. Questo ha portato allo sviluppo di
distribuzioni basati sui package manager, ovvero
delle utility in grado di gestire completamente gli
aggiornamenti di sistema evitando imbarazzanti e
sconvenienti conflitti fra versioni differenti di uno
stesso programma o fra pacchetto e librerie
necessarie al suo funzionamento.
I formati più diffusi di pacchetti sono
fondamentalmente due, gli rpm e i deb, utilizzati
rispettivamente in distribuzioni come RedHat,
Mandrake e SuSE per il primo e Debian per il
secondo. Spesso si ha a disposizione un package
manager ma non si sa come usarlo per compiere

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (1 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

compiti anche solo poco complessi, rinunciando


alle comodità che questo mette a disposizione.
Vediamo di colmare questa lacuna affrontando la
sintassi di base dei package manager per rpm e
deb.

Rpm, un database di pacchetti

Iniziamo con il formato rpm, usato in alcune fra le


maggiori distribuzioni in commercio. Come si
diceva, avere un package manager semplifica
operazioni come installazione di un pacchetto,
l'interrogazione del database di sistema per
vedere lo stato delle applicazioni, l'aggiornamento
o la rimozione di utility e programmi complessi.

Per prima cosa, assicuriamoci che il database dei


pacchetti sia aggiornato, ricostruendolo al volo:

rpm -rebuilddb

Come installare un pacchetto rpm? La sintassi di


base è semplice, avvalendosi di una unica
opzione -i (install):

rpm -i <nome pacchetto>

Questo comando installerà il pacchetto rpm senza


darci alcun output e quindi non consentendoci di
monitorare ciò che sta accadendo. Forziamo
quindi l'utility a fornirci qualche informazione in più
rendendo l'output "verboso" (-v), segnalando la
progressione delle operazioni con una serie di
cancelletti (-h). La nuova linea di comando, quindi,
sarà:

rpm -ivh <nome pacchetto>

Durante il processo di installazione il package


manager si occupa di ricavare alcune informazioni
circa le necessità del pacchetto, ovvero si informa
di quali altri programmi o librerie ha bisogno per
un corretto funzionamento: questo è ciò che
comunemente viene definito il controllo delle
dipendenze. I problemi sorgono quando volete
installare una libreria o un programma più vecchi
di quelli che avete nel vostro sistema, o comunque
hanno bisogno di componenti in versioni differenti
da quelli in vostro possesso. Senza alcuna
eccezione, il package manager vi negherà la
possibilità di installare alcunché. Se proprio non

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (2 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

potete fare a meno di ciò che state installando,


provate a utilizzare l'opzione -nodeps, che
disabilita il controllo delle dipendenze; nel caso in
cui non si riesca a forzare l'installazione nemmeno
usando -nodeps, ricorrete come ultima spiaggia a -
force che, come intuibile, forza l'operazione che
state eseguendo, senza alcuna assicurazione sul
risultato finale. Fate attenzione all'uso di questo
switch, dato che potreste davvero rendere
inservibile il vostro sistema o parti di esso. Altre
opzioni di "forzatura" possono essere
implementate tramite le opzioni -oldpackage, che
in caso di upgrade consente la sostituzione di un
package più nuovo con uno più vecchio, --
replacepkgs con la quale vengono installati anche
i pacchetti anche se risultano essere già presenti
nel sistema, totalmente o in parte, e --replacefile
che permette di installare un pacchetto anche se
ciò comporta la sovrascrittura di file già facenti
parte di altri package installati. Ricordate, però,
che -force riassume in sé tutte queste "costrizioni":
ecco la ragione della sua pericolosità.

Ipotizziamo di volere aggiornare un singolo


programma. In questo caso dobbiamo
semplicemente utilizzare -U che ci consentirà di
effettuare l'upgrade:

rpm -Uvh <nome pacchetto>

Abbiamo scaricato molti rpm. Qualcuno lo


abbiamo sicuramente installato, altri
probabilmente no. Cosa fare? Procediamo
all'installazione di tutti e vediamo con quali il
sistema si rifiuta di portare avanti le operazioni? Di
certo questa non è una procedura ergonomica,
soprattutto sapendo che con un semplice
comando possiamo interrogare il database di
sistema e sapere lo stato di tutti i package
installati:

rpm -qa

Notate che con 'q' specifichiamo l'intenzione di


interrogare il database, mentre con 'a'
selezioniamo tutti i pacchetti in esso registrati.

Attenzione, però: se vi venisse voglia di sapere


cosa è contenuto in un pacchetto...che non avete
installato? Anzi, che nemmeno avete sul vostro pc
o su un cd a portata di mano? Semplice, o quasi.

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (3 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

Basta usare l'opzione -p, specificando come


argomento l'indirizzo ftp dal quale scaricarlo: il
package manager si occuperà di prelevarlo,
analizzarne l'header e mostrare tutte le
informazioni. La sintassi, in questo caso è:

rpm -p ftp://<utente>:<password>@nomesito/
percorso/al/+
pacchetto.rpm

Se l'accesso al sito che ospita il pacchetto è


anonimo, potete omettere <utente>:<password>,
mentre se tralascerete di fornire la sola password,
questa vi verrà chiesta al momento della
connessione al sito.

Tornando al problema delle dipendenze, è spesso


utile verificare se un pacchetto è fondamentale
alla nostra distribuzione prima di installarlo. Ad
esempio, se vogliamo sapere quali altri package
richiedono un rpm che abbiamo intenzione di
installare, dovremo utilizzare lo switch -R (usabile
per esteso anche come --requires). Per esempio,
se volessimo sapere quali pacchetti dipendono da
ldd, dovremmo scrivere:

rpm -R ldd

Se, invece, il nostro scopo è quello di sapere a


quale pacchetto ldd appartiene, dovremo utilizzare
l'opzione -f

rmp -f ldd

Le opzioni di verifica consentono controlli di vario


tipo, grazie alla possibilità di effettuare ricerche
incrociate fra le informazioni contenute nei
pacchetti e quelle registrate nei database. Questo
è reso possibile dall'opzione -V, che abilita la
verifica incrociata, che può ignorare i file mancanti
(--nofile), i checsum md5 (--nomd5), gli errori di
verifica pgp (--nopgp).

Una volta installato, un pacchetto non più utile


andrebbe rimosso in maniera pulita, eliminando
ogni riferimento nel database di sistema. La
sintassi base per la rimozione di un pacchetto rpm
è:

rpm -e <nome pacchetto>

che può essere complicata aggiungendo ulteriori

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (4 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

switch, come ad esempio, --noscripts, per non


eseguire gli script di pre e post installazione, --
nodeps per non eseguire i controlli sulle
dipendenze, e molti altri ancora.
Le opzioni messe a disposizione da rpm sono
parecchie, ma non sono comparabili con quelle
fornite dal suo diretto concorrente, Debian, che
con dpkg e apt-get, mette a disposizione degli
utenti degli strumenti estremamente flessibili e
accurati. Passiamo quindi ad analizzare i package
manager di Debian, partendo dalle basi, fino ad
arrivare alla compilazione e installazione
automatica del kernel.

Dpkg, il grimaldello di Debian

Avendo in mano un nuovo pacchetto debian, il


primo impulso è quello di installarlo

dpkg -i <nome pacchetto>

per vedere cosa contiene. Fermi, inutile installare


un programma solo per vedere cosa è. Piuttosto
date il comando

dpkg --unpack <nome pacchetto>

in modo da estrarre i file senza configurarli, e


quindi senza installarli. A dire il vero, dopo un po'
si avranno diversi pacchetti non configurati, fra i
quali forse qualcuno vale davvero la pena
installare

dpkg --configure <nome pacchetto>

o meglio, se vi sono piaciuti tutti, potete installarli


in massa con

dpkg --configure --pending

Attenzione: come nel caso della Red Hat si


potrebbe incorrere in problemi di dipendenze e
quindi bisogna sapere affrontare ogni situazione
con un -force-azione. Fra le azioni più interessanti
che possono essere forzate, ricordiamo:

remove-essential, con la quale un pacchetto viene


rimosso anche se considerato come essenziale,
ovvero contiene dei comandi di base Unix

depends, ignora I problemi legati alle dipendenze.

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (5 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

conflicts, consente di installare un pacchetto


anche se configge con altri.

Prima di forzare qualsiasi comando, o di installare


qualche pacchetto sconosciuto, vi conviene
simulare sempre cosa accadesse se...

dpkg --purge pippo.deb --no-act

In questo caso, abbiamo simulato la cancellazione


(--purge) di pippo.deb; nel caso fosse un
pacchetto importante, beh nessuna
preoccupazione, abbiamo solo fatto finta.

Come abbiamo visto, è possibile cancellare un


pacchetto, usando il comando purge. Questo, non
solo consente di eliminare fisicamente i file del
pacchetto che intendiamo disinstallare, ma
consente di rimuovere anche i file di
configurazione che con l'opzione -r (--remove) non
vengono tolti.
Volete fare le pulizie di primavera? Provate
l'accoppiata fra --purge e --pending

dpkg --purge (o - remove) --pending

e tutti I pacchetti non configurati saranno


cancellati.

A volte, avendo a disposizione un cd con una


nuova distribuzione, si ha voglia di aggiornare il
database dei pacchetti a disposizione del proprio
sistema, in modo da rendere disponibili gli
upgrade senza dover ricorrere alla procedura di
setup dell'installazione. In questo caso, basterà
rendere fornire a dpkg l'elenco dei nuovi file a
disposizione, utilizzando due opzioni particolari.
Con

dpkg -update-avail Packages

sostituiremo il vecchio elenco di pacchetti


(installati e non) a disposizione di dpkg (ma anche
apt-get, come vedremo in seguito), col il contenuto
del file Packages, fornito con ogni distribuzione,
mentre con

dpkg -merge-avail Packages

fonderemo le vecchie informazioni con le nuove.

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (6 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

Infine, come rendersi conto dei pacchetti a


disposizione del nostro sistema? Provate a dare il
comando

dpkg -A /var/lib/dpkg/available.

e saprete quali sono I pacchetti, installati e non, a


disposizione del vostro Linux, mentre con

dpkg -l

otterrete la lista di tutti i pacchetti installati.


Di opzioni ne abbiamo ancora parecchie a
disposizione, ma vi rimandiamo al manuale in
linea del programma per avere un elenco
dettagliato, e molto lungo, di tutte le operazioni
che potrete effettuare con dpkg.
Ora, invece, daremo un'occhiata ad una comoda
utility di Debian che consente di effettuare in
maniera estremamente semplice gli aggiornamenti
dei pacchetti, utilizzando cd, dischetti, o anche
internet. Si chiama apt (a package tool) e, in
pratica, funziona come dpkg, solo che consente
una maggiore flessibilità riguardo alle fonti di
installazione e al modo di ricerca e gestione dei
pacchetti. Grazie alla presenza di un file di
configurazione, possiamo passare al programma
delle opzioni in maniera stabile, tramite le quali
possiamo definire dove cercare i file da installare,
e in che modo cercarli. Vediamo un po' da vicino
la sintassi da adottare nel file di configurazione di
apt

/etc/apt/sources.list

Per prima cosa, bisogna ricordare che il file


sources.list può contenere l'indicazione di più
media e di più modalità di scaricamento dei
pacchetti Debian; l'importante è tenere distinte le
definizioni una per riga.
La definizione standard di una fonte di pacchetti
segue la seguente sintassi:

deb uri distribuzione [componente1]


[componente2] [...]

Analizziamo le diverse parole chiave contenute in


questa stringa.

Uri. E' l'url del sito nel quale si trova l'archivio dei
pacchetti debian dai quali possiamo fare

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (7 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

l'aggiornamento del nostro sistema. Da questo


indirizzo apt ricaverà le informazioni necessarie
per gestire gli aggiornamenti. L'indirizzo può finire
con una '/' o meno, a seconda di quanto
specificato dalla distribuzione. L'uri, indica, inoltre,
il tipo di protocollo/supporto utilizzato per il
prelievo dei file:

cdrom - indica ad apt che l'archivio si trova su un


cdrom
file - consente di definire una qualsiasi directory
all'interno del disco rigido come archivio
http - indica che l'archivio si trova su un sito
remoto e che i file vanno prelevati via http
ftp - indica che l'archivio si trova su un sito remoto
e che i file vanno prelevati via ftp

Facciamo ora un esempio. Immaginiamo di volere


configurare apt, affinché cerchi i pacchetti che
vogliamo installare sul nostro sistema,
direttamente dal sito di debian, usando la
distribuzione stabile, che si trova nella directory
archivi, e prelevando il tutto via http dalle sezioni
main e contrib. La linea di configurazione
appropriata sarà quindi:

deb www.debian.org stable main contrib

Abbastanza intuitivo e semplice da configurare. La


parte difficile è usare apt, anzi sarebbe difficile se
non avessimo a disposizione apt-get, una comoda
interfaccia a linea di comando che consente di
semplificare molto il lavoro.
Vediamo come usare questa utilità. Per prima
cosa diamo un'occhiata alla sintassi:

apt-get [options] [command] [package ...]

Dove a command può corrispondere

update - con questo comando si aggiorna la lista


dei pacchetti ai quali apt può accedere. In pratica,
l'utility si collega al sito remoto e legge il contenuto
del file Packages.gz. Questa operazione è
d'obbligo dopo avere apportato delle modifiche al
file sources.list.

upgrade - viene effettuato un aggiornamento di


tutti i pacchetti installati nel sistema. Ottimo per
aggiornare in automatico la distribuzione.

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (8 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

dist-upgrade - oltre alla funzione di base fornita da


upgrade, questo comando risolve i problemi dati
dalle dipendenze introdotte dai nuovi pacchetti,
cercando di aggiornare, in caso di problemi, solo
quelli più importanti a scapito di quelli meno utili.

install - se volete installare un pacchetto, basta


specificare il nome del programma, non il nome
del file. Per intenderci, per installare cdrecord
dovrete scrivere apt-get install cdrecord e non apt-
get install cdrecord_2.3.5_2.deb. Da notare che se
vi sono dipendenze da altri pacchetti non presenti
nel sistema, questi vengono installati
automaticamente.

remove - valgono le stesse regole alle quali


dobbiamo attenerci per install, solo che in questo
caso rimuoveremo un pacchetto invece di
installarlo.

check - è un comando "diagnostico" che consente


di aggiornare la cache di apt e controllare se ci
sono dei pacchetti non completamente installati

clean - pulisce la cache di apt, rimuovendo i file


scaricati.

Oltre ai comandi, apt-get accetta alcune opzioni


che ne modificano il comportamento. Citiamo solo
le più utili:

-m - ignora i pacchetti mancanti

-d - scarica i pacchetti senza installarli

-f - ripara le dipendenze irrisolte. Se avete dei


pacchetti che dipendono da altri non ancora
installati, lanciate apt-get -f install e i vostri
problemi verranno automaticamente risolti
Ora che sapete come aggiornare il vostro sistema
Debian, vogliamo affrontare per ultima un'utility
molto comoda che vi consentirà di gestire le varie
versioni del kernel, compilandole e
pacchettizzandole in un deb. Volete sapere come
fare? Addentriamoci allora nella sintassi di make-
kpkg.

Un kernel in scatola

Una cosa cui un utente Linux sicuramente non è


abituato è costruirsi un pacchetto dopo avere

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (9 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

compilato un kernel. I vantaggi, a pensarci, sono


molti: è possibile gestire via package manager le
varie versioni installate, si possono installare i
moduli in automatico, insomma, si hanno tutti quei
benefici per i quali sono stati creati i formati
pacchettizzati.
In Debian, creare un pacchetto kernel e installarlo
è davvero semplice. Per prima cosa posizionatevi
nella directory root dei sorgenti del kernel, lanciate
make menuconfig e configurate il kernel. Ora,
avete due scelte: o lanciate a mano una breve
sequenza di comandi, oppure create un piccolo
script bash di pochi kb del tipo:

#!/bin/sh
make-kpkg kernel_image kernel_headers

Esaminiamo gli argomenti di questo script. Per


prima cosa, richiamiamo l'utility make-kpkg, cui
facciamo seguire

kernel_image

che si occupa di creare un pacchetto debian del


kernel e dei moduli selezionati. Se non viene
trovato alcun file di configurazione del kernel, ne
viene usato uno di default simile a quello utilizzato
per i boot floppy. Il pacchetto creato si occupa di
gestire i link simbolici e di lanciare LILO, creando
un nuovo file di configurazione che punta al kernel
appena installato. Non solo: la procedura di
installazione offre all'utente la possibilità di copiare
il kernel in un floppy, formattandolo all'occorrenza.
Creato il deb del kernel, occupiamoci degli header,
sempre utili, installando anch'essi tramite l'opzione

kernel_headers

che si occupa di creare un pacchetto contenente i


file di header inclusi nel kernel di Linux,
producendo anche gli script richiamati durante
l'installazione e la rimozione del pacchetto stesso,
per gestire il link simbolico /usr/src/linux, in modo
che punti sempre all'ultimo pacchetto sorgente/
header presente nel sistema.

Già solo con queste due righe di script potreste


gestire al meglio il vostro kernel, compilandolo e
installandolo senza alcun problema, anzi spesso
risolvendo qualche intoppo di cui non si riesce a
capire la natura. In questo caso, quale migliore

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (10 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

alleato del sistema operativo stesso che ricompila


il proprio cuore e lo installa?

Come avete visto, i package manager sono


qualcosa più di un semplice modo per semplificare
la vita di un utente Linux. Troppo spesso, infatti,
gestire l'aggiornamento di programmi con decine
di dipendenze si rivela un compito troppo difficile
da risolvere a mano. Provate, infatti, a pensare di
installare Gnome: a mano è un inferno, con i giusti
rpm o deb diventa talmente facile, al punto tale
che usando apt-get basta dare un comando e
tornare al lavoro. E non dimenticate che se proprio
non amate le utility a linea di comando ci sono
diversi strumenti visuali che vi vengono in aiuto
rendendo l'installazione di un programma
finalmente facile e indolore.

Torna indietro

http://www.interpuntonet.it/RIVISTA/55/Package_Manager/packagemanagerscor55.html (11 di 11)03/04/2006 1.20.51


Consultazione della rivista Inter.Net sul world wide web.

Bash, scripting e le espressioni


regolari

Bash scripting e le espressioni regolari Siete alle


prese con mille lavori di routine sul vosto sistema?
Affidatevi alla bash e alle espressioni regolari per
fare il "lavoro sporco"

di Gancarlo Erra <rofus@mindless.com>

Fra le caratteristiche che distinguono un sistema


operativo Unix (quindi anche Linux) da tutti gli altri
la shell gioca un ruolo di prim'ordine: chiamata
anche interpete di comandi o interfaccia a
caratteri, questa ha il preciso compito di fornire
un'interfaccia tra il sistema operativo vero e
proprio e l'utente. Nel nostro caso, poi, questa
definizione è anche abbastanza riduttiva dato che
la shell non solo è una semplice interfaccia ma,
come vedremo nel corso dell'articolo, si proprone
come completo sistema di sviluppo e
amministrazione. Chiunque abbia mai scritto uno
script shell di una certa complessità sa benissimo
che è possibile utilizzare una lunga serie di
comandi interni ed esterni tramite i quali si può
gestire praticamente ogni aspetto del sistema
operativo.
Possedere (e saper usare) una shell con i
comandi base utente e di sistema è un pò come
avere il lego dato che possiamo costruire molti
programmi diversi l'uno dall'altro semplicemente
combinando a dovere i pezzi a disposizione. A tal
proposito, possiamo suddividere i nostri pezzi in
due categorie: comandi interni e comandi esterni. I
comandi interni sono quelli messi a disposizione
dalla shell stessa e consistono principalmente in
comandi base come "cd" o "pwd", mentre quelli
esterni raggruppano il software installato sulla
nostra macchina, ovvero qualunque programma
che possa interagire in qualche modo con shell e
con l'utente, come, ad esempio, le utility "sed",
"grep", "ps" etc.
Nel corso del nostro articolo vedremo come questi
comandi possano essere combinati per interagire
con l'utente e compiere operazioni complesse,

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (1 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

manipolando le informazioni in entrata e in uscita.


E' quindi il caso ora di familiarizzare con alcuni
termini di base che bisogna assolutamente
conoscere quando si lavora con una shell.

Date un'occhiata alla tabella 1 e memorizzate


bene questo breve schema: è un mattone
fondamentale dal quale non si può assolutamente
prescindere. Infatti, operando sia dal prompt che
all'interno di uno script quasi sempre ci serviremo
dei vari tipi di reindirizzamenti possibili sotto Linux,
dato che ogni cosa sulla quale opereremo può
essere considerata alla stregua di un flusso di dati
da redirigere tra i comandi. Quali sono i tipi di di
reindirizzamento che possiamo utilizzare? Anche
in questo caso riassumiamo in tabella 2 tutti i
comandi a nostra disposizione .

Da un'attenta analisi di queste prime due tabelle


dovrebbe già essere chiaro cosa possiamo fare
con una semplice riga in shell. Facciamo un
esempio, interpretando questa riga di comando:

cat << eof | egrep -v ^#

Sappiamo che il comando cat passa il suo stdin


(un file o lo stdout di un'altro comando) sullo
stdout, mentre con "|" redirezioniamo lo stdout di
comando1 (cat) come stdin di comando2 (egrep).
In pratica, diamo ad un comando che consente di
ricercare una stringa determinata nello stdin
(egrep) l'output di un altro comando che mostra su
stdout il contenuto di ciò che gli viene passato
come argomento. Ecco quindi che la nostra
istruzione può essere interpretata come:

1) Leggiamo dallo stdin l'input immeso dall'utente,


fino a che non scrive "eof" (cat << eof)

2) Prendiamo il testo inserito e lo passiamo come


input al filtro applicato con egrep, che nel nostro
caso elimina ogni riga che contenga il carattere "#"
al suo inizio (^).

Abbiamo ottenuto due cose importantissime:


l'interazione con l'utente e un processo
decisionale che si basa sul suo input, i l tutto
tramite due semplici istruzioni.
L'esempio precedente non ha un alcun senso
pratico; vediamo quindi di complicare un po' le
cose e renderlo più utile:

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (2 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

egrep -v ^# /etc/XF86Config | cat

o ancora

egrep -v ^# /etc/XF86Config > conf_x_essenziale

Nel primo caso prendiamo il nostro file di


configurazione base per il server X, sempre pieno
di righe commentate, e lo stampiamo a video
(stdout) ripulito da tutti i commenti, mentre nel
secondo esempio eseguiamo la stessa operazione
salvando il risultato in un nuovo file.
Ora che abbiamo visto qualche semplice comando
di reindirizzamento i/o e filtri con le espressioni
regolari, modifichiamo un'ultima volta il nostro
esempio per farne un vero e proprio programma;
fatto questo, passeremo alla parte più teorica e
nozionistica (molto riassuntiva) delle espressioni
regolari ed al loro utilizzo negli script shell.
Per prima cosa, quindi, create con vi o pico un file
chiamato "decommenta" e scriveteci dentro le
seguenti istruzioni:

#!/bin/sh
if [ ! $1 ] 2>/dev/null
then
echo "Non e' stato inserito il nome del file
originale"
echo "Sintassi: decommenta <file-originale>
<nome-copia>"
exit 1
elif [ ! $2 ] 2>/dev/null
then
echo "Non e' stato inserito il nome della copia di
sicurezza"
echo "Sintassi: decommenta <file-originale>
<nome-copia>"
exit 1
fi
echo "Sto decommentando $1"
echo "Il file originale verra' stato salvato in $2"
mv $1 $2
egrep -v ^# $2 > $1
echo "File decommentato con successo!"
exit 0

Rendete il file eseguibile (chmod a+x


decommenta) ed avrete realizzato il vostro primo
script di shell, con tanto di controllo errori e analisi
degli argomenti passati da riga di comando senza

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (3 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

ricorrere a linguaggi compilati o altri strumenti


compilati cui si deve per forza fare ricorso in
ambienti diversi.
Analizzando il codice, salta subito all'occhio la sua
relativa semplicità: con le variabili $1 e $2
indichiamo rispettivamente il primo e secondo
argomento passato al nostro script; poi con un
semplice ciclo condizionale if controlliamo se
l'utente ha dimenticato di inserire i parametri e, in
caso positivo, lo informiamo con precisione circa
l'errore, uscendo dallo script con un codice di
errore (exit 1). Se le prime due condizioni risultano
negative, lo script continua per la sua strada:
rinomina il "file-origine" in "nome-copia", lo legge e
filtra con egrep, eliminando le righe che
cominciano con # (commenti), salvando il risultato
(stdout del egrep) in un nuovo file chiamato "file-
origine". Infine, condiamo il tutto con dei messaggi
a video che informino l'utente su quello che sta
succedendo.
Ora che abbiamo visto cosa si può fare con poche
righe di bash e' arrivato il momento di addentrarci
un po' nell'analisi della pura sintassi delle
espressioni regolari; in verità, per illustrare
l'argomento in tutta la sua completezza non
basterebbero tutte le pagine di questa rivista e
quindi concentriamoci che le cose si fanno più
complicate.

Approfondendo

Le espressioni regolari vengono chiamate in


inglese (più propriamente) "pattern matching".
Come dice il nome stesso servono appunto per
"matchare" stringhe, ovvero trovare occorrenze di
una certa sequenza di caratteri (pattern) in una
stringa. Detto così il concetto è molto riduttivo:
possono esistere infatti stringhe di ricerca
talmente complicate da risultare incomprensibili se
non dopo uno studio analitico a tavolino. Facciamo
subito un "semplicissimo" esempio, fondamentale
per capire di cosa stiamo parlando, scrivendo le
seguenti 4 righe:

ap.$"\/+$
riga2
£
*

e salvandole in un file chiamato "prova". Ora


lanciate questa riga di comando, facendo

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (4 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

attenzione a non commettere errori:

egrep '^[^23][a-z].?\$\"\\\/\+[^\%]|((^\£|2$)|^\*$)' ./
prova

Se tutto è andato bene e non avete commesso


errori (attenzione che \/ non è una v maiuscola ma
i segni \ e /), verranno stampate a video le quattro
righe del file in questione. A cosa serve un
esempio come questo? Beh, a poco se rimane a
queste dimensioni, ma pensate di avere fra le
mani un file con migliaia di righe e di dovere
cercare proprio i caratteri che vedete seguire il
comando egrep. In questo caso vi apparirebbero a
video proprio quei caratteri, evitandovi il compito
oneroso di scorrere a video numerose stringhe.

Le espressioni regolari sono una serie di


combinazioni e regole definite da speciali
combinazioni (pattern) di caratteri combinabili tra
loro, che possiamo usare in unione con programmi
come egrep o sed (ma anche ed, ex, vi o linguaggi
come awk e persino perl) per eseguire delle
ricerche anche molto complesse (pattern
matching) su un flusso di caratteri (una stringa o lo
stdout di un comando). Certo, il comando che
abbiamo formulato non è facilmente comprensibile
e dovremo analizzarlo nei dettagli per capirne la
struttura, ma prima di continuare diamo
un'occhiata alla tabella 3, contenente i
metacaratteri di base e una descrizione della loro
funzione.

Notate una cosa: alcuni dei carateri utilizzabili con


egrep o altre utility hanno un compito anche se
usati direttamente in shell (ad esempio il carattere
jolly *). Al momento in cui il comando viene
eseguito la shell è la prima ad analizzare e
risolvere eventuali metacaratteri e restituire al
comando stesso il risultato, con il rischio di
rovinare tutto il lavoro: per questo è sempre
meglio racchiudere il nostro pattern tra apici
(meglio se singoli se non abbiamo variabili da
risolvere), in modo da impedire una "traduzione"
da parte del sistema operativo. Questo è ciò che
viene definito "quoting". Se state cercando
l'occorrenza della stringa $1 e non la racchiudete
fra apici rischiate seriamente che il sistema
operativo interpreti la stringa come una variabile
passata da linea di comando Analizzate con
attenzione la tabella riassuntiva e tenendola

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (5 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

sempre pronta proviamo a "risolvere" il pattern del


nostro esempio. Ora, analizziamo i "geroglifici"
che seguono in comando egrep:

^[^23][a-z].?\$\"\\\/\+[^\%]|((^\£|2$)|^\*$)

L'analisi parte di sinistra verso destra. Innanzitutto,


stiamo cercando qualcosa che non inizi per 2 o 3
( ^[^23] ), seguito poi da una lettera minuscola
qualsiasi ( [a-z] ), da un qualsiasi carattere ( .? ),
dal simbolo del dollaro "$" ( \$ ), da un doppio
apice " ( \", anche questo quotato, da "\" come il $
per farlo considerare non un metacarattere).
Continuando oltre vediamo che stiamo cercando
un carattere "\" ( \\ , quindi un "\" quotato da un
altro "\" che è l'unico a valere come
metacarattere), poi un carattere "/" ( \/ ,quindi
sempre quotato da un "\") e subito dopo un "+" ( \+
anch'esso quotato dal solito "\"). Poi, deve seguire
un qualsiasi carattere che non sia "%" ( [^\%] (il
simbolo % all'intenro delle parentesi quadre è
quotato anche lui da un "\"). Dopo troviamo un
"|" (OR) seguito da un altro pattern, quindi nel
caso non ci fossero corrispondenze con il primo
pattern ( ^[^23][a-z].?\$\"\\\/\+[^\%]| ) entra in
campo il secondo ( ((^\£|2$)|^\*$) ). Il secondo
pattern inizia con due parentesi tonde e, come in
matematica, dobbiamo iniziare a risolvere prima le
parentesi più interne. In pratica abbiamo due
alternative (l'alternativa è indicata dal carattere |):
se nessuna di queste due condizioni viene
soddisfatta, si passa alla seconda alternativa del
secondo pattern, ovvero una stringa che ha come
inizio e fine (^ carattere $, ovvero unico carattere)
un "*".
Quindi, riassumendo, si verificano questi
passaggi: viene cercata qualunque occorrenza
che corrisponda al primo pattern (cioé fino al
primo "|"), e se non viene trovato niente si passa
al secondo. Con il secondo pattern cerchiamo una
sequenza che inizi con un "£" o termini con un "2"
e, nel caso non trovassimo nessuna delle due,
dovremmo cercare una stringa che abbia come
unico carattere "*".
Agli inizi, tutto questo può sembrare
incomprensibile, ma basta cominciare dalle
espressioni base e capire come funzionano per
avere in mano uno strumento duttile e potente. Da
pochi e semplici mattoni potete arrivare, per gioco
o per necessità, a costruire pattern di lunghezza

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (6 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

praticamente infinita, limitata solo dalla fantasia o


dalla pazienza.

I comandi

Come avrete notato, fino ad ora abbiamo utilizzato


principalmente il comando egrep, accennando al
fatto che le espressioni regolari possono essere
utilizzate con altri comandi o addirittura veri e
prorpi linguaggi. In questa sede ci occuperemo
rapidamente solo di una piccola parte (la più
utilizzata) di questi comandi, per fornire una
panoramica generale della sintassi, lasciando al
lettore la possibilità di provare nuove
combinazioni, che potranno essere approfondite
leggendo i manuali online delle utility di sistema.
Cominciamo da grep: chi si è trovato anche
raramente a lavorare con la shell avrà
sicuramente già incontrato questo comando o una
delle sue varianti. In linea generale, potremmo dire
che grep esegue una ricerca su uno o più input
(che sia un file o l'output di un altro comando), con
o senza l'uso delle espressioni regolari. In realtà
abbiamo tre differenti utility di ricerca, grep, fgrep
ed egrep: il primo è la versione "standard",
supporta l'uso delle espressioni regolari ma non
permette il confronto di più stringhe. Fgrep può
invece cercare più stringhe ma non supporta le
espressioni regolari (cioè il pattern deve essere
chiaramente specificato), mentre egrep risulta
maggiormente espressivo combinando i vantaggi
presenti nel primo e nel secondo comando:
supporta, infatti, le espressioni regolari e può fare
una ricerca con più stringhe, supportando anche i
metacaratteri estesi ( |, (), + , ? ), che non vengono
interpetati dal grep, mentre non riconosce le
espressioni regolari \< e \>. Complicato? Date
un'occhiata alla tabella 4 dove potrete trovare un
elenco commentato delle principali opzioni di
egrep (man egrep per ulteriori info):

La sintassi generale del comando egrep è la


seguente:

egrep <opzioni> <pattern di ricerca> <input (file o


altro)>

Nello script di esempio "decommenta", per


modificare un file abbiamo seguito una strada
piuttosto tortuosa, ovvero la redirezioni dell i/o
dopo un filtro con egrep. In verità, tutto questo

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (7 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

poteva essere risolto in maniera più "pulita"


utilizzando sed, uno strumento molto potente in
grado di elaborare un flusso di dati compiendo una
lunga serie di azioni "al volo" e restituendo il
risultato a video, o rediretto su di un file. La
sintassi generale di sed è:

sed <opzioni> 'comando' <file (o altro input)>

oppure

sed <opzioni> -f <file_script>

dove "file_script" è un file contenete una serie di


comandi per sed (quindi è possibile creare una
sorta di libreria di azioni predefinite). Ad esempio,
se volessimo creare una versione modificata del
nostro script "decommenta" che non cancelli le
righe commentate, ma semplicemente tolga i
commenti (i caratteri # ad inizio riga solamente),
potremmo usare sed in questo modo:

cat ./file_commentato | sed 's/^#/ /' > ./


file_decommentato

Ed ecco il nostro decommentatore modificato. In


questo caso abbiamo utilizzato il comando 's/
pattern/sostituzione/+
' con il quale sostituiamo ogni occorrenza di
"pattern" (che può essere un'espressione
regolare) con "sostituzione". Ancora una volta,
diamo un'occhiata ad una tabella che in questo
caso ci illustrerà le principali opzioni da utilizzare
con sed. Qui di seguito indicheremo

Chiaramente tutto questo è solo una minima parte,


ma è quanto basta per farci capire cosa possiamo
fare semplicemente con tre comandi: cat, egrep e
sed ed un sapiente uso degli input ed output. Con
pochi comandi possiamo realmente risolvere in
maniera veloce i più comuni, e noiosi, problemi
che sorgono durante l'uso e l'amministrazione
Linux.
Il discorso e gli esempi potrebbero continuare
ancora a lungo, in particolare se cominciamo
anche a parlare di altri comandi molto utili come
diff, sort, spell, wc etc.. che anche se non
supportano direttamente le espressioni regolari
aprono al programmatore una serie infinita di
strade.
Noi ci fermiamo qui, invitando il lettore ad

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (8 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

esercitarsi il più possibile sulle espressioni


regolari, anche per gioco come il nostro primo
contorto esempio: le regexp (in gergo "tecnico")
non sono una soluzione limitata all'ambiente di
shell ma fanno parte e sono la base di tutto il
sistema operativo e ve le ritroverete spesso fra le
mani, anche quando starete programmando in perl
o php. Conoscerle farà la differenza fra un utilizzo
del sistema elementare e una gestione degli
eventi più duttile e sofisticata.

Riferimenti e links:
● Bash, scripting e le espressioni regolari
(Articolo)
● Tabella 1 (listato)
● Tabella 2 (listato)
● Tabella 3 (listato)
● Tabella 4 (listato)
● Tabella 5 (listato)

Torna indietro

http://www.interpuntonet.it/RIVISTA/56/BASH/regexpcor56.html (9 di 9)03/04/2006 1.20.53


Consultazione della rivista Inter.Net sul world wide web.

E ora l'interfaccia grafica

Corso di Linux - seconda parte


di Paolo Besser <paolone@besser.it>

LINUX PER CHI COMINCIA

Il mese scorso abbiamo installato Linux Espresso.


Questo mese invece vi spieghiamo come usare la
sua interfaccia grafica.

Come potete osservare dalla foto, il desktop di


Linux Espresso è basato su helix-gnome,
un'evoluzione di Gnome classico, facilmente
personalizzabile e molto gradevole da usare.
Questo mese impareremo a crearci un ambiente
compatibile con le nostre esigenze. Attenzione,
però: in questo articolo si parte dal presupposto
che abbiate già letto la puntata precedente, per cui
se ancora non lo avete fatto, vi conviene andare a
sfogliare le pagine 121-126 di Inter.net 63 o, al
limite, cercarlo sul sito www.interpuntonet.it nella
sezione degli arretrati online. Segnatevi questo
indirizzo, perché col procedere di questo corso ne
sentirete parlare spesso: non è infatti utile a
nessuno ripetere continuamente gli stessi concetti
e imparare a maneggiare correttamente i file di
documentazione e le pagine web torna soltanto a
vostro vantaggio perché gran parte della
documentazione su Linux e sui suoi aspetti più
intimi si trova proprio in questa forma,
inevitabilmente online.
Osservate la fotografia: il desktop (o scrivania) di
Gnome contiene diversi elementi, ognuno
configurabile a piacere. C'è la barra di Helix in
alto, che contiene i menu Programmi, Preferiti,
Impostazioni e Scrivania, lo spazio per le finestre
e tutta una serie di pannelli. Questi ultimi possono
essere fissi o a scomparsa, orizzontali o verticali,
e contengono a scelta le icone per lanciare i
programmi o addirittura delle piccole applicazioni
integrabili, come per esempio la guida ai desktop
di Gnome chiamata deskguide. Imparare a
manovrare questi pannelli è davvero semplice e lo
illustriamo nel corso di questo articolo con un
apposito box.
Evolution è un client di posta elettornica che inierà
presto a contrapporsi a Outlook Express. "Farà"
perché adesso è ancora in fase avanzata di

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (1 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

programmazione, debugging e miglioramento. I


più coraggiosi, comunque, possono già usarlo per
la propria posta e per inondare gli sviluppatori di
bug report...

Spostarsi tra file e cartelle


L'applicazione che ci permette di agire sui file e
sulle cartelle, qualunque sia il sistema operativo
utilizzato, è il file manager. Come abbiamo visto il
mese scorso, mentre Windows usa normalmente
Explorer, Linux permette un'ampia rosa di scelte e
nel nostro caso useremo gmc. Il motivo per cui il
file manager ha questo nome è presto spiegato:
agli albori di Linux, quando il sistema operativo era
ancora prevalentemente testuale, si era diffusa
una shell molto simile al famoso Norton
Commander, chiamata Midnight Commander. Per
brevità, il comando necessario a lanciarla era per
l'appunto mc',e da qui a 'gmc' il passo è stato
veramente breve. Abituatevi a trovare tanti nomi di
programmi che iniziano per'g', in quanto la cosa
nella maggioranza dei casi indica che si tratta di
programmi per Gnome, oppure di versioni
ottimizzate questo desktop manager, o ancora che
si tratta di front-end (interfacce grafiche) per
determinati programmi che normalmente
funzionano in modalità testuale: questi front-end si
occupano semplicemente di lanciare l'applicazione
e di interpretarne l'output in modo da dirottarlo
sulle più gradevoli finestre di Gnome. Volete un
esempio? Beh, ammettiamo allora che fridge sia
un programma che permetta di congelare la
memoria ram e di visualizzarla sotto forma di
diverse schermate testuali: gfridge potrebbe
essere un front-end che ripropone le stesse
schermate in una classica finestra di Gnome, il
tutto senza che il programma originale fridge
venga alterato in qualsiasi modo. Tutto qui.
Chiudiamo la parentesi, e torniamo a gmc.
Il file manager di Gnome permette di visualizzare
le icone sul desktop, distinguere i collegamenti
simbolici con un'apposita freccetta ( come
Windows 95),e organizzare il contenuto delle
cartelle in apposite finestre, come risulta evidente
dalla foto che segue:

L'organizzazione di ogni finestra di gmc è simile a


quella di "Gestione Risorse""(o Explorer) di
Windows e, perché no, al file manager (per chi l'ha

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (2 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

visto) di OS/2 Warp. A sinistra c'è una


rappresentazione dell'albero delle directory, così
come sono effettivamente innestate nel file system
principale, mentre a destra si può vedere il
contenuto della finestra attualmente selezionata.
In questo caso, ci siamo spostati in /cdrom,
cartella sula quale è montato un vecchio cd di inter.
net. I file di cui è noto il formato (come per
esempio applinux.pdf, notoriamente leggibile con
Acrobat Reader), dispongono di icone predefinite,
mentre i file sconociuti"appaiono come foglietti
bianchi. Inutile dire che potremo associare anche
a questi file dei programmi, ma il modo in cui farlo
verrà trattato più avanti. Spostandoci col puntatore
su di un'icona e cliccando con il tasto sinistro del
mouse, la selezioneremo: il suo nome verrà
evidenziato e con quel file (o quella cartella)
potremo fare ciò che avremo voglia, a patto
ovviamente di disporre dei privilegi necessari.
Le azioni da compiere si possono effettuare in più
modi: o ricorrendo al menu file e facendo ricadere
sotto il suo effetto tutte le icone selezionate,
oppure usando le classiche scorciatoie da mouse
e tastiera a cui tutti i sistemi operativi ci hanno
bene o male abituati. Per selezionare più icone,
per esempio, basterà tenere premuto il tasto
sinistro del mouse e disegnare un rettangolo che
comprenda ciò su cui vogliamo lavorare, oppure
cliccare una volta su ciascuna icona tenendo
sempre premuto "Control" (Ctrl) o, ancora
selezionare un intervallo di file cliccando su di una
seconda icona e tenendo premuto lo "Shift".
Insomma, tutte le operazioni classiche di
selezione cui siete abituati in Windows sono
supportate.
Le icone evidenziate possono essere trasferite da
una cartella all'altra semplicemente trascinandole
altrove tenendo premuto il tasto sinistro del
mouse. Questa'azione cancellerà i file dalla
posizione corrente e li copierà nella nuova
ubicazione di default. Se vogliamo copiare dei file
da una parte all'altra, occorrerà trascinare le icone
tenendo premuto "Control", se invece desideriamo
creare un collegamento simbolico, dobbiamo
trascinare tenendo premuto contemporaneamente
"Shift" e "Control". Se invece vogliamo che appaia
il classico menu "sposta/copia/collegamento"
tipico di Windows quando si trascinano le icone
col tasto destro del mouse, allora dobbiamo
compiere l'operazione di trascinamento sempre

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (3 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

col tasto sinistro del mouse, ma tenendo premuto


"Alt".

I menu
Il tastino con l'impronta di uno gnomo, nel
pannello in basso a sinistra, è più o meno
l'equivalente del pulsante d'avvio di Windows. Da
questo tasto si aprono tutti i menu relativi al
sistema. Come accade in Windows, le applicazioni
possono decidere - durante l'installazione - di
inserire una voce nei menu oppure no. Con buona
approssimazione, possiamo dire che quasi tutti i
programmi espressamente sviluppati per Gnome
si occupano di questa faccenda, mentre quelle per
Kde (un desktop concorrente") o più
genericamente "per X-window" (come per
esempio Star Office) lasceranno a voi l'ingrato
compito. Nel nostro caso, abbiamo due possibilità:

1)Se l'applicazione risiede nella nostra home


directory di comune mortale possiamo
semplicemente inserire una voce nel
menu""preferiti", che ovviamente cambia da utente
a utente.

2)Per inserire un programma in modo che sia


disponibile a tutti, invece, occorre apportare la
modifica da root. In ogni caso, lo strumento che ci
permette di modificare i menu si chiama""editor di
menu" e lo si può raggiungere con il percorso
Avvio (chiameremo Avvio"il tasto con la pedata di
gnomo...) -> Programmi -> Impostazioni -> Editor
di Menu. Apparirà una finestra di dialogo che ci
domanderà - in sostanza - cosa aggiungere.

Come potete facilmente notare, anche questo


programma ha un'impostazione molto simile a
Explorer. A sinistra trovate l'albero dei menu, a
destra il pannello in cui inserire le nuove voci, il
commento da far apparire quando v'indugeremo
sopra con il puntatore, il comando da eseguire e il
tipo di applicazione cui ci troviamo di fronte (cioè,
se si tratta di una directory da aprire con gmc,
oppure di un'applicazione da lanciare direttamente
o tramite terminale - nel secondo caso verrà
lanciata una shell e il programma al suo interno.
La shell si chiuderà al termine dell'esecuzione). La
procedura comunque è esattamente la medesima
osservata nel box""Modificare i pannelli", quando
viene richiesta l'aggiunta di un pulsante d'avvio.

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (4 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

I pannelli
Per evitare di perdersi in mezzo a duemila menu,
Gnome ha inglobato una serie di toolbar che si
possono inserire, togliere e modificare a piacere.
Le impostazioni personalizzate vengono
memorizzate nella directory dell'utente per cui non
c'è pericolo che qualcun altro possa condividerle.
Ogni singolo tasto ha delle proprietà, che possono
essere modificate semplicemente premendo il
tasto destro del mouse e scegliendo l'apposita
opzione. Per approfondire la loro configurazione,
vi rimandiamo al box che le abbiamo dedicato,
senza dilungarci troppo in questo paragrafo.

La toolbar di Helix
Helix Gnome update è un'applicazione che ci
permette di tenere il desktop Gnome
costantemente aggiornato. Basta selezionare una
sorgente per i nuovi pacchetti (o un mirror) e cosa
scaricare, sullo stile di servizi simili offerti da altri
programmi e sistemi operativi.
Un discorso a parte, invece, lo merita la toolbar in
alto, quella che contiene i menu Programmi,
Preferiti, etc. Si tratta di un add-on espressamente
inserito da Helix, una software house che si sta
occupando, tra le altre cose, di razionalizzare la
distribuzione del desktop Gnome e rendendolo di
cosneguenza facilmente installabile, aggiornabile
e gestibile. Grazie a Helix-Gnome, è possibile
occuparsi della manutenzione del desktop con
estrema facilità: ogni tanto dovremo soltanto
lanciare l'applicazione Helix Gnome Update (Avvio
-> Programmi -> Sistema -> Helix GNOME
Update) e vedere la lista degli aggiornamenti
disponibili. Chiaramente, è necessaria una
connessione a internet per sfruttare questa
operazione. No, non verranno mandati in giro dati
personali. La toolbar di Helix, comunque, permette
di sostituire in tutto e per tutto il pannello in basso
(che occupa spazio) e persino di inglobare alcune
applet (tra cui l'orologio con agenda , il client ICQ
gnomeicu, etc.), purché le loro dimensioni lo
consenta-
no. In realtà, anche la barra di Helix altro non è
che un normale pannello di Gnome, dalle proprietà
un po' particolari e non modificabili dall'utente

Il control center di Gnome

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (5 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

Tutto ciò che ha a che fare con l'interfaccia grafica


è reperibile nel ""Gnome Control Center"" (Avvio -
> Programmi -> Impostazioni -> GNOME control
center). Lo vedremo nel dettaglio il mese
prossimo, perché ora non abbiamo davvero più
spazio. Impareremo a cambiare il window
manager in funzione delle specifiche esigenze, e a
modificarne tutti i parametri. I più coraggiosi,
comunque, possono avventurarsi un po' nel suo
utilizzo. Rimarranno stupiti dalla profondità delle
cose che si possono modificare nella gestione
delle finestre, delle applicazioni, e dell'interfaccia
grafica in generale.
Per ora ci lasciamo per un mese di
"sperimentazioni". Provate e riprovate e fra 30
giorni impareremo a fare di più.

Riferimenti e links:
● E ora l'interfaccia grafica (Articolo)
● Modificare i pannelli (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/corso_linux_2_64.html (6 di 6)03/04/2006 1.20.54


Consultazione della rivista Inter.Net sul world wide web.

Pronti a prendere il largo

Corso di Linux - terza parte


Pronti a prendere il largo

di Paolo Besser <paolone@besser.it>

Questo mese ci occuperemo di qualcosa di


davvero interessante, ovvero di come collegare a
internet il nostro sistema Linux. Fatto questo,
continueremo a configurare il nostro ambiente di
lavoro per renderlo ancora più semplice da
utilizzare

Per entrare in internet in maniera indolore faremo


conoscenza con un tool specifico, chiamato
pppconfig, che può essere lanciato soltanto
dall'utente root e che gira esclusivamente in riga di
comando. Per motivi di sicurezza, faremo sì che
soltanto l'amministratore di sistema possa
effettuare una connessione. Innanzitutto, apriamo
una shell di comando cliccando sull'apposito
bottone nel pannello in basso e, se ancora non lo
siamo, diventiamo root. Il comando per cambiare
momentaneamente identità, sotto Linux, è su. Per
essere ancora più professionali, usiamo anche lo
switch '-' (meno), che serve a cambiare
automaticamente directory di lavoro e a
preservare tutte le impostazioni di login dell'utente.

su -

inseriamo la password di root, e il nostro computer


dovrebbe modificare il prompt più o meno come
segue (al posto di localhost dovrebbe esserci il
nome che avete assegnato alla macchina):

nomehost:~#

A questo punto, diamo il comando pppconfig,


apparirà la schermata che vedete in questa
pagina.
Usiamo la prima opzione (create a new
connection) per creare una nuova connessione.
Evidenziatela e premendo invio apparirà una
seconda schermata in cui dovremo dare un nome
al collegamento (più o meno come quando si
configura l'accesso remoto di Windows - non
spaventatevi per l'interfaccia testuale: i
presupposti sono gli stesse). Vi conviene usare il

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (1 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

nome del vostro provider, in modo da non


dimenticarlo. Più tardi ricordare questo nome vi
servirà.
A questo punto, vi verrà chiesto il tipo di dns
(domain name server) utilizzare. Quando il
provider vi informa di lasciare libero il campo del
dns"vuol dire che le informazioni sui server dns vi
verranno passati in automatico durante la
connessione, mentre se vi verranno forniti degli
indirizzi dovrete comunicarli a pppconfig nella
forma xxx.yyy.zzz.ttt. Nella schermata successiva
dovrete indicare quale tipo di autenticazione volete
adottare per i vostri collegamenti al provider e la
scelta consiste in tre protocolli: chap, chat o pap.
Senza addentrarci nei particolari, la connessione
di tipo pap è quella maggiormente utilizzata dai
provider, per cui con ogni probabilità funzionerà
benissimo nella gran parte dei casi. Qualora
invece il vostro isp pretenda di dialogare con il
vostro computer prima di affidargli la connessione,
potete provare con chat e, come ultima risorsa
potete optare per chap. Una delle tre funzionerà di
sicuro. In caso contrario, non vi resterà che
chiamare il servizio di assistenza del vostro
provider, e chiedergli che tipo di connessione usa,
l'indirizzo del dns primario e se ci sono stringhe
particolari da passare al modem per la
connessione.
Le schermate successive sono davvero di facile
interpretazione: vi vengono chiesti, in sequenza, il
nome dell'utente (login), la password per la
connessione, la velocità in bps del modem, il tipo
di chiamata (toni o impulsi - la maggior parte delle
centraline e delle linee domestiche ormai
funzionano a toni, se non vi riesce di prendere la
linea, allora, ripiegate pure sugli impulsi), e il
numero di telefono da chiamare col modem. A
proposito di quest'ultimo: nella prossima
schermata potremo indicare a pppconfig se
intendiamo fargli cercare automaticamente un
modem o se preferiamo specificare noi stessi la
porta cui è collegato. Nel secondo caso, vi
ricordiamo che /dev/ttyS0 è la porta com1, /dev/
ttyS1 la com2 e via dicendo. Tutto qui, non c'è più
nulla da scrivere.
Prima di farci tornare al prompt dei comandi,
pppconfig mostra un riepilogo di tutte le
informazioni relative alla connessione, più
un'opzione interessante per modificare le
impostazioni avanzate (advanced options). Se il

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (2 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

nostro modem ha bisogno di init string particolari


(per esempio, il Digicom Tintoretto isdn esterno,
per andare correttamente in internet, ha bisogno
della seguente stringa: ATQ0W0X1V1%A2=5)
possiamo inserirle da qui. Scegliamo di entrare
nelle impostazioni avanzate, e apparirà la
seguente schermata:
Possiamo anche modificare alcuni aspetti più
intimi della connessione, ma non è il caso di
dilungarsi troppo, dato che nella maggior parte dei
casi non dovrete nemmeno accedervi, al massimo
vi ritroverete a cambiare la stringa di init del
modem.

Bene, la nostra connessione è pronta. Per


effettuare qualche prova, vi consigliamo
caldamente di accedere al sistema direttamente
come root: eviterete di aprire mille shell sullo
schermo e di dare altrettante volte il comando su.
Aprite una shell e date il comando pon, seguito dal
nome della connessione (avete capito, adesso, a
che serviva segnarselo?). Se proprio non ve lo
ricordate, date il comando ls /etc/ppp/peers/ e
guardate tra i file, ce ne deve essere uno che ha
come nome quello della connessione..

con connessione
Aprite velocemente un'altra shell (sempre da root)
e provate a dare il comando tail -f /var/log/
messages: potrete tenere sott'occhio le reazioni
del sistema alla procedura di connessione, nonché
stabilire con esattezza quale sia il vostro indirizzo
ip corrente al termine di quest'ultima. Aprite pure
Mozilla e... buona navigazione a tutti! Ultima nota,
per scollegarvi da internet potete usare il comando
poff (sempre da root).

Il pannello di controllo di gnome


Bene, e adesso che sapete come collegarvi alla
grande rete potete dedicarvi a qualcosa di più
sfizioso, come per esempio il fine tuning del vostro
ambiente di lavoro. Il mese scorso abbiamo
lasciato in sospeso l'associazione dei file ai
programmi, ovvero quella procedura che permette
di richiamare una particolare applicazione quando
si clicca su un file di un certo tipo.
Questo mese ne parliamo, visto che è una delle
mille cose che si possono personalizzare nel
pannello di controllo di Gnome. Apriamo dunque il

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (3 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

cosiddetto ""Gnome control center"" e vediamo


che esso è suddiviso in sette menu principali

- Desktop
- Document Handlers
- Interfaccia Utente
- Multimedia
- Periferiche
- Sawfish
- Session

L'area desktop è quella che consente di


modificare le impostazioni più""visibili". Le opzioni
che ci interessano veramente sono Pannello,
Salvaschermo, Selettore Temi, Sfondo e Windows
Manager. Legacy Application permette soltanto di
conferire gli stessi temi gtk anche ad applicazioni
che non siano state scritte per Gnome. Dal menu
pannello è possibile modificare le impostazioni del
pannello principale del desktop manager (quello in
basso), nonché decidere alcuni parametri comuni
a tutti i pannelli presenti sullo schermo. Se il vostro
computer non è velocissimo, può essere una
buona idea disabilitare le animazioni. Dal foglio
"menu", invece, è possibile decidere quali
elementi mettere direttamente nel pannelo, in un
menu a scomparsa, oppure quali eliminare.
In salvaschermo potete selezionare uno screen
saver da adottare. Più interessante la sezione
selettore temi, che serve a dare a Gnome un
aspetto ben preciso. Si noti che questa
impostazione non cambia gli elementi ai bordi
delle finestre, perché questi sono di competenza
del window manager. Al contrario, viene
modificato l'aspetto di tutti gli elementi contenuti
nelle finestre: font, colori delle texture e dei
pulsanti, forma dei medesimi, checkbox, menu a
scomparsa e via dicendo. Un livello di
personalizzazione che altri sistemi operativi
possono vedere soltanto col cannocchiale (o con
appositi programmi esterni). Se volete scaricare
qualche tema nuovo per il vostro desktop, provate
a visitare il sito www.gnome.org.

Il menu sfondo consente di impostare lo sfondo


della scrivania: potete scegliere una veloce tinta
unita, oppure delle sfumature di colore o, infine,
un'immagine di vostra preferenza che può essere
centrata, "stirata", ripetuta come se fosse una
piastrella, fino a coprire tutta l'area dello schermo.

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (4 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

Il menu windows manager, infine, stabilice quale


gestore delle finestre utilizzare. Linux Espresso ne
mette a disposizione due, il famosissimo Sawfish
e il più leggero Icewm. Vi conviene usare il
secondo se intendete sveltire le operazioni di
visualizzazione. Il primo, tuttavia, permette una
serie di personalizzazioni e di simpatici effetti a
video che lo rendono molto più moderno e
piacevole. I veri kiddies, dotati di computer
particolarmente veloci e di ram abbondante,
possono anche tentare di installare Enlightenment
e usare quello: si tratta di un window manager
decisamente pesante ma ricco di "effetti speciali"
che lo rendono una meraviglia per gli occhi, giusto
quello che serve per far morire d'invidia chi ha
appena installato Windows 2000 professional!

Più in basso, noterete il ramo Interfaccia Utente.


Non contiene voci di rilievo e bene o male tutto ciò
che si può modificare da quelle parti è
ampiamente auto esplicativo. Magari vi divertirete
di più ad associare un suono a ogni evento, cosa
posibile tramite il ramo Multimedia, che contiene
soltanto il menu Audio. Quest'ultimo si divide in
due pannelli: il primo vi permette di attivare o
meno il server audio di Gnome (se non attivate
quello, non sentite nulla, per cui attivatelo); il
secondo, invece, è il controller vero e proprio.
Tenete presente che di solito i suoni di sistema si
trovano da qualche parte tra le sottocartelle di /usr/
share. Vi conviene mettere lì anche i suoni che
eventualmente scaricate da Internet, ricordandovi
prima di aggiustare i permessi in modo opportuno.

Configurazione di Sawfish
Per non saltare, come si suol dire, di palo in
frasca, tralasciamo per un momento tutto il resto e
passiamo direttamente al ramo window manager.
Nel nostro caso dovremo aggiustare le
impostazioni di Sawfish. Tranquilli, non dovremo
armeggiare con il suo particolare linguaggio di
scripting, ma semplicemente agire su delle
finestrelle e dei menu come abbiamo fatto fin'ora.
Grazie al cielo, non si tratta di nulla di
particolarmente complesso: anche qui avremo a
disposizione addirittura dei temi"già pronti, grazie
ai quali il nostro window manager può travestirsi e
sembrare in tutto e del tutto simile ad altri sistemi
operativi, che ci piacciono particolarmente o ai

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (5 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

quali siamo in qualche modo affezionati. Che dire,


infatti, del look a la Macintosh o Amiga OS4?
Usando i temi opportuni il vostro desktop Gnome
sarà quasi indistinguibile da quello di altri sistemi
concorrenti, con l'unico vantaggio di avere un
motore potente e sicuro come Linux!
In questo caso, dal menu aspetto abbiamo scelto il
tema Chromium e come si può notare dalla barra
del titolo, sensibilmente diversa da quelle di tutte
le altre finestre viste fin'ora, non c'è davvero limite
alla fantasia degli sviluppatori. Comunque sia, il
menu ingrandisci permette di modificare l'effetto
con cui le finestre vengono minimizzate o allargate
a pieno schermo, comandi vi consente di
personalizzare le associazioni da tastiera, focus il
modo in cui vengono attivate le finestre (se al
passaggio del mouse, se con un click, se le nuove
finestre devono essere attivate automaticamente o
meno, ecc ecc), e via dicendo. Una sola nota che
riguarda due definizioni tipiche di Sawfish:
Un workspace è in pratica un desktop virtuale, che
può essere formato da diversi viewport alla volta.
Una viewport non è altro che una schermata.
Sawfish permette di avere più workspace
all'interno di un medesimo desktop, per cui mi
raccomando non confondete i due termini e
quando desiderate associare un tasto a una
specifica azione, ricordatevi sempre di considerare
un ulteriore associazione a un workspace o a una
viewport.

La gestione dei documenti


Veniamo così al ramo ""Document Handlers""del
pannello di controllo. Questa sezione si occupa di
stabilire quali programmi devono essere richiamati
direttamente dalla guiI e di cosa devono
occuparsi. Se non vi piace Mozilla, e preferite
installarvi Netscape, vi conviene far sì che sia lui a
gestire direttamente gli url. Vediamo come
modificare o aggiungere altri tipi di documento. Se
avete spesso a che fare con i file di Acrobat
Reader, i famosi *.pdf, lasciate pure perdere xpdf
che tutte le distribuzioni mettono a disposizione e,
piuttost,o scaricatevi la versione per Linux di
Acrobat Reader . Una volta installata, potete
andare nel menu Tipi MIME, localizzare
l'estensione pdf/PDF e cliccare su
""Impostazioni"", localizzare il percorso
dell'eseguibile acroread e poi inserire la voce

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (6 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

acroread %f per indicare che volete proprio


lanciare quel programma e fargli aprire quel file.
Ma vediamo un esempio ancor più semplice:
normalmente, se clicchiamo un file mp3, questo
viene eseguito direttamente dalla gui richiamando
il decoder in linea di comando mpg123. Bene, in
fondo si tratta di un ottimo riproduttore... peccato
che non si possa fermare l'esecuzione una volta
iniziata, e che lanciare un secondo file crei
soltanto una tremenda cacofonia. Visto che Linux
Espresso ci mette anche xmms a disposizione,
che è praticamente il winamp per Linux,
spieghiamo a Gnome che intendiamo usare
proprio quello. Localizziamo il tipo audio/x-mp3 (le
estensioni associate sono mp3, MP3), e
clicchiamo su ""Impostazioni". Si aprirà una
seconda finestra (che nella nostra foto è
sovrapposta alla prima, in basso a destra) con
alcune voci interessanti. Quella che ci preme
cambiare, ovviamente, è il richiamo al programma
mpg123.
Sostituitamo brutalmente xmms a mpg123 e
lasciamo invariato l'argomento %f, dopodiché
chiudiamo pure la seconda finestra. Ovviamente,
se disponessimo anche un programma per la
modifica degli mp3, potremmo inserirlo nella
finestrella Modifica, ma siccome non è questo il
nostro caso, per adesso possiamo anche
soprassedere.
D'ora in avanti, tutte le volte che cliccheremo due
volte sull'icona di un file *.mp3 (o cliccheremo una
volta su di essa col tasto destro del mouse, per poi
scegliere Apri), invece di lanciarne la sua
esecuzione in background apriremo il programma
xmms, già pronto a eseguire il file richiesto.
Attenzione: le impostazioni dei tipi mime cambiano
da utente a utente.

Passiamo così all'impostazione editor,


nell'omonimo menu:
Avrete notato che quando si cerca di modificare
un file, normalmente viene aperta una shell di
comando contenente emacs, un potente editor
testuale prediletto dai programmatori. Magari non
è propriamente il vostro caso di utenti Windows in
disintossicazione, e forse preferireste un editor più
immediato che non sia proprio scarno come il
blocco note di Bill Gates.
Questo programma delle meraviglie ovviamente
c'è, e si chiama gedit, ovvia contrazione di "gnome

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (7 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

editor". Basterà scegliere la sua voce tra quelle


messe a disposizione in questo pannello, come
mostrato nella foto, e il gioco è fatto. Potete usare
gedit per modificare tutti quei file di testo che
normalmente richiederebbero vi o emacs e anche
se vi attirerete tutte le critiche dei"puristi", come
strumento di passaggio va più che bene.
Ricordatevi, però, che inizierete a essere dei bravi
pinguini solamente quando sarete diventati
abbastanza in gamba da "affrancarvi" dalle
interfacce grafiche, e non potrete più fare a meno
dell'adorabile complessità del vi.

Applicazioni automatiche e impostazioni


Può darsi che vi piaccia l'idea di caricare
automaticamente delle applicazioni all'avvio
dell'interfaccia grafica. Perché no, in fondo anche
Gnome può farlo! Per esempio, può essere una
buona idea avviare sempre gnomeicu, il client icq
per eccellenza. Non serve editare script,
aggiungere voci a menu e via discorrendo. Basta
avviare l'applet una volta, incastonandola in
qualche pannello, come spiegato il mese scorso, e
poi chiudere il desktop ricordandosi di attivare
l'opzione ""salva le impostazioni correnti del
desktop"": qualunque applicazione ancora in
funzione verrà chiusa, e al successivo
caricamento dell'interfaccia grafica sarà riaperta.
Quindi, se di punto in bianco vi trovate con
Staroffice che si carica misteriosamente a ogni
avvio, non fateci caso, basterà chiuderlo, chiudere
la sessione, e ricordarsi di salvare le impostazioni
all'uscita.
E per quelle applicazioni che non ne vogliono
sapere di partire in questo modo? Semplice,
selezionate il menu programmi di startup dal ramo
session e inserite le informazioni richieste. Devo
anche spiegarvi come si fa? No, a questo punto
dovreste davvero già saperlo fare. Avanti con
qualche prova

Ok, per questo mese è tutto. Metabolizzate le


informazioni che avete letto, fate qualche prova e
il mese prossimo andremo avanti con qualcosa di
più interessante.

Torna indietro

http://www.interpuntonet.it/RIVISTA/65/pppconfig/corsolinux65.html (8 di 8)03/04/2006 1.20.56


Consultazione della rivista Inter.Net sul world wide web.

Spostiamoci tra le directory

Corso di Linux - quarta parte


Spostiamoci tra le directory

Abbiamo visto come si configura l'interfaccia grafica


e come personalizzare l'ambiente di lavoro. Adesso
è ora di addentrarsi nel cuore di Linux.

di Paolo Besser paolone@besser.it

Chi per la prima volta si trova a girovagare per le


directory del file system di Linux non può fare a
meno di chiedersi a che cosa servano tutte quelle
strane directory sparse per il disco. Sigle strane
(etc, cos'è, uno starnuto? Usr, ma non si scriveva
con due S?), posizioni un po' assurde,
sottodirectory ancora più criptiche... e poi, che fine
hanno fatto i dischi C, D, E ed F? Niente paura:
come vedrete al termine della lettura di questo
articolo, la gerarchia del filesystem di Unix è
davvero molto semplice da capire e, ve lo diciamo
per esperienza, una volta che vi ci sarete abituati
non potrete più farne a meno. Per cominciare,
vediamo di imparare la più grossa differenza tra la
gestione dei file del Dos e quella di Linux.

Il condominio e l'open space


Prendiamo il classico pc domestico, quello su cui
potreste aver installato Linux anche voi. E' un pc
che avete in casa da tempo, e che nel corso della
sua storia ha visto aggiungersi un disco fisso
secondario (D) e una tripartizione del disco fisso
principale (C, E e la partizione Linux), mentre il
masterizzatore e il lettore cd rom si spartiscono
rispettivamente le lettere di unità F e G. Come del
resto già saprete, dos (Windows) separa
nettamente tra di loro i singoli volumi che
costituiscono le memorie di massa (senza
dimenticare il drive per i floppy - A). Ogni volume
dispone di una propria lettera di unità e i file in essi
registrati possono essere a loro volta raccolti in
directory. Quando apriamo un prompt di dos,
solitamente, al cursore viene anteposto il nome del
volume e la directory corrente. Nella fattispecie

C:\WINDOWS>_

ci assicura su tre fatti: che l'unità corrente è il

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (1 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

volume C, che la directory corrente è \windows, e


che il cursore (_) è pronto ad accettare i nostri
comandi. Possiamo quindi pensare al nostro
computer come a un piccolo condominio, in cui
ogni stanza (directory) deve necessariamente
essere contenuta in un appartamento (volume). E
guai a spostare l'appartamento un piano più in alto
o più in basso! Cambierebbe la lettera dell'unità e
questo sconvolgerebbe tutti i calcoli
dell'amministratore (il sistema operativo). Linux, al
contrario, organizza i propri dati come un enorme
open space. Per i poco avvezzi all'architettura
moderna, ricordiamo che gli open space non sono
altro che degli enormi saloni delimitati da quattro
mura, in cui le singole stanze possono essere o
meno separate da tramezze prefabbricate, che
quindi possono essere spostate e modificate a
piacimento.
Ecco, il file system di Linux non è altro che questo
enorme stanzone vuoto, in cui ogni singolo volume
potrà essere posizionato da qualsiasi parte a
piacimento. Introduciamo così il concetto di mount
point. Prendiamo la nostra unità E, per esempio: in
realtà si tratta di una partizione fat32 in cui abbiamo
inserito, per l'appunto, un unità logica che sotto Dos
siamo abituati a chiamare E. Per Linux, invece,
questa partizione è fisicamente chiamata /dev/
hda5, e il suo contenuto (i dati) può essere
chiamato come si vuole e posizionato in una
qualsiasi directory del file system. Come? Con un
comando semplicissimo

mount -t vfat /dev/hda5 /dos_e

questo comando dice a Linux di comportarsi piùo


meno così: associa (mount) il volume di tipo (-t)
Windows (vfat) che si trova nella partizione /dev/
hda5 alla directory /dos_e. Questo, naturalmente,
presuppone che nel file system di Linux sia stata
creata dall'utente root una directory dos_e a partire
dalla radice delle directory (/). Dos_e sarà a tutti gli
effetti il mount point della partizione /dev/hda5
(alias E sotto Windows). Basterà spostarsi con il
comando cd nella directory dos_e, e dare il
comando ls, per visualizzare la directory di tutti i
dati contenuti in quella partizione.
Il bello di tutto ciò, è che se disponiamo di 10 unità
differenti possiamo raggrupparle tutte in una sola
directory (per esempio /mnt) e poi montare ognuna
di esse in una sotto directory di /mnt. Tutto sotto

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (2 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

controllo, insomma. Linux Espresso, di default, crea


due mount point a partire da /. Si tratta di cdrom e
floppy. Ci vuole poco a capire che saranno queste
le posizioni in cui verranno montati rispettivamente i
cd inseriti nell'apposito lettore e i floppy. Anche se
alcune procedure avanzate (supermount)
permettono di caricare automaticamente i cd rom
nell'apposita directory appena li si inserisce nel
computer, è bene sapere che teoricamente
spetterebbe all'utente root eseguire il seguente
comando

mount -t iso9660 /dev/cdrom /cdrom

la cui interpretazione sarà vostro esercizio (non ci


vuole gran che...), e quindi far si che alla directory /
cdrom corrisponda il volume registrato sul disco
argenteo.
Un volume, una volta montato, non può essere
fisicamente rimosso dal computer finché non si
sarà provveduto a smontarlo. Questo non significa
che per rimuovere il cd rom dal lettore sarete
costretti ad armarvi di cacciavite, bensì che Linux si
aspetta un ordine del tipo umount, seguita
naturalmente dal mountpoint:

umount /cdrom

Questo comando dirà a Linux Espresso che il cd


non serve più, e che quindi la porzione di file
system costituita dai dati contenuti in esso può
essere tranquillamente eliminata dal file system
globale. A questo punto, si può espellere il cd sia
ricorrendo al classico tastino sul pannello frontale
della periferica, sia dando l'apposito comando eject /
dev/cdrom. Perché /dev/cdrom e non soltanto /
cdrom stavolta? Adesso lo vedremo...

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (3 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

All'interno della directory /proc/24530...

Là dove giacciono i dispositivi fisici


Linux è un sistema operativo derivato da Unix, di
cui è anzi una versione totalmente free. Di Unix ha
ereditato la storia e, naturalmente, la concezione di
base che non prevedere icone e animazioni, anzi
tutt'altro. C'è voluta la relativa massificazione di
Linux per spingere gli sviluppatori a migliorare il più
possibile le interfacce grafiche. Prima, il dialogo
con il calcolatore avveniva unicamente in riga di
comando. Come fare, quindi, a dare un nome alle
periferiche e ai dispositivi contenuti nel computer?
Nel modo più ovvio possibile, associando cioè un
file fittizio a ogni periferica, e piazzando tutto
nell'apposita directory /dev (device, ovvero
periferica).
Quando nominiamo un file presente in questa
directory, in realtà, ci stiamo riferendo a una
periferica ben precisa del nostro computer. E
questo vale davvero per qualsiasi cosa: dall'uscita
wave della scheda audio (/dev/dsp) per arrivare alla
porta PS/2 del mouse (/dev/psaux), passando
naturalmente dalle porte seriali (/dev/ttySx) e
attraverso le partizioni dei dischi eide (/dev/hdxy).
Tanto per aiutarvi a capire l'estrema duttilità della
cosa, pensate un po' a risolvere il seguente
problema:

Pierino dispone di due computer virtualmente


identici A e B, e in uno di essi dispone di una
partizione /dev/hdb1 di 500Mb, con un sistema
operativo già installato. Vorrebbe ricreare una
partizione del tutto identica sull'altro computer,
posizionata però in /dev/hdd3. Come può fare?

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (4 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

La soluzione più ovvia, per un utente Windows, è


copiare tutti i dati volatili (immagini, suoni,
documenti, ecc) su un cdr tramite un
masterizzatore, ricreare sull'altra partizione lo
stesso albero di directory e infine installare da capo
sistema operativo e applicazioni. L'utente Linux,
invece, può fare molto più in fretta. Basta che metta
i due dischi sulla stessa macchina A, che crei la
partizione sul secondo disco, e che poi dia il
seguente comando

dd if=/dev/hdb1 of=/dev/hdd3

esattamente come se si stesse copiando un singolo


file. Le due partizioni sarebbero assolutamente
identiche. Si tratta però di un caso limite e per le
differenti geometrie dei dischi fissi l'operazione
potrebbe anche non avere l'effetto desiderato. Chi
scrive, comunque, ha usato questo sistema per
copiare da un pc a un altro un intera partizione
BeOS, visto che una vecchia versione dello stesso
non ne voleva proprio sapere di installarsi sulla
macchina B. Risultato: BeOS sulla macchina B ha
funzionato correttamente, senza nemmeno
accorgersi di essere stato allegramente turlupinato.
Si legga comunque l'approfondimento nel box una
storia come tante .

/bin e /sbin, i polmoni del sistema


Il cuore del sistema operativo Linux è notoriamente
il kernel, che si trova all'interno della directory /boot
assieme ai dati di grub e alla rappresentazione
(map) della geometria del disco fisso. Il nome del
file è normalmente vmlinuz-2.2.17. Per questioni di
compatibilità con altre distribuzioni, esiste un link
simbolico a questo file anche nella radice delle
directory (/), e si chiama vmlinuz. Il solo kernel,
tuttavia, non serve a un bel niente a meno che,
ovviamente, l'unico scopo del vostro computer sia
essere una macchina in grado di restare accesa.
Servono chiaramente dei programmi che possano
fare da contorno e che gestiscano, per lo meno, le
routine fondamentali (creare file e collegamenti,
directory, spostare e copiare, etc, etc). Tutti questi
comandi li troviamo in /bin. Non cancellate mai, per
nessun motivo, questa directory o il vostro
computer diventerà assolutamente inutilizzabile: /
bin contiene file di estrema importanza, tra cui
anche il famigerato mount senza il quale non

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (5 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

potreste nemmeno vedere le partizioni esterne a


quella di boot. Per capirci, cancellando questa
directory di Linux è come se cancellaste per errore
il file command.com sotto Windows:
improvvisamente non funzionerebbe più nulla. Tra
l'altro, esiste una differenza fondamentale tra la
shell dos (command.com, appunto) e quella
normalmente usata da Linux (bash): mentre la
prima è imposta dal produttore (Microsoft) e
insostituibile, la seconda fa parte di una ben più
ampia rosa di scelte.
Analogamente a /bin, esiste poi la directory /sbin,
che contiene programmi utili all'amministratore di
sistema. La rimozione accidentale di questa cartella
è già meno letale rispetto a quella di /bin, ma data
l'importanza del suo contenuto, potrebbe
comunque procurarvi delle serie difficoltà.
Tanto per cominciare, verrebbero meno tutti i
comandi di controllo e gestione del file system, dei
moduli del kernel e delle reti (cose tipo fsck,
ipchains, ifconfig, insmod, etc), e quindi sareste
costretti a copiare nuovamente il contenuto di
questa directory da una versione live su cd di
Linux, o da un altra partizione. Se non altro,
essendo i comandi mount, cp e mkdir contenuti in /
bin, si tratterebbe comunque di un'operazione
fattibile, a patto di avere un backup di quella
directory da qualche parte.

/proc, la macchina sotto controllo


Analogamente a /dev, anche /proc è una directory
molto particolare. I file contenuti in essa vengono
creati dal sistema operativo a mano a mano che
l'utenza o i servizi di sistema avviano programmi e
processi vari. Vediamo un po' com'è strutturata
tipicamente questa directory. Se impartite il
comando ps aux, vedrete la lista di tutti i processi
attivi in quel dato momento. Per esempio

root 494 0.0 0.3 1424 464 ? S 14:37 0:00 klogd


daemon 510 0.0 0.0 1128 104 ? S 14:37 0:00 /usr/
sbin/atd
root 526 0.0 0.1 1304 156 ? S 14:37 0:00 crond
root 546 0.0 0.0 1136 76 ? S 14:37 0:00 inetd
named 562 0.0 0.6 2492 824 ? S 14:37 0:00 named
-u named
root 578 0.0 0.0 1176 0 ? SW 14:37 0:00 [lpd]
root 615 0.0 0.2 2104 352 ? S 14:37 0:00 sendmail:
accepti

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (6 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

root 672 0.0 0.0 1076 0 ? SW 14:37 0:00 [vmnet-


bridge]
xfs 697 0.0 1.0 2560 1404 ? S 14:37 0:00 xfs -
droppriv -da
root 724 0.0 0.3 1988 392 ? S 14:37 0:00 nmbd -D
root 776 0.0 0.1 1112 200 ? S 14:37 0:00 /sbin/dhid

noterete che i primi due valori di ogni riga sono un


nome e un numero: il primo indica l'utente che ha
lanciato il processo, il secondo invece è
l'identificativo (PID) del processo stesso, un
numero usato dal sistema operativo per
riconoscerlo tra gli altri in maniera inequivocabile.
Andiamo adesso a leggere la directory /proc e
osserviamo, tra gli altri...

dr-xr-xr-x 3 root root 0 Jan 19 17:13 483


dr-xr-xr-x 3 root root 0 Jan 19 17:13 494
dr-xr-xr-x 3 root root 0 Jan 19 17:13 5
dr-xr-xr-x 3 daemon daemon 0 Jan 19 17:13 510
dr-xr-xr-x 3 root root 0 Jan 19 17:13 526
dr-xr-xr-x 3 root root 0 Jan 19 17:13 546
dr-xr-xr-x 3 named named 0 Jan 19 17:13 562
dr-xr-xr-x 3 root root 0 Jan 19 17:13 578
dr-xr-xr-x 3 root root 0 Jan 19 17:13 615
dr-xr-xr-x 3 root root 0 Jan 19 17:13 672
dr-xr-xr-x 3 xfs xfs 0 Jan 19 17:13 697
dr-xr-xr-x 3 root root 0 Jan 19 17:13 724
dr-xr-xr-x 3 root root 0 Jan 19 17:13 776

In pratica, all'interno della directory /proc possiamo


osservare ciò che avviene nel sistema. In questo
estratto gli identificativi (che figurano come
directory leggibili - ma non modificabili - da
chiunque) sono stati posti in grassetto per renderli
più visibili.
Entriamo pure in uno di essi:

cd 483

troveremo, al suo interno, una serie di file descrittivi


che, stringi stringi, a noi utenti finali interessano
ben poco. Per queste considerazioni, l'output del
comando ps è già più che sufficiente. Ah, che non
vi venga in mente di rimuovere dei processi con il
comando rm -f in questa directory: si usa il
comando kill <pid> per queste cose. Se proprio
volete esplorare qualcosa di interessante, andate
pure a leggervi il contenuto delle directory /proc/
net, /proc/ide e /proc/sys. Ma fatelo da utenti
normali (è meglio).

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (7 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

/home, le directory degli utenti

Veniamo così, prima di procedere a tutto il resto,


alla directory /home, da cui si diramano le
cosiddette home directory (cartelle principali) di tutti
gli utenti (root escluso). Quando, da provetti
amministratori di sistema, aggiungiamo un nuovo
utente con il comando

adduser nomeutente

viene creata automaticamente la cartella /home/


nomeutente, e sarà proprio questa directory ad
accoglierlo a ogni sua procedura di login. Del resto,
provate anche voi ad accedere alla vostra
macchina linux e a dare il comando pwd per sapere
in che directory siete (dovete essere in shell o
aprire una finestra del terminale per poterlo fare):
noterete che l'output sarà proprio /home/ seguito
dal vostro username.
L'idea di dare a ogni utente una sua directory è uno
dei concetti basilari di Linux: essendo un sistema
operativo multi utente il concetto di a ciascuno il
suo spazio è a dir poco fondamentale. L'home
directory dell'utente, appena creata, apparirà vuota.
Ma si tratta soltanto di una banale apparenza.
Provate infatti a visualizzare il contenuto della
vostra home directory con il comando ls -al,
oppure, se il server X è attivato, a dire a Gnome di
visualizzare anche i file nascosti: scoprirete tutto un
universo di file e directory nascoste che iniziano per
punto (.). Questi file sono i cosiddetti profili di
configurazione dei programmi installati. Il client di
posta elettronica ne avrà uno, il desktop di gnome
un altro (si chiama proprio .gnome-desktop), e in
linea generale ciascun programma installato nel
sistema dall'amministratore, al primo avvio da parte
dell'utente comune, creerà nell'home directory di
quest'ultimo un proprio profilo di configurazione,
generalmente chiamato come il programma stesso
e seguito dalle lettere rc (per esempio, il profilo
dell'ipotetico programma pippo sarà .pipporc).
Abituatevi subito, perché a mano a mano che
installerete nuovi programmi, il numero di questi file
puntati crescerà a dismisura.
Ricordatevi sempre della loro esistenza, soprattutto
il giorno che - per una qualunque ragione - doveste
decidere di eliminare tutto il contenuto della vostra
home directory con un micidiale rm -rf *:
inevitabilmente, cancellereste anche questi file e vi

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (8 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

ritrovereste col desktop azzerato, con tutte le


impostazioni dei programmi da rifare. A questo
punto, tuttavia, potreste chiedervi: ok, le
impostazioni personali di ogni utente stanno nella
sua home directory, ma quelle per così dire globali ,
dove sono? Possibile che si debbano rifare per
ogni utente? La risposta è...

/etc, il registro di sistema

Esiste una cosa bellissima in Windows che si


chiama registro di sistema: un enorme file a chiavi
pressoché incomprensibili in cui tutti i programmi (e
il sistema operativo stesso) vanno a registrare le
loro impostazioni, le librerie che utilizzano, etc, etc.
La cosa meravigliosa di Linux è che questo
bellissimo registro di sistema non c'è. Abbiamo
infatti una directory, chiamata /etc, dove vengono
registrate tutte le informazioni necessarie ai
programmi per funzionare. E non solo ai
programmi, ma anche al sistema operativo stesso.
Se fate caso ai nomi dei file di configurazione, vi
accorgerete che spesso e volentieri esiste una
sorta di doppione anche nella vostra home
directory. Per esempio, potrebbe esserci un file
chiamato pipporc nella directory /etc, e anche un
file .pipporc (notare il punto) nella vostra home
directory. E' normale, in quanto i due file potrebbero
contenere informazioni differenti (quello contenuto
in /etc andrebbe a leggere le impostazioni generali
e quello nella home le informazioni particolari per
quell'utente), oppure il programma potrebbe
stabilire una sorta di gerarchia del tipo: prima vado
a cercare nella home directory dell'utente che mi ha
lanciato se ci sono le mie impostazioni
(eventualmente le creo) e al limite guardo in /etc se
trovo del materiale che mi possa tornare comunque
utile. Utile, soprattutto quando nella directory
dell'utente mancano del tutto queste informazioni.
Alcuni programmi registrano le loro impostazioni
unicamente in /etc. Questa, poi, contiene alcune
sottodirectory interessanti fra le quali ricordiamo:

/etc/rc*.d

Queste directory contengono unicamente dei link


simbolici, e servono a stabilire quali servizi e/o
programmi avviare all'accensione del computer,
quali terminare al suo spegnimento, e soprattutto,
che modifiche attuare ai servizi nel momento in cui

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (9 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

il sistema operativo passa da un runlevel all'altro.


Questa è una tematica un po' complessa che non
abbiamo modo di trattare questo mese (lo spazio è
quello che è), in ogni caso potete immaginare
questa directory come una sorta di autoexec.bat +
config.sys al quadrato. Per questo mese
accontentatevi di sapere che esiste; il mese
prossimo vi spiegheremo anche come modificarne i
contenuti a piacimento.

/etc/X11

Qui trovate i file necessari al corretto


funzionamento del server grafico Xfree86, di cui ci
siamo abbondantemente occupati in anni e anni di
articoli su Linux e sulla sua configurazione. Per
adesso, vi basti sapere che nella directory /etc/X11/
xinit è contenuto il file xinitrc globale, quello che
ciascun utente può liberamente copiare nella
propria home directory, modificar e poi rinominare .
xinitrc per personalizzare la gestione del window
manager e del file manager sotto X. Al contrario, il
file XF86Config è comune a tutti e racchiude tutte
le caratteristiche dell'hardware su cui il server
grafico deve girare. Articoli più approfonditi su
XF86Config da parte della nostra rivista possono
essere reperiti sul sito www.interountonet.it,
semplicemente inserendo il suo nome come parola
chiave nel motore di ricerca.

/etc/ppp

Questo è lo spazio riservato ai file che contengono


le informazioni necessarie al sistema per collegarsi
a Internet tramite point-2-point protocol, ma del
resto ne avevamo già parlato proprio il mese
scorso, per cui è perfettamente inutile ripetersi.
In ogni caso, ricordatevi sempre che /etc è la
colonna vertebrale del vostro sistema operativo
Linux: eliminandola otterreste un sistema da
riconfigurare da capo. Inoltre, la mancanza delle
directory /etc/rc*.d manderebbe in panico il sistema
già al primo riavvio. Un buon amministratore è
solito effettuare un backup di /etc almeno una volta
ogni mese o due.

/usr, l'anima del sistema


La directory /usr è sicuramente la più importante
del sistema operativo. Magari non da un punto di

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (10 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

vista funzionale, visto che il Linux può funzionare


anche senza, ma da quello pratico perché è in essa
che vanno a installarsi tutti i programmi inseriti
dall'amministratore e dagli utenti (per installare gli
eseguibili in modo che possano essere condivisi
dagli utenti occorre essere root). In parole povere,
è qui che va il software. /usr si divide a sua volta in
una vera e propria marea di sottocartelle, che
contengono i dati più disparati. Le principali sono:

/usr/X11R6

Contiene tutte le applicazioni normalmente


utilizzate sotto X, comprensive eventualmente di
dati condivisi, documentazione, etc.

/usr/doc

La cartella salva pinguini: gli utenti di qualsiasi


livello possono trovare in questa directory la
documentazione sugli aspetti più eterogenei di
Linux e sui programmi installati nel sistema

/usr/lib

Le librerie usate dai programmi.

/usr/share

Materiale che può essere condiviso tra gli utenti.


Un utilizzo tipico consiste nell'inserire nella cartella /
usr/share/pixmaps i fondini del desktop e in /usr/
share/sounds i suoni di sistema.

/usr/bin

Programmi locali. Di preferenza si usa /usr/local/


bin.

/usr/etc

Impostazioni di alcuni programmi. Di solito si usa


direttamente /etc

/usr/include

Contiene gli header o intestazioni , indispensabili


quando si cerca di compilare un qualsiasi
programma sotto Linux

/usr/man

Vi si trovano le cosiddette pagine man, ovvero i

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (11 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

manuali ottenuti con il comando man <argomento>

/usr/src

Deposito dei codici sorgenti dei programmi e del


kernel

/usr/local

Altra directory tutto fare , visto che contiene


anch'essa una struttura del tipo /usr/local/bin, /usr/
local/doc, etc, etc. Solo che qui si tende a installare
i programmi che vanno condivisi tra più utenti (ad
es. Mozilla, StarOffice, ecc), in directory del tipo /
usr/local/mozilla, /usr/local/netscape, etc, etc.
Alcune distribuzioni iniziano a usare /opt al posto
di /usr/local.

/usr/sbin

Contiene programmi di sistema aggiuntivi.

/tnp, un vero e proprio intestino


La classica directory temporanea dove tutti i sistemi
operativi si divertono a indirizzare i programmi
quando chiedono: e questo dove lo metto?
Riferendosi a un dato in fase di elaborazione. /tmp
può contenere davvero di tutto, a partire dai
download in corso per arrivare ai documenti in fase
di scrittura.. Inoltre essendo molto liberi i permessi
di scrittura ci si può tranquillamente scrivere dentro
quando si ha voglia, anche da utenti comuni. Non c
è nulla di particolarmente importante da dire,
tranne: adesso che sapete che c è, fatene buon
uso!

/Lost+found, voleva essere un recycle bin


In origine questa cartella avrebbe dovuto costituire
il cestino del file system ext2 correntemente
adottato da Linux, ma poi, più che altro per
indolenza degli sviluppatori, è rimasta a tutti gli
effetti il rottamaio dove andare a recuperare i pezzi
di dati perduti in seguito a una deframmentazione o
a un controllo del disco fisso (ckfs). Tipicamente,
quando gli utenti inesperti (voi) spengono il
computer senza attuare la corretta procedura di
logout e al successivo riavvio il sistema fa le bizze,
tutti i frammenti di file perduti possono essere
ritrovati lì dentro. Ogni partizione ext2fs, quando
formattata, crea automaticamente la sua directory /

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (12 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

lost+found.

Conclusioni
Come vedete, Linux preferisce separare le
componenti dei programmi in directory ben precise,
in modo da mantenere quanto più ordine possibile.
E' vero, qua e là ci sono delle ridondanze, ma sono
dovute alla necessità di attenersi agli standard
POSIX e, soprattutto, per mantenere la
compatibilità con applicazioni un po' datate
vecchiotte, che magari necessitano di determinati
file in posizioni ormai desuete. E con questo è tutto,
ci rileggiamo il mese prossimo.

Riferimenti e links:
● Spostiamoci tra le directory (Articolo)
● Una storia come tante (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/66/filesystem/corso4.html (13 di 13)03/04/2006 1.20.58


Consultazione della rivista Inter.Net sul world wide web.

Tuffiamoci nel sistema

di Paolo Besser <paolone@besser.it>

Fino al mese scorso ci siamo occupati degli


aspetti esteriori del sistema operativo. Questo
mese cominciamo a capire come funziona.

Se avete seguito le puntate precedenti di questo


corso, dovreste disporre già di tutte le conoscenze
necessarie a capire quanto vi verrà proposto
questo mese. In caso contrario (non barate), vi
conviene consultare il nostro sito Internet www.
interpuntonet.it e andare alla ricerca delle nozioni
perdute, perché quanto già detto verrà considerato
a tutti gli effetti acquisito. Questo mese, infatti, vi
proponiamo un argomento decisamente più ostico,
in quanto per la prima volta ci troveremo di fronte
a problematiche che non hanno una
corrispondenza nel mondo di Windows. Beh, sì,
forse una l'hanno, in fondo i collegamenti di
macintoshana memoria ce li ha anche Windows
95, ma vi accorgerete ben presto che tra una
shortcut"di Redmond , un "alias" di Cupertino e un
"link simbolico" di Linux c'è una bella differenza.
Cercate di capirla al volo, perché ci serve subito.

Fra tradizione e simbologia

Innanzitutto, cos'è un "link"? Fondamentalmente si


tratta di un file che "fa le veci" di un altro. I link
possono tornare molto comodi per ottenere dei
"cloni" di un file da qualche altra parte del files
ystem, ma anche per raggiungere programmi che
si trovano in zone particolarmente remote del
disco fisso (vuoi perché si trovano in sottodirectory
annidate al sesto livello di /usr, oppure
semplicemente perché le si ha piazzate da
qualche parte della nostra /home e non ci
ricordiamo mai dove sono). In questo caso, è
sufficiente creare un link e il problema è risolto.
Linux prevede due tipi diversi di link, quello
"tradizionale" e quello "simbolico". Il primo
costituisce una vera e propria replica del file che
intendiamo "linkare", il secondo, invece, è soltanto
un "puntatore". Ch volete creare il vostro primo
collegamento, la sintassi è:

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (1 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

ln [-s] file_esistente nome_link

l'opzione -s permette di creare un link simbolico:


omettendola, ne otterremo uno di tipo tradizionale.
Le differenze pratiche tra i due? Beh, vediamole
con un minimo di pratica. Innanzitutto, chiediamo
al nostro sistema Linux di calcolare lo spazio
libero sul disco fisso. Se avete montato le
directory degli utenti in una partizione a parte, per
esempio, basta dare il comando

$ df

Filesystem 1k-blocks Used Available Use%


Mounted on
/dev/hdc1 15320732 6417708 8124776 44% /
home

Come potete leggere abbiamo ancora 8124776k


da utilizzare. Ora, prendiamo il nostro file
d'esempio filevero.boh, e creiamo un link
tradizionale al medesimo.

ln filevero.boh linktradizionale

e diamo il classico ls -al, otterremo:

drwxrwxr-x 2 paolone paolone 4096 Feb 22


16:35 .
drwx------ 57 paolone paolone 8192 Feb 22
16:32 ..
-rw-r--r-- 2 paolone paolone 3872391 Feb 22
16:33 filevero.boh
-rw-r--r-- 2 paolone paolone 3872391 Feb 22
16:33 linktradizionale

come vedete, i due file occupano lo stesso spazio.


Di conseguenza, il totale di k liberi presenti sulla
partizione dovrebbe diminuire di 3872391 unità.
Verifichiamolo col comando df.

/dev/hdc1 15320732 6417708 8124776 44% /


home

Sorpresa! Lo spazio occupato e quello disponibile


non sono cambiati di una virgola. Adesso
facciamo un'altra piccola "magia". Eliminiamo il file
vero con un bel rm filevero.boh, e proviamo a
visualizzare il contenuto di linktradizionale con il
comando less, scopriremo che il file è ancora vivo
e vegeto, come se un altro avesse preso il posto
del file vecchio. In realtà, nel momento in cui

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (2 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

creiamo un link tradizionale sul nostro disco fisso,


noi non facciamo altro che assegnare un vero e
proprio "secondo" (o terzo, o quarto, ecc) nome
allo stesso file, e quest'ultimo rimarrà disponibile
fino a che non rimuoveremo - con il comando rm -
tutti i link ad esso associati. Se provassimo a fare
la stessa cosa sotto Windows, nel momento in cui
cliccheremmo due volte sull'icona del
"collegamento" il sistema provvederebbe a
informarci che quel file non esiste più, o è stato
spostato da qualche altra parte. Con Linux tutto
ciò non avviene. Tra il "file vero" e i suoi link la
corrispondenza del "contenuto" è totale, e saremo
anche liberi di spostare entrambi ove vogliamo. In
parole povere possiamo replicare un file quante
volte vogliamo, senza però occupare altro spazio
sul disco, cosa che invece sarebbe avvenuta se
avessimo usato il comando cp (copy).
Creiamo adesso un link simbolico (il file filevero.
boh è stato nel frattempo ripristinato con un
semplice mv linktradizionale filevero.boh)

ln -s filevero.boh linksimbolico

e diamo il solito comando ls -al:

drwxrwxr-x 2 paolone paolone 4096 Feb 22


16:52 .
drwx------ 57 paolone paolone 8192 Feb 22
16:32 ..
-rw-r--r-- 1 paolone paolone 3872391 Feb 22
16:43 filevero.boh
lrwxrwxrwx 1 paolone paolone 12 Feb 22 16:52
linksimbolico -> filevero.boh

come vedete, appare qualcosa di strano fin


dall'elenco dei permessi: una elle minuscola al
posto del tradizionale trattino (-). Lo spazio
occupato è di dodici byte e come se non bastasse
in seguito al nome c'è pure una freccettina (>) che
punta al file vero e proprio! Cosa indicherà mai
tutto questo? Semplicemente che ogni operazione
che andremo a compiere su quel link si rifletterà
direttamente sul file vero, e non solo sul link. Le
uniche azioni che potremo svolgere su
quest'ultimo saranno la sua rinominazione e la sua
cancellazione. Se proviamo a spostare il link da
qualche altra parte, smetterà di funzionare

$ mv linksimbolico ../robaccia/
$ cd ../robaccia

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (3 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

$ ls -al linksimbolico
lrwxrwxrwx 1 paolone paolone 12 Feb 22 16:52
linksimbolico -> filevero.boh
$ less linksimbolico
linksimbolico: No such file or directory

Il link simbolico è dunque strettamente dipendente


dal file a cui è associato e in caso di spostamento
smette di funzionare. In compenso, l'uso dei link
simbolici permette di generare meno confusione.
Per esempio, mettiamo che per motivi a noi ignoti
decidiamo di installare il pacchetto pippo.deb e
questo, in due differenti versioni, vada a installarsi
prima in /usr/local/bin e poi in /opt/pippo/bin/: in
perfetto ossequio alle leggi di Murphy, ci
ritroveremmo con due programmi diversi. Quello
vecchio (/usr/local/bin/pippo) e quello nuovo (/opt/
pippo/bin/pippo). A noi ovviamente preme che
venga correttamente eseguito quello nuovo ma...
nel nostro path la directory /usr/local/bin è
specificata prima di /opt/pippo/bin e, di
conseguenza, ogni volta che invocheremo il nostro
programma pippo, ecco che verrà lanciata la
vecchia versione.
I più scaltri di voi avranno certamente individuato
nella rimozione del vecchio eseguibile la soluzione
ideale al problema. La pinguina frettolosa, tuttavia,
partorisce i pinguini ciechi, e infatti i programmi
pluto e topolino, che fanno da frontend a pippo e
configurati per trovare pippo in /usr/local/bin,
smetterebbero immediatamente di funzionare.
Creare un link tradizionale riproporrebbe il
problema tale e quale alla versione successiva di
pippo, che magari stavolta preferirà installarsi in /
usr/local/+
software-rompiballe/pippo/+
bin. Molto meglio un bel link simbolico. In questo
modo /usr/local/bin/pippo punterà a /opt/pippo/bin/
pippo, e per risolvere i problemi futuri basterà
modificare opportunamente il collegamento.
Concludendo la lezioncina sui link, possiamo
dedurre (a grandi linee, poi ovviamente i feticisti
del tecnico avranno da lagnarsi) che un link
tradizionale è legato ai contenuti di un file, un link
simbolico al suo nome e alla sua posizione nel file
system.

La procedura di inizializzazione del sistema

Vi domanderete, a questo punto, le motivazioni di

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (4 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

questa digressione sui collegamenti simbolici.


Beh, sappiate che è propedeutico a ciò che
seguirà adesso, ovvero la risposta all'inquietante
domanda "ma l'autoexec.bat e il config.sys di
Linux, dove sono?", quesito che ormai è una vera
e propria Faq del newsgroup it.comp.os.linux.
iniziare - quello a cui per altro vi consigliamo di
rivolgervi in caso di necessità. Per chi non si fosse
mai posto la domanda neppure con Windows,
traduco dal tecnichese: "cosa succede quando il
computer carica Linux in memoria, prima della
richiesta di login?".
Innanzitutto, va a leggere il contenuto del file /etc/
inittab, dopodiché carica i servizi che si trovano in /
etc/inet.d, secondo una "lista" ben precisa che,
però, si trova "sparsa" per le directory /etc/rcS.d e /
etc/rc2.d. Proviamo a leggere il contenuto di una
di queste directory, otterremo qualcosa di simile a:

[rc2.d]$ ls
K20rstatd K50inet K89portmap S30syslog
S80sendmail
K20rusersd K55routed K95kudzu S40crond
S85gpm
K20rwhod K60atd S10network S45pcmcia S90xfs
K35smb K75netfs S16apmd S60lpd S99linuxconf
K45named K83ypbind S20random S75keytable
S99local

come potete osservare, si tratta di link simbolici


composti da una lettera iniziale (K o S), un numero
e un nome. Di solito puntano all'omonimo servizio
che si trova in /etc/init.d. Vediamo quindi di capire
il funzionamento della cosa secondo l'ottica di
Linux, o, meglio, del SystemV Unix da cui deriva.
Tanto per cominciare, occorre divagare e
introdurre il concetto di runlevel. Un runlevel è una
sorta di "stadio" o di "condizione" del sistema, in
cui solo determinati servizi possono funzionare.
Immaginiamo di "accendere" noi stessi la mattina
presto, quando ci alziamo, e di osservare la
situazione con un occhio, per così dire,
informatico: noteremo subito che ciascuno di noi
esegue una serie di operazioni che hanno senso
soltanto nello "stato" specifico in cui ci troviamo al
momento di compierle:

Stadio 1: siamo ancora mezzi addormentati


02 ci alziamo dal letto
04 andiamo in bagno

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (5 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

07 ci laviamo
09 ci pettiniamo

Stadio 2: siamo svegli


11 ci vestiamo
14 facciamo colazione
18 ci rechiamo al lavoro

ora, se ci facciamo caso, è inutile vestirsi se non ci


siamo ancora lavati e, allo stesso modo, non
possiamo recarci al lavoro se prima non ci siamo
vestiti. I numeri che abbiamo messo prima di ogni
operazione non sono in perfetto ordine
cronologico, perché vogliamo complicare un po' la
faccenda anteponendo a ogni azione la "fine"
dell'azione precedente. E cioè:

Stadio 1: siamo ancora mezzi addormentati


FINE 01 dormire
INIZIO 02 ci alziamo dal letto
FINE 03 essere sdraiati
INIZIO 04 andiamo in bagno
FINE 05 "ci guardiamo allo specchio
FINE 06 guardiamo il lavandino
INIZIO 07 ci laviamo
FINE 08 essere sconvolti
INIZIO 09 ci pettiniamo
etc etc

Ora, proviamo a fare un grande sforzo di


immaginazione, e di sostituire la parola FINE con
una K, e la parola INIZIO con una S, guardacaso
iniziali rispettivamente di Kill e di Start, cosa
otteniamo? Esattamente quello che potrebbe
esserci nella nostra directory /etc/rcS.d se soltanto
ne avessimo una!
In pratica, Linux uccide determinati processi e ne
lancia altri grazie alla numerazione che segue le
lettere K ed S, seguendo semplicemente i link
simbolici delle directory /etc/rcN.d. Adesso, viene il
momento di spiegare cosa c'entrino 'sti benedetti
runlevel e come si traducano in termini pratici:
torniamo allo "Stadio 1" di cui parlavamo prima,
ovvero "siamo ancora mezzi addormentati".
Questo è a tutti gli effetti un runlevel, perché le
cose che facciamo in questo ambito non hanno
senso in quello successivo, ovvero "siamo svegli".
Il runlevel che gestisce il "risveglio" del sistema su
Linux è il runlevel S (si chiama proprio così - con
la s minuscola o maiuscola a seconda della
distribuzione), cui segue il runlevel 2, che

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (6 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

predispone il computer a un ambiente multiutente.


Il runlevel 1 al contrario predispone il sistema
operativo a funzionare in modalità monoutente,
disabilitando per altro tutta una serie di servizi. Il
runlevel 6, infine, è quello che dispone il riavvio
della macchina. Manca qualcosa? Sì, il runlevel 0,
che dispone invece lo spegnimento del computer.
Ricordatevi: per passare da un runlevel all'altro
occorre essere root e usare il comando init.
Linux Espresso normalmente opera nel runlevel 2,
mentre altre distiribuzioni (tra cui RedHat) usano il
3. A tutti gli effetti si tratta di una questione di gusti
del distributore, dato che tra i runlevel 2, 3, 4 e 5
non c'è praticamente differenza. La possibilità di
gestire fino a 4 runlevel multiutente diversi,
tuttavia, apre a Linux la possibilità di operare con
altrettati profili di servizio differenti. In parole
povere, potremmo configurare un runlevel (per
esempio il 4) attivando tutti i servizi di rete possibili
e immaginabili, e poi attivarlo con il comando init
quando ci serve disporre di un server di rete. Va
detto, in ogni caso, che uscire da un runlevel per
passare a un altro implica la "morte" di tutti i
processi tipici di quel runlevel, quindi fate
attenzione a non impartire questo comando con
troppa leggerezza. Va da sé che le varie directory
rc0.d, rc1.d, rc2.d e via dicendo contengono i link
ai servizi dei runlevel 0, 1, 2, etc e che dare il
comando init 0 corrisponde, né più né meno, a
spegnere il computer con una normale procedura
di logout o con il comando shutdown -h now.

I link simbolici ai servizi possono essere inseriti a


mano, ma la stessa Debian su cui si basa Linux
Espresso sconsiglia vivamente di farlo. Piuttosto,
si usi il comando update-rc.d, che nasce proprio
per questa specifica esigenza. Non ci
dilungheremo sul suo utilizzo e sulla sua sintassi,
perché tanto vengono correttamente ed
esaurientemente spiegate nelle sue pagine di
manuale (man update-rc.d); piuttosto,
proseguiamo nella nostra spiegazione teorica.
Le altre distribuzioni, tra cui RedHat, prevedono
spesso e volentieri un file chiamato rc.local nella
directory /etc/rc.d (che, tra l'altro, contiene a sua
volta tutte le varie rc1.d, rc2.d ecc). Questo file di
testo è ciò che l'utente di queste distribuzioni può
chiamare il suo "autoexec.bat" personale. Debian,
e di conseguenza Linux Espresso, invece, non ce
l'hanno. Come fare, dunque, ad aggiungere altri

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (7 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

servizi o a lanciare determinati daemon prima che


appaia la fatidica domanda "login:"? I modi sono
due:

1) si aggiunge un link simbolico di tipo S alla


directory /etc/rc2.d che punti direttamente al
demone da lanciare

2) si aggiunge un link simbolico di tipo S a un file


che possiamo creare noi stessi, e che
chiameremo per affetto rc.local. Visto che siamo
dei precisini, possiamo metterlo addirittura in /etc/
init.d

Supponiamo infatti che il solito programma pippo


sia in realtà un demone che, ogni 10 minuti, si
attiva e va a controllare la posta degli utenti. Ci
preme lanciarlo subito e la sua posizione nel
nostro disco fisso è in /usr/local/bin. Possiamo fare
in due modi. Quello spiccio prevede una semplice
creazione di un link simbolico a pippo:

ln -s /usr/local/bin/pippo /etc/rc2.d/S88pippo

altrimenti quello "professionale" prevede un


controllo dell'esistenza di pippo e la possibilità di
modificarne lo stato di funzionamento con la solita
sintassi

/etc/init.d/pippo start
/etc/init.d/pippo stop
/etc/init.d/pippo restart

Per ottenere un risultato di questo tipo, occorre


creare uno script ad hoc, e far sì che all'avvio
Linux lanci quello. Il modo più semplice è spostarsi
in /etc/init.d, dove tra l'altro risiedono anche gli altri
script di configurazione, e poi editare un file
"pippo" in questo modo:

#!/bin/sh
#
# Avvia o arresta il servizio "pippo" gestito
attraverso il demone "pippo"
#
# selvaggiamente scopiazzato (ma riadattato) da
"AppuntiLinux"
# www.allnet.it

# Prima di cominciare verifica che esista


l'eseguibile del demone.

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (8 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

test -x /usr/local/bin/pippo || exit 0

# Analizza l'argomento e vi si adegua.


case "$1" in
start)
echo -n "Avvio di un servizio inutile: pippo"
start-stop-daemon --start --quiet --exec /usr/local/
bin/pippo
echo "."
;;
stop)
echo -n "Arresto di un servizio inutile: pippo"
start-stop-daemon --stop --quiet \
--pidfile /var/run/pippo.pid --exec /usr/local/bin/
pippo
echo "."
;;
restart)
$0 stop
$0 start
*)
echo "Utilizzo: /etc/init.d/pippo {start|stop|restart}"
>&2
exit 1
;;
esac
exit 0

Ora rendetelo eseguibile (chmod) e aggiungete la


voce "/etc/init.d/pippo start" al file /etc/init.d/rc.
local, che avremo naturalmente creato
precedentemente e reso a sua volta eseguibile. In
questo modo il nostro sistema, alla partenza, farà
le seguenti cose

1 - leggerà /etc/inittab
2 - farà partire i servizi delle directory /etc/rcN.d
3 - eseguirà /etc/init.d/rc.local...
4 - ...che eseguirà /etc/init.d/pippo start...
5 - ...che infine lancerà il demone pippo,
dopodiché...
6 - si andrà al classico login.

Inizialmente tutto ciò potrà sembrare


assurdamente e inutilmente complicato, ma vi
assicuriamo che non lo è affatto: dopo un paio di
tentativi e di riletture, questo articolo vi sembrerà
chiarissimo. Se comunque desiderate
approfondire l'argomento, vi consigliamo alcune
letture fondamentali:

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (9 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

- le pagine man di init e inittab


- la policy di avvio del sistema di Debian, che si
trova nella directory /usr/doc/debian-policy,
capitolo 3, paragrafo 3.
- l'eccezionale pubblicazione gratuita Appunti di
Informatica Libera, di cui anche Inter.net ha più
volte offerto l'edizione completa in html sui propri
cd, e che comunque è sempre disponibile sul sito
dell'Ildp(ildp.pluto.+
linux.it), l'Italian Linux Documentation Project.

Esercizio

A questo punto sapete tutto sull'inizializzazione


del sistema. Per esercizio, vi lasciamo indovinare
come funziona invece la procedura di shutdown
del sistema. Suggerimento: se avete letto con
attenzione la parte dedicata ai runlevel, a questo
punto dovreste già saperlo. La soluzione non è a
pagina 46, ma sarà illustrata in un simpatico
boxettino il mese prossimo.

Torna indietro

http://www.interpuntonet.it/RIVISTA/67/linux/linux5.html (10 di 10)03/04/2006 1.21.02


Consultazione della rivista Inter.Net sul world wide web.

Un pinguino vestito da postino

Corso di Linux per principianti - sesta parte. A cura


di Paolo Besser <paolone@besser.it>

Dopo essere scesi un po\u in profondità,


prendiamo una boccata d\uossigeno con un
argomento di più ampio respiro

Nelle puntate precedenti del corso abbiamo


imparato a installare la nostra distribuzione di
Linux, a confdigurarla, a rendere più piacevole
luambiente di lavoro e a personalizzare tutto il
personalizzabile, inclusi i servizi e i programmi
avviati automaticamente. In parole povere,
abbiamo imparato tutto ciò che c'è da sapere per
lavorare sulla macchina, indipendentemente dal
fatto che sullo schermo, in basso a sinistra, ci
fosse la scritta uStartu o il piedone dello gnomo.
Adesso vediamo di cominciare a comunicare col
mondo, usando gli strumenti più consoni allo
scopo: Internet e la posta elettronica. Come si fa a
entrare in Internet ve lo avevamo già spiegato
qualche mese fa (forza, su, il sito www.
interpuntonet.it è lì anche per quello...), per cui
una volta lanciata la connessione non ci resta che
adottare un client di posta e di news e divertirci a
mandare messaggi in tutto il mondo. Eu indubbio
che da questo punto di vista gli utenti di sistemi
operativi Microsoft partano avvantaggiati, visto che
dispongono immediatamente di unuapplicazione di
tutto rispetto come Outlook Express, ma anche noi
Pinguini, con minimo sforzo e senza troppe
necessità di adattamento, possiamo usufruire
delle stesse comodità, per altro con una grande
quantità di alternative possibili.

A ognuno il suo (desktop)


Linux Espresso installa di default il desktop Ximian
(ex Helix) Gnome e, fatto più interessante, il client
di posta elettronica e newsgroup Evolution, che si
propone di diventare nientemeno che \ul
\uapplicazione di riferimento Gnome per la
produttività e la messaggistica personale\u. Le
potenzialità, effettivamente, ci sono tutte. Peccato
che la fase ancora preliminare in cui si trova il suo
sviluppo sia tutt\ualtro che esente da difetti:
Evolution va in crash spesso e volentieri, si perde

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (1 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

la posta per strada e a volte ci impedisce di


recuperarla. Sono i vizi di gioventù di qualsiasi
applicazione di questo tipo, però è indubbio che
nessun utente con un minimo di raziocinio
metterebbe mai l\uindirizzo di posta elettronica
lavorativo nelle sue mani. Usare Evolution con un
\uemail di servizio, però, può tornare utile a tutta la
comunità di Linux, visto che la segnalazione degli
errori è di vitale importanza per la crescita di
qualiasi programma.

Arrivare in fretta a una versione 1.0 stabile di


Evolution sarebbe un grande passo per il
Pinguino, visto che finalmente disporrebbe di un
client solido, robusto e ricco di opzioni che
\ucentralizzerebbe\u tutta la messaggistica una
volta per tutte, mettendo per altro a disposizione
un ottimo PIM (personal information manager,
praticamente una sorta di segretaria software
capace di ricordarci tutti i nostri appuntamenti).

Negli ultimi mesi, tuttavia, si sono fatti avanti


numerosi programmi alternativi a Evolution, a
partire dallo storico Messenger di Netscape (che si
può usare praticamente ovunque,
indipendentemente dal desktop utilizzato) per
arrivare a Spruce, un essenziale (ma solido) client
di posta elettronica che si regge sulle librerie Gtk.
Chi ha scelto di installare KDE, invece, ha già la
pappa pronta: la versione 2.1 del noto desktop
basato sulle librerie Qt contiene Kmail per la posta
elettronica e Knode per i newsgroup, due ottimi
programmi a cui manca un\uunica caratteristica:
quella di essere integrati in un\uapplicazione sola.
Infine, chi preferisce affidarsi alla riga di comando
ha Pine, un client di posta elettronica che funziona
praticamente ovunque. Prima di parlare dei client,
tuttavia, occorre fare la conoscenza di due brutte
bestie... ovvero i server SMTP e POP3!

Gli account tutto fare


Chi installa Linux, e si crea un account, sa
benissimo di avere a disposizione un vero e
proprio coltellino svizzero informatico. Non solo ha
uno spazio personale dove lanciare le proprie
applicazioni, salvare i suoi dati e via dicendo, ma
anche una casella di posta elettronica capace di
funzionare sempre, ogni volta che la macchina è
accesa. A gestire il traffico delle email sono
essenzialmente due demoni, il server SMTP - per

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (2 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

la posta in uscita - e il server IMAP (o POP3, nella


maggior parte dei casi), per la posta in ingresso.
Non affronteremo qui il discorso della
configurazione dei server perché si tratta di un
argomento piuttosto avanzato (sappiate soltanto
che tra gli amministratori di sistema si usa dire:
\unon sei un vero uomo finché non avrai imparato
a configurare correttamente sendmail\u), ma in
linea generale sappiate che vi serve un demone
POP3 e uno SMTP (smail e sendmail sono quelli
che vanno per la maggiore tra le distribuzioni di
Linux), e che i medesimi vanno attivati
smanettando sul file /etc/inetd.conf e tra i servizi di
sistema (netsysv). Per esempio, la distribuzione
Mandrake 7.2 si affida per la consegna della posta
al demone ipop3d, e nel file inetd.conf appare la
seguente riga:

pop-3 stream tcp nowait +


root /usr/sbin/tcpd ipop3d

su Debian probabilmente la configurazione


avviene in maniera sensibilmente diversa, e per
tanto vi rimando a qualche testo più specifico sull
\uargomento, ma vi basti sapere che la posta
\ugiace\u comunque sempre nelle medesime
cartelle:

/var/spool/mqueue
tutta la posta in uscita

/var/spool/mail/+
nome-utente
la posta in entrata di ogni singolo utente

Quando configuriamo una macchina Linux,


ricordiamoci che normalmente la posta dovrebbe
risiedere soltanto lì. Il motivo per cui
tradizionalmente nessun client di posta elettronica
per Linux permetteva di configurare più account
POP3 o IMAP è proprio questo.

Uno per tutti e tutti per uno: Fetchmail


Quando abbiamo appena installato Linux ci
troviamo di fronte a una scelta di vita. Usiamo la
macchina come server o come client? Nel
secondo caso, ci basta configurare i client di posta
elettronica come avremmo fatto con Windows, e
vivere felici. Soltanto che, a questo punto, che
scopo potrebbe mai avere navigare sotto Linux se

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (3 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

non ne sfruttiamo minimamente i vantaggi? Molto


meglio configurare la macchina come server,
allora, e in questo caso vi servono tre cose: 1)
molto tempo a disposizione, 2) una buona
conoscenza della lingua inglese, 3) un ottimo
rimedio per il mal di pancia.
Se la cosa non vi spaventa, allora Internet è la
madre di tutti i corsi di Linux possibili: collegatevi
al sito di documentazione italiana ILDP (ildp.pluto.
linux.it) e cercate tutta la documentazione relativa
ai server di posta elettronica per la vostra
distribuzione Debian. Se non ci capite niente,
allora, lasciate pure perdere Linux Espresso e
installatevi una Mandrake o una Suse, sono
distribuzioni che automatizzando diverse
procedure, tra cui quella di installazione e
configurazione dei server di posta elettronica.
Presa questa decisione, non vi resta che agire di
conseguenza e tornare a leggere qui quando il
sistema di messaging sulla vostra macchina
funziona. Capire se ciò avviene è semplicissimo:
basta configurare un qualsiasi client di posta
elettronica in questo modo:

username: il vostro nome utente


password: la vostra password di utente
SMTP server: localhost
POP3 server: localhost
indirizzo email: utente@localhost

e poi mandare un messaggio di prova intitolato per


luappunto uprovau a se stessi (quindi da
utente@localhost a utente@localhost, con
uutenteu ovviamente il vostro nome utente). Se
cliccando sul pulsante ucontrolla postau ricevete il
vostro messaggio, allora è tutto ok.
Siamo quindi arrivati a soddisfare le seguenti
richieste:

1) la nostra macchina Linux è un server SMTP:


possiamo inviare posta locale e trasmetterla all
\uesterno via Internet;
2) è anche un server POP3: possiamo ricevere la
posta locale e, a patto che venga inviata
direttamente al nostro indirizzo IP o a un DNS
associato mentre siamo online, dall\uesterno;
3) disponiamo di diversi indirizzi di posta
elettronica esterni del tipo pippo@server1.com,
pippo@server2.org e pippo@server3.net, e
vogliamo spostare tutto il traffico delle suddette

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (4 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

caselle sulla nostra macchina client/server

Per soddisfare il punto 3 (e così torniamo al


discorso iniziale) i punti 1 e 2 non sarebbero
necessari: basterebbe un moderno client di posta
elettronica con cui configurare più account POP3.
Ma se vogliamo fare le cose per benino, i punti 1 e
2 sono fondamentali, perché adesso finalmente
chiamiamo in causa fetchmail, un geniale
programmino capace di funzionare anche come
demone (basta lanciarlo con l\uopzione -d), che
serve proprio a prelevare la posta dagli indirizzi
esterni e spostarla sulla casella locale in /var/spool/
mail/utente.
Per funzionare, fetchmail ha bisogno di un file di
configurazione .fetchmailrc posto nella directory
home dell\uutente. Questo vero e proprio \uscript
\u deve dire a fetchmail cosa deve fare per
prelevare la posta. La sintassi è questa

poll mail.server.com proto pop3 user \unomeutente


\u pass \upassword\u

e vanno inseriti tutti i dati dei propri account. Per


esempio, per prelevare la sua posta dalle caselle
roslindo@provider.com e super-
roslindo@accidenti.+
it, luipotetico utente roslindo potrebbe scrivere
quanto segue nel suo file .fetchmailrc:

poll mail.provider.com proto pop3 user \uroslindo\u


pass "12345"
poll pop.accidenti.it proto pop3 user \usuper-
roslindo\u pass "54321"

e naturalmente abbiamo considerato il caso che le


due password fossero rispettivamente 12345 e
54321 (non usatele sul vostro sistema!!!), che l
\uusername corrispondesse alla parte iniziale dell
\uindirizzo e che i server di posta avessero lo
stesso domain name delle caselle. In ogni caso,
quando l\uutente roslindo lancerà fetchmail sulla
sua macchina linux, questi si occuperà di
prelevare la posta e reindirizzarla ai server
presenti sul localhost, che a loro volta la
piazzeranno in /var/spool/mail/roslindo. +

Configuriamo i client
Se abbiamo configurato correttamente i server

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (5 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

SMPT e POP (o IMAP) sulla nostra macchina


Linux, dire ai nostri client di prelevare la posta non
dovrebbe costituire affatto un problema. Questo
testo, tuttavia, è stato concepito per il super-
principiante, tanto vale quindi ripassare alcuni
concetti fondamentali, che vanno bene con
Outlook Express, ma che funzionano (pensate un
po\u...) con tutti i client di posta elettronica. Tanto
per cominciare, ognuno di essi mette a
disposizione una pagina di opzioni. Può trovarsi
nel menu \ustrumenti\u, direttamente in quello
\uopzioni\u o ancora in \ugestione account\u, fatto
sta che a voi serve il pannellino con le
impostazioni dei server. Prendiamo il caso di
Evolution, e la posizione giusta è impostazioni ->
mail configuration.
Vediamo un pou cosa ci chiede il nostro client di
posta. Tanto per cominciare, dobbiamo impostare
un indirizzo di posta elettronica. Il consiglio,
ovviamente, è di usare quello a cui normalmente
destiniamo tutto il traffico. Quindi, se ci piace tanto
la nostra casella su libero.it, possiamo dirgli di
usare utente@libero.it come indirizzo ufficiale.
Questa decisione si riflette sulla posta in arrivo:
indipendentemente dal server che useremo per
inviare le lettere, i nostri destinatari leggeranno
sempre che la posta arriva da utente@libero.it, e
sarà quello luindirizzo a cui verranno destinate
immediatamente le risposte. Il nostro caso, infatti,
resta quello di una macchina collegata a Internet
solo saltuariamente, con un collegamento a un
provider, e non è affatto ipotizzabile (con quello
che costano le chiamate al giorno duoggi) tenere il
PC con Linux collegato perennemente al provider
soltanto per usarlo come server POP. Tanto a
prelevare la nostra posta ci può pensare fetchmail
quando ne avremo voglia.
Chiaro, se uno dispone di una linea ADSL il
discorso cambia, ma bisogna vedere quanti di noi
sarebbero capaci di convivere con un PC acceso
perennemente (le ventole sono rumorose,
soprattutto di notte). Ma non divaghiamo.
La seconda cosa che ci viene chiesta da tutti i
programmi di posta elettronica è il server SMTP
(simple mail tansport protocol), quello che ci
servirà a inviare la posta. Il server SMTP altro non
fa che ricevere dal client un messaggio, contattare
il server POP del destinatario e consegnargli la
posta. Se ci colleghiamo sempre allo stesso
provider, può essere una buona idea utilizzare

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (6 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

come server SMTP quello indicato dal provider


stesso. Se ci colleghiamo soltanto a Libero, tanto
vale usare mail.libero.it, insomma. Il discorso
cambia se ci affidiamo a più provider in base alle
tariffe orarie o a eventuali offerte promozionali
temporanee: quando cerchiamo di usare un server
SMTP esterno, di solito questi controlla l\uindirizzo
IP del mittente e, se non appartiene alla sua
intranet, rifiuta di offrire il servizio. Questo, per ovvi
motivi di sicurezza legati allo spam e per evitare
che altri provider concorrenti sfruttino il suo server
rallentando abusivamente le sue operazioni.
Meglio, in questo caso, configurare la propria
macchina come server SMTP e indicare nel client
di posta elettronica \ulocalhost\u o "127.0.0.1"
come server SMTP (leggi sopra).
Infine, occorre impostare un account di posta
POP3 per dire al client dove prelevare la posta in
arrivo. Chi ha uno o due indirizzi diversi e basta
può pensare di creare due profili POP3 (o IMAP a
seconda del provider) direttamente nel client, chi
ne ha di più (chi scrive, per esempio, ne ha
collezionati una dozzina) fa decisamente meglio a
ricorrere a fetchmail. Se abbiamo configurato la
nostra macchina linux come server POP3, basta
indicare (come abbiamo scritto prima) \ulocalhost
\u alla voce server, e usare le nostre abituali login
e password alle voci \unome utente\u e \upassword
\u.

Redirector, servizi webmail, posta locale e via


dicendo
Veniamo adesso a un caso molto particolare. Ma
che può tornare utile come esempio. Ci sono
servizi di domain-redirection (come quello offerto
da www.bovabyte.com) che permettono di
reindirizzare un URL uvirtualeu verso un usito
realeu, e un uindirizzo fintou di posta elettronica
verso una ucasella verau. Facciamo un esempio
che calza a pennello. Il sottoscritto, tra le dodici
caselle di posta elettronica di cui dispone, ne ha
una chiamata

paolo@bovabyte.com

Non si tratta di una casella reale, perché in realtà


tutto il traffico su di essa viene automaticamente
rediretto a unualtra casella di posta, stavolta
ufisicamente esistenteu, ovvero paolo@bovabyte.

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (7 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

zzn.com. A sua volta, luindirizzo @bovabyte.zzn.


com risiede in realtà sul server apop.zzn.com e,
per prelevare la posta, occorrerebbe inserire come
nome utente upaolo@bovabyte.zzn.comu e come
POP3 server uapop.zzn.comu. Vediamo quindi
cosa accadrebbe se luutente roslindo@libero.it
dovesse scrivermi unuemail a paolo@bovabyte.
com.

1) il messaggio partirebbe dal server SMTP usato


da roslindo (quindi la sua macchina linux oppure
mail.libero.it)
2) raggiungerebbe @bovabyte.com, ma sarebbe
reindirizzato verso @bovabyte.zzn.com
3) qui verrebbe posto nella casella
upaolo@bovabyte.zzn.comu sul server apop.zzn.
com

Come potrei fare, io, per ricevere questa


benedetta lettera, rendere tutti i passaggi del tutto
trasparenti e fare finta che lueventuale risposta
arrivi proprio da paolo@bovabyte.com? Il modo è
semplice. Mi basterebbe configurare fetchmail in
modo opportuno

poll apop.zzn.com proto pop3 user


upaolo@bovabyte.zzn.comu pass
ulamiapasswordu

e poi configurare il client di posta elettronica in


modo che il mio indirizzo sia upaolo@bovabyte.
comu. Basta, problema risolto. Ciò mi obbligherà a
lanciare fetchmail ogni volta che voglio controllare
lueffettiva presenza di nuova posta, ma... ci sono
client per linux come Kmail (che uso attualmente)
e Spruce che permettono di lanciare un comando
(e quindi fetchmail) ogni volta che devono andare
a prendere i nuovi messaggi. Come vedete, nulla
viene mai lasciato al caso.
I client di posta, poi, permettono di giocare meglio
con gli indirizzi multipli tramite l\uapplicazione di
filtri. Anche questi solitamente stanno nel menu
degli strumenti, e permettono di decidere la
\upolitica\u di ricezione dei messaggi. Se
sappiamo che l\uutente roslindo ci manda solo
pubblicità inutile, non ci vuole davvero nulla per
applicare un filtro del tipo \use il [mittente] contiene
[roslindo] allora [elimina il messaggio]\u (tra
parentesi quadre ci sono le azioni e le

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (8 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

impostazioni decise dall\uutente.

I Newsgroup
Configurare un client per le news, fortunatamente,
è molto più facile. Di solito ci si affida al
newsserver indicato dal provider o, in assenza di
esso, a server pubblici che non restringono il
servizio. L\uunica differenza rimarchevole è che al
posto di indicare un server POP3, dovremo dire al
client quale server NNTP utilizzare per scaricare i
gruppi di discussione. Tutto qui. Dei buoni client?
Sicuramente quelli integrati a Mozilla (lento, ma
affidabile) e Netscape, poi la scelta riguarda
puramente il gusto degli utenti. Per le KDE c'è l
\uottimo Knode, mentre per le Gnome esistono
Pan e altri ancora. Per una rosa completa nulla è
più propedeutico di una visitina al sito linux.tucows.
com.

Torna indietro

http://www.interpuntonet.it/RIVISTA/68/posta/posta.html (9 di 9)03/04/2006 1.21.04


Consultazione della rivista Inter.Net sul world wide web.

Bash, ultima frontiera

Corso di Linux per principianti - settima parte -


di Paolo Besser <paolone@besser.it>

Chi ha detto che un sistema operativo è solo


finestre e pulsanti? Entriamo in Linux dalla porta
principale, aprendoci la strada nella bash, la shell di
sistema

Nei mesi scorsi abbiamo imparato a svolgere tutte


le funzioni "standard" di Linux tramite le
applicazioni grafiche che girano sotto X. Adesso è
venuto il momento di fare sul serio, ovvero di
cominciare a ragionare un po' di più nei termini
dell'utenza "linux-oriented" e lasciandosi alle spalle
tutti i retaggi culturali della "filosofia Windows".
Tanto per cominciare, occorre abbandonare l'idea
che la riga di comando sia malevola e
incomprensibile: tramite un "prompt dei comandi" (o
"emulatore di terminale", giusto per stare nel
seminato) è possibile svolgere numerosissimi
compiti con una velocità, una semplicità e
un'efficienza che spesso e volentieri le utilità
grafiche e i frontend nemmeno si sognano col
cannocchiale.
Probabilmente qualcuno penserà che Paolo Besser
è impazzito, che i computer ci hanno impiegato
anni per buttare via l'Ms/Dos e assomigliare
finalmente ai Macintosh, e che fare pochi clic con
un mouse è (relativamente) più semplice che farne
il triplo con la tastiera, ma... pensiamo soltanto alla
decompressione di più file per volta. Non è più
semplice scrivere "unzip *", piuttosto che cliccare
due volte su dieci icone diverse?

La bash, l’interfaccia minimale


Come abbiamo già detto più volte, il "prompt dei
comandi" di Linux si chiama shell. Sotto Windows
l'unica shell disponibile è il famoso file command.
com, che apre la famigerata finestrella nera col
cursore lampeggiante. A differenza del suddetto
prompt, Linux permette una vasta scelta tra shell
differenti, nate nei laboratori informatici delle
università o nelle camerette degli appassionati,
ognuna con le sue caratteristiche e i suoi vantaggi.
Linux Espresso, e così anche Debian, Red Hat,
Mandrake e molte altre, hanno deciso di adottare la
bash, acronimo di Bourne Again Shell. Ciò che ha
reso così diffusa quest’ultima particolare è la sua

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (1 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

perfetta aderenza alla filosofia open-source, cui


s'aggiunge una discreta facilità di configurazione e
una grandissima versatilità.
Nei sistemi non-grafici la bash è ciò che viene
caricato immediatamente dopo la procedura di
login dell'utente. Quando ci appare il cursore,
segno inconfondibile che il sistema è pronto ad
accettare i nostri comandi, vuol dire che la bash è
in esecuzione e pronta all'uso e che ha già caricato
alcuni file di configurazione scritti dall'utente per
personalizzarla. Vediamo quali sono.
Entriamo un secondo nella nostra home directory, e
diamo il comando ls -al, in modo da poter
osservare i nostri file nascosti (quelli che iniziano
per punto). Se siamo ormai piuttosto navigati, e il
nostro spazio utente è già pieno di file, possiamo
semplificarci la vita con un bel

ls -al .bas*

che ci darà un risultato approssimativamente simile


a questo:

[paolone@gualtiero paolone]$ ls -al .bas*


-rw------- 1 paolone paolone 9849 apr 18 20:52 .
bash_history
-rw-r--r-- 1 paolone paolone 301 nov 13 02:06 .
bash_profile
-rw-r--r-- 1 paolone paolone 239 ago 17 2000 .
bashrc

come potete notare, non è necessario assegnare a


questi file la proprietà di esecuzione (-rwxr-xr-x),
perché tanto ci penserà già la bash a caricarli
immediatamente dopo il login. In compenso,
possiamo editarli a nostro piacimento, a
cominciare .bashrc. Vediamolo...

# .bashrc
# imposta funzioni e alias specifiche per l'utente
alias ls='ls --color'
alias ll='ls -al'
alias x='exit'
alias X='startx'
alias halt='su -c "halt"'
alias mp='mpg123'
# Assimila le funzioni globali
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (2 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

Innanzitutto vediamo due commenti, che spiegano


cosa avverrà di lì a breve. Tanto per cominciare,
vengono impostati gli alias. Chi sono costoro? Se
ricordate la puntata sui collegamenti simbolici,
questa parola ricorreva spesso nella sua accezione
"macintoshana", del tutto simile ai collegamenti ai
file di Windows. Ovviamente, anche in questo caso
il significato della parola assumerà una
connotazione più o meno analoga, ma invece di
creare "scorciatoie" ai file, lo si fa ai comandi da
tastiera.
Un alias può servire a fare più cose: rimpiazzare un
comando con un altro, accorciarne la sintassi
inglobandone le opzioni più utilizzate, oppure
addirittura crearne di nuovi che significano varianti
differenti di uno stesso comando. Vediamo qualche
esempio, traendolo proprio dal file di cui sopra:

alias x='exit'
alias X='startx'

Questi sono due tipici esempi di "rimpiazzo": i


comandi originari erano "troppo lunghi da digitare",
e così eccoli soprannominati adeguatamente.
Quando invocheremo 'x' (x minuscola) dal
terminale, impartiremo in realtà il comando
'exit' (esci dal terminale, oppure esegui un logout),
mentre con una 'X' (x maiuscola) attiveremo il
server X-Window, in quanto grazie al nostro alias
questa lettera sarà equivalente a 'startx'.

alias ls='ls --color'

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (3 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

Pine è un potente client di posta elettronica

In questo caso, abbiamo deciso di inglobare nel


comando ls la funzione di visualizzazione a colori
delle directory. È noto e risaputo che dando il
comando ls "nudo e crudo", nomi di file e nomi di
directory saranno assolutamente simili gli uni agli
altri, mentre digitando 'ls --color', ecco che come
per magia i primi rimarranno grigi, i secondi
diventeranno blu, e i file eseguibili saranno marcati
da un bel verde semaforo. Impostando questo
alias, scrivere 'ls' sarà appunto come scrivere 'ls --
color'.
Comodo, eh? E non è certo finita qui, perché se
vediamo soltanto l'alias successivo, ovvero

alias ll='ls -al'

avremo creato nientemeno che un nuovo comando!


'll' a questo punto diventerà come 'ls --color --al',
visto che grazie all'alias precedente avevamo
attivato su ls la colorazione dei nomi. In parole
povere, si possono impostare alias di alias, purché
la cosa avvenga in perfetto ordine. Guardate un po'
che differenza passa la 'ls' e 'll' (ovviamente sulla
rivista i colori non sono riproducibili):

[paolone@gualtiero I.N-linux6]$ ls
evol1.jpg evol3.jpg evol5.jpg kmail2.jpg knode.jpg
posta.rtf

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (4 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

evol2.jpg evol4.jpg kmail1.jpg kmail3.jpg linux6.zip


spruce.jpg
[paolone@gualtiero I.N-linux6]$ ll
totale 2320
drwxr-xr-x 3 paolone paolone 4096 mar 27 19:17 .
drwxr-xr-x 142 paolone paolone 8192 apr 20
17:27 ..
drwxr-xr-x 2 paolone paolone 4096 mar 27 16:10 .
xvpics
-rw-r--r-- 1 paolone paolone 231515 mar 26 18:35
evol1.jpg
-rw-r--r-- 1 paolone paolone 72386 mar 26 18:35
evol2.jpg
-rw-r--r-- 1 paolone paolone 51929 mar 26 18:35
evol3.jpg
-rw-r--r-- 1 paolone paolone 45792 mar 26 18:35
evol4.jpg
-rw-r--r-- 1 paolone paolone 102834 mar 26 18:35
evol5.jpg
-rw-r--r-- 1 paolone paolone 174328 mar 27 16:00
kmail1.jpg
-rw-r--r-- 1 paolone paolone 55213 mar 27 16:04
kmail2.jpg
-rw-r--r-- 1 paolone paolone 155424 mar 27 16:05
kmail3.jpg
-rw-r--r-- 1 paolone paolone 210252 mar 27 16:10
knode.jpg
-rw-r--r-- 1 paolone paolone 1070968 mar 27 19:17
linux6.zip
-rw-r--r-- 1 paolone paolone 22505 mar 27 19:16
posta.rtf
-rw-r--r-- 1 paolone paolone 99869 mar 27 16:08
spruce.jpg

Un bell’effetto, non è vero? E non è ancora finita. Ci


sono mille trucchetti che si possono effettuare
tramite alias. Per esempio, far sì che il comando su
venga eseguito per quegli "ordini" che normalmente
dovrebbero essere eseguiti da root. Un esempio
tipico è l'halt, utile per chiudere Linux e spegnere il
computer, e che normalmente va eseguito
dall'amministratore di sistema (o da un utente dopo
aver assunto i privilegi del medesimo):

alias halt='su -c "halt"'

D'ora in avanti, anche l'utente Paolone potrà


modestamente spegnere il suo computer, senza
per forza doversi loggare come root: appena dato il
comando halt, infatti, il suo sistema operativo

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (5 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

preferito gli chiederà gentilmente di fornire la


password di amministratore, e poi passerà a
spegnersi.

La bash è una shell davvero potentissima, che


permette la stesura di script di una certa
complessità e che gode di una grande
"configurabilità", può essere, cioè, adattata a tutte
le nostre esigenze. Volendo, con un uso un po'
smodato degli alias potremmo addirittura tradurre in
italiano tutti i comandi, lasciandoli tuttavia invariati
per quei programmi che vi si appoggiano per il loro
funzionamento (i front end). Immagino che ai puristi
farebbe orrore, ma nulla vi potrebbe impedire di
farvi degli alias di questo tipo e piazzarli nel file .
bashrc:

alias modifica='vi'
alias directory='ls'
alias sposta='mv'
alias rinomina='mv'
alias elimina-directory='rmdir'+

alias crea-directory='mkdir'
alias rimuovi='rm'
alias RIMUOVI='rm -rf'
alias spegni='halt'

L'unica obiezione che ci sentiremmo di muovervi


sarebbe questa: quando esiste un comando
comodo come ls (o il suo alias ll), a che pro
inventarsi un comando scomodo e lungo da digitare
come "directory"? Il trucco sta nel memorizzarli...

Il file .bash_profile
Passiamo così a .bash_profile che, come del resto
suggerisce il nome, contiene un breve profilo di
configurazione:

# .bash_profile
# Carica alias e funzioni
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# Ambiente e percorso (Path)


PATH=$PATH:/usr/local/+
bin:/usr/sbin:/usr/bin:/+
usr/local/spin:/sbin:/+
bin:/usr/local/java/bin
BASH_ENV=$HOME/.bashrc

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (6 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

USERNAME=""

export USERNAME BASH_ENV PATH

La funzione di questo file è configurare


correttamente l'ambiente di lavoro della bash. Le
prime righe si assicurano dell'esistenza del file .
bashrc, e in quel caso lo caricano per attivare gli
alias visti prima. Poi, viene fissata la variabile
PATH, che, analogamente a quanto avviene nel
mondo Ms/Dos, serve a dire al sistema operativo
dove trovare i comandi. Tutte le locazioni (per
esempio /bin, /usr/local/bin, /usr/sbin ecc) sono
separate tra di loro dai due punti (:).
È buona abitudine, così come avviene anche nei
file di configurazione di M/Dos, anteporre la
variabile PATH a tutti gli altri contenuti, in modo da
aggiungere dei percorsi, e non modificare eventuali
impostazioni precedenti. Volendo per esempio
aggiungere /usr/local/pippo/bin alle directory
contemplate nel percorso, potremmo aggiungere la
riga

PATH=$PATH:/usr/local/+
pippo/bin

ponendo ovviamente la medesima immediatamente


dopo le altre impostazioni e prima del comando
export, che serve a esportare le variabili
d'ambiente. Queste variabili servono poi al sistema
operativo e ai programmi, che le vanno a leggere
quando necessario. A volte, per esempio, può
tornare utile aggiungere dei percorsi particolari alla
variabile d'ambiente LD_LIBRARY_PATH,
soprattutto se ci viene in mente di installare le
librerie QT e il desktop KDE. Le operazioni da
compiere in questo caso (pensateci voi prima, poi
andate avanti a leggere) sono due: aggiungere la
riga

LD_LIBRARY_PATH=$ LD_LIBRARY_PATH:/
percorso/+
da/aggiungere

E inserire LD_LIBRARY_PATH tra le variabili da


esportare con il comando export. Alcuni di voi ci
hanno chiesto come mai, quando impartiscono un
comando da tastiera, spesso il sistema operativo
risponda "file inesistente" anche se esso si trova
nella directory corrente: il punto è che, a differenza
di quanto avvenga in casa Microsoft, qualcuno ha

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (7 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

pensato che la directory corrente non fosse degna


di appartenere al path di default. In realtà si tratta
soltanto di una contromisura per evitare pasticci o,
se preferite, di una questione di sicurezza. I meno
paranoici, tuttavia, possono rimediare
semplicemente aggiungendo un bel

PATH=$PATH:./

Ovvero inserendo ./ (la directory corrente,


qualunque essa sia) al percorso. Ciò eviterà - per
esempio - di dover scrivere ./configure per lanciare
lo script di pre-compilazione dei programmi, in
quanto basterà scrivere configure per ottenere lo
stesso risultato. In ogni caso, tutte le variabili
d'ambiente vanno specificate in questo file, ed
esportate col comando export finale.

Il file .bash_history
Avete presente il comando doskey, quello che sotto
Windows permette di ripetere gli ultimi comandi
impartiti da tastiera? Gli utenti di Windows ME già
ce l'hanno incorporato col prompt di comando, ma
tutti gli altri devono digitarlo per attivare questa
comodissima funzione. Beh, la bash ovviamente
l'ha di default e tutti i comandi che impartiremo da
tastiera verranno memorizzati in questa sorta di
"diario". Il bello della bash, però, è che questo
"memorandum" sopravvive anche al riavvio del
sistema, dando sempre all'utente la possibilità di
ripetere le ultime sequenze di comandi.
Per risalire è sufficiente schiacciare il tasto cursore
con la freccia in alto, mentre per scendere basta
usare il tasto sottostante, il tutto con una semplicità
a dir poco disarmante. Vogliamo modificare un
comando per adattarlo alle nostre necessità?
Basterà visualizzarlo risalendo l'history e premere i
tasti cursore a destra e a sinistra per impartire tutti i
cambiamenti del caso: la modalità d'inserimento
automatico è impostata di default, per cui non
avremo di che preoccuparci. Se, per esempio,
volessimo rinominare il file pippo.txt in poppo.txt,
ma per errore impartissimo il comando

mv pappo.txt poppo.txt

non dovremmo fare altro che premere il tasto con la


freccia in alto, spostarci con quella a destra
immediatamente dopo la "pa" di "pappo.txt",
premere il tasto di cancellazione (backspace) una
volta, e poi inserire la i mancante, dopodiché

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (8 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

premere Invio. Semplice, no?

Nella prossima puntata del corso impareremo a


compilare i programmi usando la riga di comando,
per cui esercitatevi nel suo utilizzo!

Torna indietro

http://www.interpuntonet.it/RIVISTA/69/Bash/corsolinuxsette.html (9 di 9)03/04/2006 1.21.07


Consultazione della rivista Inter.Net sul world wide web.

Internet Ready to go!

Internet Ready to go!

Se volete provare a collegarvi utilizzando lo script


che abbiamo descritto in questa puntata, non vi
rimane che prendere dal cd rom di questo mese il
file

script.tar.gz

e scompattarlo tramite il comando

tar xvfz script.tar.gz

Modificare i parametri dei file inserendo i dati che


rispecchiano la vostra configurazione, password e
username, controllate i permessi e poi collegatevi
ad internet.

Riferimenti e links:
● Linux: colleghiamolo in rete (Articolo)
● Internet Ready to go! (riquadro)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/41/linux/box.html03/04/2006 11.58.53
Consultazione della rivista Inter.Net sul world wide web.

Tabella operazioni

TABELLA OPERAZIONI

Ecco brevemente, i comandi e le classi di comandi


che possono essere manipolati con la direttiva
Limit

Comandi

-CWD (Change Working Directory)


E' il classico comando usato per spostarsi fra le
directory; l'omologo ftp del cd locale
-MKD (MaKe Directory)
Consente di creare le directory.
-RNFR (ReName FRom), RNTO (ReName TO)
Servono per rinominare le directory.
-DELE (DELEte)
Usato per cancellare i file.
-RMD (ReMove Directory)
Serve a rimuovere le directory.
-RETR (RETRieve)
Con questo comando vengono trasferiti i file dal
server al client.
-STOR (STORe)
Mentre con questo si trasferiscono i file dal client
al server.

Classi

I precedenti comandi possono essere raggruppati


in classi, cosa che rende più agevole la limitazione
di una famiglia "logica" di operazioni.

-READ
Concerne tutte le operazioni che coinvolgono
operazioni di lettura di file (non di directory) come
RETR, STAT, etc...
-WRITE
Raggruppa i comandi riguardanti la scrittura/
creazione/+
cancellazione di file e directory.
-DIRS
Riguarda le operazioni di visualizzazione delle
directory, come ad esempio LIST.
-ALL
Con questa classe si opera su tutti i comandi ftp
(Come se specificassimo contemporaneamente
READ WRITE DIRS)

http://www.interpuntonet.it/RIVISTA/47/ftp/tabellaoperazioni.html (1 di 2)03/04/2006 12.07.17


Consultazione della rivista Inter.Net sul world wide web.

Riferimenti e links:
● Chi cerca trova... con i permessi giusti (Articolo)
● Tabella operazioni (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/47/ftp/tabellaoperazioni.html (2 di 2)03/04/2006 12.07.17


Consultazione della rivista Inter.Net sul world wide web.

Alcuni comandi con Options

TABELLA 1 Alcune opzioni della direttiva Options


nella sezione Directory

Parola chiave Significato


None Disabilita tutte le opzioni
All Abilita tutte le opzioni
FollowSymLinks Abilita l'uso di link simbolici
ExecCGI Permette l'esecuzione dei programmi cgi
Indexes Permette di ottenere il listato contenuto in
una directory
Includes E' consentito l'utilizzo degli ssi
IncludesNOEXEC E' consentito l'utilizzo parziale
degli ssi, senza esecuzione

Riferimenti e links:
● Anche tu della tribù Apache (Articolo)
● Alcuni comandi con Options (riquadro)
● Bibliografia (riquadro)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/tabella.html03/04/2006 12.08.30
Consultazione della rivista Inter.Net sul world wide web.

Bibliografia

BIBLIOGRAFIA
www.apache.org
modules.apache.org
perl.apache.org
www.c2net.com
RedHat linux edito da Apogeo

Riferimenti e links:
● Anche tu della tribù Apache (Articolo)
● Alcuni comandi con Options (riquadro)
● Bibliografia (riquadro)

Torna indietro

http://www.interpuntonet.it/Inter.Net/RIVISTA/48/apache/bibliografia.html03/04/2006 12.08.30
http://www.interpuntonet.it/RIVISTA/49/linux/options.txt

ALCUNE OPZIONI DELLA DIRETTIVA OPTIONS NELLA SEZIONE DIRECTORY

Parola chiave Significato

None Disabilita tutto


All Abilita tutte le opzioni
FollowSymLinks Abilita l'uso di link simbolici
ExecCGI Permette l'esecuzione dei programmi cgi
Indexes Permette di ottenere il listato del contenuto della directory
Includes Abilita i Server Side Includes

http://www.interpuntonet.it/RIVISTA/49/linux/options.txt03/04/2006 12.09.02
http://www.interpuntonet.it/RIVISTA/49/linux/allowoverride.txt

ALCUNE OPZIONI DELLA DIRETTIVA ALLOWOVERRIDE

Parola chiave Significato

None Impedisce che qualunque direttiva contenuta nel file access.conf venga ignorata
All Tutte le direttive possono essere ignorate
AuthConfig Consente l'uso di direttive di autorizzazione
Limit Permette l'uso di direttive di controllo sugli accessi
Indexes Consente di ottenere il listato del contenuto
FileInfo Permette l'uso di direttive di controllo del tipo di documento

http://www.interpuntonet.it/RIVISTA/49/linux/allowoverride.txt03/04/2006 12.09.02
http://www.interpuntonet.it/RIVISTA/49/linux/limit.txt

ALCUNE DELLE DIRETTIVE UTILIZZABILI NELLA SEZIONE LIMIT

Parola chiave Significato

require Utenti che possono accedere attraverso autenticazione


order Ordine di valutazione delle direttive deny e allow
deny Specifica gli host a cui viene negato l'accesso
allow Specifica gli host a cui viene concesso l'accesso

http://www.interpuntonet.it/RIVISTA/49/linux/limit.txt03/04/2006 12.09.03
http://www.interpuntonet.it/RIVISTA/49/linux/htaccess.txt

ALCUNE DIRETTIVE UTILIZZABILI NELLA FILE.HTACCESS

Direttiva Significato

Options Opzioni varie.


ErrorDocument Personalizza la risposta in caso si verifichino condizioni di errore
DefaultType Definisce il tipo/sottotipo mime predefinito per la directory
AuthName Nome o descrizione di una zona soggetta ad autenticazione.
AuthType Definizione del tipo di autenticazione (Basic)
require Dichiarazione degli utenti autorizzati all'autenticazione
order Ordine di valutazione delle direttive deny e allow
deny Specifica gli host a cui viene negato l'accesso
allow Specifica gli host a cui viene concesso l'accesso

http://www.interpuntonet.it/RIVISTA/49/linux/htaccess.txt03/04/2006 12.09.05
Consultazione della rivista Inter.Net sul world wide web.

Client per usare SSH da Windows

CLIENT PER USARE SSH DA WINDOWS:

Ecco una serie di collegamenti da seguire per


scaricare il client ssh per Windows che fa al caso
vostro:

Tera Term , un client telnet per Windows. Tramite


una dll aggiuntiva è possibile effettuare
connessioni ssh.

hp.vector.co.jp.

Potete prelevare la dll aggiuntiva all'indirizzo

www.zip.com.au.

Putty e' un client ssh free per Windows che potete


scaricare da:

rak.isternet.sk

Riferimenti e links:
● Nessuno mi capisce (Articolo)
● Client per usare SSH da Windows (riquadro)
● Bibliografia AFIA (riquadro)
● LSH l'alternativa GNU a SSH (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/53/Ssh/boxclientwin53.html03/04/2006 12.10.19
Consultazione della rivista Inter.Net sul world wide web.

Bibliografia AFIA

BIBLIOGRAFIA AFIA

* Ssh (Secure Shell) Home Page


www.cs.hut.fi
* SSH Communication Security Ltd., Welcome to
the ISPEC Company
www.ssh.fi
* Data Fellows
www.europe.datafellows.com
* Replay Associates, L.L.P.
www.replay.com
* Ulrich Flegel, The Interaction between SSH and
X11, Thoughts on
the Security of the Secure Shell
rootshell.com

Riferimenti e links:
● Nessuno mi capisce (Articolo)
● Client per usare SSH da Windows (riquadro)
● Bibliografia AFIA (riquadro)
● LSH l'alternativa GNU a SSH (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/53/Ssh/boxbibliogr53.html03/04/2006 12.10.20
Consultazione della rivista Inter.Net sul world wide web.

LSH l'alternativa GNU a SSH

LSH l'alternativa GNU a SSH

LSH e' una implementazione,ancora in fase di


sviluppo, di tipo free del
protocollo SSH (sia client che
server) puo' essere scaricato da
www.net.lut.ac.uk

Riferimenti e links:
● Nessuno mi capisce (Articolo)
● Client per usare SSH da Windows (riquadro)
● Bibliografia AFIA (riquadro)
● LSH l'alternativa GNU a SSH (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/53/Ssh/boxlsh53.html03/04/2006 12.10.21
http://www.interpuntonet.it/RIVISTA/56/BASH/tabella1.gif

http://www.interpuntonet.it/RIVISTA/56/BASH/tabella1.gif03/04/2006 12.13.15
http://www.interpuntonet.it/RIVISTA/56/BASH/tabella2.gif

http://www.interpuntonet.it/RIVISTA/56/BASH/tabella2.gif03/04/2006 12.13.16
http://www.interpuntonet.it/RIVISTA/56/BASH/tabella3.gif

http://www.interpuntonet.it/RIVISTA/56/BASH/tabella3.gif03/04/2006 12.13.17
http://www.interpuntonet.it/RIVISTA/56/BASH/tabella4.gif

http://www.interpuntonet.it/RIVISTA/56/BASH/tabella4.gif03/04/2006 12.13.18
http://www.interpuntonet.it/RIVISTA/56/BASH/tabella5.gif

http://www.interpuntonet.it/RIVISTA/56/BASH/tabella5.gif03/04/2006 12.13.21
Consultazione della rivista Inter.Net sul world wide web.

Modificare i pannelli

I pannelli (o toolbar, o pulsantiere) sono


sicuramente uno degli strumenti più interessanti
del desktop di Gnome. Organizzare bene i propri
pannelli significa semplificarsi notevolmente la
vita. Per la gioia degli amanti del "drag'n'drop", per
personalizzarne i contenuti non bisogna nemmeno
impazzire dietro a file di configurazione testuali,
come facevano ii vecchi utenti delle prime versioni
di WindowMaker. Vediamo quindi come creare un
nuovo pannello.

La foto mostra la successione di tasti e menu da


scegliere quando vogliamo aggiungere un nuovo
pannello al desktop. Non è difficile, basta seguire
la sequenza Avvio -> Pannello -> Crea nuovo
pannello e poi decidere cosa inserire. Quello che
andremo a creare sarà un pannello fluttuante,
lungo, cioè, come la somma dello spazio occupato
da tutte le icone che vi inserirermo. Si noti che una
volta creato il pannello ci conviene deciderne
subito le proprietà, cliccando su di esso col tasto
destro del mouse. Potremo deciderne la posizione
e l'eventuale sfondo. In questo caso, abbiamo
deciso che si piazzerà nel lato superiore e inizierà
a sinistra, e come sfondo avrà una texture già
presente nel disco fisso. Per aggiungere elementi
già presenti nei menu o in altri pannelli, poi,
basterà trascinarne le icone direttamente sul
nuovo pannello, così come avremmo fatto per
trasferire un file da una parte all'altra del nostro
disco fisso, proprio come avviene con le voci dei
menu di Windows 98. Il nuovo elemento
conserverà tutte le proprietà che aveva nel
pannello (o nel menu) di origine.
Ammettiamo, però, di voler aggiungere al pannello
un'applet o un programma non previsto dai menu.
Nel primo caso sarà lo stesso desktop Gnome a
informarci sulle applet disponibili (basta cliccare
col tasto destro e poi scegliere aggiungi al
pannello -> applet), nel secondo, invece, dovremo
optare per un "pulsante di avvio.

Le operazioni da compiere sono semplicissime:


Pannello -> aggiungi al pannello -> pulsante di
avvio. Fatto ciò, ci apparirà la schermata
seguente:

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/box_corsolinux64.html (1 di 3)03/04/2006 12.14.21


Consultazione della rivista Inter.Net sul world wide web.

La finestra""Crea applet di avvio""permette di


decidere la funzione del nuovo pulsante. Il punto
(1) non è altro che un segnalibro: ci avverte che
dobbiamo spostarci su un lato del pannello da
modificare e cliccare col tasto destro del mouse,
compiendo esattamente le stesse operazioni che
abbiamo visto in precedenza. Il divertimento inizia
proprio al punto (2), quando dobbiamo spiegare a
Linux come intendiamo utilizzare il nuovo
pulsante: nel campo""Nome""va inserito un
identificativo per quel tasto, per esempio""Log di
sistema". Nel nostro esempio, infatti, vogliamo
creare un tasto che visualizzi in una finestra di
terminale il contenuto di /var/log/messages a
mano a mano che il sistema lo modifica, usando il
comando tail. Notate che bisognerà impostare
adeguatamente i permessi del file /var/log/
messages, in modo che tutti gli utenti possano
leggerlo (chmod a+r /var/log/messages da root).
Procediamo e inseriamo nel campo""Comando""la
voce ""tail -f /var/log/messages", che poi è il
comando che vogliamo eseguire, e come
""commento" scriviamo la cosa più ovvia, ovvero
"visualizzatore di log". A questo punto ci conviene
selezionare un'icona (3) e quando ne abbiamo
trovata una che ci piace, cliccarci sopra un paio di
volte (4), oppure una volta sola e poi premere OK
(5). Infine, una volta tornati alla finestra""Crea
applet di avvio"", selezionare il checkbox""esegui
in un terminale"" (6), e premere OK (7) per
confermare.

Basterà premere il tasto appena aggiunto (1) per


osservarne il risultato (2). A questo punto,
possiamo usare le nozioni che abbiamo imparato
anche per correggere un piccolo baco"(ma
sarebbe il caso di chiamarlo svista", della nostra
distribuzione. Cliccando sul pulsante del pannello
in basso ""Netscape Navigator", apparentemente
non succede nulla. Il motivo è presto spiegato:
Netscape non è incluso nella distribuzione, in
quanto degnamente sostituito da Mozilla M17. Per
far sì che il medesimo tasto svolga la funzione per
cui sarebbe normalmente preposto, possiamo fare
in questo modo:

Cliccate col tasto destro del mouse sul pulsante


"incriminato" (1), selezionare "proprietà" (2), e poi
cambiare le voci dei campi nome, comando, ecc

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/box_corsolinux64.html (2 di 3)03/04/2006 12.14.21


Consultazione della rivista Inter.Net sul world wide web.

come mostrato in figura. Né più, né meno.

Riferimenti e links:
● E ora l'interfaccia grafica (Articolo)
● Modificare i pannelli (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/64/LinuxEspresso/box_corsolinux64.html (3 di 3)03/04/2006 12.14.21


Consultazione della rivista Inter.Net sul world wide web.

Una storia come tante

Nel paragrafo relativo alla directory /dev abbiamo


illustrato un trucchetto per copiare le intere
partizioni. Ma questo può funzionare in un solo
caso: quando le dimensioni sono identiche, caso
che nella realtà non avviene assolutamente mai.
O, comunque, che nella vita di tutti i giorni ha ben
poca utilità: che ce ne facciamo di due partizioni di
dimensioni identiche che contengono gli stessi
dati? In ogni caso, la soluzione adottata per
copiare la partizione BeOS è stata drastica ma
efficace e, in realtà, sfruttava un passaggio in più
che illustriamo qui di seguito.
La partizione BeOS (che originariamente era
grande 500MB esatti) è stata dapprima copiata in
un cosiddetto file immagine

dd if=/dev/hda2 of=beospart.img

e poi il medesimo è stato registrato su cdr

cdrecord dev=0,1,0 beospart.img

A questo punto, il file immagine è stato


tranquillamente riversato sul computer
destinazione. Per comodità, chiameremo /dev/
cdrom il dispositivo eide a cui era collegato il
lettore cdrom, mentre /dev/hdb3 sarà la nostra
partizione di destinazione, ovviamente grossa
anche lei 500MB esatti:

dd if=/dev/cdrom of=/dev/hdb3

Se avessimo collegato i due dischi fissi allo stesso


computer, tuttavia, nulla ci avrebbe impedito di
riesumare la partizione direttamente dal file
beospart.img oppure dal volume originare vero e
proprio (/dev/hda2).

/LIB, La biblioteca di sistema

Tutte le più importanti librerie di sistema si trovano


in /lib. Pure i moduli del kernel, che si trovano in /
lib/modules/<versione> (nel nostro caso, 2.2.17).
Le librerie dei programmi, al contrario, si trovano
in una delle infinite sottodirectory di /usr/local.

/VAR, Appunti importantissimi

http://www.interpuntonet.it/RIVISTA/66/filesystem/boxcorsolin4.html (1 di 2)03/04/2006 12.15.35


Consultazione della rivista Inter.Net sul world wide web.

Quando il sistema deve attivare dei processi


particolari, come per esempio inviare della posta
elettronica tramite sendmail, di solito fa riferimento
a questa directory, che contiene solitamente dei
dati temporanei in fase di elaborazione . Per
esempio, l
a cartella /var/spool contiene nientemeno che lo
spooler di stampa, i messaggi di posta elettronica
in uscita, lo stato di samba e l indice delle
operazioni automatizzate (crontab). /var/run
invece contiene i pid dei servizi di sistema, e via
discorrendo.
Se il vostro Linux è stato configurato come SMTP
server, può tornarvi utile ripulire di tanto in tanto la
coda dei messaggi impossibili da inviare (basta
dare il comando mailq per vedere se ce ne sono),
e per fare ciò basta entrare nella directory /var/s
pool/mqueue da root e dare il comando rm -f *.
Occhio però a quello che si sta facendo, perché
un comando del genere rende irrecuperabili i dati
cancellati.

Riferimenti e links:
● Spostiamoci tra le directory (Articolo)
● Una storia come tante (riquadro)

Torna indietro

http://www.interpuntonet.it/RIVISTA/66/filesystem/boxcorsolin4.html (2 di 2)03/04/2006 12.15.35

Potrebbero piacerti anche