

Linux Facile([footnote] 2000, 2001 Daniele Medri - "Linux Facile" versione
5.0 - Permission is granted to copy, distribute and/or modify
this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the
Free Software Foundation; with no Invariant Sections, with
one Front-Cover Texts: "Linux Facile
- di Daniele Medri", and with no Back-Cover
Texts. A copy of the license is included in the section
entitled "GNU Free Documentation License".
(pag. [gnuFDL])) 

di Daniele Medri

A Monica, i miei genitori, i miei amici

Introduzione

Il successo del software libero viene decretato ogni anno
che passa e la sua pi famosa interpretazione  GNU/Linux,
un sistema operativo molto performante, scalabile e sicuro,
diffuso in tutto il mondo grazie alle proprie caratteristiche
di qualit. Software vivo, liberamente usufruibile e distribuibile
senza nessuna limitazione, un movimento che cresce e si
diffonde tra le persone e il mondo professionale con una
grande rapidit grazie alla rete Internet, la quale  stata
ambiente incubatorio per lo stesso.

L'idea di questo manuale  sorta durante un corso di laboratorio
universitario sulle tecnologie telematiche dove la contrapposizione
tra le persone interessate e la dispersione delle informazioni
era notevole e non certo positiva. Da questa situazione
rilevata ho cercato di costruire un punto di partenza, un
manuale entry-level sul sistema operativo e tutto il movimento
storico e filosofico che lo ha preceduto. Questa  stata
la direzione personalmente seguita nella stesura di questo
testo, direzione sempre anteposta ad ogni scelta per agevolare
utenti inesperti come quelli esperti, per insegnare novit
o divenire semplice base informativa, appunti di quotidiana
amministrazione di sistema.

 Organizzazione degli argomenti

Il concetto di percorso formativo ha caratterizzato ogni
versione del manuale e ha trovato la sua massima espressione
applicativa in quella attuale. Gli argomenti presentati
sono stati divisi per parti:

* La prima parte analizza i fattori ambientali che hanno
  spinto la crescita di GNU/Linux. L'obiettivo era quello
  di offrire una chiave di lettura integrativa alle solite
  nozioni tecniche. 

* La seconda parte introduce GNU/Linux sul piano storico
  e su quello tecnico illustrando le componenti del sistema
  analizzando applicazioni, soluzioni per l'installazione
  e la gestione. 

* La terza parte analizza gli ambienti grafici. Un'ampia
  introduzione sul Server XFree86 e la descrizione degli
  ambienti desktop largamente diffusi e le applicazioni
  utili per essere produttivi e collegarsi alla rete.

* La quarta parte  stata pensata per il networking, ovvero
  l'utilizzo di un sistema GNU/Linux per soluzioni di rete
  o semplicemente per navigare su Internet tramite un modem.

 Convenzioni

Esistono numerose distribuzioni GNU/Linux e in un panorama
cos ampio era necessario compiere delle scelte. Nel mio
quotidiano operare utilizzo con gioia Debian GNU/Linux ma
sono conscio del fatto che a livello commerciale sono maggiormente
diffuse distribuzioni come SuSE, Red Hat o Mandrake. Sulla
base di queste considerazioni ho impostato il manuale basandomi
su Debian senza pur tralasciare le altre alternative esistenti.

Il prompt dei comandi

Per la rappresentazione del prompt dei comandi si  genericamente
scelto di utilizzare il simbolo:


#


per comandi da digitare come utente "root",
mentre il semplice simbolo del dollaro per i comandi utilizzabili
come utenti di sistema:


$


Per la rappresentazione dei tasti si  scelto di bordarli
come segue:


 , , 


 Note dell'autore 

Questo manuale  stato sviluppato utilizzando LyX / LaTeX
ed  liberamente distribuibile ed utilizzabile secondo le
norme della licenza GNU Free Documentation License che tutela
i diritti dell'opera e dell'autore. In caso di eventuali
trasgressioni della licenza saranno presi i dovuti e necessari
provvedimenti legali. 


Ogni suggerimento o consiglio per migliorare l'opera in questione
 ben accetto e pu essere inviato per posta elettronica
all'indirizzo: 


Daniele Medri <madrid@linux.it>

homepage: http://www.linux.it/~madrid/


Sito web ufficiale del manuale: 


http://www.linuxfacile.org/


Esistono siti mirror tra i quali segnalo:

* http://linux.interpuntonet.it/mirror/linuxfacile/

* http://ada2.unipv.it/linuxfacile/

* http://www.ziobudda.net/mirror/LinuxFacile/

* http://mirror.sgala.com/LinuxFacile/

* http://www.valtellinux.it/ 

* http://www.linuxzine.it/linuxfacile/

* http://parma.linux.it/linuxfacile/

La lista aggiornata dei mirror  presente sul sito web del
manuale.

 Versioni precedenti

* 1.0 - 1 gennaio 2000.

* 1.2 - 27 marzo 2000. 

  * Stampa a cura di Sgi Italia e autorizzata dall'autore.

* 2.0 - 30 luglio 2000.

* 2.1 - 5 agosto 2000.

  * Stampa a cura di Lumina S.A.S Milano (13.500 copie). 

* 3.0 - 12 gennaio 2001.

  * Stampa a cura dell'editore Systems e allegata alla rivista
    Inter.Net - Marzo 2001 (66.000 copie)

* 4.0 - 9 aprile 2001
  

Chiunque desideri stampare il manuale su larga scala (e non
per il semplice uso personale)  tenuto a comunicare all'autore
la propria intenzione sia come forma di gentilezza che per
tutela personale a livello economico onde evitare l'uscita
in coincidenza di altre edizioni.

 Ringraziamenti 

Una doverosa menzione di tutte le persone che ogni giorno
contribuiscono a diffondere GNU/Linux nel mondo e in Italia
particolarmente, persone che volontariamente spendono il
proprio tempo libero per un impegno che  anche loro passione.
Ringrazio particolarmente: Andrea Arcangeli, Luca andrew
Andreucci, Maurizio napo Napolitano, Michel ziobudda Morelli,
Gianluca Rubini, Dario Burnelli, Alessandro Alf Forghieri,
Giorgio Zarrelli, Maurizio Tannoiser Lemmo.

Hanno contribuito: Camillo Bongiovanni, Roberto A. Foglietta,
Matteo MatOfPing Nastasi, Marco Cova, Federico Dalpane,
Gilberto velenux Ficara, Gaetano Santoro. Un ringraziamento
particolare a tutti i lettori che con le loro domande e
i loro suggerimenti mi hanno aiutato a far crescere questo
manuale.

 

Storia



Hackers<Capitolo 1>

L'esponenziale crescita della rete ha cambiato l'identit
della societ evoluta o per lo meno quella "informatizzata".
Un incredibile mole di dati circola sulle autostrade dell'informazione,
dati privati, transazioni economiche e altro ancora. La
vita delle persone si impossessa del mezzo e porta con s
ogni umana caratteristica e fobia, reale e non. Se nel mito
popolare esisteva l'uomo nero oggi esiste un nuovo termine
per descrivere qualcuno che attenta ai diritti altrui: hacker.

Avevo gi opinioni in merito quando Filippo Bianchi, un giornalista
di Repubblica, mi intervist chiedendomi chiarimenti sulla
terminologia a lui poco chiara e molto blasonata dai media
che ruotava attorno al termine e in tale ottica riporto
le mie considerazioni a titolo informativo.

1.1 Jargon: la nascita di un gergo

L'inizio della cultura hacker si pu datare all'anno 1961,
lo stesso anno in cui il MIT acquist il primo calcolatore
PDP-1. In questo contesto universitario il termine fu subito
adottato dagli studenti del Tech Model Railroad Club, un
gruppo di persone che si divertiva a costruire automatismi
per gestire il traffico ferroviario per modellini di treni.
Lo stesso club divenne in seguito il principale nucleo del
laboratorio di Intelligenza Artificiale del MIT, gruppo
di sviluppo delle principali tecnologie moderne informatiche.

Con lo sviluppo della rete di comunicazione ARPAnet, il gergo
hacker (jargon) si diffuse nelle principali Universit collegate.
La terminologia utilizzata fu raccolta in un file da Raphael
Finkel presso l'universit di Stanford nel 1975. Un nuovo
polo di sviluppo della cultura hacker fu il centro di ricerca
di Palo Alto dove dalla fine degli anni '70 alla met degli
anni '80 vennero sviluppate un numero altissimo di nuove
tecnologie come le interfacce visuali ad icone e finestre,
le stampanti laser e tecnologie per le reti locali di computer.
Il legame tra hacker e nuove scoperte tecnologiche  quindi
strettissimo. Caratteristica comune per quelle persone che
definiamo hacker  il raggiungimento di un obiettivo nel
minor tempo possibile, una rivisitazione in chiave moderna
di "il principio giustifica il mezzo"
di Machiavelli.

Come viene riportato nel Jargon File:

":hacker: n. [originally, someone who makes furniture with
an axe] 1. A person who enjoys exploring the details of
programmable systems and how to stretch their capabilities,
as opposed to most users, who prefer to learn only the minimum
necessary. 2. One who programs enthusiastically (even obsessively)
or who enjoys programming rather than just theorizing about
programming. 3. A person capable of appreciating {hack value}.
4. A person who is good at programming quickly. 5. An expert
at a particular program, or one who frequently does work
using it or on it; as in `a Unix hacker'. (Definitions 1
through 5 are correlated, and people who fit them congregate.)
6. An expert or enthusiast of any kind. One might be an
astronomy hacker, for example. 7. One who enjoys the intellectual
challenge of creatively overcoming or circumventing limitations.
8. [deprecated] A malicious meddler who tries to discover
sensitive information by poking around. Hence `password
hacker', `network hacker'. The correct term for this sense
is {cracker}." 

Una persona che si diverte esplorando i dettagli nella programmazione
di sistemi e cerca la modalit per ottenere il massimo delle
prestazioni. Qualcuno che programma con entusiasmo (spesso
ossessivamente) o si diverte programmando ancor prima che
teorizzare sulla programmazione. Una persona capace di apprezzare.
Una persona capace di programmare rapidamente. Una persona
esperta nell'utilizzo di un dato programma. Una persona
esperta o entusiasta per ogni ambito, anche l'astronomia.

Esiste anche una connotazione negativa del termine legata
a fattori di criminalit informatica e viene espressamente
indicata con il termine cracker. I media spesso confondono
le due definizioni e utilizzano hacker con carattere negativo.
Anche la new economy gioca con il fattore terrore e non
 un caso che siano proprio i produttori di soluzioni di
sicurezza a migliorare le proprie quotazioni in borsa durante
attacchi informatici, un effetto che spesso autoalimenta
la propria causa scaturante.

1.2 Cracker e Phreaker

I termine  stato coniato all'incirca nel 1985 da hackers
che cercavano di difendere e distaccarsi dalle connotazioni
negative che i media usavano a dismisura. Fondamentalmente
entrambi i termini delineano persone che hanno compiuto
attivit di cracking e le tecniche spesso sono le medesime
ma spesso la differenza  nel fine. Mentre un hacker scardina
delle misure di sicurezza per ottenere uno scopo benefico
e raggirare dei limiti tecnici, un cracker si appropria
della conoscenza per proprio esclusivo interesse. Ulteriore
neologismo che si integra con i termini citati  phreaker,
colui che compie cracking sulla rete telefonica per effettuare
ad esempio chiamate a lunga distanza senza spendere nulla.
Fino alla prima met degli anni '80 la tecnologia che controllava
le reti telefoniche era piuttosto antiquata e facilmente
scardinabile per propri scopi. Il cambiamento avvenne con
l'aggiornamento tecnologico successivo che tagli radicalmente
molte delle vecchie tecniche di phreaking. Anche l'arresto
di gruppi di persone che compievano questa tipologia di
azioni divenne un freno ed  diventato difficile sentir
parlare di blue box([footnote] Le blue box erano appositi strumenti che venivano
utilizzati dai phreaker per simulare le chiamate telefoniche. )  al giorno d'oggi.

1.3 Linux e l'arte di fare "hacking"

Linus Torvalds, il creatore di Linux, ha sempre definito
il proprio sistema come "un sistema
operativo per hackers scritto da un hacker".
La chiave di lettura  piuttosto semplice da decifrare:
lo sviluppo di soluzioni software prevede la necessit di
automatizzare procedure umane rendendole pi semplici, utili
e usabili. Il networking ha trovato una rapida convergenza
con il software negli ultimi anni aggiungendo potenzialit
come rischi dal punto di vista della sicurezza. Compiere
azioni di hacking verso questi software vuol dire testarne
le capacit di sicurezza e stabilit onde evitare problemi
o disservizi degli stessi. Da punto di vista pi generale
anche il supporto informativo degli utenti finali offrono
un corposo feedback agli sviluppatori ove sia possibile
farlo. Nel mondo del software libero  molto facile contattare
i singoli sviluppatori del software creando un rapporto
di cooperazione rapido ed efficace, cosa molto difficile
e spesso eccessivamente filtrata nel mondo del software
proprietario. 

Linux e il software libero in generale non sarebbero quelli
che sono se non avessero avuto l'apporto e la creativit
degli hackers della Free Software Foundation di Stallman
e dei cosidetti battitori liberi, studenti e sviluppatori
che portano la propria esperienza e il proprio tempo verso
il free software circoscrivendo con grande rapidit il concetto
di qualit totale o evoluzione nell'accezzione scientifica.

1.4 L'importanza della sicurezza informatica

Nel testo sono numerosi i richiami sulla sicurezza personale
e la sicurezza lato server come strumento di gestione delle
informazioni e delle comunicazioni condiviso. Di seguito
viene accennato il comportamento giuridico italiano sul
tema introdotto.

1.4.1 Limiti minimi di sicurezza per le aziende

Si  fatto cenno al termine cracker come "pirati
informatici" e di conseguenza mi  sembrato ovvio
riportare anche come la legge italiana si muove in merito.
Dalla legge 31 dicembre 1996, n. 675 viene tratto quanto
segue:


Art. 15 - Sicurezza dei dati

1. I dati personali oggetto di trattamento devono essere custoditi
  e controllati, anche in relazione alle conoscenze acquisite
  in base al progresso tecnico, alla natura dei dati e alle
  specifiche caratteristiche del trattamento, in modo da
  ridurre al minimo, mediante l'adozione di idonee e preventive
  misure di sicurezza, i rischi di distruzione o perdita,
  anche accidentale, dei dati stessi, di accesso non autorizzato
  o di trattamento non consentito o non conforme alle finalit
  della raccolta.

2. Le misure minime di sicurezza da adottare in via preventiva
  sono individuate con regolamento emanato con decreto del
  Presidente della Repubblica, ai sensi dell'articolo 17,
  comma 1, lettera a), della legge 23 agosto 1988, n. 400,
  entro centottanta giorni dalla data di entrata in vigore
  della presente legge, su proposta del Ministro di grazia
  e giustizia, sentiti l'Autorit per l'informatica nella
  pubblica amministrazione e il Garante.

3. Le misure di sicurezza di cui al comma 2 sono adeguate,
  entro due anni dalla data di entrata in vigore della presente
  legge e successivamente con cadenza almeno biennale, con
  successivi regolamenti emanati con le modalit di cui
  al medesimo comma 2, in relazione all'evoluzione tecnica
  del settore e all'esperienza maturata.

4. Le misure di sicurezza relative ai dati trattati dagli
  organismi di cui all'articolo 4, comma 1, lettera b),
  sono stabilite con decreto del Presidente del Consiglio
  dei ministri con l'osservanza delle norme che regolano
  la materia.

Art. 36 - Omessa adozione di misure necessarie alla sicurezza
  dei dati

1. Chiunque, essendovi tenuto, omette di adottare le misure
  necessarie a garantire la sicurezza dei dati personali,
  in violazione delle disposizioni dei regolamenti di cui
  ai commi 2 e 3 dell'articolo 15,  punito con la reclusione
  sino ad un anno. Se dal fatto deriva nocumento, la pena
   della reclusione da due mesi a due anni.

2. Se il fatto di cui al comma 1  commesso per colpa si applica
  la reclusione fino a un anno.
  

Il complesso di accorgimenti e cautele di tipo organizzativo
e tecnologico che le imprese devono adottare al fine di
evitare la dispersione, la perdita o l'uso illecito dei
dati contenuti nei loro data base, rappresenta uno degli
adempimenti pi importanti previsti dalla legge n.675 del
1996, la cui individuazione  stata affidata al regolamento
n.318 del luglio 1999. Il regolamento stabilisce che tali
misure debbano essere adottate entro il 29 marzo 2000 ed
 viva, pertanto, l'attenzione del mondo delle imprese ai
problemi di adeguamento. L'incontro tecnico ha avuto, quindi,
lo scopo di dissipare, attraverso il confronto e il dialogo
con il Garante, dubbi interpretativi e difficolt di applicazione
delle norme. 

La legge sulla privacy, oltre a garantire la salvaguardia
dei dati personali di ogni persona, offre, dal punto di
vista aziendale, una serie di vincoli e opportunit volta
a definire una metodologia aziendale capace non solo di
promuovere la cultura della protezione dei dati, ma anche
di salvaguardare il patrimonio informativo aziendale. Va
aggiunto che il regolamento non vuole descrivere a livello
tecnico le soluzioni pi idonee ma punire con sanzioni chi
non adempie neppure le misure minime di sicurezza fissate
dalla legge sulla privacy. Nello sviluppo di una cultura
della protezione dei dati un ruolo fondamentale avr la
formazione del personale. La consapevolezza delle misure
per la sicurezza e la protezione dei dati non devono essere
viste come un vincolo ma come un'occasione di crescita,
che consente una maggiore trasparenza dei flussi di informazioni,
la revisione delle attivit svolte e delle procedure di
gestione e il riordino degli archivi([footnote] Per maggiori dettagli e sviluppi delle argomentazioni
illustrate in questa sezione si consiglia di visitare il
sito http://www.interlex.it.) .

1.5 Riflessioni

Questo primo capitolo ha l'intenzione di attivare riflessioni.
Non si desidera tutelare il crimine informatico, che come
tale deve essere punito, ma fare luce su aspetti che spesso
vengono trascurati o trattati in maniera errata e poco documentata
da molti giornalisti, spesso per ignoranza o favori a chi
detiene interessi avversi alla filosofia del software libero.
Essere "hacker" non vuol dire essere
"criminali", ma rapportarsi in una determinata
maniera difronte alla tecnologia, un particolare approccio
che spinge a testare una soluzione, materiale o immateriale
come il software, per scoprirne i limiti e apportare propria
genialit per migliorarla e renderla qualitativamente "migliore".
Niente di diverso dalla naturale spinta evolutiva. L'hacking
deve essere un fattore culturale presente nella vita reale
di una comunit informatizzata dove l'individuo  rappresentato
sempre pi da una collezione di informazioni e la tutela
di queste ultime decreta la privacy dello stesso.

Internet e Telematica <Capitolo 2>

Internet ha decretato la nascita di una nuova civilt fondata
sulla comunicazione telematica. Sono cadute le barriere
legate alla distanza metrica ed  possibile, grazie alla
rete, comunicare in tempo reale con una persona nella parte
opposta del globo. Internet ha reso il mondo a misura d'uomo.

2.1 Le origini

Alla fine degli anni '60 il Dipartimento della Difesa degli
Stati Uniti svilupp soluzioni per affrontare eventuali
attacchi bellici. Erano gli anni della guerra fredda e questa
condizione spingeva la ricerca verso sistemi di sicurezza
e comunicazione L'iniziale progetto venne affidato dal Dipartimento
della Difesa ad ARPA([footnote] Advanced Research Project Agency. ) . 

Tra il 1962 e il 1964 Paul Baran, un ingegnere alle dipendenze
della RAND Corporation([footnote] La RAND Corporation era un istituto civile di
ricerche strategiche con sede a Santa Monica (California),
descritto nel 1951 su Fortune come "l'azienda
dell'aeronautica militare per l'acquisto di cervelloni",
in cui brillanti accademici meditavano sulla guerra nucleare
e sulla teoria dei giochi.)  e figura in stretto rapporto con ARPA, elabor 11 rapporti
dedicati al problema di come costruire una rete di telecomunicazioni
in grado di "sopravvivere"
in caso di guerra nucleare e di attacco al territorio americano
da parte di forze nemiche ed  da questi rapporti che 
sorto per la prima volta il termine di "rete
distribuita", un concetto basilare nel successivo
sviluppo delle reti telematiche e di Internet. 

Una rete distribuita  caratterizzata da una topologia a
ragnatela e non esiste una gerarchia preordinata di nodi.
Venne creata una prima rete di 4 nodi e la struttura era
basata sul precedente concetto e sulla pariteticit dei
nodi (peer to peer). 

La trasmissione dei dati all'epoca era particolarmente vincolata
alle infrastrutture hardware e i sistemi operativi utilizzati;
ARPAnet era cos vincolata a particolari infrastrutture
di calcolo e comunicative. I limiti furono presto superati
grazie allo sviluppo di un protocollo ideato per la trasmissione
dei dati, il tcp/ip (Transmission Control Protocol/Internet
Protocol), lo stesso protocollo che tuttora viene utilizzato
per Internet. L'Internet Protocol Suite, completata negli
anni '70, era in sintesi un mezzo flessibile per la comunicazione
tra "mezzi di trasmissione"
eterogenei. Dopo questa particolare innovazione ARPAnet
divenne predominio dei ricercatori universitari che lavoravano
per il Pentagono, la comunit scientifica che si accorse
per prima della grande utilit nell'utilizzo remoto di supercalcolatori
per scopi di ricerca e comunicazione tra le varie universit
americane sparse sul territorio nazionale. La mole di informazione
crebbe a tal punto che nel 1984 ARPAnet venne scissa in
due reti ben distinte: Milnet per scopi militari ed Arpanet
per scopi scientifici. Il Dipartimento della Difesa Americana
smise di finanziare il traffico interuniversitario ed il
compito di gestione venne assunto dal National Science Foundation,
che diede vita a NSFnet. Nel 1985 la rete scientifica cambi
nome in Internet e le stime mostravano 326 computer collegati
dei quali 16 fuori dagli Stati Uniti. Nel 1990 erano collegati
in rete circa 1000 calcolatori e tre anni dopo, nel 1993,
la cifra divenne 20 volte superiore. Tutto questo fu possibile
grazie alla liberalizzazione di Internet in ambiti accademici
e scientifici e alla diffusione del sistema operativo Unix
nella versione Berkeley, strumento storicamente in relazione
con la rete stessa sin dalle sue prime fasi di sviluppo.

2.1.1 Autostrade dell' Informazione 

All'inizio degli anni '90, come abbiamo rilevato precedentemente,
il numero di calcolatori collegati ad Internet ebbe una
crescita esponenziale tanto da interessare molti enti commerciali.
I vincoli iniziali vietavano l'utilizzo della rete per scopi
differenti da quelli scientifici e molte compagnie interessate
furono spinte ad entrare in stretta correlazione con le
universit nell'ambito della ricerca per superare questi
limiti. Molte compagnie commerciali crearono loro stesse
delle dorsali di comunicazione da integrare ad Internet
per i propri scopi e generarono un processo evolutivo senza
limitazioni verso la copertura capillare del pianeta. Dopo
una situazione simile le barriere vennero abbattute e si
diede libero campo alle iniziative private e all'uso della
rete per scopi variegati. Le autostrade dell'informazione
(Information Highways), cos come venne definita Internet,
erano un obiettivo fondamentale nella campagna politica
di Al Gore, un sogno che divenne realt con il suo incarico
a vice-presidente degli Stati Uniti durante il governo Clinton.
Gli Stati Uniti erano consci del loro vantaggio tecnologico
e dell'opportunit che detenevano nello sviluppo di queste
strutture globali. La posta in gioco era composta da ingenti
capitali economici ma l'interesse di modellare a loro immagine
e somiglianza l'intera cultura moderna era l'elemento maggiormente
perseguibile. Vennero fatte diverse scelte strategiche:
finanziamenti statali per lo sviluppo di strutture scolastiche
/ sanitarie e la liberalizzazione delle comunicazioni, i
primi erano volti allo sviluppo di servizi basilari e la
seconda scelta diretta a fermare eventuali comportamenti
di oligopolio.

2.1.2 Il Vecchio Continente 

Pur con un approccio di base differente la Comunit Economica
Europea avvi il suo cammino in modo differente con la speranza
di seguire un comportamento equilibrato nelle sue scelte
decisionali. Esisteva un progetto del 1985 denominato Cosine
(Cooperation for Open Systems Interconnection in Europe)
per la costituzione di una rete europea integrando realt
nazionali gi esistenti. Il processo evolutivo di globalizzazione
e sviluppo delle comunicazioni venne riassunto in un rapporto
nel 1992, un documento importante che ha dettato le linee
di comportamento per la liberalizzazione delle comunicazioni
a partire dal gennaio 1998. Nell'ambito Italiano le direttive
comunitarie sono state rispettate e si  visto il passaggio
in fasi differenti da un unico ente di gestione delle telecomunicazioni
ad una situazione aperta gestita da un numero di compagnie
private e supervisionata dall'autorit governativa.

2.1.3 La situazione italiana

La storia di Internet nei periodi fino ad ora considerati
 stata molto periferica e il mondo telematico si  mosso
al di fuori dei protocolli TCP/IP e della rete delle reti.
Questa situazione era comune sia nel contesto accademico
che nella telematica amatoriale e commerciale. Nonostante
questo isolamento tecnologico vi era un panorama variegato
diviso tra Videotel, Fidonet, la rete dell'Istituto Nazionale
di Fisica Nucleare (INFNet) e successivamente la rete accademica
del GARR, la rete I2U degli utenti UNIX (l'origine di Iunet)
e molte BBS cittadine. 

L'inizio della telematica nazionale pu determinarsi con
l'anno 1986, anno in cui la SIP([footnote] SIP, servizio telefonico nazionale poi diventato
Telecom Italia.)  inizio a commercializzare Videotel, un servizio telematico
a struttura centralizzata al quale si accedeva tramite le
normali reti telefoniche. A questo primo approccio sussegu
la rete Fidonet, una struttura decentralizzata vicina al
modello di Baran e fondamentalmente basato su un sistema
di messaggistica. Fidonet era un'aggregazione di BBS([footnote] Bullettin Board System, sistemi telematici centralizzati
nei quali uno o pi macchine server fungono da centrali
per lo smistamento di comunicazioni tra gli utenti. Le BBS
sono genericamente sistemi telematici nei quali un gruppo
di utenti pu accedere a un ristretto insieme di file.)  con supporto per la tecnologia FTN, sistemi facilmente implementabili
su semplici e comuni personal computer che tramite chiamate
telefoniche notturne e automatizzate permettevano lo scambio
dei messaggi sui nodi di riferimento. La relativa facilit
con la quale era possibile implementare un nodo di questa
rete si diffuse rapidamente alimentando la primordiale cultura
underground nazionale. Al di fuori di Fidonet furono di
particolare rilievo le esperienze di BBS come Agor, legata
al Partito Radicale, e MCLink, servizio complementare alla
rivista MCmicrocomputer, entrambe localizzate a Roma. INFNet
(Istituto Nazionale di Fisica Nucleare) fu la prima istituzione
scientifica italiana a disporre di strutture telematiche
gi dal 1978; nel 1987 la rete era cresciuta e contava 118
nodi collegati e fu anche il primo centro di ricerca a disporre
di una connessione permanente a Internet. Nel 1988 la situazione
accademica italiana venne riconsiderata totalmente e venne
costituito il GARR (Gruppo Armonizzazione Reti per la Ricerca),
organizzazione coordinata dal Ministero della Ricerca scientifica
alla quale era assegnato il compito di amministrare e sviluppare
l'interconnessione tra le reti delle diverse universit
italiane. Gli iniziali poli della dorsale, o backbone, collegati
ad alta velocit furono Milano, Bologna, Pisa, Roma e Bari
ma presto la rete fu ampliata ad altre 50 centri universitari.
Il primo Internet provider italiano fu Iunet nato grazie
all'associazione I2U degli utenti Unix Italiani, raccordo
italiano con la rete Eunet che legava esperti di Unix, matematici
e informatici. Iunet  stata la prima rete Internet italiana
non legata al GARR nata inizialmente senza finalit commerciali.
Nel 1994 nacque a Milano Iunet SPA acquisita da Olivetti
Telemedia e successivamente da Infostrada.

A conclusione di questa anteprima nazionale sul mondo telematico
risalta che la propria popolazione era molto variegata comprendendo
semplici smanettoni domestici o ricercatori universitari,
soluzioni semplici come Videotel o reti ad alta velocit
con servizi molto specializzati anche se i tassi di diffusione
di questi servizi era tra i pi bassi in Europa. 

2.2 Le comunit virtuali 

La telematica ha cambiato la societ modificando i comportamenti
di quest'ultima a un livello superiore rispetto a qualsiasi
altra tecnologia. Come si  visto in questo capitolo, Internet
 un progetto che ha radici molto lontane e in questo arco
di tempo la rete si  evoluta per rispondere alle esigenze
delle persone e delle aziende che investono in questa infrastruttura
con un elemento in comune: la comunicazione.

Anche il software libero e Linux, in particolar modo, ha
creato una propria comunit di utenti e successivamente
tratteremo questo argomento nel dettaglio ([LUG capitolo]).

 Netiquette 

Come ogni comunit sociale che si forma, anche le comunit
virtuali hanno una propria regolamentazione dei comportamenti.
La Netiquette, come viene chiamata,  una forma di "educazione"
che porta a rispettare e proteggere le interazioni tra le
persone in rete. A titolo di esempio, possiamo citare come
un caso estraneo alla Netiquette l'uso improprio di uno
strumento come la posta elettronica per fare pubblicit
commerciale. Questo fenomeno chiamato "spam"
 stato largamente combattuto negli U.S.A. e l'Europa inizia
a risentirne il contraccolpo in seguito alla crescita dei
servizi di vendita online. Un altro caso di Netiquette pu
essere l'interazione che avviene tra un gruppo di persone
in chat (IRC), dove comportamenti scorretti di alcuni soggetti
possono limitare o interrompere i rapporti con le altre
persone. 

Per chi desiderasse approfondire gli argomenti trattati,
il documento di riferimento e' RFC1855 "Netiquette Guidelines",
ed anche RFC2635 "A Set of Guidelines for Mass Unsolicited
Mailings and Postings" disponibili sulla rete presso: 


ftp://ftp.nic.it/rfc/rfc1855.txt 

ftp://ftp.nic.it/rfc/rfc2635.txt

2.3 Servizi e strumenti di comunicazione

La nascita e lo sviluppo della rete ha creato rapporti di
comunicazione e servizi relativi. Diversi sono gli strumenti
sviluppati per lo svolgimento delle attivit quotidiane
e di seguito vengono presentati alcuni tra i pi importanti.

2.3.1 Posta elettronica 

La posta elettronica (e-mail)  lo strumento pi diffuso
ed importante della rete che permette alle persone di comunicare
tra loro tramite semplici messaggi testuali o messaggi ricchi
di elementi multimediali come  possibile al giorno d'oggi
con gli attuali strumenti software esistenti. Le persone
abituate a lavorare con sistemi operativi di tipo Unix sono
vicine alla messaggeria digitale da sempre presente in sistemi
multiutenti. Non  un caso che la forma degli indirizzi
e-mail sia la stessa che rappresenta un utente collegato
@ (at, presso) un sistema. Anche se sono andate perse tutte
le caratteristiche tattili delle vecchie lettere cartacee,
utilizzare la posta elettronica vuol dire utilizzare un
mezzo veloce con costi ridotti e con la possibilit di trasferire
file come allegati.

2.3.2 Newsgroup 

I newsgroup sono gruppi di discussione divisi per argomento
dove  possibile spedire un proprio messaggio in una bacheca
virtuale pubblica dove altre persone potranno leggerlo ed
eventualmente rispondere. E' una comunicazione uno-a-molti
che tra le sue origine dal lontano 1979 quando alcuni studenti
informatici delle universit della Duke University e della
University of North Carolina ne implementarono la struttura
per consentire lo scambio di messaggi tra le due comunit
informatiche al margine di ARPANET. La caratteristica che
rivoluzion a suo tempo questo servizio fu la possibilit
di organizzare molteplici discussioni pubbliche su argomenti
specifici non localizzate o controllate in siti centrali
ma diffuse e sincronizzate tra i vari sistemi che supportavano
il servizio.

2.3.3 IRC (Internet Relay Chat) 

Probabilmente  il servizio telematico che affascina maggiormente
le persone perch permette di comunicare in tempo reale
con altre persone sia in modo diretto che in forma pubblica
ad un gruppo di persone presenti in determinati canali,
aggregazioni che si possono liberamente creare con estrema
facilit. 

IRC originariamente nacque come protocollo di conferenza
testuale per BBS nell'agosto del 1988 e vide la sua definzione
ufficiale con il documento RFC 1459 del 1993. L'originale
sviluppatore del sistema di comunicazione IRC fu il finlandese
Jarkko Oikarinen ma l'interesse per questa soluzione software
attrasse moltissimi sviluppatori e crebbe rapidamente implementando
numerose caratteristiche e servizi. Il primo server disponibile
su Internet fu tolsun.oulu.fi il quale funziona ancora nel
momento in cui scrivo questa breve parentesi storica.

Al giorno d'oggi esistono numerose famiglie di server IRC
sparsi in tutto il mondo e tra queste la pi diffusa sul
nostro territorio nazionale  IRCNET. 

2.3.4 Il Web e gli ipertesti 

E' il servizio Internet pi recente ma anche quello che ha
avuto maggior sviluppo negli ultimi anni. Utilizzando un
navigatore o browser  possibile visualizzare pagine ipertestuali
di informazione con il supporto di immagini, suoni, animazioni.
Per definire cosa sia un ipertesto prendiamo in considerazione
le seguenti definizioni:


"Testo che non costituisce una singola sequenza e che pu
essere letto in diversi ordini; specialmente testo e grafica
[...] che sono interconnessi in modo che il lettore del
materiale (un sistema informatico) pu interrompere la lettura
del documento in determinati punti per consultare altro
materiale correlato." (Oxford Dictionary)


e anche la seguente:


"Termine coniato da Ted Nelson attorno al 1965 per designare
un insieme di documenti contenenti riferimenti incrociati
i quali permettono al lettore di muoversi facilmente da
un documento all'altro" (Free On Line
Dictionary of Computing)


In sintesi gli ipertesti sono insiemi di documenti consultabili
in modo non sequenziale attraverso un software (es. browser([footnote] Il browser  un programma che permette di accedere
e consultare documenti tramite il protocollo HTTP. Il primo
browser grafico per il Web  stato Mosaic ed  stato sviluppato
da Marc Andressen nel 1993. Successivamente Andressen ha
fondato la societ Netscape.) ) che permette al lettore di muoversi agevolmente da un documento
ad un altro documento correlato in modo discontinuo.

Sebbene il concetto di ipertesto risalga agli anni '60, l'applicazione
comune pi diffusa ha preso piede con la nascita del Web,
la ragnatela, progettata da Tim Berners-Lee al CERN di Ginevra
tra il 1989 e il 1990. Successivamente questo sistema si
diffuse rapidamente passando da interfacce semplici e a
caratteri a soluzioni software molto raffinate con supporto
per elementi grafici e multimediali.

2.4 DNS e i Nomi Dominio 

Il DNS (Domain Name System)  lo strumento utilizzato per
gestire una parte molto importante di Internet: la risoluzione
dei nomi di dominio.

2.4.1 Internet e le internet 

E' doveroso analizzare, in questa sezione, due termini che
spesso possono esser visti come identici. Le parole in questione
sono "Internet" con la lettera iniziale
maiuscola e "internet".
Sebbene possa sembrare una finezza, la distinzione c' ed
 importante. Internet, con la lettera maiuscola, fa riferimento
alla rete che inizi con il progetto ARPAnet e continua
oggigiorno come la confederazione di tutte le reti TCP/IP
direttamente o indirettamente collegate al backbone([footnote] Il backbone  l'infrastruttura portante delle
telecomunicazioni. )  degli Stati Uniti. La parola "internet" con tutte le lettere
minuscole rappresenta tutte le reti, di piccole o grandi
dimensioni, che utilizzano lo stesso protocollo di comunicazione.
Ogni internet (lettere minuscole) non necessariamente dev'essere
connessa a Internet (lettera maiuscola iniziale) e non necessariamente
deve utilizzare tcp/ip come suo protocollo di base. Le internet
aziendali sono un esempio, come quelle di tipo Xerox XNS o
DECnet. Negli ultimi anni sono nati ulteriori nuovi
termini pi che altro spinti da politiche di marketing.
Il termine "intranet" rappresenta
una rete aziendale che utilizza gli strumenti di Internet
in un ambito ristretto. Parallelamente il termine "extranet"
rappresenta la rete che unisce diverse compagnie tra loro,
oppure una compagnia con i propri rivenditori.

2.4.2 Le origini del Domain Name System 

In questo stesso capitolo si  gi accennato ai passaggi
storici da ARPAnet a Internet. Nella primordiale rete esistente
ogni computer collegato era caratterizzato da informazioni
che lo identificavano in maniera univoca in rete. Il file
che conteneva tutte queste informazioni era HOSTS.TXT([footnote] In ambienti Unix rappresentato dal file /etc/hosts. )  ed era mantenuto dal Network Information Center dello SRI([footnote] SRI  l'istituto della ricerca di Stanford a
Menlo Park, California. ) . Gli amministratori dei sistemi connessi in rete ARPAnet
inviavano i propri cambiamenti al SRI-NIC e scaricavano
successivamente il file HOSTS.TXT con le variazioni avvenute.
Era chiaramente un meccanismo macchinoso e lo divenne ancor
pi quando ARPAnet inizi ad utilizzare il protocollo TCP/IP
e la popolazione della rete crebbe enormemente. A questo
punto il metodo basato sul file HOSTS.TXT riscontrava diversi
problemi:

* Collisione dei nomi Era facile avere due nomi di computer
  identici in rete e questo si scontrava con il presupporto
  di univocit preposto.

* Consistenza Mantenere aggiornato il file HOSTS.TXT divenne
  sempre pi difficile visti i continui aggiornamenti che
  venivano richiesti. 

* Traffico e carico Gli strumenti presenti presso SRI-NIC
  divennero inefficienti a causa del traffico di rete incredibile
  e dell'alto carico che dovevano subire i processori dei
  Server presenti. 

Le persone che governavano la rete ARPAnet cercarono una
tecnologia valida per sostituire il metodo fino ad allora
utilizzato, capace di scalare meglio le esigenze, ridurre
il traffico in rete, facile da gestire e garante dell'integrit
dei nomi di dominio esistenti. Nel 1984, Paul Mockapetris
cre la basilare struttura del nuovo sistema e rilasci
in rete i documenti RFC([footnote] RFC o Request for Comments. Sono documenti che
introducono una nuova tecnologia sulla rete Internet. Gli
RFC sono distribuiti gratuitamente in rete e sono destinati
agli sviluppatori che vogliono supportare o migliorare determinate
tecnologie. )  882 e 883 dove veniva descritto il Domain Name System, o
semplicemente DNS. La prima implementazione di DNS era chiamata
JEEVES ma venne rapidamente susseguita da BIND,
un software sviluppato per la versione di Unix BSD 4.3([footnote] UNIX BSD 4.3  stato sviluppato dall'Universit
della California a Berkeley. )  da Kevin Dunlap.

2.4.3 Nomi di Dominio 

Un nome di dominio  una etichetta, un nome che viene associato
ad un indirizzo IP in rete ed  rappresentato da un nome
e un top-level domain, ad esempio:


istruzione.it


Dove "istruzione"  in questo caso un
nome fittizio e ".it"
rappresenta la nazionalit del dominio in questione.

Top-Level Domain 

Lo spazio dei nomi di dominio era diviso originariamente
in 7 Top-Level:

.com Organizzazioni di carattere commerciale, come ad esempio
  Silicon Graphics (sgi.com), Sun Microsystems (sun.com). 

.edu Istituti di educazione americani, come ad esempio
  U.C. Berkeley (berkeley.edu), Purdue University (purdue.edu). 

.gov Organizzazioni governative, come ad esempio la NASA
  (nasa.gov), National Science Foundation (nsf.gov). 

.mil Organizzazioni militari, come ad esempio l'esercito
  degli Stati Uniti, U.S. Army (army.mil) e la Marina, U.S.
  Navy (navy.mil). 

.net Organizzazioni orientate alle tecnologie di networking,
  come ad esempio NSFNET (nsf.net). 

.org Organizzazioni non commerciali, come ad esempio Electronic
  Frontier Foundation (eff.org). 

.int Organizzazioni internazionali, come ad esempio la
  NATO (nato.int) 

Non  un caso che l'orientamento dei top-level domain sia
modellato principalmente attorno alle esigenze degli Stati
Uniti; si ricorda che proprio quest'ultimi finanziarono
il progetto ARPAnet, successivamente diventato Internet.

Lo sviluppo della rete ha mostrato le limitazioni degli originali
top-level domain e a questi sono stati aggiunti i Domini
Nazionali, ovvero una codifica di 2 lettere che identifica
ogni singola nazione nel mondo secondo lo standard ISO 3166<ISO 3166>([footnote] La Gran Bretagna in accordo con lo standard ISO
3166 dovrebbe utilizzare il top-level domain di tipo gb,
ma molte organizzazioni preferiscono utilizzare l'estensione
uk, probabilmente per motivazioni di carattere politico. ) . L'Italia  rappresentata dal top-level domain .it.

 Registrare un Nome di Dominio 

La gestione dei nomi di dominio  gestita in modalit differenti.
Nel caso di nomi di dominio che utilizzano gli originari
7 top-level domain la gestione era riservata fino a poco
tempo fa esclusivamente all'InterNIC, un organo nazionale
statunitense, mentre dopo una politica di deregulation ora
 possibile usufruire di alternativi servizi da parte di
imprese che si occupano appositamente di questi servizi
telematici. Per quel che riguarda i nomi di dominio ISO
3166 la gestione viene affidata a livello nazionale. In
Italia la gestione del top-level domain it  gestita dal
GARR, autorit al quale  necessario rivolgersi per
la registrazione.

2.4.4 DNS in Breve 

Il Domain Name System  una bancadati distribuita che permette
il controllo locale dei nomi di dominio su segmenti della
rete. Tramite un sistema di replica, le modifiche fatte
su un determinato segmento di rete da parte degli amministratori
incaricati vengono "copiate"
e distribuite pubblicamente nella totalit dei computer
collegati. I programmi che gestiscono tuttora questi segmenti
di rete sono denominati Name Server mentre sono Resolver
i programmi che interrogano quest'ultimi per la risoluzione
di un nome di dominio in rete. Per chiarire maggiormente
il sistema prendiamo un esempio base. Un amministratore
di DNS deve gestire un particolare dominio chiamato linux.it.
In questo dominio  presente un computer in rete che vogliamo
chiamare erlug.linux.it. L'amministratore per fare questo
deve agire sul Name Server presente sul dominio linux.it,
aggiungere l'indirizzo ip e il nome erlug.linux.it. Sar
compito del Name Server stesso, tramite il sistema che lo
contraddistingue a replicare questi dati sui DNS di livello
superiore finch l'informazione non  accessibile ad ogni
computer in rete. Come si pu capire questo metodo scompone
il traffico di rete e il carico dei processori a livelli.

 F.A.Q. 

Introduciamo, sin dal primo capitolo, la sezione della F.A.Q.
ovvero Frequently Asked Questions, le domande richieste
maggiormente. L'autore valuta eventuali domande da parte
dei lettori per ampliare la lista ed eliminare ulteriori
dubbi sorti dagli argomenti in esame.

Domanda: "Devo utilizzare obbligatoriamente il
  DNS per collegarmi ad Internet?" 

Per la connessione ad Internet non  necessario questo parametro
ma lo diventa se volete utilizzare la pagine web o accedere
ai servizi offerti dalla rete. Senza DNS dovreste conoscere
gli indirizzi IP di ogni server in rete, mentre nel caso
contrario basterebbe conoscere il nome di dominio e in automatico
avviene la risoluzione. E' pi semplice ricordarsi che per
andare sul sito di ErLug (Emilia Romagna Linux User Group)
basta aprire un browser e digitare l'indirizzo http://erlug.linux.it
invece del numero IP che identifica il server in rete.

Domanda: "Cosa mi serve per poter gestire la posta
  elettronica?" 

Se si desidera gestire una corrispondenza di posta elettronica
 chiaramente necessario disporre di una propria casella
postale per le risposte. Esistono numerosi servizi che offrono
gratuitamente caselle di posta elettronica. Nel caso italiano
esistono molti provider Internet che insieme alla connessione
includono questo servizio. Una volta ottenuta una casella
postale servono pochi ulteriori parametri: il server SMTP,
ovvero il servizio che gestisce la "spedizione"
delle vostre e-mail. Esempio:


mail.provider.it


il server POP3 (o IMAP a seconda dei casi) per gestire la
posta che arriva nella vostra casella postale. E' frequente
trovare come server di questo tipo lo stesso utilizzato
per la spedizione:


mail.provider.it


Il server di "spedizione"
(SMTP o Simple Mail Transfer Protocol) non richiede parametri
aggiuntivi per lo svolgimento delle proprie operazioni al
contrario del server di "ricezione"
(POP3) dove risiedono i vostri personali messaggi. Per accedere
a quest'ultimo con un programma di gestione della posta
elettronica  necessario aggiungere il parametro che identifica
l'utente (genericamente la parte iniziale del vostro indirizzo
di posta) e una parola d'ordine (password) che solo voi
conoscete.

Domanda: "Utilizzando posta elettronica e newsgroup
   possibile scaricare dei virus nel proprio computer?" 

Con la posta o le news  possibile trovare allegati dei file.
Guardatevi da questi se non conoscete chi ve li spedisce!
I virus sono particolari programmi che si insediano nel
vostro computer alterando le operazioni basilari. Vengono
trasmessi attraverso file eseguibili (ad esempio i file
.exe nel mondo Dos/Windows) o attraverso documenti particolari
che possono includere linguaggi macro al proprio interno
(ad esempio i file .doc o .xls). Gli ultimi virus esaminati
sono chiamati "Macro Virus".

Unix <Capitolo 3>

Negli anni '60, agli albori della Scienza dei Computer (Computer
Science) i calcolatori non parlavano tra loro. Spesso i
calcolatori di uno stesso produttore avevano bisogno di
interpreti per condividere informazioni ed  inutile prendere
in considerazione computer di produttori differenti. Sono
passati molti anni e in estrema sintesi verranno illustrati
nella pagine che seguono. ([fig] ([fig] Ritchie e Thompson in foto recenti<Dennis Ritchie>) 

3.1 Da Multics a Unix 

Nel 1965, nei laboratori della Bell, una divisione AT&T,
veniva aperto un progetto chiamato Multics (Multiplexed
Information and Computing Service) che vedeva la collaborazione
di General Electric e del MIT([footnote] Massachusetts Institute of Technology )  per trovare una soluzione capace di gestire centraline telefoniche,
sistemi di calcolo multiutente con costi ridotti. Nonostante
le buone intenzioni, problemi di budget decretarono la fine
del progetto ma questo non ferm Ken Thompson e Dennis Ritchie
che in seguito all'esperienze fatte precedentemente continuarono
a lavorare su un progetto loro con i relativi ed evidenti
problemi correlati come la necessit di trovare un calcolatore
per lavorare. Venne preparato un piano di sponsorizzazioni
ma questo fu rifiutato e le voci di corridoio dicono che
Bill Baker, il vice-presidente dei Bell Labs, esclam:

"Bell Labs just doesn't do business this way!"

Era un progetto molto vago sotto l'aspetto economico e non
fu abbastanza convincente per ricevere i fondi necessari,
l dove era gi stata decretata la fine di Multics in precedenza.
Ritchie e Thompson non si persero d'animo, prepararono un
prospetto del sistema operativo e lo distribuirono tramite
l'ufficio stampa dei Bell Labs ad un ampio numero di ricercatori.
Questo scatto ebbe i suoi frutti e venne trovato un piccolo
e usato PDP-7 da utilizzare per la sperimentazione e lo
sviluppo del progetto. L'estate del '69 fu interamente dedicata
a realizzare una bozza significativa per iniziare i lavori
del progetto.

Nel 1970 fu battezzato Unix da Brian Kernighan
come gioco di parole con Multics
e fu sottoposto un prospetto a due responsabili dei dipartimenti
di ricerca per l'acquisto di un PDP-11; Doug McIlroy e Lee
McMahon furono di fondamentale importanza e una volta trovati
i fondi necessari fu possibile acquistare il calcolatore
per il progetto. Il porting di Unix dal PDP-7 al PDP-11
venne fatto tramite due terminali Teletype 33 (immagine
[--PDP-11--]) e rapidamente attrasse a s credibilit nei
confronti degli altri dipartimenti di ricerca. Sulla spinta
del successo fu ulteriormente proposto di acquistare un
nuovo sistema PDP-11/45 e quest'ultima proposta non ebbe
problemi a concretizzarsi.

In origine tutto il sistema operativo era scritto in linguaggio
assembly. Era necessario trovare una soluzione per rendere
questo iniziale sistema operativo portabile su altri calcolatori
in maniera semplice. Ken Thompson 
invent invece un linguaggio chiamato B, che fu influenzato
da un altro linguaggio chiamato BCPL([footnote] Basic Combined Programming Language, ideato da
Martin Richards presso l'universit di Cambridge. ) . Nel 1971 cominci il lavoro al linguaggio che sarebbe diventato
il C, un passo evolutivo che svincolava il linguaggio
dal precedente calcolatore utilizzato per lo sviluppo.([fig] ([fig] Ritchie e Thompson difronte al PDP) 

Nel 1973 il kernel di Unix fu riscritto in C e poteva funzionare
su dieci macchine. Nell'ottobre del 1973, Thompson e Ritchie
presentarono un paper al Symposium for Operating System
Principles e l'interesse per il sistema esplose. All'epoca,
la AT&T era indagata per comportamenti monopolistici e le
fu ordinato di rimanere fuori dall'industria dei computer;
i suoi legali decisero che sarebbe stato giusto permettere
alle universit di disporre del sistema operativo alle condizioni
dettate dalla stessa compagnia che in buona parte si sintetizzavano
nella totale assenza di assistenza tecnica. Ci costrinse
gli utenti a riunirsi per potersi prestare assistenza reciprocamente,
rinforzando i valori che all'inizio avevano portato alla
creazione del sistema. Ma una tradizione di condivisione
non avrebbe impedito che nella comunit degli utenti si
formassero profonde divisioni - e due delle prime, a quel
tempo stavano proprio per nascere. Nel 1975 Ken Thompson
ritorn all'Universit della California a Berkeley, e port
Unix con s. L due dottorandi, Chuck Haley
e Bill Joy, fecero il porting del sistema Pascal,
al quale Thompson aveva lavorato, ad uno stato in cui poteva
essere utilizzato, e crearono l'editor di testi vi.
Nacque cos la Berkeley System Distribution di Unix o pi
semplicemente BSD Unix, una soluzione
che veniva distribuita su nastro su richiesta. Le stesse
intenzioni erano ben lontane dagli scopi commerciali; la
diffusione di BSD Unix, come afferm Joy, era un modo per
ampliare la base degli utenti e avere maggior feedback e
cos fu.

Nel corso degli anni BSD Unix venne continuamente migliorato
e ampliato. La "Second Berkeley Software
Distribution" (2BSD) era pronta nel 1978 e a
questa sussegu una nuova versione nel dicembre 1979, la
3BSD. Quest'ultima venne particolarmente apprezzata all'interno
degli ambienti scientifici e universitari. Grazie a Bob
Fabry viene ricevuto un ingente finanziamento dal progetto
DARPA (Defense Advanced Research Project Agency) volto a
migliorare e sviluppare le funzionalit di rete del sistema
operativo. Nel 1980 vengono rilasciate le distribuzioni
4BSD e 4.1BSD, il primo sostanzioso passo nel ramo networking
su TCP/IP.

Nella met degli Anni Settanta Unix stava crescendo rapidamente,
ma veniva spesso sottovalutato in rapporto a soluzioni presenti.
Nel 1978 la DEC mise in commercio VAX,
che era il successore del PDP-11, la culla di Unix. Questi
calcolatori si diffusero rapidamente e il loro sistema operativo
proprietario, il VMS, fu largamente
sostituito da Unix, specialmente dopo l'uscita del BSD 4.2
nel 1982. AT&T nel 1984 fond la propria divisione computer
e vennero delineati alcuni prodotti da offrire sul mercato,
tra questi Unix System V che girava su calcolatori 3B della
stessa compagnia. Nello stesso anno Bill Joy lasci l'universit
e fond la Sun Microsystems,
compagnia che produceva calcolatori con incluso BSD Unix
e il supporto per TCP/IP. Fu una scelta strategica quella
di allegare il software al proprio hardware senza costi
aggiuntivi. Il mercato aveva alta profittabilit e rapidamente
accorsero nuovi concorrenti come Convex,
Multiflow, Masscomp, Silicon
Graphics, Pyramid, Stardent
e NeXT. Era l'epoca dei killer micros,
come furono chiamati, soluzioni hardware pi veloci e meno
costose dei minicomputer e corredate da sistemi Unix e Unix-like.
I produttori di workstation distrussero il mercato dei minicomputer
e poi cominciarono a farsi guerra tra loro. Unix si era
spostato al centro dell'attenzione seppure ogni produttore
offrisse la propria versione del sistema operativo. Alcune
di queste erano basate sullo stile che si era sviluppato
intorno al BSD, mentre altre si richiamavano all'USG
System V Release 4 (SVR4) della AT&T.

3.2 La "Networking Release 1"

Le varie generazioni di Unix si susseguirono fino al 1989,
anno di nascita della "Network Release
1", una versione di Unix caratterizzata dalla totale libert
di utilizzo del codice sorgente, cosa che precedentemente
era vincolata da una particolare licenza AT&T. Avvenne un
cambiamento rilevante e le spinte motrici furono motivazioni
di carattere economico (costi aggiuntivi) e la libera fruizione
di codice sorgente. La somma di denaro da versare ad AT&T
per ottenere la licenza di accesso al codice sorgente non
era particolarmente rilevante ma coincise con l'accattivante
soluzione proposta dall'Universit di Berkeley.

In pochissimi mesi, un esercito di programmatori sostitu
ogni applicazione software che potesse essere ricondotta
ad AT&T; anche il kernel non fu da meno ma a causa di motivazioni
tecniche e legali non fu possibile eliminare determinate
porzioni di codice. Ogni vincolo venne superato con la "Network
Release 2" del 1991. Nell'anno successivo, Bill
Jolitz  annuncia la nascita di 386/BSD,
versione di BSD Unix scritta per microprocessori Intel 80386,
il trampolino di lancio per il NetBSD Group,
una task force intenta a migliorare le soluzioni per l'installazione/diffusione
lato "utente". Il 1992 segna inoltre il
passaggio di mano degli Unix System Laboratories da AT&T
a Novell, la quale compie a sua volta un passaggio nel 1995
in favore di SCO (Santa Cruz Operation). 

Non si pu negare la vita travagliata del sistema operativo
ma nonostante questo ha affascinato e continua ad affascinare
una larghissima schiera di utenti e molto spesso stupire
per caratteristiche che il futuro decreter essenziali nel
settore informatico contemporaneo.

3.3 Free Software Foundation 

Nel 1983 Richard M. Stallman 
fond il progetto GNU e la Free Software
Foundation, il cui scopo era produrre un sistema Unix-compatibile
completamente gratuito e liberamente distribuibile. Tuttavia,
il metodo di questo gruppo era cominciare con le utilities
- editor di testo, compilatori, e tutto il resto - lavorando
in direzione di un kernel completamente nuovo. Malgrado
non si sia ancora realizzato il progetto a livello del kernel([footnote] Il progetto HURD rappresenta il sogno di GNU
ma questo kernel  ancora in fase ampiamente sperimentale
ai giorni nostri. Per maggiori informazioni in merito 
possibile leggere informazioni online su http://www.gnu.ai.mit.edu/software/hurd/.)  il software prodotto da GNU era di una tale qualit che
gli amministratori di sistema spesso sostituirono i programmi
originali delle loro distribuzioni di Unix con le versioni
GNU. Malgrado questo le compagnie preferirono curare i loro
interessi giocando probabilmente contro questa filosofia
di libero scambio del codice senza limitazioni.

 F.A.Q. 

Domanda: "C' differenza tra Unix e UNIX, scritto
  con lettere maiuscole?"

Con Unix indichiamo l'insieme di tutti i sistemi di questo
tipo. UNIX  un marchio registrato che indica la realizzazione
di Unix creata da USL (Unix System Laboratories) della Novell.

Domanda: "Che importanza ha avuto il sistema operativo
  Unix nello sviluppo della rete Internet?" 

Esiste un rapporto sinergico tra Unix e Internet. Se da un
lato il sistema operativo ha trovato ampiamente sviluppo
in rete, Internet e le tecnologie relative hanno trovato
la propria culla nel sistema operativo in questione. L'esempio
del Domain Name System  rappresentativo. L'organizzazione
delle informazioni  gerarchicamente molto simile alla struttura
ad albero del file system Unix.

Domanda: "Unix  ancora un privilegio per pochi?
  Serve necessariamente un calcolatore molto potente per
  utilizzare questo sistema operativo?" 

Esistono versioni commerciali e "free",
nel concetto Open Sources. Le versioni commerciali genericamente
sono sviluppate per particolari piattaforme hardware e ottimizzate
per sfruttare le caratteristiche di quest'ultime. Le versioni
"free" grazie alla loro natura "aperta"
si evolvono rapidamente offrendo il supporto per un ampio
insieme di periferiche e molte caratteristiche tecniche
tipiche delle versioni commerciali. Tra i sistemi "free"
possiamo ricordare GNU/Hurd e GNU/Linux: entrambi hanno
un ampio supporto di periferiche e offrono prestazioni molto
buone sui computer comunemente in vendita sul mercato.

Filosofia

Open Source <Capitolo 4>

Dopo aver presentato la storia di UNIX e accennato alla nascita
del movimento GNU  sembrato doveroso dare maggiori dettagli
sul movimento che ha coinvolto una comunit di sviluppatori
molto ampia e ha dato vita tra i numerosi progetti al sistema
operativo GNU/Linux.

Proprio per aumentare l'informazione in merito sono stati
scelti due documenti autorevoli scritti da altrettanto autorevoli
guru. Il primo documento  di Richard Stallman, l'uomo che
ha fondato la Free Software Foundation, considerato per
molti un visionario per molti altri un genio. Il testo vuole
essere una base da analizzare per creare una propria opinione
in merito. Il secondo documento  di Bruce Perens, il fondatore
della distribuzione Debian, ed  una dettagliata analisi
delle varie licenze software presenti con relative caratteristiche.
Il testo  diretto con particolare cura agli sviluppatori
ma pu essere un ottimo riferimento per gli utenti finali
che utilizzeranno soluzioni software per le proprie esigenze.

Puntualizzazioni dell'autore

Mentre il primo articolo  indiscutibile perch trattasi
di una esposizione storica personale sul secondo articolo
vanno fatte delle premesse. Perens introduce problematiche
sulle licenze dei due principali ambienti desktop per GNU/Linux,
ovvero GNOME e KDE, preferendo il primo progetto per motivazioni
etiche. L'articolo coglie indiscutibilmente nel segno ma
non  aggiornato al cambiamento di licenza in GPL delle
librerie Qt di Troll Tech, lo strato basilare del desktop
KDE. In seguito a questo cambiamento sembra diventato superficiale
mantenere due progetti affini con uguali motivazioni di
carattere etico. Dal punto di vista dell'usabilit KDE 
anche molto avanti rispetto al progetto antagonista.

4.1 Il progetto GNU([footnote] La traduzione di questo saggio  stata revisionata
e curata, con la supervisione dell'autore, da Lorenzo Bettini,
Antonio Cisternino, Francesco Potort e Alessandro Rubini.
Al documento sono state apportate correzioni e migliorie
della traduzione.)  

 di Richard Stallman
   
  La prima comunit di condivisione del software

"Quando cominciai a lavorare nel laboratorio di Intelligenza
Artificiale del MIT nel 1971, entrai a far parte di una
comunit in cui ci si scambiavano i programmi, che esisteva
gi da molti anni. La condivisione del software non si limitava
alla nostra comunit;  un cosa vecchia quanto i computer,
proprio come condividere le ricette  antico come il cucinare.
Ma noi lo facevamo pi di quasi chiunque altro.

Il laboratorio di Intelligenza Artificiale (AI) usava un
sistema operativo a partizione di tempo (timesharing) chiamato
ITS (Incompatible Timesharing System) che il gruppo di hacker([footnote] Nota di Stallman: L'uso del termine hacker nel
senso di pirata  una confusione di termini creata dai mezzi
di informazione. Noi hacker ci rifiutiamo di riconoscere
questo significato, e continuiamo a utilizzare la parola
nel senso di uno che ami programmare, e a cui piaccia essere
bravo a farlo. )  del laboratorio aveva progettato e scritto in linguaggio
assembler per il Digital PDP-10, uno dei grossi elaboratori
di quel periodo. Come membro di questa comunit, hacker
di sistema nel gruppo laboratorio, il mio compito era migliorare
questo sistema.

Non chiamavamo il nostro software software libero, poich
questa espressione ancora non esisteva, ma si trattava proprio
di questo. Quando persone di altre universit o di qualche
societ volevano convertire il nostro programma per il proprio
sistema e utilizzarlo, erano le benvenute. Se si vedeva
qualcuno usare un programma sconosciuto e interessante,
si poteva sempre chiedere di vederne il codice sorgente,
in modo da poterlo leggere, modificare, o prenderne, cannibalizzarne
alcune parti per creare un nuovo programma."([fig] ([fig] Richard Stallman<Richard Stallman>) 

 La comunit si dissolve 

"La situazione cambi drasticamente all'inizio degli anni
'80 quando la Digital smise di produrre la serie PDP-10.
La sua architettura, elegante e potente negli anni '60,
non poteva essere estesa in modo naturale ai pi grandi
spazi di indirizzamento che si stavano rendendo possibili
negli anni '80. Questo signific che quasi tutti i programmi
che formavano ITS divennero obsoleti.

La comunit di hacker del laboratorio di Intelligenza Artificiale
si era gi dissolta non molto tempo prima. Nel 1981 la Symbolics,
nata da una costola del laboratorio stesso, gli aveva sottratto
quasi tutti gli hacker; l'ormai esiguo gruppo rimasto fu
dunque incapace di sostenersi (il libro Hackers di Steve
Levy narra questi eventi, oltre a fornire una fedele ricostruzione
di questa comunit ai suoi inizi). Quando il laboratorio
di Intelligenza Artificiale nel 1982 acquist un nuovo PDP-10,
i sistemisti decisero di utilizzare il sistema timesharing
non libero della Digital anzich
ITS. I moderni elaboratori di quell'epoca, come il VAX o
il 68020, avevano il proprio sistema operativo, ma nessuno
di questi era libero: si doveva firmare un accordo di non-diffusione
persino per ottenerne una copia eseguibile.

Questo significava che il primo passo per usare un computer
era promettere di negare aiuto al proprio vicino. Una comunit
cooperante era vietata. La regola creata dai proprietari
di software proprietario era: "se
condividi il software col tuo vicino sei un pirata. Se vuoi
modifiche, pregaci di farle".

L'idea che la concezione sociale di software proprietario
- cio il sistema che impone che il software non possa essere
condiviso o modificato - sia antisociale, contraria all'etica,
semplicemente sbagliata, pu apparire sorprendente a qualche
lettore. Ma che altro possiamo dire di un sistema che si
basa sul dividere utenti e lasciarli senza aiuto? Quei lettori
che trovano sorprendente l'idea possono aver data per scontata
la concezione sociale di software proprietario, o averla
giudicata utilizzando lo stesso metro suggerito dal mercato
del software proprietario. I produttori di software hanno
lavorato a lungo e attivamente per diffondere la convinzione
che c' un solo modo di vedere la cosa.

Quando i produttori di software parlano di "difendere"
i propri "diritti" o di "fermare
la pirateria", quello che dicono  in realt
secondario. Il vero messaggio in quelle affermazioni sta
nelle assunzioni inespresse, che essi danno per scontate;
vogliono che siano accettate acriticamente. Esaminiamole,
dunque.

Una prima assunzione  che le aziende produttrici di software
abbiano il diritto naturale indiscutibile di propriet sul
software, e di conseguenza, abbiano controllo su tutti i
suoi utenti. Se questo fosse un diritto naturale, non potremmo
sollevare obiezioni, indipendentemente dal danno che possa
recare ad altri.  interessante notare che, negli Stati
Uniti, sia la costituzione che la giurisprudenza rifiutano
questa posizione: il diritto d'autore non  un diritto naturale,
ma un monopolio imposto dal governo che limita il diritto
naturale degli utenti a effettuare delle copie.

Un'altra assunzione inespressa  che la sola cosa importante
del software sia il lavoro che consente di fare - vale a
dire che noi utenti non dobbiamo preoccuparci del tipo di
societ in cui ci  permesso vivere. Una terza assunzione
 che non avremmo software utilizzabile (o meglio, che non
potremmo mai avere un programma per fare questo o quell'altro
particolare lavoro) se non riconoscessimo ai produttori
il controllo sugli utenti di quel programmi. Questa assunzione
avrebbe potuto sembrare plausibile, prima che il movimento
del software libero dimostrasse che possiamo scrivere quantit
di programmi utili senza bisogno di metterci dei catenacci.

Se rifiutiamo di accettare queste assunzioni, giudicando
queste questioni con comuni criteri di moralit e di buon
senso dopo aver messo al primo posto gli interessi degli
utenti, tenendo conto che gli utenti vengono prima di tutto,
arriviamo a conclusioni del tutto differenti. Chi usa un
calcolatore dovrebbe essere libero di modificare i programmi
per adattarli alle proprie necessit, ed essere libero di
condividere il software, poich aiutare gli altri  alla
base della societ.

Non c' modo in questa sede di trattare approfonditamente
i ragionamenti che portano a questa conclusione; il lettore
interessato pu cercare le informazioni in rete a questo
indirizzo:

http://www.gnu.org/philosophy/why-free.html

 Una difficile scelta morale 

"Una volta che il mio gruppo si fu sciolto, continuare come
prima fu impossibile. Mi trovai di fronte a una difficile
scelta morale. La scelta facile sarebbe stata quella di
unirsi al mondo del software proprietario, firmando accordi
di non-diffusione e promettendo di non aiutare i miei compagni
hacker. Con ogni probabilit avrei anche sviluppato software
che sarebbe stato distribuito secondo accordi di non-diffusione,
contribuendo cos alla pressione su altri perch a loro
volta tradissero i propri compagni. In questo modo avrei
potuto guadagnare, e forse mi sarei divertito a programmare.
Ma sapevo che al termine della mia carriera mi sarei voltato
a guardare indietro, avrei visto anni spesi a costruire
muri per dividere le persone, e avrei compreso di aver contribuito
a rendere il mondo peggiore.

Avevo gi sperimentato cosa significasse un accordo di non
diffusione per chi lo firmava, quando qualcuno rifiut a
me e al laboratorio AI del MIT
il codice sorgente del programma di controllo della nostra
stampante; l'assenza di alcune funzionalit nel programma
rendeva oltremodo frustrante l'uso della stampante. Per
cui non mi potevo dire che gli accordi di non-diffusione
fossero innocenti. Ero molto arrabbiato quando quella persona
si rifiut di condividere il programma con noi; non potevo
far finta di niente e fare lo stesso con tutti gli altri.

Un'altra possibile scelta, semplice ma spiacevole, sarebbe
stata quella di abbandonare l'informatica. In tal modo le
mie capacit non sarebbero state mal utilizzate, tuttavia
sarebbero state sprecate. Non sarei mai stato colpevole
di dividere o imporre restrizioni agli utenti di calcolatori,
ma queste cose sarebbero comunque successe.

Allora cercai un modo in cui un programmatore potesse fare
qualcosa di buono. Mi chiesi dunque: c'erano un programma
o dei programmi che io potessi scrivere, per rendere nuovamente
possibile l'esistenza di una comunit?

La risposta era semplice: innanzitutto serviva un sistema
operativo. Questo  difatti il software fondamentale per
iniziare a usare un computer. Con un sistema operativo si
possono fare molte cose; senza, non  proprio possibile
far funzionare il computer. Con un sistema operativo libero,
avremmo potuto avere nuovamente una comunit in cui hacker
possono cooperare, e invitare chiunque a unirsi al gruppo.
E chiunque sarebbe stato in grado di usare un calcolatore,
senza dover cospirare fin dall'inizio per sottrarre qualcosa
ai propri amici.

Essendo un programmatore di sistemi, possedevo le competenze
adeguate per questo lavoro. Cos, anche se non davo il successo
per scontato, mi resi conto di essere la persona giusta
per farlo. Scelsi di rendere il sistema compatibile con
Unix, in modo che fosse portabile, e che gli utenti Unix
potessero passare facilmente a esso. Il nome GNU fu scelto
secondo una tradizione hacker, come acronimo ricorsivo che
significa "GNU's Not Unix"
(GNU non  Unix).

Un sistema operativo non si limita solo al suo nucleo, che
 proprio il minimo per eseguire altri programmi. Negli
anni '70, qualsiasi sistema operativo degno di questo nome
includeva interpreti di comandi, assemblatori, compilatori,
interpreti di linguaggi, debugger, editor di testo, programmi
per la posta e molto altro. ITS li aveva, Multics
li aveva, VMS li aveva e Unix li aveva. Anche il sistema
operativo GNU li avrebbe avuti.

Tempo dopo venni a conoscenza di questa massima, attribuita
a Hillel([footnote] Nota di Stallman: Essendo ateo, non seguo alcuna
guida religiosa, ma a volte mi trovo ad ammirare qualcosa
che qualcuno di loro ha detto. ) :

"Se non sono per me stesso, chi sar per me?
 E se sono solo per me stesso, che cosa sono?
 E se non ora, quando?" 

La decisione di iniziare il progetto GNU si bas su uno spirito
simile."

 "Free" come libero 

"Il termine free software"
(N.d.T. il termine free in inglese significa sia gratuito
che libero) a volte  mal interpretato: non ha niente a
che vedere col prezzo del software; si tratta di libert.
Ecco, dunque, la definizione di software libero: un programma
 software libero per un dato utente se:

* utente ha la libert di eseguire il programma per qualsiasi
  scopo; 

* l'utente ha la libert di modificare il programma secondo
  i propri bisogni (perch questa libert abbia qualche
  effetto in pratica,  necessario avere accesso al codice
  sorgente del programma, poich apportare modifiche a un
  programma senza disporre del codice sorgente  estremamente
  difficile); 

* l'utente ha la libert di distribuire copie del programma,
  gratuitamente o dietro compenso; 

* l'utente ha la libert di distribuire versioni modificate
  del programma, cos che la comunit possa fruire dei miglioramenti
  apportati. 

Poich "free" si riferisce alla libert
e non al prezzo, vendere copie di un programma non contraddice
il concetto di software libero. In effetti, la libert di
vendere copie di programmi  essenziale: raccolte di software
libero vendute su CD-ROM sono importanti per la comunit,
e la loro vendita  un modo di raccogliere fondi importante
per lo sviluppo del software libero. Di conseguenza, un
programma che non pu essere liberamente incluso in tali
raccolte non  software libero.

A causa dell'ambiguit del termine "free",
si  cercata a lungo un'alternativa, ma nessuno ne ha trovata
una valida. La lingua inglese ha, pi termini e sfumature
di ogni altra, ma non ha una parola semplice e non ambigua
che significhi libero; "unfettered"
 la parola pi vicina come significato (N.d.T. unfettered
 una parola di tono aulico o arcaico che significa libero
da ceppi, vincoli o inibizioni). Alternative come "liberated",
"freedom" e "open"
hanno altri significati o non sono adatte per altri motivi
(N.d.T. rispettivamente, liberato, libert, aperto)."

 Software GNU e il sistema GNU 

"Sviluppare un intero sistema  un progetto considerevole.
Per raggiungere l'obiettivo decisi di adattare e usare parti
di software libero tutte le volte che fosse possibile. Per
esempio, decisi fin dall'inizio di usare TeX
come il principale programma di formattazione di testo;
qualche anno pi tardi, decisi di usare l'X Window System
piuttosto che scrivere un altro sistema a finestre per GNU.

A causa di questa decisione, il sistema GNU e la raccolta
di tutto il software GNU non sono la stessa cosa. Il sistema
GNU comprende programmi che non sono GNU, sviluppati da
altre persone o gruppi di progetto per i propri scopi, ma
che possiamo usare in quanto software libero."

 L'inizio del progetto 

"Nel gennaio 1984 lasciai il mio posto al MIT e cominciai
a scrivere software GNU. Dovetti lasciare il MIT, per evitare
che potesse interferire con la distribuzione di GNU come
software libero. Se fossi rimasto, il MIT avrebbe potuto
rivendicare la propriet del lavoro, e avrebbe potuto imporre
i propri termini di distribuzione, o anche farne un pacchetto
proprietario. Non avevo alcuna intenzione di fare tanto
lavoro solo per vederlo reso inutilizzabile per il suo scopo
originario: creare una nuova comunit di condivisione di
software.

A ogni buon conto, il professor Winston - allora responsabile
del laboratorio AI del MIT - mi propose gentilmente di continuare
a utilizzare le attrezzature del laboratorio stesso."

 I primi passi 

"Poco dopo aver iniziato il progetto GNU, venni a sapere
del Free University Compiler Kit, noto anche come VUCK
(la parola olandese che sta per "free"
inizia con la V). Era un compilatore progettato per trattare
pi linguaggi, fra cui C e Pascal, e per generare codice
binario per diverse architetture. Scrissi al suo autore
chiedendo se GNU avesse potuto usarlo. Rispose in modo canzonatorio,
dicendo che l'universit era s libera, ma non il compilatore.
Decisi allora che il mio primo programma per il progetto
GNU sarebbe stato un compilatore multilinguaggio e multipiattaforma.
Sperando di evitare di dover scrivere da me l'intero compilatore,
ottenni il codice sorgente del Pastel, un compilatore multipiattaforma
sviluppato ai Laboratori Lawrence Livermore. Il linguaggio
supportato da Pastel, in cui il Pastel stesso era scritto,
era una versione estesa del Pascal,
pensata come linguaggio di programmazione di sistemi. Io
vi aggiunsi un frontend per il C, e cominciai il porting
per il processore Motorola 68000, ma fui costretto a rinunciare
quando scoprii che il compilatore richiedeva diversi megabyte
di memoria sullo stack, mentre il sistema Unix disponibile
per il processore 68000 ne permetteva solo 64K.

Mi resi conto allora che il compilatore Pastel interpretava
tutto il file di ingresso creandone un albero sintattico,
convertiva questo in una catena di "istruzioni",
e quindi generava l'intero file di uscita senza mai liberare
memoria. A questo punto, conclusi che avrei dovuto scrivere
un nuovo compilatore da zero. Quel nuovo compilatore  ora
noto come Gcc; non utilizza niente del compilatore
Pastel, ma riuscii ad adattare e riutilizzare il frontend
per il C che avevo scritto. Questo per avvenne qualche
anno dopo; prima, lavorai su GNU Emacs."

 GNU Emacs 

"Cominciai a lavorare su GNU Emacs
nel settembre 1984, e all'inizio del 1985 cominciava a essere
utilizzabile. Cos potei iniziare a usare sistemi Unix per
scrivere; fino ad allora, avevo scritto sempre su altri
tipi di macchine, non avendo nessun interesse a imparare
vi ne' ed.

A questo punto alcuni cominciarono a voler usare GNU Emacs,
il che pose il problema di come distribuirlo. Naturalmente
lo misi sul server ftp anonimo del computer che usavo al
MIT (questo computer, prep.ai.mit.edu, divenne cos il sito
ftp primario di distribuzione di GNU; quando alcuni anni
dopo and fuori servizio, trasferimmo il nome sul nostro
nuovo ftp server). Ma allora molte delle persone interessate
non erano su Internet e non potevano ottenere una copia
via ftp, cos mi si pose il problema di cosa dir loro.

Avrei potuto dire: "trova un amico che
 in rete disposto a farti una copia".
Oppure avrei potuto fare quel che feci con l'originario
Emacs su PDP-10, e cio dir loro: "spediscimi
una busta affrancata e un nastro, e io te lo rispedisco
con sopra Emacs". Ma ero senza lavoro, e
cercavo un modo di far soldi con il software libero. E cos
feci sapere che avrei spedito un nastro a chi lo voleva
per 150 dollari. In questo modo, creai un'impresa di distribuzione
di software libero, che anticipava le compagnie che oggi
distribuiscono interi sistemi GNU basati su Linux."

 Un programma  libero per tutti? 

"Se un programma  software libero quando esce dalle mani
del suo autore, non significa necessariamente che sar software
libero per chiunque ne abbia una copia. Per esempio, il
software di pubblico dominio (software senza copyright)
 software libero, ma chiunque pu farne una versione modificata
proprietaria. Analogamente, molti programmi liberi sono
protetti da diritto d'autore, ma vengono distribuiti con
semplici licenze permissive che permettono di farne versioni
modificate proprietarie.

L'esempio emblematico della questione  l'X Window System.
Sviluppato al MIT, e pubblicato come software libero con
una licenza permissiva, fu rapidamente adottato da diverse
societ informatiche. Queste aggiunsero X
ai loro sistemi Unix proprietari, solo in forma binaria,
e coperto dello stesso accordo di non-diffusione. Queste
copie di X non erano software pi libero di quanto lo fosse
Unix.

Gli autori dell'X Window System non ritenevano che questo
fosse un problema, anzi se lo aspettavano ed era loro intenzione
che accadesse. Il loro scopo non era la libert, ma semplicemente
il "successo", definito come "avere
tanti utenti". Non erano interessati che questi
utenti fossero liberi, ma solo che fossero numerosi.

Questo sfoci in una situazione paradossale, in cui due modi
diversi di misurare la quantit di libert risultavano in
risposte diverse alla domanda "questo
programma  libero"? Giudicando sulla
base della libert offerta dai termini distributivi usati
dal MIT, si sarebbe dovuto dire che X era software
libero. Ma misurando la libert dell'utente medio di X,
si sarebbe dovuto dire che X era software proprietario.
La maggior parte degli utenti di X usavano le versioni proprietarie
fornite con i sistemi Unix, non la versione libera."

 Il permesso d'autore (copyleft)
  e la GNU GPL 

"Lo scopo di GNU consisteva nell'offrire libert agli utenti,
non solo nell'ottenere ampia diffusione. Avevamo quindi
bisogno di termini di distribuzione che evitassero che il
software GNU fosse trasformato in software proprietario.
Il metodo che usammo si chiama "permesso
d'autore".([footnote] Nota di Stallman: Nel 1984 / 1985, Don Hopkins,
persona molto creativa, mi mand una lettera. Sulla busta
aveva scritto diverse frasi argute, fra cui questa: "Permesso
d'autore - tutti i diritti rovesciati".
Utilizzai l'espressione "permesso
d'autore" per battezzare il concetto di distribuzione
che allora andavo elaborando. ) 

Il permesso d'autore (copyleft)([footnote] Nota dei Traduttori: si tratta di un gioco di
parole, che qui viene reso con "permesso
d'autore": copyright (diritto d'autore)  formato
dalla parola "copy" (copia)
e "right" (diritto, ma anche destra), opposto
di "left" (sinistra, ma anche lasciato) ) . usa le leggi sul diritto d'autore (copyright), ma le capovolge
per ottenere lo scopo opposto: invece che un metodo per
privatizzare il software, diventa infatti un mezzo per mantenerlo
libero. Il succo dell'idea di permesso d'autore consiste
nel dare a chiunque il permesso di eseguire il programma,
copiare il programma, modificare il programma, e distribuirne
versioni modificate, ma senza dare il permesso di aggiungere
restrizioni. In tal modo, le libert essenziali che definiscono
il "free software" (software libero)
sono garantite a chiunque ne abbia una copia, e diventano
diritti inalienabili.

Perch un permesso d'autore sia efficace, anche le versioni
modificate devono essere libere. Ci assicura che ogni lavoro
basato sul nostro sia reso disponibile per la nostra comunit,
se pubblicato. Quando dei programmatori professionisti lavorano
su software GNU come volontari,  il permesso d'autore che
impedisce ai loro datori di lavoro di dire: "non
puoi distribuire quei cambiamenti, perch abbiamo intenzione
di usarli per creare la nostra versione proprietaria del
programma".

La clausola che i cambiamenti debbano essere liberi  essenziale
se vogliamo garantire libert a tutti gli utenti del programma.
Le aziende che privatizzarono l'X Window System di solito
avevano apportato qualche modifica per portare il programma
sui loro sistemi e sulle loro macchine. Si trattava di modifiche
piccole rispetto alla mole di X, ma non banali. Se apportare
modifiche fosse una scusa per negare libert agli utenti,
sarebbe facile per chiunque approfittare di questa scusa.

Una problematica correlata  quella della combinazione di
un programma libero con codice non libero. Una tale combinazione
sarebbe inevitabilmente non libera; ogni libert che manchi
dalla parte non libera mancherebbe anche dall'intero programma.
Permettere tali combinazioni aprirebbe non uno spiraglio,
ma un buco grosso come una casa. Quindi un requisito essenziale
per il permesso d'autore  tappare il buco: tutto ci che
venga aggiunto o combinato con un programma protetto da
permesso d'autore dev'essere tale che il programma risultante
sia anch'esso libero e protetto da permesso d'autore.

La specifica implementazione di permesso d'autore che utilizziamo
per la maggior parte del software GNU  la GNU General Public
License (licenza pubblica generica GNU), abbreviata in GNU
GPL. Abbiamo altri tipi di permesso d'autore che sono utilizzati
in circostanze specifiche. I manuali GNU sono anch'essi
protetti da permesso d'autore, ma ne usano una versione
molto pi semplice, perch per i manuali non  necessaria
la complessit della GPL."

 La Free Software Foundation 

"Man mano che l'interesse per Emacs aumentava, altre persone
parteciparono al progetto GNU, e decidemmo che era di nuovo
ora di cercare finanziamenti. Cos nel 1985 fondammo la
Free Software Foundation (Fondazione per il software libero),
una organizzazione senza fini di lucro per lo sviluppo di
software libero. La FSF fra l'altro si prese carico della
distribuzione dei nastri di Emacs; pi tardi estese l'attivit
aggiungendo sul nastro altro software libero (sia GNU che
non GNU) e vendendo manuali liberi.

La FSF accetta donazioni, ma gran parte delle sue entrate
 sempre stata costituita dalle vendite: copie di software
libero e servizi correlati. Oggi vende CD-ROM di codice
sorgente, CD-ROM di programmi compilati, manuali stampati
professionalmente (tutti con libert di ridistribuzione
e modifica), e distribuzioni Deluxe (nelle quali compiliamo
l'intera scelta di software per una piattaforma a richiesta).

I dipendenti della Free Software Foundation hanno scritto
e curato la manutenzione di diversi pacchetti GNU. Fra questi
spiccano la libreria C e la shell. La libreria C di GNU
 utilizzata da ogni programma che gira su sistemi GNU/Linux
per comunicare con Linux.  stata sviluppata da un membro
della squadra della Free Software Foundation, Roland McGrath.
La shell usata sulla maggior parte dei sistemi GNU/Linux
 Bash, la Bourne Again Shell([footnote] Nota di Stallman: "Bourne Again Shell"  un gioco
di parole sul nome di "Bourne Shell",
che era la normale shell di Unix. ) ([footnote] Nota dei Traduttori: "Bourne Again" richiama l'espressione
cristiana "born again", "rinato"
(in Cristo). ) , che  stata sviluppata da Brian Fox, dipendente della FSF.

Finanziammo lo sviluppo di questi programmi perch il progetto
GNU non riguardava solo strumenti di lavoro o un ambiente
di sviluppo: il nostro obiettivo era un sistema operativo
completo, e questi programmi erano necessari per raggiungere
quell'obiettivo."

 Il supporto per il software libero 

"La filosofia del software libero rigetta una diffusa pratica
commerciale in particolare, ma non  contro il commercio.
Quando un'impresa rispetta la libert dell'utente, c' da
augurarle ogni successo.

La vendita di copie di Emacs esemplifica un modo di condurre
affari col software libero. Quando la FSF prese in carico
quest'attivit, dovetti trovare un'altra fonte di sostentamento.
La trovai nella vendita di servizi relativi al software
libero che avevo sviluppato, come insegnare argomenti quali
programmazione di Emacs e personalizzazione di GCC,
oppure sviluppare software, soprattutto adattamento di GCC
a nuove architetture.

Oggi tutte queste attivit collegate al software libero sono
esercitate da svariate aziende. Alcune distribuiscono raccolte
di software libero su CD-ROM, altre offrono consulenza a
diversi livelli, dall'aiutare gli utenti in difficolt,
alla correzione di errori, all'aggiunta di funzionalit
non banali. Si cominciano anche a vedere aziende di software
che si fondano sul lancio di nuovi programmi liberi.

Attenzione, per: diverse aziende che si fregiano del marchio
"open source" (software aperto) in realt fondano
le loro attivit su software non libero che funziona insieme
con software libero. Queste non sono aziende di software
libero, sono aziende di software proprietario i cui prodotti
attirano gli utenti lontano dalla libert. Loro li chiamano
"a valore aggiunto", il che riflette i
valori che a loro farebbe comodo che adottassimo: la convenienza
prima della libert. Se noi riteniamo che la libert abbia
pi valore, li dovremmo chiamare prodotti "a
libert sottratta".

 Obiettivi tecnici 

"L'obiettivo principale di GNU era essere software libero.
Anche se GNU non avesse avuto alcun vantaggio tecnico su
Unix, avrebbe avuto sia un vantaggio sociale, permettendo
agli utenti di cooperare, sia un vantaggio etico, rispettando
la loro libert.

Tuttavia risult naturale applicare al lavoro le regole classiche
di buona programmazione; per esempio, allocare le strutture
dati dinamicamente per evitare limitazioni arbitrarie sulla
dimensione dei dati, o gestire tutti i possibili codici
a 8 bit in tutti i casi ragionevoli.

Inoltre, al contrario di Unix che era pensato per piccole
dimensioni di memoria, decidemmo di non supportare le macchine
a 16 bit (era chiaro che le macchine a 32 bit sarebbero
state la norma quando il sistema GNU sarebbe stato completo),
e di non preoccuparci di ridurre l'occupazione di memoria
a meno che eccedesse il megabyte. In programmi per i quali
non era essenziale la gestione di file molto grandi, spingemmo
i programmatori a leggere in memoria l'intero file di ingresso
per poi analizzare il file senza doversi preoccupare delle
operazioni di I/O.

Queste decisioni fecero s che molti programmi GNU superassero
i loro equivalenti Unix sia in affidabilit che in velocit
di esecuzione."

 Donazioni di computer 

"Man mano che la reputazione del progetto GNU andava crescendo,
alcune persone iniziarono a donare macchine su cui girava
Unix. Queste macchine erano molto utili, perch il modo
pi semplice di sviluppare componenti per GNU era di farlo
su di un sistema Unix cos da sostituire pezzo per pezzo
i componenti di quel sistema. Ma queste macchine sollevavano
anche una questione etica: se fosse giusto per noi anche
solo possedere una copia di Unix.

Unix era (ed ) software proprietario, e la filosofia del
progetto GNU diceva che non avremmo dovuto usare software
proprietario. Ma, applicando lo stesso ragionamento per
cui la violenza  ammessa per autodifesa, conclusi che fosse
legittimo usare un pacchetto proprietario, se ci fosse
stato importante nel crearne un sostituto libero che permettesse
ad altri di smettere di usare quello proprietario.

Tuttavia, bench fosse un male giustificabile, era pur sempre
un male. Oggi non abbiamo pi alcuna copia di Unix, perch
le abbiamo sostituite con sistemi operativi liberi. Quando
non fu possibile sostituire il sistema operativo di una
macchina con uno libero, sostituimmo la macchina."

 L'elenco dei compiti GNU 

"Mentre il progetto GNU avanzava, e un numero sempre maggiore
di componenti di sistema venivano trovati o sviluppati,
divent utile stilare un elenco delle parti ancora mancanti.
Usammo questo elenco per ingaggiare programmatori che scrivessero
tali parti, e l'elenco prese il nome di elenco dei compiti
GNU. In aggiunta ai componenti Unix mancanti inserimmo nell'elenco
svariati progetti utili di programmazione o di documentazione
che a nostro parere non dovrebbero mancare in un sistema
operativo veramente completo.

Oggi non compare quasi nessun componente Unix nell'elenco
dei compiti GNU; tutti questi lavori, a parte qualcuno non
essenziale, sono gi stati svolti. D'altro canto l'elenco
 pieno di quei progetti che qualcuno chiamerebbe "applicazioni":
ogni programma che interessi a una fetta non trascurabile
di utenti sarebbe un'utile aggiunta a un sistema operativo.

L'elenco comprende anche dei giochi, e cos  stato fin dall'inizio:
Unix comprendeva dei giochi, perci era naturale che cos
fosse anche per GNU. Ma poich non c'erano esigenze di compatibilit
per i giochi, non ci attenemmo alla scelta di giochi presenti
in Unix, preferendo piuttosto fornire un elenco di diversi
tipi di giochi potenzialmente graditi agli utenti."

 La licenza GNU per le librerie 

"La libreria C del sistema GNU utilizza un tipo speciale
di permesso d'autore, la "Licenza
Pubblica GNU per le Librerie"([footnote] Nota dei Traduttori: Nel 1999 la FSF ha cambiato
nome alla licenza LGPL che ora si chiama "Lesser
GPL", GPL attenuata, per non suggerire che si tratti
della forma di licenza preferenziale per le librerie. ) , che permette l'uso della libreria da parte di software
proprietario. Perch quest'eccezione?

Non si tratta di questioni di principio: non c' nessun principio
che dica che i prodotti software proprietari abbiano il
diritto di includere il nostro codice (perch contribuire
a un progetto fondato sul rifiuto di condividere con noi?).
L'uso della licenza LGPL per la libreria C, o per qualsiasi
altra libreria,  una questione di strategia.

La libreria C svolge una funzione generica: ogni sistema
operativo proprietario e ogni compilatore includono una
libreria C. Di conseguenza, rendere disponibile la nostra
libreria C solo per i programmi liberi non avrebbe dato
nessun vantaggio a tali programmi liberi, avrebbe solo disincentivato
l'uso della nostra libreria.([fig] ([fig] GNU's not Unix) 

C' un'eccezione a questa situazione: sul sistema GNU (termine
che include GNU/Linux) l'unica libreria C disponibile 
quella GNU. Quindi i termini di distribuzione della nostra
libreria C determinano se sia possibile o meno compilare
un programma proprietario per il sistema GNU. Non ci sono
ragioni etiche per permettere l'uso di applicazioni proprietarie
sul sistema GNU, ma strategicamente sembra che impedirne
l'uso servirebbe pi a scoraggiare l'uso del sistema GNU
che non a incoraggiare lo sviluppo di applicazioni libere.

Ecco perch l'uso della licenza LGPL  una buona scelta strategica
per la libreria C, mentre per le altre librerie la strategia
va valutata caso per caso. Quando una libreria svolge una
funzione particolare che pu aiutare a scrivere certi tipi
di programmi, distribuirla secondo la GPL, quindi limitandone
l'uso ai soli programmi liberi,  un modo per aiutare gli
altri autori di software libero, dando loro un vantaggio
nei confronti del software proprietario.

Prendiamo come esempio GNU-Readline, una libreria scritta
per fornire a Bash la modificabilit della linea di comando:
Readline  distribuita secondo la normale licenza GPL, non
la LGPL. Ci probabilmente riduce l'uso di Readline, ma
questo non rappresenta una perdita per noi; d'altra parte
almeno una applicazione utile  stata resa software libero
proprio al fine di usare Readline, e questo  un guadagno
tangibile per la comunit.

Chi sviluppa software proprietario ha vantaggi economici,
gli autori di programmi liberi hanno bisogno di avvantaggiarsi
a vicenda. Spero che un giorno possiamo avere una grande
raccolta di librerie coperte dalla licenza GPL senza che
esista una raccolta equivalente per chi scrive software
proprietario. Tale libreria fornirebbe utili moduli da usare
come i mattoni per costruire nuovi programmi liberi, e costituendo
un sostanziale vantaggio per la scrittura di ulteriori programmi
liberi."

 Togliersi il prurito? 

"Eric Raymond  afferma che ogni
buon programma nasce dall'iniziativa di un programmatore
che si vuole togliere un suo personale prurito.  probabile
che talvolta succeda cos, ma molte parti essenziali del
software GNU sono state sviluppate al fine di completare
un sistema operativo libero. Derivano quindi da una idea
e da un progetto, non da una necessit contingente.

Ad esempio, abbiamo sviluppato la libreria C di GNU perch
un sistema di tipo Unix ha bisogno di una libreria C, la
Bourne-Again Shell (bash) perch un sistema di tipo Unix
ha bisogno di una shell, e GNU tar
perch un sistema di tipo Unix ha bisogno di un programma
tar ([footnote] Ndr: "tar" come programma di archiviazione.) . Lo stesso vale per i miei programmi: il compilatore GNU,
GNU Emacs, GDB, GNU Make.

Alcuni programmi GNU sono stati sviluppati per fronteggiare
specifiche minacce alla nostra libert: ecco perch abbiamo
sviluppato gzip come sostituto per il programma Compress,
che la comunit aveva perduto a causa dei brevetti sull'algoritmo
LZW. Abbiamo trovato persone che sviluppassero LessTif,
e pi recentemente abbiamo dato vita ai progetti GNOME
e Harmony per affrontare i problemi causati da alcune librerie
proprietarie (come descritto pi avanti).

Stiamo sviluppando la GNU Privacy Guard per sostituire i
diffusi programmi di crittografia non liberi, perch gli
utenti non siano costretti a scegliere tra riservatezza
e libert.

Naturalmente, i redattori di questi programmi sono coinvolti
nel loro lavoro, e varie persone vi hanno aggiunto diverse
funzionalit secondo le loro personali necessit e i loro
interessi. Tuttavia non  questa la ragione dell'esistenza
di tali programmi."

 Sviluppi inattesi 

"All'inizio del progetto GNU pensavo che avremmo sviluppato
l'intero sistema GNU e poi lo avremmo reso disponibile tutto
insieme, ma le cose non andarono cos.

Poich i componenti del sistema GNU sono stati implementati
su un sistema Unix, ognuno di essi poteva girare su sistemi
Unix molto prima che esistesse un sistema GNU completo.
Alcuni di questi programmi divennero diffusi e gli utenti
iniziarono a estenderli e a renderli utilizzabili su nuovi
sistemi: sulle varie versioni di Unix, incompatibili tra
loro, e talvolta anche su altri sistemi.

Questo processo rese tali programmi molto pi potenti e attir
finanziamenti e collaboratori al progetto GNU; tuttavia
probabilmente ritard di alcuni anni la realizzazione di
un sistema minimo funzionante, perch il tempo degli autori
GNU veniva impiegato a curare la compatibilit di questi
programmi con altri sistemi e ad aggiungere nuove funzionalit
ai componenti esistenti, piuttosto che a proseguire nella
scrittura di nuovi componenti."

 GNU-Hurd 

"Nel 1990 il sistema GNU era quasi completo, l'unica parte
significativa ancora mancante era il kernel. Avevamo deciso
di implementare il nostro kernel come un gruppo di processi
server che girassero sul sistema Mach. Mach  un microkernel
sviluppato alla Carnegie Mellon University e successivamente
all'Universit dello Utah; GNU Hurd
  un gruppo di server (o "herd
of gnus": mandria di gnu) che gira su Mach svolgendo
le funzioni del kernel Unix. L'inizio dello sviluppo fu
ritardato nell'attesa che Mach fosse reso disponibile come
software libero, come era stato promesso.

Una ragione di questa scelta progettuale fu di evitare quella
che sembrava la parte pi complessa del lavoro: effettuare
il debugging del kernel senza un debugger a livello sorgente.
Questo lavoro era gi stato fatto, appunto in Mach, e avevamo
previsto di effettuare il debugging dei server Hurd come
programmi utente, con GDB. Ma questa fase si rivel molto
lunga, e il debugging dei server multi-thread che si scambiano
messaggi si  rivelato estremamente complesso. Per rendere
Hurd robusto furono cos necessari molti anni."

 Alix 

"Originariamente il kernel GNU non avrebbe dovuto chiamarsi
Hurd; il suo nome originale era Alix,
come la donna di cui ero innamorato in quel periodo. Alix,
che era amministratrice di sistemi Unix, aveva sottolineato
come il suo nome corrispondesse a un comune schema usato
per battezzare le versioni del sistema Unix: scherzosamente
diceva ai suoi amici: "qualcuno dovrebbe
chiamare un kernel come me". Io
non dissi nulla ma decisi di farle una sorpresa scrivendo
un kernel chiamato Alix.

Le cose non andarono cos. Michael Bushnell (ora Thomas),
principale autore del kernel, prefer il nome Hurd, e chiam
Alix una parte del kernel, quella che serviva a intercettare
le chiamate di sistema e a gestirle inviando messaggi ai
server che compongono HURD.

Infine io e Alix ci lasciammo e lei cambi nome; contemporaneamente
la struttura di Hurd veniva cambiata in modo che la libreria
C mandasse messaggi direttamente ai server, e cos il componente
Alix scomparve dal progetto. Prima che questo accadesse,
per, un amico di Alix si accorse della presenza del suo
nome nel codice sorgente di Hurd e glielo disse. Cos il
nome raggiunse il suo scopo."

 Linux e GNU/Linux 

"GNU Hurd non  pronto per un uso non sperimentale, ma per
fortuna  disponibile un altro kernel: nel 1991 Linus Torvalds
svilupp un Kernel compatibile con Unix e lo chiam Linux.
Attorno al 1992, la combinazione di Linux con il sistema
GNU ancora incompleto produsse un sistema operativo libero
completo (naturalmente combinarli fu un notevole lavoro
di per s).  grazie a Linux che oggi possiamo utilizzare
una versione del sistema GNU.

Chiamiamo GNU/Linux questa versione del sistema, per indicare
la sua composizione come una combinazione del sistema GNU
col kernel Linux."

 Le sfide che ci aspettano 

"Abbiamo dimostrato la nostra capacit di sviluppare un'ampia
gamma di software libero, ma questo non significa che siamo
invincibili e inarrestabili. Diverse sfide rendono incerto
il futuro del software libero, e affrontarle richieder
perseveranza e sforzi costanti, talvolta per anni. Sar
necessaria quella determinazione che le persone sanno dimostrare
quando danno valore alla propria libert e non permettono
a nessuno di sottrargliela. Le quattro sezioni seguenti
parlano di queste sfide."

 1. Hardware segreto 

"Sempre pi spesso, i costruttori di hardware tendono a mantenere
segrete le specifiche delle loro apparecchiature; questo
rende difficile la scrittura di driver liberi che permettano
a Linux e XFree86  di
supportare nuove periferiche. Anche se oggi abbiamo sistemi
completamente liberi, potremmo non averli domani se non
saremo in grado di supportare i calcolatori di domani.

Esistono due modi per affrontare il problema. Un programmatore
pu ricostruire le specifiche dell'hardware usando tecniche
di reverse engineering. Oppure si pu scegliere hardware
supportato dai programmi liberi: man mano che il nostro
numero aumenta, la segretezza delle specifiche diventer
una pratica controproducente.

Il reverse engineering  difficile: avremo programmatori
sufficientemente determinati da dedicarvisi? S, se avremo
costruito una forte consapevolezza che avere programmi liberi
sia una questione di principio e che i driver non liberi
non sono accettabili. E succeder che molti di noi accettino
di spendere un po' di pi o perdere un po' pi di tempo
per poter usare driver liberi? S, se il desiderio di libert
e la determinazione a ottenerla saranno diffusi."

 2. Librerie non libere 

"Una libreria non libera che giri su sistemi operativi liberi
funziona come una trappola per i creatori di programmi liberi.
Le funzionalit attraenti della libreria fungono da esca;
chi usa la libreria cade nella trappola, perch il programma
che crea  inutile come parte di un sistema operativo libero
(a rigore, il programma potrebbe esservi incluso, ma non
funzionerebbe, visto che manca la libreria). Peggio ancora,
se un programma che usa la libreria proprietaria diventa
diffuso, pu attirare altri ignari programmatori nella trappola.

Il problema si concretizz per la prima volta con la libreria
Motif, negli anni '80. Sebbene non ci fossero ancora sistemi
operativi liberi, i problemi che Motif avrebbe causato loro
erano gi chiari. Il progetto GNU reag in due modi: interessandosi
presso diversi progetti di software libero perch supportassero
gli strumenti grafici X liberi in aggiunta a Motif, e cercando
qualcuno che scrivesse un sostituto libero di Motif.
Il lavoro richiese molti anni: solo nel 1997 LessTif, sviluppato
dagli Hungry Programmers, divenne abbastanza potente da
supportare la maggior parte delle applicazioni Motif. Tra
il 1996 e il 1998 un'altra libreria non libera di strumenti
grafici, chiamata Qt, veniva usata in una significativa
raccolta di software libero: l'ambiente grafico KDE.

I sistemi liberi GNU/Linux non potevano usare KDE,
perch non potevamo usare la libreria; tuttavia, alcuni
distributori commerciali di sistemi GNU/Linux, non scrupolosi
nell'attenersi solo ai programmi liberi, aggiunsero KDE
ai loro sistemi, ottenendo cos sistemi che offrivano pi
funzionalit, ma meno libert. Il gruppo che sviluppava
KDE incoraggiava esplicitamente altri programmatori a usare
Qt, e milioni di nuovi utenti Linux non sospettavano minimamente
che questo potesse costituire un problema. La situazione
si faceva pericolosa. La comunit del software libero affront
il problema in due modi: GNOME e Harmony.

GNOME (GNU Network Object Model Environment, modello di ambiente
per oggetti di rete)  il progetto GNU per l'ambiente grafico
(desktop). Intrapreso nel 1997 da Miguel de Icaza e sviluppato
con il supporto di Red Hat Software, GNOME si ripromise
di fornire funzionalit grafiche simili a quelle di KDE,
ma usando esclusivamente software libero. GNOME offre anche
dei vantaggi tecnici, come il supporto per svariati linguaggi
di programmazione, non solo il C++. Ma il suo scopo principale
era la libert: non richiedere l'uso di alcun programma
che non fosse libero.

Harmony  una libreria compatibile con Qt, progettata per
rendere possibile l'uso del software KDE senza dover usare
Qt. Nel novembre 1998 gli autori di Qt annunciarono un cambiamento
di licenza che, una volta operativo, avrebbe reso Qt software
libero. Non c' modo di esserne certi, ma credo che questo
fu in parte dovuto alla decisa risposta della comunit al
problema posto da Qt quando non era libero (la nuova licenza
 scomoda e iniqua, per cui rimane comunque preferibile
evitare l'uso di Qt).

Come risponderemo alla prossima allettante libreria non libera?
Riuscir la comunit in toto a comprendere l'importanza
di evitare la trappola? Oppure molti di noi preferiranno
la convenienza alla libert, creando cos ancora un grave
problema? Il nostro futuro dipende dalla nostra filosofia."

 3. Brevetti sul software 

"Il maggior pericolo a cui ci troviamo di fronte  quello
dei brevetti sul software, che possono rendere inaccessibili
al software libero algoritmi e funzionalit per un tempo
che pu estendersi fino a vent'anni. I brevetti sugli algoritmi
di compressione LZW furono depositati nel 1983, e ancor
oggi non possiamo distribuire programmi liberi che producano
immagini GIF compresse. Nel 1998 un programma libero per
produrre audio compresso MP3 venne ritirato sotto minaccia
di una causa per violazione di brevetto. Ci sono modi per
affrontare la questione brevetti: possiamo cercare prove
che un brevetto non sia valido oppure possiamo cercare modi
alternativi per ottenere lo stesso risultato. Ognuna di
queste tecniche, per, funziona solo in certe circostanze;
quando entrambe falliscono un brevetto pu obbligare tutto
il software libero a rinunciare a qualche funzionalit che
gli utenti desiderano. Cosa dobbiamo fare quando ci accade?

Chi fra noi apprezza il software libero per il valore della
libert rimarr comunque dalla parte dei programmi liberi;
saremo in grado di svolgere il nostro lavoro senza le funzionalit
coperte da brevetto. Ma coloro che apprezzano il software
libero perch si aspettano che sia tecnicamente superiore
probabilmente grideranno al fallimento quando un brevetto
ne impedisce lo sviluppo. Perci, nonostante sia utile parlare
dell'efficacia pratica del modello di sviluppo del tipo
bazaar, e dell'affidabilit e della potenza di un dato programma
libero, non ci dobbiamo fermare qui; dobbiamo parlare di
libert e di principi."

 4. Documentazione libera 

"La pi grande carenza nei nostri sistemi operativi liberi
non  nel software, quanto nella carenza di buoni manuali
liberi da includere nei nostri sistemi. La documentazione
 una parte essenziale di qualunque pacchetto software;
quando un importante pacchetto software libero non viene
accompagnato da un buon manuale libero si tratta di una
grossa lacuna. E di queste lacune attualmente ne abbiamo
molte.

La documentazione libera, come il software libero,  una
questione di libert, non di prezzo. Il criterio per definire
libero un manuale  fondamentalmente lo stesso che per definire
libero un programma: si tratta di offrire certe libert
a tutti gli utenti. Deve essere permessa la ridistribuzione
(compresa la vendita commerciale), sia in formato elettronico
che cartaceo, in modo che il manuale possa accompagnare
ogni copia del programma.

Autorizzare la modifica  anch'esso un aspetto cruciale;
in generale, non credo sia essenziale permettere alle persone
di modificare articoli e libri di qualsiasi tipo. Per esempio,
non credo che voi o io dobbiamo sentirci in dovere di autorizzare
la modifica di articoli come questo, articoli che descrivono
le nostre azioni e il nostro punto di vista.

Ma c' una ragione particolare per cui la libert di modifica
 cruciale per la documentazione dei programmi liberi. Quando
qualcuno esercita il proprio diritto di modificare il programma,
aumentandone o alterandone le funzionalit, se  coscienzioso
modificher anche il manuale, in modo da poter fornire una
documentazione utile e accurata insieme al programma modificato.
Un manuale che non permetta ai programmatori di essere coscienziosi
e completare il loro lavoro non soddisfa i bisogni della
nostra comunit.

Alcuni limiti sulla modificabilit non pongono alcun problema;
per esempio, le richieste di conservare la nota di copyright
dell'autore originale, i termini di distribuzione e la lista
degli autori vanno bene. Non ci sono problemi nemmeno nel
richiedere che le versioni modificate dichiarino esplicitamente
di essere tali, cos pure che intere sezioni non possano
essere rimosse o modificate, finch queste sezioni vertono
su questioni non tecniche. Restrizioni di questo tipo non
creano problemi perch non impediscono al programmatore
coscienzioso di adattare il manuale perch rispecchi il
programma modificato. In altre parole, non impediscono alla
comunit del software libero di beneficiare appieno del
manuale.

D'altro canto, deve essere possibile modificare tutto il
contenuto tecnico del manuale e poter distribuire il risultato
in tutti i formati usuali, attraverso tutti i normali canali
di distribuzione; diversamente, le restrizioni creerebbero
un ostacolo per la comunit, il manuale non sarebbe libero
e avremmo bisogno di un altro manuale.

Gli sviluppatori di software libero avranno la consapevolezza
e la determinazione necessarie a produrre un'intera gamma
di manuali liberi? Ancora una volta, il nostro futuro dipende
dalla nostra filosofia."

 Dobbiamo parlare di libert 

"Stime recenti valutano in dieci milioni il numero di utenti
di sistemi quali Debian GNU/Linux e Red Hat Linux. Il software
libero ha creato tali vantaggi pratici che gli utenti stanno
approdando a esso per pure ragioni pratiche.

Gli effetti positivi di questa situazione sono evidenti:
maggior interesse a sviluppare software libero, pi clienti
per le imprese di software libero e una migliore capacit
di incoraggiare le aziende a sviluppare software commerciale
libero invece che prodotti software proprietari.

L'interesse per il software, per, sta crescendo pi in fretta
della coscienza della filosofia su cui  basato, e questa
disparit causa problemi. La nostra capacit di fronteggiare
le sfide e le minacce descritte in precedenza dipende dalla
determinazione nell'essere impegnati per la libert. Per
essere sicuri che la nostra comunit abbia tale determinazione,
dobbiamo diffondere l'idea presso i nuovi utenti man mano
che entrano a far parte della comunit.

Ma in questo stiamo fallendo: gli sforzi per attrarre nuovi
utenti nella comunit sono di gran lunga maggiori degli
sforzi per l'educazione civica della comunit stessa. Dobbiamo
fare entrambe le cose, e dobbiamo mantenere un equilibrio
fra i due impegni."

 Open Source

"Parlare di libert ai nuovi utenti  diventato pi difficile
dal 1998, quando una parte della comunit decise di smettere
di usare il termine free software e usare al suo posto open
source. Alcune delle persone che suggerirono questo termine
intendevano evitare che si confondesse free con gratis,
un valido obiettivo. D'altra parte, altre persone intendevano
mettere da parte lo spirito del principio che aveva dato
la spinta al movimento del software libero e al progetto
GNU, puntando invece ad attrarre i dirigenti e gli utenti
commerciali, molti dei quali afferiscono a una ideologia
che pone il profitto al di sopra della libert, della comunit,
dei principi. Perci la retorica di open source si focalizza
sulla possibilit di creare software di buona qualit e
potente ma evita deliberatamente le idee di libert, comunit,
principio. Le riviste che si chiamano Linux... sono un chiaro
esempio di ci: sono piene di pubblicit di software proprietario
che gira sotto GNU/Linux; quando ci sar il prossimo Motif
o Qt, queste riviste avvertiranno i programmatori di starne
lontano o accetteranno la sua pubblicit? L'appoggio delle
aziende pu contribuire alla comunit in molti modi; a parit
di tutto il resto  una cosa utile. Ma ottenere questo appoggio
parlando ancor meno di libert e principi pu essere disastroso;
rende ancora peggiore lo sbilanciamento descritto tra diffusione
ed educazione civica. "Software libero"
(free software) e sorgente aperto (open source) descrivono
pi o meno la stessa categoria di software, ma dicono cose
differenti sul software e sui valori. Il progetto GNU continua
a usare il termine "software libero"
per esprimere l'idea che la libert sia importante, non
solo la tecnologia."

 Prova! 

"La filosofia di Yoda ("Non c' provare")
suona bene, ma per me non funziona. Ho fatto la maggior
parte del mio lavoro angustiato dal timore di non essere
in grado di svolgere il mio compito e nel dubbio, se fossi
riuscito, che non fosse sufficiente per raggiungere l'obiettivo.
Ma ci ho provato in ogni caso perch nessuno tranne me si
poneva tra il nemico e la mia citt. Sorprendendo me stesso,
qualche volta sono riuscito.

A volte ho fallito, alcune delle mie citt sono cadute; poi
ho trovato un'altra citt minacciata e mi sono preparato
a un'altra battaglia. Con l'andar del tempo ho imparato
a cercare le possibili minacce e a mettermi tra loro e la
mia citt, facendo appello ad altri hacker perch venissero
e si unissero a me.

Oggigiorno spesso non sono da solo.  un sollievo e una gioia
quando vedo un reggimento di hacker che scavano trincee
per difendere il confine e quando mi rendo conto che questa
citt pu sopravvivere; per ora. Ma i pericoli diventano
pi grandi ogni anno, e ora Microsoft ha esplicitamente
preso di mira la nostra comunit. Non possiamo dare per
scontato il futuro della libert; non diamolo per scontato!
Se volete mantenere la vostra libert dovete essere pronti
a difenderla."

4.2 Open Sources Definition

di Bruce Perens 
 
 "Il tipico utente di computer possiede una discreta quantit
di software che ha comprato nel tempo e che ormai non adopera
pi. Magari ha aggiornato il computer, o ha cambiato marca,
e i vecchi programmi hanno smesso di funzionare. Magari
il software  diventato obsoleto. O semplicemente il programma
non lo soddisfa. Forse ha comprato due o pi computer e
non vuole pagare per una seconda copia del software. Quale
che sia la ragione, il software per cui ha pagato anni fa
non  pi adeguato.

Tutto questo  inevitabile? Non sarebbe bello avere diritto
a un aggiornamento gratuito ogni volta che il software lo
richiede? Se, passando da un Mac a un PC, si potesse cambiare
la versione del software gratis? Se, quando il software
non funziona o non  abbastanza potente, si potesse migliorarlo
o perfino ripararlo da soli? Se il software continuasse
a essere supportato anche quando l'azienda produttrice abbia
cessato l'attivit? Non sarebbe bello usare il software
sulla workstation al lavoro, sul computer di casa e sul
portatile, anzich su un solo computer?  probabile che,
in quel caso, si starebbe ancora usando il software pagato
anni prima. Questi sono alcuni dei diritti che l'Open Source
riconosce. La Open Source Definition  una carta dei diritti
dell'utente di computer. Definisce certi diritti che una
licenza software deve garantire per poter essere certificata
come Open Source. I produttori che non rendono Open Source
il loro programmi trovano difficile competere con chi lo
fa, dal momento che gli utenti imparano ad apprezzare quei
diritti che avrebbero dovuto sempre essere loro. Programmi
come il sistema operativo Linux e il browser Web Netscape
sono diventati popolarissimi, scalzando altro software sottoposto
a licenze pi restrittive. Aziende che usano software Open
Source godono il vantaggio del suo rapidissimo sviluppo,
spesso a opera cooperativa di numerose aziende, e in gran
parte fornito da soggetti individuali che operano migliorie
sulla base di proprie necessit.

I volontari che hanno reso possibili prodotti come Linux
ci sono, e le aziende possono cooperare, solo grazie ai
diritti che vengono con l'Open Source. Il programmatore
medio si sentirebbe stupido nel riversare tanto lavoro in
un programma per vedere poi le sue migliorie vendute dal
proprietario senza che lui ne riceva alcun ritorno. Quegli
stessi programmatori contribuiscono volentieri all'Open
Source perch esso assicura loro questi diritti:

* il diritto di fare copie del programma e di distribuirle; 

* il diritto d'accesso al codice sorgente del software, condizione
  necessaria per poterlo modificare; 

* il diritto di apportare migliorie al programma. 

Questi diritti sono importanti per coloro che collaborano
a un software perch li mantengono tutti al medesimo livello.
Chiunque lo voglia  libero di vendere un programma Open
Source, cos i prezzi rimarranno bassi e sar rapido lo
sviluppo per raggiungere nuovi mercati. Chiunque investa
il suo tempo a costruire conoscenza in un programma Open
Source lo pu supportare, e questo permette agli utenti
la possibilit di fornire a loro volta supporto, o l'economia
dovuta a un gran numero di fornitori di supporto concorrenti.
Qualunque programmatore pu adattare un programma Open Source
a misura di mercati specifici per raggiungere clienti nuovi.
Chi lo fa non  costretto a pagare diritti o concessioni
di licenza. La ragione per il successo di una strategia
che pu suonare alquanto comunista proprio nel momento in
cui il fallimento del comunismo stesso  visibile ovunque,
 nel fatto che l'economia dell'informazione  sostanzialmente
diversa da quella degli altri prodotti. I costi della copia
di un'informazione come un programma software  infinitesimo.
L'elettricit non costa quasi nulla, l'uso dell'attrezzatura
poco di pi.  come, per fare un paragone, se si duplicasse
una pagnotta usando un solo etto di farina."

 La storia 

"Il concetto di free software non  nuovo. Quando le universit
cominciarono ad adottare i computer, essi erano strumenti
per la ricerca. Il software veniva scambiato liberamente
e i programmatori venivano pagati per l'atto della programmazione,
non per i programmi in s. Solo pi tardi, quando il mondo
degli affari e del commercio adott i computer, i programmatori
cominciarono a mantenersi limitando i diritti d'uso del
loro software e facendosi pagare per ogni copia. Il free
software come idea politica  stato reso popolare da Richard
Stallman dal 1984, allorch form la Free Software Foundation
e il progetto GNU a essa collegato. La premessa di Stallman
 che la gente dovrebbe avere pi libert e dovrebbe imparare
ad apprezzarla. Egli progett un insieme di diritti che
sentiva necessari a ogni utente e li codific nella GNU
Public License o GPL. Stallman battezz scherzosamente la
sua licenza copyleft in quanto lasciava intatto il diritto
alla copia. Stallman stesso svilupp lavori fondamentali
di free software quali il compilatore C GNU e GNU Emacs,
un editor di testo che alcuni hanno trovato cos seducente
da concepirne quasi un culto. Il suo lavoro ispir molti
altri a fornire free software sotto la GPL. Per quanto non
promossa con il medesimo fervore libertario, la Open Source
Definition include molte delle idee di Stallman, e pu ben
considerarsi un derivato della sua opera.

La Open Source Definition cominci la sua vita come un documento
di linea di condotta della distribuzione Debian GNU/Linux.
Debian, uno dei primi sistemi Linux, tuttora popolare,
fu costruito interamente con free software. Tuttavia, dal
momento che c'erano altre licenze oltre al copyleft che
comportavano la gratuit, Debian ebbe qualche problema nel
definire che cosa fosse gratis, e i produttori non resero
mai chiara la loro politica di free software al resto del
mondo. All'epoca, trovandomi a capo del progetto Debian,
affrontai questi problemi proponendo un Contratto Sociale
Debian e la Guida Debian del Free Software, nel luglio del
1997. Molti sviluppatori Debian inviarono critiche e miglioramenti
che io incorporai nei documenti. Il Contratto Sociale documentava
l'intenzione di Debian di costituire il proprio sistema
interamente con free software, e la Guida rendeva facilmente
possibile la classificazione del software come free software
o meno, confrontando la licenza software con la guida stessa.

La Guida Debian fu oggetto di molte lodi nella comunit del
free software, specialmente fra gli sviluppatori Linux,
che a quel tempo stavano preparando la loro propria rivoluzione
software sviluppando il primo vero sistema operativo gratuito.
Quando Netscape decise di rendere libero il suo browser
Web, contatt Eric Raymond. Raymond, la Margaret Mead del
free software,  autore di numerosi articoli di taglio antropologico
che illustrano il fenomeno del free software e la cultura
che vi  cresciuta intorno: scritti che furono i primi di
un genere e che hanno messo sotto la luce dei riflettori
questo fenomeno fino ad allora oscuro. La dirigenza di Netscape
rimase suggestionata in particolare dal saggio di Raymond
La cattedrale e il bazaar, la cronaca di uno sviluppo free
software coronato da successo con volontari non pagati,
e gli chiese una consulenza, sotto patto di riservatezza,
mentre sviluppavano una licenza per il loro free software.
Raymond insist che la licenza di Netscape dovesse adeguarsi
alla guida Debian per poter essere presa sul serio come
free software. Raymond e io ci eravamo incontrati qualche
volta all'Hacker Conference, una raduno su invito di programmatori
creativi e non convenzionali. Avevamo corrisposto via email
su vari argomenti. Mi contatt nel febbraio del 1997 con
l'idea per l'Open Source. Raymond temeva che la mentalit
conservatrice dell'ambiente degli affari venisse scoraggiata
dal grado di libert di Stallman, che era al contrario popolarissimo
fra i programmatori di mentalit pi liberale. Era impressione
di Raymond che ci stesse sclerotizzando lo sviluppo di
Linux nel mondo business laddove esso fioriva invece nell'ambiente
della ricerca. Raymond ebbe incontri con uomini d'affari
nell'industria Linux che stava muovendo solo allora i primi
passi; insieme, essi concepirono un programma di marketing
del free software indirizzato ai colletti bianchi. Furono
coinvolti Larry Augustin  di
VA Research e Sam Ockman
(che abbandon pi tardi VA per formare Penguin Computing),
nonch altri non di mia conoscenza.

Alcuni mesi prima dell'Open Source, avevo elaborato l'idea
dell'Open Hardware, concetto simile rivolto agli strumenti
hardware e alle loro interfacce anzich ai programmi software.
A tutt'oggi l'Open Hardware non ha avuto il successo dell'Open
Source, ma il progetto  ancora attivo; se ne pu sapere
di pi a http://www.openhardware.org.

Secondo Raymond, la Guida Debian era il documento pi adatto
a definire l'Open Source, ma serviva una denominazione pi
generale e la rimozione dei riferimenti specifici a Debian.
Modificai la Guida Debian fino a ricavarne la Open Source
Definition. Avevo formato per Debian un ente chiamato Software
in the Public Interest, e mi offrii di registrare un marchio
per Open Source in modo da poter associare il suo uso alla
definizione. Raymond acconsent, e io registrai una certificazione
(una forma speciale di marchio che potesse applicarsi secondo
i termini ai prodotti altrui). Circa un mese dopo la registrazione
del marchio, apparve chiaro che Software in the Public Interest
avrebbe potuto non essere la dimora migliore per il marchio
Open Source, e trasferii dunque la propriet del marchio
a Raymond. Raymond e io abbiamo da allora formato la Open
Source Initiative, un'organizzazione esclusivamente destinata
alla gestione della campagna Open Source e della sua certificazione
di marchio. Mentre scrivo, l'iniziativa Open Source  retta
da un comitato di sei componenti scelti fra fornitori di
free software di chiara fama, e sta cercando di espandere
il suo comitato fino a una decina di persone.

Al momento del suo concepimento, la campagna Open Source
fu oggetto di molte critiche perfino da parte del contingente
Linux che gi aveva approvato il concetto di free software.
Molti rilevarono che il termine Open Source era gi in uso
nel ramo della raccolta di dati per le campagne politiche.
Altri pensarono che il termine Open fosse gi usurato. Per
altri ancora era preferibile il nome Free Software, gi
consolidato. Io opinai che l'abuso del termine Open sarebbe
stato sempre meglio dell'ambiguit di free nella lingua
inglese, in cui sta a significare tanto libero quanto gratuito,
la seconda accezione essendo di gran lunga la pi comune
nel mondo del commercio di computer e di software. Pi tardi,
Richard Stallman  obiett
alla mancanza di enfasi sulla libert che secondo lui la
campagna dimostrava, e al fatto che, mentre l'Open Source
acquistava popolarit, il suo ruolo nella genesi del free
software, e quello della sua Free Software Foundation, venivano
ignorati: si lament di essere stato cassato dalla storia.
Peggior la situazione la tendenza degli operatori del settore
di contrapporre Raymond a Stallman, quasi essi proponessero
filosofie concorrenti anzich, sia pur con metodi diversi,
propagandare lo stesso concetto. Io stesso contribuii probabilmente
a esacerbare gli animi mettendo Stallman e Raymond l'uno
contro l'altro in dibattiti pubblici alla Linux Expo e alla
Open Source Expo. Caratterizzare i due come avversari divent
un'attivit tanto consueta che una discussione via email,
non destinata alla pubblicazione, apparve sul periodico
on-line Salon. A quel punto, chiesi a Raymond di moderare
i toni di un dialogo in cui, per la verit, egli non aveva
mai inteso entrare.

Quando la Open Source Definition fu scritta, esisteva gi
un gran numero di prodotti che potevano rientrare nella
categoria. Il problema erano quei programmi che non vi rientravano,
e che pure gli utenti trovavano irresistibili."

 KDE, Qt e Troll Tech 

"Il caso di KDE, Qt e Troll Tech
  pertinente a questo saggio perch il gruppo KDE e Troll
Tech cercarono di porre un prodotto non-Open Source entro
l'infrastruttura di Linux, incontrando una resistenza inattesa.
Le grida di pubblico scandalo e la minaccia che il loro
prodotto venisse rimpiazzato da un altro, completamente
Open Source, convinse alla fine Troll Tech a convertirsi
a una licenza pienamente Open Source.  un segno interessante
dell'accoglienza entusiastica riservata dalla comunit alla
Open Source Definition il fatto che Troll dovette adeguare
la propria licenza, pena l'insuccesso del suo prodotto.
KDE fu il primo esperimento di un desktop grafico gratuito
per Linux. Le applicazioni KDE erano esse stesse sotto GPL,
ma dipendevano da una libreria grafica proprietaria nota
come Qt, di Troll Tech. I termini della licenza di Qt ne
proibivano la modifica o l'uso con qualunque display software
che non fosse il senescente X Window System. Ogni uso diverso
richiedeva allo sviluppatore una licenza del costo di 1500
dollari. Troll Tech forn versioni di Qt
 per Windows di Microsoft e per Macintosh,
e questa fu la sua principale fonte d'entrate. La licenza
pseudo-gratuita per i sistemi X intendeva indirizzare i
contributi degli sviluppatori Linux verso demo, esempi e
accessori per i loro costosi prodotti Windows e Mac.

Per quanto i problemi della licenza di Qt apparissero evidenti,
la prospettiva di un desktop grafico per Linux era cos
attraente che molti utenti furono disposti a chiudere un
occhio sulla sua natura non-Open Source. I promotori di
Open Source trovarono che KDE fosse in difetto perch avevano
l'impressione che gli sviluppatori stessero cercando di
confondere la definizione di free software allo scopo di
includervi elementi solo parzialmente gratuiti, come Qt.
Gli sviluppatori KDE replicarono che i loro programmi erano
Open Source, anche se non esistevano versioni eseguibili
di quei programmi che non richiedessero una libreria non-Open
Source. Io e altri sostenemmo che le applicazioni KDE non
erano che frammenti Open Source di programmi non-Open Source,
e che una versione Open Source di Qt sarebbe stata necessaria
prima che ci si potesse riferire a KDE come a un Open Source.

Gli sviluppatori KDE tentarono di risolvere parzialmente
il problema della licenza di Qt negoziando con Troll Tech
un accordo (KDE Free Qt Foundation) in cui Troll e KDE avrebbero
congiuntamente controllato i rilasci delle versioni gratuite
di Qt, e Troll Tech avrebbe rilasciato Qt sotto una licenza
conforme a Open Source nel caso che l'azienda venisse acquisita
o cessasse l'attivit.

Un altro gruppo diede inizio al progetto GNOME,
un concorrente interamente Open Source di KDE che mirava
a fornire maggiori funzioni e sofisticazioni; un gruppo
separato avvi il progetto Harmony
 per produrre un clone di Qt completamente Open Source che
avrebbe supportato KDE. Mentre le dimostrazioni di GNOME
avvenivano fra il plauso e Harmony stava per diventare usabile,
Troll Tech cap che QT non avrebbe riscosso successo nel
mondo Linux se non avesse cambiato licenza. Troll Tech rilasci
dunque una licenza interamente Open Source per Qt, disinnescando
il conflitto ed eliminando i motivi alla base del progetto
Harmony. Il progetto GNOME continua tuttora, volto adesso
a un KDE migliore in termini di funzionalit e di raffinatezza
piuttosto che in termini di licenza.

Prima di rilasciare la sua nuova licenza Open Source, Troll
Tech me ne fece avere copia perch la verificassi, con la
preghiera che rimanesse riservata finch non fossero in
grado di annunciarla.

Nel mio entusiasmo di far pace con il gruppo KDE e in un
imbarazzante gesto di autoinganno, preannunciai con otto
ore di anticipo la licenza su una mailing list KDE. Quell'email,
per il mio rimorso, fu raccolta immediatamente da Slashdot
e da altre riviste online.

La nuova licenza Troll Tech  notevole perch approfitta
di una scappatoia nella Open Source Definition che permette
ai file patch di essere trattati diversamente dall'altro
software. Vorrei provvedere a chiudere questa scappatoia
in una revisione a venire della Open Source Definition,
ma il nuovo testo non dovrebbe tuttavia collocare Qt al
di fuori dell'Open Source.

Al momento in cui scrivo, i promotori di Open Source stanno
crescendo in misura esponenziale. I recenti contributi Open
Source di IBM e di Ericsson hanno fatto i titoli dei giornali.
Due distribuzioni Linux, Yggdrasil e Debian, stanno rilasciando
distribuzioni di sistemi Linux completi, ivi incluse molte
applicazioni che sono interamente Open Source; e molte altre,
fra cui Red Hat, ci sono assai vicine. Quando il sistema
GNOME sar completo, sar stato realizzato un sistema operativo
con desktop GUI Open Source in grado di competere con Microsoft
NT."

 Analisi della Open Source Definition 

"Questa sezione presenta nella sua interezza il testo della
Open Source Definition, corredata di commenti (in corsivo).
La versione canonica della Open Source Definition si trova
su:
  
http://www.opensource.org/osd.html


Alcuni pedanti hanno voluto trovare delle ambiguit di poco
conto nella Open Source Definition. Mi sono astenuto da
rivederla dal momento che ha poco pi d'un anno di vita
e vorrei che il pubblico la considerasse stabile. Il futuro
imporr qualche adeguamento lessicale, ma quasi nessuna
modifica allo scopo del documento."

 La Open Source Definition 

"Open Source non significa solo accesso al codice sorgente.
I termini di distribuzione di un programma Open Source devono
essere consoni ai criteri seguenti.

Si noti che la Open Source Definition non  propriamente
una licenza software.  una specifica di quanto  ammesso
in una licenza software perch vi si possa riferire come
a un'Open Source. La Open Source Definition non  intesa
per essere un documento di valore legale. L'inclusione della
Open Source Definition nelle licenze software, quale quella
proposta per il Progetto di Documentazione di Linux, sembra
suggerirmi la stesura di una versione pi rigorosa che sia
appropriata per quell'uso.

Ai fini dell'Open Source, devono applicarsi insieme tutti
i termini che seguono, in tutti i casi. Per esempio, devono
applicarsi alle versioni derivate di un programma cos come
al programma originale. Non  sufficiente applicarne alcune
e non altre, e non  sufficiente se i termini non vengono
applicati sistematicamente. Dopo aver dovuto affrontare
delle interpretazioni particolarmente semplici della Open
Source Definition, sono tentato di aggiungere: sto dicendo
a voi!

 1.Ridistribuzione libera 

La licenza non pu impedire ad alcuna parte in causa la vendita
o la cessione del software come componente di una distribuzione
di software aggregato che contenga programmi provenienti
da sorgenti diverse. La licenza non pu richiedere diritti
o il pagamento di altre concessioni per tale vendita. Questo
significa che potete fare tutte le copie che volete del
software e venderle o cederle, e non dovete pagare nessuno
per questo privilegio. L'espressione distribuzione di software
aggregato che contenga programmi provenienti da sorgenti
diverse era intesa a chiudere una scappatoia nella Licenza
Artistica - una licenza piuttosto malfatta, a mio parere
- escogitata in origine per il Perl. Oggi, quasi tutti i
programmi che usano la Licenza Artistica sono disponibili
anche sotto GPL. Quella clausola non  pi necessaria e
sar probabilmente tolta da una futura versione della Open
Source Definition.

 2. Codice sorgente 

Il programma deve includere il codice sorgente e deve consentire
la distribuzione tanto in codice sorgente che in forma compilata.
Laddove una qualunque forma del prodotto non sia distribuita
corredata del codice sorgente, devono essere disponibili
mezzi ben pubblicizzati per scaricare il codice sorgente,
senza costi addizionali, via Internet. Il codice sorgente
deve essere la forma preferenziale nella quale un programmatore
modifichi un programma. Codice deliberatamente offuscato
non  ammesso. Forme intermedie quali l'output di un preprocessore
o di un traduttore non sono ammesse. Il codice sorgente
 un preliminare necessario alla riparazione o alla modifica
di un programma. L'intento qui  che il codice sorgente
sia distribuito con l'opera iniziale e con tutte le opere
derivate.

 3. Opere derivate 

La licenza deve permettere modifiche e opere derivate e deve
consentire la loro distribuzione sotto i medesimi termini
della licenza del software originale. Il software serve
a poco se non se ne pu fare la manutenzione (riparazione
dei bug, porting su nuovi sistemi, migliorie) e la modifica
 indispensabile alla manutenzione. L'intento  qui di permettere
modifiche d'ogni sorta. Deve essere permessa la distribuzione
di un'opera modificata sotto gli stessi termini di licenza
dell'opera originale. Tuttavia, non  richiesto che ogni
produttore di un'opera derivata debba usare gli stessi termini
di licenza, ma solo che possa farlo qualora lo voglia. Diverse
licenze si esprimono diversamente in materia: la licenza
BSD vi permette di mantenere private le modifiche, la GPL
no. Alcuni autori di software ritengono che questa clausola
possa consentire a persone prive di scrupoli di modificare
il loro software in maniera che possa causare imbarazzo
all'autore originale. Quello che temono  che qualcuno possa
deliberatamente provocare un malfunzionamento del software
in modo che l'autore originale appaia un programmatore scadente.
Altri paventano un possibile uso criminale del software
tramite l'aggiunta di funzioni-cavallo di Troia o di tecnologie
illegali in alcuni Paesi, come la crittografia. Tutti questi
atti, tuttavia, sono coperti dal codice penale. Un comune
fraintendimento a proposito delle licenze  che esse debbano
specificare ogni cosa, per esempio questo software non va
usato per compiere delitti. Dovrebbe tuttavia essere chiaro
che nessuna licenza ha esistenza valida al di fuori del
corpo del diritto civile e penale. Considerare una licenza
come qualcosa separato dal corpo delle leggi applicabili
 tanto sciocco quanto considerare un documento in lingua
inglese separato dal vocabolario di quella lingua, un caso
in cui nessuna parola avrebbe un significato definito.

 4. Integrit del codice sorgente dell'autore 

La licenza pu proibire che il codice sorgente venga distribuito
in forma modificata solo se la licenza permette la distribuzione
di patch file con il codice sorgente allo scopo di modificare
il programma al momento della costruzione.Alcuni autori
temevano che altri potessero distribuire codice sorgente
con modifiche che sarebbero state percepite come opera dell'autore
originale e quindi avrebbero potuto gettare ombra su di
lui. Questa clausola d loro un modo di imporre una separazione
fra le modifiche e la loro opera, senza proibire le prime.
C' chi considera antiestetico che le modifiche debbano
venir distribuite in un file patch separato dal codice sorgente,
anche se distribuzioni Linux come Debian e Red Hat usano
questa procedura per tutte le modifiche apportate ai programmi
che distribuiscono. Esistono programmi per riversare automaticamente
le patch nel sorgente principale, e questi programmi si
possono eseguire automaticamente quando si scompatta un
pacchetto di sorgente. Questa clausola, dunque, dovrebbe
causare poca o nessuna difficolt. Si noti anche che questa
clausola dice che, nel caso di file patch, la modifica avviene
quando si fa il build del programma. Questa scappatoia 
impiegata nella Licenza Pubblica di Qt per prescrivere una
diversa, anche se meno restrittiva, licenza per i file patch,
in contraddizione con la sezione 3 della Open Source Definition.
C' una proposta per chiudere questa scappatoia nella definizione
e mantenere nello stesso tempo Qt entro i confini dell'Open
Source. La licenza deve permettere esplicitamente la distribuzione
di software costruito da codice sorgente modificato. La
licenza pu richiedere che le opere derivate vadano sotto
nome o numero di versione differenti da quelli del software
originale. Questo significa che Netscape, per esempio, pu
insistere per poter essere la sola a chiamare una versione
del programma Netscape Navigator (tm), mentre tutte le versioni
gratuite del programma debbano chiamarsi Mozilla
 o in altro modo.

 5. Nessuna discriminazione contro persone o gruppi 

La licenza non deve discriminare alcuna persona o gruppo
di persone. Una licenza fornita dai Rettori dell'Universit
della California a Berkeley proibiva l'uso di un programma
di progettazione elettronica da parte delle forze di polizia
del Sud Africa. Apprezzato come merita questo sentimento
in tempi di apartheid, va detto che esso non ha pi senso
oggi. Alcune persone si trovano ancora con software acquistato
sotto quella licenza, e le loro versioni derivate devono
portare la stessa restrizione. Le licenze Open Source non
devono contenere tale clausola, indipendentemente dalla
nobilt dell'intento.

 6. Nessuna discriminazione di settori 

La licenza non deve proibire ad alcuno l'uso del programma
in uno specifico campo o per un determinato proposito. Per
esempio, non pu impedire che il programma venga usato a
scopi commerciali o nella ricerca genetica. Il software
dev'essere impiegabile allo stesso modo in una clinica che
pratichi aborti e in un'organizzazione antiabortista. Queste
discussioni politiche sono di pertinenza del Congresso degli
Stati Uniti, non delle licenze del software. Alcuni trovano
questa mancanza di discernimento gravemente offensiva!

 7. Distribuzione della licenza 

I diritti relativi al programma devono applicarsi a tutti
coloro ai quali il programma sia ridistribuito, senza necessit
di esecuzione di una licenza aggiuntiva da parte di questi.
La licenza dev'essere automatica, senza la richiesta di
alcuna firma. Purtroppo, negli Stati Uniti non ci sono stati
validi precedenti giudiziari del potere della licenza senza
firma quando questa venga passata da una seconda a una terza
parte. Tuttavia, questo argomento considera la licenza come
facente parte della legge sul contratto, mentre qualcuno
obietta che dovrebbe essere considerata come legge di copyright,
campo in cui si danno pi precedenti per quel tipo di licenza.
Un buon precedente ci sar senz'altro nei prossimi anni,
data la popolarit del questa licenza e il boom dell'Open
Source.

 8. La licenza non dev'essere specifica a un prodotto

I diritti relativi a un programma non devono dipendere dall'essere
il programma parte di una particolare distribuzione software.
Se il programma  estratto da quella distribuzione e usato
o distribuito entro i termini della licenza del programma
stesso, tutte le parti a cui il programma sia ridistribuito
dovrebbero avere gli stessi diritti che vengono garantiti
in unione alla distribuzione software originale. Questo
significa che non si pu impedire a un prodotto identificato
come Open Source di essere gratuito solo se lo si usa con
una marca particolare di distribuzione Linux, ecc. Deve
rimanere gratuito se anche lo si separa dalla distribuzione
software da cui proviene.

 9. La licenza non deve contaminare altro software 

La licenza non deve porre restrizioni ad altro software che
sia distribuito insieme a quello licenziato. Per esempio,
la licenza non deve pretendere che tutti gli altri programmi
distribuiti sullo stesso media siano software Open Source.
Una versione di GhostScript (programma
di rendering PostScript) richiede
che i media sui quali viene distribuito contengano solo
programmi software gratuiti. Questo non  consentito dalla
licenza Open Source. Per fortuna, l'autore di GhostScript
distribuisce un'altra versione del programma (un po' pi
vecchia) sotto una licenza Open Source genuina. Si noti
che c' differenza fra derivazione e aggregazione. Derivazione
 quando un programma incorpora di fatto in s parti di
un altro programma. Aggregazione  quando due programmi
vengono inclusi sullo stesso CD-ROM. Questa sezione della
Open Source Definition riguarda l'aggregazione, non la derivazione.
La sezione 4 riguarda la derivazione.

 10. Licenze esemplari 

Le licenze GNU GPL, BSD, X Consortium e
Artistica sono esempi di licenze da considerarsi conformi
alla Open Source Definition. Altrettanto dicasi della MPL.

Questo sarebbe una fonte di guai nel giorno in cui una di
queste licenze si modificasse e non fosse pi Open Source:
dovremmo pubblicare immediatamente una revisione della Open
Source Definition. Ci  pertinente per la verit al testo
esplicativo, non alla Open Source Definition in s."

 Analisi delle licenze e loro conformit all'Open Source 

"Per comprendere la Open Source Definition dobbiamo esaminare
alcune pratiche comuni nelle licenze in quanto si riferiscono
all'Open Source."

 Public Domain 

"La diffusa convinzione che molto del free software sia di
dominio pubblico  errata. Ci avviene perch l'idea di
free software o Open Source confonde molti, che quindi definiscono
erroneamente questi programmi come di pubblico dominio perch
 il concetto pi prossimo a quanto  loro familiare. I
programmi, tuttavia, sono molto chiaramente protetti da
diritti e sottoposti a licenza: solo, si tratta di una licenza
che d al pubblico pi diritti di quelli a cui sia abituato.

Un programma di pubblico dominio  un programma sul quale
l'autore abbia rinunciato a tutti di suoi diritti di copyright.
Non si pu esattamente dire che sia dotato di una licenza;
 propriet personale, per usarlo come meglio si crede.
Dal momento che si pu trattarlo come personale propriet,
con un programma di pubblico dominio si pu fare quello
che si vuole. Si pu perfino ri-licenziare un programma
di pubblico dominio, rimuovendo quella versione dal pubblico
dominio, o togliendo il nome del suo autore e trattarlo
come opera propria.

Se si sta spendendo molto lavoro su un programma di pubblico
dominio, si consideri la possibilit di applicarvi il proprio
copyright e di rimetterlo sotto licenza. Per esempio, se
non si desidera che una terza parte operi delle modifiche
che possa poi mantenere riservate, si applichi la GPL o
una licenza simile alla propria versione del programma.
La versione da cui si  partiti rimarr nel pubblico dominio,
ma la propria versione sar sotto una licenza che dovr
essere osservata da chi la usa o ne derivi altre.

Un programma di pubblico dominio si rende privato facilmente,
dichiarando un copyright e applicandovi la propria licenza,
oppure semplicemente dichiarando Tutti i diritti riservati."

 Le licenze Free Software in generale 

"Se si ha una raccolta di free software come un disco Linux,
si potrebbe credere che il programma su quel disco sia proprio.
Ma questo non  del tutto vero. I programmi coperti da copyright
sono propriet di chi detiene il copyright, anche quando
arrivano con una licenza Open Source come la GPL. La licenza
del programma garantisce alcuni diritti, e altri si hanno
sotto la definizione di uso corretto nella legge sul copyright.

 importante notare che un autore non deve necessariamente
limitarsi a porre una sola licenza su un programma che pubblica.
Un programma pu essere posto sotto GPL, e una versione
pu anche essere venduta con una licenza commerciale, non-Open
Source. Proprio di questa strategia si valgono molti che
desiderano creare un programma Open Source e allo stesso
tempo guadagnarci qualche cosa. Chi non vuole una licenza
Open Source pu pagare per il privilegio, fornendo all'autore
una fonte d'entrate.

Tutte le licenze che esamineremo hanno una caratteristica
comune: declinano qualunque garanzia. Lo scopo  quello
di proteggere il proprietario del software da qualunque
responsabilit connessa al programma. Appare una richiesta
ragionevole, dato che il programma viene ceduto a costo
zero: l'autore non riceve dal programma una fonte d'entrata
sufficiente per sostenere un'assicurazione sulle responsabilit
ed eventuali spese legali.

Se gli autori di free software perdessero il diritto di declinare
tutte le garanzie e si trovassero a essere citati in tribunale
in base alle prestazioni dei programmi che hanno scritto,
smetterebbero di fornire software gratuito al mondo.  nel
nostro interesse di utenti aiutare gli autori a proteggere
questo diritto."

 La GNU General Public License 

"Si veda l'appendice B per il testo completo della GPL. La
GPL  un manifesto politico tanto quanto  una licenza
software, e la maggior parte del testo  inteso a spiegare
la motivazione teorica dietro la licenza. Questo dibattito
politico ha allontanato alcuni e fornito alcune delle ragioni
per cui sono state scritte altre licenze per il free software.
Tuttavia, la GPL  stata stilata con l'assistenza di giuristi
ed  per questo assai meglio scritta della maggior parte
delle licenze di quella famiglia. Io consiglio caldamente
di usare la GPL, o la sua variante per librerie LGPL, ogni
volta che sia possibile. Se si sceglie un'altra licenza,
o se ne stila una nuova, ci devono essere delle buone ragioni
per farlo. Chi formula la propria licenza dovrebbe sapere
bene che non  un passo da fare con leggerezza. Le complicazioni
inaspettate di una licenza affrettata possono affliggere
gli utenti di un software per molti anni a venire.

Il testo della GPL non  a sua volta sotto GPL. La sua licenza
 semplice: Chiunque pu copiare e distribuire copie esatte
di questo documento di licenza, ma non ne sono ammesse modifiche.
Un punto importante, qui,  che il testo delle licenze di
software Open Source di solito non  Open Source esso stesso.
Ovviamente, una licenza non potrebbe offrire protezione
di alcun tipo se a chiunque fosse consentito apportarvi
delle modifiche.

Le clausole della GPL soddisfano la Open Source Definition.
La GPL non richiede alcuna delle clausole consentite dal
Paragrafo 4 della Open Source Definition. Integrit del
codice sorgente dell'autore.

La GPL non permette di mantenere private le modifiche apportate.
Le modifiche devono essere distribuite sotto la GPL. In
questo modo, l'autore di un programma sotto GPL ha maggiori
probabilit di ricevere modifiche da altri, comprese societ
commerciali che modificano il suo software per i propri
scopi.

La GPL non ammette l'incorporazione di un programma sotto
GPL in un programma proprietario. La definizione di GPL
di programma proprietario lo indica come ogni programma
con una licenza che non dia tanti diritti quanti la GPL.

Esistono alcune scappatoie nella GPL che permettono di usarla
in un programma non interamente Open Source. Le librerie
software che vengono normalmente distribuite con il compilatore
o con il sistema operativo che si usa possono essere collegate
a software GPL: ne risulta un programma parzialmente libero.
Chi detiene il copyright (di norma l'autore del programma)
 la persona che mette il programma sotto GPL e ha il diritto
di violare la propria licenza. Questa scappatoia  stata
usata dagli autori di KDE per distribuire il loro programma
Qt prima che Troll Tech ponesse su Qt una licenza Open Source.
Tuttavia, questo diritto non si estende ad alcuna terza
parte che ridistribuisca il programma: esse devono seguire
tutti i termini della licenza, anche quelli che vengono
violati dal detentore del copyright, il che rende problematico
ridistribuire un programma che contenga Qt sotto GPL.

Gli sviluppatori KDE sembrano inclini a rimediare a questo
problema applicando al loro software la LGPL piuttosto che
la GPL. La retorica politica presente nella GPL non  gradita
a tutti. Non manca chi ha scelto, per il suo software, licenze
non altrettanto adatte per semplice avversione alle idee
di Richard Stallmann, pur di non aver voluto vederle ripetute
nei propri pacchetti software."

 La GNU Library Public License 

"La LGPL  un derivato della GPL escogitato per le librerie
software. A differenza della GPL, un programma sotto LGPL
pu venire incorporato entro un programma proprietario.
La libreria di linguaggio C fornita con i sistemi Linux
e un esempio di software sotto LGPL: essa pu essere usata
per costruire programmi proprietari, diversamente Linux
risulterebbe utile solamente agli autori di free software.
Una copia di un programma sotto LGPL pu essere convertita
in qualunque momento in una sotto GPL. Una volta che ci
succede, quella copia non  pi riconvertibile in un programma
sotto LGPL, e altrettanto dicasi di qualunque suo derivato.
Le rimanenti clausole della LGPL sono simili a quelle della
GPL: di fatto essa include la GPL facendovi riferimento."

 Le licenze X, BSD e Apache 

"La licenza X e le sue affini BSD
e Apache sono molto diverse dalla GPL e dalla LGPL. Queste
licenze consentono di fare quasi tutto ci che si vuole
con il software 'licenziato' sotto di esse, e questo perch
il software originariamente coperto dalle licenze X e BSD
era sovvenzionato con sussidi del Governo degli Stati Uniti.
Dal momento che i cittadini statunitensi avevano gi pagato
il software con i soldi delle tasse, fu loro garantito il
diritto di fare del software tutto ci che volessero.

La concessione pi importante, assente dalla GPL, e che si
pu mantenere private le modifiche licenziate sotto licenza
X. In altre parole, si pu ottenere il codice sorgente di
un programma sotto X, modificarlo e poi vendere versioni
binarie del programma senza distribuire il codice sorgente
delle modifiche e senza applicarvi la licenza X. Tutto ci
rimane comunque Open Source, poich la Open Source Definition
non richiede che le modifiche debbano sempre ricadere sotto
la licenza originale.

Molti altri sviluppatori hanno adottato la licenza X e le
sue varianti, compresi i progetti BSD (Berkeley System Distribution)
e Apache Web server. Un dettaglio molesto della licenza
BSD  costituito da una clausola che prescrive che ogni
volta si faccia cenno a una caratteristica di un programma
sotto BSD in una sua pubblicit, si menzioni (generalmente
in una nota a pie di pagina) il fatto che il software 
stato sviluppato all'Universit della California.

Ora, tener traccia di quale software abbia quella licenza
in una cosa immensa come una distribuzione Linux, e ricordare
quindi di menzionare l'Universit della California ogni
volta che uno di questi programmi venga citato in una pubblicit,
 un vero mal di testa per i gestori commerciali del progetto.
Nel momento in cui scrivo, la distribuzione Debian GNU/Linux
contiene oltre 2500 pacchetti software, e se anche solo
una piccola parte di essi fosse sotto BSD, la pubblicit
per un sistema Linux come Debian dovrebbe contenere molte
pagine solo di note! Tuttavia, la licenza dell'X Consortium
non ha quella clausola della pubblicit. Se si pensa di
usare una licenza tipo BSD si usi invece una licenza X."

 La Licenza Artistica 

"Sebbene questa licenza sia stata in origine sviluppata per
il Perl,  stata dopo allora adoperata per altro
software. A mio parere si tratta di una licenza formulata
con grande sciattezza, in quanto impone dei requisiti e
fornisce poi delle scappatoie che rendono facile aggirarli.
Forse  questa la ragione per cui quasi tutto il software
sotto Licenza Artistica, ha oggi una seconda licenza, offrendo
la scelta fra la Licenza Artistica e la GPL.

La Sezione 5 della Licenza Artistica vieta la vendita del
software, ma permette che sia venduta una distribuzione
di software aggregato di pi di un programma. In questo
modo, se raggruppate un programma sotto Licenza Artistica
con un helloworld.c di cinque righe di codice, potete vendere
il bundle. Questa caratteristica della Licenza Artistica
 stata la sola causa della scappatoia dell'aggregato nel
primo paragrafo della Open Source Definition. Dal momento
che l'uso della Licenza Artistica  in netto declino, stiamo
pensando di togliere quella scappatoia. Ci renderebbe la
Licenza Artistica una licenza non-Open Source. Non  questo
un passo che faremo leggermente, e ci vorr probabilmente
pi di un anno di riflessione e di dibattito prima che questo
accada.

La Licenza Artistica richiede che le modifiche siano rese
gratuite, ma fornisce poi una scappatoia (nella Sezione
7) che permette di mantenerle private e perfino di porre
sotto dominio pubblico parti del programma sotto Licenza
Artistica!"

 La Netscape Public License e la Mozilla Public License 

"La NPL  stata sviluppata da Netscape quando rese Open Source
il suo prodotto Netscape Navigator. Per la precisione, la
versione Open Source si chiama Mozilla;
Netscape si riserva il marchio Navigator per il suo prodotto.
Eric Raymond ed io agimmo come consulenti a
titolo gratuito durante lo sviluppo di questa licenza. Io
cercai, senza successo, di persuadere Netscape a usare la
GPL, e quando essa declin, contribuii a comporre una licenza
che si conformasse alla Open Source Definifion.

Una caratteristica importante della NPL
 che contiene privilegi speciali che si applicano a Netscape
e a nessun altro. Essa d a Netscape il privilegio di rilicenziare
le modifiche fatte al suo software. Netscape pu mantenere
private quelle modifiche, migliorarle, e rifiutarsi di restituire
il risultato. Questa clausola si  resa necessaria perch,
quando Netscape decise per l'Open Source, aveva contratti
con altre aziende che la impegnavano a fornir loro Navigator
sotto una licenza non Open Source. Netscape ha creato la
MPL o Mozilla Public License per rimediare a questa situazione.
La MPL  molto simile alla NPL, ma non contiene la
clausola che permette a Netscape di rimettere le modifiche
sotto licenza.

La NPL e la MPL consentono di mantenere private le modifiche
apportate.

Molte aziende hanno adottato per i loro programmi una variante
della MPL. Non  una buona cosa, perch la NPL  stata progettata
per la particolare situazione contrattuale in cui Netscape
si trovava nel momento in cui la licenza veniva scritta,
e non  detto che sia altrettanto adatta a usi diversi.
Dovrebbe restare la licenza di Netscape e di Mozilla, e
altri dovrebbero usare le licenze GPL o X."

 Scegliere una licenza 

"Non conviene formulare una licenza nuova se  possibile
usarne una di quelle qui elencate. La propagazione di molte
licenze diverse e incompatibili opera a detrimento del software
Open Source, perch frammenti di un programma non possono
essere usati in un altro programma sotto licenza incompatibile.

Ci si tenga alla larga dalla Licenza Artistica, a meno che
non si intenda studiarla a fondo ed eliminarne le scappatoie.
Fatto ci,  tempo di prendere delle decisioni.

1. Si vuole che il pubblico possa mantenere private le modifiche,
  o no? Se si vuole che chi ha apportato modifiche al proprio
  software ne rimandi il codice sorgente, si applichi una
  licenza che lo prescriva. La GPL e la LGPL sono delle
  buone scelte. Se non dispiace che il pubblico mantenga
  private le modifiche, si usino la licenza X o la licenza
  Apache. 

2. Si vuole consentire a qualcuno di far confluire il proprio
  programma nel suo software proprietario? Se s, si usi
  la LGPL, che lo permette esplicitamente senza consentire
  al pubblico di rendere privato il codice, oppure si usi
  le licenza X o Apache, che permettono che le modifiche
  siano mantenute private. 

3. Si desidera che chi lo voglia possa comprare sotto licenza
  commerciale versioni non Open Source del proprio programma?
  Se s, si doti il software di doppia licenza. Io consiglio
  la GPL come licenza Open Source; si pu trovare una licenza
  commerciale adatta all'uso in libri come Copyright Your
  Software edito da Nolo Press. 

4. Si vuole che chiunque usi il proprio software debba pagare
  per il privilegio? Se le cose stanno cosi, forse l'Open
  Source non  adatta. Se basta che solo alcune persone
  paghino, si pu mantenere Open Source il programma. La
  maggior parte degli autori Open Source considerano i loro
  programmi come contributi al bene pubblico, e non badano
  al fatto di essere pagati oppure no. 

Per un quadro chiaro consultare la tabella [licenze software]
a pagina [licenze software].([tab] +------------------+------------+------------+------------+------------+
|    Tipologie     |      A     |      B     |      C     |      D     |
+------------------+------------+------------+------------+------------+
|       GPL        |            |            |            |            |
+------------------+------------+------------+------------+------------+
|       LGPL       |   \bullet  |            |            |            |
+------------------+------------+------------+------------+------------+
|       BSD        |   \bullet  |   \bullet  |            |            |
+------------------+------------+------------+------------+------------+
|       NPL        |   \bullet  |   \bullet  |            |   \bullet  |
+------------------+------------+------------+------------+------------+
|       MPL        |   \bullet  |   \bullet  |            |            |
+------------------+------------+------------+------------+------------+
| Dominio Pubblico |   \bullet  |   \bullet  |   \bullet  |            |
+------------------+------------+------------+------------+------------+
([tab] A Pu essere miscelato con software commerciale([tab] B Le modifiche possono essere mantenute private e
  non restituite all'autore originale([tab] C Pu essere ri-licenziato da chiunque([tab] D Contiene privilegi speciali sulle modifiche per
  chi detiene il copyright originale([tab] Caratteristiche delle licenze software.<licenze software>) 

 Il Futuro 

"Al momento in cui questo saggio andava in stampa, IBM
entrava nel mondo Open Source e la comunit dei venture
capital lo sta scoprendo. Intel e Netscape hanno investito
in Red Hat, un distributore Linux. VA Research, integratore
di server Linux e hardware per workstation, ha annunciato
l'ingresso di un investitore esterno. Sendmail Inc., creata
per commercializzare l'onnipresente programma di posta elettronica
Sendmail, ha annunciato la disponibilit di fondi per sei
milioni di dollari.

L'applicazione di posta protetta Postfix
di IBM ha una licenza Open Source, e un altro prodotto IBM,
il compilatore Java Jikes, ha una licenza che, nell'istante
in cui scrivo, mira, per il momento con parziale successo,
a soddisfare le specifiche dell'Open Source Definition.
Parrebbe che IBM intenda modificare la licenza di Jikes
perch sia per intero Open Source, e che a questo scopo
stia raccogliendo pareri nella comunit.

Due promemoria interni della Microsoft, noti sono il nome
di Halloween Document, sono trapelati
al pubblico online. Questi promemoria mostrano in modo inequivocabile
come Microsoft si senta minacciata da Open Source e da Linux,
e che Microsoft lancer un'offensiva contro di loro per
proteggere i suoi mercati. E' chiaro che dobbiamo prepararci
a vivere tempi interessanti. Credo che vedremo Microsoft
usare due principali strategie: interfacce sotto copyright
e brevetti. Microsoft estender i protocolli di rete, che
contengono caratteristiche proprietarie Microsoft in quelli
che non verranno resi disponibili al free software. Essa,
con altre aziende, far ricerca aggressivamente in nuove
direzioni dell'informatica e brevetter tutto quanto potr
prima che si possano sfruttare quelle tecniche nel free
software; quindi ci chiuder fuori con le concessioni sui
diritti di brevetto. Sono autore di un saggio per la webzine
Linux World su come si possano battere i nemici dell'Open
Source sul fronte dei brevetti.

La buona notizia  che Microsoft si  spaventata! Nel secondo
degli Halloween Document, un membro dello staff Microsoft
racconta della sua sensazione d'euforia nel vedere come
poteva modificare facilmente parti del sistema Linux perch
facesse esattamente quello che voleva, e com'era pi facile
per un impiegato Microsoft fare questo su Linux di quanto
non lo fosse modificare NT. I tentativi di nuocerci provenienti
dall'interno sono i pi pericolosi. Credo che vedremo altri
sforzi per diluire la definizione di Open Source fino a
includervi prodotti parzialmente gratuiti, come abbiamo
visto avvenire con la libreria Qt
in KDE prima che Troll Tech vedesse la luce e rilasciasse
una licenza Open Source. Microsoft e altri potrebbero danneggiarci
rilasciando un sacco di software gratuito quel tanto da
attrarre utenti, ma senza avere le piene libert dell'Open
Source. Non  impensabile che essi possano stroncare lo
sviluppo di certe categorie di software Open Source rilasciando
soluzioni abbastanza valide, abbastanza quasi-gratis. Tuttavia,
la forte reazione che si  avuta contro il progetto KDE
prima che la libreria Qt divenisse completamente Open Source,
non  di buon augurio per imprese analoghe di Microsoft
e compagnia.

Finora abbiamo scampato i cavalli di Troia. Supponiamo che
qualcuno che ci vuol male fornisca del software che contiene
un cavallo di Troia - un espediente per sconfiggere la protezione
in un sistema Linux. Supponiamo, poi, che la medesima persona
resti in attesa che il software con il cavallo di Troia
sia largamente distribuito e quindi ne pubblicizzi la vulnerabilit
agli attacchi alla sicurezza. Il pubblico si sar per allora
accorto che il nostro sistema Open Source pu lasciarci
pi vulnerabili a questa sorta di attacchi che non il sistema
chiuso di Microsoft; questo potrebbe ridurre la fiducia
generale nel software Open Source. Potremmo obiettare che
Microsoft ha la sua parte di bug di sicurezza anche se non
lascia possibilit di inserirli a persone esterne e che
il modello a codice sorgente aperto dell'Open Source rende
pi facile scoprire questi bug. Qualunque bug del genere
che comparisse in Linux sarebbe riparato il giorno dopo
essere stato scoperto, mentre un omologo in Windows o non
sarebbe mai scoperto o dovrebbe aspettare il rimedio per
anni. Ma dobbiamo rinforzare ancora la nostra difesa contro
i cavalli di Troia. Identificare con sicurezza chi contribuisce
alla creazione di software e delle modifiche  la difesa
migliore di cui disponiamo, dal momento che ci permette
di valerci del diritto penale contro chi escogita cavalli
di Troia. Quando ero dirigente della distribuzione GNU/Linux
di Debian, istituimmo un sistema che consentiva di identificare
in modo affidabile tutti i manutentori del software e permetteva
loro di partecipare a loro volta a una rete a crittografia
a chiave pubblica che ci avrebbe consentito di verificare
da chi proveniva il nostro software. Questo tipo di sistema
si deve espandere fino a comprendere tutti gli sviluppatori
Open Source.

Enormi sono i miglioramenti da intraprendere prima che Linux
sia davvero alla portata dell'utente medio. L'interfaccia
grafica per gli utenti  chiaramente qualcosa che manca,
e a questo sono rivolti i progetti KDE e GNOME. La prossima
frontiera  l'amministrazione di sistema, Linuxconf
vi sta parzialmente provvedendo, ma si trova ben lungi dall'essere
uno strumento completo d'amministrazione di sistema per
l'utente sprovveduto. Se il sistema COAS
di Caldera avr successo, potrebbe diventare la
base per una soluzione completa al problema dell'amministrazione
di sistema. Tuttavia, Caldera ha avuto dei problemi nel
mantenere un'allocazione di risorse sufficienti a COAS per
terminarne lo sviluppo, e altri sviluppatori hanno abbandonato
la partita perch non notavano progressi. La pletora di
distribuzioni Linux appare oggi in pieno rivolgimento, con
Red Hat percepita come vincitrice e Caldera come
seconda. Red Hat ha mostrato finora un solido impegno verso
il concetto di Open Source, ma un nuovo presidente e voci
di un'offerta pubblica iniziale (Initial Pubblic Offering,
IPO) potrebbero significare un indebolimento di quest'impegno,
specialmente se concorrenti come Caldera, molto pi tiepidi
verso l'Open Source, riusciranno a inserirsi nel mercato
di Red Hat. Se l'impegno delle distribuzioni Linux commerciali
verso l'Open Source diventer problematico, questo generer
probabilmente uno sforzo per rimpiazzarle con tentativi
Open Source simili al GNU/Linux di Debian
ma pi diretti al mercato commerciale di quanto non sia
stata Debian. Malgrado queste sfide, io predico la vittoria
dell'Open Source. Linux  divenuto strumento di test per
gli studenti d'informatica, che, una volta laureati, porteranno
con s quegli strumenti nei loro posti di lavoro. Molti
laboratori di ricerca hanno adottato il modello Open Source
in quanto la condivisione delle informazioni  essenziale
al metodo scientifico, e l'Open Source consente al software
di essere condiviso facilmente. Il mondo business sta adottando
il modello Open Source perch consente a gruppi di aziende
di collaborare nella risoluzione di un problema senza la
minaccia di una causa anti-trust, e per l'impulso di cui
gode quando i contributi pubblici di programmazione rendono
gratuite le migliorie al software. Alcune grandi societ
hanno adottato l'Open Source come strategia per combattere
e scongiurare l'avvento di un'altra Microsoft pronta a dominare
il settore informatico. Ma l'indicazione pi affidabile
sul futuro dell'Open Source viene dal suo passato: in pochi
anni, dal niente siamo arrivati ad avere un robusto corpus
di software che  in grado di risolvere tanti problemi diversi
e che si avvia a raggiungere il milione di utenti. Non c'
ragione di rallentare la corsa proprio adesso."

GNU/Linux



Il fenomeno GNU/Linux <Capitolo 5>

GNU/Linux  una libera e distribuibile versione di UNIX sviluppata
da Linus Torvalds presso l'Universit di
Helsinki in Finlandia. GNU/Linux  un melting pot di conoscenze
ed esperienze che hanno trovato in quest'ultimo una piazza
virtuale dove crescere rapidamente. All'interno del sistema
operativo non viene utilizzato in nessun modo codice licenziato
da enti commerciali e buona parte del software che ruota
attorno segue questa "corrente"
di pensiero abbracciata dal Progetto GNU della Free Software
Foundation([footnote] Cambridge, Massachusetts. ) . Linux infatti rappresenta unicamente il kernel mentre GNU/Linux
sarebbe la giusta formulazione per indicare il kernel di
Linux e tutto il software di gestione offerto dal progetto
GNU che rende un sistema operativo utilizzabile. Per maggiori
informazioni in merito consiglio il documento disponibile
sul sito GNU - http://www.gnu.org/gnu/linux-and-gnu.html.([footnote] Si ringrazia Bradley M. Kuhn della Free Software
Foundation per aver consigliato la presente nota nel manuale.) 

5.1 La nascita 

Il kernel di Linux  stato originariamente sviluppato da
Linus Torvalds. Il progetto iniziale era ispirato a Minix,
un piccola versione di UNIX sviluppata da Andy Tanenbaum,
e proprio nel gruppo di discussione comp.os.minix venne
rilasciato il seguente messaggio da Torvalds: ([fig] ([fig] Linus Torvalds fotografato dopo un talk.<linus torvalds dopo talk>) 

"After that it was plain sailing: hairy coding still, but
I had some devices, and debugging was easier. I started
using C at this stage, and it certainly speeds up developement.
This is also when I start to get serious about my megalomaniac
ideas to make 'a better Minix than Minix'. I was hoping
I'd be able to recompile gcc under Linux some day... Two
months for basic setup, but then only slightly longer until
I had a disk-driver (seriously buggy, but it happened to
work on my machine) and a small filesystem. That was about
when I made 0.01 avaible [around late August of 1991]: it
wasn't pretty, it had no floppy driver, and it couldn't
do much anything. I don't think anybody ever compiled that
version. But by then I was hooked, and didn't want to stop
until I could chuck out Minix." 

Nessun annuncio venne fatto per la versione 0.01. I sorgenti
di quest'ultimo non erano eseguibili e contenevano unicamente
le rudimentali sorgenti del kernel da compilare su un server
Minix. Nell'ottobre 1991 venne annunciata la versione 0.02
di Linux, la prima versione ad essere definita "ufficiale".
Quest'ultima rimaneva pur sempre scarna ma includeva la
shell dei comandi bash (GNU Bourne
Again Shell) e gcc, il compilatore GNU. Era il primo ed
importante passo ed un'intera comunit di sviluppatori abbracci
il progetto.

Linus scrisse su comp.os.minix:

"Do you pine for the nice days of Minix-1.1, when men were
men and wrote their own device drivers? Are you sure without
a nice project and just dying to cut your teeth on a OS
you can try to modify for your needs? Are you finding it
frustrating when everything works on Minix? No more all-nighters
to get a nifty program working? Then this post might be
just for you. As i mentioned a month ago, I'm working on
a free version of a Minix-lookalike for AT-386 computers.
It has finally reached the stage where it's even usable
(though may not be depending on what you want), and I am
willing to put out the sources for wider distribution. It
is just version 0.02... but I've successfully run bash,
gcc, gnu-make, gnu-sed, compress, etc. under it." 

Dopo la versione 0.03 ci fu un rapido susseguirsi di versioni
grazie alla natura del progetto che concentrava l'opera
di una crescente comunit telematica. La versione 1.0 venne
rilasciata nel dicembre del 1993 dopo essere considerata
stabile e bug-free, ovvero senza problemi. Il kernel di
Linux rilasciato era compatibile con molti standard UNIX
come IEEE POSIX.1, System V e BSD e poteva "funzionare"
su processori di classe i386, disponibili in gran parte
dei personal computer esistenti.

Le frasi "Linux is not Unix"
o "GNU is not Unix" hanno un senso;
il marchio UNIX  licenziato da X/Open che su richiesta
e a pagamento valuta un sistema operativo e definisce o
meno l'utilizzo del nome "UNIX".
Linux  il paradosso perch malgrado la mancanza del "titolo"
ha saputo imporsi ugualmente e diventare la linea guida
nello sviluppo software per sistemi UNIX, scavalcando per
propria natura ogni limite relativo a licenze con particolari
note restrittive.

Dopo circa 8 anni dal messaggio inizialmente riportato lo
spirito di Torvalds non  affatto cambiato. Il 10 Marzo
2000 scriveva:

"I just made a 2.3.51 release, and the next kernel will be
the first of the pre-2.4.x kernels. That does NOT mean that
I'll apply a lot of last-minute patches: it only means that
I'll let 2.3.51 be out there over the weekend to hear about
any embarrassing problems so that we can start the pre-2.4
series without the truly stupid stuff. There's some NFSv3
and other stuff pending, but those who have pending stuff
should all know who they are, and for the rest it's just
time to say nice try, see you in 2.5.x. The pre-2.4.x series
will probably go on for a while, but these are the bug fixes
only trees. These are also the I hope a lot of people test
them trees, because without testing we'll never get to the
eventual goal, which is a good and stable 2.4.x in the reasonably
near future." 

"I hope a lot of people test them",
ovvero la versione "spero che molta gente
la testi" per riportare eventuali mancanze o errori
da correggere prima della versione finale. Ironia e modestia,
le chiavi di successo. In un messaggio ironico spedito il
primo giorno di Aprile 2000, Torvalds scriveva:

"Dear Linux Users,

I'm pleased to announce jointly with Microsoft(tm)(r) Corporation
release of Linux 2000 Professional Enterprise. As you probably
already know I'm busy with my family and I already have
full-time job with Transmeta. Thus, it has been necessary
for me to look for some responsible partner who would help
me develop Linux. After extensive search, I have decided
upon Microsoft Corporation which has been known on market
for long time from their high quality software. Thus the
upcoming Linux 2.4.0 will become Linux 2000(tm)(r). Pricing
will be determined at later time. However, I would like
to take opportunity now to remind people who have unlicensed
version of Linux to delete it from hard disk and then wait
until official release of Linux 2000(tm)(r) will become
available. Effective April 1st 2000, midnight, all older
versions of Linux are illegal under Digital Millennium Copyright
Act." 

Un bel "pesce d'aprile"! :)


L'annuncio della versione 2.4.0.test10-final fatto da Torvalds
presentava quanto segue:

From: Linus Torvalds
Subject: Linux-2.4.0-test10
Date: Tue, 31 Oct 2000 12:41:55 -0800 (PST)

  Ok, test10-final is out there now. This has no _known_
  bugs that I consider show-stoppers, for what it's worth.
  
  And when I don't know of a bug, it doesn't exist. Let us
  rejoice. In traditional kernel naming tradition, this
  kernel hereby gets anointed as one of the "greased weasel"
  kernel series, one of the final steps in a stable release.
  
  We're still waiting for the Vatican to officially canonize
  this kernel, but trust me, that's only a matter of time.
  It's a little known fact, but the Pope likes penguins
  too.

                                                            Linus

Effetto "giubileo".

 Un pinguino come amico 

Linux viene spesso rappresentato da un pinguino che  diventata
la mascotte ufficiale del sistema operativo. L'immagine
ufficiale (figura [Tux, un pinguino come amico])
 stata creata da Larry Ewing.([fig] ([fig] Tux, un pinguino come amico<Tux, un pinguino come amico>) 

Il nome di questo amichevole pinguino, Tux,
 stato suggerito da James Hughes
in un messaggio apparso sulla mailing-list ufficiale del
kernel di linux in data 10 giugno 1996. Tux pu essere interpretato
come l'abbreviazione di Torvalds UniX.

5.2 Distribuzioni 

GNU/Linux si pu scaricare gratuitamente dalla rete oppure
lo si pu ottenere tramite le "distribuzioni"
esistenti, nate per diffondere il sistema operativo su supporti
fisici come floppy o cd-rom e colmare la mancanza di connessioni
in rete stabili e veloci.

 La scelta giusta 

Le sostanziali differenze tra le distribuzioni nascono con
l'aggiunta di ulteriore software per l'installazione e per
la gestione, supporto tecnico nonch materiale cartaceo
come manuali e documentazione di vario genere. E' difficile
valutare questo valore aggiunto e stabilire quale distribuzione
possa ritenersi migliore di un'altra visto che ognuna ha
una serie di caratteristiche proprie che la distinguono
sotto l'aspetto della sicurezza, della gestione o della
facilit d'uso.

Si potrebbe produrre una immensa serie di motivazioni e considerazioni
ma il consiglio che si vuole dare  quello di leggere le
note sottostanti e fare una scelta per iniziare:

* Se dovete gestire un server Internet oppure godete di connettivit
  fissa la scelta migliore  la distribuzione Debian (logotipo
  ufficiale nell'immagine [debianlogo]([footnote] Debian Open Use Logo License, Copyright  1999
Software in the Public Interest. This logo or a modified
version may be used by anyone to refer to the Debian project,
but does not indicate endorsement by the project. It is
not required, but we would appreciate, that when used on
a web page, the image be a link to http://www.debian.org/) ), molto curata sotto gli aspetti della sicurezza e facilmente
aggiornabile in rete con pochi semplici comandi. E' la distribuzione
che attualmente utilizzo, riscontrando limiti e pregi. Pu
essere una distribuzione "difficile"
per un utente che si affaccia per la prima volta ad un sistema
Unix ma una volta superate le barriere iniziali si possono
"gustare" i pregi. Rimane in ogni caso la scelta
migliore per gli sviluppatori software, gli ambiti scientifici
e gli Internet Service Provider.

* Se dovete utilizzare GNU/Linux come workstation di lavoro
  una buona scelta pu ricadere sulle distribuzioni Red
  Hat, Mandrake o SuSE, facili da installare per una
  persona alle prime armi e semplici da gestire con il sistema
  di gestione dei pacchetti software denominato rpm, ampiamente
  presentato in questo manuale.

* Se infine rientrate nella categoria "smanettoni"
  (parola che pu suscitare sorrisi ma che  comune e largamente
  utilizzata) potreste trovare la vostra panacea nella distribuzione
  Slackware, soluzione ideale per chi desidera
  conoscere il proprio sistema nei minimi particolari. 

I nomi indicati sono sostanzialmente quelli delle distribuzioni
maggiormente utilizzate ed  facile trovare, oltre alle
distribuzioni per processori della famiglia i386
( Intel e compatibili), versioni per processori di
diverso genere come Alpha, Sparc,
PPC.([fig] ([fig] Debian GNU/Linux - http://www.debian.org<debianlogo>) 

 Dove trovare le distribuzioni 

La diffusione di GNU/Linux lo ha reso ambito e acclamato
tanto da rendere molto semplice poter trovare una distribuzione
completa del sistema operativo. Potete informarvi presso
una qualsiasi attivit commerciale che distribuisce materiale
informatico o passare direttamente in edicola per acquistare
una delle tante riviste che allegano cd-rom con GNU/Linux.
Numerosi anche i rivenditori online, tra i quali indico
i seguenti: 


Rivenditori internazionali


* Infomagic - http://www.infomagic.com

* Cheapbytes - http://www.cheapbytes.com

Sempre pi frequentemente le distribuzioni diffuse attivano
e-commerce dai propri siti Internet e quindi  consigliabile
visitare direttamente quest'ultimi per le proprie necessit: 


* Caldera - http://www.caldera.com

* Corel - http://linux.corel.com

* Debian - http://www.debian.org

* Mandrake - http://www.linux-mandrake.com

* LinuxPPC - http://www.linuxppc.org

* Red Hat - http://www.redhat.com

* Slackware - http://www.cdrom.com

* Stampede - http://www.stampede.org

* S.u.S.E. - http://www.suse.com

* Turbo Linux - http://www.pht.com

* VA Research - http://www.valinux.com

5.3 Documentazione 

Una caratteristica importante nel mondo GNU/Linux  la memoria
storica. Esiste un'incredibile mole di documentazione disponibile
in rete e pronta a risolvere ogni singolo problema, una
quantit talmente elevata di informazioni che spesso un
nuovo utente si trova disorientato. Analizzeremo di seguito
le varie tipologie informative presenti e i metodi pi rapidi
per la consultazione.

 Pagine Manuali / Guide in linea 

Rappresentano una forma molto comoda per consultare informazioni
relative a programmi installati nel sistema. Hanno una organizzazione
sostanzialmente comune che presenta un'area descrittiva,
dove viene spiegato lo scopo del programma, una sezione
relativa alla sintassi d'uso del comando con le varie opzioni,
consigli di vario genere e comandi eventuali logicamente
correlati.

Per poter consultare queste guide  necessario utilizzare
il comando man nel seguente modo: 


$ man nomecomando


Per uscire dalla visualizzazione della guida in linea  necessario
digitare il tasto  .

 How-To 

Sono manuali orientati a specifici argomenti; esistono How-to
per una moltitudine di argomenti diretti a risolvere particolari
e ben determinate problematiche. Esiste da anni un progetto
che cura la gestione razionale di questi manuali che si
chiama LDP([footnote] Linux Documentation Project. ) , http://www.linuxdoc.org/.

Il progetto  nello spirito tipico che contraddistingue GNU/Linux,
ovvero opera di volontari che impiegano parte del proprio
tempo per lasciare le loro esperienze a chi ne necessiter
successivamente. Siccome la gran parte della documentazione
informatica nasce e viene sviluppata in lingua inglese si
 formato un gruppo parallelo chiamato ILDP([footnote] Italian Linux Documentation Program - http://www.pluto.linux.it/ILDP/) , con il particolare scopo di tradurre la documentazione
esistente in lingua italiana.

 Mailing List 

Esistono numerose mailing list, strumenti che permettono
ad una molteplicit di persone di comunicare tramite e-mail
e condividere queste informazioni. Esistono mailing list
per progetti software ben determinati e mailing list create
da gruppi di utenti GNU/Linux di carattere generico. Se
desiderate conoscere le argomentazioni di ogni lista e trovare
le modalit di iscrizione si consiglia di visitare i seguenti
siti Internet:

* ErLug (Emilia Romagna Linux User Group) - http://erlug.linux.it

* ILS (Italian Linux Society) - http://www.linux.it

* Pluto - http://www.pluto.linux.it 

I siti indicati sono fonti informative di vario genere da
considerare come punti di partenza nella rete Internet per
ampliare le proprie conoscenze.

 Newsgroup 

Esiste una serie di gruppi di discussione in lingua italiana
e fanno parte della gerarchia it.comp.os.linux divisi in
macrocategorie a seconda degli scopi finali degli utenti
e visualizzabili con un comune programma client per i newsgroup.

 Ulteriore Documentazione Italiana 

Nello spirito che contraddistingue GNU/Linux, esistono numerose
forme documentative curate da volontari e disponibili gratuitamente
in rete.

 Appunti Linux 

Appunti Linux di Daniele Giacomini rappresenta un corposo
insieme di informazioni utili per gestire le attivit del
vostro personale server GNU/Linux. La documentazione copre
argomenti relativi all'amministrazione di sistema, la programmazione
e i servizi Internet. 


http://www.swlibero.org/

 LDR 

Linux Domanda e Risposta di Gaetano Paolone, rappresenta
una interessante raccolta di F.A.Q. particolarmente indirizzate
all'utente novizio e di medio livello. Pu essere molto
utile per la risoluzione di alcune problematiche e per imparare
nuove soluzioni per l'ottimizzazione del sistema. 


http://web.tiscalinet.it/linuxfaq/

5.4 Valore aggiunto 

Le persone che spesso utilizzano strumenti informatici spesso
si trovano a combattere con soluzioni inadeguate alle proprie
esigenze anche se ampiamente diffuse commercialmente. E'
necessario capire che non sempre il prodotto hardware o
software diffuso e famoso coincide con un prodotto di qualit.
Spesso sono politiche di marketing e comunicazione a convincere
le persone che un prodotto  valido anche se le sue caratteristiche
sono inferiori a quanto promesso.

"Se dovete mangiare entrate in un supermercato e scegliete
tra i prodotti presenti. Ogni prodotto, essendo un bene
alimentare, presenta una etichetta dove  esposta una variet
di dati importanti: il produttore, gli ingredienti utilizzati,
le analisi chimiche e perch no... comunicazione tramite
la grafica e l'apparenza del prodotto. Il produttore stesso
vuole tutelarvi mostrando la sua qualit attraverso la trasparenza
delle informazioni."

L'ambito informatico pu avere un concetto molto vicino all'esempio
visto, soprattutto in ambito sociale dove i mezzi considerati
non sono pi una alternativa ma un passaggio obbligato.
Conoscere le caratteristiche di un prodotto pu essere difficile
per i non addetti ai lavori ma  una forma di trasparenza
che migliora la scelta e l'evoluzione dei prodotti stessi
verso la qualit totale. Focalizzandoci sul software bisogna
inevitabilmente fare una distinzione. Esistono diversi sistemi
operativi e software che sono vincolati a quest'ultimi.
L'analisi immediata mostra che nel mondo esistono sistemi
operativi largamente utilizzati per scelta diretta o inconsapevole
e nella maggior parte dei casi quest'ultimi appartengono
a compagnie private che non mostrano gli ingredienti dei
loro prodotti. Nella societ informatica questo non ha pi
ragione di esistere e la filosofia Open Sources  la soluzione
evolutiva. Tutti devono avere la possibilit di sapere quello
che comprano. Dal lato degli sviluppatori, poter visualizzare
le sorgenti di un sistema operativo pu voler dire migliorarne
le funzionalit e renderlo maggiormente stabile ed affidabile.
Il software "chiuso" e proprietario
 sviluppato da un gruppo di persone. Il software Open Sources
pu vedere coinvolta una intera comunit di persone che
apportano migliorie quotidianamente muovendosi verso la
qualit totale e offrendo trasparenza assoluta. GNU/Linux
rientra in quest'ultimo esempio. Nato e sviluppato in gran
parte in rete, ha visto il contributo di una intera comunit
di sviluppatori sparsa in tutto il mondo, un progetto collaborativo
su larga scala che ha fatto crescere in pochi anni questo
sistema operativo free, aperto. Molte persone possono affermare
che GNU/Linux non sia la migliore soluzione. Io stesso ribadisco
che non  attualmente la soluzione per tutti i casi ma ha
una caratteristica di successo:  software vivo costantemente
in evoluzione verso la qualit totale, capace di crescere
e modellarsi alle vostre esigenze e alla vostra personalit.
GNU/Linux  la soluzione pi democratica e trasparente di
una societ moderna sempre pi informatizzata e in rete.

Parlando con un conoscente che sviluppa software in ambito
medico e chirurgico  stato messo in evidenza qualcosa di
veramente angosciante che lascia riflettere. Il software
sviluppato da quest'ultimo funziona su un sistema operativo
proprietario e largamente diffuso che spesso si blocca causando
errori, perdita di dati ed inevitabile disagio.

Immaginate un intervento chirurgico al cuore che viene interrotto
perch il computer che gestisce le informazioni e i dati
si  bloccato e vi mostra una finestra blu con gli errori
riscontrati (la BSOD, Blue Screen Of Death). Giustifichereste
la mancanza di stabilit di questo sistema operativo proprietario?
Giustifichereste voi stessi sapendo che avete determinato
questa scelta sbagliata?

Il dibattito  aperto.

 F.A.Q. 

Domanda: "GNU/Linux  free nel senso di gratuito?" 

Il concetto free di GNU/Linux include anche l'aspetto economico
ma esiste un significato altamente superiore. GNU/Linux
 liberamente distribuibile in base alle norme espresse
dalla licenza GPL e "aperto"
ovvero tutti possono vedere il codice sorgente ed apportare
modifiche per migliorarlo ed ottimizzarlo alle crescenti
esigenze informatiche. Si pu capire che il concetto "free"
utilizzato per GNU/Linux  altamente differente da quello
di "public domain".

Domanda: "Se richiedo una versione di GNU/Linux,
  via Internet, da un distributore italiano o internazionale,
  dovr pagare tale versione?" 

Ogni distribuzione offre soluzioni differenti con costi differenti.
Le variazioni di prezzo sono dovute spesso al materiale
correlato alla distribuzione software di GNU/Linux, manuali
cartacei, gadget e supporto tecnico ma esistono soluzioni
minime che includono la sola distribuzione software e sono
molto economiche.

Domanda: "Ho recentemente notato che molte distribuzioni
  GNU/Linux diversificano le proprie distribuzioni per workstation
  e per soluzioni server. Se voglio utilizzare il sistema
  operativo all'interno di un'azienda devo optare per la
  seconda soluzione?"

La diversificazione delle distribuzioni  pi che altro una
scelta di immagine. Qualsiasi distribuzione pu rappresentare
una valida soluzione "server"
con i dovuti e necessari pacchetti software liberamente
disponibili in rete. E' altres vero che una soluzione "server"
potrebbe non necessitare di pacchetti software superflui
e in tal senso la motivazione della scelta di diversificazione
ha lati unicamente positivi.

Domanda: "Nei negozi di materiale informatico
  ho trovato con facilit molte distribuzioni GNU/Linux
  ma non riesco a trovare Debian. Cosa  necessario fare
  per procurarsela?"

Debian GNU/Linux  una distribuzione strettamente vicina
alla filosofia del software libero. Non esiste una struttura
commerciale simile a quella delle altre distribuzioni e
per questo non  possibile trovare "un
pacchetto" commerciale per quest'ultima. Esistono
versioni liberamente scaricabili dalla rete e semplici da
masterizzare e utilizzare immediatamente. Lo stesso sistema
di gestione dei pacchetti software non prevede supporto
aggiuntivo a pagamento:  tutto in linea su Internet e moltissimi
sono i mirror della distribuzione dove  possibile collegarsi
in maniera semplice, trasparente e senza costi aggiuntivi
per aggiornamento del sistema. 

Il consiglio che do  quello di rivolgersi al LUG (Linux
User Group) pi vicino e chiedere se  possibile ottenere
questa distribuzione oppure scaricare direttamente le immagini
ISO disponibili. Per maggiori riferimenti si pu visitare
il sito http://www.debian.org.

Linux User Group<Capitolo 6><LUG capitolo>

L'esplosione dell'elettronica di massa ha modificato i comportamenti
delle persone a livello sociale. Posso ricordare l'impatto
che ebbero i primi personal computer come il Commodore VIC20
e lo ZX Spectrum verso la met degli anni '80 ma indirettamente
ho potuto cogliere un clima simile per il mondo HAM Radio.
Le persone che si appassionarono a tali tecnologie era facile
trovarle in mercatini particolari come le Fiere dell'elettronica,
inizialmente ridotte a piccole aggregazioni di persone e
ora momenti collettivi di ritrovo e scambio commerciale
di oggetti e componenti elettronici. La telematica  stato
un fattore di coesione ulteriore tra queste persone ampliando
i confini territoriali esistenti. Quando le BBS (Bulletin
Board System) erano gli unici strumenti per collegarsi tramite
il proprio computer e il modem ad altri sistemi di questo
tipo le persone potevano scambiare bit con una certa facilit
e allo stesso modo messaggi e ulteriori informazioni, futili
o meno. Tutto questo aveva costi e prestazioni imparagonabili
con quello che rappresenta ora Internet ma era un passo
evolutivo verso una nuova forma di comunicazione. Quando
all'inizio degli anni '90, Internet prendeva il sopravvento
sulle reti BBS, i vantaggi furono notevoli: i costi telefonici
potevano essere ridotti visto che le connessioni erano per
lo pi verso provider presenti nel proprio distretto comunale
piuttosto che interurbane costose. Anche le potenzialit
della rete, sotto l'aspetto dei servizi, cambiava radicalmente
ampliando i confini metrici delle comunicazioni. In questo
clima di apertura mentale  cresciuto GNU/Linux e gli utenti
che a sua volta utilizzavano quest'ultimo, nel rapido scambio
d'opinioni e richieste con gli sviluppatori.

6.1 Linux User Group 

Abbiamo precedentemente descritto i gruppi di persone formati
con l'avvento dell'elettronica e la telematica. Un Linux
User Group  una entit di persone che si avvicina e collabora
per ampliare le proprie conoscenze in merito all'utilizzo
del sistema operativo GNU/Linux e cerca di creare memoria
storica per aiutare ulteriori persone tramite la creazione
di documentazione e rapporti interpersonali. Esistono Linux
User Group in ogni parte del mondo e l'Italia non  da meno.

Quando parlare di Linux poteva suonare quasi eretico in un
determinato ambiente informatico o commerciale, si cre
un microsistema che univa gli ambienti universitari tramite
Internet. In quel preciso istante un frammento di storia
ritornava attuale. Nacque il Pluto, il primo gruppo di aggregazione
italiano, il quale si propose gli obiettivi di diffondere
il software free o software libero. Il polo universitario
che diede maggiore spazio alle attivit fu l'universit
di Padova che offr proprie risorse per sostenere l'iniziativa.
Seguirono altri istituti educativi universitari che vedevano
in GNU/Linux uno strumento eccellente sotto l'aspetto educativo
e pratico.

L'azione del Pluto LUG  stata di fondamentale importanza
per l'espansione della comunit italiana degli utenti GNU/Linux,
comunit che  cresciuta come numero di partecipanti, comunit
che ha saputo creare ulteriori poli di aggregazione come
i LUG locali con copertura territoriale di carattere regionale,
provinciale o limitatamente comunale. Sindacare su questa
evoluzione della comunit italiana del software libero 
superfluo: ogni trasformazione porta novit positive/negative
ma se si realizza  una realt e come tale merita considerazione.

Un Linux User Group pu svolgere diversi compiti per raggiungere
gli obiettivi che si  preposto nella diffusione del software
libero ma devono essere sottolineati comportamenti non corretti
e coerenti verso le persone che il gruppo rappresenta. Un
LUG non dovrebbe prestare consulenze tecnico/commerciali
a fine di lucro o legarsi a correnti politiche perch non
fanno parte del proprio ambiente caratteristico. Un Linux
User Group, oltre a predisporre soluzioni tecniche per una
comunit virtuale (servizi Internet) pu altres organizzare
meeting per i propri utenti, giornate incontro tra appasionati
nello stile dei campus americani. Dovrebbe ricevere eventuali
sponsorizzazioni se quest'ultime possono migliorare l'efficienza
e l'efficacia nel raggiungimento dei propri obiettivi.

 La mappa italiana dei LUG

Grazie all'opera di Lindo Nepi, viene riportata di seguito
una lista dei maggiori e pi attivi Linux User Group (tabella
[Mappa Linux User Group Italiani]). 

La lista completa e aggiornata  disponibile in linea all'indirizzo
http://www.linux.it/LUG/.([tab] +------------------------------+-------------------------+
| Nome                         | URL                     |
+------------------------------+-------------------------+
+------------------------------+-------------------------+
| Ass.Culturale ErLUG          | http://erlug.linux.it   |
+------------------------------+-------------------------+
| Firenze LUG                  | http://firenze.linux.it |
+------------------------------+-------------------------+
| ILS (Italian Linux Society)  | http://www.linux.it     |
+------------------------------+-------------------------+
| Pluto                        | http://pluto.linux.it   |
+------------------------------+-------------------------+
| Roma LUG                     | http://lugroma.eu.org   |
+------------------------------+-------------------------+
| Torino LUG                   | http://torino.linux.it  |
+------------------------------+-------------------------+
([tab] Mappa Linux User Group Italiani.<Mappa Linux User Group Italiani>) 

6.2 Meeting nazionali

L'interesse verso il software libero scaturisce collaborazione
tra le persone e quest'ultima pu sfociare nelle numerose
manifestazioni pubbliche per la condivisione di idee ed
esperienze, sotto gli aspetti aziendali, scientifici o semplicemente
ludici. Nel corso dell'anno 2000 i punti di incontro che
hanno richiamato maggiore interesse sono i seguenti:

* Linux Meeting - Bologna
  Manifestazione organizzata dall'associazione culturale
  ErLUG presso la Facolt di Economia, Universit di Bologna.
  Riferimento web: http://www.linuxmeeting.net

* LIME 2000
  Manifestazione organizzata dal LUG Roma presso la Facolt
  di Ingegneria, Universit di Roma. Riferimento web: http://lugroma.eu.org

* Pluto Meeting
  Manifestazione organizzata dal Pluto LUG a Terni. Riferimento
  web: http://meeting.pluto.linux.it

I riferimenti web, oltre a presentare il materiale realizzato
per gli interventi illustrano informazioni e contatti per
le future manifestazioni.

Installazione <Capitolo 7>

La fase relativa all'installazione di Linux sul proprio computer
 quella che inquieta gran parte delle persone. Nelle sezioni
che seguono verr spiegato che questa paura non  relativa
a GNU/Linux ma a concetti che stanno alla base, argomenti
comuni per tutti i sistemi operativi. Le informazioni sono
particolari per gran parte dei personal computer disponibili
sul mercato.

7.1 Cosa vogliamo fare? 

Capire cosa si desidera fare  un risultato di valore in
qualsiasi cosa nella vita. Nel caso in esame le aspettative
sono ridotte ma il concetto di fondo  il medesimo, ovvero
"installare un nuovo sistema operativo sul proprio computer".
Esistono due principali direzioni per il raggiungimento
di questo obiettivo;

* una installazione che ci permetta di far convivere due
  o pi sistemi operativi. 

* una installazione che veda come unico soggetto in causa
  un unico sistema operativo, in questo caso GNU/Linux. 

In entrambi i casi  necessario preparare il terreno, determinare
lo spazio dove queste soluzioni dovranno muoversi e agire.
Il caso comune  il disco fisso presente in qualsiasi computer.

 Partizioni 

Immaginate il vostro disco fisso come una torta. Ogni fetta
che facciamo di quest'ultima pu essere intesa come una
partizione, una sezione della superficie di memorizzazione
dei dati. Per partizionare un disco esistono diversi strumenti,
liberi come fips e fdisk oppure commerciali come Partition
Magic per Windows, il quale offre una modalit sicuramente
pi semplice ed immediata dei programmi precedentemente
citati.([footnote] Nota dell'Autore: Ho sempre utilizzato fdisk
perch quest'ultimo copre in gran parte le mie esigenze
come quelle delle altre persone. Non ritengo necessario
l'acquisto di un software commeciale per tale scopo quando
ne esiste uno di qualit e free.) 

7.1.1 Windows e GNU/Linux 

Uno dei casi comuni di molti utenti  il desiderio di installare
GNU/Linux per scoprire un mondo nuovo senza perdere quel
terreno "gi battuto" che pu
essere rappresentato da Windows, presenza inevitabile su
qualsiasi computer che si acquista.

Per far convivere questi due sistemi operativi dobbiamo fare
due cose:

1. Fare ordine:

  (a) Avviare il sistema operativo Windows.([footnote] Si presuppone abbiate installato questo sistema
operativo. ) ([footnote] Per Windows NT  necessario seguire una procedura
pi complessa nel partizionamento. Esiste un How-to specifico
per questa evenienza.) 

  (b) Eseguire il comando chkdsk oppure scan c:
    al prompt del DOS. E' possibile utilizzare anche il
    programma scandisk, utilit di sistema disponibile nel
    gruppo Accessori (disponibile dal men Avvio). Queste
    applicazioni hanno lo scopo comune di controllare eventuali
    errori presenti sul disco fisso e correggerli. 

  (c) Eseguire il comando defrag al prompt del DOS. E' possibile
    utilizzare l'applicazione Utilita' di deframmentazione
    Dischi presente nel gruppo Accessori (disponibile dal
    men Avvio). L'utilizzo di questi strumenti sono diretti
    a organizzare i file presenti nella maniera pi compatta. 

2. Utilizzare lo spazio disponibile:

  (a) Inserire il cd-rom della vostra distribuzione GNU/Linux. 

  (b) Ricercare la cartella dosutils e accedere a questa. 

  (c) Copiare interamente la cartella Fips. 

  (d) Abbandonare l'ambiente Windows e accedere al Dos premendo
    il pulsante Avvio, Chiudi Sessione, Riavvia il sistema
    in modalita' Ms-Dos. 

  (e) Spostarsi all'interno della cartella Fips precedentemente
    copiata con il comando cd Fips ed eseguire l'applicazione
    fips.exe presente. Quest'ultima applicazione analizza
    la superficie del vostro disco e vi permette di partizionare
    il vostro disco senza sormontare l'area occupata dai
    file presenti. Il comando vi segue interattivamente
    chiedendovi:

    * "Do you want to make a backup copy of your root
      and bootsector before proceeding (y/n)"
      
      volete creare un back-up dei file di sistema? Si consiglia
      di farlo per stare tranquilli. 

    * Dopo l'analisi del disco vi verr proposto di creare
      una partizione definita "new
      partition". Una volta scelta la dimensione
      ideale premere Invio per confermare e successivamente
      il tasto "c" per applicare
      il partizionamento. 

    * Al termine del processo comparir il messaggio
      
      "Ready to write new partition scheme to disk.
      
      Do you want to proceed?"
      
      Le possibilit sono "y"
      per confermare le partizioni scelte, "n"
      per annullare le scelte fatte. 

    * Digitate la lettera "y". 

Se l'esecuzione  stata portata a termine con successo 
difficile riscontrare successivi problemi. Tuttavia, in
casi di emergenza  necessario utilizzare il comando restorrb.exe
riavviando il proprio computer con il dischetto creato precedentemente.

7.1.2 GNU/Linux 

Se desiderate installare unicamente GNU/Linux su un disco
fisso  sufficiente proseguire nella seguente sezione.

7.2 Fase di Installazione 

In seguito alle scelte fatte precedentemente eseguite le
seguenti operazioni:

1. Inserite il cd-rom della vostra distribuzione GNU/Linux
  nell'apposito lettore. 

  (a) Se l'avvio da cd-rom non avviene bisogna considerare
    l'avvio con i dischetti floppy, successivamente discussa. 

2. Riavviate il computer (con inserito il floppy relativo
  all'immagine rescue.bin se il caso rientra in questa modalit). 

3. Entrate nella configurazione del BIOS premendo l'apposito
  tasto che vi viene indicato (genericamente il tasto funzione
   ). 

4. Cambiate l'ordine indicato nella sezione Boot mettendo
  come primo elemento l'unit cd-rom. 

5. Salvate le nuove configurazioni e riavviate il computer. 

All'avvio del computer verr analizzata per prima l'unit
cd-rom, invece del floppy o del disco fisso. Nel nostro
caso, avendo inserito l'apposito cdrom, verr lanciato il
programma di installazione.

Se l'operazione non funziona correttamente  possibile avviare
la fase di installazione con i dischetti di avvio. Debian
GNU/Linux nel cdrom #1, sotto la directory "/install"
presenta 2 file immagine necessari per i floppy di avvio. 

Modalit di creazione dei dischetti di avvio da Unix/Linux

Digitate quanto segue:


# mount /dev/cdrom

# cd /cdrom/install


Comandi necessari per montare il cdrom e posizionarsi nella
directory "install" all'interno
del cdrom di installazione #1. Inserite il primo dischetto
floppy e lanciate il seguente comando:


# dd if=rescue.bin of=/dev/fd0


Al termine procedete con il secondo dischetto e il comando:


# dd if=root.bin of=/dev/fd0


Il primo dischetto sar quello di partenza mentre il secondo
vi verr chiesto interattivamente. 

Modalit di creazione dei dischetti di avvio da Windows

Esplorare il contenuto del cdrom. Sotto la cartella "install"
ci sono le due immagini necessarie e potete utilizzare l'utility
rawrite.exe per l'operazione.

7.2.1 Quante partizioni per GNU/Linux? 

In una installazione comune sono necessarie due partizioni
(immagine [Disco Fisso]), una per il software
e una denominata swap, area destinata a coadiuvare la memoria
RAM esistente nello svolgimento delle applicazioni.

Partizione Principale La dimensione pu variare
  a seconda delle vostre esigenze e della vostra curiosit.
  Il mio consiglio  di fare una installazione completa
  (oltre 1 Gbyte) per poter esplorare le numerose applicazioni
  presenti e le loro potenzialit. Se le vostre intenzioni
  sono ridotte al semplice sistema operativo vi basteranno
  meno di 100 Mbyte. 

Partizione Swap La dimensione ideale, sopratutto
  per chi utilizza un kernel della generazione 2.4.x, 
  il doppio della dimensione della memoria RAM disponibile.
  Esempio: se avete 128 Mbyte di RAM lo spazio SWAP ideale
  sar 256 Mbyte. 

Per creare queste partizioni ogni distribuzione di GNU/Linux
offre diverse soluzioni (vedi il programma Disk Druid per
Red Hat Linux, Mandrake) ma la scelta storica ricade su
una applicazione a riga di comando chiamata fdisk, da tempo
testata e garantita.

Ricollegandoci alla sezione precedente, in entrambi i casi
di installazione (Windows/Linux o unicamente Linux) dovrete
dividere la partizione che avete destinato a GNU/Linux nelle
due parti precedentemente citate, partizione principale
e partizione di Swap.([fig] ([fig] Esempio di partizionamento del Disco Fisso.<Disco Fisso>) 

7.2.2 Utilizzare fdisk 

Questa applicazione  minimale nell'interattivit ma molto
potente. Malgrado le numerose opzioni si pu analizzare
un percorso comune per gli utenti.

1. Eseguire fdisk. E' possibile farlo durante le fasi di installazioni
  di GNU/Linux o successivamente durate la normale esecuzione. 

2. Digitate la lettera "p"
  per visualizzare le partizioni presenti. Potrete notare
  che ogni partizione presenta una serie di dati tra i quali
  un proprio device boot (ad esempio /dev/hda1) e il tipo
  di "System". Se avete creato le partizioni
  da Windows troverete nell'ultimo campo valori come vfat
  o Fat16, Fat32, i tipici file system([footnote] Un file system  uno strumento per la gestione
e l'organizzazione dei file. )  di questo sistema operativo. 

3. Cambiate il partizionamento del vostro disco fisso. Utilizzate
  i tasti 'd' per cancellare le partizioni gi esistenti
  e il tasto "n" per crearne
  di nuove. Se volete mantenere la partizione di Windows
  non agite su quest'ultima con le opzioni indicate. 

4. Digitate nuovamente la lettera "p"
  per visualizzare ogni cambiamento. Le partizioni create
  in questa fase saranno di tipo Linux Native([footnote] Linux Native  rappresentato dal file systema
ext2. )  le quali vanno bene per l'installazione della distribuzione
ma non per la partizione Swap. Per quest'ultima infatti
 necessario digitare la lettera "t",
indicare la partizione in questione, visualizzare i tipi
presenti (lettera "l")
e confermare la scelta. La codifica per le partizioni Linux
Swap  il numero "82". 

5. Visualizzate lo stato della vostra configurazione con la
  lettera "p". Se siete soddisfatti
  confermate il tutto digitando il tasto "w". 

Esiste una versione di fdisk anche per Dos ma il numero di
file system supportati  minore e sono esclusi i tipi relativi
a GNU/Linux. Sono inevitabili le considerazioni negative
che nascono da questo ambiente che cerca di ostruire soluzioni
alternative e concorrenti con ogni mezzo disponibile. Una
buona mossa per una compagnia ma quanto di tutto questo
 positivo ai fini evolutivi e sociali?

 Nota su ReiserFS

Molte distribuzioni GNU/Linux hanno introdotto l'installazione
e la configurazione di questo tipo di file system. ReiserFS
 particolarmente attraente perch introduce un file system
journaled, un sistema veloce e sicuro in caso di problemi
o salti di corrente elettrica che potrebbero rovinare i
dischi fissi e i relativi dati contenuti. Un file system
journaled pu risultare particolarmente utile man mano che
cresce la dimensione dei dischi fissi. Utilizzare ReiserFS
 gi una garanzia nel momento stesso che scrivo il presente
manuale quindi  possibile scegliere quest'ultimo in alternativa
al classico ext2: il file system  stato ufficialmente introdotto
nel kernel di Linux dalla versione 2.4.1 dello stesso.

 F.A.Q. 

Domanda: "Posso avere dei problemi installando
  GNU/Linux sul mio computer portatile?" 

Il supporto per i computer portatili  veramente ampio anche
se esistono alcune limitazioni. Per avere maggiori chiarimenti
si pu consultare il seguente sito Internet:


http://www.cs.utexas.edu/users/kharker/linux-laptop/


Esistono documenti come il Laptop-Howto, PCMCIA-Howto e USB-Howto.

Domanda: "Ho una scheda sonora e vorrei utilizzarla.
  Cosa devo fare?" 

Gran parte delle schede sonore attualmente in commercio sono
supportate. Un metodo generico per la configurazione  l'utilizzo
del programma isapnp, comune in gran parte delle distribuzioni
GNU/Linux ma sicuramente per utenti con una certa esperienza.
La distribuzione Red Hat offre uno strumento chiamato sndconfig
capace di testare la scheda sonora posseduta e configurarla
automaticamente.

Domanda: "Vorrei disinstallare LILO dal mio disco
  fisso. Cosa devo fare?" 

In ambiente Windows  necessario aprire una finestra del
prompt e digitare:


c:\FDISK /MBR
 

Con GNU/Linux bisogna digitare al prompt: 


lilo -u


Domanda: "Esistono alternativi loader di sistema
  oltre a LILO?"

La soluzione maggiormente in voga  GRUB, tutelato da licenza
GPL (mentre LILO non lo , un limite alla propria evoluzione
naturale). GRUB offre un approcio differente: funziona come
una ridotta shell di comando.

Domanda: "Tento di lanciare il Server X Window
  ma ricevo degli errori particolari. Cosa devo fare?" 

Nella maggior parte dei casi i problemi sono relativi a configurazioni
errate del file XF86Config, dove risiedono tutti i parametri
necessari per l'esecuzione. In prima istanza consiglio di
utilizzare XF86Setup, oppure Xconfigurator (Red Hat) o sax
(S.u.S.E.) per ricreare questo file essenziale, probabilmente
inesistente o corrotto. Se i problemi persistono si consiglia
di visitare il sito:


http://www.xfree86.org/


controllando che la propria scheda grafica sia supportata.

Domanda: "Esistono documenti che elenchino l'hardware
  supportato da GNU/Linux?" 

Ogni grossa distribuzione pubblica sui propri siti Internet
queste liste e a tale scopo consultare questi documenti
on-line pu risultare molto utile per capire i limiti delle
possibilit e orientarsi successivamente verso l'acquisto
di hardware particolare.

Domanda: "Dispongo di un sistema GNU/Linux con
  filesystem ext2 ma mi piacerebbe trasformare quest'ultimo
  in un filesystem journaled. Cosa bisogna fare?" 

Con la versione del kernel di Linux 2.4.x sono stati introdotti
diversi filesystem journaled, XFS di Sgi, JFS di IBM, ReiserFS
e ext3. Gli ultimi due sono al momento le soluzioni preferite
dall'utenza.

Il filesystem ext3, come dice il nome,  l'evoluzione di
ext2 con supporto journaled. Per passare a questo tipo di
filesystem baster una semplice conversione del filesystem
attuale. Nel caso di ReiserFS i passi da compiere rendono
la cosa leggermente pi complicata. E' infatti necessario
fare un backup delle partizioni ext2, convertirle in ReiserFS
con le appositi utility e riportare i file backuppati sulle
partizioni citate. Questa operazione come si pu capire
non  per tutti ma mi preme sottolineare la possibilit
di cancellare tutti i propri dati con la conversione, quindi
attenti!

Domanda: "All'avvio del computer, dopo la fase
  di installazione, ricevo un messaggio del tipo 'KERNEL
  PANIC: VFS: Unable to mount root fs on 03:03'?" 

Il sistema non riesce a montare la root ("/",
radice) del file system. Per ovviare al contrattempo digitare
l'informazione al prompt del boot loader come segue:


LILO boot: linux root=/dev/hda2


Il numero che segue "/dev/hda<numero>"
indica il numero di partizione. In questo caso  la seconda
partizione del primo disco presente nel computer.

Il Sistema <Capitolo 8>

"GNU/Linux  un sistema multitasking a memoria protetta e
multiutente"


multitasking perch riesce a gestire pi processi (programmi,
  applicazioni) contemporaneamente. 

memoria protetta ogni processo in corso utilizza
  una ben determinata area di memoria per il proprio funzionamento.
  Questa caratteristica offre sicurezza di sistema garantendo
  la sua integrit nonostante il blocco di un processo. 

multiutente perch diverse persone possono collegarsi al
  sistema contemporaneamente e gestire le proprie attivit. 

La definizione non rende tutte le caratteristiche del kernel
di Linux ma rappresenta ad alto livello le principali caratteristiche
di quest'ultimo. Per maggiori dettagli si consiglia di visualizzare
il Linux Information sheet([footnote] http://metalab.unc.edu/pub/Linux/docs//HOWTO/INFO-SHEET) .

 Alcuni confronti

Di seguito poniamo a confronto alcuni tra i sistemi operativi
maggiormente diffusi e GNU/Linux per scoprire quali sono
i limiti e i pregi di quest'ultimo.

GNU/LINUX e UNIX 

GNU/Linux  una sistema operativo decisamente orientato a
UNIX ma  stato sviluppato per avere ottime prestazioni
su hardware comune come i normali pc ed essere liberamente
distribuibile secondo i termini della licenza GPL che lo
tutela. GNU/Linux supporta un'ampia base di hardware, dalle
pi moderne tipologie a quello antiquato e fuori mercato.
UNIX dal canto suo pu vantarsi della propria stabilit
in ambito server da tempo testata e stabile ma il suo contendente
libero cresce rapidamente verso i medesimi obbiettivi.

GNU/LINUX e MS-DOS 

MS-DOS gira solo su processori x86 non  un sistema multi-utente
e multi-tasking;  inoltre un software commerciale. Quest'ultimo
veniva distribuito senza utili strumenti per la gestione
del networking o altro ancora. MS-DOS  un sistema operativo
molto semplice e adeguato per il tipo di hardware per il
quale era destinato inizialmente. Il paragone con GNU/Linux
 abbastanza improponibile perch quest'ultimo, per le proprie
caratteristiche  nettamente superiore al primo.

GNU/LINUX e WINDOWS NT 

MS-Windows NT  un sistema operativo che trae molte caratteristiche
da precedente esperienze come VMS. Questo non  un aspetto
negativo, come per Linux  positivo che la passata esperienza
sia stata presa ad esempio per costrumi qualcosa di nuovo.
Il cuore di NT  di tipo microkernel, un'architettura che
paga il prezzo della modularit con l'efficienza. A parit
di hardware GNU/Linux risulta pi efficiente e anche sul
piano della stabilit quest'ultimo pu garantire maggiore
stabilit del primo. 

GNU/LINUX e WINDOWS 95/98/Me 

Windows (nelle varie versioni indicate)  un sistema largamente
diffuso sia per l'abile campagna commerciale che per la
semplicit di utilizzo offerta dall'interfaccia grafica.
Esiste un ampio parco di software per quest'ultimo ma dal
punto di vista tecnico e sul piano della stabilit il paragone
con GNU/Linux si mantiene abbastanza improponibile per le
caratteristiche di superiorit del secondo.

8.1 Processi in fase di avvio 

 System V Init 

Il programma init viene avviato dal kernel all'avvio del
computer. Si occupa di gestire tutti processi necessari
allo svolgimento delle operazioni comuni. Il modello SysV
Init  diventato lo standard in ambiente GNU/Linux perch
 molto pi semplice e flessibile da utilizzare del tradizionale
BSD Init.

Le configurazioni sono posizionate nella directory /etc dove
potrete trovare le seguenti directory di riferimento:


init.d

rc.boot

rcS.d


rc0.d

rc1.d

rc2.d

rc3.d

rc4.d

rc5.d

rc6.d


Le directory rc#.d con # un numero intero da 1 a 6 rappresentano
i processi da eseguire per ogni tipo di runlevel e pu divergere
tra le varie distribuzioni; al momento, lo schema presentato
 lo standard de facto.

 Gestione dei demoni di sistema

La directory init.d contiene un numero cospicuo di file che
vengono eseguiti per eseguire i principali comandi e processi
di sistema. Se volessimo lanciare un processo successivamente
alla fase di Avvio  possibile farlo digitando:


# /etc/init.d/lpd start


Il demone di stampa viene lanciato mentre per fermarlo:


# /etc/init.d/lpd stop


Esiste anche la possibilit di riavviare il processo con:


# /etc/init.d/lpd restart


Nella fase di avvio la sequenza di esecuzione seguita da
init.d  la seguente:

* init esegue il file /etc/rcS

* init avvia tutti i file per il runlevel specifico 

* init avvia il file /etc/rc.local

 I Runlevel di Init 

Esistono 7 runlevel e i relativi file di configurazione sono
divisi nelle directory precedentemente viste in /etc/rc.d/
nella forma rc#.d. I runlevel determinano particolari stati
del vostro sistema:

0 Sistema spento \leftarrow  riservato

1 Modalit utente singolo \leftarrow 
  riservato

2 Modalit multi-utente senza servizio NFS

3 Modalit multi-utente, la modalit di base

4 Non utilizzata

5 Modalit grafica in ambiente X

6 Riavvio \leftarrow  riservato

Il tipo di runlevel viene indicato dal file /etc/inittab
che presenta al suo interno una linea del tipo: 


id::initdefault:


Se  nelle vostre intenzioni avviare il vostro sistema direttamente
con l'interfaccia X Window baster sostituire il valore
con , quello del runlevel specifico. Il vostro file /etc/inittab
potr risultare come segue:


# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not
have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

 

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

# Things to run in every runlevel

ud::once:/sbin/update

 

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few
minutes

# of power left.  Schedule a shutdown for 2 minutes from now.

# This does, of course, assume you have powerd installed and
your

 

 

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

 

# Run xdm in runlevel 5

# xdm is now a separate service

x:5:respawn:/etc/X11/prefdm -nodaemon 


Gli utenti SuSE hanno una differente organizzazione dei runlevel
ed  possibile capire le differenze con un semplice


$ cat /etc/inittab

8.2 File System 

Un file system  il metodo e la struttura dei dati che un
sistema operativo utilizza per gestire i file disposti sulle
unit fisiche presenti (disco fisso, floppy, cd-rom). La
parola viene spesso utilizzata per indicare una partizione
o un disco dedicato ad una particolare funzione. Dicendo
"ho due file system" intendo indicare
che ho due partizioni sul mio disco fisso con due differenti
metodi di gestione dei file;  il caso comune per la maggior
parte delle persone che tengono su una partizione GNU/Linux
e un altro sistema operativo sull'altra (es. Windows).

Con l'affermazione creare il file system si vuol intendere
l'inizializzazione di una partizione o un disco, spesso
nota come "formattazione",
utilizzando il metodo di gestione dei file scelto. Ogni
sistema operativo utilizza un file system in maniera nativa,
di base, e ne supporta ulteriori per determinate esigenze.
Questo  il caso di GNU/Linux che adotta il file system
ext2 in forma nativa ma supporta una ampia e variegata serie
di file system esistenti: minix, xia, ext, msdos, umsdos,
iso9660 (il file system standard per i cd-rom), nfs (network
file system), hpfs (os/2), sysv (systemV/386, Coherent e
Xenix), xfs (Silicon Graphics), vfat (Windows 95/98), ntfs
(Windows NT) ed altri ancora.

Organizzazione dei file 

Esiste uno standard denominato FHS (Filesystem Hierarchy
Standard) che descrive la disposizione dei file e delle
directory su sistemi di tipo Unix-compatibili. Le distribuzioni
GNU/Linux pi diffuse si attengono anche loro a queste specifiche
ed organizzano il proprio file system nella struttura ad
albero successivamente descritta (immagine: [rappresentazione del filesystem]).([fig] ([fig] Rappresentazione gerarchica del filesystem.<rappresentazione del filesystem>) 

/ Viene denominata la root di sistema. E' la base della
  nostra alberatura, il livello pi alto del nostro sistema
  di riferimento. Genericamente non contiene file ma solamente
  le altre importanti directory di sistema. 

/bin Directory dove risiedono i comandi basilari utilizzati
  durante l'avvio del sistema e per le procedure basilari
  di autenticazione. Comunque comandi accessibili da utente. 

/sbin Directory dove risiedono i comandi basilari per la
  gestione del sistema, chiaramente non destinati agli utenti. 

/dev Directory dove sono posizionati i dispositivi necessari
  per accedere a periferiche o sistemi di memorizzazione. 

/etc Directory dove sono disposti i file di configurazione
  del sistema. 

/home Directory dove vengono dislocate le home degli utenti,
  ovvero lo spazio riservato ad ogni singolo utente (es.
  /home/darshan  la directory home dell'utente darshan). 

/lib Directory delle librerie condivise dai programmi e
  utili per il loro funzionamento. 

/proc E' un file system virtuale inesistente sul disco
  o meglio senza reale allocazione su disco. Viene utilizzato
  per disporre informazioni di sistema relative in modo
  particolare al kernel.

/tmp Directory dei file temporanei. 

/var Dati variabili, code di stampa.

/usr E' la directory che contiene gran parte dei programmi
  esistenti nel sistema e per questo motivo ha dimensioni
  superiori alle directory precedentemente esaminate. Al
  suo interno esistono ulteriori gerarchie: 

      /usr/X11R6 Directory destinata al
  sistema X Window 

      /usr/bin Gran parte dei comandi utente. 

      /usr/games Giochi e programmi educativi. 

      /usr/include Directory destinata a
  contenere i file header

      /usr/lib Librerie. 

      /usr/local Gerarchia locale. 

      /usr/sbin Programmi di sistema non
  essenziali. 

      /usr/share Dati indipendenti dall'architettura
  hardware 

      /usr/src Directory delle sorgenti.

La rappresentazione data pu sembrare difficile da immaginare
in una finestra di terminale ma pu risultare amichevole
e chiara in ambienti desktop come GNOME o KDE.

8.3 Permessi sui file 

Un sistema multiutente necessita di una soluzione per la
protezione dei file e per garantire la sicurezza delle attivit
degli utenti come quella del sistema stesso. In sistemi
operativi Unix everything is a file, ogni cosa  un file
con annesse le informazioni necessarie per la gestione.

Analizziamo le informazioni di alcuni file:


$ ls -l

-rw-r--r--  2 utente gruppo    0 Nov 23 01:54 fileuno

lrwxrwxrwx  1 utente gruppo    4 Nov 23 01:55 link -> file

drwxr-xr-x  2 utente gruppo 1024 Nov 23 01:57 Directory


Utilizzando il comando ls come indicato visualizziamo i file
nella directory mostrando i permessi relativi espressi dalle
prime 10 combinazioni di lettere visualizzate. La prima
lettera pu variare come segue:

- un file comune 

d una directory 

c un character special file 

p un named pipe 

s un file socket 

l un link simbolico 

Nell'esempio visto abbiamo riscontratato un file link, una
directory e un file comune. Le rimanenti 9, prese a 3 a
3, rappresentano i permessi rispettivamente per l'utente
proprietario, il gruppo e agli altri, gli utenti nel sistema
non considerati nelle prime due classi. Per modificare i
permessi sui file  necessario utilizzare il comando chmod
utilizzando determinate combinazioni numeriche presentate
nella tabella [permessi sui file].([tab] +---------------+------------+-----------------------------------+
| Numero Ottale |   Permesso |   Descrizione                     |
+---------------+------------+-----------------------------------+
|       0       |     ---    |   Nessuna autorizzazione          |
+---------------+------------+-----------------------------------+
|       1       |     --x    |   Esecuzione                      |
+---------------+------------+-----------------------------------+
|       2       |     -w-    |   Scrittura                       |
+---------------+------------+-----------------------------------+
|       3       |     -wx    |   Scrittura, Esecuzione           |
+---------------+------------+-----------------------------------+
|       4       |     r--    |   Lettura                         |
+---------------+------------+-----------------------------------+
|       5       |     r-x    |   Lettura, Esecuzione             |
+---------------+------------+-----------------------------------+
|       6       |     rw-    |   Lettura, Scrittura              |
+---------------+------------+-----------------------------------+
|       7       |     rwx    |   Lettura, Scrittura, Esecuzione  |
+---------------+------------+-----------------------------------+
([tab] Permessi sui file.<permessi sui file>) 

Se desideriamo cambiare i permessi sul file "fileuno"
dovremo digitare una combinazione di numeri nella forma
seguente:


$ chmod 700 fileuno 
 

Un modo alternativo per la medesima azione  il seguente:


$ chmod u+rxw fileuno


Nel modo illustrato sono stati decretati sul file in esame
i diritti di lettura, scrittura ed esecuzione per il solo
proprietario. La seconda forma pu risultare pi semplice
da apprendere perch indica quali dei tree soggetti vengono
considerati e quali diritti questi possono avere. In forma
estesa:


$ chmod ugo+rxw fileuno 
 

Dove "u"  user (utente proprietario), "g"
 group (il gruppo di appartenenza), "o"
 other (tutti quelli che non sono il proprietario o non
sono presenti nel gruppo di riferimento). Visualizziamo
il cambiamento avvenuto:


$ ls -l fileuno

-rwxrwxrwx 1 darshan darshan 0 lug 15 18:06 fileuno 
 

Per togliere il permesso di eseguibilit la forma si discosta
di poco:


$ chmod ugo-x fileuno


Modalit SUID

E' possibile assegnare ad un file un dato permesso per essere
eseguito con ID dell'utente "root".
Tale operazione risulta utile se si desidera assegnare agli
utenti del sistema la possibilit di eseguire comandi strettamente
vincolati all'identificativo dell'amministratore di sistema.
Di seguito un esempio pratico:


# chmod 4755 /sbin/shutdown


Notate il numero "4"
in aggiunta alla canonica terzina "755"
di permessi gi analizzati. Tramite questa aggiunta tutti
gli utenti del sistema saranno in grado di lanciare il comando
"/sbin/shutdown" che tradotto in pratica
permetter il riavvio o lo spegnimento della macchina. Se
da un lato si possono trarre vantaggi un utilizzo eccessivo
della modalit SUID pu minare il sistema diminuendo in
certi casi la sicurezza. Consiglio: dosare con cautela e
con consapevolezza! 

8.4 Le Shell 

La necessit dell'uomo di dialogare con la macchina ha portato
lo sviluppo di uno strumento capace di mediare tra essi
e rendere flessibile e minima la distanza tra "quello
che vogliamo fare" e l'effettiva esecuzione:
la shell.

 Le Shell a caratteri 

La shell  un interprete che legge ed esegue dei comandi
imposti dagli utenti. A differenza di particolari sistemi
operativi dove si  vincolati ad una sola ed unica shell,
nei sistemi operativi Unix / Linux,  possibile scegliere
quale shell si desidera utilizzare a seconda delle propria
esperienza e delle proprie necessit. Per importanza storica
e per diffusione le shell che meritano di essere citate
sono la shell Korn, Bourne, Bash (pagina [la bash])
e la shell C. In ambito del sistema operativo GNU/Linux
viene adottata la shell Bash, strumento flessibile che risponde
alle esigenze pi particolareggiate di gestione del sistema.

 Le Shell grafiche 

Nel corso dell'evoluzione dei sistemi operativi, sono stati
creati strati superiori all'interfaccia a caratteri per
permettere un approccio maggiormente istintivo e comodo
con il computer. In ambienti di tipo Unix l'interfaccia
di questo tipo  rappresentata da una combinazione software
tra il sistema X Window([footnote] X Window System  un marchio registrato di The
Open Group. )  e un'ampia serie di windows manager e ambienti desktop.
A pagina [Capitolo 11] troverete adeguati riferimenti.

La Bash <la bash>

La Bash (Bourne Again Shell) include quasi tutte le funzioni
offerte dalle shell C e Korn e ne aggiunge ulteriori che
ampliano largamente le possibilit di un utente. Un'ulteriore
nota di rilievo di questa shell  la sua forma free secondo
la filosofia Open Sources, che da un lato permette di ricevere
i miglioramenti di una comunit di sviluppatori e dall'altro
 liberamente utilizzabile per la sua natura totalmente
gratuita.

 Lo storico dei comandi (history) <history>

Ogni comando lanciato viene memorizzato in una sequenza storica.
Questa caratteristica serve a riutilizzare i comandi senza
dover ridigitarli ogni volta scorrendo con i tasti direzione
(le frecce per muoversi in alto, basso).

 Alias 

Per abbreviare la digitazione di comandi con molte opzioni
 possibile utilizzare gli alias. Questi ultimi vengono
utilizzati nei file di configurazione della shell in seguito
trattati nella forma seguente:


alias ls="ls -color"


L'esempio crea un alias del comando ls per utilizzare i colori
e dev'essere inserito nel file .bashrc presente nella propria
home directory.

 Standard Input, Standard Output 

Lo standard output, o stdout,  rappresentato da quello che
vedete sul vostro monitor, risultato dei comandi digitati
ed eseguiti. Nel momento stesso che voi digitate sulla vostra
tastiera, utilizzate lo standard input, o stdin.

 Standard Error 

La shell permette di filtrare i messaggi di errore dallo
standard output. Fanno parte dello standard error tutti
i messaggi che possono essere riportati da applicazioni
mal funzionanti o mal configurate. Per poter gestire e immagazzinare
in un file questi errori  necessario utilizzare una appropriata
sintassi. Nell'esempio che segue memorizziamo gli eventuali
errori che possono sorgere dal lancio del Server X:


$ X 2> errori.txt


Come potete notare il tutto si concentra nei caratteri "2>".

 Ridirezionamento dei comandi 

Se desideriamo redirigere il risultato di un comando dallo
standard output su un file  necessario utilizzare il carattere
">" come segue: 


$ ls > esempio.txt


Se il file "esempio.txt"
esisteva precedentemente verr sostituito il contenuto del
file esistente con il risultato del comando utilizzato.
Se volessimo aggiungere il risultato del nostro comando
accodandolo al contenuto del file esistente raddoppiamo
il carattere di ridirezione: 


$ ls >> esempio.txt


E' possibile invertire il percorso da standard input a standard
output utilizzando il carattere "<"
come segue:


$ cat < /etc/passwd


Il comando digitato visualizza il contenuto del file "/etc/passwd".
Se decidessimo di ridirigere il risultato di un comando
verso un ulteriore comando  necessario utilizzare il pipe
"|" come segue:


$ ls -la | more


Il comando digitato mostra il contenuto di una directory
e lo passa al comando more per consultare il risultato pagina
per pagina sullo standard output.

 Wildcards 

Nell'uso quotidiano dei comandi capita spesso di dover automatizzare
delle procedure agendo su un numero variabile di file. A
tale scopo vengono utilizzati dei "caratteri
jolly", che permettono di agire su una lista numerosa
di file. I metacaratteri supportati dalla gran parte delle
shell sono:

* espande zero o pi caratteri 

? espande un unico carattere 

[a-z] espande un carattere nell'intervallo a-z 

[abc] espande un carattere nell'insieme (a, b, c)

~ rappresenta la home directory dell'utente 

Per disabilitare l'uso dei metacaratteri  necessario anteporre
il carattere "\". Nell'esempio
che segue viene dimostrato come utilizzare un comando della
shell associandolo con il metacarattere "*"
per rimuovere tutti i file che hanno "stat"
come parte iniziale del nome:


$ rm -fr stat*


I comandi utilizzati verranno spiegati in seguito. Per ampliare
le proprie conoscenze sulla bash si consiglia di consultare
il sito Internet http://www.linuxdoc.org e scaricare le
seguenti guide:

* Bash Prompt HOWTO 

* Bash Programming HOWTO 

Pratica <Capitolo 9>

L'elenco dei comandi di seguito riportati  in ordine alfabetico
per dare la possibilit di ritrovare il comando conoscendone
il nome. Pu capitare che vengano citati comandi non discussi
e si possa sottintendere informazioni importanti. A tale
scopo  stato creato il capitolo seguente, esposizione pratica
di lavoro con la shell dei comandi. Le opzioni riportate
con i comandi sono una minima parte di quelle esistenti.
Molto spesso ogni comando offre una ampia possibilit di
scelta ma la nostra scelta  caduta sulla quotidianit delle
operazioni.

10.1 Eseguibilit 

Ogni comando pu differire da un altro per il linguaggio
in cui  stato programmato ma esistono caratteri comuni
per ogni sistema Unix/Linux. Tutti i comandi sono tendenzialmente
organizzati in particolari posizioni nel file system. Le
posizioni dove il sistema cerca i comandi sono indicati
nella variabile di ambiente PATH. Per conoscere queste locazioni
digitate:


# echo $PATH

/usr/sbin:/bin:/usr/bin:/usr/bin/X11
 

Ogni posizione  separata dal carattere ":".
Per ampliare i percorsi di ricerca comandi  necessario
indicare al sistema quest'ultime digitando quanto segue:


# export PATH=$PATH:/usr/local/bin
 

rieseguendo il comando precedente la situazione cambier
come segue:


# echo $PATH

/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin
 

In questo caso  stata aggiunta la directory /usr/local/bin
al PATH e il sistema potr lanciare i comandi presenti in
quest'ultima posizione. E' possibile lanciare comandi anche
fuori dai percorsi presenti nella variabile PATH e per fare
questo  necessario precedere il nome di comando con le
lettere ./ (dalla directory dove  presente il comando)
come segue:


# ./comando
 

Resta inteso che sia in quest'ultima situazione come nelle
precedenti il comando o file deve avere i diritti di esecuzione
precedentemente analizzati.

10.2 Comandi

La distribuzione di riferimento del manuale  Debian GNU/Linux
ma non si  esclusa la considerazione verso le distribuzioni
Red Hat Linux e affini. Nelle pagine seguenti verranno mostrati
i comandi probabilmente pi diffusi e comuni.

10.2.1 adduser<adduser>

Questo comando  necessario per aggiungere un utente al sistema
ed  una operazione concessa unicamente all'utente root,
l'amministratore. Digitate:


# adduser nome_scelto 
 

dove nome_scelto  il nostro utente da aggiungere. Per configurare
una password a questo nuovo utente fate riferimento al comando
passwd a pagina [passwd].

10.2.2 apropos <apropos>

Questo comando cerca all'interno degli elenchi whatis tutte
le corrispondenze relative alla parola indicata. Esempio:


$ apropos keyboard


Verranno presentate tutte le stringhe di testo contenenti
la parola "keyboard".

10.2.3 apt-cache<apt-cache>

Questo comando  relativo alla distribuzione Debian GNU/Linux
e permette di compiere determinate azioni sui pacchetti
software. Tra quest'ultime segnaliamo:


$ apt-cache search rdate

rdate - Set the system's date from a remote host.


Per cercare informazioni sui pacchetti software con una specifica
corrispondenza. Per ottenere maggiori informazioni su un
determinato pacchetto:


$ apt-cache show rdate

Package: rdate

Priority: optional

Section: net

Installed-Size: 64

Maintainer: Herbert Xu <herbert@debian.org>

Architecture: i386

Version: 1.3-3

Replaces: netstd

Depends: libc6 (>= 2.1.2)

Filename: dists/potato/main/binary-i386/net/rdate_1.3-3.deb

Size: 7040

MD5sum: 322c5b2c859e32f342457e8e46559860

Description: Set the system's date from a remote host.

 Rdate displays and sets the local date and time from the
host name or

 address given as the argument. 
It uses the RFC868 protocol which is

 usually implemented as a built-in service of inetd(1).

10.2.4 apt-get<apt-get>

Questo comando  relativo alla distribuzione Debian GNU/Linux.
Ha funzionalit correlabili ai comandi rpm (pagina [rpm])
e dpkg (pagina [dpkg]) aggiungendo caratteristiche
ulteriori e rendendo la procedura di gestione dei pacchetti
software molto pi semplice per un utente della distribuzione
pocanzi citata. Per eseguire l'installazione di un pacchetto
.deb  necessario digitare:


# apt-get install nomefile


Se il pacchetto software  gi installato nel sistema viene
compiuto l'aggiornamento automatico di quest'ultimo con
la nuova versione. Per procedere alla disinstallazione di
un pacchetto software digitate:


# apt-get remove nomefile


Il comando  utile anche per aggiornare tutti i pacchetti
software del proprio sistema sfruttando la connettivit
ad Internet. Questo  possibile inserendo un'apposita dicitura
nel file /etc/apt/sources.list come segue:


deb ftp://ftp.debian.org/debian unstable main contrib non-free


e digitare al prompt:


# apt-get update


Quest'ultimo comando sfrutter la connessione (se attiva)
per aggiornare automaticamente la lista dei pacchetti software
presenti e disponibili per l'installazione e l'aggiornamento
di sistema. Una volta aggiornata quest'ultima lista  possibile
aggiornare i pacchetti software presenti nel sistema con:


# apt-get upgrade

10.2.5 bzip2 <bzip2>

Questo comando serve a comprimere un file tramite l'algoritmo
bz2. Per comprimere un file  necessario digitare:


$ bzip2 nuovofile


Il file "nuovofile" verr compresso
e verr rinominato come "nuovofile.bz2".
Per scompattare il file presente  necessario utilizzare
il comando bunzip2:


$ bunzip2 nuovofile.bz2


10.2.6 cal 

Questo comando stampa un calendario per uno specifico mese
e/o anno. Digitando il comando senza opzioni si otterr
il calendario del mese corrente:


$ cal

    novembre 1999

do lu ma me gi ve sa

    1  2  3  4  5  6

 7  8  9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30


Un ulteriore esempio che mostra il mese di giugno (6) del
1969:


$ cal 6 1969

     giugno 1969

do lu ma me gi ve sa

 1  2  3  4  5  6  7

 8  9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30


Per mostrare l'intero calendario di un anno:


$ cal 1999
 

10.2.7 cardctl

Questo comando  una utilit di controllo delle schede PCMCIA
disponibili per computer portatili. Vediamo alcune opzioni:


# cardctl status


Mostra lo stato attuale della scheda presente.


# cardctl config


Mostra le configurazioni della scheda presente.


# cardctl ident


Visualizza le informazioni identificative della scheda.


# cardctl suspend


Interrompe la corrente che alimenta la scheda.


# cardctl eject


Disabilita la gestione e interrompe l'alimentazione della
scheda.


# cardctl insert


Avvisa i driver di gestione che la carta  stata nuovamente
inserita e deve essere attivata.

10.2.8 cat 

Questo comando mostra il contenuto di un file di testo e
pu concatenare diversi file insieme. Per aggiungere il
contenuto del fileuno in coda al filedue  necessario digitare
la seguente sequenza di comandi: 


$ cat fileuno >> filedue
 

Per consultare il contenuto di un file:


$ cat fileuno
 

Se il contenuto di un file  ampio, durante l'esecuzione
del comando potreste non visualizzare la totalit delle
informazioni presenti. A tale scopo  necessario utilizzare
il comando more successivamente descritto.

10.2.9 cd 

Questo comando permette di spostarvi nella struttura ad albero
delle directory. Quando un utente si collega al sistema
viene automaticamente posizionato nella sua directory "home",
usualmente nella posizione "/home/nome_utente/".
Per spostarsi in una sottodirectory chiamata "Tesi"
disposta nella corrente directory:


$ cd Tesi/


Per spostarsi nella directory "/home/darshan/Tesi/Cap06/"
digitate:


$ cd /home/darshan/Tesi/Cap06/


Per spostarsi dalla directory attuale a quella superiore,
digitate: 


$ cd ..


Per spostarvi nella directory "root",
digitate: 


$ cd /


Per ritornare nella vostra "home"
directory, digitate: 


$ cd


Per ritornare nella directory precedente alla posizione attuale: 


$ cd -

10.2.10 cdrecord<cdrecord>

L'applicazione maggiormente utilizzata per masterizzare con
GNU/Linux  sicuramente cdrecord, un'utility da console
ben testata e potente. La prima utile operazione da compiere
prima di agire  visualizzare le periferiche presenti come
segue:


# cdrecord -scanbus

Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000
Jrg Schilling

Linux sg driver version: 3.1.15

Using libscg version 'schily-0.1'

scsibus0:

   0,0,0   0) 'SONY   '
'CD-RW CRX140E ' '1.0n' Removable CD-ROM

   0,1,0   1) 'UTI    '
'CD_ROM        '
'V4.6' Removable CD-ROM

   0,2,0   2) *

   0,3,0   3) *

   0,4,0   4) *

   0,5,0   5) *

   0,6,0   6) *

   0,7,0   7) *


Come  possibile vedere, esiste un masterizzatore e un lettore
CD. A questo punto il passo per masterizzare  semplice:


# cdrecord -v speed=4 dev=0,0,0 -data dati.iso

Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000
Jrg Schilling

TOC Type: 1 = CD-ROM

scsidev: '0,0,0'

scsibus: 0 target: 0 lun: 0

Linux sg driver version: 3.1.15

Using libscg version 'schily-0.1'

atapi: 1

Device type    : Removable
CD-ROM

Version       
: 0

Response Format: 1

Vendor_info    : 'SONY    '

Identifikation : 'CD-RW  CRX140E  '

Revision      
: '1.0n'

Device seems to be: Generic mmc CD-RW.

Using generic SCSI-3/mmc CD-R driver (mmc_cdr).

Driver flags   : SWABAUDIO

Drive buf size : 4183808 = 4085 KB

FIFO size     
: 4194304 = 4096 KB

Track 01: data  510 MB

Total size:    
585 MB (58:01.78) = 261134 sectors

Lout start:    
586 MB (58:03/59) = 261134 sectors

Current Secsize: 2048

ATIP info from disk:

  Indicated writing power: 4

  Is not unrestricted

  Is not erasable

  Disk sub type: Medium Type A, low Beta category (A-) (2)

  ATIP start of lead in:  -11318
(97:31/07)

  ATIP start of lead out: 336225 (74:45/00)

Disk type:    Short strategy
type (Phthalocyanine or similar)

Manuf. index: 22

Manufacturer: Ritek Co.

Blocks total: 336225 Blocks current: 336225 Blocks remaining:
75091

Starting to write CD/DVD at speed 4 in write mode for single
session.

Last chance to quit, starting real write in 1 seconds.

Waiting for reader process to fill input buffer ... input
buffer ready.

Performing OPC...

Starting new track at sector: 0

Track 01: 510 of 510 MB written (fifo 100%).

Track 01: Total bytes read/written: 534798336/534798336 (261132
sectors).

Writing  time:  876.092s

Fixating...

Fixating time:   61.167s

cdrecord: fifo had 8424 puts and 8424 gets.

cdrecord: fifo was 0 times empty and 8086 times full, min
fill was 71%.


L'opzione "-v" per avere il maggior
numero di informazioni durante l'esecuzione del comando,
"speed=4" per indicare che la velocit di masterizzazione
dovr essere di 4x, "dev=0,0,0"
indica il dispositivo per masterizzare e "-data
dati.iso" per utilizzare una ben determinata immagine
iso dati. L'esempio era relativo alla masterizzazione dati;
per quel che riguarda l'audio il comando adeguato cambia
ben poco:


# cdrecord dev=0,0,0 -audio traccia.cdr traccia1.cdr


La masterizzazione delle tracce audio  denominata TAO (Track
At Once); sar prodotto un cd audio dove tra una traccia
e l'altra intercorrono 2 secondi di pausa. Alternativa a
TAO, scelta discutibile sulla qualit finale del risultato,
 DAO (Disk At Once), modalit che migliora il risultato
finale ed evita la possibilit di fruscii e altri effetti
indesiderati.

10.2.11 chattr<chattr>

Questo comando cambia gli attributi di un file su un file
system di tipo ext2 e pu essere particolarmente sotto aspetti
di backupt di sistema e sicurezza. Gli obiettivi del comando
possono essere alquanto oscuri per un utente alla prime
armi ma verranno utilizzati alcuni esempi reali per semplificare
l'apprendimento.


$ chattr +i documento.txt


Il comando appena digitato rende "immutevole"
il file documento.txt da modifiche, aggiunte e non si potranno
creare link a quest'ultimo. Se volessimo rendere "immutevole"
una directory con tutti i file presenti al suo interno avremmo
dovuto digitare:


$ chattr -R +i documenti/ 
 

Ulteriori attributi da dare ad un file (o directory) sono
i seguenti:


$ chattr +a documento.txt 
 

L'attributo "a" rende il file gestibile
solo in modalit append ovvero  permesso solamente apportare
aggiunte al file.


$ chattr +c documento.txt 
 

Un file con l'attributo "c"
viene automaticamente compresso sul disco dal kernel. La
lettura del file restituisce i dati decompressi mentre in
scrittura ogni informazione viene compressa e poi scritta
sul disco.


$ chattr +d documento.txt 
 

L'attributo "d" candida un file
per il backup tramite il comando dump .


$ chattr +s documento.txt 
 

Per ulteriori informazioni si consiglia la guida in linea:


$ man chattr 
 

Abbiamo visto che per aggiungere attributi  stato utilizzato
il carattere "+". Per toglierli
dobbiamo alternativamente utilizzare il carattere "-"
come nell'esempio seguente:


$ chattr -i documento.txt

10.2.12 chmod 

Questo comando cambia i permessi associati per ogni file
presente nel vostro sistema. Di seguito viene mostrata la
serie di informazioni relative ad un singolo file. Il comando
in questione agisce sulla prima decade di lettere, quelle
che specificano i "diritti". 


-rw-r-r- 1 root root 133444 Sep 1 21:14 gsg.tex 
 

La forma di utilizzo  la seguente:


chmod {a, u, g, o} {+/-} {r, w, x} <file>


dova "a" rappresenta tutti gli utenti ("all"),
"u" l'utente proprietario del file, "g"
il gruppo proprietario, "o"
gli altri utenti di sistema che non siano ne il proprietario
ne il gruppo di riferimento. Il comando pu essere anche
espresso in forma ottale come in lettere come segue:


$ chmod 700 gsg.tex


Il comando ha la stessa valenza della forma seguente:


$ chmod u+rwx,go-rwx gsg.tex


Il file considerato cambier i permessi nel seguente modo:


-rwx--- 1 root root 133444 Sep 1 21:14 gsg.tex


Per capire come funzionano i permessi su un file consultare
la tabella [permessi sui file].

10.2.13 compress <compress>

E' un comando storico per la compressione dei dati per Unix.
Esempio di compressione di un file: 


$ compress nomefile


Ogni file viene compresso e rinominato con l'aggiunta del
suffisso ".Z". Per decomprimere un
file di questo tipo  necessario digitare: 


$ compress -d nomefile.Z


E il file verr rinominato senza l'estensione ".Z".

10.2.14 cp 

Questo comando serve per copiare dei file, preservare gli
originali e crearne una copia identica. Se gi disponete
di un file digitate:


$ cp gsg.tex Documenti/gsg.tex
 

Nel caso sopracitato ho copiato un file presente nella directory
corrente nella sottodirectory "Documenti/".
Se nella directory dove ho copiato il file ci fosse stato
gi un documento con quel nome lo avrei sovrascritto. Per
evitare questo aggiungo la seguente opzione:


$ cp -i theGimp.tex Documenti/gsg.tex


L'opzione attiva una modalit interattiva che mi comunica
particolari situazioni come quella descritta.

10.2.15 cpio<cpio>

E' un archiviatore di file simile al comando tar (pagina
[tar]). Per lungo tempo tar e cpio erano gli archiviatori
maggiormente utilizzati, poi con l'avvento di GNU/Linux
il primo ebbe il sopravvento. Numerose sono le opzioni di
questo comando ma ci limiteremo alle due sole principali,
la creazione e l'estrazione di un archio cpio. Per la creazione
la forma  la seguente:


# cpio -o < file/ > file.cpio
 

Per l'operazione inversa, l'estrazione di un archivio cpio,
la forma  questa:


# cpio -i --make-directories < file.cpio
 

La vera utilit di questo comando risiede nell'utilizzo combinato
con rpm2cpio (pagina [rpm2cpio]).

10.2.16 cron<cron>

Questo applicativo  utile quando si vuole automatizzare
l'esecuzione di determinati processi di sistema a scadenze
temporali ben definite. Per il suo funzionamento  necessario
avere attivato il demone crond che controlla i file di configurazione
e si occupa di eseguire le operazioni indicate nei limiti
delle impostazioni indicate. Per verificare rapidamente
se  attivo digitate:


$ ps -ax|grep cron
 

In caso positivo apparir quanto segue:


$ ps -ax|grep cron

  559  ?      S    0:00  crond

  563  pts/1  R    0:00  grep cron
 

In caso negativo (non esiste il processo crond attivo) potete
attivarlo sul momento. Per fare questo  necessario essere
utente root, l'amministratore di sistema, colui che ha i
diritti necessari per lanciare il demone([footnote] demone, processo che viene attivato nel sistema
e procede in background, ovvero senza disturbare lo svolgimento
delle ulteriori attivit. )  nel sistema. Digitate:


$ su -
 

Verr chiesta la password di root e una volta autenticati
potrete lanciare il demone crond con:
([footnote] I prompt di comandi possono cambiare tra le varie
distribuzioni. ) 

# /etc/rc2.d/S89cron start


e poi ritornate all'utente precedente con


# exit
 

Il prompt dei comandi ritorner come era. A questo punto
non resta altro che modificare il file di configurazione
per eseguire i processi ad una data scadenza temporale:


$ crontab -e
 

Il comando edita un file (utilizzando l'editor vi, pag. [vi])
dove andranno impostate le vostre preferenze nella forma
seguente:


   minuti |   ora |   gg del mese |   mese |   gg settimanale |   applicativo  
----------+-------+---------------+--------+------------------+----------------
                             data                             |     comando    


 
Per eseguire il comando pon alle 18,30 di ogni giorno la
configurazione da aggiungere al file di cron sar la seguente:


30 18 * * *  /usr/bin/pon
 

Gli asterischi "*" indicano
che il processo dovr essere eseguito ogni giorno del mese,
ogni mese, ogni giorno della settimana. A questo punto non
vi resta altro che salvare il file e ritornare al prompt
dei comandi iniziale. Per visualizzare il file appena modificato
digitate:


$ crontab -l
 

Se desiderate eliminare il vostro file di configurazione
di cron:


$ crontab -r
 

Per maggiori informazioni digitate al prompt man cron.

10.2.17 date 

Questo comando mostra giorno, data, ora ed anno corrente:


$ date

gio lug 6 11:14:54 CET 2000

10.2.18 df 

Questo comando serve a mostrare lo spazio libero sui dischi.


$ df

Filesystem  1k-blocks    Used Available  Use%  Mounted on

/dev/hda1     1486339 1246706    162825   88%  /

/dev/hda2      694727  618131     40712   94%  /home

/dev/hda3      121007   73550     41208   64%  /home/redhat


Dal risultato del comando  possibile vedere lo spazio utilizzato,
lo spazio disponibile, la percentuale di utilizzo e dove
sono montati i dischi analizzati.

10.2.19 diff<diff>

Questo comando serve per analizzare due file e riportare
le differenze.


$ diff -urN it.po it.po.new
 

Dopo aver digitato il comando vedrete a video le differenze
tra i due file. Il comando diff viene utilizzato per la
creazione di patch con le seguenti opzioni:


$ diff -urN it.po it.po.new > patch
 

Per creare una patch su file binari  necessario digitare
quanto segue:


$ diff -a --binary bin bin.2 > patch
 

Per applicare i file con le differenze  necessario il comando
patch (pagina [patch]).

10.2.20 dpkg<dpkg>

Questo comando  relativo alla distribuzione Debian GNU/Linux.
E' principalmente utile per installare e aggiornare i pacchetti
software sul proprio sistema e pu essere comparato al comando
rpm (pagina [rpm]).


# dpkg -i nomefile.deb
 

Questo comando compie sia l'installazione che la procedura
di aggiornamento se viene riscontrato un pacchetto maggiormente
recente. Per compiere l'operazione opposta, ovvero la disinstallazione
del pacchetto software .deb digitate:


# dpkg -r nomefile
 

Per evitare compromissioni del sistema  bene antecedere
la seguente opzione di controllo:


# dpkg --no-act -r nomefile
 

Per ottenere informazioni su un pacchetto  possibile digitare
quanto segue:


# dpkg -s nomefile
 

Per ottenere informazioni sulla provenienza di un particolare
file presente sul sistema possiamo conoscere il pacchetto
software relativo digitando:


# dpkg -S blackbox
 

Per avere la lista dei pacchetti software installati nel
sistema digitate:


# dpkg -l 
 

Una soluzione per avere una lista di pacchetti software da
replicare su una nuova macchina o sulla stessa in caso di
ripristino  la seguente riga di comandi:


# dpkg --get-selections > pacchetti.txt


Creato il file potremo recuperare lo stato dei pacchetti
software come segue:


# dpkg --set-selections < pacchetti.txt

# dpkg deselect-upgrade


Alternativa a dpkg  apt-get (pagina [apt-get])
che offre numerose caratteristiche aggiuntive e maggiore
semplicit di utilizzo.

10.2.21 du

Volete sapere quando spazio disco  occupato? Utilizzate
il comando seguente:


$ du


Dopo aver digitato il comando ed essere stati colti da dubbi
esistenziali si consiglia la variante successivamente esposta
del comando:


$ du -h -s

32M 


L'opzione "-h" vi mostra il risultato
del comando in un modo "umanamente
comprensibile" mentre l'opzione "-s"
per ottenere unicamente la somma delle dimensioni dei file
considerati.

10.2.22 dvipdfm / dvipdf<dvipdfm>

Questo comando converte un file in formato .dvi in formato
.pdf. Digitare:


$ dvipdfm -o documento.pdf documento.dvi
 

Dove l'opzione "-o" indica
il nome finale del file nel nuovo formato. Per maggiori
informazioni relative consultare pagina [LaTeX].

10.2.23 dvips<dvips>

Questo comando converte file in formato .dvi in formato .ps
(Postscript([footnote] Postscript  un marchio registrato da Adobe Inc. ) ).


$ dvips -o documento.ps documento.dvi
 

L'opzione "-o" indica il nome finale
del file postscript che verr generato. Esistono numerose
opzioni consultabili tramite la propria pagina manuale ma
quelle interessanti nell'uso comune possono essere le seguenti:


$ dvips -A -o pgpari.ps documento.dvi
 

$ dvips -B -o pgdispari.ps documento.dvi
 

Dove le opzioni aggiuntive "-A"
e "-B" indicano rispettivamente di creare il file
pgpari.ps con le pagine pari dell'originale documento e
pgdispari.ps con le pagine dispari. Quest'ultime opzioni
possono risultare utili se si dispone di una comune stampante
per poter stampare su entrambe i lati dei fogli. Per maggiori
informazioni relative consultare pagina [LaTeX].

10.2.24 echo 

Il comando echo serve esclusivamente a stampare sullo standard
output stringhe di testo:


$ echo "Ciao Daniele"

Ciao Daniele


Un altro esempio pu essere la stampa a video di alcune variabili
di sistema:


$ echo $HOME

/home/darshan


Dove $HOME rappresenta la nostra directory home.

10.2.25 enscript

Se  nostra necessit convertire un file di testo in un file
postscript, rtf o html, questo comando  quello che vi serve.
La forma pi semplice e immediata  la seguente:


$ enscript u in.txt o out.ps


dove l'opzione "u" indica
il file di testo e l'opzione "o"
il nome del file postscript da creare. Se volessimo applicare
alcune caratteristiche di "stile"
come impostare il testo in n colonne basta opportunamente
indicarlo come segue:


$ enscript 2 u in.txt o out.ps


Verr generato un file postscript con il testo impaginato
su 2 colonne. Per definire il formato pagina:


$ enscript M a4 u in.txt o out.ps


Dove con "M" definiamo il formato della
carta (formato a4).

10.2.26 env 

Questo comando mostra le variabili di ambiente della vostra
sessione. Digitate:


$ env

10.2.27 export 

Questo comando viene utilizzato per esportare delle variabili
di ambiente, valori che permettono al sistema di funzionare
come desideriamo.


$ export DISPLAY=monika:0.0
 

Nell'esempio appena visto si  utilizzato il comando per
esportare il display di X Window dal server dada al computer
monika che corrisponde ad un IP nel file /etc/hosts. I comandi
che lanciano applicazioni per X verranno aperti sull'ultimo
computer ma il carico di processo sar della macchina dove
vengono eseguiti (in questo caso il computer dada).

10.2.28 file 

Questo comando indica il formato di un file indicato. Digitate:


$ file esempio

esempio: ASCII text


Verr indicato il formato del file che si chiama "esempio".

10.2.29 find <find>

Questo comando serve per fare ricerche di file nel sistema.
Per eseguire una semplice ricerca del file "miofile.txt"
nella directory corrente  necessario digitare quanto segue: 


$ find . -name miofile.txt -print


Se desiderate trovare tutti i file con estensione ".txt"
 necessario digitare quanto segue: 


$ find . -name "*.txt" -print


In questi esempi appena visti si  utilizzato il punto "."
per indicare la directory corrente. Se la nostra ricerca
vuole essere estesa ad un'altra directory comportatevi come
segue:


$ find /home/ -name miofile.txt -print


La ricerca andr ad analizzare se esistono file denominati
"miofile.txt" nella directory /home e mostrer
il risultato finale.


$ find / -cmin 60 -mmin 60


Con le opzioni appena viste cerchiamo i file cambiati e modificati
entro l'arco di tempo di 60 minuti.

10.2.30 finger

Il comando finger riporta informazioni sugli utenti di un
sistema, visualizzando nome, cognome, ufficio e numero di
telefono, ultimo login ed ulteriori informazioni. Di seguito
un esempio di utilizzo comune:


$ finger darshan

Login: darshan

Name: Daniele Medri

Directory: /home/darshan

Shell: /bin/bash

Never logged in.

No mail.

No Plan.


Se l'utente "darshan" (preso
di esempio) ha un accesso presso un server differente nella
rete interna bisogner specificarlo come segue:


$ finger darshan@erlug


La forma  nome "utente@nome server".
Se l'utente ha un accesso presso un server differente e
quest'ultimo esce dalla rete interna ed  dislocato su Internet,
la forma diventa:


$ finger darshan@erlug.linux.it


Il nome del server  conforme alle regole canoniche di Internet.

10.2.31 fmt

Questo comando serve per formattare un documento di testo
con un numero definito di colonne:


$ fmt -w 60 doc.txt > doc2.txt
 

Il comando esaminer il file doc.txt, lo formatter con un
numero di 60 colonne e passer il risultato ridirizionandolo
al file doc2.txt.

10.2.32 fold

Questo comando ha funzionalit simili al comando fmt e aggiunge
alcune caratteristiche. Se si decide di formattare un file
con un numero definito di colonne e non ricevere parole
troncate al termine di ogni riga sar necessario digitare
quanto segue:


$ fold -w 50 -s doc.txt > doc2.txt
 

Verr esaminato il file "doc.txt"
formattandolo con un numero massimo di 50 colonne e disabilitando
la parole troncate. Il risultato verr passato al file"doc2.txt".

10.2.33 free 

Questo comando stampa sullo standard output l'utilizzo della
memoria Ram e dello Swap:


$ free

            total  used  free  shared  buffers  cached

Mem:        95504 88308  7196   40768     7568   57640

-/+ buffers/cache: 23084 72420

Swap:       60476


Dai dati si pu notare l'esistenza di 96 Mbyte di memoria
Ram, e una partizione di Swap di circa 60 Mbyte.

10.2.34 ftp 

Per poter trasferire dei file da un server locale ad un server
remoto  necessario utilizzare questo comando. E' indispensabile
avere un accesso al server remoto o utilizzare una connessione
anonima. Per aprire una sessione digitate: 


$ ftp

ftp>


Per conoscere l'insieme delle opzioni presenti digitare "help": 


ftp> help


Per aprire una connessione ad un server: 


ftp> open nomeserver


Per chiudere una connessione: 


ftp> close


Si  accennato alla connessione anonima. L'unica sostanziale
differenza  in fase di autenticazione:


$ ftp dada

Connected to dada.

220 dada FTP server Tue Sep 21 16:48:12 EDT 1999) ready.

Name (dada:darshan): anonymous

331 Guest login ok, send your complete e-mail address as password.

Password: **********


Quando viene richiesta la password utilizzare il proprio
indirizzo di posta elettronica. Non  una richiesta obbligatoria
ma  buona regola farlo se si utilizza il servizio in questione.

10.2.35 gpg<gpg>

GnuPG  la versione GNU di PGP, un programma di crittografia
per la protezione della privacy personale. Questa breve
descrizione non pu essere esaustiva vista la vastit delle
opzioni disponibili ma sintetizzer i passi fondamentali
necessari  utilizzati comunemente. Il primo passo  la
generazione della directory personale di gpg lanciando il
comando:


$ gpg

gpg: /home/darshan/.gnupg: directory creata

gpg: /home/darshan/.gnupg/options: creato un nuovo file delle
opzioni


Come secondo passo  necessario generare le proprie chiavi
(pubblica/privata) lanciando il comando seguente:


$ gpg --gen-key
 

Verr avviata una procedura interattiva che vi aiuter a
creare la chiave chiedendovi alcune configurazioni e alcuni
vostri dati personali (nome, cognome, email, commenti).
Quando tutti i dati saranno confermati dovrete digitare
la vostra passphrase, o frase segreta e proseguire nella
creazione delle chiavi. Per visualizzare la vostra chiave
pubblica:


$ gpg --export -a


Per copiare la chiave su un file di testo  necessario aggiungere
la seguente opzione:


$ gpg --export -a -o chiave_pubblica.asc


Il file chiave_pubblica.asc  la vostra chiave pubblica che
potete rendere disponibile in rete. Se volete importare
la chiave pubblica di altre persone nella vostra e ampliare
il livello di sicurezza dovrete digitare quanto segue:


$ gpg --import altra_chiave_pubblica.asc


Per conoscere le chiavi importate:


$ gpg --list-keys


Fingerprint

Il fingerprint, o "impronte digitali"
sono informazioni univoche e invariabili tratte da ogni
chiave, informazioni che non cambiano importando ulteriori
chiavi. Servono ad identificare la chiave di una persona
e la sua validit. Per conoscere il proprio fingerprint:


$ gpg --fingerprint


E' utile copiare questi dati e utilizzarli nella propria
firma delle vostre email in modo che sia pubblica e rapidamente
confrontabile.


Crittografia/Decrittografia

Per utilizzare gpg per spedire un messaggio segreto ad una
persona conosciuta  necessario digitare il seguente comando:


$ gpg -e -a messaggio_segreto.asc


L'opzione "-e" significa encrypt e
l'opzione "-a"  necessaria per esportare
il messaggio crittato in un file di testo. Se ora visualizziamo
il file apparir quanto segue:


$ more messaggio_segreto.asc
 

-----BEGIN PGP MESSAGE-----

Version: GnuPG v1.0.1 (GNU/Linux)

Comment: For info see http://www.gnupg.org
 

hQEOAxMnLse+b6VzEAP/cgfcbq2duvNZ3Msd/fUIjKRfOSj9yvWti

pOwrbvtTm3my2pQbr+w8iy71txPyP+okWUyPYYMyc0wZSYCxsert+

pZKkIftq9PMZO/Ef5EoMysq/kcA0j0vmrKF/O145VzAzYifMW043E

/iQ9LdZogUpH/w8/rS01af5YJmSNwn1TB7q/MI0ywQh6UNNExSerb

dekd1ssd7nV1TpxIxvC1ijlZ4V68uyxXWUJZoc8Mn1IAhwLCnza/Q

9GZN7PaJ94qFNQE69wqGz4TUOA5NWwJaqFSmwwDEmTIyyaferrerV

eue3SJGlfBqzJHJ2HsdLL4XpR3kZMcbZwzVhffdIbpI4gYDd/tLXR

-----END PGP MESSAGE-----


La sequenza di caratteri  il vostro messaggio protetto.
Per visualizzarlo in forma leggibile  necessario digitare
quanto segue:


$ gpg -d messaggio_segreto.asc


Vi verr chiesto di digitare la vostra frase segreta (passphrase)
e in seguito alla verifica di quest'ultima apparir il messaggio
reale. Per ulteriori informazioni visualizzate la guida
in linea:


$ man gpg
 

oppure visitate il sito Internet ufficiale: http://www.gnupg.org.

10.2.36 grep<grep>

Questo comando  necessario per ritrarre da una fonte di
ingresso (un file, standard input) una particolare serie
di dati che corrisponde alle richieste poste. Una semplice
forma di utilizzo pu essere la seguente: 


$ grep "pippo" doc.txt
 

Il comando visualizzer a video tutte le righe del file doc.txt
dove sar presente la parola "pippo".
La ricerca pu assumere richieste particolari e a tale scopo
entrano in gioco le espressioni regolari. Un esempio pratico:


$ grep '\<[a-z0-9-]\+\>' doc.txt
 

Verranno visualizzate solamente le righe che contengono i
caratteri dalla lettera "a"
alla lettera "z" e i numeri
da "0" a "9". Per maggiori informazioni
consultare la pagina manuale del comando.


$ man grep


10.2.37 grub / grub-install

Esistono diverse alternative al boot loader LILO che abbiamo
gi trattato in precedenza e tra queste grub  un'ottima
scelta. Dopo aver scaricato il pacchetto software con


# apt-get install grub


la pi semplice procedura di installazione  la seguente:


# grub-install /dev/hda


Al riavvio della macchina si otter un prompt come il seguente:


 GRUB version 0.5.96.1 (640K lower / 3072K upper memory) 


[ Minimal BASH-like line editing is supported. For the first
word, 

  TAB lists possible command completions. Anywhere else
TAB lists 

  the possible completions of a device/filename. ]

 

grub> 


Premendo il tasto \rightarrow   (tabulatore)
si pu ottenere la lista di comandi.

Confusi? Posso capirvi ma non  cos complicata la procedura
basilare e si sintetizza come segue: 


grub> root (hd0,1)

grub> kernel /boot/vmlinuz-2.4.1

grub> read-only

grub> boot


Per procedere ad un'installazione definitiva:


grub> (hd0,1)/boot/grub/stage1 d (hd0) /boot/grub/stage2
p /boot/grub/menu.lst


Non mi dilungher ulteriormente sulla spiegazione dei comandi
perch grub, nelle distribuzioni aggiornate che lo utilizzano,
viene automaticamente installato in fase di installazione
e non  pi necessario interagire direttamente con la shell
comandi. Esiste una documentazione molto ampia a riguardo
sia sul sito di riferimento del software che nella directory
"/usr/share/doc/grub" del vostro sistema
locale.

Quello che era il file "/etc/lilo.conf"
per LILO ha molte similitudini con "/boot/grub/menu.lst"
di grub. Di seguito viene riportato un esempio di quest'ultimo:


#

# Sample boot menu configuration file

#

 

# Boot automatically after 30 secs.

timeout 30

 

# By default, boot the first entry.

default 0

 

# Fallback to the second entry.

fallback 1

 

 

# For booting Linux

title  GNU/Linux-2.4.2

root (hd0,1)

#kernel (hd0,0)/vmlinuz-2.4.1 root=/dev/hda2 vga=ask apm=on

kernel (hd0,0)/vmlinuz-2.4.2 root=/dev/hda2 vga=ask

 

# Alternativo

title GNU/Linux-2.18

root (hd0,1)

kernel (hd0,0)/vmlinuz-2.2.18pre21 root=/dev/hda2

 

# For installing GRUB into the hard disk

title Install GRUB into the hard disk

root    (hd0,1)

configfile (hd0,0)/grub/menu.lst

setup   (hd0)

 

# Change the colors.

title Change the colors

color light-green/brown blink-red/blue


Una volta apportate modifiche e salvato il file, l'unica
cosa necessaria da fare  riavviare la propria macchina.

10.2.38 gzip<gzip>

Questo comando  utile per comprimere file. La forma tipica
di utilizzo :


$ gzip documento.tex
 

Per decomprimere tale file si pu ricorrere al comando gunzip
(pagina [gunzip]).

10.2.39 gunzip<gunzip>

Questo comando  utile per decomprimere file. La forma tipica
di utilizzo :


$ gunzip documento.tex.gz

10.2.40 gv<ghostview>

Il comando gv  un visualizzatore per documenti postscript
o pdf che gira in ambiente visuale e come tale necessita
del server grafico X. A prescindere dal window manager o
desktop utilizzato si pu lanciare l'applicazione direttamente
da una console digitando:


$ gv documento.ps


Sulla scia di questa storica applicazione sono sorte recentemente
versioni similari e specifiche per ogni desktop: vedi kghostview
e ggv.

10.2.41 kill

Questo comando  utilizzato come ultima risorsa per distruggere
un programma sospeso o che si desidera riavviare. Esistono
diversi segnali/opzioni che si possono utilizzare con il
comando kill per interrompere un programma. Nell'uso quotidiano
pu essere comune quanto segue: 


$ kill -9 id_processo
 

Per visualizzare il codice identificativo di un processo
 necessario utilizzare il comando ps (pagina [ps]).

10.2.42 halt<halt>

Questo comando  necessario per fermare il vostro computer.
Una volta lanciato compier diverse operazioni volte a interrompere
i servizi attivi e disabilitare i dispositivi che compongono
il file system.


# halt
 

Comando con funzionalit analoghe pu essere shutdown (pagina
[shutdown]).

10.2.43 hdparm

Il comando  molto utile per gestire e verificare le prestazioni
dei dischi fissi ed  necessario essere l'utente root per
poter eseguire determinate operazioni. Introduciamo il discorso
mostrando basilari parametri relativi al vostro disco:


# hdparm -c /dev/hda


/dev/hda:

I/O support = 0 (default 16-bit)


Notiamo che il disco sono configurati a 16 bit senza DMA.
Per ottenere una statistica digitiamo:


# hdparm -t /dev/hda


/dev/hda

Timing buffered disk reads: 64 MB in 17.58 seconds = 3.64
MB/sec


Ora provvediamo ad attivare il supporto 32 bit e il DMA:


# hdparm -c 1 -d 1 /dev/hda


/dev/hda

setting 32-bit I/O support flag to 1

setting using_dma to 1 (on)

I/O support = 1 (on)

using_dma = 1 (on)


Verifichiamo ora se c' stato un incremento di prestazioni
in seguito all'attivazione di questi parametri:


# hdparm -t /dev/hda


/dev/hda

Timing buffered disk reads: 64 MB in 11.77 seconds = 5.44
MB/sec


Dal confronto risulta un incremento di circa 2 MB/sec in
aggiunta di trasferimento dati. Non male! Come ulteriore
aggiungiamo l'opzione seguente:


# hdparm -k 1 /dev/hda


/dev/hda

setting keep_settings to 1 (on)

keepsettings = 1 (on)


A questo punto, se vogliamo giovare dell'aumento di prestazioni
ogni qual volta si utilizzi il proprio computer possiamo
aggiungere quanto segue al file "/etc/rc.d/rc.local",
letto da init in fase di avvio del sistema:


#!/bin/sh

# aumento prestazioni del disco

hdparm -c 1 -d 1 -k 1 /dev/hda


A questo punto non ci rimane che salvare il file e riavviare.
Per maggiori informazioni sul comando si consiglia di consultare
la pagina manuale (man hdparm).

10.2.44 history<history>

Come  stato citato in precedenza (pagina [history]),
la Bash offre la possibilit di memorizzare la sequenza
di comandi utilizzati da un utente. Per visualizzare lo
storico dei comandi basta digitare quanto segue:


$ history
 

Con maggiore utilit se l'output video viene rediretto al
comando more o direttamente in un file di testo. Rispettivamente:


$ history | more

$ history > storico.txt

10.2.45 hwclock<hwclock>

Questo comando vi permette di gestire l'orologio hardware
di sistema apportando modifiche a piacimento. Il primo utilizzo
illustrato  quello ovvio:


# hwclock --show

Sat Jul 15 13:19:14 2000 -0,888683 seconds 
 

Questa  l'ora presente nell'orologio di sistema. Per cambiarla
 necessario aggiungere i seguenti parametri:


# hwclock --set --date=`7/15/2000
16:45:05`
 

Esistono due modalit di gestione dei dati: localtime, macchina
locale, o utc (Universal Coordinated Time). Se non viene
specificato la modalit  quella locale mentre per configurare
l'impostazione nel secondo tipo  necessario indicarlo:


# hwclock --set --date=`7/15/2000
16:45:05` --utc 

Gli orologi in un sistema GNU/Linux

Esistono due principali tipi di orologi: l'orologio hardware
e l'orologio di sistema. Il primo  indipendente da ogni
programma di controllo e rimane attivo anche a computer
spento. Spesso viene definito con diverse terminologie:
rtc (Real Time Clock), BIOS clock, CMOS clock. L'orologio
di sistema  il sistema di gestione presente in ogni kernel
di ogni sistema operativo; al momento dell'avvio della macchina
vengono consultati i dati dell'orologio hardware e l'orologio
di sistema si configura rispettando i timezone indicati,
le fasce del fuso orario. Nei sistemi Unix l'orologio di
sistema ha come data iniziale l'ora 00:00:00 del 1 Gennaio
1970 UTC.

Nota di carattere generale

Quando si parlava di millenium bug,
il baco di fine millennio che doveva colpire i computer
di tutto il mondo, si considerava una forma di inadeguatezza
degli orologi hardware come degli orologi di sistema dei
vari sistemi operativi che poteva creare problemi nello
svolgimento delle normali attivit esecutive.

10.2.46 ifconfig

Con questo comando  possibile configurare e monitorare le
interfacce di rete. Se non vengono dati parametri aggiuntivi,
il comando mostra le interfacce attive in quel preciso istante:


# ifconfig

lo       Link encap:Local
Loopback  

         inet addr:127.0.0.1 
Mask:255.0.0.0

         UP LOOPBACK
RUNNING  MTU:3904  Metric:1

         RX packets:0
errors:0 dropped:0 overruns:0 frame:0

         TX packets:0
errors:0 dropped:0 overruns:0 carrier:0

         collisions:0
txqueuelen:0


Notiamo l'esistenza dell'interfaccia lo, ovvero il Loopback
con IP 127.0.0.1


Se si dispone di una scheda di rete ed  gi stata configurata,
possiamo "alzare"([footnote] slang per amministratori di rete che indica l'attivazione.)  l'interfaccia di rete e assegnarle un indirizzo IP specifico
come segue:


# ifconfig eth0 192.168.0.1


Il risultato sar quanto segue:


# ifconfig

eth0     Link encap:Ethernet 
HWaddr 00:50:DA:69:43:7C  

         inet addr:192.168.0.1 
Bcast:192.168.0.255  Mask:255.255.255.0

         UP BROADCAST
RUNNING MULTICAST  MTU:1500 
Metric:1

         RX packets:382
errors:0 dropped:0 overruns:0 frame:0

         TX packets:629
errors:0 dropped:0 overruns:0 carrier:0

         collisions:0
txqueuelen:100 

         Interrupt:10
Base address:0x6800 


lo       Link encap:Local
Loopback  

         inet addr:127.0.0.1 
Mask:255.0.0.0

         UP LOOPBACK
RUNNING  MTU:3904  Metric:1

         RX packets:0
errors:0 dropped:0 overruns:0 frame:0

         TX packets:0
errors:0 dropped:0 overruns:0 carrier:0

         collisions:0
txqueuelen:0


Come si nota  stata attivata l'interfaccia eth0 e le si
 assegnato un indirizzo IP determinato.


Per disabilitare eth0:


# ifconfig eth0 down


Per maggiori dettagli si consiglia la lettura del capitolo
relativo alle soluzioni di rete, successivamente trattato
in questo testo.

10.2.47 insmod<insmod>

E' un'utilit per il kernel modulare di Linux che permette
di inserire un modulo in memoria e aggiungere funzionalit
ulteriori. Quest'ultimi sono genericamente presenti nella
directory:


/lib/modules/<versione del kernel utilizzato>


che in termini pratici pu concretizzarsi in


/lib/modules/2.2.17/


Per inserire un modulo  necessario digitare quanto segue:


# insmod sound


oppure il percorso assoluto


# insmod /lib/modules/2.2.17/sound/sound.o


Il comando permette l'utilizzo di numerose opzioni tra le
quali le pi significative sono le seguenti:


# insmod -f sound


per compiere l'inserimento del modulo "sound"
in maniera forzata superando eventuali discrepanze tra versioni
di kernel diversi. Se si desidera che il kernel stesso si
occupi del modulo in maniera flessibile e su necessit 
bene utilizzare la seguente opzione:


# insmod -k sound


Altre utilit per la gestione dei moduli sono lsmod(pag.
[lsmod]), rmmod(pag. [rmmod]) e modprobe(pag.[modprobe]).

10.2.48 irc 

Questo comando lancia un minimale programma per la chat di
tipo IRC.


$ irc irc.tin.it


Digitando il solo comando parte il collegamento in automatico
con il server italiano irc.tin.it che fa parte della rete
Ircnet, una delle reti pi diffuse. Durante il collegamento
compariranno messaggi informativi e vi verr chiesto il
nickname, ovvero il vostro "nomignolo"
per la chat. Se desiderate passare quest'ultimo come parametro
al lancio del programma  necessario digitare quanto segue:


$ irc nickname irc.tin.it


Una volta collegati al server specificato con il nickname
scelto  necessario entrare in un "canale"
di persone, piazze virtuali dove le persone si trovano per
comunicare. Se sapete gi in quale canale andare digitate
al prompt:


/join #italia


Dove /join indica di entrare nel canale #italia. Una volta
entrati potete comunicare con le altre persone collegate
in quel momento. Se desiderate uscire dal canale digitate: 


/leave #italia


Se desiderate ottenere la lista dei canali esistenti e aperti
in quel preciso momento digitate:


/list -MIN 5 -MAX 20 -PUBLIC -NAME


Il comando /list richiede tutti i canali aperti. Le opzioni
aggiunte servono a limitare il flusso di dati richiesti
e cercare i canali con un numero di partecipanti che varia
da 5 (MIN) a 20 (MAX) utenti, che sia aperto a chiunque
(PUBLIC) e ordinati per nome (NAME). Per ottenere la lista
dei comandi possibili digitate:


/help


Per la guida specifica di un comando (es. list): 


/help list


Per scollegarsi dal server IRC e chiudere il programma: 


/quit


E' possibile ottenere la lista dei parametri del comando
irc digitando al prompt: 


$ irc -help
 

In recenti distribuzioni GNU/Linux, questo comando non 
presente perch sostituito con client IRC grafici come xchat
o kvirc, o l'insuperabile bitchx per la console.

10.2.49 ispell

Per effettuare dei controlli ortografici  molto utile questo
comando. Viene genericamente distribuito in diversi pacchetti
divisi per le lingue disponibili. Buona scelta potrebbe
essere installare i seguenti pacchetti software:


ispell (applicazione base)

iitalian (dizionario delle parole in italiano)

ibritish (dizionario delle parole in inglese)

iamerican (dizionario delle parole in americano)


Per configurare il correttore in prima istanza:


$ ispellconfig

Please wait while I search for ispell dictionaries...

[1] italian

[2] british

[3] american

Select the number of the default dictionary [1] 

Making italian the default ispell dictionary... done.


Come verificare il funzionamento? Un semplice esempio pu
essere il seguente:


$ echo "laboratoio" | ispell -a

@(#) International Ispell Version 3.1.20 10/10/95

& laboratoio 1 0: laboratorio

10.2.50 last

Ogni accesso al vostro sistema GNU/Linux viene monitorato
e memorizzato nel file /var/log/wtmp visualizzabile con
qualsiasi editor di testi. Malgrado questo  possibile utilizzare
il comando last appositamente studiato per l'azione. La
forma per l'utilizzo  la seguente:


$ last


Per visualizzare al meglio il risultato del comando  consigliabile
indicare il numero di righe nel seguente modo:


$ last -10
 

Alternativamente  possibile ridirigere l'output del comando
a more (pagina [more])in modo di visualizzare
il tutto una pagina alla volta. La forma :


$ last|more

10.2.51 latex (LaTeX)<LaTeX>

Chi gi conosce questo comando sar conscio che la sua presenza
in questa lista lo riduce notevolmente di valore. Non 
assolutamente quello che l'autore desidera ottenere ma 
vero che spesso un utente utilizza quest'ultimo in rare
occasioni con limitate opzioni; questo  il caso in esame. 

Cos' LaTeX? E' un insieme di macro per la formattazione
e produzione di documenti scritti in TeX. La modalit comune
per elaborare un documento compatibile  la seguente:


$ latex documento.tex
 

Se l'esecuzione del comando termina con successo potrete
notare nella stessa directory dove  presente "documento.tex"
il nuovo file "documento.dvi"
formato pronto per la stampa. Per visualizzarlo  possibile
utilizzare l'applicazione xdvi (vedi pagina [xdvi]),
per la conversione in altri formati fate riferimento ai
comandi dvips (pagina [dvips]) e dvipdfm
(pagina [dvipdfm]).


Desiderosi di provare? Ok, digitate:


$ vi documento.tex


Verr aperto l'editor vi (pag. [vi]). 

Premere il tasto   per
entrare in modalit inserimento e scrivere:


\documentclass{article}

\usepackage[T1]{fontenc}

\usepackage[latin1]{inputenc}

 

\begin{document}

Ciao Mondo!

\end{document}


Uscite e salvate premendo il tasto  e
i caratteri ":wq!" ed eseguite
le istruzioni gi date per compilare il documento e visualizzarlo
con il viewer GhostView (comando gv - pag. [ghostview]).

10.2.52 ldd

I sistemi del ceppo Unix (GNU/Linux compreso) hanno un'organizzazione
ottimizzata degli esecutivi e le librerie necessarie per
quest'ultime. Per vedere quali librerie sono utilizzate
da un particolare comando:


# ldd /usr/bin/bitchx 


libncurses.so.5 => /lib/libncurses.so.5 (0x40021000) 

libresolv.so.2 => /lib/libresolv.so.2 (0x4005f000) 

libcrypt.so.1 => /lib/libcrypt.so.1 (0x40071000) 

libm.so.6 => /lib/libm.so.6 (0x4009e000) 

libdl.so.2 => /lib/libdl.so.2 (0x400bc000) 

libc.so.6 => /lib/libc.so.6 (0x400bf000) 

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


In questo esempio, il comando bitchx (un client famoso per
IRC) richiede le librerie indicate per essere eseguito.

10.2.53 ln 

GNU/Linux permette di creare dei link ai file per una migliore
gestione. Un link vi permette di dare ad un singolo file
nomi multipli. I file nel sistema sono identificati da un
proprio numero inode. Una directory  una lista di numeri
inode con i corrispondenti nomi dei file. Esistono due tipi
di link (collegamenti): hard link e link simbolici. Entrambi
sono rappresentazioni di un file ma con particolari differenze.
Analizziamo ora l'utilizzo e in seguito le differenze tecniche.
Per creare un semplice link (hard link) digitiamo:


$ ln doc filelink


Con il comando appena digitato troveremo nella nostra directory
due file che sono la medesima cosa: doc filelink. Modificare
filelink vuol dire apportare delle variazioni a doc, il
file di riferimento. Per creare un link simbolico  necessario
aggiungere l'opzione "s"
al nostro comando:


$ ln -s doc filelink2


Analizzando il contenuto della nostra directory troviamo
ora, oltre a "filelink",
"filelink2", il nuovo riferimento a "doc".
L'approccio  il medesimo. Modificando "filelink2"
apportiamo delle variazioni a "doc".

Differenze tra hard link e link simbolici 

Un hard link  un collegamento al numero inode di un file.
I permessi su questo tipo di file sono gli stessi del file
originale. Un link simbolico a differenza del caso precedentemente
esaminato  un "collegamento ad un nome di
file" e non ad un numero inode. Questa forma offre maggiore
flessibilit operativa nell'uso comune ed  la scelta largamente
utilizzata. Il link simbolico ha permessi differenti dal
file originale di riferimento.

10.2.54 locate<locate>

Questo comando  utile per trovare file nel sistema ma ha
un comportamento diverso dal comando find analizzato a pagina
[find]. Quest'ultimo compie una ricerca nel sistema, mentre
il secondo, locate (o slocate per distribuzioni recenti
compatibili con Red Hat), analizza un file di testo indicizzato
migliorando le prestazioni della ricerca e riducendo il
carico delle risorse utilizzate. Il file indicizzato viene
creato con un processo di cron (pagina [cron])
generalmente in orari notturni. Se l'utilizzo del vostro
computer  quello comune e saltuario potreste saltare spesso
l'esecuzione del processo di aggiornamento e in tal senso
 possibile agire in modi differenti, modificando il file
di esecuzione del processo o lanciando quest'ultimo manualmente.
Con i dovuti diritti dell'utente root digitate:


# updatedb
 

Al termine dell'esecuzione del comando, la modalit di utilizzo
del comando locate per qualsiasi utente del sistema  la
seguente:


$ locate stdio.h

/usr/include/stdio.h

/usr/include/bits/stdio.h

/usr/include/lam/stdio.h


Se da un lato la ricerca con locate risulta molto pi efficiente,
l'efficacia nel trovare determinate cose  relativa alla
fase di aggiornamento del file indicizzato. In tal senso
il comando find pu risultare la scelta migliore.

10.2.55 lpc<lpc>

Tramite questo comando  possibile gestire le code di stampa.
Salvo particolari configurazioni  necessario essere l'utente
root per poter gestire il programma e le operazioni annesse
sulla coda di stampa. La forma  la seguente:


# lpc

lpc>


Come si nota viene attivato il prompt del programma. Per
avere l'elenco dei comandi disponibili digitate:


lpc> ?

Commands may be abbreviated.  Commands are:

 

abort   enable  disable help    restart status  topq    ?

clean   exit    down    quit    start   stop    up


Potete notare le diverse soluzioni disponibili per spostare
file di stampa in cima alla coda, fermare i processi e altro
ancora. Il comando che probabilmente pu risultare utile
nei casi reali per avere un monitor sui processi in corso
 il seguente:


lpc> status

lp:

        queuing is enabled

        printing is enabled

        1 entry in spool area

        lp is ready and printing

lp0:

        queuing is enabled

        printing is enabled

        no entries

        no daemon present


Per ottenere informazioni in merito ai comandi disponibili
bisogna anteporre la parola "help"
al comando come segue:


lpc> help clean

clean      remove cruft files from a queue

10.2.56 lpr 

Questo comando serve per la stampa su un sistema BSD compatibile
come GNU/Linux. Per lanciare il processo di stampa di un
file, digitate:


$ lpr doc


Nell'esempio appena visto si lancia in stampa il file doc.
Se si desidera stampare un file con una stampante specifica
 necessario digitare quanto segue:


$ lpr -Pstampante doc


Nel caso comune le stampanti sono collegate alle porte parallele
dei computer comuni ed  possibile sostituire il nome della
stampante con la porta stessa alla quale  collegata:


$ lpr -Plpt1 doc


Dove lpt1 rappresenta la porta parallela, il dispositivo
/dev/lpt1.

10.2.57 lprm 

Questo comando rientra nell'attivit di stampa per rimuovere
i processi di stampa accodati. Esempio di utilizzo comune
per rimuovere ogni cosa:


$ lprm


Se si desidera terminare un determinato processo  necessario
digitare:


$ lprm 9


Verr terminato il processo di stampa numero "9"
tra tutti quelli attivi. Per conoscere le code di stampa
relative ad ogni stampante fate riferimento al comando lpq,
di seguito esposto.

10.2.58 lpq 

Questo comando mostra le code di stampa, ovvero i documenti
messi in file per essere stampati con ordine sequenziale.
Digitate:


$ lpq

10.2.59 ls 

Questo comando mostra il contenuto di una directory. Digitate:


$ ls


Nei sistemi unix esistono file visibili e file nascosti.
Per nascondere un file  necessario rinominarlo con un punto
davanti al nome (es. .file) e per poter visualizzarlo con
il comando in questione bisogna utilizzare l'opzione seguente:


$ ls -a

.

..

.nomefile_nascosto

nomefile_visibile


Se si desidera visualizzare permessi, proprietari e dimensioni
dei file digitate:


$ ls -l

.

..

drwxrwxrwx 2 darshan darshan 1024 Set 18 22:32 Documenti

-rw-rw-rw- 4 darshan darshan 2056 Set 20 21:50 nomefile_visibile


10.2.60 lsmod<lsmod>

E' un'utilit per il kernel di Linux che permette di visualizzare
i moduli caricati in memoria.


# lsmod

Module            Size 
Used by

bsd_comp          4100    0  (autoclean)

ppp_async         6476    1  (autoclean)

parport_pc        22448   1  (autoclean)

lp                4616    4  (autoclean)

parport           26720   1  (autoclean)
[parport_pc lp]

rtc               6056    0  (autoclean)

nls_cp437         4340    3  (autoclean)

smbfs             29380   0  (unused)

mpu401            18800   0  (unused)

sb_lib            33832   0  (unused)

uart401           6512    0  [sb_lib]

sound             58624   0  [mpu401
sb_lib uart401]

nls_iso8859-1     2828    3 

ppp_deflate       39164   0 

ppp_generic       18496   6  [bsd_comp
ppp_async ppp_deflate]

slhc              4468    0  [ppp_generic]

3c59x             22424   1 

dummy             1216    0  (unused)


Altre utilit per la gestione dei moduli sono insmod (pag.
[insmod]), rmmod (pag. [rmmod]) e
modprobe (pag. [modprobe]).

10.2.61 mail 

Semplice programma da console per spedire e ricevere messaggi
di posta. 

Digitate:


$ mail


Visualizza se c' posta per l'utente.


$ mail -s "compito" -u madrid


Spedisce un messaggio di posta all'utente madrid con il soggetto
"compito".


$ mail -f


Legge il contenuto della vostra casella postale.

10.2.62 man 

Questo comando visualizza la pagina manuale di un comando
ed  molto utile quando si vuole conoscere le opzioni relative.
A titolo di esempio, visualizziamo la pagina manuale di
un comando gi citato precedentemente:


$ man ls


Esiste una pagina manuale per lo stesso comando man:


$ man man


Se non ricordate il nome del comando che vi serve a compiere
una determinata operazione potete avvalervi dell'opzione
"-k" nel seguente modo:


$ man -k parola


Verranno mostrate le pagine manuale che contengono la parola
indicata.

10.2.63 mc 

Midnight Commander, una interfaccia per navigare tra le directory
e i file del sistema. Per eseguirlo:


$ mc


Nelle recenti distribuzioni di GNU/Linux, questo programma
 associato a gmc, l'interfaccia grafica del programma per
l'ambiente desktop GNOME.

10.2.64 md5sum

Un semplice caso di studio: vogliamo trasferire ad un'altra
persona un file e vogliamo garantire la sua autenticit.
Per fare questo possiamo utilizzare questo comando come
segue:


$ md5sum nomefile.tgz

d41d8cd98f00b204e9800998ecf8427e nomefile.tgz


La stringa alfanumerica che viene presentata  "l'impronta
digitale" del file che pu essere confrontata con
quella di chi fornisce il file e chi lo riceve. In questo
modo semplice possiamo tutelarci che il file non abbia subito
modifiche nel passaggio.

10.2.65 mesg 

Gli utenti di un sistema possono interagire tra di loro attraverso
diversi programmi via terminale. Potete disabilitare le
richieste esterne digitando:


$ mesg n


Per riattivare in modalit "recettiva":


$ mesg y


10.2.66 modprobe<modprobe>

E' un'utilit per il kernel di Linux che permette di caricare
i moduli in memoria attuando alcuni test per la configurazione
automatica dei parametri necessari e adeguati.


# modprobe sound


Esistono alcune interessanti opzioni tra le quali segnaliamo:


# modprobe -c


per visulizzare le configurazioni dei moduli caricati.


# modprobe -l


per visualizzare i moduli disponibili.


# modprobe -r


per scaricare uno o pi moduli rispettando le dipendenze.
Altre utilit per la gestione dei moduli sono insmod(pag.
[insmod]), rmmod(pag. [rmmod]) e lsmod(pag.
[lsmod]).

10.2.67 mkdir 

Questo comando vi serve per creare una directory. La sintassi
tipica :


$ mkdir esempio


Il comando  particolarmente sensibile ai permessi di sistema.
E' chiaro che non vi sar concesso di creare una directory
dove non avete i diritti per farlo.

10.2.68 mkisofs<mkisofs>

Argomento masterizzazione: il comando in esame serve a creare
immagini iso9660 e supporta diverse opzioni importanti per
superare i limiti dell'originale file system come gli 8
livelli massimi di sottodirectory, la lunghezza dei nomi
dei file ristretta a 32 caratteri e la capacit di 650 Mbyte.
Le opzioni pi importanti sono:

* RockRidge (-r), estensione che permette la gestione dei
  nomi lunghi e non pone limite alla gerarchia di sotto-directory.
  Questa estensione, tipica del mondo Unix, permette di
  vedere il cdrom come una qualsiasi altra porzione del
  file system presentando proprietari dei file, gruppi,
  permessi e link simbolici.

* Joilet (-J), estensione simile alla precedente ma tipica
  del mondo MS Windows.

* El Torito (-b), estensione utile per produrre cd-rom avviabili
  (boot).

Un semplice esempio di funzionamento  il seguente:


# mkisofs -r -l -o immagine.iso dati/


Il file immagine.iso conterr i dati della directory dati/
organizzati secondo il file system iso9660 e utilizzando
l'estensione RockRidge. Una volta creata l'immagine possiamo
testare il risultato montando il file come segue:


# mount -t iso9660 -o ro,loop=/dev/loop0 immagine.iso /mnt/cdrom


Il file immagine.iso verr montata su /mnt/cdrom e sar possibile
gestire i file presenti. Al comando mkisofs seguono altri
comandi come cdrecord (pag. [cdrecord])
e cdrdao, programmi necessari per gestire e creare CD-R.

10.2.69 mkfs

Comando utile per creare file system su un dispositivo (partizione,
disco fisso). Modalit di utilizzo:


mkfs <dispositivo> -t <tipo file system>


Di seguito alcuni esempi pratici:


# mkfs /dev/hda4 -t ext2


Creare il file system "ext2"
(quello di GNU/Linux) sul dispositivo "/dev/hda4/".


# mkfs /dev/hda4 -t msdos


Creare il file system "msdos"
(quello del DOS) sullo stesso dispositivo "/dev/hda4/".


# mkfs /dev/hda4 -t vfat32


Creare il file system "vfat32"
(quello di MS Windows) sullo stesso dispositivo "/dev/hda4/".
Se volessimo creare un file system su un comune dischetto
floppy:


# mkfs /dev/fd0 -t ext2


10.2.70 more<more> 

Questo comando visualizza il contenuto di un file una schermata
alla volta.


$ more file


Nonostante questo semplice esempio, il comando viene utilizzato
in associazione con altri. L'esempio che segue legge l'output
del comando ls e lo redirige al comando more per visualizzare
il risultato una pagina per volta:


$ ls -la|more


Il simbolo "|" (pipe) viene utilizzato
per passare il risultato di un comando al successivo.

10.2.71 mount <mount>

Questo comando serve a montare un file system. Nell'esempio
che segue viene mostrato come montare un cd-rom con file
system iso9660 alla directory /mnt/cdrom:


# mount /dev/cdrom -t iso9660 /mnt/cdrom


Le distribuzioni GNU/Linux memorizzano i dati utili per il
montaggio nel file /etc/fstab per facilitare ed automatizzare
le operazioni comuni. Se nel file appena citato  presente
una riga di configurazione simile:


/dev/cdrom   /mnt/cdrom   iso9660   owner,noauto,ro   0 0


baster utilizzare il comando mount con una serie ridotta
di opzioni:


# mount /dev/cdrom


oppure


# mount /mnt/cdrom


Dopo aver digitato il comando potrete accedere al contenuto
del vostro cd-rom. Si utilizza il comando mount per condividere
aree file condivise in rete tramite il sistema NFS. La formulazione
tipica pu essere la seguente:


# mount monika:/mnt/nfs -t nfs /mnt/nfs


Dove si indica di montare la partizione /mnt/nfs presente
sul server monika e disporla nel file system locale come
/mnt/nfs. Chiaramente  necessaria la specifica configurazione
lato server (pagina [nfs - server]).

10.2.72 mpage

Se disponete di una stampante Postscript capace di stampare
su entrambi i lati del foglio  possibile utilizzare questo
comando.


$ mpage -t -1 -Plp -bA4 documento.ps


L'opzione "-1" indica il numero di
stampe per pagina e possono alternativamente essere utilizzate
le opzioni "-2", "-4"
per avere 2 o 4 pagine per foglio.

10.2.73 mutt

Un semplice client per leggere la posta elettronica (MUA,
mail user agent). Per lanciarlo:


$ mutt


Una semplice configurazione  quella che segue e deve essere
inserita nel file ~/.muttrc nella propria home directory:


set pop_host="popmail.libero.it"

set pop_delete="yes"

set pop_user="pippo"


La prima direttiva indica il server postale, "pop_delete"
indica se cancellare o meno la posta dal server remoto,
"pop_user", come  semplice intuire indica il proprio
username di connessione. Una volta aggiunti i propri dati
nel file di configurazione baster lanciare mutt e premere
il tasto    e verr contattato il server.
Per le proprie caratteristiche non  possibile configurare
un server SMTP esterno, differente dal proprio server locale
di posta.

10.2.74 mv 

Questo comando pu avere una duplice funzionalit: muovere
un file e rinominarlo. Nell'esempio che segue viene rinominato
un file con un nuovo nome:


$ mv vecchionome nuovonome


Per muovere un file verso un'altra directory, digitate:


$ mv nuovonome ~/documenti/


In questo ultimo caso viene utilizzato il simbolo "~"
che indica la directory home dell'utente. Il file viene
spostato nella directory /home/darshan/documenti/.

10.2.75 nice 

Serve a cambiare la modalit di esecuzione di un programma.
Se viene lanciato senza opzioni viene presentata la priorit
corrente:


$ nice

0


Nel caso in esame abbiamo ricevuto un valore pari a "0".
I valori di priorit vanno da -20 (la pi alta) a 19 (la
pi bassa). Se volessimo abbassare la priorit di esecuzione
di un programma in modo che non disturbi le attivit del
sistema digitiamo:


$ nice -n 5 nomeprogramma


L'opzione "-n" mi permette di indicare
un valore scelto nella scala esposta precedentemente.

10.2.76 nl

Se si desidera numerare ogni singola riga di un documento
di testo questo  il comando che serve. Esistono diverse
opzioni interessanti:

* -v n definisce il numero iniziale per la numerazione 

* -i n stabilisce il valore di incremento della numerazione 

* -p non ricomincia la numerazione per ogni nuova pagina 

Per numerare le righe di un documento partendo dal valore
1 e incrementando di una singola unit per volta dovremo
digitare quanto segue:


$ nl -v 1 -l 1 doc.txt > doc2.txt 
 

Il documento con la numerazione  stato ridiretto al file
"doc2.txt".

10.2.77 nohup 

Serve a lanciare un programma in particolari modalit. L'utilizzo
di questo comando  particolarmente utile quando si deve
eseguire un programma di calcolo e non lo si interrompere
nel momento in cui vi disconnettete dal sistema (es. in
una connessione telnet).


$ nohup nomeprogramma

nohup: appending output to `nohup.out'


Il programma continuer a girare in background ed eventuali
messaggi saranno riportati nel file "nohup.out"
creato nella directory corrente.

10.2.78 passwd <passwd>

Questo comando serve per cambiare la propria password (parola
d'ordine) necessaria per l'autenticazione nel sistema. Esistono
due differenti livelli di utilizzo del comando, un livello
ampliato e completo per l'utente root (l'amministratore
di sistema) e un livello ristretto ma essenziale per il
resto degli utenti nel sistema. Mentre un utente pu utilizzare
passwd per gestire la propria password, l'utente root pu
utilizzare il comando per gestire oltre alla propria password
quelle degli utenti nel server amministrato. Il caso seguente
 quello dell'utente "darshan":


$ passwd

Changing password for darshan

(current) UNIX password: *******

New UNIX password: ********

Retype new UNIX password: ********


Analizziamo ogni singolo passo. In un primo momento viene
chiesta la password corrente, la parola d'ordine che attualmente
ci permette di collegarci al sistema. Se quest'ultima corrisponde
viene chiesto di digitare una nuova password con successiva
verifica. Il comando  intelligente e cerca di colmare l'inesperienza
di un nuovo utente o scelte incaute che possono compromettere
la sicurezza del sistema. Le nuove password digitate vengono
controllate e se non rispettano determinati parametri si
riceve un messaggio di avviso che invita a seguire determinate
norme. Una combinazione di numeri e lettere maiuscole/minuscole
pu essere una valida soluzione([footnote] CentralNic (Internet domain name registry) ha
commissionato uno studio su una base campionaria di 1.200
impiegati sull'utilizzo delle password in ambienti lavorativi.
E' emersa una classe dominante di parole e questa  legata
alla "famiglia", nomi di parenti, del
proprio partner o animali domestici. Al seguito vi  la
classe "divertimento" con parole
legate al mondo della musica (i cantanti preferiti) o dello
spettacolo (alta frequenza per gli attori o i personaggi
in voga nell'anno corrente). Le persone che risultano maggiormente
consapevoli del problema sicurezza e che usano password
molto complesse risulterebbero una classe inferiore al 9%
del totale. Ulteriore informazione emersa  stata la modalit
pi frequente di attacco da parte di un cracker, la simulazione
di problemi tecnici e la richiesta della password utente
per l'assistenza.) . Esempio:


A3r0pLan0 \Leftrightarrow  aeroplano

 MaNuCha0 \Leftrightarrow  manuchao

 F3deRic0 \Leftrightarrow  federico

10.2.79 patch <patch>

Il comando serve per applicare i file patch (creato con il
comando patch) creato con le differenze tra un file e un
file pi recente. La modalit di utilizzo  la seguente:


$ patch -p0 < file-txt.patch 
 

Per applicare patch binarie  necessaria la seguente opzione:


$ patch -binary -p0 < file-bin.patch

10.2.80 pico 

Il seguente comando lancia un editor di testo semplice ed
intuitivo, presente nel sistema se viene installato il pacchetto
software pine. Per utilizzarlo:


$ pico


Per poter salvare il file editato premere contemporaneamente
i tasti  e , oppure  e . Un'alternativa GPL di questo editor
 nano che aggiunge nuove funzionalit anche se consiglio
l'utilizzo del rudimentale ma potente editor vi.

10.2.81 pr

Questo comando serve per preparare un file per la stampa.
La forma di utilizzo  la seguente:


$ pr doc.txt 
 

Il file "doc.txt" verr formattato
con una lunghezza di 66 righe (numero per la lunghezza configurabile
a piacimento) e i dati relativi al file (data, ora, nome,
numero di pagina).

10.2.82 ps <ps>

Riporta lo stato dei processi attivi nel sistema e si utilizza
nel seguente modo:


$ ps

PID TTY         TIME CMD

648 pts/2   00:00:00 bash

649 pts/2   00:00:00 ps


Nell'uso comune  frequente utilizzare il comando con le
seguenti opzioni:


$ ps afx


Dove la lettera "a" mostra
i processi degli altri utenti collegati al sistema, la lettera
"f" la sequenza dei processi attivi organizzata in una
struttura ad albero e la lettera "x"
che mostra i processi senza terminali di controllo.

10.2.83 pstree

Questo comando ha un funzionamento molto simile a ps ma rappresenta
i processi attivi in un alberatura particolare. Digitate: 


$ pstree -n

init-+-kflushd

     |-kupdate

     |-kpiod

     |-kswapd

     |-mdrecoveryd

     |-syslogd

     |-klogd

     |-xfs

     |-login---bash

     |-5*[mingetty]

     |-gdm-+-X

     |     `-gdm---Default---gnome-session

     |-esd

     |-gnome-smproxy

     |-sawfish

     |-xscreensaver

     |-gmc

     |-panel

     |-gnome-terminal-+-gnome-pty-helper

     |                `-bash---pstree

     |-gnome-name-serv

     |-tasklist_applet

     |-rpciod

     `-gv---gs

10.2.84 pwd 

Questo comando vi indica la posizione attuale nel file system:


$ pwd

/home/darshan/

10.2.85 rdate

Volete avere l'ora di sistema sincronizzata con il resto
del mondo? :) Bene. In questa operazione vi potr essere
utile il comando seguente:


# rdate -sp tempo.cstv.to.cnr.it


che si collegher al server indicato e cambier l'ora di
sistema sincronizzandola con quella riscontrata. Se volete
successivamente trattenere l'ora per le future sessioni
digitate:


# hwclock --systohc &


Per ulteriori informazioni su hwclock andate a pagina [hwclock].

10.2.86 reboot 

Comando necessario per riavviare il sistema. Una volta lanciato
compier diverse operazioni volte a interrompere i servizi
attivi, disabilitare i dispositivi che compongono il file
system e riavviare il computer. 


# reboot

10.2.87 rm

Questo comando rimuove un file in maniera permanente. Nell'esempio
che segue viene mostrata la modalit interattiva ottenuta
con l'opzione "-i":


$ rm -i file


La modalit forzata agisce in maniera inversa. Elimina il
file senza chiedere conferma preventiva:


$ rm -f file


Se si desidera cancellare una directory e i file in essa
contenuti  necessario utilizzare l'opzione "-r"
(recursive) nel seguente modo:


$ rm -fr documenti/

10.2.88 rmmod<rmmod>

E' un'utilit per il kernel di Linux che permette di rimuovere
i moduli caricati in memoria.


# rmmod sound


Per rimuovere tutti i moduli caricati  necessario utilizzare
l'opzione "-a" come segue:


# rmmod -a


Altre utilit per la gestione dei moduli sono insmod(pag.
[insmod]), modprobe(pag. [modprobe])
e lsmod(pag. [lsmod]).

10.2.89 route<route>

Questo comando serve per gestire la tavola di IP routing
(networking). Per verificare i parametri di routing definiti
digitate:


# route -n

Kernel IP routing table 

Destination  Gateway  Genmask       Flags Metric Ref Use Iface 

192.168.0.0  0.0.0.0  255.255.255.0 U     0      0   0   eth0


Per aggiungere un gateway di riferimento per la macchina
la sintassi  la seguente:


# route add default gw 192.168.0.3


per aggiungere un indirizzo da rifiutare:


# route add -host server.it reject


L'argomento considerato  alquanto complesso e pu essere
fuorviante per il target di utenti al quale si propone il
manuale. Con tale motivazione non si vuole insistere sulla
cosa in maniera eccessiva ma  altres possibile ampliare
le proprie conoscenze nella numerosa documentazione esterna
presente su Internet.

10.2.90 rpm<rpm>

Questo comando  lo strumento di gestione dei pacchetti software
caratteristico della distribuzione Linux Red Hat. Questo
comando gestisce i pacchetti software organizzati secondo
le specifiche del formato che vengono indicati comunemente
con l'estensione ".rpm".
Analizziamo le varie opzioni:


# rpm -i nomefile.rpm


Il comando installa un pacchetto software nel sistema.


# rpm -U nomefile.rpm


Il comando aggiorna un pacchetto software nel sistema.


# rpm -e nomefile


Il comando rimuove il software dal sistema.


# rpm -qf esempio.txt


Il comando esamina quale pacchetto software conteneva il
file esempio.txt.


# rpm -qa


Il comando elenca i pacchetti software installati sul proprio
sistema. Nelle fasi di installazione e aggiornamento possono
essere utilizzate ulteriori opzioni che informano sullo
stato di esecuzione del processo e mostrano una barra di
progresso. 


# rpm -ivh nomefile.rpm

nomefile         ############################ 
 

# rpm -Uvh nomefile.rpm

nomefile         ############################


In casi particolari pu capitare che il pacchetto che si
desidera installare subisca particolari vincoli di dipendenza
verso altri software. Se vogliamo sopprimere questi ultimi
digitiamo:


# rpm -i nomefile.rpm --nodeps


Una scelta particolarmente orientata ad un utente esperto
pu anche essere la seguente:


# rpm -i nomefile.rpm --force


Il comando digitato forza l'installazione senza controlli
preventivi dei pacchetti esistenti o sui vincoli di dipendenza.
Un'ulteriore necessit pu essere quella di conoscere ogni
possibile informazione sul pacchetto software che ci si
approssima ad installare nel proprio sistema. Per questo
 necessario digitare quando segue:


# rpm -qpil geekcode-1.7-2.i386.rpm

Name        : geekcode         Relocations: /usr

Version     : 1.7                   Vendor: Chris Gushue

Release     : 2                 Build Date: mar 22 feb 2000 15:59:14

Install date: (not installed)   Build Host: DeepThought.prefect.net

Group       : Amusements/Games  Source RPM: geekcode-1.7-2.src.rpm

Size        : 159494               License: GPL

Packager    : Chris Ausbrooks <weed@bucket.pp.ualr.edu>

URL         : http://seymour.lazygenes.net/geekcode.html

Summary     : Generates your geek code.

Description :

This program will generate a geek code block for you by simply

choosing which codes suit you from the screen.

/usr/bin/geekcode

/usr/doc/geekcode-1.7

/usr/doc/geekcode-1.7/CHANGES

/usr/doc/geekcode-1.7/COPYING

/usr/doc/geekcode-1.7/INSTALL

/usr/doc/geekcode-1.7/README

/usr/doc/geekcode-1.7/geekcode.txt

10.2.91 rpm2cpio<rpm2cpio>

Se desiderate convertire un pacchetto software in formato
".rpm" in un archivio comune ".cpio"
questo  quello che vi serve. La forma tipica  la seguente:


# rpm2cpio nomefile.rpm > archivio.cpio
 

Per estrarre successivamente l'archivio creato fate riferimento
al comando cpio (pagina [cpio]).

10.2.92 rsync

Se  vostra necessit replicare un direttorio sul vostro
filesystem o viceversa, pu esservi utile il seguente comando:


$ rsync -avz --exclude pippo.* --delete <server>:/web/ web/


In questo modo copierete nella directory "web/"
il contenuto della directory "/web/"
del server indicato escludendo tutti i file che iniziano
con "pippo." e cancellando i file locali
che non esistono pi sulla macchina remota.

10.2.93 scp

Secure copy, un programma utile per copiare file tra macchine
in rete e giovare della protezione cifrata di ssh. La modalit
di utilizzo  la seguente:


$ scp file.tgz madrid@server.com:


copia il file locale "file.tgz"
nella macchina "server.com"
dove ho un account con username "madrid".
Per copiare effettivamente il file su quella macchina verr
richiesta la password di autenticazione relativa.

10.2.94 set 

Questo comando mostra le variabili di ambiente della vostra
sessione:


$ set


Il comando set ha la medesima funzionalit del comando env.

10.2.95 shutdown<shutdown>

Questo comando prepara il sistema per essere spento fisicamente
e permette opzioni anche per il riavvio. Presenta analogie
con il comando halt (pagina [halt])
ma porta ulteriori opzioni relative al riavvio del computer.
La forma tipica  la seguente:


# shutdown -r now
 

L'opzione "-r" sottointende reboot,
riavvio; era possibile utilizzare anche l'opzione "-h"
che sottointende a halt, ferma. E' cosa gentile preavvisare
gli eventuali utenti collegati al sistema e dare loro il
tempo per concludere le operazioni in corso. Digitando:


# shutdown -r +1 "Riavvio della macchina"
 

Lanciamo l'interruzione del sistema con 1 minuto di attesa
e un messaggio di avviso per gli utenti collegati.

10.2.96 slattach

Questo comando provvede a creare un collegamento tra un'interfaccia
di rete e una linea seriale in maniera molto semplice. La
modalit d'uso:


$ slattach -p cslip -s 38400 ttyS1


Nell'esempio si collega un'interfaccia di rete alla porta
seriale "ttyS1", con la velocit di
trasferimento di "38400"
e utilizzando il protocollo "cslip".
Per maggiori informazioni consultare la guida in linea:


$ man slattach

10.2.97 slocate

Le modalit di funzionamento di questo comando sono simili
a quelle di locate (pagina [locate]).
Differenza che contraddistingue i due comandi  una maggiore
sicurezza per slocate nella rappresentazione della ricerca.
Quest'ultima infatti mostrer unicamente i file accessibili
(in termini di diritti) dagli utenti del sistema. La modalit
di utilizzo  la seguente:


$ slocate nomefile

10.2.98 source

Il comando  parte dei comandi integrati all'interno della
shell bash ed  particolarmente utile se si vuole modificare
un file di configurazione e ricaricarlo senza dover uscire
dal sistema e loggarsi nuovamente. Un esempio chiarisce
pi di cento parole:


# source ~/.bashrc


Immaginiamo la situazione: abbiamo apportato modifiche al
file ~/.bashrc presente nella nostra HOME directory e relativo
alle configurazioni personali della nostra shell bash dei
comandi. Per poter disporre subito dei cambiamenti fatti
possiamo digitare il comando come illustrato oppure uscire
dal sistema ed entrare nuovamente. 

10.2.99 split 

Questo comando  utile quando si desidera dividere un file
con dimensioni elevate in varie parti. Digitate:


$ split -b 1m moni.tif


In questo caso il file "moni.tif"
verr diviso in vari file della dimensione di 1 Mbyte i
quali saranno nominati con una sequenza di lettere per determinare
l'ordine. Per riottenere il nostro file  necessario digitare:


$ cat xaa xab xac > moni.tif


Il file originale sar ripristinato.

10.2.100 ssh<ssh>

Utilizzare telnet (pagina [telnet])
per connessioni remote pu compromettere la propria sicurezza
trasferendo dati in chiaro. A questo viene incontro il client
ssh che instaura una connessione sicura tra due macchine
in rete crittando la trasmissione dei dati. La forma tipica
di utilizzo  la seguente:


$ ssh -l nomeutente nomeserver 
 

L'utilizzo del client prevede l'esistenza del demone sshd
(lato server) attivo e configurato per accettare le connessioni
di questo tipo.

10.2.101 su<su>

Questo comando serve per cambiare la propria modalit utente
in una diversa o quella relativa all'utente root. Digitate:


$ su -

Password: *******

[root@dada /root]#


L'opzione "-" attiva la configurazione
della shell dell'utente indicato. In ogni caso  richiesta
la password tranne per il passaggio da utente root a utente
normale per ovvie ragioni.

10.2.102 talk 

Questo comando vi permette di comunicare con altri utenti
presenti sul vostro server o collegati a server remoti nella
vostra rete locale o su Internet. Se desiderate parlare
con l'utente madrid  necessario digitare quanto segue:


$ talk madrid@localhost


Nell'esempio appena visto si sottointende che l'utente "madrid"
sia presente e collegato al nostro server. Per conoscere
queste informazioni fate riferimento al comando ps che vi
permette inoltre di conoscere l'interfaccia utilizzata dall'utente
nel sistema ed utilizzarla come alternativa al suo nome:


$ talk pts/2


Nell'esempio che segue viene illustrato l'utilizzo del comando
utilizzando la forma utente@dominio che in questo caso 
la macchina locale:


$ talk madrid@localhost


Il nome dominio  "localhost",
genericamente inteso come il server locale sul quale vi
siete collegati. Se disponete di un server collegato ad
Internet e desiderate chiamare un vostro amico collegato
su un altro server in rete  necessario specificare un dominio
con la denominazione tipica della rete:


$ talk madrid@erlug.linux.it


Se l'utente chiamato accetta la chiamata potrete dialogare
direttamente con lui e scambiarvi dati in modalit testo.

10.2.103 tar<tar>

Questo comando serve per archiviare un insieme di file in
un solo file e viene utilizzato nel seguente modo:


$ tar -c archivio.tar Directory/


Nell'uso quotidiano il file archivio viene spesso compresso
utilizzando sempre lo stesso carattere ma con opzioni aggiuntive:


$ tar -zcvf archivio.tar.gz Directory/


Nell'esempio appena visto si utilizza l'opzione "z"
per la compressione dei dati tramite gzip, l'opzione "c"
che indica la creazione di un archivio, l'opzione "v"
(verbose) per visualizzare i messaggi di esecuzione e l'opzione
"f" per definire il nome del file archivio. L'estensione
".tar"  puramente indicativa. Se si volesse creare
un archivio multivolume utilizzando dei floppy-disk HD,
digitate:


$ tar -cvfM /dev/fd0H1440 archivio/


L'opzione "M" creer vari volumi a
seconda della situazione. Per riunire i vari multivolumi
 necessario utilizzare il comando cat nel seguente modo:


$ cat 1.tar 2.tar > archivio.tar.gz


Per scompattare il file creato  necessario digitare:


$ tar -zxvf archivio.tar.gz


oppure con 


$ tar -xvf archivio.tar


Se l'archivio non  compresso gzip.

10.2.104 tcpdchk

Questo comando controlla la configurazione di TCP_WRAPPER
e vi segnala eventuali configurazioni errate. Digitate:


# tcpdchk 
 

Se vengono riscontrati errori  necessario modificare i file
/etc/hosts.deny e /etc/hosts.allow.

10.2.105 tcpdump

Utile comando per monitorare una interfaccia di rete nel
sistema locale.


# tcpdump -i eth0


E' un sistema molto rudimentale e pu essere sostituito con
strumenti di analisi molto pi gradevoli come ethereal.

10.2.106 telnet <telnet>

Se c' un programma storico questo  senza dubbio telnet,
un programma che permette di gestire connessioni remote
ad un altro server per amministrarlo ed eseguire programmi.
Per poterlo utilizzare  chiaramente necessario avere un
accesso sul server interessato:


$ telnet

telnet>


Per conoscere l'insieme delle opzioni presenti digitare "help":


telnet> help


Per aprire una connessione ad un server:


telnet> open nomeserver


Per chiudere una connessione:


telnet> close  
 

Utilizzando una forma compatta:


$ telnet -l utente nomeserver 
 

Per effettuare una connessione sicura, crittata con particolari
algoritmi, si consiglia l'utilizzo di ssh (pagina [ssh]).

10.2.107 top<top>

L'utilizzo di questa applicazione  utile se si intende monitorare
il carico del processore e visualizzare i processi attivi.
Digitate il comando nel seguente modo:


$ top 
 

e successivamente apparir quanto segue: 


6:32pm up 1:16, 2 users, load average: 0.15, 0.11, 0.09

46 processes: 44 sleeping, 2 running, 0 zombie, 0 stopped

CPU states: 6.4% user, 3.6% system, 0.0% nice, 89.8% idle

Mem:  95504K av, 63940K used, 31564K free, 47496K shrd, 4964K
buff

Swap: 60476K av,     0K used, 60476K free              34156K
cached

 

 PID USER    PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM  
TIME COMMAND

 573 root     15   0  8784 8784  1656 R       0  5.2  9.1   3:54 X

 641 root      9   0  1040 1040   836 R       0  2.7  1.0   0:01
top

 631 root      4   0  3392 3392  2656 S       0  1.7  3.5   0:01
gnome-terminal

 577 root      1   0  1324 1324  1008 S       0  0.3  1.3   0:02
fvwm2

   4 root      0   0     0    0     0 SW      0  0.0  0.0   0:00
kpiod

... 
 

Per uscire premete contemporaneamente i tasti  e .

10.2.108 tr

Questo comando agisce sullo standard input per tradurre,
copiare, cambiare quest'ultimo e riportare il risultato
sullo standard output. 


Nota

Conoscevo gi il comando ma durante il Linux Meeting([footnote] Bologna, 28/29 Ottobre 2000)  ([footnote] Linux Meeting - http://www.linuxmeeting.net) , il professor Roberto Di Cosmo durante il suo intervento
ha presentato un "utilizzo"
interessante del comando. Il suo obbiettivo era dimostrare
quante informazioni personali circolassero in un singolo
documento .doc (scritto con MS Word). Il documento mostrava
all'apertura pochissime banali stringhe di testo eppure
la dimensione finale del documento era di 22k, cio avrebbe
dovuto contenere circa 22 mila caratteri, cosa del tutto
falsa. Inizialmente Di Cosmo ha mostrato in semplice analisi
una visualizzazione "cruda"
del documento tramite il comando:


$ cat prova.doc


Le informazioni comparse erano eccessive e la seguente sequenza
di comandi ha operato per eliminare almeno gli spazi spazio(blank)
presenti e altri caratteri non significativi presenti nel
documento:


$ tr -s '\000''' < prova.doc |tr -d '[:cntrl:]' > prova.txt


La successiva visualizzazione del documento elaborato


$ cat prova.txt


ha pubblicamente dimostrato che in un documento di questo
formato circolano informazioni come MAC address, codici
identificativi, porzioni di testo scritto e cancellato nel
documento e altro ancora. Pensate a quale valenza possono
avere determinate soluzioni di sicurezza se alla fine circolano
documenti in questo formato. Nessuna!

10.2.109 uname<uname>

Questo comando  utile se si desidera avere un quadro generale
sulle caratteristiche del computer e conoscere alcune importanti
informazioni di sistema. La forma rapida e comune di utilizzo
 la seguente:


$ uname -a

Linux dada 2.2.14-5.0 #1 Tue Mar 7 21:07:54 EDT 2000 i686 unknown 
 

Dove l'opzione "-a" indica
di rappresentare tutte le informazioni disponibili.

10.2.110 umount 

Questo comando compie una operazione inversa al comando mount
(pagina [mount]), ovvero smonta il file system aggiunto.
Riprendendo l'esempio del cd-rom:


# umount /mnt/cdrom


Per svolgere l'operazione  necessario essere in una directory
differente da quelle presenti nel file system che si desidera
smontare.

10.2.111 vi / vim <vi><vim>

Questo comando lancia un editor di testo molto diffuso nella
famiglia dei sistemi operativi Unix. Per creare un nuovo
file, digitate:


$ vi pippo.txt


E' sicuramente un editor minimale nella propria interfaccia
ma allo stesso tempo molto potente. I comandi presentati
nella tabella [Comandi per l'editor vi] riassumono
le combinazioni di tasti per le operazioni pi frequenti. 
([tab] +-----------------------------------------------------------------+
|                     Comandi per l'editor vi                     |
+-----------------------------------------------------------------+
+------------------+----------------------------------------------+
| Sintassi         |  Azione                                      |
+------------------+----------------------------------------------+
| :q!              |   uscire senza salvare                       |
+------------------+----------------------------------------------+
| :w               |   salvare il contenuto                       |
+------------------+----------------------------------------------+
| :wq              |   salvare il contenuto e uscire              |
+------------------+----------------------------------------------+
| :help            |   consultare la guida programma              |
+------------------+----------------------------------------------+
| :+n              |   spostarsi alla riga n (numero)             |
+------------------+----------------------------------------------+
| :s/old/new/g     |   sostituzione di una parola (da old a new)  |
+------------------+----------------------------------------------+
| :r file          |   inserire il file nel testo aperto          |
+------------------+----------------------------------------------+
| :r! comando      |   eseguire un comando di sistema             |
+------------------+----------------------------------------------+
| :mkv             |  per salvare le proprie opzioni dell'editor  |
+------------------+----------------------------------------------+
+-----------------------------------------------------------------+
|               Comandi aggiuntivi dell'editor vim                |
+-----------------------------------------------------------------+
+------------------+----------------------------------------------+
| Sintassi         |  Azione                                      |
+------------------+----------------------------------------------+
| :syntax on       |   syntax highlighting attivo                 |
+------------------+----------------------------------------------+
| :set syntax=html |   configura il syntax highlighting per html  |
+------------------+----------------------------------------------+
([tab] Comandi per l'editor vi<Comandi per l'editor vi>) 

10.2.112 vlock<vlock>

Questo comando blocca la console testo. Serve per proteggere
ogni intrusione locale al vostro sistema. Per attivarlo
 necessario essere in modalit console testo e digitare:


$ vlock

This TTY is now locked.

Use Atl-function keys to switch to other virtual consoles.

Please enter the password to unlock.

darshan's Password:


Per togliere la protezione  necessario digitare la propria
password. Se l'ambiente  quello grafico del Server X un
comando analogo  xlock (pagina [xlock]).

10.2.113 zip <zip>

Questo comando serve a comprimere un file. Per comprimere
un file  necessario digitare:


$ zip file.zip racconto.txt


Il file "racconto.txt" verr
compresso e verr rinominato come "file.zip".
Per scompattare il file presente  necessario utilizzare
il comando unzip:


$ unzip file.zip


10.2.114 wc

Questo comando serve per conoscere dati relativi ad un file
di testo:


$ wc documento.txt


Verr presentata una serie di informazioni, selezionabili
con le seguenti opzioni:

-c per ottenere solo il numero dei caratteri 

-w per ottenere solo il numero delle parole 

-l per ottenere solamente il numero delle righe presenti 

Digitando:


$ wc -w documento.txt

560 documento.txt 
 

otteniamo il numero di parole presenti nel file.

10.2.115 whatis 

Questo comando serve a ricercare la descrizione per ogni
comando indicizzando la pagine manuale. Se desiderate avere
la descrizione del comando ls digitate:


$ whatis ls


Verr presentata una breve descrizione. Se dovesse apparire
un messaggio del tipo:


ls: nothing appropriate


E' necessario eseguire da amministratore il comando makewhatis
per creare l'indice delle descrizioni. Un comando analogo
a whatis  apropos (pagina [apropos]).

10.2.116 write 

Questo comando permette di mandare messaggi ad un determinato
utente collegato sul server locale. A differenza del comando
talk, la comunicazione in questo caso  unidirezionale.
Per utilizzarlo  necessario digitare il comando e il nome
dell'utente di riferimento (nell'esempio seguente l'utente
madrid), premere il tasto INVIO e scrivere il proprio messaggio
da riportare:


$ write madrid

Questo  un messaggio di esempio


Se l'utente "madrid"  collegato
al server locale ricever quanto segue:


Message from darshan@dada on pts/3 at 03:46 ...

Questo  un messaggio di esempio

10.2.117 who 

Attraverso questo comando  possibile avere informazioni
sugli utenti connessi al sistema. La sintassi di utilizzo
 la seguente:


$ who

root   tty1   Nov 8 15:02

root   tty2   Nov 8 16:00

10.2.118 xdvi<xdvi>

Applicazione per l'ambiente X Window. Permette di visualizzare
un file con estensione .dvi. Digitate:


$ xdvi documento.dvi  
 

Per maggiori informazioni relative al formato file andate
a pagina [LaTeX].

10.2.119 xlock<xlock>

Questo comando vi permette di bloccare lo schermo e le vostre
attivit da intrusioni altrui. Il concetto  simile a quello
visto per vlock (pagina [vlock])
in modalit console testo. Per attivare questa protezione
 necessario digitare:


$ xlock

10.2.120 xset

Utilit per aggiungere parametri aggiunti al Server X senza
riavviarlo. Nell'esempio che segue gestiamo i font path,
i percorsi dove sono disposti i caratteri.


$ xset fp+ /usr/X11R6/lib/fonts/directory/


Per rimuovere un percorso:


$ xset fp- /usr/X11R6/lib/fonts/directory/

10.2.121 xsetpointer 

Applicazione per l'ambiente X Window. Questo comando permette
di mostrare e configurare strumenti di puntamento per l'ambiente
grafico. I puntatori devono essere precedentemente configurati
nel file di configurazione XF86Config:


$ xsetpointer -l

"keyboard"  [XKeyboard]

"pointer"   [Xpointer]

"wacom"     [wacom]


Nell'esempio appena visto l'opzione "-l"
ci elenca i puntatori configurati. Se decidiamo di cambiare
il puntatore dal mouse comune alla tavoletta grafica presente
digitiamo:


$ xsetpointer wacom

10.2.122 xsetroot 

Applicazione per l'ambiente X Window. Permette di configurare
lo sfondo dell'ambiente utilizzando immagini (in formato
.bmp) e colori solidi:


$ xsetroot -solid blue


Il comando appena digitato imposta il colore blu come colore
di sfondo.

10.2.123 xterm 

Applicazione per l'ambiente X Window. Rappresenta uno dei
terminali maggiormente utilizzati e supporta un'ampia serie
di emulazioni terminale.


$ xterm


Se desideriamo configurare maggiormente questa applicazione
possiamo aggiungere delle opzioni sulla riga di comando:


$ xterm -rightbar -bg white -fg black


In questo modo lanciamo xterm con la barra di scorrimento
sulla destra e con caratteri neri su sfondo bianco. Premendo
contemporaneamente il tasto sinistro (o il tasto destro)
del mouse e il pulsante compariranno dei menu descrittivi
per rapide configurazioni del programma.

10.2.124 xvidtune 

Applicazione per l'ambiente X Window. Permette di configurare
le frequenze video del monitor e operare sulla centratura:


# xvidtune

 F.A.Q. 

Domanda: "Molti dei comandi presentati funzionano
  in modalit console? Esistono anche applicazioni con interfaccia
  grafica?" 

La direzione dei sistemi operativi, GNU/Linux compreso, punta
ad ambienti desktop grafici. Le motivazioni di questa direzione
sono da trovare in una maggiore semplicit ed intuitivit
nell'utilizzo di una soluzione informatica per i propri
personali obiettivi. Nonostante gli aspetti di interattivit
citati, conoscere la shell e comandi in modalit testo rende
facile lo svolgimento di comandi sequenziali nella logica
del "pipe". La shell, seppur ostica per un
utente alle prime armi, pu offrire una flessibilit molto
superiore a quella che offre un'interfaccia desktop.

Domanda: "Ho letto le informazioni relative a
  GnuPG a pagina [gpg]. Quanto  importante
  proteggere i propri dati e i propri messaggi in rete?"

La propria privacy  un diritto innegabile e la possibilit
che altre persone possano captare illecitamente le vostre
comunicazioni via email  un caso remoto ma non impossibile.
Misurate il vostro livello personale di paranoia e giudicate
voi stessi quanto possa esservi utile proteggervi grazie
alla crittografia.

Domanda: "E' possibile eseguire un comando solo
  quando il carico del processore scende sotto un certo
  livello di guardia?"

La risposta  "S" e per questa
esigenze torna utile il comando batch utilizzato nella seguente
forma:


# batch -f script_shell.sh


Quando il carico del processore sar sotto il limite definito
(default 0.8) l'eseguibile verr lanciato.

Post installazione<Capitolo 10>

Se utilizzate GNU/Linux sul vostro computer personale all'avvio
della macchina potrete notare il seguente prompt


lilo:


E' il boot loader, il meccanismo che compie diverse operazioni
ma essenzialmente carica i sistemi operativi scelti e presenti
nel vostro computer. Per avere visione delle possibilit
offerte si consiglia di premere il tasto \rightarrow (tabulatore)([footnote] Debian GNU/Linux ha una propria configurazione
del prompt differente dalla maggiorparte delle distribuzioni.
Per ottenere la lista delle opzioni  necessario premere
il tasto  e conseguentemente il tasto \rightarrow (tabulatore).) . Nei casi comuni GNU/Linux viene lanciato in automatico
dopo 5 secondi. Durante il caricamento del sistema operativo
 possibile visualizzare le estensioni, il controllo delle
unit-disco e il caricamento dei demoni di sistema fino
al prompt di autenticazione:


Debian GNU testing/unstable


login: darshan

password: *******


Ad autenticazione avvenuta sarete dentro al sistema e vi
comparir un messaggio di sistema (presente nel file /etc/motd)
e il prompt dei comandi:


Most of the programs included with the Debian GNU/Linux system
are 

freely redistributable; the exact distribution terms for
each program 

are described in the individual files in /usr/share/doc/*/copyright

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the
extent

permitted by applicable law.


darshan@dada:~$


Il caso appena esposto  quello comune anche se ultimamente
le distribuzioni pi recenti cercano di portare sin dalla
fase di installazione verso la modalit visuale del Server
X Window per una ricerca di appariscenza ed intuitivit.
Malgrado questa modalit il concetto non cambia. Comparir
una interfaccia grafica per l'autenticazione richiedendo
nome utente e password relativa.

L'utente darshan  una indicazione personale. Recenti distribuzioni
GNU/Linux vi permettono di creare utenti di sistema in fase
di installazione ma il caso comune e classico  quello di
entrare nel sistema per la prima volta come utente root,
l'amministratore, e aggiungere ulteriori utenti tramite
i comandi adduser (pagina [adduser])
e passwd (pagina [passwd]). Dopo aver aggiunto
i propri utenti  bene entrare nel sistema utilizzando quest'ultimi;
limitate l'accesso come utente root solo ai casi necessari.

11.1 Localizzazione italiana del sistema

Per localizzare un sistema Debian GNU/Linux nella propria
lingua nazionale sono necessari alcune operazioni. Nell'installazione
minima del sistema sar presente un pacchetto software essenziale
e per verificarne la presenza digitate: 


# dpkg -l | grep locales

ii locales 2.2.1-3 GNU C Library: National Language


In caso contrario installatelo.


Procediamo alla nostra configurazione sequenzialmente:

1. Modificare il file "/etc/locale.gen"
  con un editor di testi:
    
  # vi /etc/locale.gen
   
  e togliere il carattere "#"
  dalle lingue di interesse. Nel nostro caso:
  ...
  #is_IS ISO-8859-1 
  #it_CH ISO-8859-1 
  it_IT ISO-8859-1 
  it_IT@euro ISO-8859-15 
  #iw_IL ISO-8859-8 
  #ja_JP.EUC-JP EUC-JP
  ...

2. Salvare il file e lanciare il seguente comando:
    
  # locale-gen
  Generating locales... 
  en_US.ISO-8859-1... done 
  it_IT.ISO-8859-1... done 
  it_IT.ISO-8859-15@euro... done 
  Generation complete.

3. inserire il comando:
   
  # export LANG=it_IT 
  per esportare la configurazione della lingua desiderata
  nei file "/etc/profile"
  (per tutto il sistema) o "~/.bashrc"
  per i singoli utenti e la loro relativa sessione di lavoro.

11.2 Gestione unit disco

 Utilizzare cdrom e floppy 

Come si  gi potuto vedere nei precedenti capitoli, esistono
diversi file system che spesso variano da un sistema operativo
all'altro. Nonostante queste differenze esistono degli standard
ISO come il file system dei cd-rom (iso 9660), comune per
tutte le piattaforme. Se disponete di una moderna distribuzione
GNU/Linux con il desktop manager Gnome potrete accedere
all'unit floppy con un singolo clic sull'icona relativa.
Il montaggio dell'unit cd ha due differenti comportamenti
a seconda che sia cd-audio o cd-rom ma in entrambe i casi
tutto quanto avviene in maniera istintiva ed automatica.
Se non potete utilizzare un ambiente grafico  necessario
utilizzare il comando mount visto nel capitolo precedente
e ripreso nell'esempio successivo:


# mount /dev/cdrom

mount: can't find /dev/hdc in /etc/fstab or /etc/mtab


In questo caso  stato utilizzato il comando mount senza
aver alcun riferimento nel file /etc/fstab o /etc/mtab. 


# mount /dev/cdrom -t iso9660 /mnt/cdrom


La stessa cosa deve essere fatta per gestire i floppy ma
a differenza del cd-rom  necessario sapere che tipo di
file system  presente nell'unit in questione. Il file
system di base in ambiente GNU/Linux  ext2 ma  facile
trovare dischetti formattati con file system di tipo msdos
o vfat per ambiente Microsoft Windows. A seconda dei casi
comportatevi come segue: 


File system ext2: 


# mount /dev/fd0 -t ext2 /mnt/floppy 
 

File system ms-dos: 


# mount /dev/fd0 -t msdos /mnt/floppy


File system vfat: 


# mount /dev/fd0 -t vfat /mnt/floppy 
 

 Unit Zip Iomega([footnote] http://www.iomega.com ) 

Se desiderate utilizzare queste unit esterne di memorizzazione
esterne e disponete di una unit collegata tramite la porta
parallela  necessario digitare:


# modprobe ppa


per attivare il modulo del kernel necessario a gestire l'unit
e successivamente montare il disco come qualsiasi altro
dispositivo.


# mount /dev/sda4 -t vfat
/mnt/zip


Viene utilizzato un dispositivo di tipo scsi (/dev/sda4 o
qualsiasi altro) perch l'unit collegata sulla porta parallela
viene emulata come se fosse scsi. Il tipo vfat  il file
system comune in ambienti Windows ma potrebbe essere qualsiasi
altro. La directory /mnt/zip, dove viene collegata l'unit,
dovr necessariamente esistere in precedenza.

11.3 File archivio 

Un archivio o un file copresso pu essere una soluzione per
ridurre lo spazio, spostare un cospicuo numero di file in
modo semplice o semplicemente creare una copia di sicurezza.
Chi viene dal mondo Ms Windows  abituato al formato .zip
mentre chi proviene dal mondo MacOs conosce .sit e .hqx.
Nel mondo Unix esistono ulteriori soluzioni per archiviare/comprimere.
La tabella mostra le estensioni e i relativi programmi necessari.([tab] +---------+-------------------------------+-------------------------+--------------------+
| Estens. |   Compressione                |   Decompressione        |   Pag.             |
+---------+-------------------------------+-------------------------+--------------------+
| .Z      |   compress <file>             |   uncompress file.Z     |   [compress]       |
+---------+-------------------------------+-------------------------+--------------------+
| .gz     |   gzip <file>                 |   gunzip file.gz        |   [gzip], [gunzip] |
+---------+-------------------------------+-------------------------+--------------------+
| .bz2    |   bzip2 <file>                |   bunzip2 file.bz2      |   [bzip2]          |
+---------+-------------------------------+-------------------------+--------------------+
| .tar    |   tar cvf file.tar <file>     |   tar xvf file.tar      |   [tar]            |
+---------+-------------------------------+-------------------------+--------------------+
| .tar.gz |   tar zcvf file.tar.gz <file> |   tar zxvf file.tar.gz  |   [tar]            |
+---------+-------------------------------+-------------------------+--------------------+
| .tgz    |   tar zcvf file.tgz <file>    |   tar zxvf file.tgz     |   [tar]            |
+---------+-------------------------------+-------------------------+--------------------+
| .zip    |   zip file.zip <file>         |   unzip file.zip        |   [zip]            |
+---------+-------------------------------+-------------------------+--------------------+
| .lzh    |   lzh a file.lzh <file>       |   lha x file.lzh        |                    |
+---------+-------------------------------+-------------------------+--------------------+
| .rar    |   rar a file.rar <file>       |   unrar x file.rar      |                    |
+---------+-------------------------------+-------------------------+--------------------+
| .zoo    |   zoo -add file.zoo <file>    |   zoo -extract file.zoo |                    |
+---------+-------------------------------+-------------------------+--------------------+
([tab] Comandi per archiviare/comprimere.) 

Il comando tar  di fatto quello pi utilizzato in ambienti
Unix anche perch rappresenta uno standard consolidato nel
tempo. Il comando per comprimere con maggiori risultati
allo stato attuale  bzip2.

11.4 Creare un disco di avvio

Per garantire una certa sicurezza  bene creare un boot disk
o disco di Avvio. Per tale scopo  necessario utilizzare
il comando mkboot (mkbootdisk per Red Hat).

Utile informazione pu essere il tipo di kernel che si st
utilizzando:


# uname -r


Successivamente inseriamo un dischetto e procediamo digitando
il seguente comando:


# mkboot --installkernel


per Debian GNU/Linux. Per Red Hat:


# mkbootdisk --device /dev/fd0 2.2.13-20

Insert a disk in /dev/fd0. Any information on the disk will be
lost.


dove 2.2.13 era la versione del kernel in uso. Premete per
la creazione del dischetto. Una volta terminata questa fase
 bene riavviare il computer con il dischetto inserito e
verificare il reale funzionamento. Se i comandi indicati
non sono presenti nel sistema si pu ricorrere ad un metodo
pi "rude" per l'operazione. Digitate in seguenza
quanto riportato:


# rdev /boot/vmlinuz-2.4.1 /dev/hda2

# dd if=/boot/vmlinuz-2.4.1 of=/dev/fd0


Il primo comando "indica"
su quale dispositivo montare la root ("/")
mentre il secondo copia il kernel di Linux nel floppy.

11.5 Gestire il supporto APM

Il supporto APM (Advanced Power Managment)  presente nei
computer di ultima generazione e offre la possibilit di
controllare alcuni aspetti del vostro computer come lo spegnimento
automatico. Per attivare o disattivare il supporto  necessario
passare un parametro al kernel in fase di avvio. La forma
della cosa  la seguente:


LILO boot: linux apm=off


oppure


LILO boot: linux apm=on


Per rendere la cosa automatica  possibile farlo modificando
il file "/etc/lilo.conf"
e aggiungere alla sezione del kernel in questione la riga:


append "apm=on"


Di seguito viene riportata la sezione in esame:


#

# file "/etc/lilo.conf"

#

boot=/dev/hda2 

root=/dev/hda2 

install=/boot/boot-menu.b 

delay=20 map=/boot/map 

append="apm=on" 

vga=305 

lba32 

read-only 

image=/boot/vmlinuz-2.4.1 

     label=linux


Una volta terminate le modifiche, salvare il file e lanciare
il comando:


# lilo

Added 2.4.1


Ogni modifica sar ora attiva e presente al prossimo riavvio
della macchina.

11.6 Aggiungere ulteriore SWAP

Lo spazio SWAP  particolarmente utile in sistemi con scarse
risorse di memoria RAM ma la sua presenza non  certo sgradita
con risorse maggiori. In fase di installazione viene richiesto
di creare automaticamente questo spazio come partizione
di un disco ma  possibile estendere ulteriormente questo
aspetto.

 Creare uno spazio SWAP da un disco fisso

Il primo passo  il seguente:


# mkswap -c /dev/hda3


Il comando definisce la partizione "/dev/hda3"
come SWAP. 

Il passo successivo sar:


# swapon /dev/hda3


 Creare uno spazio SWAP da un file di sistema

Creare il file da utilizzare:


# dd if=/dev/zero of=/swap_file bs=1024 count=1024


e seguire le istruzioni (molto simili alle precedenti) per
rendere attivo il file come SWAP e poterlo utilizzare:


# mkswap /swap_file 1024

# swapon swap_file 


Se si desidera utilizzare la partizione o il file di SWAP
ad ogni sessione  necessario aggiungere la seguente riga
al file "/etc/fstab":


/swap_file        none         swap          sw      0 0

11.7 Ricompilare il kernel

Un accenno alla compilazione del kernel di Linux era doveroso.
Il primo passo necessario  informarsi sulla versione pi
recente e procurarsi il codice sorgente. Digitando al prompt
il seguente comando avremo le necessarie informazioni:


# finger @finger.kernel.org

[zeus.kernel.org] 

 

   The latest stable version of the Linux kernel is: 2.4.2

   The latest beta version of the Linux kernel is: 2.3.99-pre9 

   The latest prepatch (alpha) version *appears* to be:
2.4.2-pre4


Il sito di riferimento  senza ombra di dubbio http://www.kernel.org
dove  possibile scaricare il file compresso. Generalmente
il codice viene archiviato con tar e compresso sia con bzip2
che gzip, algoritmi di compressione per ridurne le dimensioni.
In entrambi i casi, una volta scaricati i file indicati,
bisogner digitare quanto segue:


# mv kernel-2.4.0.tar.bz2 /usr/src/

# cd /usr/src

# bunzip2 kernel-2.4.0.tar.bz2

# tar xvf kernel-2.4.0.tar


Sequenzialmente, abbiamo spostato le sorgenti del kernel
nella directory /usr/src, decompresso il file .bz2 e l'archivio
.tar. Verr creata una directory linux/ dove sar presente
il necessario per produrre un kernel personalizzato.

 Pochi semplici passi

Una volta scompattato il codice sorgente del kernel  necessario
compiere le seguenti operazioni per la preparazione e compilazione
di un kernel personalizzato:

1. Rinominare la directory /lib/modules/2.x.x con un nome
  alternativo:
   
  # mv /lib/modules/2.<x>.<x> /lib/modules/2.<x>.<x>.old
   
  Dove <x> rapprsenta il nome versione, es 2.4.0.

2. Posizionarsi nella directory /usr/src/linux e digitare
  uno dei seguenti comandi:
  
  # make config 
  # make menuconfig
  # make xconfig
   
  Si tratta di interfacce utili per la configurazione del
  kernel. Una volta terminata quest'ultima viene creato
  un file nascosto .config che  appunto la nostra personale
  configurazione del kernel da compilare.

3. A questo punto  necessario digitare quanto segue:
   
  # make clean 
  # make dep
  # make bzImage
  # make modules
  # make modules_install
   
  E' possibile raggruppare i comandi per automatizzare l'intera
  procedura:
   
  # make clean dep bzImage modules modules_install

4. In ultima istanza digitare:
   
  # make install
   
  per installare il kernel e i moduli compilati nella posizione
  adeguata. Possiamo ritrovare tutto nelle seguenti directory:
   
  /boot/System.map -> System.map-2.4.1
  /boot/System.map-2.4.1
  /boot/vmlinuz
  /boot/vmlinuz-2.4.0 
   
  e i moduli in:
   
  /lib/modules/2.4.0

5. Modificare il file "/etc/lilo.conf"
  (se viene utilizzato LILO) oppure "/boot/grub/menu.lst"
  (se si utilizza GRUB) per includere il nuovo kernel.

6. Riavviare il computer.

In fase di compilazione  possibile digitare make zdisk (invece
di make bzImage o make zImage) per compilare un kernel personalizzato
e copiarlo in un floppy disk per il successivo test.

Le modalit descritto sono possibili per qualsiasi distribuzione
GNU/Linux ma Debian offre alcuni vantaggi aggiuntivi tramite
il pacchetto kernel-package:


# apt-get install kernel-package


Per ulteriori informazioni:


# man make-kpkg

 kernel modulare o monolitico?

Durante la configurazione del kernel  possibile scegliere
se produrre un kernel modulare oppure un kernel monolitico.
La differenza  sottile e la risposta tra le due opzioni
pu essere unicamente fatta sulla base di scelte personale
e sull'esperienza.

Un kernel modulare permette di scegliere i componenti da
caricare durante le normali attivit di amministrazione
di sistema. Una scomposizione delle funzionalit che pu
coadiuvare la gestione delle risorse nonch il passaggio
di parametri durante il caricamento dei moduli. In contrapposizione,
gestire i moduli richiede una minima esperienza e molti
utenti novizi trovano problemi in tale argomentazione. 

Utilizzare un kernel monolitico, a differenza di quello modulare,
vuol dire avere un kernel compilato e raccolto in un unico
file contenente le funzionalit scelte in fase di compilazione.
Non produrr moduli e correlatamente non sar necessario
acquisire esperienza nella gestione di quest'ultimi ma non
si nasconde che la scelta potr essere contraria alla "gestione
ottimizzata di sistema", unit di
misura invisibile per utenti comuni ma notevole per un amministratore
di sistema che predilige inevitabilmente la flessibilit.

11.8 Gestire i pacchetti software

 Pacchetti .deb

La distribuzione Debian GNU/Linux utilizza un sistema di
gestione dei pacchetti software molto avanzato che permette
di gestire dipendenze e URL automaticamente. Le informazioni
che seguono sono relative alle due principali interfacce
per la gestione dei pacchetti .deb.

 apt-get

Il comando apt-get  gi stato preso in esame a pagina [apt-get]
e serve sinteticamente a gestire il software installato
sul proprio sistema. E' un semplice frontend per la gestione
di un comune metodo di gestione software, sicuramente pi
amichevole di dselect (successivamente esaminato). 

Le configurazioni sul "dove trovare
il software" sono presenti nel file /etc/apt/source.list
riportato di seguito a titolo di esempio:


deb ftp://ftp.students.cs.unibo.it/debian/ unstable main
contrib non-free

deb http://security.debian.org/ potato/updates main contrib
non-free

deb-src http://non-us.debian.org/debian-non-US unstable/non-US
main


L'esempio mostrato mostra percorsi "sorgente"
di varia natura (http, ftp) ampliabili in base alle proprie
esigenze. Le modifiche al file possono essere apportate
manualmente essendo un semplice file di testo ma  molto
comodo utilizzare il comando apt-setup che vi segue intuitivamente
nell'operazione.

 dselect

Il comando permette di gestire i pacchetti software per una
distribuzione Debian. Una volta lanciato il comando dselect
da console apparir quando segue:


Debian `dselect' package handling frontend.


0. [A]ccess  Scegli il metodo di accesso
da usare. 

1. [U]pdate  Aggiorna, se possibile,
l'elenco dei pacchetti disponibili. 

2. [S]elect  Scegli quali pacchetti
vuoi nel tuo sistema. 

3. [I]nstall Installa ed aggiorna i pacchetti
scelti. 

4. [C]onfig  Configura tutti i pacchetti
ancora da configurare. 

5. [R]emove  Rimuovi il software non
voluto. 

6. [Q]uit    Esci
da dselect.


Spostati con ^P e ^N, i tasti cursore, lettera iniziale o
numero dell'opzione; 

Premi <invio> per confermare la selezione. ^L ridisegna la
schermata.


``Access''

Selezionando la voce si accede ad un menu con le seguenti
opzioni:


dselect - lista dei metodi di accesso


Abbrev.  Descrizione 

cdrom    Install from a CD-ROM. 

nfs      Install from an
NFS server (not yet mounted). 

harddisk Install from a hard disk partition (not
yet mounted). 

mounted  Install from a filesystem which is
already mounted. 

floppy   Install from a pile of floppy
disks. 

apt      APT Acquisition
[file,http,ftp]


Le possibili scelte vi permettono di scegliere la fonte di
distribuzione software, dal cdrom al disco locale, dal floppy
alla partizione condivisa in rete (nfs) oppure tramite il
metodo apt che ingloba dispositivi e percorsi http / ftp.


``Update''

Alla scelta della fonte segue l'operazione di "aggiornamento"
della lista dei pacchetti software.


``Select''

Vi permette di compiere una serie di operazioni di gestione.
I seguenti tasti sono utili:

+ Seleziona un pacchetto software per l'installazione.

= Mette un pacchetto "in attesa"
  (hold) ed  utile per eventuali pacchetti corrotti. 

- Rimuove un pacchetto.

i,I attivano o meno la visualizzazione delle informazioni.

Q Sovrascrive i pacchetti software senza curarsi delle
  dipendenze. Si sconsiglia l'uso comune di questa opzione
  ma pu essere utile in casi di emergenza.

X Utilizzare questa opzione per ripristimare la situazione
  esistente ed uscire.

R Cancella tutte le selezioni fatte in un dato livello.

U Questa opzione permette di ritornare alla selezione fatta
  da dselect cancellando eventuali scelte personali gi
  fatte.

D Rimuove le selezioni fatte da dselect lasciando solo
  le vostre personali.
  

``Install''

Una volta fatta la scelta dei pacchetti con le precedenti
voci del menu si passa a questa fase dove viene preventivamente
chiesto autorizzazione a installare/disinstallare i pacchetti
software nel vostro sistema secondo le vostre scelte.


``Configure''

Molti pacchetti prevedono una fase di configurazione durante
l'installazione e con questo passo si forza l'esecuzione
dell'operazione.


``Remove''

Rimuove i pacchetti non necessari.


``Quit''

Ha un indubbio significato e vi serve per uscire dal programma
in questione.

 FAQ

Domanda: "Vorrei connettermi ad un sito ftp e
  scaricare gli aggiornamenti senza per che questi siano
  installati automaticamente. Come devo fare?"

Dopo aver opportunamento aggiunto al file "/etc/apt/source.list"
il PATH per il server ftp/http con apt-setup si possono
scaricare i pacchetti software senza installazione come
segue:


# apt-get -d dist-upgrade


Il punto saliente  l'opzione "-d"
che compie il download del software nuovo senza compiere
azioni ulteriori. Ulteriori informazioni si possono avere
tramite il manuale specifico (man apt-get).

Domanda: "Noto che molte distribuzioni all'avvio riescono
  a mostrare l'immagine di un pinguino. Cosa bisogna fare
  per averla? E' possibile cambiare quell'immagine con una
  propria?"

Ricompilando il kernel con il supporto VESA Frame Buffer
attivo permette di mostrare all'avvio del computer l'immagine
di un pinguino in alto a sinistra mentre scorrono i vari
comandi descrittivi. L'immagine in questione  posizionata
tra il codice sorgente del kernel di Linux (/usr/src/linux/include/linux/linux_logo.h),
immagine descritta in caratteri esadecimali di dimensioni
in pixel di 80x80. 

E' possibile crearsi una propria immagine sostitutiva e per
questo torna utile l'applicazione GIMP (http://www.it.gimp.org)
con il plugin "Linux Logo".
Una volta creato il file baster sostituire l'originale
e ricompilare il kernel.



 



Interfacce Grafiche



X Window<Capitolo 11>

Un sistema X Window permette di gestire ambienti grafici
a finestre e sfruttare al meglio le possibilit offerte
dal networking, reti locali o extranet. I componenti fondamentali
per un sistema di questo tipo si possono sintetizzare in:([fig] ([fig] Rappresentazione del sistema X Window) 

Server X Si tratta del programma che gestisce l'interfaccia
  grafica e accetta le connessioni di rete per la gestione
  remota. 

Client X Sono tutti i programmi che utilizzano l'ambiente
  grafico gestito dal Server X, sia sulla macchina locale
  che su computer in rete. 

Protocollo X Rappresenta il protocollo di comunicazione
  utilizzato dal Server X e dai relativi client. 

Window Manager Sono particolari software diretti
  a gestire le finestre ed ulteriori componenti sopra il
  Server X agendo anch'essi come client. Gli ambienti desktop
  sono l'evoluzione di questi ultimi perch offrono la possibilit
  di gestire eventi in maniera intuitiva tramite il mouse,
  la periferica di puntamento largamente diffusa. 

12.1 Window Manager

Un window manager  un particolare software che si aggiunge
al server X, e offre una interfaccia visuale come sicuramente
conoscerete. Finestre gestibili, riducibili e quant'altro
per automatizzare le vostre operazioni e gestirle in buona
parte con il vostro mouse. Nelle attuali distribuzioni viene
data la possibilit di installare diversi window manager
e tra quelli pi diffusi e stabili si consiglia:

* Blackbox
   http://bb.themes.org

* Window Maker 
   http://www.windowmaker.org

* Enlightenment 
   http://www.enlightenment.org

12.2 Ambienti desktop

Un ambiente desktop  qualcosa in pi di un semplice window
manager. Esso rappresenta un insieme di applicazioni volte
a gestire in simbiosi diversi processi per rendere maggiormente
user friendly l'interfaccia visuale. Utenti GNU/Linux con
una leggera esperienza alle spalle hanno visto la rapida
evoluzione di queste soluzioni integrate. Esistono due progretti
sostanzialmente che si combattono il trono del desktop ufficiale
per le distribuzioni GNU/Linux: Kde e Gnome. Entrambi i
progetti hanno caratteristiche di pregio e la sintesi nel
presente testo non potrebbe essere aggiornata alla continua
evoluzione di quest'ultime soluzioni software. Per ampliare
la propria conoscenza in merito si consiglia di visitare
i siti ufficiali seguenti:

* Progetto GNOME 
   http://www.gnome.org

* Progetto KDE 
   http://www.kde.org

* Applicazioni per KDE 
   http://www.kde.com

Dal mio personale punto di vista utilizzo con gratificazione
KDE e lo consiglio caldamente a tutti. Il progetto  ampiamente
supportato da tutte le distribuzioni GNU/Linux ed  possibile
utilizzare questo ambiente con relativa semplicit.

Il Server XFree86<Capitolo 12>

Il server XFree86  una implementazione di X Window System,
un potente e complesso ambiente grafico per sistemi operativi
Unix. Il codice originale fu sviluppato al MIT; aziende
commerciali hanno fatto di X lo standard per le piattaforma
Unix.

Una libera e distribuibile versione di X Window System del
MIT  stata successivamente sviluppata per processori Intel
da parte di un team di sviluppatori e attualmente XFree86,
il nome dell'implementazione citata,  supportato su diversi
sistemi Unix compatibili e principalmente su GNU/Linux che
ne distribuisce liberamente tutti gli eseguibili necessari,
librerie di sviluppo e applicazioni per la gestione e configurazione.

13.1 Caratteristiche Tecniche

Il Server XFree86 essendo sviluppato per una tipologia di
computer di largo consumo  compatibile con un'ampia lista
di schede video disponibili sul mercato. Salvo eccezioni
dovute a schede video sconosciute o troppo aggiornate potreste
riscontrare problemi di configurazione e supporto. Per evitare
frustrazione e chiarire immediatemente i propri dubbi 
consigliato visitare il sito di XFree86, http://www.xfree86.org,
e cercare la lista di hardware compatibile. I tempi di attesa
per il rilascio di driver aggiornati per la gestione di
schede video molto recente  in continua riduzione sia per
l'interesse in crescita verso GNU/Linux che mobilita le
case produttrici di hardware sia per l'implementazione di
standard come Vesa che accomunano caratteristiche tecniche
che verranno successivamente illustrate.

Le distribuzioni GNU/Linux vengono correlate da diversi pacchetti
software relativi al Server XFree86. Questi pacchetti hanno
un ruolo o rispondono a vostre determinate esigenze personali.
La modularit  dunque una delle caratteristiche fondamentali
che ruota essenzialmente ad un pacchetto base, il Server
XFree86, al quale possono essere aggiunti driver specifici
per la propria scheda video (chiaramente essenziali) ed
insiemi di caratteri da utilizzare a seconda delle esigenze
grafiche e linguistiche (esistono ad esempio caratteri cirillici
tipici della lingua russa o ideogrammi della lingua cinese).

Le recenti versioni rilasciate di XFree86 associate alla
generazione del kernel di Linux 2.2 e successivi hanno visto
la comparsa di ulteriori pacchetti che hanno apportato nuove
condizioni di utilizzo. Faccio riferimento ai pacchetti
aggiuntivi XFS (X Font Server), un font server capace di
gestire file caratteri di svariati formati e condividerli
in rete con altri computer, e VFB (Virtual Frame Buffer)
utile per chi possiede schede grafiche recenti senza supporto
ma compatibili con lo standard Vesa. Non  questo un manuale
per gestire il vostro Server XFree86 e non si vuole avere
la pretesa di poter rispondere ad ogni vostra domanda o
problema. L'ambiente X Window  dunque impraticabile a livello
tecnico e di dettaglio in questo manuale ma  utile sapere
che informazioni aggiornate e nuove caratteristiche sono
disponibili sul sito internet specifico precedentemente
citato.

13.1.1 Il file XF86Config

La configurazione del Server X per l'esecuzione comune in
ambito locale viene rappresentata dal file XF86Config, usualmente
disposto sotto la directory /etc/X11/. Il file in questione
 composto da diverse sezioni, ognuna delle quali  diretta
a configurare particolari dispositivi.

Sezione "Files" Vengono indicate
  in questa sezione la disposizione dei file necessari all'esecuzione
  del Server X, dalla codifica dei colori alla disposizione
  dei caratteri da utilizzare. 

Sezione "Flags" Vengono gestite
  alcune opzioni importanti tra le quali:

  * DontZap
     Direttiva per attivare o meno l'interruzione del Server
    X tramite la combinazione di tasti  +  + \longleftarrow 

  * DontZoom
     Direttiva per attivare o meno la possibilit di cambiare
    modalit video tramite la combinazione di tasti  del
    tastierino numerico o  +  + [ , ...  ]

Sezione "Keyboard" Sezione
  relativa alle configurazioni della tastiera. 

Sezione "Pointer" Sezione
  relativa alla configurazione della periferica di puntamento,
  usualmente il comune mouse. 

Sezione "Monitor" Sezione
  destinata a presentare le caratteristiche del vostro monitor
  sotto l'aspetto delle frequenze video supportate. 

Sezione "Device" Sezione
  relativa al dispositivo da utilizzare per la gestione
  della vostra particolare scheda video. 

Sezione "Screen" In questa
  sezione vengono aggiunte informazioni a quelle presentate
  dalla sezione "Monitor"
  e "Device" per indicare la definizione
  grafica da utilizzare. 

Sezione "Xinput" Questa sezione
   opzionale. E' diretta alla configurazione di particolari
  dispositivi di puntamento come le tavolette grafiche. 

Sebbene sia possibile la configurazione manuale del file
in questione, si sconsiglia altamente di farlo per ragioni
pratiche e funzionali. Esistono diversi applicativi che
vi permettono di configurare il vostro Server X in maniera
semplice ed intuitiva come:

* xf86config  
   Programma storicamente correlato al sistema XFree86. Funziona
  a modalit carattere. 

* XF86Setup  
   Questo strumento  disponibile su tutte le distribuzioni
  GNU/Linux. Tramite una modalit grafica  possibile configurare
  ogni aspetto di configurazione. 

* Xconfigurator  
   E' lo strumento presente nella distribuzione Red Hat Linux.
  Permette di scegliere le configurazioni tramite il probing
  di quest'ultime. Funziona a modalit a carattere. 

* sax  
   E' lo strumento presente nella distribuzione S.u.S.E.
  Linux. Permette di configurare il Server X in modalit
  grafica. 

Note

Nelle recenti versioni del Server Xfree86 (versioni 4.x.x),
il file di configurazione  notevolmente cambiato rispetto
alle precedenti versioni. Per la configurazione di quest'ultimo
si pu ora contare sull'applicazione xf86cfg.

13.1.2 Esecuzione 

Una volta configurato il Server X, possiamo lanciarlo digitando:


$ startx


Il comando analizza le configurazioni presenti nel file XF86Config
precedentemente citato e lancer il Server X. Se decidessimo
di utilizzare un particolare Window Manager o automatizzare
l'avvio di determinati programmi, creando un file nella
nostra home directory denominato .xinitrc ed aggiungere
le nostre preferenze come segue:


# Questo  un commento

xsetroot -solid Gray

exec xterm &

exec fvwm


Nell'esempio presentato si sceglie di utilizzare il Window
Manager fvwm con lo sfondo del colore grigio. Viene inoltre
lanciato il programma xterm.

13.2 La Gestione dei Font

Il server X11R6 del X Consortium (X Server di default in
gran parte delle distribuzioni GNU/Linux)  stato particolarmente
curato sotto l'aspetto della gestione dei font. Dalle versioni
X11R3 e X11R4, il formato di base gestito dei font era del
tipo SNF (server normal format) un formato che era dipendente
dal tipo di piattaforma sulla quale veniva utilizzato. Con
la versione X11R5 questo limite fu abbattuto con la definizione
di un protocollo di gestione progettato per gestire font
indipendenti dal tipo di piattaforma e 
con il cambiamento del formato di base dei font da SNF a
PCF (Portable Compiled Font) originalmente sviluppato da
DEC. Il protocollo definito per la gestione dei font abbatteva
ogni logica e limite precedentemente stilato. Mentre in
precedenza la gestione dei font era vincolata dal tipo e
dalla locazione dei font destinati all'utilizzo, venne data
la possibilit di gestire font indipendenti dal tipo di
piattaforma e dislocati in rete su altri server rompendo
il precedente vincolo di avere ogni set di font su ogni
macchina. Con la versione X11R6 il motore di renderizzazione
del formato Type1 era stato implementato di base e non serviva
pi software aggiuntivo per gestire questo formato. Una
cosa simile sta accadendo per il supporto dei font True
Type, allo stato attuale gestito grazie alle librerie Freetype
(www.freetype.org).

13.2.1 Formati riconosciuti

Ci sono diversi formati riconosciuti dal server X e qui di
seguito viene presentata una breve descrizione di ognuno:

* TTF (True Type Font) Sono il formato carattere largamente
  diffuso in ambienti Windows e MacOs. Per utilizzare quest'ultimi
  sono necessarie le librerie FreeType, installate nelle
  configurazioni basilari di qualsiasi recente distribuzione
  GNU/Linux. 

* BDF (Bitmap Distribution Format) E' il formato standard
  nelle distribuzioni di font e ci sono molto utility per
  convertire altri formati a questo tipo e viceversa. BDF
   un formato definito da Adobe. 

* SNF (Server Normal Format) E' il vecchio formato di font
  citato in precedenza ed  vincolato dal tipo di piattaforma
  e dalla locazione. 

* PCF (Portable Compiled Font) E' un formato binario per
  i font bitmap capace di contenere sufficienti informazioni
  per essere letto da differenti piattaforme. 

* PHIGS Questo tipo di font  applicabile in ambienti PEX
  e non ha nessuna relazione con il meccanismo per la gestione
  dei font X. 

* DWF (DEC Windows Font) Sono font di tipo bitmap. 

* Intellifont Sono font HP scalabili. 

* PFA/PFB E' il formato Adobe Type1 PostScript utilizzabile
  dalla versione X11R5 grazie al contributo IBM, la quale
  ha donato un motore di rendering per questo formato al
  X Consortium. 

* Speedo E' il formato sviluppato da Bitstream, la quale
  ha donato il motore di rendering e una serie di font al
  X Consortium. 

* FB E' il formato Sun X11/NeWS, un formato di tipo bitmap
  utilizzato dai sistemi OpenWindows. 

* F3/F3B E' il formato scalabile Sun Folio, anch'esso utilizzato
  dai sistemi OpenWindows. 

13.3 Estensione Xinput

L'estensione XInput si aggiunge modularmente a X e permette
di utilizzare dispositivi diversi dal mouse o la tastiera.
L'estensione supporta una ampia gamma di periferiche, incluse
tavolette grafiche, touch-screen e joystick. L'uso probabilmente
pi comune resta quello legato alle tavolette grafiche.
In quest'ultimo caso, lo sforzo  dovuto al fatto che il
puntatore di un mouse necessita di minori informazioni di
una penna ottica, la quale a differenza deve valutare fattori
come la pressione e l'inclinazione.

Allo stato attuale il supporto  decisamente buono anche
se migliora rapidamente sia sotto l'aspetto di periferiche
supportate che di gestione dei segnali di sensibilit ed
inclinazione. Le pi recenti distribuzioni di XFree86 (dalla
versione 3.3.2) includono il modulo xf86Wacom.so, una libreria
dedicata all'utilizzo di tavolette grafiche Wacom, sostanzialmente
lo standard sul mercato per qualit e prestazioni. Si rimanda
la lettura nel seguito di questo manuale per avere basilari
informazioni di installazione.

 F.A.Q. 

Domanda: "Sono abituato all'ambiente desktop come
  quello di MacOs o Windows. Esiste qualcosa di simile per
  GNU/Linux?" 

Esistono diverse valide soluzioni. Nel corso degli ultimi
anni si sono diffusi prevalentemente due ambienti desktop:
GNOME([footnote] http://www.gnome.org )  e KDE([footnote] http://www.kde.org ) . A voi la scelta.

Domanda: "Tento di avviare il Server X ma dopo
  pochi secondi ritorno al punto di partenza in modalit
  caratteri. Che succede?" 

Mille le possibili cause. Un modo per analizzare la situazione
 digitare:


$ startx 2> errori.txt


Nel file errori.txt verranno riportati gli eventuali errori.
Genericamente la maggiorparte degli errori avviene per una
configurazione errata del file XF86Config, file di configurazione
del Server X. Risulta molto utile tentare di rigenerare
questo file con le utility indicate precedentemente.

Domanda: "Durante l'installazione ho scelto di
  riavviare la macchina direttamente in modalit grafica
  sotto il Server X. Una scelta razionale?" 

Il Server X  largamente diffuso e largamente testato sul
piano della sicurezza. Utilizzare l'ambiente grafico aviandolo
sin dalla fase di avvio pu creare problemi nel caso che
il file di configurazione XF86Config venga danneggiato.
Se questo avviene premete contemporaneamente il tasto  e
i tasti funzione , ... . Sar cos possibile accedere ad
un nuovo terminale e ripristinare la situazione danneggiata.

Domanda: "Ho scelto di avere la modalit grafica
  all'avvio del computer ma non riesco ad arrivare alla
  maschera di login per autenticarmi. Sembra che qualcosa
  disturbi quest'ultimo che ripetitivamente appare e scompare
  immediatamente. Cosa  necessario fare?" 

Le cause possono essere molteplici ma i casi tipici sono
riscontrabili in una errata configurazione del file XF86Config
e problemi di permessi sui file caratteri. Per risolvere
la situazione e avere nuovamente la possibilit di accedere
al sistema le soluzioni pratiche possono essere:

* riavviare la macchina, digitando al prompt di lilo "linux
  single". In questo modo la macchina avvier il
  vostro sistema GNU/Linux senza accessi di rete sul runlevel
  2 e senza lanciare il server X. Al termine delle fasi
  di avvio di sistema apparir il prompt di login testuale
  e da questo potrete accedere al sistema (caratteristica
  presente in Red Hat Linux). 

* un'ulteriore possibilit utile per una macchina con servizi
  di rete attivi  quella di accedere alla macchina da un'altra
  postazione in rete locale e cambiare il file /etc/inittab. 

Domanda: "Dispongo di un computer con limitatissime
  risorse hardware. Come posso ottimizzare X in queste condizioni?" 

Utilizzare un Window Manager  una scelta conveniente e in
tal senso si consiglia Blackbox. Non si avr la flessibilit
di un ambiente desktop ma si potranno notare i vantaggi
con limitate risorse hardware.

Questione di carattere<Capitolo 13>

La gestione dei font con GNU/Linux pu risultare utile se
si utilizza un ambiente grafico X Window e in tale ottica
 stato ripreso un articolo scritto anni addietro per una
rivista del settore apportando le necessarie modifiche e
i necessari aggiornamenti.

 La tecnologia Postscript 

Il formato font PostScript precede di circa 6 anni il tipo
True Type. Prima di questo c'erano diversi formati di font
digitalizzati ma nessuno di questi divent standard. L'Apple
adott il PDL (PostScript Page Description Language) da
Adobe e lo utilizz per la sua stampante Apple Laserwriter
nel 1985. La combinazione di questa tecnologia applicata
e l'introduzione di software per il publishing gener una
rivoluzione delle tecnologie di impaginazione. Presto il
linguaggio PostScript fu adottato su dispositivi di alto
livello e divenne in maniera nativa linguaggio base per
soluzioni grafiche. Adobe, detentrice dei diritti su questa
tecnologia, rese disponibile le informazioni tecniche con
alcuni limiti. Non rese pubbliche le specifiche dei font
Type1 per la gestione del hinting. Le uniche specifiche
rilasciate da Adobe sono relative ai font Type3 qualitativamente
inferiori rispetto alla classe descritta precedentemente.
Per Apple e Microsoft, in pieno sviluppo nella seconda met
degli anni '80, il fatto di vincolare i propri sistemi operativi
con una gestione dei font scalabili posseduta da terze parti
pesava e cos dopo prolungati studi tecnici si arriv alla
creazione di una nuova specifica. La risposta di Adobe a
questa presa di posizione fu il rilascio delle specifiche
per il formato PostScript Type1 nel marzo del 1990 e la
creazione del software ATM (Adobe Type Manager) capace di
gestire questo tipo di font sia a video che in fase di stampa.
L'ascesa della tecnologia True Type prosegu comunque inesorabilmente
fino a raggiungere il 95% dei personal computer, crescita
sicuramente legata alla diffusione degli stessi sistemi
operativi che utilizzavano nativamente questa tecnologia.

 Type1 e True Type

I font True Type e Postscript Type1 sono entrambi caratteri
con specifiche tecniche aperte che li rendono multipiattaforma
e Outline. Multipiattaforma significa che entrambi i tipi
di font possono essere usati su diversi sistemi operativi
mentre l'outline di un carattere ha un contorno (glyphs)
descritto da un insieme di punti definiti da linee e curve,
caratteristica che permette la rappresentazione di ogni
singolo font e il suo eventuale ridimensionato senza la
perdita delle caratteristiche che lo contraddistinguono.
Il processo di conversione da outline alla modellazione
dei punti sull'output device  chiamata rasterizzazione.
Essendo basati sull'outline, questi font possono subire,
nel caso di piccole dimensioni o basse risoluzioni, inconsistenza
nella rappresentazione di certe lettere non garantendo le
iniziali caratteristiche grafiche proposte con dimensioni
e risoluzioni medie. Entrambi i tipi i font hanno delle
informazioni codificate al proprio interno (hinting) che
soccorrono a questa problematica di rappresentazione.

 MM e Quickdraw GX

Un'estensione dei font Type1  la possibilit di sfruttare
la tecnologia MM (Multiple Master), capacit di variare
diverse caratteristiche del font stesso in maniera elastica
interpolando l'originale forma su assi dimensionali. Il
basilare esempio di utilizzo di questa estensione tocca
il peso (sottile o grassetto), la larghezza (condensata
o estesa) e la visualizzazione ottica (da testo a video).

L'alternativa studiata per aggiungere funzionalit simili
alla tecnologia MM ha portato a Quickdraw GX, tecnologia
che aggiungeva ulteriori caratteristiche ai font MM. Nonostante
le estese qualit, GX non ha avuto ancora uno sviluppo elevato.

 Opentype

Nel 1996 una iniziativa intrapresa da Adobe e Microsoft ha
portato al progetto Opentype, soluzione per utilizzare l'outline
della tecnologia Postscript e True Type in un wrapper in
stile True Type. Questo significa che il formato supporter
ogni caratteristica delle due tecnologie, le estensioni
GX/MM e il supporto per la codifica Unicode.

14.1 Configurazioni del Server X

Per aggiungere un font di tipo standard (.pcf, .snf, .bdf)
bisogna spostarlo nell'apposita directory del path settati
di default nel file XF86Config. 


FontPath     `/usr/X11R6/lib/X11/fonts/misc`

FontPath     `/usr/X11R6/lib/X11/fonts/URW`

FontPath     `/usr/X11R6/lib/X11/fonts/Type1`

FontPath     `/usr/X11R6/lib/X11/fonts/Speedo`


Una volta sistemato quest'ultimo in questa sua nuova locazione
 necessario lanciare un comando per rigenerare il file
di configurazione che il server X andr a leggere al momento
dell'avvio denominato fonts.dir dove vengono riportate le
caratteristiche principali di ogni singolo font presente
(tipo, famiglia, grandezze, stili). Il file fonts.dir 
presente in ogni directory del path ed  relativo al tipo
di font presente.

Il comando in questione per aggiornare il fonts.dir  mkfontdir.
Una volta lanciato quest'ultimo avviene l'aggiornamento
del fonts.dir con in aggiunta la stringa precedentemente
citata che prima dell'istallazione mancava nel file. Un
altro comando utile da conoscere pu essere xlsfonts che
elenca tutti i font attualmente disponibili all'uso e riconosciuti
dal Server X elencandoli in una lunga lista organizzata
di base alfabeticamente ma facilmente configurabile secondo
le proprio esigenze con le opzioni presenti.

 FAQ

Domanda: "Trovo spesso problemi di visualizzazione
  dei font. Questo capita per i caratteri a video come la
  semplice conversione di un documento Postscript in PDF.
  In entrambi i casi il risultato  "sgranato"
  e la definizione lascia a desiderare. C' una soluzione?"

E' un limite del pacchetto Ghostscript inferiore alla versione
6.x e attualmente superato con successo. Per ulteriori informazioni
visitare il sito http://www.ghostscript.org dove  possibile
scaricare i necessari pacchetti software di aggiornamento.
Gli utenti Debian dovranno unicamente digitare quanto segue
come utenti "root":


# apt-get install gsfonts-other gsfonts-x11


Al termine dell'installazione e configurazione si potr gi
giovare del cambiamento. Questo manuale viene sviluppato
su Debian GNU/Linux e sono stati presi gli indicati provvedimenti.
Giudicate da voi il risultato dei documenti PDF/Postscript
per testarne la qualit finale.

Domanda: "Dove posso trovare informazioni e riferimenti
  sulla gestione dei caratteri e le loro caratteristiche?"

Un buon riferimento pu essere senza dubbio il sito di Freetype([footnote] http://www.freetype.org) , librerie largamente utilizzate per la gestione dei vari
formati di caratteri.

Network

Introduzione<network>

Il concetto di reti di computer si  evoluto nel corso di
decenni ma solamente nell'arco degli ultimi anni ha subito
una crescita esponenziale. Diverse possono essere le cause
anche se la principale  da ritenersi il calo dei prezzi
dei componenti hardware necessari: schede di rete, HUB,
router, modem seriali o ISDN, connessioni ADSL.

La primo semplice carattere di distinzione di una rete 
la sua dimensione ed espansione sul territorio:

* LAN (Local Area Network), anche denominata Rete Locale,
   la tipologia pi diffusa. 

* MAN (Metropolitan Area Network), rete di computer con dimensione
  cittadine/metropolitane. 

* WAN (Wide Area Network), rete di computer con dimensioni
  superiori alla circoscrizione cittadina o metropolitane. 

La distinzione tra LAN e MAN  decretata dalle leggi vigenti
sulle comunicazioni perch quest'ultime impongono particolari
vincoli nell'utilizzo di connessioni di rete che attraversino
il suolo pubblico. La distinzione tra MAN e WAN  decretata
semplicemente dal confine territoriale della citt o metropoli
di riferimento. L'avvento di Internet ha reso confusa la
distinzione tra le tipologie illustrate, offuscandone i
caratteri principali e trasformando ogni cosa in una grande
rete globale. Sono cos nate le seguenti parole chiave:

* Intranet 

* Extranet 

Altro non sono che porzioni di Internet circoscritte in determinate
realt, come ad esempio quelle aziendali, svincolate dai
limiti fisici delle connessione.

15.1 Che cosa serve per creare una rete locale?

Possono esistere diverse soluzioni:

* Rete tra due computer([fig] ([fig] Rete tra 2 computer.) 

  * 2 schede di rete Ethernet 

  * 1 cavo di rete incrociato con jack RJ45 

* Rete tra N computer([fig] ([fig] Rete tra 3 computer) 

  * N schede di rete Ethernet 

  * N cavi di rete con jack RJ45 

  * un HUB con N porte 

Gli elementi che interessano GNU/Linux come supporto fisico
sono le schede di rete e sull'installazione di quest'ultime
poniamo il nostro interesse. La scelta di una scheda di
rete pu essere fatta in base alle personali esigenze ma
i rapidi abbassamenti di costo che questi componenti hardware
hanno subito nel corso degli anni permettono l'acquisto
di soluzioni di qualit con cifre modeste. Dopo aver acquistato
quest'ultime e averle installate all'interno del proprio
computer negli slot PCI  necessario configurare il sistema
operativo, il lato software, per utilizzare questi dispositivi.

Le prime configurazioni

Durante le fasi di installazione tutte le recenti distribuzioni
riescono in linea di massima a rilevare le schede di rete
e aiutare l'utente nella configurazione di quest'ultime.
Per chi fosse a digiuno di networking si consiglia di utilizzare
i dati seguenti con l'aspettativa di imparare maggiori dettagli
sul valore dei dati indicati:


+-------------------------------------------------------+
|                                         Computer dada |
+-------------------------------------------------------+
|     indirizzo IP della macchina: |   192.168.0.1      |
+----------------------------------+--------------------+
| maschera di sottorete (netmask): |   255.255.255.0    |
+----------------------------------+--------------------+
|           names server primario: |   212.216.112.222  |
+----------------------------------+--------------------+
|         names server secondario: |   212.216.172.162  |
+----------------------------------+--------------------+




+-------------------------------------------------------+
|                                       Computer monika |
+-------------------------------------------------------+
|     indirizzo IP della macchina: |   192.168.0.2      |
+----------------------------------+--------------------+
| maschera di sottorete (netmask): |   255.255.255.0    |
+----------------------------------+--------------------+
|           names server primario: |   212.216.112.222  |
+----------------------------------+--------------------+
|         names server secondario: |   212.216.172.162  |
+----------------------------------+--------------------+


 
Per avviare i servizi di rete e rendere attive le impostazioni
digitare:


# /etc/init.d/networking start
 

per il computer dada, e:


# /etc/init.d/networking start
 

per il computer monika.

Per configurare la rete  possibile utilizzare il comando
route (pag. [route]).

Nota: Red Hat Linux

La distribuzione offre kudzu come strumento di riconoscimento
e configurazione di nuovo hardware installato sul proprio
computer. Pu essere lanciato da console:


# kudzu  
 

oppure utilizzato ad ogni avvio del sistema. Quando kudzu
viene lanciato, vengono confrontati i componenti hardware
presenti nel sistema e il file /etc/sysconfing/hwconf. Se
vengono riscontrate configurazioni differenti viene automaticamente
lanciato lo strumento idoneo alla nuova componente hardware,
nel nostro caso per la scheda di rete.

Sicurezza

Entrare in rete pu portare vantaggi ma anche esporsi a problematiche
di sicurezza e stabilit delle proprie attivit. Di seguito
elenco alcuni semplici passi per garantire un buon livello
di sicurezza per la vostra macchina.

16.1 Portscanning

Il portscanning  una tecnica di sicurezza informatica per
testare le porte TCP/IP "aperte"
di un sistema. L'esempio pi semplice per chiarire il concetto
 quello telefonico: se un indirizzo IP  il numero di telefono,
le cornette telefoniche sono le varie estensioni a quel
numero per raggiungere determinate persone da un centralino
comune.

Lo stack TCP/IP standard permette l'accesso ad oltre 65.535
porte differenti. Tra le porte pi comuni troviamo:


     echo    
7/tcp

     discard  9/tcp

     qotd    
17/tcp   #quote

     ftp-data 20/tcp

     ftp     
21/tcp

     ssh     
22/tcp   # SSH Remote Login Protocol

     telnet   23/tcp

     smtp    
25/tcp   #mail

     time    
37/tcp   #timeserver

     domain   53/tcp  
# name-domain server

     gopher   70/tcp  
# Internet Gopher

     finger   79/tcp

     www     
80/tcp   # WorldWideWeb HTTP

     www     
80/udp   # HyperText Transfer Protocol

     pop3    
110/tcp  # POP version 3

     sunrpc   111/tcp 
# RPC 4.0 portmapper TCP

     auth    
113/tcp  #authentication tap ident

     nntp    
119/tcp  # USENET News Transfer Protocol

     ntp     
123/udp  # Network Time Protocol

     imap2    143/tcp 
# Interim Mail Access Proto v2

     snmp    
161/udp  # Simple Net Mgmt Proto

     irc     
194/tcp  # Internet Relay Chat

     irc     
194/udp

     ldap    
389/tcp  # Lightweight Directory Access Protocol

     https    443/tcp 
# Secure HTTP

     mysql    3306/tcp
# MySQL

     ircd    
6667/udp # Internet Relay Chat

     webcache 8080/tcp # WWW caching service


Una lista estesa delle porte standard  disponibile nel file
/etc/services.


E' possibile usare il programma telnet per collegarsi direttamente
a queste porte. Proviamo:


$ telnet www.libero.it 80


Vedrete: 


Connected to www.libero.it

Escape character is '^]'.

  

Type: GET / [return][return]


Il web server risponder inviando una serie di documenti
HTML e immagini per la visualizzazione.

 Software adeguato allo scopo

Il programma pi diffuso per il portscanning  nmap e per
ottenerlo si pu visitare il sito web http://www.insecure.org/nmap/
oppure (per Debian):


# apt-get install nmap


Una volta disponibile l'applicazione potete iniziare rapidamente
testando il vostro sistema:


$ nmap localhost -p 1-65535

 

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )

Interesting ports on localhost (127.0.0.1):

(The 65525 ports scanned but not shown below are in state:
closed)

Port       State      
Service

9/tcp      open       
discard                 

13/tcp     open       
daytime                 

25/tcp     open       
smtp                    

37/tcp     open       
time                    

113/tcp    open       
auth                    

143/tcp    open       
imap2                   

515/tcp    open       
printer                 

631/tcp    open       
cups                    

1024/tcp   open       
kdm                     

7741/tcp   open       
unknown                 

 

 

Nmap run completed -- 1 IP address (1 host up) scanned in
6 seconds


Il risultato  di facile interpretazione; vengono indicati
i servizi attivi, le porte di "ascolto"
del vostro sistema. 

16.2 Configurare inetd

Il demone inetd viene chiamato il "super
server" perch si occupa di gestire un numero elevato
di programmi su chiamate di rete. Il file /etc/inetd.conf
illustra al proprio demone quali porte devono rimanere in
ascolto e quali programmi si devono occupare delle singole
porte.

Seguire i passi seguenti per aumentare la sicurezza della
vostra macchina:

1. Cambiare i permessi sul file di configurazione: 
  
  # chmod 600 /etc/inetd.conf 
  
  in modo che il vostro file abbia i permessi di lettura
  per il solo proprietario. 

2. Assicuratevi che il proprietario del file sia l'utente
  root:
  
  # ls -la /etc/inetd.conf
  -rw-r--r--     1 root   root   2070 Dec 25 02:12 inetd.conf
    
   Se cos non fosse digitare quanto segue: 
    
   # chown root /etc/inetd.conf

3. Modificate il file /etc/inetd.conf commentando ogni riga
  relativa a servizi non necessari. 
  
  # To re-read this file after changes, just do a 'killall -HUP
  inetd' 
  # 
  #echo   stream  tcp     nowait  root    internal 
  #echo   dgram   udp     wait    root    internal 
  #discard        stream  tcp     nowait  root    internal  
  #discard        dgram   udp     wait    root    internal  
  #daytime        stream  tcp     nowait  root    internal  
  #daytime        dgram   udp     wait    root    internal  
  #chargen        stream  tcp     nowait  root    internal  
  #chargen        dgram   udp     wait    root    internal  
  #time   stream  tcp     nowait  root    internal  
  #time   dgram   udp     wait    root    internal  
  #  
  # These are standard services.  
  # 
  #ftp    stream  tcp   nowait  root  /usr/sbin/tcpd  in.ftpd
  -l -a  
  #telnet stream  tcp   nowait  root  /usr/sbin/tcpd  in.telnetd 
  # 
  # Shell, login, exec, comsat and talk are BSD protocols.  
  #  
  #shell  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd
   
  #login  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind
   
  #exec  stream   tcp     nowait  root    /usr/sbin/tcpd  in.rexecd
   
  #comsat dgram   udp     wait    root    /usr/sbin/tcpd  in.comsat
   
  #talk   dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd
   
  #ntalk   dgram  udp     wait    root    /usr/sbin/tcpd  in.ntalkd
   
  #dtalk  stream  tcp     waut    nobody  /usr/sbin/tcpd  in.dtalkd 
  # 
  # Pop and imap mail services et al 
  # 
  #pop-2  stream tcp    nowait root   /usr/sbin/tcpd ipop2d 
  #pop-3  stream tcp    nowait root   /usr/sbin/tcpd  ipop3d 
  #imap   stream tcp    nowait root   /usr/sbin/tcpd  imapd 
  # 
  # The Internet UUCP service. 
  # 
  #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l 
  # 
  # Tftp service is provided primarily for booting.  Most sites 
  # run this only on machines acting as `boot servers.`
  Do not uncomment 
  # this unless you *need* it. 
  # 
  #tftp   dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd
   
  #bootps dgram   udp     wait    root    /usr/sbin/tcpd  bootpd 
  # 
  # Finger, systat and netstat give out user information which
  may be 
  # valuable to potential `system crackers.`
  Many sites choose to disable 
  # some or all of these services to improve security. 
  # 
  #finger  stream tcp  nowait  root  /usr/sbin/tcpd in.fingerd
   
  #cfinger stream tcp  nowait  root  /usr/sbin/tcpd in.cfingerd
   
  #systat  stream tcp  nowait  guest /usr/sbin/tcpd /bin/ps -auwwx 
  #netstat stream tcp  nowait  guest /usr/sbin/tcpd /bin/netstat -f
  inet 
  # 
  # Authentication 
  # 
  #auth stream tcp nowait nobody /usr/sbin/in.identd in.identd
  -l -e -o 
  # 
  # End of inetd.conf 
   
   Una volta commentate le righe indicate  necessario riavviare
  il demone inetd digitando: 
    
  # killall<killall> -HUP inet

Una ulteriore precauzione pu essere quella di rendere sicuro
il nostro file di configurazione da modifiche e alterazioni.
Per renderlo "immutabile"
digitiamo:

# chattr<chattr> +i /etc/inetd.conf 
  
 Il comando digitato "blocca"
il nostro file da ogni alterazione o modifica e non si possono
creare link a quest'ultimo. L'unico modo per poter nuovamente
apportare modifiche  utilizzare lo stesso comando precedentemente
digitato con un opzione differente: 
  
# chattr -i /etc/inetd.conf
  
 Per maggiori informazioni sul comando chattr andate a pagina
[chattr].

16.3 TCP_WRAPPERS

Utilizzando TCP_WRAPPERS si pu rendere maggiormente sicuro
il vostro computer da intrusioni malintenzionate dall'esterno.
Per applicare questi parametri di sicurezza  necessario
agire su due file:


/etc/hosts.allow

/etc/hosts.deny


Una configurazione tipo pu essere la seguente:

1. Editare il file /etc/hosts.deny (utilizzando qualsiasi
  editor di testo, esempio vi) e aggiungere le seguenti
  stringhe di comandi: 
  
  #Accesso vietato a chiunque  
   ALL:ALL@ALL, PARANOID
  
  Ogni servizio richiesto da qualsiasi locazione  bloccato. 

2. Editare il file /etc/hosts.allow e aggiungere:
  
  sshd: 193.207.49.111 host.server.org
  
  La configurazione  un esempio che concede unicamente all'ip
  indicato con risoluzione erlug.linux.it di connettersi
  al vostro computer utilizzando il demone sshd per le connessioni
  criptate. 

3. Verificate le vostre configurazioni lanciando il seguente
  comando: 
    
   # tcpdchk

16.4 Il file /etc/aliases

Il file relativo agli aliases pu essere utilizzato per attacchi
o per ottenere particolari privilegi all'interno del sistema.
Per tale motivo  bene apportare alcune modifiche per garantirsi.
Ecco di seguito un esempio di file /etc/aliases:


#

# @(#)aliases  8.2 (Berkeley) 3/5/94

#

# Aliases in this file will NOT be expanded in the header from

# Mail, but WILL be visible over networks or from /bin/mail.

#

#>>>>>>>>> The program `newaliases` must be run after

# >> NOTE >> this file
is updated for any changes to

#>>>>>>>>> show through to sendmail.

#

# Basic system aliases -- these MUST be present.

MAILER-DAEMON:  postmaster

postmaster:     root 
 

# General redirections for pseudo accounts.

bin:            root

daemon:         root

#games:         root    \leftarrow 
commentato o rimosso

#ingres:        root    \leftarrow 
commentato o rimosso

nobody:         root

#system:        root    \leftarrow 
commentato o rimosso

#toor:          root    \leftarrow 
commentato o rimosso

#uucp:          root    \leftarrow 
commentato o rimosso 
 

# Well-known aliases.

#manager:       root    \leftarrow 
commentato o rimosso

#dumper:        root    \leftarrow 
commentato o rimosso

#operator:      root    \leftarrow 
commentato o rimosso 
 

# trap decode to catch security attacks

#decode:        root    \leftarrow 
commentato o rimosso 
 

# Person who should get root's mail

#root:          marc


le righe indicate possono essere commentate o rimosse a piacimento
e limiteranno le possibilit di eventuali attacchi. Ad esempio,
l'alias "decode" viene utilizzato
per convertire eventuali file binari convertiti in ASCII
con uuencode. Potete capire da voi come sia importante commentare
tale voce per limitarne totalmente l'utilizzo.

Una volta terminate le modifiche  necessario lanciare il
comando seguente:


# /usr/bin/newaliases

16.5 Mascherare informazioni di sistema

Per camuffare informazioni relative al proprio sistema a
persone che si collegano remotamente  bene prendere alcune
precauzioni. Se le uniche connessioni remote concesse sono
quelle tramite telnet  necessario modificare il file "/etc/inetd.conf"
aggiungendo alla riga seguente:


telnet stream  tcp   nowait  root  /usr/sbin/tcpd  in.telnetd
 

l'opzione "-h" come segue:


#telnet stream  tcp   nowait  root  /usr/sbin/tcpd  in.telnetd
-h
 

Se si desidera ampliare il mascheramento a tutte le eventuali
connessioni remote con servizi diversificati  bene modificare
il file /etc/rc.local:


...

# This will overwrite /etc/issue at every boot. So, make any
changes you

# want to make to /etc/issue here or you will lose them when
you reboot.

   #echo `` > /etc/issue

   #echo `$R` >> /etc/issue

   #echo `Kernel $(uname -r) on $a $(uname -m)`
>> /etc/issue

   #cp -f /etc/issue /etc/issue.net

   #echo >> /etc/issue

... 
 

Come si pu notare le righe riportate sono state commentate
con un "#" per evitare che venga generato
il file issue e issue.net. A questo punto bisogna eliminare
i seguenti file:


# rm -fr /etc/issue.net /etc/issue
 

I file cancellati sono i banner informativi presentati sia
durante una connessione di rete che locale.

16.6 Il file /etc/securetty

Questo file permette di configurare quale device TTY  concesso
all'utente root. Di seguito una configurazione tipo del
file:


tty1

#tty2

#tty3

#tty4

#tty5

#tty6

#tty7

#tty8


Come potete notare sono stati commentati tutti i device TTY
tranne il primo. L'utente root potr connettersi al sistema
unicamente da quest'ultimo. Se avessimo commentato ogni
device sarebbe stato possibile entrare nel sistema come
utenti comuni e diventare root con il comando su (pagina
[su]).

 FAQ

Domanda: "Mentre sono collegato ad Internet qualcuno
  tenta di fare del portscanning sulla mia macchina. Come
  posso proteggermi?"

La parola chiave  "firewall"
e in questo caso torna utile ipchains. L'argomento di firewalling
meriterebbe libri su libri ma per rispondere alla vostra
esigenza potete semplicemente digitare:


# ipchains -A input -j REJECT -s XXX.XXX.XXX.XXX -d 0/0 -p
all


Dove "XXX.XXX.XXX.XXX"  l'indirizzo
IP della macchina che vi attacca. Con il comando inibite
eventuali connessioni al vostro sistema ma per monitorare
l'attivit di eventuali portscanning si possono utilizzare
i seguenti strumenti:


http://www.psionic.com/abacus/portsentry/

http://www.openwall.com/scanlogd/

http://www.snort.org/

Domanda: "E' possibile sapere quali servizi sono attivi
  sulla mia macchina e controllare chi li utilizza?"

Per controllare i servizi attivi digitare:


# netstat -na | grep -i listen


Per sapere chi  connesso:


# netstat -na | grep -i established

Web server<WEBSERVER>

Per attivare un web server e pubblicare pagine ipertestuali
 necessario un determinato software. Secondo le statistiche
presentate da Netcraft([footnote] http://www.netcraft.com )  oltre il 60% dei web server nel mondo utilizza Apache, un
software maturo e stabile disponibile con ogni distribuzione
di GNU/Linux.

Verifichiamo l'esistenza del software nel sistema:


# dpkg --get-selections|grep apache
 

In questo caso il software  installato, altrimenti:


# apt-get install apache apache-common
 

Le configurazioni di Apache sono presenti nei file:


/etc/apache/access.conf

/etc/apache/httpd.conf

/etc/apache/srm.com
 

Per maggiori informazioni sulle direttive del web server
Apache si pu fare riferimento al manuale corredato oppure
visitare direttamente il sito http://www.apache.org per
trovare chiarimenti in merito. Per attivare il server web:


# /etc/init.d/httpd start


Una generica configurazione per un web server  gi presente
e funzionante in partenza. Unico parametro necessario 
la direttiva "ServerName"
del file di configurazione httpd.conf. Digitate:


$ grep "ServerName" /etc/apache/httpd.conf


#ServerName new.host.name 

ServerName esempio.it 


Dal file di configurazione del web server Apache sono state
riportate due righe:

* una riga commentata con il carattere "#"
  quindi "non attiva"

* una riga con "ServerName <nome server>"

Il primo caso sar quello base mentre potrete cambiare al
secondo stadio modificando il file indicato con un comune
editor di testi (esempio vi).

17.1 Siti web virtuali

Con Apache  possibile creare virtual host, ovvero siti web
virtuali che risiedono sullo stesso server. Per attivare
questi ultimi  necessario aggiungere quanto segue nel file
"/etc/apache/httpd.conf", file di
configurazione del web server:

NameVirtualHost <indirizzo IP della macchina>


<VirtualHost nome_dominio>

  ServerAdmin gino.latino@server.it

  DocumentRoot /var/www/nome_dominio/htdocs

  ServerName nome_dominio

  ErrorLog log/nome_dominio.error.log

  CustomLog log/nome_dominio.custom.log

</VirtualHost>


Aggiungere il nome_dominio nel file "/etc/hosts"
come segue:


127.0.0.1            localhost

127.0.0.1            nome_dominio


Aggiungere quanto segue in caso di problemi relativi ai permessi
nel file "/etc/apache/access.conf":


<Directory /var/www/nome_dominio/htdocs>

  Options Indexes SymLinksIfOwnerMatch

  AllowOverride None

  order deny, allow

  allow from all

</Directory>


Vogliamo provare? Ok. Riavviamo il web server con:


# /etc/init.d/apache restart

Reloading apache modules. 

/usr/sbin/apachectl start: httpd started

17.2 kHTTPd

kHTTPd  un webserver che gestisce unicamente file statici
(pagine html) e passa tutte le richieste per documenti con
informazioni non statiche ad un web server convenzionale
che gira nello spazio utente come Apache. Il demone  parte
del kernel di Linux versione 2.4 e pu essere caricato anche
come modulo quando  richiesto. Utilizzare la combinata
Apache-kHTTPd pu voler dire un sicuro aumento delle prestazioni.
Una volta caricato il modulo:


# modprobe khttpd


si possono passare parametri al proc filesystem per la configurazione. 


# ls -l /proc/sys/net/khttpd/

totale 52

-rw-r--r--    1 root    
root       0
mar  6 16:41 clientport

-rw-r--r--    1 root    
root       0
mar  6 16:41 documentroot

-rw-r--r--    1 root    
root       0
mar  6 16:41 dynamic

-rw-r--r--    1 root    
root       0
mar  6 16:41 logging

-rw-r--r--    1 root    
root       0
mar  6 16:41 maxconnect

-rw-r--r--    1 root    
root       0
mar  6 16:41 perm_forbid

-rw-r--r--    1 root    
root       0
mar  6 16:41 perm_required

-rw-r--r--    1 root    
root       0
mar  6 16:41 serverport

-rw-r--r--    1 root    
root       0
mar  6 16:41 sloppymime

-rw-r--r--    1 root    
root       0
mar  6 16:41 start

-rw-r--r--    1 root    
root       0
mar  6 16:41 stop

-rw-r--r--    1 root    
root       0
mar  6 16:41 threads

-rw-r--r--    1 root    
root       0
mar  6 16:41 unload


Ogni voce  potenzialmente una configurazione del demone.
Per una gestione semplificata e funzionale creiamo un file
chiamato "khttpd" nella directory
"/etc/init.d/" e scriviamo quanto riportato
di seguito:


#!/bin/sh

case "$1" in

   start)

     echo -n "Avvio di kHTTPd"

     modprobe khttpd

     echo 80 > /proc/sys/net/khttpd/serverport

     echo "/var/www"
> /proc/sys/net/documentroot

     echo php shtml > /proc/sys/net/khttpd/dynamic

     echo 1 > /proc/sys/net/khttpd/start

     echo "."

     ;;

   stop)

     echo -n "Arresto di kHTTPd"

     echo 1 > /proc/sys/net/khttpd/unload

     rmmod khttpd

     echo "."

     ;;

   reload) 

     echo -n "Riavvio di kHTTPd"

     echo 1 > /proc/sys/net/khttpd/stop

     echo 1 > /proc/sys/net/khttpd/start

     echo "."

     ;;

esac

exit 0


Date i giusti diritti al file


# chmod 755 /etc/init.d/khttpd


e create i link simbolici per i vari runlevel. Per Debian
GNU/Linux pu essere utile il seguente comando:


# update-rc.d khttpd default


A questo punto non rimane altro da fare che riavviare Apache
e lanciare lo script appena creato:


# /etc/init.d/apache restart

# /etc/init.d/khttpd start

17.3 Web a contenuti dinamici

Una delle tendenze degli ultimi anni  quella del web a contenuto
dinamico, una soluzione per gestire i contenuti pubblicati
su Internet in maniera flessibile e potente. E' sicuramente
un passo avanti alla semplice preparazione di pagine HTML
(i documenti ipertestuali di Internet) perch sono previste
conoscenze di Basi di Dati, SQL (linguaggio per le interrogazioni)
e programmazione.

In una distribuzione GNU/Linux come quella esaminata, gli
strumenti per sviluppare una soluzione come quella descritta
sono gi presenti e qualitativamente buoni sotto l'aspetto
delle prestazioni e della stabilit. E' possibile utilizzare
Apache come web server (l'applicativo citato in questo capitolo),
il database PostgreSQL o MySQL come base dati e il pacchetto
software PHP per mediare tra i primi due elementi. Riassumendo
sinteticamente gli scopi sono i seguenti:

* PostgreSQL/MySQL si occupano di gestire i "contenuti",
  i dati da pubblicare.

* Apache si occupa di predisporre documenti ipertestuali
  su Internet.

* PHP collabora con il web server (in questo caso Apache)
  per la pubblicazione in linea e presenta le dovute funzionalit
  per interrogare il database e prelevare i contenuti da
  pubblicare.

Tralasciando le fasi di installazione e configurazione di
un database che tratteremo successivamente, ci occupiamo
ora di attivare il supporto PHP. Prima ovvia cosa  verificare
la presenza dei software necessari:


# dpkg --get-selections|grep php


Se compaiono i pacchetti e sono "install",
ovvero installati tutto  perfetto! Abbiamo gi installato
il pacchetto base di PHP e anche il modulo aggiuntivo per
gestire il database PostgreSQL (pgsql). A questo punto sono
necessarie poche e semplici configurazioni da fare al file
httpd.conf, il file di configurazione del web server Apache.
E' necessario aggiungere e modificare quanto segue:


# 

# AddType: allows you to tweak mime.types 

# without actually editing it, or to make 

# certain files to be certain types. 

# 

# For example, the PHP3 module (not part of the 

# Apache distribution - see http://www.php.net) 

# will typically use: 

# 

<IfModule mod_php3.c> 

  AddType application/x-httpd-php3  \longleftarrow  

  AddType application/x-httpd-php3-source .phps 

</IfModule>


...per dichiarare l'uso di PHP dove sussista l'estensione
dei file .php3 o .php


LoadModule php3_module modules/libphp3.so

AddModule mod_php3.c


...per "caricare" i moduli PHP insieme
al web server. Fatto!

Per attivare le modifiche  necessario riavviare il web server: 


# /etc/init.d/httpd restart


La verifica finale pu essere fatta seguente il seguente
iter:

1. Portarsi nella directory dove si trovano i documenti ipertestuali
  (/home/httpd/html/)

2. Editare un file che chiamiamo info.php inserendo quanto
  segue:
  
  <?
      phpinfo();
  ?>

3. Salvate il file, aprite un browser e visualizzate l'indirizzo
  http://localhost/info.php. Se apparir una pagina informativa
  sar automaticamente decretato il vostro successo.

 FAQ

Domanda: "Per sviluppare un web dinamico, PHP
   l'unica soluzione disponibile per sistemi GNU/Linux?"

Assolutamente no. PHP  una soluzione molto potente ed evoluta
disponibile per numerose piattaforme e capace di interagire
con un'ampia serie di data base ma esistono anche soluzioni
alternative. Tra quelle di maggior rilievo troviamo le Java
Servlet, soluzione anch'essa molto potente ma con un prerequisito
di conoscenze maggiore. Per motivi di licenza software non
viene distribuito l'ambiente necessario per lo sviluppo
ma  piuttosto semplice procurarselo dalla rete. Per maggiori
chiarimenti in merito si possono visitare i siti della Sun
(http://www.sun.com), IBM (http://www.ibm.com) o la documentazione
del progetto Jakarta su http://www.apache.org.

NFS<nfs - server>

NFS  l'acronimo di Network File System e rappresenta la
soluzione maggiormente diffusa in ambienti Unix per esportare
aree del disco locale in rete, in modo da creare aree comuni
per la condivisione file.([fig] ([fig] Rappresentazione grafica della condivisione in rete
di una partizione NFS.<img nfs>)  Per attivare un servizio di questo tipo sulla propria rete
locale  necessario dare per scontato alcune cose:

1. Le due (o pi) macchine in rete abbiano gi configurato
  scheda di rete e un proprio indirizzo IP. 

2. Siano installati sulla macchina server (che esportano le
  partizioni in rete) alcuni pacchetti software. 

Per il primo punto trovate le risposte a pagina [network],
mentre per la voce successiva partiamo con la ricerca dei
pacchetti nel sistema definito server:


# dpkg --get-selections|grep nfs

# dpkg --get-selections|grep portmap
 

Se l'esito non visualizza la presenza dei pacchetti  necessario
installarli:


# apt-get install nfs-server portmap
 

A questo punto definiamo il nostro obiettivo:

"...creare un'area comune su una macchina dove tutti possano
disporre i propri file e condividerli per eventuali modifiche" 

Creiamo una directory per il nostro scopo:


# mkdir /mnt/areacondivisa 
 

Secondo le nostre intenzioni dobbiamo dare i permessi di
lettura, esecuzione, scrittura a chiunque quindi:


# chmod o+rwx /mnt/areacondivisa 
 

Ora  necessario aggiungere quanto segue al file /etc/exports:


/mnt/areacondivisa      monika(rw,root_squash)


Come si nota, viene indicata la directory creata precedentemente
e il nome host autorizzato a montare quest'ultima. Nell'esempio
la macchina di riferimento si chiama monika ma  possibile
indicare anche l'IP di quest'ultima. Tra le parentesi possono
essere presenti diverse opzioni tra cui segnaliamo:

* rw (Read Write), lettura e scrittura. 

* root_squash, per negare la scrittura all'utente root. 

* ro (Read Only), sola lettura. 

A questo punto l'unica cosa necessaria da fare sulla macchina
Server  avviare i seguenti servizi:


# /etc/init.d/portmap start

# /etc/init.d/nfs start 
 

Se desiderate aggiungere ulteriori aree da condividere nel
file /etc/exports non sar necessario riavviare i servizi
ma baster semplicemente il comando seguente:


# exportfs -a 
 

Nel caso in cui ad ogni riavvio della macchina voleste automaticamente
attivare il servizio fate riferimento al comando ntsysv
e attivate i servizi nfs e portmap. Per verificare che l'area
condivisa sia veramente esportata:


# showmount -e

/mnt/areacondivisa monika 
 

Come mostra il risultato del comando tutto  andato a buon
fine. A questo punto andiamo a modificare la macchina Client,
quella che dovr utilizzare l'area condivisa in rete. Come
prima cosa creiamo una directory come segue:


# mkdir /mnt/dadanfs 
 

Montare l'area condivisa in rete associandola alla directory
creata:


# mount dada:/mnt/areacondivisa /mnt/areacondivisa
 

Operazione conclusa!


Se le vostre intenzioni sono quelle di utilizzare l'area
condivisa direttamente all'avvio della macchina sar necessario
mettere le seguenti argomentazioni nel file /etc/fstab:


dada:/mnt/areacondivisa  /mnt/areacondivisa    nfs  exec,dev,suid,rw  1
1 
 

oppure utilizzate linuxconf per essere agevolati da un'interfaccia
amichevole.

 F.A.Q. 

Domanda: "Utilizzando NFS  possibile esportare
  anche un CD-ROM?" 

E' possibile e per fare ci sar necessario aggiungere quanto
segue al file "/etc/exports":


/cdrom                    <nome
host> (ro)


dove "(ro)" indica che l'unit esportata 
read only, di sola lettura. 

A questo punto sar necessario riavviare il demone come segue:


# /etc/init.d/nfs restart

Collegarsi ad Internet

GNU/Linux  uno strumento perfetto per la rete e offre una
incommensurabile serie di strumenti per dominare quest'ultima.
La condizione minima per accedere ad Internet si pu riassumere
in pochi strumenti:

* un accesso tramite un Internet Service Provider

  * numero di telefono 

  * username e password 

* un modem analogico (o ISDN) 

* un collegamento telefonico ([fig] ([fig] Esempio di modulazione/demodulazione del segnale tramite
il modem.) 

Se il modem  esterno baster collegarlo ad una qualsiasi
porta seriale (9 aghi) mentre se fosse una scheda interna
sar sufficiente installarla nell'apposito slot sulla scheda
madre. Nella tabella [porteseriali]
viene illustrata la tabella di dispositivi seriali e la
correlazione nel mondo DOS/Windows.([tab] +-------------------------------------------------------+
|            Dispositivi delle porte seriali            |
+-------------------------------------------------------+
| DOS/Windows |   Linux kernel 2.0 |   Linux kernel 2.2 |
+-------------+--------------------+--------------------+
|    COM1     |      /dev/cua0     |      /dev/ttyS0    |
+-------------+--------------------+--------------------+
|    COM2     |      /dev/cua1     |      /dev/ttyS1    |
+-------------+--------------------+--------------------+
|    COM3     |      /dev/cua2     |      /dev/ttyS2    |
+-------------+--------------------+--------------------+
|    COM4     |      /dev/cua3     |     /dev/ttyS3     |
+-------------+--------------------+--------------------+
([tab] Rappresentazione delle porte seriali per GNU/Linux<porteseriali>) 

Per comodit d'uso viene generato un link simbolico all'interfaccia
seriale da utilizzare in base alla porta seriale in cui
 collegato il modem. Nell'esempio che segue il modem 
collegato alla COM2, ovvero /dev/ttyS1:


# ln -s /dev/ttyS1 /dev/modem
 

controlliamo:


# ls -l /dev/modem

lrwxrwxrwx 1 root root 11 mag 24 06:33 /dev/modem -> /dev/ttyS1
 

 wvdial / wvdialconf<wvdial><wvdialconf>

Questa applicazione  un sistema intelligente per collegarsi
ad Internet. Possiede la capacit di testare i parametri
adeguati di configurazione per il modem grazie a preventivi
esami euristici e offre la possibilit di connettersi ad
Internet anche senza un preventivo script di configurazione.
I parametri di connessione generici sono presenti nel file
di configurazione /etc/wvdial.conf.

Per configurare quest'ultimo digitate:


# wvdialconf /etc/wvdial.conf
 

Saranno scansionate le porte seriali per verificare l'esistenza
di un modem e gli eventuali parametri saranno memorizzati
nel file indicato. Per dare una rappresentazione visiva
della cosa viene riportato il file /etc/wvdial.conf:

 

[Modem0]

Modem = /dev/ttyS14

Baud = 115200

Init1 = ATZ

SetVolume = 1

Dial Command = ATDT

Init4 = ATM1L1

 

[Dialer Defaults]

Modem = /dev/ttyS14

Baud = 115200

Init1 = ATZ

SetVolume = 1

Dial Command = ATDT

Init4 = ATM1L1

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 S11=55 +FCLASS=0

; Phone = <Target Phone Number>

; Username = <Your Login Name>

; Password = <Your Password>

 

[Dialer libero]

Username = mariorossi@libero.it

Password = lamiaparolasegreta

Phone = 0547421010

Inherits = Modem0

Stupid mode = 0 
 

Lo script riportato presenta anche la configurazione per
la connessione ad un noto provider Internet italiano.

 rp3 / rp3-config<rp3>

Questo applicativo  un'interfaccia grafica a wvdial e vi
permette di configurare la connessione Internet in modo
semplice ed intuitivo seguendovi passo per passo. Al momento
 distribuita con la distribuzione Red Hat Linux.([fig] ([fig] Il pannello di GNOME e l'applet rp3.<rp3 screen>) 

Digitate:


# rp3-config
 

L'interfaccia che si presenter  piuttosto semplice e vi
permetter di configurare il modem e gli script di connessione.
Una volta terminato sar possibile lanciare la connessione
nel seguente modo:


# rp3
 

L'applicazione rp3 si integrer perfettamente al pannello
di GNOME come  mostrato in figura [rp3 screen].

 linuxconf

Linuxconf  un sistema integrato per accentrare tutte le
configurazioni del vostro sistema in un'interfaccia comune
come struttura logica e disponibile per console, X e Web.
Senza entrare troppo nel merito dell'applicativo, tocchiamo
la sezione che ci interessa in questo momento.

Per configurare la connessione Internet  necessario scendere
al seguente livello:


- Configurazione

  - Rete

    - Client tasks

      - PPP/SLIP/PLIP 
        

I passi da seguire non si discostano da quelli precedentemente
visti. Sar necessario configurare il tipo di interfaccia
(PPP) e indicare il numero di connessione, username, password
e il dispositivo da utilizzare per il modem (/dev/modem).
Una volta seguiti questi passi, il collegamento ad Internet
sar possibile digitando:


# ifup ppp0
 

L'identificativo dell'interfaccia da attivare  ppp0. Per
disconnettersi:


# ifdown ppp0

 pppconfig

Questo comando  presente nella distribuzione Debian (2.2).
Vi permette di configurare lo script di connessione ad Internet
seguendovi nelle varie fasi.


# pppconfig
 

Una volta terminata la procedura e salvato lo script, il
collegamento ad Internet sar attivato digitando:


# pon nomescript
 

Se non  specificato il comando tenta di lanciare lo script
con nome "Provider". La procedura
per disconnettersi  la seguente:


# poff

 FAQ

Domanda: "Vorrei sapere da quanto sono connesso
  ad Internet?"

Il tempo di connessione spesso viene visualizzato dall'applicazione
in uso (es. kppp) ma tramite la seguente sequenza di comandi
 possibile saperlo immediatamente:


# grep "Connect time" /var/log/messages 

> | awk '{min = $8} END {print min "
minuti di connessione"}'

24.5 minuti di connessione


Buon divertimento! :)

Soluzioni per la stampa

20.1 printtool

Il demone di stampa storicamente utilizzato con sistemi Unix
 lpr, presente in qualsiasi distribuzione GNU/Linux. La
configurazione per la stampa pu apparire piuttosto difficile
da console e in tal senso esiste un'interfaccia molto comoda
e largamente diffusa che si chiama printtool, utilit che
analizziamo di seguito.([fig] ([fig] Il comando printtool. <print-tool>) 

Prima di procedere a qualsiasi eventuale configurazione accertatevi
che sia stato installato il software necessario come segue:


# ps afx|grep lpd

 2618 ? S 0:00 lpd

 3692 pts/1 S 0:00  grep lpd
 

Questo  il caso in cui il demone di stampa  attivo. Se
non rilevate questi dati  possibile attivarlo con il comando
seguente:


# /etc/init.d/lpd start


Se la sfortuna ci perseguita e non esiste il comando indicato
si potrebbe sospettare che il software non sia presente
nel sistema. Verifichiamo il nostro dubbio.


# dpkg --get-selections|grep lpr

lpr                install
 

Il software  presente, mentre in caso contrario procediamo
ad installarlo come segue:


# apt-get install lpr


A questo punto attiviamo il demone di stampa come indicato
sopra.

 Stampante locale

Questo  probabilmente il caso pi frequente; una stampante
collegata al computer domestico su porta parallela. La figura ([fig] ([fig] Configurazione di una stampante locale.<print-locale>) 

indica i dati necessari per la configurazione.

 Stampante remota su GNU/Linux

Il caso pu essere il seguente. Una rete locale in cui esistono
diverse piattaforme GNU/Linux e si vuole condividere la
periferica di stampa. In questo caso possiamo determinare
una macchina Server, colei che offre il servizio, una macchina
Client, colei che si avvale di ci che le viene autorizzato
a fare.

La configurazione della macchina Server per il servizio di
stampa  identico a quello di una stampante locale. Dal
lato della macchina Client le cose cambiano ed  richiesto
di indicare la denominazione della macchina Server, la coda
di stampa e ulteriori parametri.([fig] ([fig] Configurazione di una stampante in rete GNU/Linux.<print-lnx>) 

Per rendere effettiva la stampa remota di questo tipo  necessario
compiere un passo aggiuntivo. All'inizio del manuale si
 parlato del file /etc/hosts e ora  necessario controllare
se esistono le indicazioni per trovare in rete la macchina
server.


127.0.0.1   localhost localhost

192.168.0.1 dada      dada.casa.it

192.168.0.2 monika    monika.casa.it
 

Dove monika  la macchina client dove stiamo configurando
la stampa remota sulla macchina server dada. A questo punto
 necessario generare un file che indichi al demone di stampa
locale quale macchina server pu effettuare il servizio
di stampa. Il file sar /etc/hosts.lpd e conterr semplicemente
l'indicativo seguente:


dada.casa.it


La macchina Server.

 Stampante su rete Windows

Questa situazione  molto simile alla precedente ma  necessario
far dialogare due sistemi operativi differenti e l'approcio
tecnico cambia. E' innanzitutto necessario il pacchetto
software Samba (samba-client) che permette appunto a GNU/Linux
il dialogo con le piattaforme Microsoft.


# dpkg --get-selections|grep samba
 

Se l'esito  negativo:


# apt-get install samba samba-common
 

Il comando printtool si occuper di chiedervi le informazioni
necessarie per la configurazione come appare nella figura [print-win]([fig] ([fig] Configurazione di una stampante in rete MS windows<print-win>) 

20.2 magicfilter

Piccola applicazione utile per la configurazione della propria
stampante in modalit console. Eseguirla come utente root,
l'amministratore di sistema:


# magicfilterconfig

You already have an /etc/printcap file installed.

I assume that it is already correctly configured and won't
overwrite it.

(if /etc/printcap is not correctly configured, delete the
file and re-run

 /usr/sbin/magicfilterconfig or run '/usr/sbin/magicfilterconfig
--force').


Il programma rivela un file /etc/printcap gi esistente.
Per sovrascrivere il file:


# magicfilterconfig --force

 

You will have to supply the following items for each printer
to be installed

(example values in parentheses):

 

 - its short name and its full name         (hpjlet4,
HP LaserJet 4)

 - the device where the printer is attached (/dev/lp1)

 - and the input filter you want to use     (ljet4l)

 

Printer #1:

------------

Full name, `done' when done               [HP
Laserjet 4L]: \leftarrow 

Short name, name of the spool directory   [hplj4l        ]:
\leftarrow 

Full device path (or remote machine name) [/dev/lp1      ]:
\leftarrow 

 

The following filters are available in /etc/magicfilter.

 

You can read the comments at the top of each file to help
decide which

filter would best suit your needs.

 

The filters concentrate on the printer language. If you know,
that your

printer uses a given printer language (e.g. ESC/P2 or PCL5)
and your

printer is not listed below, you can use another filter which
uses same

language.

 

Read the file `devices.txt.gz' from the GhostScript package
and have your

printer manual handy if you want to change a filter.

 

StylusColor-1520@1440dpi StylusColor-500@360dpi

StylusColor-500@720dpi StylusColor-600@1440dpi StylusColor-600@360dpi

StylusColor-600@720dpi StylusColor-800@1440dpi StylusColor-800@360dpi

StylusColor-800@720dpi StylusColor-II-IIs@360dpi StylusColor-II@720dpi

StylusColor-IIs@720dpi StylusColor-generic StylusColor@360dpi

StylusColor@720dpi bj10e bj200 bj600 bj600_draft bj610 bj800
bj800_draft 

cps300 cps400 cps600 cpsonly300 cpsonly400 cpsonly600 deskjet
dj500 

dj500c dj550c dj690c dj690c-best dj690c-low epson9 epson9c
epsonlq 

epsonlqc ibmpro jetp3852 la50 la75 laserjet laserjetlo lbp8
lj250 ljet2p

ljet2plo ljet3 ljet4 ljet4050 ljet4l ljet4m ljet4ml ljetplus

ljetpluslo ln03 m8510 necp6 oki182 pj pjxl pjxl300 ps300
ps400 ps600

psonly300 psonly400 psonly600 r4081 stylus800 tek4693 tek4696

 

The input filter to be used            [ljet4l ]:
\leftarrow 

 

Printer #2:

------------

Full name, `done' when done            [done   ]:
\leftarrow 

 

                      
Printer configuration

 

Default printer (alias \`lp\') is marked with an asterisk.

 

Printer name  Short name Spool dir         Device   Input
filter

--------------------------------------------------------------------------

Epson640     
lp         /var/spool/lpd/lp /dev/lp0 StylusColor-generic*

 

Is this ok? (y/n) [y]: \leftarrow 

 

Paper size is A4, page length is 72 lines.

Stopping printer spooler: rm: `/var/spool/lpd' is a directory

/etc/printcap generated.

 

You'll probably want to finetune your newly created /etc/printcap
file.

Read the printcap(5), lpr(1), lpq(1), lprm(1) and lpc(1)
manual pages

and the PRINTING-HOWTO before doing this.

 

The file README-StylusColor explains the fine points about
the Epson

Stylii Color family of printers.

 

Starting printer spooler: lpr


La configurazione  gi pronta e presente nel file /etc/printcap. 

Nota

Il pacchetto magicfilter richiede la presenza del software
recode. In Debian GNU/Linux l'installazione del primo non
mostra dipendenze e pu capitare che non venga installato.
Pena il funzionamento della stampa che non viene eseguita.
Digitare:


# apt-get install recode

20.3 Dietro le quinte

Il file di riferimento per la configurazione delle stampanti
(locali, condivise in rete)  /etc/printcap nel quale si
concentrano una serie di parametri modificabili a mano e
spiegati molto bene dalla pagina manuale relativa (man printcap).
Un esempio esplicativo di configurazione per una stampante
locale Epson Stylus Color 740  il seguente: 


# /etc/printcap: printer capability database. See printcap(5).

# You can use the filter entries df, tf, cf, gf etc. for

# your own filters. See /etc/filter.ps, /etc/filter.pcl and

# the printcap(5) manual page for further details.

 

 

# rlp|Remote printer entry:\

#         :lp=:\

#         :rm=remotehost:\

#         :rp=remoteprinter:\

#         :sd=/var/spool/lpd/remote:\

#         :mx#0:\

#         :sh:

##PRINTTOOL3## LOCAL 

lp:\

        :sd=/var/spool/lpd/lp0:\

        :mx#0:\

        :sh:\

        :lp=/dev/lp0:


dove le configurazione ce ci interessano sono quelle non
commentate con il carattere "#".
Come si nota  possibile ritrovare i parametri indicati
precedentemente con printtool.

 FAQ

Domanda: "Vorrei avere in console lo stato della
  coda di stampa ad intervalli di tempo ben precisi. Come
  posso fare?"

Per tale esigenza  utile il comando watch che visualizza
lo stato di un comando ad intervalli regolari. Pi facile
 farlo vedere direttamente:


$ watch lpq

Modem Getty

In questo capitolo introdurremo la possibilit di attivare
il proprio computer per ricevere chiamate telefoniche esterne
su linea telefonica e gestire una ristretta ma funzionale
serie di operazioni. Prima di tutto  necessario installare
i pacchetti software necessari e utili:


# apt-get install mgetty mgetty-docs 


I pacchetti base di mgetty (Modem Getty) e la documentazione
relativa per esplorare ogni eventuale configurazione possibile.


# apt-get install mgetty-fax mgetty-viewfax lprfax 


Pacchetti per gestire tramite il vostro modem la spedizione/ricezione
dei fax, la visualizzazione e la stampa dalla/alla modalit
fax.


# apt-get install mgetty-voice 


Pacchetto utile se il vostro modem supporta il protocollo
per la gestione vocale. Pu risultare utile per attivare
sul vostro computer una segreteria telefonica capace di
registrare i messaggi.

21.1 Collegamento diretto per via telefonica

Con Debian GNU/Linux attivare un server pronto per i collegamenti
punto-punto su linea telefonica  molto semplice. Aprite
con un editor di testo il file "/etc/inittab"
e togliete il carattere "#"
dall'ultima riga presente simile alla seguente:


T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS0


Togliendo il commento e riavviando il sistema con il modem
acceso potrete vedere gi alcuni cambiamenti: si accenderanno
alcune luci di segnalazione nuove nel vostro dispositivo
che indicano lo stato di "attesa
chiamata" del vostro sistema. Da questo primo passo
si possono ottenere numerose possibilit come un server
PPP per collegamenti punto-punto con un'altra macchina via
rete telefonica, un server come il precedente con la possibilit
di callback, richiamata al numero di provenienza, un fax
server o una segreteria telefonica digitale.

Se siete increduli lasciate il vostro computer acceso e provvedete
a collegarvi ad esso da un altro pc, utilizzando un programma
terminale come minicom per GNU/Linux (o Hyperterminal per
Windows) a collegarvi alla vostra macchina utilizzando il
numero telefonico della vostra abitazione. Dopo le fasi
di hand-shake (la stretta di mano, la fase di inizializzazione
tra i due modem) comparir sul vostro terminale il prompt
di login come se foste in locale. Utilizzate la vostra username
e la vostra password e potrete lavorare in remoto senza
problemi nei limiti della connessione telefonica che state
utilizzando.

Database

La maggioranza delle persone entra in contatto con un Database
(Banca Dati) ogni giorno e spesso nemmeno se ne accorge.
Molto probabilmente il nome pi comune di database software
 Access per la propria diffusione indiretta con il pacchetto
Microsoft Office. Quest'ultimo  graficamente appagante
ed intuitivo ai molti ma il suo utilizzo  alquanto improbabile
in ambito aziendale dove circolano moltissimi dati e si
ricercano soluzioni avanzate da ogni punto di vista. Anche
sul punto di vista dell'utilizzo il concetto di banca dati
assume caratteristiche diverse: il software citato genericamente
viene utilizzato da una sola persona localmente sul proprio
computer mentre un sistema dbms di buon livello  una risorsa
condivisa in rete e disponibile per tutte le persone autorizzate. 





Inutile dire che per un'azienda i dati hanno sempre pi importanza:
clienti, transazioni economiche, informazioni. La vita aziendale
pu dipendere da un database e dalle sue caratteristiche.
Internet stesso ha cambiato molti concetti delle basi dati
per "portarsi" ad un livello pi vicino
a quelli che abbiamo gi citato come web dinamici. Con questo
capitolo si vogliono catturare solamente alcuni aspetti
pratici e funzionali e per una pi ampia analisi si demanda
a testi di approfondimento sull'argomento.

22.1 MySQL

MySQL  un database largamente utilizzato nel mondo disponibile
sia per Windows che per le varie famiglie di sistemi operativi
Unix (GNU/Linux compreso). Acquista buona parte della sua
nomea nel campo delle applicazioni web nelle quali gioca
un ruolo di primaria importanza. Le sue caratteristiche
sono valide per molti scopi anche se in ambiente aziendale
e per determinate caratteristiche PostgreSQL  consigliato.

Preoccupiamoci di verificare la presenza del software nel
nostro sistema:


# dpkg -l | grep mysql

ii libdbd-mysql-p 1.2215-3 mySQL database interface for Perl 

ii libmysqlclient 3.23.33-1 mysql database client library 

ii libmysqlclient 3.22.30-3 mysql database client library 

ii mysql-client 3.23.33-1 mysql database client binaries 

ii mysql-common 3.23.33-1 mysql database common files (e.g.
/etc/mysql 

ii mysql-server 3.23.33-1 mysql database server binaries 

ii php4-mysql 4.0.4pl1-5 MySQL module for php4 

ii xmysqladmin 1.0-13 Front end to mysql


In questo caso abbiamo installato quanto possibile ma se
ci non fosse provvediamo con il seguente comando:


# apt-get install mysql-client mysql-server 


Se siamo interessati ad interfacciare un database al web:


# apt-get install php4 php4-mysql


Nel caso possa servire un'interfaccia grafica per gestire
le comuni operazioni:


# apt-get install xmysqladmin


Dopo le fasi di installazione provvediamo a lanciare in esecuzione
il server di MySQL:


# /etc/init.d/mysql start

Starting MySQL database server: mysqld.


Verifichiamo lo stato:


# ps x|grep mysqld 

1540 ? S 0:00 /bin/sh /usr/bin/safe_mysqld


Perfetto. A questo punto possiamo testare direttamente l'engine
di MySQL come utente "root"
digitando:


# mysql mysql

Welcome to the MySQL monitor. Commands end with ; or \g. 

Your MySQL connection id is 218 to server version: 3.23.33-log 


Type 'help;' or '\h' for help. Type '\c' to clear the buffer 


mysql>


Inizia il nostro viaggio.

22.1.1 Utenti e permessi

L'amministrazione di MySQL pu essere particolarmente raffinata
e ruota principalmente sulle classi "user",
"host" e "password". Pu
essere specificato, per esempio, che l'utente "madrid" pu
solo connettersi dalla macchina locale e che questi pu
effettuare solo delle SELECT soltanto sul database specificato.
Qualsiasi altra operazione non gli sara' permessa. Solo
l'utente "root" pu compiere ogni
operazione su tutti i database e per questo motivo  bene
gestire con cura l'accesso per questo utente. Subito dopo
l'installazione di MySql l'utente root non ha password ed
 consigliato associare una password a tale utente appena
possibile. 

Per collegarsi ad un database server MySQL con l'apposito
client:


$ mysql --user=madrid --password=esempio --host=193.122.123.12
database1


In questo modo chiediamo al server di connetterci al database
"database1" come utente "madrid" e password "esempio". La
connessione viene richiesta al server che risiede sulla
macchina "193.122.123.12" (se l'host non fosse specificato,
si assume che il server stia girando sulla stessa macchina
del client)

Come si comporta il server MySQL prima di permettere l'accesso
all'utente? Avverr il controllo sulla correttezza della
password, l'esistenza dell'utente tra gli accessi e accessibilit
da particolari host remoti al database indicato. Una volta
collegato il server continua la sua operazione controllando
gli accessi per utente e i comandi autorizzati.

 Aggiungere utenti e permessi

Colleghiamoci al database server: 


$ mysql -u root mysql


Per consentire all'utente "madrid"
di poter eseguire interrogazioni (SELECT), aggiornamenti
(UPDATE), eliminazioni (DELETE) sul database "wbs":


> GRANT SELECT,UPDATE,DELETE ON wbs.* TO madrid@localhost 

> IDENTIFIED BY 'mypasswd';


Fatto. Abbiamo concesso all'utente in questione la possibilit
di agire sulla base dati collegandosi da "localhost"
(la macchina locale del database server).

 Modificare le password

E' buona norma cambiare la propria password di collegamento
(sopratutto per l'utente amministratore "root").
Colleghiamoci al database server:


$ mysql -u root mysql


digitiamo:


> SET PASSWORD FOR root=PASSWORD('newpassword');


Abbiamo appena modificato la password in "newpassword".
E' possibile compiere la medesima azione con un ulteriore
comando:


$ mysqladmin -u root password new_password


Il database di sistema  "mysql"
e tutte le sue tabelle contengono i dati riferiti agli utenti
e ai loro permessi. Le tabelle in questione sono "db" e
"user". Nella prima sono presenti i permessi degli utenti
sui vari database, nella seconda gli utenti e la loro password.
La password  salvata in maniera crittografata.

22.2 Creazione di una banca dati

Esistono diverse soluzioni per creare una banca dati. La
modalit pi semplice consiste nell'utilizzare il client
di MySQL per poter comunicare direttamente con il server.
Colleghiamoci digitando il semplice comando seguente:


# mysql

Welcome to the MySQL monitor. Commands end with ; or \g. 

Your MySQL connection id is 36 to server version: 3.23.38-log 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer 

mysql>


A questo punto sar possibile digitare al nuovo prompt dei
comandi quanto ci interessa:


mysql> CREATE DATABASE miodatabase;

Query OK, 1 row affected (0.08 sec)


Fatto! Ora indichiamo che si desidera passare a questo database
con:


mysql> USE miodatabase;

Database changed


Per eliminare il database appena creato:


mysql> DROP DATABASE miodatabase;

Query OK, 0 rows affected (0.00 sec)


Usciamo dal client digitando:


mysql> exit

Bye

#


E' possibile creare lo stesso database direttamente dalla
console come segue:


# mysqladmin -p CREATE miodatabase

Enter password:

Database "miodatabase" created.

#


Per l'eliminazione basta utilizzare DROP con il medesimo
comando.

22.3 SQL in pillole

Lo sviluppo di SQL([footnote] SQL, Structured Query Language)  inizia nel 1974 presso i laboratori di ricerca dell'IBM
e nel corso degli anni successivi assume un ruolo fondamentale
per determinate soluzioni software. IBM comincio' a rilasciare
i suoi prodotti relazionali nel 1981 e due anni dopo comincio'
a vendere DB2. Nel corso degli anni ottanta numerose compagnie
(ad esempio Oracle e Sybase, solo per citarne alcune) commercializzarono
prodotti basati su SQL, che divenne lo standard industriale
di fatto per quanto riguarda i database relazionali. Nel
1986 l'ANSI adotto' il dialetto SQL di IBM come standard
per i linguaggi relazionali e divenne standard ISO nel 1987
nota come SQL/86. Si susseguirono ulteriori revisioni da
SQL/89 all'attuale SQL/92. La disponibilit di questo standard
apre la strada all'intercomunicabilita' fra tutti i prodotti
che si basano su di esso.

 Creare una tabella per i dati

Una tabella sar il vostro contenitore dei dati e pu essere
creata con la seguente forma:


mysql> CREATE TABLE rubrica(

     > nome char(15),

     > cognome char(15),

     > indirizzo varchar(40));


Abbiamo appena creato una piccola struttura chiamata "rubrica"
con un campo "nome" (tipo
CHAR con dimensione massima di 15 caratteri), "cognome"
(tipo CHAR con dimensione massima di 15 caratteri) e "indirizzo"
(tipo VARCHAR con dimensione variabile massima di 40 caratteri).

 Inserimento di dati

Ora che abbiamo creato la nostra tabella provvediamo a popolarla
con dati:


mysql> INSERT INTO rubrica(nome,cognome, indirizzo) 

     > VALUES ("Charles",
"Bukowski", "via Esempio 12"); 


mysql> INSERT INTO rubrica(nome,cognome, indirizzo) 

     > VALUES ("Stefano", "Benni", "via Sport 1");


mysql> INSERT INTO rubrica(nome,cognome, indirizzo) 

     > VALUES ("Vittorio", "Garbino", "via Zucchero
4");


E' stato inserito nella tabella "rubrica"
i valori nome come "Charles",
cognome come "Bukowski"
e indirizzo come "via Esempio 12".
Questa come le successive operazioni amministrative sui
dati richiedono i necessari permessi concessi dall'amministratore
del database.

 Interrogazioni

Abbiamo creato una tabella "rubrica",
abbiamo inserito alcuni dati e ora non ci resta che estrarre
i dati:


mysql> SELECT * FROM rubrica

+----------+----------+----------------+ 

| nome     | cognome
 |   indirizzo    | 

+----------+----------+----------------+ 

| Charles  | Bukowski | via Esempio 12 | 

+----------+----------+----------------+ 

| Stefano  | Benni    |
via Sport 1    | 

+----------+----------+----------------+ 

| Vittorio | Garbino  |
via Zucchero 4 | 

+----------+----------+----------------+ 

3 row in set (0.01 sec);


E' la forma pi semplice di interrogazione e mostrer tutti
i dati della tabella. Se volessimo ridurre i campi da mostrare:


mysql> SELECT nome, cognome FROM rubrica;

+----------+----------+

| nome     | cognome
 |

+----------+----------+

| Charles  | Bukowski | 

+----------+----------+

| Stefano  | Benni    | 

+----------+----------+ 

| Vittorio | Garbino  | 

+----------+----------+ 

3 row in set (0.01 sec);


Provvediamo ora a ridurre la selezione ai record dove il
campo nome inizia con "Char":


mysql> SELECT * FROM rubrica where nome like "Char%";

+----------+----------+----------------+ 

| nome     | cognome
 |   indirizzo    | 

+----------+----------+----------------+ 

| Charles  | Bukowski | via Esempio 12 | 

+----------+----------+----------------+ 

1 row in set (0.01 sec);


 Aggiornamento

Se il vostro desiderio  aggiornare un campo in un determinato
record di dati:


mysql> UPDATE rubrica SET indirizzo="via
Nuova 12" 

     > WHERE nome="Charles"
AND cognome="Bukowski";


 Eliminazione

Per eliminare un preciso record di dati:


mysql> DELETE FROM rubrica WHERE 

     > nome="Charles"
AND cognome="Bukowski";


Per eliminare tutti i dati della tabella:


mysql> DELETE FROM rubrica;

22.4 Amministrazione

22.4.1 Backup dei dati

Il backup dei dati  un'operazione essenziale nella pratica
per garantire il ripristino della base dati in caso di situazioni
critiche. Il comando per compiere queste "copie
di sicurezza" dei dati  mysqldump che viene
utilizzato nella seguente forma:


mysqldump [opzioni] database [tabelle]


La forma pi comune e semplice  la seguente:


$ mysqldump miodatabase


La banca dati verr mostrata sullo standard output. Per dirigere
ogni informazione su un comodo file sar necessario aggiungere
le dovute indicazioni sul "dove
inviare" i dati:


$ mysqldump miodatabase > miodatabase-backup.sql


Con il comando si compie un backup del database "rubrica"
includendo la struttura SQL e i dati in esso presenti. Se
desiderassimo salvare unicamente una tabella la sequenza
di comandi risulterebbe:


$ mysqldump miodatabase rubrica


Il comando pu gestire diverse opzioni aggiuntive tra le
quali mi limito ad accennarne solo quelle pi comode o probabilmente
quelle pi comuni. Tra quest'ultime mostriamo:


$ mysqldump --add-locks miodatabase


Con --add-locks vengono aggiunti i comandi LOCK TABLES prima
della copia della tabella e UNLOCK TABLES dopo la copia.


$ mysqldump --add-drop-table miodatabase


Con --add-drop-table vengono aggiunti i comandi DROP TABLE
prima di ogni istruzione di creazione tabella onde evitare
duplicazioni dei dati.


$ mysqldump --lock-tables miodatabase


Con --lock-tables si attua la chiusura delle tabelle prima
della copia onde evitare dati non completi nella copia di
sicurezza.


$ mysqldump --no-data miodatabase


Con --no-data si tralasciano i dati presenti e si procede
a copiare unicamente lo schema, la struttura della nostra
banca dati.


$mysqldump --tab=/home/madrid/backup/ miodatabase


Con --tab si definisce un percorso dove inviare la copia
dei file. Con l'opzione verranno creati file schema di ogni
tabella nella forma nometabella.sql, mentrei dati saranno
separati in file nometabella.txt.

22.4.2 Importazione dei dati

Dopo aver esaminato la procedura per produrre una copia di
sicurezza dei dati passiamo ad esaminare l'operazione inversa,
ovvero l'importazione dei dati dall'esterno. Il comando
utile per i nostri scopi  mysqlimport che si utilizza nella
seguente forma:


mysqlimport [opzioni] database


Sar possibile utilizzarlo unicamente con un backup creato
con l'opzione --tab precedentemente illustrata con il comando
mysqldump. Esempio pratico e funzionale:


$ mysqlimport -u root miodatabase rubrica.txt

miodatabase.rubrica: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

22.5 I dati sul web

Nel capitolo relativo al Web Server Apache abbiamo accennato
alla questione "web dinamico",
argomento che riprendiamo in questo punto nuovamente per
illustrare ulteriormente come collegare i dati presenti
su un database MySQL e trasporli sul web.

Nella sezione precedente si  menzionato il database "rubrica",
base dati che riprendiamo in questo momento:


<?

// Esempio di connessione al database

$id = mysql_connect("localhost","utente","password");


// Esecuzione della query

$query = "SELECT nome, cognome FROM rubrica ORDER
BY nome ASC";

$result = mysql_query($id, $query);


// Gestione dell'output dati

for($i = 0; $i < mysql_num_rows($result); $i++) 

{ 

    $nome = mysql_result($result, $i, "nome"); 

    $cognome = mysql_result($result, $i, "cognome"); 

    

    echo $nome," - ",$cognome,"<br>";

}

?>


Salvare questo semplice script con estensione .php (o .php3)
e richiamarlo dal browser per l'output dei dati. In caso
di problemi si pu pensare a questi casi:

1. Non esiste l'utente utilizzato nel database

2. L'utente indicato non pu compiere interrogazioni alla
  base dati

3. Il web server non riconosce l'estensione file .php (.php3)

References

GNU is not Unix
http://www.gnu.org

References

Unix Heritage Society
http://minnie.cs.adfa.edu.au/TUHS/

References

PDP-11 Unix Preservation
http://minnie.cs.adfa.edu.au/PUPS/

References

The Evolution of the Unix Time-Sharing System di Dennis Ritchie
http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

References

La storia di Multics
http://www.multicians.org/history.html

References

Oxford University's Virtual Museum of Computing
http://archive.comlab.ox.ac.uk/other/museums/computing.html

References

Crittografia
http://ca.alinet.it/crittografia.html

References

Andrea Colombo, Le nuove tecnologie di crittografia
http://impresa-stato.mi.camcom.it/im_43/colo.htm

References

InterLex, Introduzione alla firma digitale
http://www.interlex.com/docdigit/intro/intro1.htm

References

The GNU Privacy Handbook, 1999
http://www.bluemarble.net/~jashley/gnupg/manual/book1.html
http://www.bluemarble.net/~jashley/gnupg/manual.ps

References

Introduction to Public-Key Cryptography
http://developer.netscape.com/docs/manuals/security/pkin/index.htm

References

Kille S., RFC 1779, A String Representation of Distinguished
Names, 1995
http://www.cis.ohio-state.edu/htbin/rfc/rfc1779.html

References

Introduction to SSL
http://developer.netscape.com/docs/manuals/security/sslin/index.htm

References

OpenSSL
http://www.openssl.org

References

Das OpenSSL Handbuch, DFN-PCA, 1999
http://www.pca.dfn.de/dfnpca/certify/ssl/handbuch/

References

R. Housley, W. Ford, W. Polk, D. Solo, RFC 2459: Internet
X.509 Public Key Infrastructure -- Certificate and CRL Profile
1999
http://www.cis.ohio-state.edu/htbin/rfc/rfc2459.html

References

Susan G. Kleinmann, Sven Rudolph, Joost Witteveen, The Debian
GNU/Linux FAQ, 1999
ftp://ftp.debian.org/debian/doc/FAQ/

Table of Contents

1 Hackers
    1.1 Jargon: la nascita di un gergo
    1.2 Cracker e Phreaker
    1.3 Linux e l'arte di fare hacking
    1.4 L'importanza della sicurezza informatica
    1.5 Riflessioni
2 Internet e Telematica 
    2.1 Le origini
    2.2 Le comunit virtuali 
    2.3 Servizi e strumenti di comunicazione
    2.4 DNS e i Nomi Dominio 
3 Unix 
    3.1 Da Multics a Unix 
    3.2 La Networking Release 1
    3.3 Free Software Foundation 
4 Open Source 
    4.1 Il progetto GNU 
    4.2 Open Sources Definition
5 Il fenomeno GNU/Linux 
    5.1 La nascita 
    5.2 Distribuzioni 
    5.3 Documentazione 
    5.4 Valore aggiunto 
6 Linux User Group
    6.1 Linux User Group 
    6.2 Meeting nazionali
7 Installazione 
    7.1 Cosa vogliamo fare? 
    7.2 Fase di Installazione 
8 Il Sistema 
    8.1 Processi in fase di avvio 
    8.2 File System 
    8.3 Permessi sui file 
    8.4 Le Shell 
9 La Bash 
10 Pratica 
    10.1 Eseguibilit 
    10.2 Comandi
11 Post installazione
    11.1 Localizzazione italiana del sistema
    11.2 Gestione unit disco
    11.3 File archivio 
    11.4 Creare un disco di avvio
    11.5 Gestire il supporto APM
    11.6 Aggiungere ulteriore SWAP
    11.7 Ricompilare il kernel
    11.8 Gestire i pacchetti software
12 X Window
    12.1 Window Manager
    12.2 Ambienti desktop
13 Il Server XFree86
    13.1 Caratteristiche Tecniche
    13.2 La Gestione dei Font
    13.3 Estensione Xinput
14 Questione di carattere
    14.1 Configurazioni del Server X
15 Introduzione
    15.1 Che cosa serve per creare una rete locale?
16 Sicurezza
    16.1 Portscanning
    16.2 Configurare inetd
    16.3 TCP_WRAPPERS
    16.4 Il file /etc/aliases
    16.5 Mascherare informazioni di sistema
    16.6 Il file /etc/securetty
17 Web server
    17.1 Siti web virtuali
    17.2 kHTTPd
    17.3 Web a contenuti dinamici
18 NFS
19 Collegarsi ad Internet
20 Soluzioni per la stampa
    20.1 printtool
    20.2 magicfilter
    20.3 Dietro le quinte
21 Modem Getty
    21.1 Collegamento diretto per via telefonica
22 Database
    22.1 MySQL
    22.2 Creazione di una banca dati
    22.3 SQL in pillole
    22.4 Amministrazione
    22.5 I dati sul web





Licenza

 GNU Free Documentation License<gnuFDL>

Version 1.1, March 2000
 Copyright (C) 2000  Free Software Foundation,
Inc. 
 59 Temple Place, Suite 330, Boston, MA 
02111-1307 USA 
 Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

PREAMBLE

The purpose of this License is to make a manual, textbook,
or other written document free in the sense of freedom:
to assure everyone the effective freedom to copy and redistribute
it, with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for
the author and publisher a way to get credit for their work,
while not being considered responsible for modifications
made by others.


This License is a kind of copyleft, which means that derivative
works of the document must themselves be free in the same
sense. It complements the GNU General Public License, which
is a copyleft license designed for free software.


We have designed this License in order to use it for manuals
for free software, because free software needs free documentation:
a free program should come with manuals providing the same
freedoms that the software does. But this License is not
limited to software manuals; it can be used for any textual
work, regardless of subject matter or whether it is published
as a printed book. We recommend this License principally
for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains
a notice placed by the copyright holder saying it can be
distributed under the terms of this License. The "Document",
below, refers to any such manual or work. Any member of
the public is a licensee, and is addressed as "you".


A "Modified Version" of the Document
means any work containing the Document or a portion of it,
either copied verbatim, or with modifications and/or translated
into another language.


A "Secondary Section" is a named appendix
or a front-matter section of the Document that deals exclusively
with the relationship of the publishers or authors of the
Document to the Document's overall subject (or to related
matters) and contains nothing that could fall directly within
that overall subject. (For example, if the Document is in
part a textbook of mathematics, a Secondary Section may
not explain any mathematics.) The relationship could be
a matter of historical connection with the subject or with
related matters, or of legal, commercial, philosophical,
ethical or political position regarding them.


The "Invariant Sections" are certain
Secondary Sections whose titles are designated, as being
those of Invariant Sections, in the notice that says that
the Document is released under this License.


The "Cover Texts" are certain short passages
of text that are listed, as Front-Cover Texts or Back-Cover
Texts, in the notice that says that the Document is released
under this License.


A "Transparent" copy of the Document means
a machine-readable copy, represented in a format whose specification
is available to the general public, whose contents can be
viewed and edited directly and straightforwardly with generic
text editors or (for images composed of pixels) generic
paint programs or (for drawings) some widely available drawing
editor, and that is suitable for input to text formatters
or for automatic translation to a variety of formats suitable
for input to text formatters. A copy made in an otherwise
Transparent file format whose markup has been designed to
thwart or discourage subsequent modification by readers
is not Transparent. A copy that is not "Transparent"
is called "Opaque".


Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX
input format, SGML or XML using a publicly available DTD,
and standard-conforming simple HTML designed for human modification.
Opaque formats include PostScript, PDF, proprietary formats
that can be read and edited only by proprietary word processors,
SGML or XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML
produced by some word processors for output purposes only.


The "Title Page" means, for a printed
book, the title page itself, plus such following pages as
are needed to hold, legibly, the material this License requires
to appear in the title page. For works in formats which
do not have any title page as such, "Title
Page" means the text near the most prominent appearance
of the work's title, preceding the beginning of the body
of the text.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License,
the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies,
and that you add no other conditions whatsoever to those
of this License. You may not use technical measures to obstruct
or control the reading or further copying of the copies
you make or distribute. However, you may accept compensation
in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in
section 3. You may also lend copies, under the same conditions
stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover
Texts, you must enclose the copies in covers that carry,
clearly and legibly, all these Cover Texts: Front-Cover
Texts on the front cover, and Back-Cover Texts on the back
cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must
present the full title with all words of the title equally
prominent and visible. You may add other material on the
covers in addition. Copying with changes limited to the
covers, as long as they preserve the title of the Document
and satisfy these conditions, can be treated as verbatim
copying in other respects.


If the required texts for either cover are too voluminous
to fit legibly, you should put the first ones listed (as
many as fit reasonably) on the actual cover, and continue
the rest onto adjacent pages.


If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a machine-readable
Transparent copy along with each Opaque copy, or state in
or with each Opaque copy a publicly-accessible computer-network
location containing a complete Transparent copy of the Document,
free of added material, which the general network-using
public has access to download anonymously at no charge using
public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you
begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at
the stated location until at least one year after the last
time you distribute an Opaque copy (directly or through
your agents or retailers) of that edition to the public.


It is requested, but not required, that you contact the authors
of the Document well before redistributing any large number
of copies, to give them a chance to provide you with an
updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document
under the conditions of sections 2 and 3 above, provided
that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the
Document, thus licensing distribution and modification of
the Modified Version to whoever possesses a copy of it.
In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a
  title distinct from that of the Document, and from those
  of previous versions (which should, if there were any,
  be listed in the History section of the Document). You
  may use the same title as a previous version if the original
  publisher of that version gives permission. 

B. List on the Title Page, as authors, one or more persons
  or entities responsible for authorship of the modifications
  in the Modified Version, together with at least five of
  the principal authors of the Document (all of its principal
  authors, if it has less than five). 

C. State on the Title page the name of the publisher of
  the Modified Version, as the publisher. 

D. Preserve all the copyright notices of the Document. 

E. Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices. 

F. Include, immediately after the copyright notices, a
  license notice giving the public permission to use the
  Modified Version under the terms of this License, in the
  form shown in the Addendum below. 

G. Preserve in that license notice the full lists of Invariant
  Sections and required Cover Texts given in the Document's
  license notice. 

H. Include an unaltered copy of this License. 

I. Preserve the section entitled History, and its title,
  and add to it an item stating at least the title, year,
  new authors, and publisher of the Modified Version as
  given on the Title Page. If there is no section entitled
  History in the Document, create one stating the title,
  year, authors, and publisher of the Document as given
  on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence. 

J. Preserve the network location, if any, given in the
  Document for public access to a Transparent copy of the
  Document, and likewise the network locations given in
  the Document for previous versions it was based on. These
  may be placed in the History section. You may omit a network
  location for a work that was published at least four years
  before the Document itself, or if the original publisher
  of the version it refers to gives permission. 

K. In any section entitled Acknowledgements or Dedications,
  preserve the section's title, and preserve in the section
  all the substance and tone of each of the contributor
  acknowledgements and/or dedications given therein. 

L. Preserve all the Invariant Sections of the Document,
  unaltered in their text and in their titles. Section numbers
  or the equivalent are not considered part of the section
  titles. 

M. Delete any section entitled Endorsements. Such a section
  may not be included in the Modified Version. 

N. Do not retitle any existing section as Endorsements
  or to conflict in title with any Invariant Section.
  

If the Modified Version includes new front-matter sections
or appendices that qualify as Secondary Sections and contain
no material copied from the Document, you may at your option
designate some or all of these sections as invariant. To
do this, add their titles to the list of Invariant Sections
in the Modified Version's license notice. These titles must
be distinct from any other section titles.


You may add a section entitled Endorsements, provided it
contains nothing but endorsements of your Modified Version
by various parties--for example, statements of peer review
or that the text has been approved by an organization as
the authoritative definition of a standard.


You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text,
to the end of the list of Cover Texts in the Modified Version.
Only one passage of Front-Cover Text and one of Back-Cover
Text may be added by (or through arrangements made by) any
one entity. If the Document already includes a cover text
for the same cover, previously added by you or by arrangement
made by the same entity you are acting on behalf of, you
may not add another; but you may replace the old one, on
explicit permission from the previous publisher that added
the old one.


The author(s) and publisher(s) of the Document do not by
this License give permission to use their names for publicity
for or to assert or imply endorsement of any Modified Version.


5. COMBINING DOCUMENTS

You may combine the Document with other documents released
under this License, under the terms defined in section 4
above for modified versions, provided that you include in
the combination all of the Invariant Sections of all of
the original documents, unmodified, and list them all as
Invariant Sections of your combined work in its license
notice.


The combined work need only contain one copy of this License,
and multiple identical Invariant Sections may be replaced
with a single copy. If there are multiple Invariant Sections
with the same name but different contents, make the title
of each such section unique by adding at the end of it,
in parentheses, the name of the original author or publisher
of that section if known, or else a unique number. Make
the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined
work.


In the combination, you must combine any sections entitled
History in the various original documents, forming one section
entitled History; likewise combine any sections entitled
Acknowledgements, and any sections entitled Dedications.
You must delete all sections entitled Endorsements.

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and
other documents released under this License, and replace
the individual copies of this License in the various documents
with a single copy that is included in the collection, provided
that you follow the rules of this License for verbatim copying
of each of the documents in all other respects.


You may extract a single document from such a collection,
and distribute it individually under this License, provided
you insert a copy of this License into the extracted document,
and follow this License in all other respects regarding
verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a
volume of a storage or distribution medium, does not as
a whole count as a Modified Version of the Document, provided
no compilation copyright is claimed for the compilation.
Such a compilation is called an aggregate, and this License
does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled,
if they are not themselves derivative works of the Document.


If the Cover Text requirement of section 3 is applicable
to these copies of the Document, then if the Document is
less than one quarter of the entire aggregate, the Document's
Cover Texts may be placed on covers that surround only the
Document within the aggregate. Otherwise they must appear
on covers around the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you
may distribute translations of the Document under the terms
of section 4. Replacing Invariant Sections with translations
requires special permission from their copyright holders,
but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant
Sections.  You may include a translation of this
License provided that you also include the original English
version of this License. In case of a disagreement between
the translation and the original English version of this
License, the original English version will prevail.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document
except as expressly provided for under this License. Any
other attempt to copy, modify, sublicense or distribute
the Document is void, and will automatically terminate your
rights under this License. However, parties who have received
copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain
in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. 
Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems
or concerns. 
See http:///www.gnu.org/copyleft/.


Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered
version of this License `or any later version' applies to
it, you have the option of following the terms and conditions
either of that specified version or of any later version
that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number
of this License, you may choose any version ever published
(not as a draft) by the Free Software Foundation.

Complementi

PGP e la sicurezza dei dati personali

In questo manuale si sono fatti notevoli accenni alla sicurezza
ed  stato trattato anche l'uso di gnupg (pagina [gpg]),
uno strumento diffuso per la sicurezza dei dati personali
e ispirato al noto applicativo PGP (Pretty Good Privacy).
Considerando che  stato festeggiato il decimo anniversario
dal rilascio di Pretty Good Privacy mi  sembrato doveroso
riportare una sintetica cronologia del suo sviluppo utilizzando
le stesse parole dell'autore, Zimmermann, in una recente
mail apparsa in rete:


Date: Tue, 5 Jun 2001 17:26:41 -0700

From: Philip Zimmermann <prz@mit.edu>

Subject: PGP Marks 10th Anniversary

 

Today marks the 10th anniversary of the release of PGP 1.0.

 

It was on this day in 1991 that I sent the first release
of PGP to a couple of my friends for uploading to the Internet. 
First, I sent it to Allan Hoeltje, who posted it to Peacenet,
an ISP that specialized in grassroots political organizations,
mainly in the peace movement.


Peacenet was accessible to political activists all over the
world. Then, I uploaded it to Kelly Goen, who proceeded
to upload it to a Usenet newsgroup that specialized in distributing
source code. At my request, he marked the Usenet posting
as "US only". Kelly also uploaded it to many BBS systems
around the country. I don't recall if the postings to the
Internet began on June 5th or 6th.


It may be surprising to some that back in 1991, I did not
yet know enough about Usenet newsgroups to realize that
a "US only" tag was merely an advisory tag that had little
real effect on how Usenet propagated newsgroup postings.
I thought it actually controlled how Usenet routed the posting.
But back then, I had no clue how to post anything on a newsgroup,
and didn't even have a clear idea what a newsgroup was.


It was a hard road to get to the release of PGP. I missed
five mortgage payments developing the software in the first
half of 1991. To add to the stress, a week before PGP's
first release, I discovered the existence of another email
encryption standard called Privacy Enhanced Mail (PEM),
which was backed by several big companies, as well as RSA
Data Security. I didn't like PEM's design, for several reasons.
PEM used 56-bit DES to encrypt messages, which I did not
regards as strong cryptography. Also, PEM absolutely required
every message to be signed, and revealed the signature outside
the encryption envelope, so that the message did not have
to be decrypted to reveal who signed it. Nonetheless, I
was distressed to learn of the existence of PEM only one
week before PGP's release. How could I be so out of touch
to fail to notice something as important as PEM? I guess
I just had my head down too long, writing code. I fully
expected PEM to crush PGP, and even briefly considered not
releasing PGP, since it might be futile in the face of PEM
and its powerful backers. But I decided to press ahead,
since I had come this far already, and besides, I knew that
my design was better aligned with protecting the privacy
of users.


After releasing PGP, I immediately diverted my attention
back to consulting work, to try to get caught up on my mortgage
payments. I thought I could just release PGP 1.0 for MSDOS,
and leave it alone for awhile, and let people play with
it. I thought I could get back to it later, at my leisure.
Little did I realize what a feeding frenzy PGP would set
off. Apparently, there was a lot of pent-up demand for a
tool like this. Volunteers from around the world were clamoring
to help me port it to other platforms, add enhancements,
and generally promote it. I did have to go back to work
on paying gigs, but PGP continued to demand my time, pulled
along by public enthusiasm.


I assembled a team of volunteer engineers from around the
world. They ported PGP to almost every platform (except
for the Mac, which turned out to be harder). They translated
PGP into foreign languages. And I started designing the
PGP trust model, which I did not have time to finish in
the first release. Fifteen months later, in September 1992,
we released PGP 2.0, for MSDOS, several flavors of Unix,
Commodore Amiga, Atari, and maybe a few other platforms,
and in about ten foreign languages. PGP 2.0 had the now-famous
PGP trust model, essentially in its present form.


It was shortly after PGP 2.0's release that US Customs took
an interest in the case. Little did they realize that they
would help propel PGP's popularity, helping to ignite a
controversy that would eventually lead to the demise of
the US export restrictions on strong cryptography.


Today, PGP remains just about the only way anyone encrypts
their email. And now there are a dozen companies developing
products that use the OpenPGP standard, all members of the
OpenPGP Alliance, at http://www.openpgp.org.

What a decade it has been.

 

-Philip Zimmermann

 http://www.philzimmermann.com

Comandi AT per i Modem

I modem Hayes compatibili possono attivare diverse modalit
di funzionamento tramite un set di comandi denominato AT.
Quest'ultimi permettono di personalizzare numerosi aspetti
e possono essere memorizzati in particolari locazioni di
memoria noti come registri S e contenuti in una memoria
non volatile di tipo NOVRAM per essere riutilizzati alla
successiva riaccensione dello strumento in questione. Dopo
qualsiasi modifica  sempre possibile tornare alla configurazione
base impartendo il seguente comando AT da un comune terminale:
AT&F. Riportiamo di seguito i pi significativi ed importanti
comandi.

+--------------+-------------------------------------------------------------------------+
| AT standard  | Funzionalit                                                            |
+--------------+-------------------------------------------------------------------------+
+--------------+-------------------------------------------------------------------------+
|      A       | (Answer) Il modem risponde ad una chiamata                              |
+--------------+-------------------------------------------------------------------------+
|     B0       | Modi ITU-T v.22/v.21 a 1200/300 bps                                     |
|     B1       | Modi Bell 212A/103 a 1200/300 bps                                       |
|     B2       | Modo v.23 a 1200 bps                                                    |
+--------------+-------------------------------------------------------------------------+
|     Dn       | (Dialing) n=0..9 cifre per selezione decadica/multifrequenza            |
+--------------+-------------------------------------------------------------------------+
|     S=n      | Seleziona uno dei quattro numeri memorizzati (n=0..3)                   |
+--------------+-------------------------------------------------------------------------+
|      W       | Attende il secondo tono di selezione                                    |
+--------------+-------------------------------------------------------------------------+
|      @       | Attende 5 secondi di silenzio                                           |
+--------------+-------------------------------------------------------------------------+
|     E0       | Eco comandi disabilitato                                                |
|     E1       | Eco comandi abilitato                                                   |
+--------------+-------------------------------------------------------------------------+
|     +++      | Commuta dal modo dati al modo comandi                                   |
+--------------+-------------------------------------------------------------------------+
|     H0       | Modem agganciato (on-hook)                                              |
|     H1       | Modem sganciato                                                         |
+--------------+-------------------------------------------------------------------------+
|     I0       | Codice prodotto                                                         |
|     I1       | Codice somma di verifiche                                               |
|     I2       | Test della ROM                                                          |
+--------------+-------------------------------------------------------------------------+
|     L0       | Altoparlante muto                                                       |
|     L1       | Volume altoparlante medio                                               |
|     L2       | Volume altoparlante massimo                                             |
+--------------+-------------------------------------------------------------------------+
|     M0       | Altoparlante sempre disattivato                                         |
|     M1       | Altoparlante attivato fino al rilevamento della portante                |
|     M2       | Altoparlante sempre attivato                                            |
|     M3       | Altoparlante disattivato durante la selezione ma attivato               |
|              | al rilevamento della portante                                           |
+--------------+-------------------------------------------------------------------------+
|     N0       | Modo auto disabilitato                                                  |
|     N1       | Modo auto abilitato                                                     |
+--------------+-------------------------------------------------------------------------+
|     O0       | Ritorna al modo trasmissione                                            |
|     O1       | Avvia retrain dell'equalizzatore e poi modo trasmissione                |
+--------------+-------------------------------------------------------------------------+
|      P       | Selezione multifrequenza                                                |
+--------------+-------------------------------------------------------------------------+
|     Q0       | Codici risultato dell'esito del collegamento abilitati                  |
|     Q1       | Codici risultato disabilitati                                           |
|     Q2       | Codice risultato suoneria disabilitato                                  |
+--------------+-------------------------------------------------------------------------+
|     Sr?      | Visualizza il contenuto del registro Sr                                 |
+--------------+-------------------------------------------------------------------------+
|   Sr = n     | Imposta il registro Sr al valore n                                      |
+--------------+-------------------------------------------------------------------------+
|      T       | Selezione decadica                                                      |
+--------------+-------------------------------------------------------------------------+
|     V0       | Risposte numeriche                                                      |
|     V1       | Risposte in testo                                                       |
+--------------+-------------------------------------------------------------------------+
|     X0       | Risposte Hayes Smartmodem 300 compatibili/selezione cieca               |
|     X1       | Come X0 pi tutte le risposte connect/selezione cieca                   |
|     X2       | Come X1 pi rilevamento tono di selezione                               |
|     X3       | Come X1 pi il rilevamento segnale di occupato/selezione cieca          |
|     X4       | Tutte le risposte e il rilevamento tono selezione e segnale di occupato |
+--------------+-------------------------------------------------------------------------+
|     Y0       | Sconnessione spazio lungo disabilitata                                  |
|     Y1       | Sconnessione spazio lungo abilitata                                     |
+--------------+-------------------------------------------------------------------------+
|     Z0       | Ripristino e richiamo profilo utente 0                                  |
|     Z1       | Ripristino e richiamo profilo utente 1                                  |
+--------------+-------------------------------------------------------------------------+


Al gruppo di comandi definiti standard sono stati aggiunti
ulteriori comandi in seguito alle cresciute esigenze. Di
seguito  proposta una tabella dei comandi denominati "comandi
AT estesi".

+------------+----------------------------------------------------------------------------+
| AT estesi  | Funzionalit                                                               |
+------------+----------------------------------------------------------------------------+
+------------+----------------------------------------------------------------------------+
|    &C0     | Carrier Detect (CD) sempre ON                                              |
|    &C1     | Attiva CD in presenza di portante remota                                   |
+------------+----------------------------------------------------------------------------+
|    &D0     | Segnale DTR ignorato                                                       |
|    &D1     | Ritorno alla modalit comandi dopo la commutazione di DTR                  |
|    &D2     | Aggancio e ritorno in modalit comandi dopo com. DTR                       |
|    &D3     | Ripristino del modem dopo la commutazione DTR                              |
+------------+----------------------------------------------------------------------------+
|    &F      | Configurazione standard di fabbrica                                        |
+------------+----------------------------------------------------------------------------+
|    &G0     | Tono di guardia disabilitato                                               |
|    &G1     | Tono di guardia 550Hz abilitato                                            |
+------------+----------------------------------------------------------------------------+
|    &K0     | Disabilita controllo di flusso                                             |
|    &K3     | Abilita controllo di flusso hardware RTS/CTS                               |
|    &K4     | Abilita controllo di flusso software XON/XOFF                              |
+------------+----------------------------------------------------------------------------+
|    &L0     | Imposta modem per funzionamento con linea commutata                        |
|    &L1     | Imposta modem per funzionamento con linea affittata                        |
|    &L2     | Imposta modem per funzionamento con linea affittata all'accensione         |
+------------+----------------------------------------------------------------------------+
|    &M0     | Funzionamento sincrono                                                     |
|    &Mn     | Funzionamento sincrono n                                                   |
+------------+----------------------------------------------------------------------------+
|    &S0     | DSR sempre ON                                                              |
|    &S1     | DSR  disattivato nella modalit comandi, attivato nella modalit online   |
+------------+----------------------------------------------------------------------------+
|    &Tn     | Esegue uno dei possibili test (default=4)                                  |
+------------+----------------------------------------------------------------------------+
|    &V      | Visualizza profili attivi e memorizzati                                    |
+------------+----------------------------------------------------------------------------+
|    &W0     | Memorizza profilo attivo come profilo 0                                    |
|    &W1     | Memorizza profilo attivo come profilo 1                                    |
+------------+----------------------------------------------------------------------------+
|    &X0     | Il modem genera clock sincrono                                             |
|    &X1     | DTE genera clock sincrono                                                  |
|    &X2     | DTE genera clock sincrono dal modem remoto                                 |
+------------+----------------------------------------------------------------------------+
|    &Y0     | Seleziona profilo 0 all'accensione o reset                                 |
|    &Y1     | Seleziona profilo 1 all'accensione o reset                                 |
+------------+----------------------------------------------------------------------------+
|   &Zn=x    | Memorizza numero telefonico x in NOVRAM, n=0..3                            |
+------------+----------------------------------------------------------------------------+
|    %Bn     | Seleziona massima velocit di connessione modem, n=300...28800             |
+------------+----------------------------------------------------------------------------+
|    %D0     | Modo non intelligente disattivato                                          |
+------------+----------------------------------------------------------------------------+
|    %D1     | Modo intelligente abilitato                                                |
+------------+----------------------------------------------------------------------------+
|    %Q      | Visualizza qualit segnale di linea                                        |
+------------+----------------------------------------------------------------------------+
|    %C0     | Compressione dati disabilitata                                             |
|    %C1     | Compressione dati abilitata                                                |
+------------+----------------------------------------------------------------------------+
|    \An     | Misura blocco MNP a 64, 128, 192, 256 se n vale 0, 1, 2, 3                 |
+------------+----------------------------------------------------------------------------+
|    \C0     | Nessuna bufferizzazione dati durante handshake LAPM/MNP                    |
|    \C1     | Bufferizza tutti i dati per 4 secondi fino alla ricezione di 200 caratteri |
|            | fino al rilevamento del pacchetto                                          |
|    \C2     | Nessuna bufferizzazione dati                                               |
+------------+----------------------------------------------------------------------------+
|    \G0     | Controllo di flusso DCE disabilitato                                       |
|    \G1     | Controllo di flusso abilitato                                              |
+------------+----------------------------------------------------------------------------+
|    \J0     | Disabilita regolazione della velocit trasmissione dati porta seriale      |
|    \J1     | Abilita regolazione della velocit trasmissione dati porta seriale         |
+------------+----------------------------------------------------------------------------+
|    \Kn     | Imposta controllo interruzione n=0...5 (default n=5)                       |
+------------+----------------------------------------------------------------------------+
|    \Nn     | Vari modi di funzionamento n=3. Modo automatico V.42/MNP/Normale           |
+------------+----------------------------------------------------------------------------+
|    \Qn     | Controllo di flusso n=3. Controllo di flusso hardware RTS/CTS              |
+------------+----------------------------------------------------------------------------+
|    \Vn     | Visualizza velocit DCE; n=2 con codice risultato esteso modo              |
|            | affidabile dettagliato                                                     |
+------------+----------------------------------------------------------------------------+
|    \Xn     | Elabora XON/XOFF senza "pass-through" (n=0),                               |
|            | con "pass-through" (n=1)                                                   |
+------------+----------------------------------------------------------------------------+


Estensioni di domini nazionali

+---------------------------+-----------------------------+
| Codice    Nazione         | Codice    Nazione           |
+---------------------------+-----------------------------+
+---------------------------+-----------------------------+
|  .ap      Antartide       |  .ar      Argentina         |
+---------------------------+-----------------------------+
|  .at      Austria         |  .au      Australia         |
+---------------------------+-----------------------------+
|  .be      Belgio          |  .br      Brasile           |
+---------------------------+-----------------------------+
|  .ca      Canada          |  .ch      Svizzera          |
+---------------------------+-----------------------------+
|  .cl      Cile            |  .cr      Costa Rica        |
+---------------------------+-----------------------------+
|  .cs      Cecoslovacchia  |  .cy      Cipro             |
+---------------------------+-----------------------------+
|  .de      Germania        |  .dk      Danimarca         |
+---------------------------+-----------------------------+
|  .ec      Ecuador         |  .ee      Estonia           |
+---------------------------+-----------------------------+
|  .es      Spagna          |  .fi      Finlandia         |
+---------------------------+-----------------------------+
|  .fr      Francia         |  .gl      Groenlandia       |
+---------------------------+-----------------------------+
|  .gr      Grecia          |  .hk      Honk Kong         |
+---------------------------+-----------------------------+
|  .hr      Croazia         |  .hu      Ungheria          |
+---------------------------+-----------------------------+
|  .ie      Irlanda         |  .il      Israele           |
+---------------------------+-----------------------------+
|  .in      India           |  .is      Islanda           |
+---------------------------+-----------------------------+
|  .it      Italia          |  .jp      Giappone          |
+---------------------------+-----------------------------+
|  .kr      Corea           |  .kw      Kuwait            |
+---------------------------+-----------------------------+
|  .lu      Lussemburgo     |  .mx      Messico           |
+---------------------------+-----------------------------+
|  .my      Malaisia        |  .nt      Olanda            |
+---------------------------+-----------------------------+
|  .no      Norvegia        |  .nz      Nuova Zelanda     |
+---------------------------+-----------------------------+
|  .pl      Polonia         |  .pr      Portorico         |
+---------------------------+-----------------------------+
|  .pt      Portogallo      |  .ru      Federazione Russa |
+---------------------------+-----------------------------+
|  .se      Svezia          |  .sg      Singapore         |
+---------------------------+-----------------------------+
|  .sk      Slovacchia      |  .sl      Slovenia          |
+---------------------------+-----------------------------+
|  .th      Tailandia       |  .tn      Tunisia           |
+---------------------------+-----------------------------+
|  .tr      Turchia         |  .tw      Taiwan            |
+---------------------------+-----------------------------+
|  .uk      Regno Unito     |  .us      Stati Uniti       |
+---------------------------+-----------------------------+
|  .ve      Venezuela       |  .za      Sud Africa        |
+---------------------------+-----------------------------+


Acronimi

+-----------+-----------------------------------+------------------------------+
| Acronimo  | Significato                       | Traduzione                   |
+-----------+-----------------------------------+------------------------------+
+-----------+-----------------------------------+------------------------------+
|  AFAICT   | As far as I can tell              | Per quanto possa dirne       |
+-----------+-----------------------------------+------------------------------+
|  AFAIK    | As far as I know                  | Per quanto ne s             |
+-----------+-----------------------------------+------------------------------+
|   AFK     | Away from keyboard                | Lontano dalla tastiera       |
+-----------+-----------------------------------+------------------------------+
|    B4     | Before                            | Prima di                     |
+-----------+-----------------------------------+------------------------------+
|   BBL     | Be back later                     | Torno pi tardi              |
+-----------+-----------------------------------+------------------------------+
|   BTW     | By the way                        | A proposito                  |
+-----------+-----------------------------------+------------------------------+
|   BWQ     | Buzz word quotient                | Quoziente di parolona        |
+-----------+-----------------------------------+------------------------------+
|   CUL     | See you later                     | Ci vediamo pi tardi         |
+-----------+-----------------------------------+------------------------------+
|   EOF     | End of file                       | Fine del file                |
+-----------+-----------------------------------+------------------------------+
|   F2F     | Face to face                      | Faccia a faccia              |
+-----------+-----------------------------------+------------------------------+
|   FAQ     | Frequently Asked Question         | Domande poste di frequente   |
+-----------+-----------------------------------+------------------------------+
|   FOC     | Free of charge                    | Gratis                       |
+-----------+-----------------------------------+------------------------------+
|  FUBAR    | Fucked up beyond all recognition  | Fottuto oltre ogni limite    |
+-----------+-----------------------------------+------------------------------+
|   FYI     | For your information              | Per tua informazione         |
+-----------+-----------------------------------+------------------------------+
|   <G>     | Grin                              | Ghigno                       |
+-----------+-----------------------------------+------------------------------+
|    GA     | Go ahead                          | Vai avanti                   |
+-----------+-----------------------------------+------------------------------+
|   GAL     | Get a life                        | Svagati, pensa ad altro      |
+-----------+-----------------------------------+------------------------------+
|   IME     | In my experience                  | Secondo la mia esperienza    |
+-----------+-----------------------------------+------------------------------+
|   IMHO    | In my humble opinion              | Dal mio umile punto di vista |
+-----------+-----------------------------------+------------------------------+
|   IMO     | In my opinion                     | Dal mio punto di vista       |
+-----------+-----------------------------------+------------------------------+
|   IOW     | In other words                    | In altre parole              |
+-----------+-----------------------------------+------------------------------+
|   IRL     | In real life                      | Nella realt                 |
+-----------+-----------------------------------+------------------------------+
|   JAM     | Just a minute                     | Un minuto                    |
+-----------+-----------------------------------+------------------------------+
|   L8R     | Later                             | A dopo                       |
+-----------+-----------------------------------+------------------------------+
|   LOL     | Laughts Out Loud                  | Risate di gusto              |
+-----------+-----------------------------------+------------------------------+
|   MUD     | Multi User Dungeon                | Gioco di ruolo multi-utente  |
+-----------+-----------------------------------+------------------------------+
|   OAO     | Over and out                      | Passo e chiudo               |
+-----------+-----------------------------------+------------------------------+
|   OBTW    | Oh, by the way...                 | Ah, a proposito...           |
+-----------+-----------------------------------+------------------------------+
|   OIC     | Oh, I see...                      | Ah, ho capito...             |
+-----------+-----------------------------------+------------------------------+
|   OMG     | Oh, my god...                     | Oh, mio dio...               |
+-----------+-----------------------------------+------------------------------+
|   RFD     | Request for discussion            | Richiesta di discussione     |
+-----------+-----------------------------------+------------------------------+
|   ROFL    | Rolls on floor laughing           | Rotolarsi dalle risate       |
+-----------+-----------------------------------+------------------------------+
|   RTFM    | Read the fuckin' manual           | Leggi il fottuto manuale     |
+-----------+-----------------------------------+------------------------------+
|   TNX     | Thanks                            | Grazie                       |
+-----------+-----------------------------------+------------------------------+


Smiles

+------------+----------------------------------------+
| Caratteri  | Significato intrinseco                 |
+------------+----------------------------------------+
+------------+----------------------------------------+
|    :-)     | Sorriso per trasmettere ironia e gioia |
+------------+----------------------------------------+
|    ;-)     | Ammiccamento                           |
+------------+----------------------------------------+
|    :-(     | Delusione                              |
+------------+----------------------------------------+
|    :-|     | Indifferente                           |
+------------+----------------------------------------+
|    :->     | Commento sarcastico e pungente         |
+------------+----------------------------------------+
|   >:-|     | Arrabbiato                             |
+------------+----------------------------------------+
|   >>:-|    | Molto arrabbiato                       |
+------------+----------------------------------------+
|   :-)>     | Barbuto                                |
+------------+----------------------------------------+
|    %+(     | Picchiato di recente                   |
+------------+----------------------------------------+
|    :^)     | Naso rotto                             |
+------------+----------------------------------------+
|   3:-|     | Cornuto                                |
+------------+----------------------------------------+
|    X-)     | Strabico                               |
+------------+----------------------------------------+
|   S:-)     | Elvis, rockabilly                      |
+------------+----------------------------------------+
|    :-!     | Gesto di trattenimento                 |
+------------+----------------------------------------+
|    8-)     | Occhialuto                             |
+------------+----------------------------------------+
|    :8)     | Maiale                                 |
+------------+----------------------------------------+
|   =:-)     | Punk                                   |
+------------+----------------------------------------+
|   O:-)     | Angelo                                 |
+------------+----------------------------------------+
|    :-w     | Lingua biforcuta                       |
+------------+----------------------------------------+
|    :-O     | Incredulit, a bocca aperta            |
+------------+----------------------------------------+
|    :-P     | Pernacchia, gesto scherzoso            |
+------------+----------------------------------------+
|   d:-)     | Uomo con berretto                      |
+------------+----------------------------------------+
|    _     | Incredulit                            |
+------------+----------------------------------------+
|    ^_^     | Risata sogghignata                     |
+------------+----------------------------------------+
|    O_O     | Alto grado di incredulit              |
+------------+----------------------------------------+
|    *_*     | Accecato, occhi lucidi                 |
+------------+----------------------------------------+
|    $_$     | Opportunista, che pensa solo ai soldi  |
+------------+----------------------------------------+

