Corso di Informatica Open Source Linux

Corso di Informatica
Open Source
Linux
Storia, filosofia e concetti di base
Pag.1 di 65
Testo Guida per il corso
“Linux”
che si è tenuto
tra Marzo e Aprile 2008
presso:
Istituto Prof.le
di Stato per l'Industria e l'Artigianato
“Giancarlo Vallauri”
Via B. Peruzzi 10 Carpi (MO)
in collaborazione con
Centro Formazione Professionale
CDR EDSEG
Città dei Ragazzi
Relatore del corso
Guandalini Mirko
Il presente manuale è stato scritto da
LABORATORI AIDAN
Via. C.Colombo, 5
Sozzigalli di Soliera (MO)
Tel. 059.563.227
Fax. 059.853.091
Email: [email protected]
Web: http://www.aidan.it
Pag.2 di 65
Indice
Sezione 0: Vedere un computer
Dimostrazione pratica in sede
● Visione dell'interno di un Computer.
● Dimostrazione di Linux e Windows in funzione.
● Dimostrazione della presenza di Linux su oggetti di uso comune.
Sezione 1: Basi
●
●
●
Codice sorgente, codice binario, compilatori.
Cos'è il BIOS.
Cos'è un Sistema Operativo.
Sezione 2: Sistemi Closed Source
●
●
●
●
Cosa vuol dire Closed Source
Come avviene lo sviluppo Closed Source.
Come è nata Microsoft e come mai ha il monopolio del mercato.
Vantaggi/svantaggi tecnici, economici e sociali del modello Closed Source.
Sezione 3: Introduzione all'Open Source
●
●
●
●
●
●
●
●
●
L'importanza di avere libertà di scelta.
Cos'è uno standard.
Standard veri e standard falsi.
Cos'è l'Open Source, come è nato e come funziona la licenza GPL.
Cos'è Linux, come è nato e come viene sviluppato.
Vantaggi/svantaggi tecnici, economici e sociali del modello Open Source.
Campi applicativi di Linux.
Altri sistemi Open Source.
Perché Linux e l'Open Source sono un pericolo per Microsoft.
Sezione 4: Come funziona Windows. Come funziona Linux.
●
●
●
●
●
●
●
●
●
●
●
●
●
●
Cos'è e come funziona un Kernel.
Cos'è un Driver.
Driver su Windows, vantaggi e svantaggi.
Driver su Linux, vantaggi e svantaggi.
Integrazione: come funzionano e cosa sono le librerie.
In cosa Linux è migliore di Windows.
In cosa Windows è migliore di Linux.
Com'è possibile sopperire alla mancanza di certi software
esclusivamente per Windows.
Hacker e Craker
Cosa sono i “Malware”, cosa fanno e perché.
Come si difende Windows dai “Malware”.
Perché Linux non è soggetto a “Malware”.
A quali attacchi è soggetto Linux?
Curiosità su Linux.
costruiti
Sezione 5: Licenze a riconoscimenti.
●
Licenza del corso e riconoscimenti vari.
Pag.3 di 65
Basi
Codice Sorgente, codice binario, compilatori:
I microprocessori (chiamati anche CPU), sono il cervello di un computer. Le CPU
sono in grando di comprendere ed elaborare solo codice binario, ossia sequenze
di Bit. Un bit può avere valore 0 o 1 ed i numeri sono rappresentati secondo la
logica booleana (Algebra di Boole: prende il nome da George Boole, matematico
inglese 1815-1864).
Una sequenza di 8 bit viene chiamata Byte.
Ovviamente, per un essere umano, programmare un computer immettendo dentro di
esso sequenze binarie è un'impresa a dir poco ardua, sebbene non impossibile
(almeno per programmi minuscoli). I primi computer, nati negli anni 70, venivano
programmati manualmente impostando 1 Byte tramite una sequenza di 8
interruttori, confermandolo e caricandolo poi in memorira tramite la pressione
di un pulsate.
Nell'immagine qui sotto si vede il frontalino di un'altair 8800 del 1973
Tuttavia la crescente complessità degli elaboratori e le esigenze dell'industria
richiedevano programmazioni sempre più complesse e ben presto vi fu la necessità
di creare veri e propri linguaggi di programmazione che fossero facilmente
comprensibili dagli esseri umani e che quindi accelerassero il processo di
scrittura dei programmi.
Ovviamente gli elaboratori continuavano (e continuano tutt'ora) a comprendere
solo sequenze binarie. Vennero creati i “Compilatori”. Un compilatore è uno
speciale programma per computer capace di accettare in ingresso un programma
scritto in un linguaggio “umano” e tradurlo nella forma binaria.
Come avviene allora la costruzione di un programma?
1. L'essere umano scrive il programma utilizzando un linguaggio di alto
livello, il programma presentato in questa forma viene definito “sorgente”
2. L'essere umano fa elaborare il “sorgente” dal “compilatore”
3. Il compilatore genera un file binario che non è altro che la traduzione
del sorgente in sequenze di bit comprensibili direttamente dalla CPU.
Otteniamo così il programma in forma binaria (eseguibile), però non è detto che
questo programma sia perfetto! Potremmo aver sbagliato qualcosa in fase di
programmazione, oppure dopo un po' potremmo renderci conto che ci sono cose
migliorabili o che si potrebbero aggiungere. Per effettuare questi miglioramenti
sarà necessario intervenire sul sorgente per poi compilarlo nuovamente in
quanto, per assunto, il binario risulta incomprensibile.
E' ovvio che se smarriamo il sorgente ci sarà impossibile modificare il
programma, dovremo riscriverlo da zero. Allo stesso modo ci è impossibile
modificare un programma altrui senza possederne il sorgente.
Pag.4 di 65
Cos'è il BIOS:
Il BIOS è un piccolo frammento software contenuto all'interno di una memoria non
volatile (ROM, EPROM, Etc) direttamente inserita nell'hardware del computer. Il
compito del BIOS è quello di inizializzare le componenti hardware al momento
dell'accensione e successivamente avviare il Sistema Operativo (in gergo fare il
bootstrap) da una unità a disco (floppy, cdrom, harddisk). Senza un BIOS il
computer non si accenderebbe nemmeno, sarebbe solo un ammasso di circuiti che
consuma corrente elettrica senza fare nulla.
Cos'è un Sistema Operativo:
In informatica il sistema operativo (abbreviato spesso nel suo acronimo SO, o
all'inglese OS, operating system) è il programma responsabile del controllo e
della gestione dei componenti hardware che costituiscono un computer e dei
programmi che su di esso girano. Il sistema operativo mette anche a disposizione
dei programmi una interfaccia software per accedere alle risorse hardware
(dischi, memoria, I/O in generale) del sistema, ed un vasto insieme di librerie
e funzioni alle quali le stesse applicazioni possono accedere.
Il compito principale del sistema operativo è quello di permettere all'uomo di
interagire direttamente con la macchina.
Il sistema operativo quindi è la base su cui girano tutti i programmi e la
qualità del sistema operativo è direttamente responsabile delle prestazioni del
computer e delle applicazioni che girano su di esso.
Cenno storico: Prima dell'avvento del PC, sulla maggior parte dei computer a 8
bit, non vi erano né BIOS né SO, ma solo una ROM da cui avviava direttamente un
piccolissimo ambiente operativo che a malapena si può definire sistema
operativo. Un esempio: il Commodore 64
All'epoca solo su enormi, costosissimi e potentissimi (per allora) computer,
destinati a enti, governi, militari, etc, girava un noto sistema operativo
estremamente potente. Questo sistema operativo si chiamava UNIX
Nell'immagine sotto un sistema VAX, consumava diversi Kilowatt, sistema a 32bit che solo nei modelli
più recenti arrivava ad avere alcuni Mb di memoria ram. Occupava lo spazio di una stanza e per
quanto possa sembrare buffo veniva definito “super mini-computer” per le sue “ridotte dimensioni”.
Pag.5 di 65
Sistemi Closed Source
Cosa vuol dire Closed Source:
Si definisce Closed Source un programma “a sorgente chiuso”, ossia un programma
di cui si posseggono i binari ma NON i sorgenti, che restano chiusi, di
proprietà esclusiva del programmatore che ha creato il programma o dell'azienda
per cui lavora.
Come avviene lo sviluppo Closed Source:
Semplicemente avviene “in privato”: il programma viene scritto da uno o più
sviluppatori, solo un circolo chiuso di persone hanno accesso al codice
sorgente.
Come è nata Microsoft e come mai ha il monopolio del mercato:
Microsoft nasce negli anni '70 come minuscola ed insignificante software house
composta da sole 3 persone tra cui Bill Gates. Uno dei primi lavori di Microsoft
fu la scrittura di un compilatore che permise la programmazione dell'altair 8800
usando il linguaggio Fortran.
Ma la vera fortuna di Microsoft non fu farina del proprio sacco, nei primi anni
'80, IBM (un gigante dalla potenza commerciale enorme, ieri come oggi) cercava
qualcuno che scrivesse un Sistema Operativo per un nuovo modello di computer:
l'IBM XT che portava una tra le prime cpu a 16bit ad essere commercializzate,
l'8086, il capostipite dei moderni PC (che conservano con esso compatibilità).
Nella foto sotto un IBM XT, CPU 8086 4,7Mhz, poteva utilizzare al massimo 1Mb di memoria RAM, anche
se spesso si vedevano XT con 512Kb o meno di ram, in quanto i costi dei chip di ram erano proibitivi
e comunque i programmi di allora difficilmente ne avrebbero tratto beneficio.
Microsoft si presentò alla IBM dichiarando di possedere un sistema operativo
adatto a questo primordiale PC, il DOS... In realtà Microsoft non aveva nulla in
mano, solo la notizia avuta per passaparola che un piccolo programmatore
squattrinato (Tim Paterson) ne aveva scritto uno. Stipulato l'accordo
commerciale con IBM, Bill Gates ed i suoi amici si recarono a casa di Tim
Paterson offrendo a lui 50.000$ per acquistare il suo 86-DOS (adattamento per
8086 dell'analogo sistema CP/M creato da Gary Kildall per computer a 8bit).
L'IBM XT fu un successo (e tutti i suoi successori). Questo fece la fortuna di
Microsoft. Mentre nessuno ricorda il povero Tim Peterson, ormai morto, pugnalato
da un motociclista a cui stava antipatica la maglietta che indossava.
Proseguendo con la storia di Microsoft: nel 1985 venne commercializzata la prima
versione di Windows, sistema grafico a finestre, che altro non era che la copia
del sistema installato su di un prototipo Apple Machitosh che Bill Gates riuscì
ad avere in visione dallo stesso Steve Jobs, ingannandolo. C'è da dire che il
sistema Macintosh era la copia di un sistema sviluppato da Xerox ma comprato
dalla Apple. Quindi Windows era la copia di una copia.
Pag.6 di 65
Vediamo sotto una schermata del desktop Xerox mai commercializzato
Qui una schermata di MacOS 1
Pag.7 di 65
Qui invece una schermata di Windows 1.01
A parte la presenza dei colori in Windows 1.0 (all'epoca ben pochi PC
possedevano schede grafiche o monitor in grado di visualizzare i colori) appare
evidente all'occhio che il desktop Xerox era il più evoluto, per poi passare a
quello Apple fino a quello Windows che era decisamente rudimentale.
Pag.8 di 65
Nonostante tutto, l'alleanza con IBM, e la grande diffusione dei PC, sospinta
soprattutto dal loro basso costo, affermò Microsoft come azienda leader del
mercato dei sistemi operativi. Purtroppo la sua posizione dominante ha indotto
la stessa a trascurare parecchio la qualità dei propri prodotti...
Rispondete a queta domanda: Voi vi sforzereste di migliorare un vostro prodotto,
quando riuscite a venderlo comunque, al prezzo che vi pare, perché questo
prodotto è l'unica scelta presente sul mercato, o perché avete la forza di
imporlo? Ovviamente no, o almeno no se siete privi di scrupoli e di etica. E il
denaro è un solvente eccezionale per l'etica e lo scrupolo di una persona e/o di
una società.
Oltre a questo, un'altra pratica commerciale comune in Microsoft è quella di
spazzare via la concorrenza, non con la qualità dei suoi prodotti ma con la
forza del denaro... (Premessa: in america una ditta non può superare una certa
mole di affari senza entrare in borsa, e in molti altri paesi è così).
Fai qualcosa meglio di me? Ok, ti compro a ti cancello dalla faccia della terra,
non ti fai vendere? Aspettiamo che tu cresca, quando entri in borsa compro il
51% delle tue azioni e dopo sei costretto a fare come dico io: smetti di vendere
il tuo programma che mi fa concorrenza, non smetti? Vendo tutte le tue azioni e
ti riduco in mutande quindi chiudi i battenti per banca rotta. Oppure visto che
il mercato dei SO è mio, faccio un programma analogo al tuo e lo metto integrato
dentro allo stesso Windows così la gente non sentirà più il bisogno di comprare
il tuo, avendo il mio gratis.
Alcuni esempi
WordStar: era uno dei programmi di video scrittura più in voga negli anni 80,
decisamente superiore e concorrenziale nei confronti di MS Word. La ditta che lo
commercializzava fu soffocata e acquisita da Microsoft, che continuò in seguito
a vendere MS Word, facendo sparire ogni traccia di WordStar.
Netscape, uno dei primissimi browser web: Nei primi anni '90
definita dallo stesso Bill Gates “una moda passeggera”. In seguito
internet diventò sempre più grande e l'immagine di Netscape
importante. Netscape ovviamente andava eliminato (comperato) e
viveva di questi introiti.
internet fu
il fenomeno
sempre più
la Netscape
Microsoft allora decise di investire alcuni milioni di dollari per sviluppare
Internet Explorer al solo scopo di regalarlo assieme a Windows, eclissando di
conseguenza Netscape, che fallì alcuni anni dopo per banca rotta in quanto
nessuno comprava più il loro software quando Internet Explorer (per quanto
qualitativamente peggiore) era gratis e già installato assieme a Windows. Le
primissime versioni di Windows 95 (Win 95a) NON avevano Internet Explorer,
mentre la seconda versione di Windows 95 (Win95 osr2) era equipaggiata di
Internet Explorer di serie e così fu per tutte le successive versioni di
Windows.
Però netscape fece un brutto dispetto a Microsoft: poco prima di andare a fondo
rilasciò pubblicamente i codici sorgenti del suo Browser così che la comunità
Open Source (allora giovanissima) potesse prenderne le redini e continuarne lo
sviluppo. Da queste “ceneri” nacque Mozzilla e succesivamente Firefox, Browser
Open Source che sta dando filo da torcere a Microsoft e che ha già mangiato
oltre il 25% dell'utenza mondiale di Internet Explorer.
Pag.9 di 65
Vantaggi/svantaggi tecnici, economici e sociali del modello Closed Source:
Vantaggi:
Tecnicamente parlando: non ci sono particolari vantaggi, tu crei un programma,
fai in modo che faccia il suo lavoro e che non ci siano vistosi bug e basta.
Commercialmente parlando: devi investire tanto tempo nello sviluppo, se sei
un'azienda devi stipendiare tutti i programmatori per ottenere qualcosa di
abbastanza buono da essere venduto ad un prezzo che possa coprire le spese e
permetterti di guadagnare. Oltre a questo devi rispettare dei tempi di consegna
per i tuoi prodotti.
Socialmente parlando: non c'è niente di che, tu vendi il tuo prodotto e basta.
Svantaggi:
Tecnicamente parlando: una cerchia ristretta di cervelli che lavorano su di un
progetto potrebbe avere una visione limitata dello stesso, dei suoi difetti e
lacune funzionali/architetturali. Soprattutto se associamo questa situazione con
una limitata comunicazioni con il pubblico acquirente. Il fatto di dover
rispettare determinati tempi per finire un progetto crea pressione sugli
sviluppatori (scrivere software è molto difficile, e ancora più difficile è
preventivare/rispettare determinati tempi).
Questa situazione spinge gli sviluppatori ad adottare compromessi tecnici che se
da una parte accelerano il completamento del prodotto dall'altra ne peggiorano
la qualità. Gli sviluppatori vengono spinti a curare di più l'aspetto esteriore
e funzionale di un'applicazione piuttosto che concentrarsi sulla sua struttura
operativa interna, perché l'aspetto esteriore è quello che l'utente (acquirente)
medio percepisce più facilmente. Questo modo di programmare, alla lunga, provoca
un decadimento generale della qualità di un programma, rendendo anche più
difficile il suo mantenimento; cioè aggiornare e modificare un programma scritto
male o con un'architettura pessima è notevolmente più difficile che farlo su un
programma ben scritto.
Oltre a questo, chi scrive software closed è obbligato a reinventare ogni volta
la ruota, non importa se altre 1000 persone hanno fatto software simili al tuo,
non avendo il codice sorgente dovrai fare tutto partendo da 0.
Un esempio?
Acrobat Reader ufficiale (visualizzatore di file PDF), scritto dalla Adobe,
(Closed Source) installato è un “malloppone” di quasi un centinaio di megabytes
di binari.
KPDF, visualizzatore di file PDF Open Source installa poco più di 1 megabytes di
binari e per certi aspetti offre funzionalità più appetibili del reader
ufficiale.
Commercialmente parlando: devi pregare che il tasso di pirateria, ossia persone
che fanno copie abusive del tuo programma, non sia troppo alto. Devi investire
tempo e denaro in sistemi di protezione da copia e nella difesa del tuo diritto
d'autore e di repressione delle copie pirata.
Socialmente parlando: questo modo di sviluppare software soffoca molto la
comunicazione con gli utenti. Tu fai una bella scatola colorata venduta nei
supermercati, la gente arriva nei supermercati e compra. Fine della storia.
Inoltre se tu un giorno fallissi o decidessi di abbandonare lo sviluppo di un
determinato programma lasceresti un sacco di persone, che lo usavano, alla
deriva. Immaginate quale danno fu arrecato alle tantissime aziende, enti, e
pubbliche amministrazioni quando la ditta produttrice di WordStar chiuse i
battenti. Quanti documenti divennero illeggibili dopo pochi anni perché non
esisteva più un programma capace di aprirli.
Pag.10 di 65
Introduzione all'Open Source
L'importanza di avere libertà di scelta:
La libertà di scelta è qualcosa di molto importante. Voi oggi siete abituati ad
andare al supermercato dove avete la libertà di scegliere tra centinaia di
marche diverse di cereali, di conserve, pasta, di saponi e prodotti per la casa.
Avete la possibilità di scegliere tra centinaia di marche e modelli di auto,
moto, scooter, biciclette, telefoni cellulari, TV, HiFi, etc. In base ai vostri
gusti personali e al vostro potere di acquisto. Questo perché su tutti questi
prodotti c'è un mercato ricco di alternative, di aziende in libera concorrenza
tra di loro.
Allora perché ci viene negata la libertà di scelta sul sistema operativo o sulle
suite office da utilizzare sul nostro computer? Andate in un mercatone qualsiasi
e cercate di comprare un notebook o computer che NON abbia preinstallato
Microsoft Windows. Ancora peggio: provate a rifiutare il pagamento del costo
dello stesso Windows sul totale del costo del computer, perché non lo volete.
Magari a casa avete una confezione retail di Windows che vorreste usare, oppure
desiderate installare Linux, perché pagare?
Vi scontrerete contro un muro di gomma, non ci sarà verso, se volete il notebook
vi toccherà pagare anche Windows (e non è vero che è regalato col computer come
qualcuno dice o crede).
Eppure quando comprate un'auto pagate solo l'auto, nessuno vi impone di fare
benzina dall'AGIP piuttosto che alla Q8. Quando comprate un'impianto HiFi avete
la libertà di sintonizzarlo sulla stazione radio che vi pare.
Soprattutto in un mercato libero, un'azienda che commercializza prodotti
scadenti sarebbe costretta a migliorare oppure fallirebbe, perché la gente
comprerebbe i prodotti migliori della concorrenza.
Questo non capita a Microsoft. perché essa è riuscita a stabilire una posizione
di “monopolio” attuando per anni politiche atte a spezzare le gambe di chiunque
si mettesse in mezzo al suo cammino, aiutata dalla potenza del denaro guadagnato
da quelli che sono stati i suoi iniziali successi commerciali. Il protrarsi di
questa situazione ha portato Microsoft ad acquisire sempre maggiore ricchezza e
potere.
Da diversi anni ha il potere di imporre a chiunque voglia acquistare un computer
di comprare assieme ad esso una copia di Windows, questo indifferentemente se
l'acquirente lo vuole o no.
Vi sembra giusto che un'azienda si arricchisca attraverso i soldi di utenti che
NON desiderano usare i suoi prodotti?
Ma quello che è peggio è che ormai la mancanza di alternative poste sotto gli
occhi delle persone ha instaurato una situazione culturale tale per cui la
maggioranza delle stesse considera il PC e Windows come 2 cose inseparabili.
Tanti non sanno che esistono altri Sistemi Operativi alternativi magari anche
migliori di Windows.
Ad esempio ogni tanto capita in negozio qualche cliente che viene a fare domande
e quando gli si chiede: Ma lei che computer ha? Ci si aspetterebbe una risposta
tipo “Acer modello ...”, “HP modello...” invece a volte si ottiene la triste
risposta: “Un computer Windows XP o Windows 98 o Windows quello che è...”.
Questo non fa altro che rafforzare la capacità di Microsoft di mantenere il
monopolio sul mercato.
Pag.11 di 65
Cos'è uno standard:
Uno standard, in ambito informatico, ma anche nelle telecomunicazioni, nei
sistemi di misura, nell'ingegneria in genere, rappresenta una base di
riferimento, un paradigma codificato per la produzione di tecnologie fra loro
compatibili, che siano computer, reti di computer o componenti elettronici.
Diversi enti a livello internazionale come l'ISO (International Organization for
Standardization) e l'IEEE (Institute of Electrical and Electronics Engineers)
propongono, concordano e ratificano gli standard nei diversi ambiti.
Prima di essere considerato tale dalla comunità internazionale, ed essere preso
a buon diritto come modello di riferimento, uno standard passa attraverso una
serie di fasi di analisi e accreditamento:
●
●
●
●
L'analisi delle esigenze dell'utenza da parte delle università e dei
settori che si occupano di ricerca e sviluppo per le varie aziende
produttrici, dà luogo alla ricerca di soluzioni per i problemi e le
necessità eventualmente riscontrate.
Quando possibile, delle specifiche tecniche vengono emesse sotto forma di
descrizioni documentate estremamente dettagliate.
Il testing e l'utilizzo di tali specifiche da parte della comunità
internazionale dei produttori e dei laboratori di ricerca evidenzia le
soluzioni migliori. A questo gli enti internazionali possono cominciare a
scegliere cosa scartare e cosa mantenere dei vari contributi, producendo
l'insieme delle specifiche finali.
Le specifiche finali vengono accreditate come standard internazionale da
un ente scientifico. Il risultato è un documento che descrive il modello
cui le ditte di settore dovranno attenersi, pena l'incompatibilità dei
loro prodotti tecnologici.
Standard veri e standard falsi:
Nel mondo, ogni giorno nascono molteplici formati di file. I software di
elaborazione dati spesso utilizzano un proprio formato per gestire i file. Se
questi software riceveranno una larga diffusione, allora potranno vantare anche
un'elevata "compatibilità". Molte persone saranno in grado di leggere,
modificare e scambiare dati fra loro usando uno specifico software. Un formato,
tipico di un determinato software, se usato da una stragrande maggioranza delle
persone, viene considerato erroneamente uno standard.
In uno scenario come quello descritto sopra, voi non potrete scambiare
informazioni con le minoranze che non usano il vostro stesso software.
Un file, o più specificatamente un formato è compatibile con ogni sistema
informatico, quando i dettagli di funzionamento sono pubblici, ma soprattutto
accettati, ad esempio, da un consorzio di standardizzazione come la ISO.
Basta un pò di tempo e di impegno per realizzare un nuovo formato
implementarlo in un software, ma creare uno standard è ben altra cosa.
ed
Ogni giorno però gli standard, ma soprattutto coloro che ci lavorano, si trovano
a combattere contro una larga schiera di persone ignoranti che continuano ad
usare quei formati proprietari che si trovano di default nei loro sistemi
informatici casalinghi. Anche da parte di alcuni colossi del settore, come la
Microsoft, è possibile aspettarsi un mancanza di coerenza rispetto determinati
standard.
Spesso a causa di superficialità e/o di profondi interessi economici i formati
proprietari vengono preferiti agli standard. Uno degli aspetti più pericolosi
rappresentato dalla società statunitense Microsoft è la forte attrazione a
raggiungere e conservare una posizione dominante di mercato, imponendo monopoli
spesso difficili da percepire.
Pag.12 di 65
Facciamo un esempio: recentemente mi è capitato di dover scaricare il dettaglio
delle chiamate effettuate con il mio telefono mobile Wind. I dati erano stati
memorizzati in un un foglio di calcolo in formato xls e per poterlo visualizzare
e modificare avevo bisogno di un software proprietario. Anche questa volta non
era stato usato uno standard ed io mi sentivo discriminato. Ho contattato quindi
l'assistenza della Wind ed ho atteso. Il giorno dopo mi ha chiamato
un'operatrice. Le ho chiesto come pensava che io dovessi aprire quel documento e
lei si è stupita del fatto che non usavo il software proprietario Excel,
prodotto da Microsoft ed integrato nella suite MS Office, che tra l'altro, mi ha
precisato, essere presente spesso in tutti i computer venduti nei mega store
italiani.
Tralasciando questo notevole punto che conferma l'aspetto monopolistico della
Microsoft in ambito informatico, le ho detto di non aver acquistato una licenza
d'uso per il suddetto software e di voler accedere ai miei dati usando una
modalità standard, o per meglio dire, un formato standard, cioè compatibile con
ogni software e hardware che io preferisco, e non che mi sia imposto da loro,
favorendo in questo modo la distribuzione di qualche particolare software
proprietario.
Tutta questa mia spaventosa richiesta, in realtà si riassume con il formato ods
(OpenDocument Speadsheet). In generale il formato OpenDocument nasce per fornire
una alternativa "aperta" ai formati proprietari, tra cui i DOC, XLS e PPT usati
da Microsoft Office.
Utilizzando formati standard si permette agli utenti di accedere a determinati
dati/documenti da qualsiasi sistema operativo e con qualsiasi software
predisposto alla lettura di quel determinato tipo di dati. Se non esistesse un
software specifico per una determinata piattaforma si avrebbe in mano tutta la
documentazione necessaria ad implementarne uno. Anche a distanza di anni,
ipotizzando che un determinato programma sia caduto in disuso, si avrebbe ancora
la documentazione necessaria per leggere i vecchi dati. Se il formato dei
documenti di WordStar fosse stato standard i governi e le grosse compagnie
avrebbero avuto modo di implementare qualcosa in grado di permettergli di
continuare a leggere i vecchi documenti, che non sarebbero andati persi per
sempre, creando un danno economico molto più ampio di quello necessario a pagare
un gruppetto di programmatori che implementassero questo lettore.
OpenOffice è una suite office gratuita e Open Source che produce file in formato
OpenDocument. OpenOffice è disponibile per tutti i sistemi operativi (Windows,
Linux, Mac, etc). E non solo per Windows!
Pag.13 di 65
Cos'è l'Open Source, come è nato e come funziona la licenza GPL:
La condivisione del codice fino agli anni Settanta: A partire dagli anni
Cinquanta, e soprattutto negli anni Sessanta, è stato possibile riusare lo
stesso codice e distribuirlo anche se in modo oggi ritenuto piuttosto
artigianale, ovvero con nastri e schede perforate. Questo fenomeno diventò
evidente soprattutto quando si affermò il vantaggio di riusare una stessa
porzione di codice, il che presupponeva di avere macchine uguali e problemi
simili.
Fino a tutti gli anni Settanta, anche se in misura decrescente, la componente
principale e costosa di un computer era l'hardware, il quale era comunque
inutile in assenza di software. Da ciò la scelta dei produttori di hardware di
vendere il loro prodotto accompagnato da più software possibile e di facilitarne
la diffusione, fenomeno che rendeva più utili le loro macchine e dunque più
concorrenziali. Il software, tra l'altro, non poteva avvantaggiare la
concorrenza in quanto funzionava solo su un preciso tipo di computer e non su
altri, neanche dello stesso produttore.
L'introduzione dei sistemi operativi rese i programmi sempre più portabili, in
quanto lo stesso sistema operativo veniva offerto dal produttore per diversi
modelli di hardware. La presenza di sistemi operativi funzionanti per macchine
di differenti produttori hardware ampliava ulteriormente le possibilità di usare
lo stesso codice in modo relativamente indipendente dall'hardware usato.
Uno di questi sistemi operativi era UNIX, nato nel 1969 come progetto
all'interno di un'impresa delle telecomunicazioni, la AT&T. Una famosa causa
antitrust contro la AT&T le vietò di entrare nel settore dell'informatica.
Questo fece sì che UNIX venisse distribuito ad un prezzo simbolico a buona parte
delle istituzioni universitarie, le quali si ritrovarono ad avere una
piattaforma comune, ma senza alcun supporto da parte del produttore. Si creò
spontaneamente una rete di collaborazioni attorno al codice di questo sistema
operativo, coordinata dall'Università di Berkeley, da dove sarebbe poi uscita la
versione BSD di UNIX, che diventa da un lato un centro di sviluppo ed
innovazione, dall'altro è la base di partenza per numerosi fork.
La nascita del software proprietario: Considerato che la condivisione del codice
è nata insieme all'informatica, piuttosto che di origini dell'Open Source
potrebbe essere più appropriato parlare invece di origine del software
proprietario, ed esaminare il contesto storico in cui questa origine ha avuto
luogo.
L'utilità principale delle licenze restrittive consiste nella possibilità di
rivendere un programma più volte, se necessario con alcune modifiche purché non
rilevanti. Questo presuppone che esistano clienti diversi con esigenze simili,
oltre che l'esistenza di più computer sul quale poter far eseguire il programma.
Queste condizioni cominciano a determinarsi negli anni sessanta, grazie al fatto
che esistevano un maggior numero di utilizzatori con esigenze standardizzabili
come
lo
erano
quelle
delle
organizzazioni
economiche
nell'area
della
contabilità, la logistica o delle statistiche.
L'introduzione dei sistemi operativi rese inoltre possibile l'utilizzo dello
stesso programma anche su hardware differente aumentando così le possibilità di
riutilizzo dello stesso codice e dunque l'utilità nell'impedire la duplicazione
non autorizzata dei programmi.
La suddivisione della AT&T in 26 società, permise alla AT&T di usare logiche
prettamente commerciali nella distribuzione del suo sistema operativo UNIX,
innalzando notevolmente i costi delle licenze e impedendo che potesse essere
modificato.
Pag.14 di 65
Il 1982 fu anche l'anno della divisione delle diverse versioni commerciali di
UNIX, portate avanti dai singoli produttori di hardware. Questi ultimi,
effettuando delle piccole modifiche alla propria versione del sistema operativo,
impedirono ai propri utenti l'utilizzo di altri sistemi, facendo in modo che i
programmi scritti per la propria versione di UNIX non funzionassero su versioni
concorrenti. Anche Microsoft creò un suo sistema UNIX, che in pochi
ricorderanno, morto poco tempo dopo a favore di Windows: Microsoft XENIX
Gli anni Ottanta: Stallman, la Free Software Foundation e l'innovazione dei PC:
Al MIT la sostituzione dei computer fece sì che i programmatori (fra i quali
Richard Stallman che sarebbe diventato il portabandiera del free software) non
potessero accedere al sorgente del nuovo driver di una stampante Xerox per
implementarvi una funzionalità gradita in passato: la segnalazione automatica
che vi erano problemi con la carta inceppata. Contemporaneamente, società
private cominciarono ad assumere diversi programmatori del MIT e si diffuse la
pratica di non rendere disponibili i sorgenti dei programmi firmando accordi di
non divulgazione (in inglese: NDA, ovvero Non Disclosure Agreement).
In questo contesto Stallman si rifiutò di lavorare per una società privata e
fondò nel 1985 la Free Software Foundation (FSF), un'organizzazione senza fini
di lucro per lo sviluppo e la distribuzione di software libero. In particolare
lo sviluppo di un sistema operativo completo, compatibile con UNIX, ma
distribuito con una licenza permissiva, con tutti gli strumenti necessari
altrettanto liberi. Si tratta del progetto GNU. GNU è un acronimo ricorsivo che
significa “GNU Non è Unix”.
L'obiettivo principale di GNU era “essere software libero”. Anche se GNU non
avesse avuto alcun vantaggio tecnico su UNIX, sarebbe comunque stato un
vantaggio sociale, permettendo agli utenti di cooperare, e un vantaggio etico
rispettando la loro libertà.
Tale progetto, finanziato dalla FSF, venne pertanto prodotto da programmatori
appositamente stipendiati.
I principali contributi
l'editor di testo Emacs.
vennero
da
Stallman
Furono sviluppate anche altre componenti di
furono distribuiti per circa 150$ che oltre a
garantivano un servizio di supporto al cliente.
le modifiche eventualmente effettuate su tali
agli sviluppatori.
stesso:
il
compilatore
gcc
e
sistema UNIX. Questi programmi
coprire i costi di riproduzione
L'unica condizione era che tutte
programmi venissero notificate
Nacque così la GNU General Public License (GPL), il preambolo del cui manifesto
comincia con:
●
Le licenze per la maggioranza dei programmi hanno lo scopo di togliere
all'utente la libertà di condividerlo e di modificarlo. Al contrario, la
GPL è intesa a garantire la libertà di condividere e modificare il free
software, al fine di assicurare che i programmi siano "liberi" per tutti i
loro utenti.
Pag.15 di 65
Gli anni Novanta: Internet, Linux e la Open Source Definition: Benché Internet
avesse visto la luce già negli anni '70 è soltanto agli inizi degli anni '90,
con la diffusione del protocollo HTTP e la nascita dei primi browser, che
Internet cominciò ad essere diffusa, prima in ambito accademico e poi in modo
sempre più capillare anche tra semplici privati.
All'inizio degli anni Novanta, il progetto GNU non aveva ancora raggiunto il suo
obiettivo principale, mancando di completare il kernel del suo sistema operativo
(HURD): vi erano tutti i programmi necessari a far funzionare “un sistema
operativo” ma non la parte più importante, ossia il kernel, il sistema operativo
vero e proprio!
Per sopperire a tale mancanza William e Lynne Jolitz riuscirono ad effettuare il
porting di UNIX BSD su piattaforma Intel 386 nel 1991. Purtoppo negli anni
successivi tale porting si trovò ad affrontare problemi di natura legale che ne
ritardarono temporaneamente lo sviluppo.
Nello stesso anno (1991), l'insoddisfazione riguardante alcuni applicativi di
Minix (sistema operativo unix-like destinato alla didattica, scritto da Andrew
Tanenbaum, professore ordinario di Sistemi di Rete all'università di Amsterdam),
il desiderio di approfondire le proprie conoscenze sul processore Intel 386 a
32bit (a quell'epoca molto economico e popolare) e l'entusiasmo per le
caratteristiche tecniche di UNIX stimolarono Linus Torvalds, studente al secondo
anno di informatica presso l'Università di Helsinki, a sviluppare un proprio
sistema operativo, imitando le funzionalità di UNIX, su un PC appunto con
processore Intel 80386. Nacque così il primo kernel linux.
Nella foto Linus Torvalds creatore di Linux.
Pag.16 di 65
Torvalds distribuì il proprio lavoro tramite Internet e ricevette immediatamente
un ampio riscontro positivo da parte di altri programmatori, i quali apportarono
nuove funzionalità e contribuirono a correggere gli errori riscontrati. Nacque
così il kernel Linux, il quale fu distribuito fin da subito con la licenza GPL
creata anni prima da Stallman.
L'unione tra il kernel Linux e il software GNU sviluppato dalla FSF permise
finalmente la nascita di un sistema operativo completo ed indipendente. Per
questo motivo le persone più puntigliose amano definirlo GNU/Linux e non solo
Linux.
Linux all'inizio era un semplice emulatore di terminale scritto in C e assembly,
senza doversi appoggiare ad un sistema operativo. L'emulatore di terminale
avviava e gestiva due thread, uno per mandare segnali alla porta seriale e uno
per riceverli; quando poi Linus ebbe bisogno di leggere e scrivere file su
disco, questo emulatore fu esteso in modo che potesse gestire un filesystem.
Lentamente questo programma si trasformò in un intero kernel in grado di gestire
un sistema operativo e Linus iniziò a documentarsi sulle specifiche POSIX,
chiedendo assistenza sul newsgroup comp.os.minix. La prima versione del kernel
Linux, la 0.01, fu pubblicata su Internet il 17 Settembre 1991 e la seconda
nell'ottobre dello stesso anno.
Internet dal canto suo, rese possibile la comunicazione tra persone molto
distanti in tempi rapidi e a basso costo. Inoltre rese possibile la
distribuzione di software direttamente dalla rete, riducendo ulteriormente i
costi di duplicazione e le difficoltà a reperire il software stesso. La
diffusione dei CD-Rom come supporto privilegiato di raccolte di software, rese
possibile il fenomeno delle cosiddette distribuzioni.
Linux può essere considerato come il primo vero progetto "Open Source" che
faceva affidamento essenzialmente sulla collaborazione via internet per
progredire; fino ad allora, anche i progetti di software GNU come Emacs erano
stati sviluppati in maniera centralizzata seguendo una linea guida prestabilita
da un ristretto numero di persone, in base ai principi ”standard” di ingegneria
del software.
Agli inizi degli anni Novanta, l'idea delle licenze liberali era rappresentata
soprattutto da Richard Stallman e dala sua FSF, ovvero le licenze liberali per
eccellenza erano la GPL e la LGPL che però venivano ritenute "contagiose", in
quanto a partire da un codice licenziato con la GPL qualsiasi ulteriore modifica
doveva avere la stessa licenza. Le idee stesse di Stallman venivano viste con
sospetto dall'ambiente commerciale statunitense, il che non facilitava la
diffusione del software libero. Per favorire dunque l'idea delle licenze
liberali nel mondo degli affari, Bruce Perens, Eric S. Raymond, Ockman e altri
cominciarono nel 1997 a pensare di creare una sorta di lobby a favore di una
ridefinizione ideologica del software libero, evidenziando cioè i vantaggi
pratici per le aziende e coniarono il termine "Open Source".
Ciò anche al fine di evitare l'equivoco dovuto al doppio significato di free
nella lingua inglese, visto che spesso veniva interpretato come "gratuito"
invece che come "libero".
La scelta a favore dell'Open Source da parte di alcune importanti imprese del
settore come la Netscape, l'IBM, la Sun Microsystems, l'HP e tante altre negli
anni successivi, facilitarono inoltre l'accettazione del movimento Open Source
presso l'industria del software, facendo uscire l'idea della "condivisione del
codice" dalla cerchia ristretta nella quale era rimasta relegata fino ad allora.
Venne cioè accettata l'idea
produzione software efficace.
che
l'Open
Source
fosse
una
metodologia
di
Pag.17 di 65
Riassumendo
Il software Open Source viene distribuito assieme al proprio codice sorgente e
chiunque desideri farlo può studiarlo, modificarlo e migliorarlo a proprio
piacimento. La licenza GPL con cui viene distribuito impone che qualunque
modifica venga apportata al codice sorgente sia resa pubblica così che tutti
possano goderne. Sebbene la maggior parte dei software Open Source oggi in
circolazioni siano gratuiti la licenza GPL non impone a nessuno di lavorare
gratis. Uno sviluppatore può chiedere un compenso per lavorare su parti di
codice Open Source, ma non può nascondere i sorgenti agli occhi di chiunque
voglia visionare/modificare il lavoro che ha svolto.
Vantaggi/svantaggi tecnici, economici e sociali del modello Open Source:
Vantaggi:
Tecnicamente parlando: Potendo attingere da un vastissimo bacino di codice
sorgente scritto da altri non c'è bisogno di reinventare 1000 volte la ruota,
quando qualcosa è già stato fatto si può riusarlo, eventualmente aggiungendo
solo le cose che mancano. In questo modo uno sviluppatore può concentrarsi sulla
pura innovazione, creando solo cose nuove.
Rendendo pubblici i sorgenti si ha la possibilità di ottenere suggerimenti,
aiuti, contributi sotto forma di codice e correzione di errori da chiunque si
interessi alla visione e all'uso di questo codice sorgente. Il mezzo utilizzato
per la comunicazione tra gli sviluppatori che si interessano ad un certo
progetto software è pubblico, quindi anche persone incapaci di programmare
possono dare un contributo utile segnalando difetti (bug), esponendo la loro
idea su come vorrebbero modificare qualcosa o richiedendo nuove funzioni,
testando un certo programma in determinate condizioni e riferendo gli esiti. Ma
anche scrivendo semplicemente traduzioni linguistiche dell'interfaccia del
programma o della sua documentazione o disegnando (se capaci) parti grafiche
come loghi, icone, etc. In questo modo si va a creare attorno a un progetto una
forza lavoro notevole o meglio, se il progetto cattura l'attenzione della
comunità si potrebbero avere decine, centinaia o migliaia di menti che scrivono
codice, effettuano test e bugfix volontariamente.
Commercialmente parlando: Partiamo dal presupposto che oggi il mercato
dell'informatica è predominato da giganti dal passato il cui potere economico è
di una vastità impressionante. Nessuna azienda o programmatore, per quanto
brillante, oggi riuscirebbe mai ad emergere o a farsi notare in un mercato del
genere dove i soliti nomi noti appaiono sui giornali e sulla TV tutti i giorni.
Se mai una piccola ditta cominciasse a produrre qualcosa di innovativo,
singolare e competitivo, immediatamente catturerebbe l'attenzione di questi
giganti, che con ogni probabilità avranno tutto l'interesse ad acquisire questa
piccola ditta per possedere la sua innovazione prima di altri. O a schiacciarla
direttamente perché scomoda. Quindi oggi è sostanzialmente impossibile riuscire
ad avviare un'attività che vive solo sugli introiti prodotti dalla vendita di
software Closed.
Considerando che tolti i giganti restano solo le formiche: Si può vivere e
guadagnare benissimo con l'Open Source, basando i propri introiti non sulla
vendita di una scatola con dentro un CD ma sul valore aggiunto del proprio
lavoro. Un'azienda che nasce e sposa l'Open Source vivrà vendendo la propria
mano d'opera e la propria esperienza e competenza nel settore informatico,
fornendo ai propri clienti soluzioni software confezionate su misura e mano
d'opera specializzata per effettuare l'installazione e l'assistenza software,
comprendendo anche eventuali personalizzazioni su programmi.
E' così che sono nate e vivono diverse aziende che producono soluzioni basate su
Linux, le così dette “distribuzioni” che non sono altro che sistemi operativi
basati su Linux (totalmente standard e compatibili con altri Linux) aggiunti di
piccole personalizzazioni grafiche, tools di amministrazione e configurazione
Pag.18 di 65
che spesso sono unici e specifici per ogni diversa distribuzione.
Tra queste ditte ce ne sono anche di molto grandi e ricche (a dimostrazione che
l'Open Source può essere un business valido) tra cui menziono:
●
●
●
●
●
RedHat (produttrice di RedHat Enterprise Linux)
Novell (produttrice di openSuSE, SuSE Linux Enterprise Desktop e Server)
Mandriva (produttrice di Mandriva Linux)
Canonical (produttrice di Ubuntu Linux)
Tante altre...
Ma non solo grosse società che producono distribuzioni Linux possono vivere
bene. Anche piccole ditte, artigiani e liberi professionisti possono trarre
vantaggio da questo mondo. Tutte le distribuzioni Linux sono liberamente
scaricabili da internet, ovviamente chi le scarica gratuitamente (al contrario
di chi fa un contratto di assistenza pagando) non ottiene nessun supporto
tecnico da parte del produttore e deve quindi arrangiarsi, ma se è in grado di
arrangiarsi, viene da se che, avrà in mano uno strumento potentissimo e
soprattutto libero e gratuito.
Anche chi sviluppa software può godere della comunità che sta dietro a Linux:
immaginiamo voi abbiate una piccola ditta che sviluppa un software gestionale
Open Source, il vostro guadagno non verrà dalla vendita del software (nemmeno se
fosse closed) ma bensì dalla vendita dell'assistenza presso i vostri clienti, e
la vendita della vostra mano d'opera per modificare o adattare lo stesso
programma alle specifiche esigenze del cliente.
Non avrete nessun danno se qualcuno a 100 chilometri o dall'altra parte del
mondo ha preso il vostro programma e sta facendo con esso il vostro stesso
lavoro, tanto il vostro campo d'azione non arriva così lontano. Al contrario,
trarrete un vantaggio da ciò, perché se le altre persone che hanno adottato il
vostro software apporteranno modifiche e miglioramenti interessanti al codice
sorgente voi ne verrete in possesso gratuitamente per la natura stessa della
licenza GPL.
Ma ingrandiamo lo scenario, facciamo finta che voi siate una ditta molto più
grande, con una copertura internazionale come RedHat o Novell, in ogni modo il
fatto che i vostri “concorrenti” possano mettere mano al vostro codice sorgente
non vi disturberà in quanto prima di tutto loro vedono il vostro codice come voi
potete vedere il loro, in secondo luogo i clienti sono fidelizzati a voi, ai
vostri servizi e alla vostra capacità tecnica. Al cliente non importa niente se
il software che gli vendete è liberamente scaricabile da internet, il cliente da
solo non è in grado e non ha le risorse umane o tecniche per fare a meno di voi.
Un'industria automobilistica vuole pensare a produrre auto e non a gestire la
propria rete e i propri server, per questo assume delle aziende specializzate.
Inoltre non è nemmeno una cosa semplicissima migrare un'intera rete da una
distribuzione ad un'altra. Una ditta ha bisogno di stabilità e quando le cose
vanno è insensato e costoso cambiarle.
Socialmente parlando: Molti dei vantaggi sociali dell'Open Source li ho già
elencati come vantaggi tecnici e commerciali, si può aggiungere che l'Open
Source è una grande cosa perché è la pura condivisione del sapere. Chiunque lo
desideri può studiare ed imparare il funzionamento di qualsiasi software,
contribuendo al suo progresso.
L'Open Source è immortale: ad oggi si stima che siano oltre 30 milioni le
persone che contribuiscono alla sua crescita (nemmeno Microsoft con il suo
immenso patrimonio potrebbe mai stipendiare così tante persone), singoli
individui, piccoli gruppi e gruppi più grandi finanziati o indipendenti,
università, aziende piccole, medie e grandi, ricercatori, etc contribuiscono
ogni giorno al suo progresso. Nessuno, nemmeno Microsoft può mettere fine a
questo movimento perché è troppo grande e non è centralizzato, non c'è nessuno
da “assorbire” o fare fallire, se anche Microsoft fermasse una singola azienda o
un gruppo di sviluppatori che produce un software molto apprezzato dagli utenti
Pag.19 di 65
(quindi scomodo), tutto il codice prodotto rimarrebbe a disposizione della
comunità e ci sarebbe subito qualcuno in un'altra parte del pianeta che ne
prenderebbe le redini proseguendo il lavoro abbandonato da altri. Inoltre sono
anni che giganti come IBM, Novell, SUN, e tanti altri, si interessano al
fenomeno, finanziando ricerca e sviluppo di altissimo livello su Linux, in
quanto è molto più conveniente che svilupparsi da soli il proprio sistema
operativo. Tenete conto che TUTTI i più grandi super-computer attualmente in
funzione usano Linux, super-computer al servizio della scienza medica, della
ricerca tecnologica, astronomica, chimica, fisica. Ma anche i super-computer
utilizzati per creare i film di animazione che vanno tanto al cinema di questi
tempi.
Campi applicativi di Linux: Aderendo perfettamente agli standard POSIX (standard
che definiscono come deve essere strutturato un sistema UNIX) ed essendo
liberamente modificabile da chiunque, il sistema Linux ha maturato una enorme
versatilità.
Praticamente può essere modificato ed adattato per funzionare su qualsiasi
dispositivo che abbia una qualsiasi specie di CPU a 32bit all'interno.
Si può trovare Linux non solo su normali PC da casa e da ufficio, ma anche su
Server, o super-computer. Su telefoni cellulari, console da gioco (GP2x,
Playstation 2 e 3), piccoli apparati di rete come router, riproduttori
multimediali da salotto, lettori DVD/Divx, decoder satellitari. E' stato usato
sullo shuttle, in satelliti artificiali per telecomunicazioni e anche in sonde
spedite
nelle
profondità
dello
spazio.
E'
stato
usato
su
speciali
equipaggiamenti medici robotizzati capaci di effettuare operazioni chirurgiche
delicatissime. E' anche usato nell'automazione dell'industria pesante.
Altri sistemi Open Source: Open/Net/Free/BSD: Sono implementazioni di UNIX
esattamente come Linux, con esso condividono la quasi totalità delle librerie e
dei software GNU, ma hanno un kernel totalmente differente, BSD appunto. La
comunità che c'è dietro è molto più piccola di quella Linux in quanto la licenza
con la quale viene distribuito questo kernel è considerata da molti assurda ed
inaccettabile. La licenza si chiama come il sistema “BSD”.
La licenza BSD è troppo liberale, più liberale della GPL, consente a chiunque di
prendere il codice sorgente, modificarlo in privato, di cambiare nome al
programma e di venderlo come prodotto Closed Source, senza rendere nulla alla
comunità, senza obbligo nemmeno di riconoscere la paternità del prodotto ai veri
sviluppatori.
Cioè io potrei essere la Apple e potrei prendere BSD, farne il porting per il
mio hardware, approfittare della mano d'opera gratuita della comunità che
sviluppa e migliora il codice. Quando il grosso del lavoro è stato fatto dalla
comunità e quello che ne sta uscendo mi soddisfa potrei chiudere completamente
il codice continuando a sviluppare in privato, chiamarlo Mac OSX e venderlo come
mio nuovo rivoluzionario sistema operativo, Closed Source. Senza rendere una
sola riga di codice alla comunità e senza dire ai miei clienti che il sistema
non è frutto del mio sacco se non per la parte grafica, ma che è frutto del
lavoro di una comunità Open Source. Questo è vero, Mac OSX ha alla base BSD, ma
Apple loda se stessa per aver creato qualcosa che non è suo.
Con la licenza GPL un abuso simile non sarebbe possibile, per questo molti
sostenitori dell'Open Source non approvano la licenza BSD.
Pag.20 di 65
Perché Linux e l'Open Source sono un pericolo per Microsoft: Microsoft ha sempre
basato il suo business sulla vendita di licenze software, facendosi pagare
profumatamente per ogni copia del suo Windows, di Office e di tutti gli altri
suoi prodotti. Non ha mai erogato servizi. Gli utenti comprano la scatola,
pagano, e si arrangiano. Chi volesse assistenza deve pagare a Microsoft
contratti aggiuntivi, inoltre l'assistenza non prevede assolutamente che qualche
particolare dei software venga modificato su specifiche necessità dell'utente.
Attorno a questo business sono nate tantissime aziende che offrono supporto su
prodotti Microsoft; immaginiamo semplicemente i tecnici che si fanno pagare per
riformattare e reinstallare il vostro PC quando Windows si riempe di virus e non
va più. Solo che questi non sono soldi che vanno a Microsoft, ma alle ditte
private che fanno assistenza.
Per Microsoft sarebbe impossibile passare al modello open. Inoltre gli è
impossibile sopprimere Linux, come si è detto in precedenza, non c'è nessuno in
particolare da far fallire, da comprare o da corrompere. L'Open Source è l'unica
cosa che riesca ad intaccare il suo monopolio.
Per queste ragioni Microsoft teme molto questo nemico impalpabile, e cerca di
attaccarlo, di minacciare i suoi utenti e la comunità ogni volta che ne ha
occasione. In passato Steve Ballmer (braccio destro di Bill Gates) arrivò a
dichiarare che Linux era un cancro che infettava qualsiasi cosa toccasse,
riferendosi alla natura della licenza GPL come “Virale”. Dicendo anche che
preferiva BSD (ovviamente perché BSD permette di copiare codice a sbaffo, per
esempio lo stack tcp/ip fino a Windows 2000 era pessimo, poi su XP venne copiato
quello di BSD con un netto miglioramento).
Il problema di questi continui attacchi verbali contro Linux è che si
ritorcevano contro Microsoft stessa, quegli utenti (grandi aziende, enti e
governi) che erano indecisi se passare a Linux o restare con Windows, di fronte
a tanta arroganza decidevano il più delle volte per Linux.
Allora Microsoft cominciò ad effettuare attacchi trasversali, senza esporsi
direttamente. Uno dei più eclatanti fu quello del caso SCO: SCO era una società
che in un passato remoto commercializzava un sistema UNIX (SCO UNIX) e da anni
distribuiva una sua distribuzione Linux (SCO openlinux). SCO un bel giorno se ne
uscì dicendo al mondo intero che gli sviluppatori Linux avevano copiato
spudoratamente buona parte del codice di SCO UNIX, codice che era di sua
proprietà e di cui deteneva il copyright. Minacciando l'intera comunità di
ritorsioni legali e avviando una causa legale contro IBM che riteneva una delle
maggiori responsabili del riversamento in Linux della sua proprietà.
Anche IBM in passato possedeva una sua versione di UNIX (AIX). Anni prima di
questa vicenda IBM aprì alla comunità Linux diverse tecnologie contenute in AIX.
Lo scopo di IBM era quello di abbandonare lo sviluppo interno di AIX per passare
a Linux, per farlo però bisognava prima che su Linux fossero presenti
determinate tecnologie necessarie per far funzionare i suoi mainframe. SCO disse
che il codice di AIX regalato alla comunità era copiato da SCO UNIX. La causa
legale durò 4 anni e portò SCO a spendere il suo intero capitale in avvocati.
Si scoprì che dietro tutto questo c'era un'anonimo finanziatore che erogava
soldi per permettere a SCO di non andare a fondo, continuando ad alzare
polveroni ovunque, minacciando chiunque, accusando Linux e la sua comunità di
cose completamente infondate. SCO poi si rifiutava continuamente di fornire
prove a sostegno delle sue accuse contribuendo a mantenere un'aria di incertezza
tra gli utenti che in una certa percentuale evitavano Linux per paura di
ritorsioni future. Si scoprì che con buona probabilità i finanziamenti
provenissero da Microsoft.
Pag.21 di 65
Questo modo
incertezza e
informazioni
da creare un
di fare viene chiamato FUD: Fear, Uncertainty and Doubt "paura,
dubbio" si intende una strategia di marketing basata sul diffondere
negative, vaghe o inaccurate sul prodotto di un concorrente, tali
clima che scoraggi l'acquirente/consumatore.
Inutile dire che le accuse di SCO erano totalmente infondate, portando SCO a
coprirsi di ridicolo perché dopo anni che gli si chiedeva di mostrare quali
fossero queste parti di codice copiato dal suo SCO UNIX arrivò a mostrare poche
centinaia di righe che erano formate solo da commenti o insignificanti parti di
codice storico, che erano riportate su tantissimi libri universitari come esempi
di programmazione POSIX a partire dagli anni 70. Quindi di dominio pubblico. SCO
attualmente è sotto regime di bancarotta pilotata.
Pag.22 di 65
Come funziona Windows
Come funziona Linux
Cos'è e come funziona un Kernel:
Introduzione
L'accesso diretto all'hardware può essere anche molto complesso, quindi i kernel
usualmente implementano uno o più tipi di astrazione dell'hardware. Queste
astrazioni servono a "nascondere" la complessità e a fornire un'interfaccia
pulita ed uniforme all'hardware sottostante, in modo da semplificare il lavoro
degli sviluppatori. I kernel si possono classificare, in base al grado di
astrazione dell'hardware, in quattro categorie:
●
●
●
Kernel monolitici, che implementano direttamente una completa astrazione
dell'hardware sottostante.
Microkernel, che forniscono un insieme ristretto e semplice di astrazione
dell'hardware e usano software (chiamati device driver o server) per
fornire maggiori funzionalità.
Kernel ibridi (o microkernel modificati), che si differenziano dai
microkernel puri per l'implementazione di alcune funzioni aggiuntive al
fine di incrementare le prestazioni.
Kernel Monolitici
L'approccio
monolitico
definisce
un'interfaccia
virtuale
di
alto
livello sull'hardware, con un set di
primitive o chiamate di sistema per
implementare
servizi
di
sistema
operativo come gestione dei processi,
multitasking
e
gestione
della
memoria, in diversi moduli che girano
in modalità supervisore. Anche se
ogni
modulo
che
serve
queste
operazioni è separato dal resto,
l'integrazione del codice è molto
stretta,
siccome
tutti
i
moduli
operano nello stesso spazio, un bug
in uno di essi può bloccare l'intero
sistema.
Tuttavia,
quando
l'implementazione
è
completa
e
sicura, la stretta integrazione interna dei componenti rende un buon kernel
monolitico estremamente efficiente.
Il più grosso svantaggio dei kernel monolitici è l'possibilità di aggiungere un
nuovo dispositivo hardware senza aggiungere il relativo modulo al kernel,
operazione che richiede la ricompilazione del kernel. In alternativa è possibile
compilare un kernel con tutti i moduli di supporto all'hardware, ingigantendo
però le sue dimensioni. Tuttavia i kernel monolitici più moderni come il Kernel
Linux e FreeBSD possono caricare dei moduli in fase di esecuzione, a patto che
questi fossero previsti in fase di compilazione, permettendo così l'estensione
del kernel quando richiesto, mantenendo al contempo le dimensioni del codice
nello spazio del kernel al minimo indispensabile.
Esempi di kernel monolitici:
● I tradizionali kernel UNIX, quali ad esempio i kernel BSD.
● Il kernel Linux
● Kernel di ricerca come Agnix
Pag.23 di 65
Microkernel
L'approccio microkernel consiste nel
definire
delle
macchine
virtuali
molto semplici sopra l'hardware, con
un set di primitive o chiamate di
sistema
per
implementare
servizi
minimali del sistema operativo quali
gestione
dei
thread,
spazi
di
indirizzamento
o
comunicazione
interprocesso.
L'obiettivo
principale
è
la
separazione delle implementazioni dei
servizi
di
base
dalle
strutture
operative del sistema. Per esempio,
il
processo
di
blocco
(locking)
dell'Input/Output
può
essere
implementato come modulo server a
livello utente. Questi moduli a livello utente, usati per fornire servizi di
alto livello al sistema, sono modulari e semplificano la struttura e la
progettazione del kernel. Un servizio server che smette di funzionare non
provoca il blocco dell'intero sistema, e può essere riavviato indipendentemente
dal resto.
Esempi di microkernel e Sistemi operativi basati su microkernel:
● AIX
● Amoeba
● BeOS
● Chorus microkernel
● EROS
● K42
● LSE/OS (a nanokernel)
● KeyKOS (a nanokernel)
● The L4 microkernel family
● Mach, utilizzato in Hurd e NON in Mac OS X, che contrariamente a quando si
crede usa XNU, che è un kernel ibrido modulare nato dall'unione di Mach e
del kernel FreeBSD
● MERT
● Minix
● MorphOS
● QNX
● RadiOS
● Spring operating system
● VSTa
Pag.24 di 65
Kernel ibridi (microkernel modificati)
I kernel ibridi sono essenzialmente
dei microkernel che hanno del codice
"non essenziale" al livello di spazio
del kernel in modo che questo codice
possa girare più rapidamente che se
fosse implementato ad alto livello.
Questo fu un compromesso adottato da
molti
sviluppatori
di
sistemi
operativi per sopperire in parte alle
minori prestazioni dei microkernel
rispetto ai kernel monolitici. Molti
sistemi operativi moderni rientrano
in
questa
categoria:
Microsoft
Windows è l'esempio più noto. Anche
XNU, il kernel di Mac OSX, è di fatto
un microkernel modificato, per via
dell'inclusione di codice BSD in un
kernel basato su Mach. DragonFly BSD è stato il primo sistema BSD non basato su
Mach ad adottare l'architettura a kernel ibrido.
Alcune persone confondono il termine "kernel ibrido" con i kernel monolitici che
possono caricare dei moduli dopo il boot. Questo non è corretto, poiché "ibrido"
implica che il kernel in questione condivida concetti architetturali e
meccanismi tipici sia dei kernel monolitici che dei microkernel, specialmente il
passaggio di messaggi e la migrazione di porzioni di codice "non essenziale" a
più alto livello, mantenendo a livello kernel solo il codice necessario per
ragioni di prestazioni.
Esempi di kernel ibridi:
● Microsoft Windows NT/2000/XP/Vista ma NON 95/98/ME che si basavano su
MSDOS.
● XNU kernel del Mac OS X
● DragonFly BSD
● Quark, il kernel di MorphOS
Pag.25 di 65
Riassumendo:
●
I kernel monolitici (non più usati da tempo) si portano dietro tutti i
driver esistenti, per questo hanno il difetto di occupare molto spazio in
memoria e non è possibile aggiungere un driver senza ricompilare il
kernel. Sono estremamente performanti.
●
I kernel monolitici/modulari (come quello Linux) sono kernel monolitici
cui i driver sono composti da moduli esterni che possono essere caricati
solo al bisogno risolvendo il problema della dimensione occupata in
memoria. Però i moduli devono essere compilati espressamente per il kernel
in uso. Teoricamente il blocco di un modulo di un kernel monolitico porta
al blocco dell'intero sistema. Anche questi kernel sono estremamente
performanti.
●
I microkernel sono kernel con funzioni ridotte ai minimi termini, tutte le
funzioni avanzate vi girano sopra come fossero normali processi. I moduli
che girano sopra i microkernel possono tranquillamente essere scritti da
terzi e non necessariamente devono essere scritti per una versione
specifica. Teoricamente un'altro loro vantaggio risiede nel fatto che il
blocco di uno di questi processi non porta necessariamente al blocco del
sistema. Sono quindi più versatili, potendo caricare driver e servizi
scritti da chiunque. Hanno il problema di essere piuttosto lenti rispetto
i kernel monolitici.
●
I kernel ibridi sono microkernel che inglobano al loro interno porzioni di
codice e di servizi di alto livello, come i kernel monolitici. Sono un
compromesso tra la versatilità dei microkernel e le prestazioni dei kernel
monolitici. Non raggiungono comunque le prestazioni dei monolitici.
C'è da aggiungere una cosa: Torvalds dice che il codice di un kernel monolitico,
pensato e controllato tutto insieme dallo stesso gruppo di persone è molto più
ottimizzato e soprattutto coerente e può vantare un grande vantaggio di
stabilità rispetto all'approccio opposto, obbligatorio nei microkernel, dove
vengono caricati parti di codice proveniente da più parti.
Alla fine la teoria dei microkernel e dei kernel ibridi è che il blocco di un
modulo non porta al blocco del kernel, ma se il blocco di un modulo mi impedisce
di accedere al disco fisso, o alla scheda video non ha importanza se il kernel
funziona ancora in quanto il computer resta bloccato comunque, obbligandomi al
reset.
Pag.26 di 65
Cos'è un driver: Un driver è un pezzo di codice binario che viene caricato ed
usato dal kernel per accedere ad una periferica hardware. Come una scheda
sonora, una scheda video, una porta di comunicazione, un modem, etc. All'interno
del driver si trovano tutte le istruzioni necessarie al sistema per dialogare
con questo pezzo hardware e per poter permettere alle applicazioni di accedervi.
In assenza di un driver è impossibile utilizzare una determinata periferica.
Driver su Windows, vantaggi e svantaggi: Come abbiamo visto sopra Windows adotta
un microkernel ibrido. Il kernel Windows nativamente non supporta nessun tipo di
periferica, i driver sono file esterni caricati all'occorrenza, diversi driver
per periferiche standard come tastiere, porte parallele e seriali, mouse,
controller floppy/cdrom/harddisk sono già inclusi dentro a Windows e solitamente
sono sufficienti a permettere la prima installazione del sistema.
Chi ha un minimo di conoscenza dei sistemi Windows saprà sicuramente che quando
si compra un nuovo hardware (una stampante, una video camera, etc) si trova
nella confezione il CD con il “driver” per farlo funzionare. Questo driver
ovviamente è Closed Source e viene fornito da chi produce l'hardware. Questo
modo di fare e distribuire i driver ha vantaggi e svantaggi.
Vantaggi: Si ha buona garanzia della compatibilità della periferica con il
proprio sistema, almeno al momento odierno, con la versione di Windows attuale.
Svantaggi: Tutti gli stessi svantaggi del modello di sviluppo closed. Quindi se
un driver è scritto male porterà il sistema ad una diminuzione di prestazioni o
ad una potenziale instabilità. Capita a volte che i driver forniti nel CD siano
pieni di problemi, dovuti al fatto che la casa produttrice aveva fretta di
immettere l'oggetto sul mercato e l'utente dovrà poi aspettare il rilascio degli
aggiornamenti da scaricare via internet. In certi casi (sporadici) ci sono
periferiche addirittura che NON vanno, sebbene sulla confezione sia riportata
come specifica la compatibilità con una certa versione di Windows.
Microsoft nel “tentativo di far credere” di voler risolvere il problema di
qualità dei driver prodotti da terze parti ha introdotto in Windows un sistema
di certificati. Sostanzialmente Windows al momento dell'installazione di un
driver verifica che all'interno di esso sia presente una firma digitale
crittografica, se c'è prosegue normalmente all'installazione, se non c'è fa
apparire una finestra di “Allert” dicendo “pericolo questo driver non è firmato,
se continui potresti destabilizzare il sistema”.
Per evitare che Windows mostri questo spaventoso messaggio il produttore
hardware deve comprare da Microsoft la chiave con cui firmare il driver. Si
capisce benissimo che questa garanzia non garantisce nulla! è solo un modo
studiato da Microsoft per arricchirsi ulteriormente e far credere agli utenti
comuni che si sia data da fare. In realtà il produttore una volta comprata la
chiave può usarla per firmare anche un driver scritto da uno scimpazè.
L'uso di driver closed ha anche un'altro effetto negativo: Quando una periferica
è considerata commercialmente vecchia non vi è garanzia che il produttore
continui a fornire nuovi driver per le nuove versioni di Windows, costringendo
gli utenti che cambiano sistema operativo a buttare via le vecchie periferiche,
anche se perfettamente funzionanti.
Pag.27 di 65
Driver su Linux, vantaggi e svantaggi: Come abbiamo visto sopra Linux adotta un
kernel monolitico modulare, quindi tutti i driver supportati sono già presenti e
disponibili da subito.
Le case produttrici di hardware solitamente NON forniscono driver per Linux,
anche perché, come capiremo proseguendo la lettura, non potrebbero mai
funzionare. I driver sotto Linux sono sviluppati come Open Source dalla stessa
comunità di Linux partendo dalle specifiche funzionali dei diversi hardware.
Specifiche fornite a volte dai produttori stessi a volte ottenute dai gruppi di
sviluppo tramite ingegneria inversa.
Vantaggi: I driver vengono sviluppati con il metodo Open Source e godono di
tutti i suoi vantaggi, tra cui ribadisco la migliore ottimizzazione del codice e
un testing molto più accurato. Tutti i driver esistenti solitamente sono
inseriti di default durante l'installazione del sistema, questo significa che
non ci sarà mai bisogno di installare driver di nessun genere. Al momento della
connessione di una nuova periferica, qualsiasi essa sia, Linux riconoscerà
immediatamente il driver più adatto ad essa, caricandolo e rendendo la
periferica
operativa
immediatamente
o
dopo
una
piccola
procedura
di
configurazione, senza caricare nulla da internet o da CD/Floppy. Un driver, una
volta scritto non viene abbandonato, questo vuol dire che con il passare degli
anni Linux continuerà a supportare anche le vecchie periferiche, questo non
comporta lavoro extra per gli sviluppatori, infatti avendo i sorgenti a
disposizione il più delle volte basta ricompilare il driver per la nuova
versioni del sistema.
Svantaggi: Se non è ancora stato sviluppato un driver per una certa periferica è
impossibile usarla, la periferica non funziona, punto e basta. Talvolta capita
che certi produttori hardware (una piccola parte) siano riluttanti a fornire
specifiche o altre informazioni necessarie alla scrittura di un driver perché
temono di svelare così alcuni segreti sul funzionamento delle loro schede o dei
loro chip. Per i produttori è quasi impossibile fornire driver closed per Linux
perché per la natura del suo kernel (monolitico modulare) il driver dovrebbe
essere fornito espressamente compilato per ogni sua singola variante in
circolazione. Le distribuzioni Linux sono tantissime e il kernel si evolve
versione in versione molto rapidamente, quindi un ipotetico modulo driver per il
kernel versione 2.6.22.17-0.1 di opensuse 10.3, fornito dal produttore,
funzionerebbe solo espressamente su QUELLA versione del kernel di opensuse. Non
funzionerebbe su altre distribuzioni e dopo 2 mesi nemmeno sulla stessa opensuse
perché nel frattempo potrebbero essere usciti aggiornamenti del kernel.
Quest'ultimo punto però non deve spaventare troppo gli utenti, Linux supporta la
maggior parte degli hardware oggi in circolazione, solo una piccola percentuale
di periferiche risulta essere problematica (cito ad esempio i modem integrati a
56k, o i modem sulla porta USB). Esistono siti che forniscono informazioni
riguardanti la compatibilità di certi hardware con Linux. Molto spesso è
possibile sostituire hardware non supportati con altri compatibili, di analoghe
prestazioni e con spese minime.
Nota aggiuntiva: Certi produttori hardware, come nvidia, sono riusciti a trovare
un modo efficace di distribuire driver “closed universali” per Linux. Questo
metodo consiste nel fornire un driver binario closed accompagnato da un modulo
“colla” Open Source. Il modulo “colla” è quello che si interfaccia con il kernel
e che può essere compilato e ricompilato e piacimento anche dagli stessi utenti
in modo da renderlo compatibile con la loro versione del kernel. Questo modulo
“colla” poi non farà altro che caricare a sua volta il driver binario closed
creando un'interfaccia di comunicazione. Purtroppo questo metodo non è molto
comodo per gli utenti, ad accezione di quelli che usano distribuzioni più
pratiche che forniscono il driver già pronto.
Questo modo di far andare un driver sotto Linux però è considerato sporco da
molte persone della comunità che non accettano il compromesso e che spingono per
avere driver completamente liberi.
Pag.28 di 65
Integrazione, come funzionano e cosa sono le librerie: In Informatica, una
libreria software è un insieme di funzioni di uso comune, predisposta per essere
usata dai programmi.
Lo scopo delle librerie software è quello di fornire una vasta collezione di
funzioni di base pronte per l'uso, evitando al programmatore di dover scrivere
ogni volta le stesse funzioni.
Facciamo alcuni esempi sull'uso delle librerie: tutti i programmi, anche diversi
fra loro, hanno funzioni in comune. Pensiamo ad esempio ad un editor di testo e
ad un programma per elaborazione grafica: entrambi hanno menù, la possibilità di
eseguire azioni come aprire o salvare un file. Analizzando l'estetica noteremo
che il modo in cui sono disegnati i bottoni per accedere alle funzioni, le
barrettine di scorrimento, il bordo della finestra, etc, sono uguali. Questo
perché dentro i programmi non vi è scritto ogni volta come disegnare i menù,
come disegnare i bottoni, come leggere o salvare un file, etc. I programmi
semplicemente accedono ad una libreria comune in cui sono contenute le funzioni
necessarie a disegnare l'interfaccia grafica del programma stesso a video, od ad
accedere ai file. Ovviamente di librerie ne esistono tantissime per una vastità
di compiti diversi.
Le librerie
estensione:
●
sotto
Windows
hanno
un
solo
formato
e
sono
file
sempre
con
.dll
Mentre Linux adotta una tipizzazione delle librerie con lo scopo di suddividerle
in base alle diverse architetture (ottimizzate per scopi differenti) e possono
avere estensione:
●
●
●
●
.o
.so
.a
.la
Talvolta poi dopo l'estensione è possibile vedere appeso un numero di versione,
questo ha lo scopo di rendere possibile la coesistenza di più versioni della
stessa libreria sul sistema.
Ad esempio: libaudio.so.2.4
Su Windows le dll non hanno nulla del genere, il numero di versione esatto è
memorizzato all'interno del file stesso. Così viene chiamata mfc42.dll qualsiasi
libreria di quel ceppo. Si chiama mfc42.dll la versione 4.21.71 e qualsiasi
altra genericamente 4.2xxx. Come vedremo proseguendo la lettura, questo aspetto
crea non pochi problemi al buon funzionamento di Windows.
Pag.29 di 65
In cosa Linux è migliore di Windows:
La gestione del software: Su Windows non esiste uno standard su come installare
disinstallare un programma, non esistono librerie comuni per farlo. Su Windows
ogni programma ha un suo “installer” proprietario, un programma che viene
avviato e che si preoccupa di copiare i file nei punti giusti del disco di
sistema nel caso dell'installazione, o di rimuoverli nel caso della
disinstallazione.
Il problema risiede nel fatto che ogni software-house può creare un'installer
per conto suo e se questo non fosse perfetto potrebbe “sporcare il sistema” in
qualche modo. La cosa più comune che capita su Windows avviene alla
disinstallazione: spesso vengono lasciati residui in giro, file e directory che
non vengono rimossi, rimanendo ad occupare spazio disco e talvolta continuando
ad essere caricati in memoria dal sistema, sprecando risorse inutilmente e
diminuendo le prestazioni del computer.
Ad esempio il famoso (ed esoso di risorse) Norton Antivirus
disinstallazione lascia comunemente alcune directory dentro a:
●
●
dopo
la
c:\programmi\
c:\programmi\file comuni\
Piene di eseguibili e librerie che continuano ad essere caricati inutilmente da
Windows anche dopo la procedura di disinstallazione e così via per molti dei
programmi Windows.
Potenzialmente gli sviluppatori potrebbero anche fare le cose fatte bene, ma
Windows non li aiuta e spesso il particolare della disinstallazione viene
trascurato; a loro interessa vendere il programma e che questo si installi
correttamente, in modo che gli utenti lo comprino generando guadagni per
l'azienda... se lo disinstallano: “chi se ne frega”
Sotto a Linux invece si è adottato un metodo completamente differente; vengono
usati software chiamati “Package Manager”. Un Package Manager è un programma
integrato all'interno del sistema, dedicato ad eseguire l'installazione e la
disinstallazione di programmi e librerie. Su Linux quindi non si hanno programmi
di installazione differenti per ogni applicazione. I programmi vengono
distribuiti come pacchetti; file con estensione “.rpm” oppure “.deb”
All'interno di un pacchetto rpm vi sono archiviati tutti i file del programma e
molte altre informazioni riguardo le posizioni dove andranno copiati questi
file, commenti e descrizioni del programma stesso utili all'utente per capire
cosa vi sia dentro e quali librerie servono per usare il determinato programma.
Quest'ultima funzione prende il nome di dipendenza, ossia il programma X
necessita della libreria Y, nel caso la libreria Y non fosse presente nel
sistema il package manager proporrebbe la sua installazione in maniera
automatica.
Le informazioni contenute all'interno di un pacchetto rpm vengono generate
durante la creazione dell'rpm stesso, e non vi è modo di mettere dentro al
pacchetto rpm un file senza che venga catalogato.
Al momento dell'installazione il package manager memorizza tutte le informazioni
di tutti i pacchetti installati all'interno di un database. Al momento della
disinstallazione tramite lo stesso database sarà possibile conoscere TUTTI i
file che un certo pacchetto ha fornito, permettendo una disinstallazione senza
residui, al contrario di Windows.
Rispetto a Windows poi si ha anche un controllo capillare di eventuali conflitti
tra pacchetti. Su Windows è possibile che 2 programmi diversi installino la
stessa libreria dll. Windows non fa controlli sulle versioni delle librerie che
vengono installate ne tanto meno esiste una netta differenziazione tra una
versione e l'altra (come abbiamo visto sopra).
Pag.30 di 65
Quindi il programma A potrebbe installarmi mfc42.dll versione 4.21.71 e il
programma B (installato successivamente) sovrascrivere la prima con mfc42.dll
versione 4.21.58 causando, potenzialmente, un malfunzionamento del programma A.
E' questo il motivo per cui spesso su Windows capita che installando e
disinstallando spesso programmi, anche solo per prova, si finisce per causare
errori, rallentamenti e malfunzionamenti del sistema che portano inevitabilmente
alla necessità di cancellarlo e reinstallarlo ex novo, in quanto districare
tutti i rimescolamenti effettuati dai programmi avvenuti nei mesi sarebbe
impossibile.
Su Linux questo non accade, avviene una netta divisione tra pacchetti che
forniscono librerie e pacchetti che forniscono programmi, in ogni modo il
Package Manager, tramite il suo database interno, riesce a capire che un
pacchetto A sovrascriverebbe un file che appartiene al pacchetto B. Questa
situazione si chiama conflitto, viene quindi segnalata l'incompatibilità tra 2 o
più pacchetti, delle informazioni sul tipo di conflitto sono visualizzate e
talvolta sono proposte anche eventuali soluzioni. Ma in ogni caso deve essere
l'utente a decidere sul da farsi, forse intellettualmente obbliga l'utente a
“pensare” ma evita in maniera estremamente efficace i disastri che capitano
soventemente su Windows.
Inoltre la nomenclatura dei file delle librerie adottata su Linux permette la
coesistenza di versioni diverse della stessa libreria, se 2 programmi avessero
bisogno per l'appunto di 2 versioni diverse di una stessa libreria. Su Linux non
sarebbe impossibile osservare situazioni simili a questa:
●
●
libaudio.so.2.4
libaudio.so.2.4.2
Esattamente la versione 2.4 e la versione 2.4.2 di libaudio.so
Nota finale: oltre al formato “rpm” usato dalla maggioranza delle distribuzioni
esiste anche il formato “deb” usato sopratutto da debian e ubuntu. I formati rpm
e deb hanno un funzionamento concettuale di base che è il medesimo.
Organizzazione della struttura delle directory che contengono programmi e
librerie: Su Windows si osservano poche directory nella radice del disco C:, le
2
principali
sono
“Programmi”
e
“Windows”.
All'interno
di
queste
2
sostanzialmente regna l'anarchia totale, sotto-directory sono create a
discrezione dei programmi che vengono installati. File, librerie ed eseguibili
sono installati ovunque senza nessuna logica apparente se non la personale
logica del programmatore che ha creato il programma “A” che sarà diversa dalla
logica utilizzata dal programmatore del programma “B”. Sostanzialmente è un caos
totale. A parte la struttura generata dai programmi di terzi, anche quella di
base dello stesso sistema operativo appare disorganizzata e ricca di elementi
equivoci, facciamo alcuni esempi:
●
●
●
●
●
●
●
●
Program Files
Program Files\Common Files
Programmi\File Comuni
Programmi\Common Files
Documents and Settings\nome\Impostazioni locali\Dati applicazioni
Documents and Settings\nome\Dati applicazioni
Documents and Settings\nome\Impostazioni locali\Dati
applicazioni\Identities
Documents and Settings\nome\Dati applicazioni\Identities
Pag.31 di 65
Su Linux, nella radice del disco di sistema, sono presenti molte più directory,
ognuna delle quali però è espressamente adibita a contenere file di una ben
precisa natura. Tra una distribuzione e l'altra possono esistere alcune
differenze, ma la cosa importante è che su ogni sistema esistono delle
definizioni dell'ambiente che permettono in maniera discretamente automatizzata
di definire, quando si compila un programma generando eventualmente un pacchetto
rpm di binari, di mettere tutti i file al posto giusto.
La struttura base delle directory è dettata dagli stessi standard POSIX a cui
Linux come tutti i sistemi UNIX aderiscono. Altre strutture di directory
aggiuntevi negli anni per necessità pratiche sono definite dallo standard LSB
(Linux Standard Base). Tutte le distribuzioni Linux aderiscono a POSIX e la
maggior parte di esse aderisce allo standard LSB.
Andando ad analizzare la struttura directory di Linux potremo osservare:
●
/ è la directory radice (root, equivalente a c:)
Directory riguardanti l'avvio del sistema
●
●
●
●
/bin contiene i programmi usati per il boot del sistema
/sbin contiene i programmi usati per il boot del sistema, ma che può
eseguire solo l'utente (root)
/etc file di configurazione di sistema
/dev contiene i devices, cioè collegamenti ai vari dispositivi: tastiera,
modem, dischi,ecc.
Directory riguardanti il kernel di linux
●
●
●
●
●
/boot Kernel e i file di configurazione del boot manager.
/initrd l'initial ram disk, usata nella procedura di boot (non tutte le
distribuzioni mostrano questa directory però)
/proc processi del kernel (filesistem virtuale)
/lib librerie di sistema (modalità singolo utente)
/lib/modules moduli del kernel
Directory di sistema
●
●
●
/mnt o /media directory dove di solito sono montati i dispositivi di
archiviazione (si può scegliere anche un'altra directory ma lo standard
prevede questa (cdrom, dvd, HD, penne USB)
/usr comandi, librerie, pagine di manuale, giochi e altri files per
utilizzo normale (modalità multiutente) replica la struttura di: "/"
○ /usr/bin tutti i programmi si trovano quà
○ /usr/sbin programmi eseguibili solo da root
○ /usr/include file "header" usati durante la compilazione
○ /usr/lib librerie utili ai programmi
○ /usr/local installazioni locali
○ /usr/man,info,doc pagine di manuale
○ /usr/games giochi
○ /usr/src sorgenti per la compilazione
○ /usr/share risorse condivise
○ /usr/X11R6 file del server X
/opt applicazioni aggiuntive (opzionali, su molte distribuzioni vi si
trova installato KDE e/o buona parte di Gnome, nonché molti programmi
statici ossia che non usano solitamente altre parti del sistema per
funzionare, come OpenOffice)
Directory utente (qui potete inserire i vostri file,
prevedono directory specifiche per i vari tipi di file)
●
●
●
alcune
distribuzioni
/root la "home" dell'utente root (amministratore)
/home directory degli utenti (es. /home/vostronome)
/tmp i file temporanei usati dalle applicazioni
Pag.32 di 65
Registro di sistema contro file di configurazione: Windows dalla versione 3.0 in
avanti adotta un registro di sistema per archiviare le configurazioni di
qualsiasi cosa, dai driver alle impostazioni dei programmi (in Windows 3.0 era
un file di testo semplice, da Windows 3.1 in avanti fu creato un registro
binario). Questo significa che Windows e qualsiasi altro driver/programma
installato andrà a salvare le informazioni in questo monoblocco, dove le
informazioni
sono
disperse
all'interno
di
migliaia
di
chiavi
spesso
incomprensibili per un essere umano. Potete accedere al registro di sistema di
Windows eseguendo “regedit”
(mostrare agli alunni il registro di sistema e la sua poca comprensibilità)
Il grande problema legato all'uso del registro di sistema, come per la gestione
del software, è che le applicazioni nel tempo tendono a sporcarlo sempre di più.
Cambiando valori del registro si sistema si può cambiare anche il comportamento
di alcune componenti di Windows, il registro di sistema quindi è terreno fertile
anche per malware e virus che possono inserirvi facilmente valori e chiavi per
ottenere diversi scopi tra cui anche forzare Windows al download di un virus
qualora questo sia stato rimosso.
Capita a volte che alcune chiavi di registro si danneggino, magari a causa di un
crash o di errori di varia natura. Un programma potrebbe smettere di funzionare
perché le sue chiavi sono corrotte e la sua disinstallazione e successiva
reinstallazione potrebbero non sovrascrivere le chiavi di registro relative. In
questi casi diventa necessario intervenire sul registro per cercare di eliminare
a mano tutte le chiavi usate da quel programma... ma se vi trovaste di fronte a
qualche migliaio di chiavi come questa:
{asdf2sd8v5sdv1s8d7vs076sd8b947y32sv748sdf7v}
certamente dovreste rinunciare. Capita poi, in casi più gravi o dopo infezioni
virali, che vengano danneggiate chiavi di sistema che causano pesanti
malfunzionamenti, anche dopo la disinfezione. Tutti questi casi obbligano alla
riformattazione in quanto correggere qualcosa di così intricato è impossibile.
Linux adotta un sistema molto più furbo ed intelligente. Dei semplici file di
testo contenenti le configurazioni dei programmi, creando ovviamente un file
separato per ogni programma. Ogni file riporta il nome del programma che lo ha
generato o nel caso dei file contenenti configurazioni di sistema il nome del
servizio o dello scopo del file stesso, rendendo la ricerca e la modifica
manuale molto semplice.
I file di configurazione di sistema in Linux si trovano dentro a /etc
Mentre i file di configurazione dei programmi usati dagli utenti vengono creati
all'interno dell'home directory dell'utente stesso. Questi file sono quindi
personali, ogni utente avrà i suoi, rendendo possibile una netta divisione tra
settaggi di più utenti che usano lo stesso computer. Su Windows invece è
possibile che i “taroccamenti” di un'utente vadano a influire negativamente
anche sugli altri.
I file di configurazione personali sono “nascosti”, sotto Linux si considera
nascosto un file o una directory cui il nome inizia con un punto. Normalmente i
file-manager grafici di Linux non rendono visibili questi file, almeno che non
si attivi la loro visualizzazione.
Nel
caso
avvenga
il
danneggiamento
di
un
file
di
configurazione
e
un'applicazione smetta di funzionare diventa semplicissimo attivare la
visualizzazione dei file nascosti e cancellare il file o la directory nascosta
che riporta lo stesso nome del programma che non va più. Quando riaprirete il
programma esso non troverà più nessun settaggio e creerà un nuovo file.
Pag.33 di 65
Dovrete poi riconfigurare tutto il programma come se fosse la prima volta che lo
usate, di certo meno drastico che reinstallare l'intero sistema operativo.
Nota: I file di configurazione si usano da sempre è Microsoft che negli anni '80
ha voluto inventare il registro di sistema, condannando tutti i suoi utenti ai
problemi che ne derivano.
Filesystem: In informatica, un filesystem è un meccanismo con il quale i file
sono immagazzinati e organizzati su un dispositivo di archiviazione, come un
hard disk o un CD-ROM. Più formalmente un filesystem è l'insieme dei tipi di
dati astratti necessari per la memorizzazione, l'organizzazione gerarchica, la
manipolazione, la navigazione, l'accesso e la lettura dei dati.
Esistono tanti tipi di filesystem, tutti con i loro pregi e i loro difetti.
Sotto Windows ne esistono solo 2:
●
●
FAT
NTFS
La FAT o meglio FAT32 (esiste anche la FAT16, ma non è più molto utilizzata in
quanto la dimensione massima di una partizione formattabile con FAT16 è di soli
2Gb) è un file-system direttamente derivato da MSDOS. La FAT ha una struttura
estremamente semplice. La troppa semplicità rende FAT un filesystem estremamente
fragile e passibile di errori, nonché anche limitato nelle sue caratteristiche.
FAT non può memorizzare attributi estesi e permessi sui file, non può
memorizzare file più grandi di 2Gb. Non vi è modo di sapere se ci sono errori
nel filesystem senza analizzarlo integralmente (scandisk) ed è pesantemente
afflitto dal problema della frammentazione. Per frammentazione si intende che i
file vengono memorizzati in maniera discontinua, rallentando l'accesso agli
stessi in quanto il disco, meccanicamente, deve saltare avanti e indietro per
leggere tutti i vari pezzettini, sparsi in giro, rendendo necessario di tanto in
tanto eseguire programmi di deframmentazione (defrag), per rimettere ordine e
recuperare le prestazioni perse. I sistemi Windows 9x possono usare solo questo
filesystem.
NTFS è il filesystem nato con Windows NT, copiato quasi integralmente nella
struttura e nel concetto da HPFS, il filesystem di OS/2 (un vecchio sistema
operativo di IBM ormai caduto in disuso). NTFS rispetto a FAT ha la tabella di
allocazione dei file (sostanzialmente l'indice) posta al centro del disco mentre
su FAT è all'inizio. Questo velocizza un po', ma non troppo, l'accesso alla
stessa tabella. NTFS ha anche la possibilità di salvare permessi sui file. Come
FAT per scoprire la presenza di errori è necessario analizzare tutto il
filesystem. NTFS frammenta anche se un pò meno di FAT.
Linux invece ha a sua disposizione parecchi filesystem differenti, alcuni nativi
altri ereditati dai sistemi UNIX commerciali abbandonati dalle case madri a
favore di Linux.
●
●
●
●
●
●
●
●
●
Ext2 (nativo ma obsoleto)
Ext3 (nativo)
Ext4 (nativo ancora sperimentale)
ReiserFS (nativo)
JFS (ereditato da IBM AIX)
XFS (ereditato da SGI IRIX)
Altri poco usati o usati in ambiti particolari come filesystem che
risiedono su ROM in sistemi embedded come CramFS.
Linux può leggere e scrivere anche su NTFS e FAT di Windows
Linux può leggere e talvolta anche scrivere sui filesystem di computer
apple: HFS e HFS+
Pag.34 di 65
Tutti i filesystem nativi di Linux, e quelli ereditati, posseggono una struttura
molto complessa, capace di gestire efficacemente dischi e file enormi (fino ed
oltre 128.000.000 di gigabites). Posseggono una tecnologia chiamata Journallig
che non rende necessario analizzare tutto il disco in cerca di errori dopo un
crash o dopo uno spegnimento improvviso.
In un filesystem Journalled vi è un'area dedicata, chiamata Journal, nella quale
si scrivono tutte le modifiche che si vanno ad affettuare sul filesystem prima
che queste avvengano.
Se apro un file e comincio a scriverci dentro, poi salta la corrente su FAT e su
NTFS il file rimarrà aperto con i dati parzialmente scritti. Questo è un errore,
sarà necessario eseguire scandisk per correggerlo. Perdendo ovviamente tempo per
l'analisi e perdendo i dati che erano contenuti nel file.
Su di un filesystem Journalled l'azione di aprire il file prima viene scritta
nel Journal poi nel filesystem. Se salta la corrente all'avvio successivo la
prima cosa presa in esame dal sistema sarà il Journal, dentro il quale troverà
informazioni riguardo l'ultima azione non terminata. Se era stato aperto un file
e la scrittura dei dati non era stata completata si saprà quale file era, e dove
si trova l'errore correggendolo immediatamente in pochi istanti, senza necessità
di perdere tempo ad analizzare tutto e in certi casi sarà anche possibile
completare la scrittura del file senza perdere dati. Se lo spegnimento fosse
avvenuto prima della scrittura vera, quando ancora il sistema stava accedendo al
Journal vi sarà la sicurezza che non vi sono errori. Il journal verrà azzerato e
il sistema ripartirà senza problemi.
I filesystem Linux inoltre hanno tabelle di allocazione multiple per velocizzare
l'accesso ai dati e per fare in modo che il danneggiamento di una a più tabelle
non renda inaccessibili i dati (ridondanza). Hanno tassi di frammentazione molto
bassi o quasi assenti, non serve “defrag”. Non esistono utility atte a
deframmentare i filesystem di Linux.
Tra i vari filesystem elencati ovviamente esistono differenze tecniche
possono far preferire uno all'altro in base alle varie situazioni.
che
Degni di nota particolare sono Ext3: un filesystem estremamente ridondante, è
possibile recuperare dati abbastanza facilmente anche da dischi parzialmente
riformattati o sovrascritti, è leggero da utilizzare da parte della CPU. Non
vanta una grande velocità (ma rimane più veloce di NTFS) e non è adatto se usato
su grandi partizioni con tantissimi file e directory. Ha un tasso di
frammentazione pressoché nullo.
XFS: è il filesystem di SGI IRIX (Silicon Graphics), uno dei filesystem in
assoluto più performanti mai concepiti. Permette un bilanciamento di banda tra
tutti i vari processi paralleli che vi accedono. Ha un'elevatissima velocità sia
in lettura che in scrittura anche su filesystem enormi e con un numero molto
elevato di file a directory. Ha un uso di CPU molto basso. Non possiede la
stessa ridondanza di ext3 e ha un tasso di frammentazione un pochino maggiore ma
comunque insignificante. Le caratteristiche di questo filesystem derivano
dall'uso cui era destinato IRIX, ossia elaborazione video di livello
cinematografico.
Pag.35 di 65
Gestione della memoria e dei task: su questo argomento ci sarebbe da parlare per
mesi e mesi. L'argomento è troppo complicato per essere presentato in questo
corso. Sappiate comunque che la gestione della memoria e dei task di Linux è
molto ma molto migliore di quella di Windows. Una piccola parentesi può essere
aperta sulla gestione della memoria virtuale:
La memoria virtuale, o swap to disk, è una tecnica che permette ad un sistema
operativo di usare il disco fisso come estensione della memoria RAM, ossia se si
eseguono programmi molto pesanti e la RAM divenisse insufficiente il sistema
riuscirà ad utilizzare una porzione di disco come estensione della stessa. Un
disco fisso però è migliaia di volte più lento della RAM e l'uso massivo dello
swap rallenta molto il computer. Per questo motivo è saggio cercare di
utilizzare una tecnica di swap quanto più veloce possibile.
Linux utilizza una partizione dedicata allo swap, questa partizione non ha
nessuna formattazione particolare, vi accede sopra in maniera diretta, grezza.
Tecnicamente questo tipo di accesso si definisce RAW. L'accesso RAW ad una
partizione è il metodo più veloce in assoluto di leggere e scrive dati su un
disco.
Windows invece utilizza un grosso file all'interno del disco C: su Windows XP lo
potete osservare nella radice principale del disco con il nome pagefile.sys
Accedere ad un file obbliga prima ad accedere ad una struttura complessa che è
quella del filesystem. Inoltre in determinate condizioni è possibile che il
pagefile.sys si “frammenti” sul disco rendendo ancora più lento l'accesso su di
esso.
Ancora: Windows e' capace di spostare in swap solo i dati delle applicazioni ma
non le applicazioni stesse, anche se inattive. Mentre Linux e' capace di migrare
sullo swap un'intero processo.
Ad esempio se stiamo lavorando con molte applicazioni aperte e arriviamo ad
appesantire in maniera critica il sistema Windows riuscirà a spostare sullo swap
solo i dati di queste applicazioni, se non fosse sufficiente segnalerà errore di
memoria insufficiente e si sarà costretti a chiudere qualcosa.
Invece Linux sposterà sullo swap anche interi processi inattivi pur di liberare
memoria da sfruttare nell'immediato per poi risvegliarli solo quando sarà
necessario.
Pag.36 di 65
Ottimizzazione generale di librerie e programmi: Abbiamo già visto nel capitolo
“Come avviene lo sviluppo Closed Source” tanti svantaggi dovuti al modello di
sviluppo. Oltre a questo su Windows vi è anche un'architettura piuttosto
scadente.
Come voi tutti sapete su una versione di Windows nuova è sempre stato possibile
utilizzare programmi binari pensati per versioni precedenti dello stesso
sistema. La scelta di mantenere la compatibilità (binaria) con il passato è la
causa principale dell'inefficienza complessiva del sistema.
Nulla è perfetto, anche i programmi e le librerie scritte dalla stessa
Microsoft. Quindi se oggi esce una certa versione di Windows, sarà quella! Con i
suoi pregi e difetti. Le varie software house mondiali scriveranno programmi per
Windows tenendo in considerazione la struttura di questo sistema, compresi i
suoi difetti...
Può capitare, che un programmatore scriva un programma, che questo programma
utilizzi una libreria del sistema che però presenta un difetto o BUG che causa,
magari solo in determinate condizioni, un comportamento anomalo della stessa
libreria. Il programmatore deve quindi considerare nel suo programma l'anomalia
della libreria, cercando di raggirarla in qualche modo, in gergo fare un
workaround. Con la versione successiva di Windows questa libreria, anche se
considerata obsoleta, non può essere rimossa perché causerebbe incompatibilità
con i vecchi programmi che la usavano.
Contemporaneamente i BUG delle librerie non possono essere corretti il più delle
volte, perché si perderebbe compatibilità con tutti quei programmi che le usano
effettuando workaround. BUG che venendo a mancare causerebbero errori
nell'applicazione che cerca di fare workaround su di un BUG non più presente.
Per questo motivo Windows è un sistema che non si aggiorna a tutti gli effetti
ma con le successive versioni non fa altro che aggiungere roba in più rispetto
la versione precedente, riuscendo a fatica e solo dopo molti anni ad eliminare
le parti più obsolescenti.
E' cultura diffusa tra gli sviluppatori software continuare a usare le vecchie
librerie perché si fa prima che a studiarsi il funzionamento delle nuove, molti
fanno il ragionamento: tanto mica le tolgono!
Purtroppo questa manifestazione di pigrizia di chi sviluppa software allunga di
molto il tempo di vita delle parti obsolete.
Un sistema così sviluppato tende a diventare sempre più pesante e intricato ad
ogni sua nuova versione. Su Windows XP si possono ancora osservare residui di
Windows 3.1. La directory c:\windows\system su XP è appunto un retaggio di
Windows 3.1, anche nel registro di sistema si possono osservare chiari
riferimenti a questa vecchissima versione di Windows.
Pag.37 di 65
Ecco una prova di quanto detto
E questo screen-shot è solo la più evidente tra le tante.
Su Linux invece avviene il contrario, quando si trova un BUG lo si corregge,
quando una libreria è obsoleta la si elimina o per lo meno inizialmente non la
si installa più di default. Essendo tutto Open Source non è troppo difficile
ovviare poi ai problemi derivati da questi continui cambiamenti.
Se un programmatore riscontra un difetto su una libreria, anche non sua, la
correggerà rendendo pubblica la modifica che sarà poi adottata da tutti, o
quanto meno segnalerà il problema a chi ha scritto la libreria perché porga
rimedio.
Oppure se una libreria viene modificata e un programma smette di funzionare,
sempre grazie alla disponibilità del codice sorgente sarà relativamente facile
adattare il programma alla nuova libreria.
Non c'è da confondere questo processo di miglioramento continuo di Linux con le
patch distribuite da Microsoft come aggiornamenti. Tramite WindowsUpdate è
possibile aggiornare Windows in modo da correggerne i difetti di funzionamento.
Il problema è che gli aggiornamenti di Windows solo in certi casi cambiano
qualcosa di difettoso con qualcosa di effettivamente corretto, in tanti altri
casi sono inserite delle “exception”.
Pag.38 di 65
Come si è detto sopra spesso non si può correggere un BUG senza causare
una
perdita di compatibilità con quei programmi che effettuano workaround, se il BUG
di una libreria diventa fastidioso o pericoloso, magari perché causa crash del
sistema o permette la propagazione di Virus si aggiungerà dentro a Windows un
piccolo programmino che sorveglia la libreria bacata, lasciando che le
applicazioni facciamo quello che vogliono ed intervenendo solo qualora si vadano
a creare determinate condizioni pericolose.
Esempio stupido: è come se avessimo una banca, dentro a questa banca vi è una
cassaforte con un buco su di una parete che permette di infilare un braccio e di
prendere i soldi al suo interno.
Per diverso tempo nessuno ai piani alti si accorge di questa cosa, nel frattempo
diversi dipendenti della banca prendono l'abitudine di tirare fuori i soldi
usando questo buco, perché si fa prima che non ad aprire tutto il complesso
meccanismo della porta.
Poi succede che anche persone malintenzionate scoprano questo buco e lo
sfruttino per rubare soldi. A questo punto la banca “Windows”, visto che è
difficilissimo cambiare le abitudini dei suoi dipendenti e visto che non può
licenziarli, dovrà adottare una guardia giurata che stia a sorvegliare il buco,
lasciando che i dipendenti infilino il braccio prendendo soldi ma fermando
chiunque abbia comportamenti sospetti, come mettersi li con un sacco e prendere
tutti i soldi.
Ci sono dipendenti buoni e dipendenti cattivi: Sotto Linux sicuramente i
dipendenti buoni avrebbero informato i piani alti del buco (sicuri del fatto di
essere ascoltati) o addirittura gli stessi dipendenti buoni e più capaci, con
desiderio di migliorare e spirito di collaborazione, si sarebbero occupati di
chiudere il buco. Una volta che il buco è chiuso poi tutti i dipendenti che per
qualche ragione erano abituati ad infilare il braccio si adattano per forza di
cose. I dipendenti cattivi probabilmente avrebbero voluto arrecare danno, ma il
modo collaborativo adottato da Linux fa si che una falla, una volta scoperta
venga chiusa in tempi piuttosto brevi, spesso tanto brevi da non dare modo ai
cattivi di agire.
Anche sotto Windows ci sono dipendenti buoni e dipendenti cattivi, peccato che
purtroppo spessissimo i piani alti non ascoltano chi appartiene ai ceti
inferiori, inoltre non vi è modo per le persone di riparare un difetto in
maniera indipendente (mancano i sorgenti). Finché un BUG non diventa causa di
gravi problemi o danni viene ignorato. Anzi talvolta Microsoft ha denunciato
persone che si sono azzardate a rendere pubblici BUG di Windows, accusandoli di
ledere l'immagine di Windows e di mettere a rischio tutti gli utenti che lo
usano.
Security by obscurity: Se nessuno sa di un difetto è come se questo non vi
fosse. Secondo loro... Peccato che non si può essere sicuri che nessuno conosca
un certo difetto finché la mole di vandalismi e il danno arrecato da qualche
individuo non lo rende evidente.
Nel 2004 un BUG di MS-SQL permise la propagazione di un worm (una particolare
tipologia di virus) che in meno di 24 ore mise KO tutta la rete informatica
delle poste italiane mandando in crisi tutto il settore per 1 settimana.
Microsoft intervenne tempestivamente con una patch e fu anche lodata per la sua
celerità. Purtroppo però era a conoscenza di quel BUG già da tempo ma non lo
considerava una priorità; fino ad allora nessun cattivo se ne era mai accorto
sfruttandolo in qualche modo. Il danno subito dalle poste italiane si poteva
evitare!
Pag.39 di 65
La portabilità: Linux vanta una portabilità eccezionale, è stato adattato senza
particolari problemi per girare su hardware di ogni genere e natura. Microsoft
ha solo la piattaforma Windows CE usata su molti palmari e GPS. CE non vanta
certo di essere leggero o stabilissimo. Inoltre dal punto di vista di chi
sviluppa le applicazioni è molto più difficile e macchinoso programmare per
Windows CE piuttosto che per Linux embedded. Basti pensare che l'ambiente Linux
e Linux embedded sono praticamente uguali, mentre per programmare su CE è
necessario usare emulatori hardware/software poi le librerie e l'architettura
del sistema sono molto diverse da quella di Windows per PC.
In cosa Windows è migliore di Linux: ...
Supporto di certi hardware particolari.
Ci sono programmi per Windows che non vengono portati anche su Linux oppure non
esistono corrispettivi Open Source: in particolar modo software dedicati o
personalizzati, come gestionali. Software di controllo di certe apparecchiature
o macchinari. Video Games.
Ma per scelta/colpa dei produttori di hardware o software. Linux di per sé non
avrebbe nessun problema a farli funzionare.
Pag.40 di 65
Com'è possibile, da Linux, sopperire alla mancanza
esclusivamente creati per Windows: in vari modi...
di
certi
software
1. Mantenere Windows su di una partizione per avviarlo quando necessario.
2. Usare un wrapper.
3. Se si possiede un PC abbastanza potente si possono usare virtualizzatori.
La prima soluzione è quella più classica, si ritaglia uno spazio per Windows sul
disco fisso del computer e per mezzo di un bootloader sarà possibile scegliere,
all'accensione del PC, quale sistema avviare (Windows o Linux). Non si potrà
godere dei programmi Windows quando si è dentro a Linux e viceversa, rendendo
necessario il riavvio del PC per cambiare SO.
Questo ha il vantaggio di mantenere Windows nativamente sulla macchina,
necessario ad esempio se si deve usare hardware particolare o fruttare le
potenzialità di una scheda grafica per far girare videogames.
Uso di wrapper: I wrapper sono programmi molto
particolari studiati appositamente per creare
un'interfaccia di traduzione tra librerie e
programmi alieni. Sistemi operativi complessi
come
Windows
e
Linux
praticamente
hanno
librerie per fare tutto. Entrambi i sistemi
implementano funzioni equivalenti: è solo il
modo che è diverso. Un wrapper molto famoso
sotto Linux è “Wine”. Wine cerca di imitare
tutte le funzioni di base di un sistema
Windows,
costruendo
così
uno
strato
di
compatibilità verso i suoi file eseguibili.
Quando un programma Windows viene avviato
tramite Wine crede di essere all'interno del
suo ambiente nativo, interfacciandosi con Wine
come se fosse Windows. Wine poi non farà altro
che tradurre le chiamate a funzione dei file
EXE nelle equivalenti chiamate native del
sistema Linux. Il risultato è quello di poter
eseguire
programmi
Windows
su
Linux,
in
maniera diretta.
Il vantaggio di un wrapper è di far girare il minimo indispensabile al
funzionamento dell'applicazione, consumando il minimo indispensabile delle
risorse del computer. L'applicazione aliena può comunicare direttamente con il
sistema che la ospita, riuscendo ad esempio a stampare, ad accedere a file e
directory presenti sul disco Linux.
Lo svantaggio di un wrapper, o meglio di Wine in particolare, è che Microsoft
purtroppo non documenta tutte le funzioni presenti in Windows, o le documenta
male. Molti ambienti di sviluppo sotto Windows permettono di programmare in modo
visuale e i programmi generati a volte finisco per usare funzioni non
documentate la cui esistenza è conosciuta solo da chi ha fatto l'ambiente di
programmazione stesso. Perciò succede che a volte certi programmi Windows
chiamino funzioni fantasma mandando Wine in errore. Gran parte dello sviluppo di
Wine si è svolto per ingegneria inversa, ossia si andava a studiare il
funzionamento delle dll di Windows per poi cercare di imitarlo.
Esiste una versione commerciale di Wine: Cedega. Cedega riesce a far girare
molti videogames per Windows su Linux e la cosa impressionante è che a volte, a
parità di hardware, questi giochi hanno prestazioni migliori su Linux (dentro
questa sorta di emulazione) che non sul loro ambiente nativo.
Il codice di cedega e quello di Linux è talmente ottimizzato da offrire
prestazioni migliori dell'ambiente Windows nativo dove non vi è nessuno strato
frapposto tra programma e sistema. Questo dovrebbe far riflettere.
Pag.41 di 65
Virtualizzatori: I virtualizzatori sono programmi molto complessi nella loro
struttura, che permettono di creare un computer virtuale sul quale far girare
integralmente una copia di un'intero sistema operativo con tutte le sue
applicazioni sopra.
Inizialmente sono nati per sopperire alle problematiche dei wrapper, non
riuscendo mai a simulare perfettamente l'ambiente nativo qualcuno ha pensato di
far girare integralmente il sistema operativo desiderato con dentro le sue
applicazioni. Ovviamente questo processo risulta più esoso di risorse e può
essere realizzato solo se si possiede un computer sufficientemente potente.
I virtualizzatori con il passare degli anni si sono molto raffinati diventando
efficientissimi e molto importanti in parecchi ambienti professionali.
Capita in aziende medio/grandi di avere a che fare, simultaneamente, con diversi
software gestionali o programmi dedicati, provenienti da diverse case software e
con diversi requisiti per poter essere eseguiti. Magari ci si trova di fronte a
un vecchio gestionale contabile che gira ancora su Windows NT, un software di
gestione delle tempistiche di lavorazione che vuole Windows 2003 con MS SQL e un
software per la gestione degli ordini via web che gira su Linux.
Qualche anno fa si sarebbero costruiti 3 server, ognuno con il suo SO e il suo
programma. Tutti e 3 sfruttati però al 25% della loro potenza. Con un grande
spreco di soldi per acquistare l'hardware, di tempo dedicato alla manutenzione,
spazio occupato fisicamente da queste macchine e di energia elettrica per
tenerle in funzione.
Oggi possiamo costruire un'unico server dedicato, con Linux, sul quale far
girare simultaneamente tutti e 3 gli altri sistemi operativi con le loro
relative applicazioni. Sfruttando meglio anche le risorse della macchina a
nostra disposizione.
Un'altro vantaggio della virtualizzazione consiste nel fatto che una macchina
virtuale sta all'interno di uno e più grossi file, contenenti l'immagine del suo
hard disk con tutto il SO, le applicazioni e i dati. E' quindi facile salvare
l'intera installazione. Il virtualizzatore, poi, non mostra alla macchina
virtuale il vero hardware del computer, ma un hardware virtuale standard.
Se noi avessimo un server con Windows 2003 e questo server si rompesse
innanzitutto dovremo sostituirlo, poi reinstallare su di esso appunto Windows
2003, i driver della macchina e tutte le applicazioni che andranno riconfigurate
da zero per poi importare i dati che si sono salvati dal vecchio server rotto.
Questa procedura può essere onerosa di tempo e costringere ad un fermo
prolungato di chi deve lavorare.
Nel caso di un server virtualizzato se l'hardware fisico si rompesse anche qui,
ovviamente, dovremo sostituirlo. Dovremo reinstallare un sistema Linux,
solitamente ridotto ai minimi termini, che sorregge solo il software di
virtualizzazione dopo di che ricopiare semplicemente i backup delle macchine
virtuali. Saranno immediatamente operative! Infatti come detto l'hardware
simulato dal virtualizzatore è sempre uguale, quindi questi server virtualizzati
non si accorgeranno di nulla, anche se l'hardware del nuovo server fosse
completamente diverso da quello precedente.
Solo per chiarezza: se per ipotesi noi avessimo un server con Windows e questo
si rompesse qualcuno potrebbe obbiettare che si può sempre prendere l'harddisk
del vecchio e montarlo sul nuovo, oppure clonare l'installazione del vecchio
server sul nuovo. Purtroppo questa procedura il 99% delle volte fallisce,
soprattutto se l'hardware di destinazione non è identico a quello di partenza.
Windows si avvierà e cercando di caricare sul nuovo server i driver del vecchio
causerà un'immediato blocco del sistema, non c'è nessuna via d'uscita se non
reinstallando interamente Windows sul nuovo hardware.
Pag.42 di 65
Continuando con le peculiarità positive dei virtualizzatori: essi possono
trovate utilità anche in altre situazioni. Potremo aver bisogno di utilizzare
sistemi o software molto vecchi che non funzionano più su PC moderni...
Un cliente dei Laboratori AIDAN, una grossa ditta di lavorazione della lamiera,
ebbe il problema seguente: Si era rotto il computer che controllava un'enorme
macchina per il taglio al plasma. Questo computer funzionava ancora con il DOS e
Windows 3.1 e necessitava di collegarsi in rete con altri PC. I PC moderni ormai
non garantiscono più buona compatibilità verso sistemi così vecchi. Di base non
era forse impossibile recuperare un vecchio PC, era decisamente più difficile
reinstallare il vecchio software e soprattuto far andare la rete su DOS, dovendo
trovare un adattatore ethernet che fornisse driver per farlo. Insomma un vero
problema.
Si risolse usando una virtualizzazione, creando una macchina virtuale partendo
dal clone del disco del vecchio PC.
Un virtualizzatore può dare modo ad una persona di testare e provare tanti
diversi sistemi e programmi senza riformattare in continuazione il proprio PC.
Esistono anche virtualizzatori capaci di simulare hardware non PC che permettono
di far girare ad esempio vecchi sistemi Apple, di simulare un Amiga o un
Commodore 64 anche se spesso sono usati più che altro dagli appassionati dei
vecchi videogame e non per scopi lavorativi.
Nota finale: i virtualizzatori simulano tutto l'hardware, quindi non rendono
possibile per esempio far girare videogame. Il gioco non vedrebbe la vera scheda
grafica 3D del PC ma una generica VGA PCI.
Pag.43 di 65
Hacker e Cracker: 2 termini il cui vero significato è spesso ignorato dalla
stragrande maggioranza delle persone.
Un hacker è una persona che si impegna nell'affrontare sfide intellettuali per
aggirare o superare creativamente le limitazioni che gli vengono imposte, non
limitatamente
ai
suoi
ambiti
d'interesse
(che
di
solito
comprendono
l'informatica o l'ingegneria elettronica), ma in tutti gli aspetti della sua
vita.
I primi ad auto-qualificarsi "computer hacker" nel campus del MIT negli anni '60
traevano origine da un gruppo di studenti appassionati di modellismo
ferroviario, che negli ultimi anni '50 si erano riuniti nel Tech Model Railroad
Club. Una ristretta enclave all'interno di quest'ultimo era il comitato Signals
and Power (segnali ed elettricità) - gli addetti alla gestione del sistema del
circuito elettrico dei trenini del club. Un sistema costituito da un sofisticato
assortimento di relè e interruttori analogo a quello che regolava il sistema
telefonico del campus. Per gestirlo era sufficiente che un membro del gruppo
inviasse semplicemente i vari comandi tramite un telefono collegato al sistema,
osservando poi il comportamento dei trenini.
Dal punto di vista del comitato Signals and Power, usare un relè in meno in un
determinato tratto di binari significava poterlo utilizzare per qualche progetto
futuro. Il termine hacking era sinonimo di un gioco in grado di migliorare le
prestazioni o l'efficienza complessiva del sistema ferroviario del club. I
membri di quel comitato cominciarono a indicare con orgoglio l'attività di
ricostruzione e miglioramento del circuito per il funzionamento delle rotaie con
il termine "hacking", mentre "hacker" erano coloro che si dedicavano a tali
attività.
Considerata la loro affinità per i sistemi elettronici sofisticati non ci volle
molto prima che gli hacker mettessero le mani su una macchina appena arrivata al
campus. Noto come TX-0, si trattava di uno dei primi modelli di computer
lanciati sul mercato. Sul finire degli anni '50, l'intero comitato Signals and
Power era emigrato in massa nella sala di controllo del TX-0, portandosi dietro
lo stesso spirito di gioco creativo. Il vasto reame della programmazione
informatica avrebbe portato a un'ulteriore mutamento etimologico. "To hack" non
indicava più l'attività di saldare circuiti dalle strane sembianze, bensì quella
di comporre programmi, con poco rispetto per quei metodi o procedure usati nella
scrittura del software "ufficiale". Significava inoltre migliorare l'efficienza
e la velocità del software già esistente che tendeva a ingolfare le risorse
della macchina. Ed è qui che successivamente si colloca una diversa radice del
termine hacker, la forma sostantiva del verbo inglese "to hack" che significa
"tagliare", "sfrondare", "sminuzzare", "ridurre", "aprirsi un varco", appunto
fra le righe di codice che istruiscono i programmi software.
Un hacker era quindi uno che riduceva la complessità e la lunghezza del codice
sorgente, con un "hack", appunto, una procedura grossolana ma efficace, che
potrebbe essere tradotta in italiano come "zappata" o "accettata" (tagliata con
l'accetta) o altrimenti con una "furbata". Rimanendo fedele alla sua radice, il
termine indicava anche la realizzazione di programmi aventi l'unico scopo di
divertire o di intrattenere l'utente.
I computer hacker operavano all'interno di una disciplina scientifica basata
sulla collaborazione e sull'aperto riconoscimento dell'innovazione. Non sempre
hacker e ricercatori "ufficiali" andavano a braccetto, ma nella rapida
evoluzione di quell'ambito le due specie di programmatori finirono per impostare
un rapporto basato sulla collaborazione.
Pag.44 di 65
Cracker: In ambito informatico il termine inglese cracker indica colui che si
ingegna per eludere blocchi imposti da qualsiasi software in genere. Il
(cracking) può essere usato per diversi scopi secondari, una volta guadagnato
l'accesso di amministratore nel sistema desiderato o dopo aver rimosso le
limitazioni di un qualsiasi programma.
I cracker possono essere spinti da varie motivazioni, dal guadagno economico
(tipicamente coinvolti in operazioni di spionaggio industriale o in frodi). I
media hanno l'abitudine di definire hacker i cracker, anche se sebbene alcune
tecniche siano simili, i primi hanno scopi sostanzialmente creativi/esplorativi
mentre i secondi possono rivelarsi addirittura distruttivi.
I “Crack” sono piccoli programmi, spesso messi in circolazione da cracker, che
hanno il solo scopo di rimuovere le protezioni di certi programmi. Ad esempio
rimuovere il controllo di autenticità da Windows XP.
Pag.45 di 65
Cosa sono i malware, cosa fanno e perché: Per malware si intende genericamente
“cosa malvagia”. Molte persone usano genericamente il termine “Virus” ma questo
è scorretto, in quanto il Virus è solo una delle tante categorie di malware.
Le categorie di malware sono:
●
●
●
●
●
●
●
●
●
●
●
●
●
Virus
Trojan
Adware
Spyware
Worm
NetBot
SpamBot
Backdoor
Dialer
hijacker
RootKit
Downloader
Email “Phishing”
Tutti questi tipi di malware si differenziano per il modo di funzionare, di
propagarsi e di infettare i PC, mentre spesso le loro finalità ultime sono
sempre le medesime. Iniziamo subito col dire che quella di prendere malware è
una prerogativa di Windows mentre Linux resta sostanzialmente immune a questa
problematica.
Iniziamo con lo sfatare una credenza comune: Molte persone credono che i malware
abbiano lo scopo di “rompere” il PC, e di causare malfunzionamenti di Windows.
In realtà non è così.
Prima analizziamo però il perché esistono i malware; chi li scrive? perché? Ma
non hanno niente di meglio da fare?
Chi scrive e diffonde malware solitamente non sono ragazzini brufolosi e
arrabbiati col mondo, che si divertono a vandalizzare i computer delle povere
persone, ma gruppi organizzati di malavitosi veri e propri. Lo scopo? Fare soldi
ovviamente!
Uno dei canali con cui fare soldi è lo spam. Per spam si intendono quelle
fastidiose email che a volte cominciano ad arrivare nelle caselle di posta delle
persone, pubblicizzando siti porno (nei quali per entrare ovviamente bisogna
pagare), casinò online e gioco d'azzardo in genere, oggetti per finalità
“sessuali”, vendite online di ogni genere come rolex fasulli, medicine
miracolose tra cui il Viagra, pacchetti software contraffatti, etc...
Ovviamente molte persone cestinano direttamente queste email considerandole una
seccatura notevole. Come fare soldi con lo spam allora?
La legge dei grandi numeri dice che più spam mandiamo più cresce la probabilità
di raggiungere qualche “pollo” disposto a comprare o a “cascarci”.
Ci sono spammer che generano fino (o anche oltre) 2 miliardi di email al giorno
che si diffondono nel mondo raggiungendo le caselle di centinaia e centinaia di
milioni di utenti. Se anche la percentuale di persone che cade nella trappola
dello spammer fosse bassa, ipotizziamo un 2%, l'introito derivante dalla vendita
sarebbe notevole. Si stima che ci siano individui (spammer) che guadagnano fino
a 45.000$ al mese. Quasi 4 volte lo stipendio annuo di un operaio comune.
Quindi si!
E' difficile trovare di meglio da fare...
Pag.46 di 65
Perché non arrestano questi individui? E poi cosa centra lo spam con i malware?
Non li arrestano semplicemente perché vivono in paesi senza estradizione, le
forze di polizia internazionale conoscono l'identità di molti di loro, sanno
come si chiamano e dove abitano ma non li arrestano perché il paese dove vivono
non considera illegale la loro attività.
Mentre lo spam con i malware centra tantissimo. Sarebbe impossibile spedire 2
miliardi di email al giorno con 1 solo computer o con un piccolo gruppo di
computer, forse con un'enorme server. In questo caso sarebbe necessaria anche
una linea di connessione internet velocissima. Se anche lo spammer avesse a
disposizione questi mezzi però sarebbe ancora troppo facile filtrare le sue
email. Arrivando tutte da uno specifico indirizzo IP mittente noto è molto
facile applicare filtri in modo che nessuna di esse arrivi a destinazione.
Gli spammer quindi diffondono malware in modo da infettare quanti più computer
possibili, sparsi per tutto il pianeta. Ogni computer infetto viene chiamato
“zombie”, un gruppo di zombie infettati da uno stesso malware viene definito
BotNet (da non confondere con i malware NetBot). Tutti i computer facenti parte
di una BotNet sono pronti a prendere ordini da chi ha scritto il malware o da
chi ha comprato in “affitto” la stessa BotNet per fare il suo comodo.
Quando si ha a disposizione una BotNet molto grande si ordina a tutti i suoi
zombie: “Mandate Spam”...
A questo punto diventa facile mandare i famosi 2 miliardi di email al giorno, e
diventa molto difficile filtrare questo spam in quanto ogni email non è
perfettamente uguale all'altra e perché la provenienza non è mai la stessa.
Mandare spam però non è l'unico modo per fare soldi usando battaglioni di
zombie. Esistono anche altri tipi di speculazioni tra cui potrei citare
l'andamento in borsa di aziende poste sotto attacco. Facciamo un'esempio:
Tutti conoscono Yahoo. Yahoo è un titolo quotato in borsa ovviamente. Anni fa
venne messo in circolazione un malware che aveva lo scopo di diffondersi e
infettare quanti più computer possibili, restando silente fino ad un preciso
giorno. Il giorno che questo malware si svegliò tutti i computer infettati
cominciarono a fare richieste di connessione (apertura dell'home page) verso i
server di Yahoo, in breve tempo questi vennero collassati da una mole di
richieste migliaia di volte superiore alla norma. Dopo circa 12 ore dall'inizio
dell'attacco divenne impossibile, per chiunque, accedere ai servizi di Yahoo in
quanto semplicemente le pagine non si caricavano più. Questo tipo di attacco
viene chiamato DDoS (Distribuited Denial of Service).
A quel punto il valore delle azioni in borsa di Yahoo crollarono e chi “sapeva”
ne approfittò per comprarne quante più poteva. Dopo una settimana il malware era
programmato per disattivarsi automaticamente ristabilendo una situazione di
normale fruibilità dei servizi di Yahoo, le azione in un mese circa
riacquistarono il loro valore originario e chi “sapeva” aveva decuplicato il suo
patrimonio azionario.
BotNet vengono usate anche per effettuare attacchi politici versi siti di
propaganda avversaria; Il regime comunista Cinese usò questo tipo di attacco
verso siti esteri che effettuavano propaganda democratica contro lo stesso
regime.
Ancora; PC infetti possono essere usati, durante azioni di Craking, per
mascherare la vera identità dell'attaccante. Chi viene attaccato “vede” come
attaccante la macchina zombie, e le forze di polizia che indagassero sul caso
arrivati allo zombie, non potrebbero sapere chi lo controllava in quanto lo
zombie non tiene “log”, al contrario di provider e server.
Pag.47 di 65
Ora vediamo brevemente il funzionamento dei vari tipi di malware:
Virus: I virus sono programmi estremamente piccoli che funzionano sfruttando
solitamente BUG del sistema o del software che attaccano per replicarsi e
diffondersi, possono infettare i file eseguibili di altri programmi, supporti
come floppy e il bootsector dei dischi fissi. I Virus erano una categoria di
malware diffusa ai tempi di MS-DOS, solitamente non avevano “fini” se non quello
di replicarsi e di danneggiare il computer che infettavano. Uno dei primi virus
venne scritto e diffuso da Peter Norton a metà degli anni 80, facendo impazzire
aziende e gruppi bancari. Alcuni mesi dopo lo stesso Peter Norton commercializzò
la prima versione di Norton Antivirus. Oggi la categoria dei Virus è quasi
estinta.
Trojan: I trojan sono veri e propri programmi creati per ogni tipo di attività
maligna si possa effettuare all'interno di un computer, prendono il nome dal
loro modo di infettare il computer. Come nella storia mitologica del cavallo di
troia i trojan infettano un computer perché è lo stesso utente a scaricarli e ad
avviarli, inconsapevole della vera natura del file.
Un esempio classico di trojan può essere “il falso sito porno” da cui si scarica
un file exe cliccando sul link “clicca qui per accedere”. Oppure la falsa
finestra di lettore multimediale che chiede l'installazione di un particolare
codec per vedere il filmato della tal ragazza sexy, o il programmino che ti fa
scaricare gratis la suoneria del cellulare con l'ultima canzone di un cantante
famoso.
Ci sono anche casi di trojan che vengono distribuiti sotto forma di veri e
propri programmi antivirus/antispyware/etc gratuiti, e che apparentemente
sembrano anche funzionare.
Moltissimi trojan si trovano mascherati anche da Crack, parecchi siti di
sottobosco distribuiscono crack (si trovano anche su reti di condivisione come
eMule) atti a “piratare” altri programmi commerciali, costosi, bramati da molte
persone.
L'utente è indotto a credere che il file eseguibile del trojan sia di natura
benigna quindi lo apre infettando il proprio PC. I trojan poi per non destare
sospetto a volte fanno anche la funzione che l'utente si aspetta. Altre volte
all'esecuzione lanciano una falsa finestra di errore che viene poi chiusa
dall'utente che si convince che il programma non funziona.
Adware: Dalla parola: “Cose aggiunte”. Gli adware sono programmi dalla dubbia
utilità che vengono installati come aggiunte assieme ad altri programmi, spesso
Freeware (gratis). Alla categoria degli adware fanno parte tutte quelle toolbar
che si aggiungono nel desktop o sul browser Internet Explorer. Programmini per
cercare file o cose sul web, magari pieni di pubblicità. E in genere tutte
quelle che cose extra che vengono installate assieme ad altri programmi e che
con loro non hanno direttamente a che fare.
Si possono distinguere adware “buoni” (o meglio non cattivi) e adware cattivi.
Sono adware buoni quando il programma di setup principale da modo all'utente di
scegliere se installare anche gli ads oppure no. Come Winamp che installa un
collegamento ad un sito da cui acquistare Musica in mp3, oppure CCleaner che
chiede se si vuole installare la toolbar di Yahoo per internet explorer.
Sono cattivi invece quando si installano di nascosto e bisogna disinstallarli a
mano o peggio quando non si riesce più ad eliminarli con le vie convenzionali,
rivelandosi piuttosto invasivi.
Ad esempio l'adware “180solution” si vede nella lista dei programmi installati
nel PC ma se si prova a disinstallarlo causa volontariamente un crash di
Windows. Cancellando a mano la directory dove è installato in realtà non si
elimina completamente il programma in quanto alcune parti restano attive e
funzionanti, che hanno una funzione spyware, sono messe altrove.
Pag.48 di 65
Spyware: Sono programmi che una volta installati nel computer spiano le attività
dell'utente. I meno cattivi violano la privacy raccogliendo dati sulle abitudini
di navigazione dell'utente (su che siti va), o su che programmi usa. I dati poi
vengono solitamente raccolti con il fine di creare pubblicità più mirata che
possa attrarre il maggior numero di persone. Quelli più cattivi potrebbero
rubare l'intera rubrica di posta elettronica, trasmettendo gli indirizzi ad uno
spammer che li inserirà in un database da cui attingere tutti i destinatari a
cui verrà mandato lo spam. Altri spiware più mirati, chiamati anche keylogger,
potrebbero cercare di intercettare la password che digitiamo quando accediamo a
servizi come l'home bancking.
Worm: I worm come i trojan possono avere finalità di ogni tipo ma differiscono
dai trojan nel modo di propagarsi e infettare. Worm significa “verme”. I Worm si
diffondono
all'interno
della
rete
da
computer
a
computer,
fruttando
vulnerabilità del sistema operativo o dei software su di esso installati. Una
macchina infettata da un Worm comincierà segretamente a sondare la rete (che sia
locale o internet non ha importanza) alla ricerca di altri computer con la
stessa vulnerabilità in cui intrufolarsi a sua volta.
Ad esempio vi fu un BUG del firewall di “Norton Internet Security 2006” che
permetteva la propagazione di un worm che, una volta infettata la macchina,
cambiava delle chiavi di registro e corrompeva alcuni file DLL per far si che lo
stesso antivirus apparisse perfettamente funzionante, in realtà nessun malware
veniva più intercettato. Il worm poi, oltre che a propagarsi ulteriormente, si
preoccupava anche di scaricare da internet e installare sul computer una marea
di altri malware assortiti (Downloader).
NetBot: Sono una categoria di malware dedicata alla creazione di BotNet. La
macchina infetta diventa uno zombie che accede ad un canale di chat IRC
preimpostato, creando per l'appunto un “bot”. L'amministratore del canale
(ovviamente chi ha fatto il malware o chi ha comprato la rete di bot), poi potrà
impartire comandi di massa a tutti i bot presenti nel canale di chat
semplicemente scrivendoli nel canale. I NetBot possono essere diffusi con la
tecnica dei trojan e dei worm.
Spambot: uno Spambot è un malware “spara spam”. La macchina infetta spedisce
email di spam in continuazione all'insaputa dell'utente che usa il computer. Gli
Spambot possono diffondersi a braccetto con gli stessi spyware che rubano le
rubriche di posta. Ci sono spambot invece che si spediscono solo alla rubrica di
posta che trovano sul computer locale che hanno infettato e altri spambot che
sono anche NetBot che attendono ordini per mandare email spammatorie ogni volta
diverse in base agli stessi ordini e parametri che ricevono. Anche gli Spambot
si diffondono solitamente con la tecnica dei trojan o dei worm.
Backdoor: “Porta sul di dietro”. Le backdoor sono malware con lo scopo di aprire
porte di accesso nascoste sul computer che hanno infettato. Il computer zombie
in questo caso resta in attesa che qualcuno entri per fare qualcosa. Solitamente
i PC infetti da backdoor vengono usati singolarmente, non in massa, per
effettuare attacchi di Cracking o per lo scambio di
materiale “scottante”
lasciando anonimi e non rintracciabili i veri artefici.
A volte anche normali programmi possono trasformarsi, loro malgrado, in Backdoor
improprie. Ad esempio un BUG di RealVNC (un piccolo programma usato per gestire
teleassistenze) fino alla versione 4.1.1 rendeva possibile, ad un'attaccante
remoto, l'impossessarsi della macchina. Facendo leva su di un BUG era infatti
possibile effettuare un login senza password, dopo di chè si poteva fare sul
computer qualsiasi cosa si volesse. VNC infatti esporta video, mouse e tastiera
del computer su cui è installato, ovviamente non era volontà degli sviluppatori
di VNC permettere ciò.
Pag.49 di 65
Dialer: I dialer sono programmi che una volta infettato il computer abbattono la
connessione internet in corso e riconnettono lo stesso attraverso numeri
internazionali a pagamento (144, 166, 005, etc...). Arricchendo il proprietario
della linea e causando bollette telefoniche salatissime per l'utente. I dialer
spesso si trovano su siti porno, o su siti che distribuiscono loghi e suonerie
per cellulari o di casinò online cui è impossibile accedere se non si è connessi
tramite la connessione creata dallo stesso dialer.
In questo modo l'utente, dopo l'infezione, vedendo che il sito va ed è
accessibile, continuerà ad accedervi, spesso ignaro dei costi a cui andrà
incontro.
Come per gli adware si può differenziare tra dialer buoni e cattivi, quelli
buoni avvertono su cosa stanno per fare e su quelli che sono i costi di accesso
che si andranno a sopportare accedendo a quel sito tramite lo stesso dialer,
inoltre non precluderanno l'utente dall'uso di altre connessione internet
differenti. Quelli cattivi invece faranno tutto di nascosto e spesso
cancelleranno le altre connessioni ad internet già impostate sul sistema, oppure
peggio si maschereranno dietro alle connessioni già esistenti così che l'utente
crederà di accedere ad internet con il solito provider.
Se cancellate e reimpostate le connessioni su di un computer infetto da dialer
cattivo probabilmente non otterrete nulla, il computer continuerà a collegarsi
attraverso il numero a pagamento. Il computer infetto da dialer cattivo tenterà
di collegarsi in continuazione anche se non richiesto espressamente dall'utente.
I dialer solitamente si diffondono solo con la tecnica dei trojan.
I dialer funzionano solo se la connessione ad internet viene effettuata
attraverso modem analogici o ISDN. La connessione ADSL non avviene componendo un
numero di telefono, quindi non c'è il rischio di incappare in costi telefonici
inaspettati. In ogni caso anche chi si connette attraverso ADSL può risentire
della presenza del dialer, spesso si hanno difficoltà di connessione o navigando
si viene sempre reindirizzati sulla pagina che vuole il dialer.
Hijacker: Un hijacker è un particolare malware, che come i vecchi Virus, infetta
file eseguibili di altri programmi o di sistema, rendendo molto difficile
individuarli e/o rimuoverli. Lo scopo ultimo di un hijacker può essere
qualunque. Solitamente si diffondono con la tecnica dei Trojan.
RootKit: Per RootKit si intende una particolare tecnica di occultamento che può
essere usata per nascondere un qualsiasi tipo di malware. Le tecniche usate dai
RootKit fruttano lacune architetturali e BUG del sistema operativo per
nascondere la presenza del processo maligno e anche gli stessi file del malware
agli occhi dell'utente o alle scansioni di programmi antivirus. I RootKit si
diffondono con la tecnica dei Trojan solitamente, anche se vi sono casi di
diffusione come Worm.
Downloader: I downloader sono un ceppo di Trojan il cui unico scopo è quello di
cercare di disattivare le protezioni antivirus presenti sul computer e poi
scaricare malware assortiti. I Downloader a volte possono essere anche NetBot e
scaricare e installare sul computer altri malware a discrezione del padrone
della BotNet.
Email “Phishing”, permettetemi di usare un termine non proprio italianamente
corretto ma che rende l'idea: “Andare a Pesci”. Sono email confezionate apposta
per cercare di indurre “il pesce ad abboccare”. Usando tecniche di ingegneria
sociale cercano di far credere all'utente di provenire da mittenti fidati.
Spedendosi da un computer infetto verso gli indirizzi trovati nella sua stessa
rubrica, sono uno dei vicoli di diffusione dei Trojan, in quanto chi riceve
l'email la vede arrivare da un mittente conosciuto, di cui si fida e quindi più
facilmente “abboccherà” alla trappola, aprendo eventuali allegati e infettandosi
a sua volta.
Pag.50 di 65
Inoltre le email phishing spesso cercano di far credere all'utente di provenire
da mittenti importanti come gruppi bancari che chiedono di effettuare un login
sul conto corrente online, per andare a visualizzare un pagamento ricevuto da
qualcuno, una vincita in denaro o semplicemente per cambiare le password perché
qualcuno ha tentato troppe volte di forzare l'accesso.
Queste email spesso sembrano arrivare realmente dalla banca di cui riproducono
anche la grafica e i loghi al loro interno. Se il ricevente ha effettivamente un
conto su quella banca, ed è abbastanza “boccalone” può cadere nella trappola.
Aprendo i link contenuti in queste email si verrà indirizzati verso una pagina
che riproduce la grafica del sito della banca, ma inserendo ID e Password in
essi si regalerà l'accesso del proprio conto corrente ad uno sconosciuto.
E' importante sottolineare che in questo caso nulla va a infettare il PC, non si
sfrutta una vulnerabilità di Windows o di qualche altro sistema o programma, ma
si frutta la vulnerabilità della stessa mente di una persona.
Le email di phishing spesso vengono spedite da zombie affetti da spambot.
Vediamo un piccolo esempio di phishing:
In questo caso l'email e' stata marchiata come [SPAM] dai filtri dello stesso server di posta.
Si notano evidenti errori linguistici, segno che lo spammer non conosce bene la
nostra lingua “Se pensate che sia qualcosa male”. Soffermandosi poi sul link è
possibile vedere che l'URL a cui punta è: http://moonrise.msk.ru/...
Pag.51 di 65
Aprendo il link nel browser si osserva questa pagina
Pag.52 di 65
Come si difende Windows dai malware: è sempre importante mantenere aggiornato il
sistema,
avere
un'antivirus
decente,
un'antiadware,
un'antispyware,
un'antirootkit, un firewall software (il firewall perimetrale che sta dentro ad
un'eventuale router da solo non basta) o un pacchetto che contenga tutte queste
protezioni. Bisogna mantenere aggiornati i programmi di protezione a fare spesso
scansioni del sistema per accertarsi che sia pulito.
Bisogna cambiare certe configurazioni insicure adottate da Windows,
l'occultamento dei file nascosti, di sistema e delle estensioni dei file.
come
Ad esempio una tecnica Trojan consiste nello sfruttare il fatto che di default i
sistemi Windows nascondono l'estensione dei file. Si potrebbe incappare in un
file avente un nome simile: BellaBionda.jpg.exe
Windows
nasconderà
l'estensione
del
file,
a
monitor
si
vedrà
solo
“BellaBionda.jpg”, all'interno del file exe verrà integrata l'icona tipica dei
file jpg e quasi sicuramente l'utente crederà che quel file è una foto e lo
cliccherà mandandolo in esecuzione e infettando la macchina.
Bisogna stare attenti a dove si naviga a cosa si clicca e a cosa si scarica e si
installa o esegue e a quello che si riceve per posta. Microsoft tanti anni fa
per contrastare la tecnologia Java creò quelli che si chiamano VBScript e
Activex. Queste 2 tecnologie come Java permettono di inserire all'interno di una
pagina WEB veri e propri programmi che possono essere molto utili per superare
alcune limitazioni della tecnologia html o creare pagine molto più interattive.
Il problema è che Java funziona come una macchina virtuale blindata all'interno
di un ambiente isolato dal resto del sistema mentre ActiveX e VBScript sono veri
e propri programmi eseguibili da Windows che sostanzialmente hanno potere
illimitato (questa è stata una pessima scelta effettuata da Microsoft). Quindi
per essere infettati basta aprire la pagina sbagliata usando un browser che
supporta VBScript e ActiveX (solo Internet explorer supporta queste tecnologie
per fortuna).
Per finire, le protezioni sotto Windows non sono mai sicure al 100%, essendo una
lotta continua tra venditori di antivirus e chi scrive malware non si può mai
avere la sicurezza che tutto venga bloccato sempre e comunque.
Soprattutto su computer di utenti con pessime abitudini di navigazioni, o troppo
sicuri di essere invulnerabili, si possono osservare infezioni, anche se tutte
le protezioni sono presenti, aggiornate e le scansioni antivirus non riportano
nulla.
Pag.53 di 65
Perché Linux non è soggetto a malware: Molti utenti sono convinti che non
esistano malware per Linux solo perché non è diffuso quanto Windows e se Linux
si diffondesse molto allora comincerebbe ad essere bersagliato come lo è
Windows.
In realtà, come sempre, le cose sono molto più complesse di come la gente le
vede.
Proviamo ad immaginare il mondo dell'informatica come un'ecosistema composto da
tante forme di vita differenti. Nulla è perfetto, ne Windows ne Linux così come
non esistono organismi perfetti ed invulnerabili.
Windows è un sistema che non si evolve, o meglio si evolve aggiungendo sempre
nuovi strati software, nei quali sicuramente si celano nuovi BUG, sopra ad altri
strati software vecchi nei quali continuano a sopravvivere vecchi BUG
conosciuti. Windows non abbandona mai ciò che è diventato obsoleto e resta
sempre compatibile con molte versioni precedenti. Windows tende ad essere un
monoblocco, integrando sempre gli stessi programmi e le stesse librerie che non
è possibile rimuovere se non si desidera usarle.
Tutti i Windows sono uguali. Per questo motivo è possibile immaginare Windows
come “un'organismo” obeso e goffo, con un sacco di organi praticamente inutili,
molto fragile e malaticcio. Assolutamente non biodiversificato.
Trovata una vulnerabilità su 1 qualsiasi PC Windows e fatto un malware capace di
sfruttarla si ha la potenzialità di infettare tutti i computer del mondo che
usano Windows. Oltre ai BUG su Windows, a favorire malware, ci sono anche scelte
di architettura sbagliate nel concetto di fondo, che permettono di provocare
danni al sistema senza sfruttare nessun BUG in particolare (come con i trojan,
dialer e altri) ma solo la normale struttura del sistema.
Ad esempio su Windows un file è eseguibile solo perché la sua estensione è exe e
per eseguire un file exe è sufficiente un doppio click (ma esistono una marea di
cose che rendono insicuro Windows, questa è solo una), solitamente su Windows un
programma avviato poi ha accesso illimitato al sistema, perché quasi sicuramente
lo stesso utente lo sta usando con diritti amministrativi.
Su Windows (solo NT/2000/XP) sarebbe anche possibile creare e usare utenti con
diritti ristretti ma l'incuria di tantissimi sviluppatori, o l'obsolescenza di
certi programmi fanno si che siano rari i programmi che riescono a girare se
l'utente che li lancia ha diritti limitati. Costringendo gli utenti a lavorare
come Administrator, sempre e comunque. Poi è capitato anche che BUG del sistema
permettessero a programmi avviati da utenti con accesso limitato riuscissero
comunque ad ottenere privilegi amministrativi.
Su Windows Vista finalmente Microsft ha imposto che l'utente sia utente, ma poi
un programma che richiede espressamente privilegi amministrativi provoca
l'apertura di una finestra di domanda, dove Vista chiede se si vuole concedere
al programma tali diritti... Ovviamente la maggioranza degli utenti cliccheranno
“SI” senza sapere nemmeno cosa voglia dire, spinti dal fatto “se dico no poi non
va il programma”, ma se il programma fosse un malware?
Pag.54 di 65
Linux invece è un sistema che si evolve realmente, eliminando veramente i BUG
quando vengono scovati, eliminando le cose quando diventano obsolete. Inoltre
subisce aggiornamenti costanti di tutte le sue componenti; si può dire che nel
giro di 1 anno ogni libreria e programma di Linux non sia più perfettamente
uguale a prima. Inoltre vi sono anche le varianti e le personalizzazioni
introdotte dalle diverse distribuzioni che potrebbero compilare certe librerie o
programmi con opzioni diverse.
Questa situazione fa si che Linux sia un sistema leggero e agile, molto modulare
dove è possibile installare solo quello che serve. Questo non significa che
Linux sia perfetto o esente da BUG. Però sicuramente Linux ha molti (ma molti!)
meno BUG di Windows, inoltre la “biodiversificazione” cui è soggetto fa si che
un BUG sfruttabile per un attacco o per diffondere un malware sia disponibile
solo su una cerchia molto limitata di computer e per un tempo piuttosto
limitato, tanto da rendere poco vulnerabile la piattaforma anche se fosse molto
diffusa.
Ad esempio nell'anno 2002 venne scoperto un piccolo Worm capace di diffondersi
tra Server Linux (e Linux è molto usato per fare server aziendali, web e di
posta). Questo Worm però riusciva a infettare le macchine:
●
●
●
●
●
●
SOLO SE era installata RedHat 6.2 come distribuzione.
SOLO SE era attivo un determinato servizio vulnerabile (ssh).
SOLO SE questo servizio era esposto a internet.
SOLO SE su questo servizio era attiva una certa opzione.
SOLO SE nel sistema era installato ANCHE un'altro certo programma (gcc).
SOLO SE il sistema era installato di default dal CD e non erano stati
fatti ancora gli aggiornamenti che chiudevano la falla e che erano usciti
48 ore dopo il rilascio delle stessa iso del suddetto CD.
Questo worm infettò meno di 600 macchine e circolò per meno di un mese
provocando danni irrilevanti. Al contrario delle pandemie che colpiscono
soventemente Windows (cito: ILOVEYOU, Sasser, Zotob e tanti altri) che colpirono
milioni di PC provocando danni incalcolabili in tutto il mondo e circolando per
parecchio tempo. Si stima ad esempio che il virus Brain.A ha circolato dal 1986
fino a circa il 1995. Sono centinaia di migliaia i Malware conosciuti per
Windows, e molte centinaia i nuovi malware che nascono ogni mese.
Microsoft nell'estate del 2007 ha dichiarato che almeno il 60% dei PC Windows
del pianeta è infetto da qualche forma di malware.
Mentre mettendo assieme tutte le piattaforme UNIX, Linux e Machintosh
dall'inizio dell'era informatica ad oggi si possono contare solo alcune decine
di malware che ormai non sono più in circolazione da anni, ne sono in grado di
infettare i sistemi attuali. E quando lo erano non hanno mai provocato danni
degni di nota.
I sistemi Linux oltre alla “biodiversificazione” godono anche di un'architettura
molto migliore (derivando da UNIX), nella quale non sono mai stati fatti
compromessi a discapito della sicurezza/prestazioni.
Confrontiamo con Windows la questione dei file eseguibili: Sotto Linux un file
non è eseguibile perché possiede una determinata estensione, anzi sotto Linux i
file eseguibili solitamente sono privi di estensione.
Un file è eseguibile solo se su di esso è stato impostato attributo di
eseguibilità. Gli attributi sono dati salvati nel filesystem locale e non dentro
al file, dovrà essere l'utente o l'amministratore del computer a decidere se
dare a un certo file questo attributo. Cioè un file eseguibile scaricato da
internet non è eseguibile finché l'utente non gli permette di esserlo.
Pag.55 di 65
Vediamo questo screenshot dei permessi su di un file in Linux
Inoltre su Linux gli utenti lavorano normalmente come utenti e non come
amministratori. Su Linux tutti i programmi funzionano in questa condizione senza
problemi, anzi: Su Linux alcuni programmi si rifiutano di funzionare se li
avviate come super-utenti (il contrario di quello che succede su Windows).
Linux è un sistema che da sempre è multiutente, la multi utenza è gestita a
livello del Kernel. Windows invece non è sempre stato multiutente, quindi per
compatibilità la gestione della multi utenza non è gestita a livello del Kernel
ma da strati software superiori, molto più facili da raggirare.
Su Linux un processo avviato da un utente non può avere privilegi maggiori di
quelli dell'utente che lo ha avviato.
Un processo avviato da un utente non può “richiedere” privilegi superiori.
Su Linux un processo “figlio” avviato da un'altro processo “padre” non può avere
privilegi superiori a quelli del padre.
Su Linux un utente può leggere e scrivere solo all'interno della sua home,
quindi un programma avviato da un utente non può intaccare in nessun modo i file
all'esterno di questa.
Ipotizzando una pagina WEB confezionata apposta: non è possibile forzare tramite
script di qualche natura un browser a scaricare silentemente un file binario e
ad eseguirlo. Il browser è avviato anch'esso con diritti limitati e non ha
accesso alle api di sistema che gli permettono di impostare l'attributo di
eseguibilità su di un file (mentre internet explorer è stato concepito per
permettere addirittura l'esecuzione di binari all'interno della pagina).
Deve essere l'utente ad eseguire particolari procedure, non proprio immediate o
in punta di mouse, per eseguire un file come amministratore.
Pag.56 di 65
Su Linux poi l'installazione e la disinstallazione del software avviene in un
modo estremamente diverso da Windows. Linux usa la tecnica dei “repository”.
I repository sono grandi archivi di software precompilato per una certa
distribuzione. I repository sono gestiti da persone altamente qualificate che
dettano e impongono le regole. Le persone che entrano a far parte dell'organico
di un repository, pacchettizzando programmi, devono dimostrare di essere capaci
e affidabili, e conquistare la fiducia degli amministratori prima che gli sia
permesso di inserire pacchetti. Su un repository ogni utente mantiene aggiornati
i propri pacchetti e non può andare a toccare pacchetti gestiti da altri se non
sotto esplicita autorizzazione.
Chiunque può segnalare un problema su di un pacchetto (come una errata
compilazione o anche una manomissione), quindi è molto difficile che qualche
furbo la faccia franca.
Su Linux l'installazione/disinstallazione dei pacchetti avviene attraverso il
package manager, che va ad attingere a questi repository, quindi il software
installato è sicuro.
Non è abitudine degli utenti Linux scaricare solitari pacchetti o eseguibili da
siti trovati con i motori di ricerca, per poi installarli sul proprio sistema.
Abitudine comune invece di chi usa Windows, sul quale la possibilità di
incappare in sorprese è estremamente superiore.
Curiosità: usando wrapper come Wine è possibile che alcuni malware per Windows
riescano a girare, però rimarranno imbottigliati all'interno della home
dell'utente che li ha avviati. Il malware non riuscirà ad intaccare il sistema,
verrà terminato con il logout dell'utente e non riuscirà ad avviarsi
automaticamente al nuovo login. Per pulirlo basterà solo cancellare la directory
di lavoro di Wine all'interno della home dell'utente. La directory di lavoro
sarà poi ricreata automaticamente all'avvio successivo di Wine. Il funzionamento
risulta solo temporaneo, per la durata della sessione.
Wine solitamente non è nemmeno installato di default, in ogni caso deve sempre
essere l'utente ad avviare espressamente un file.
Pag.57 di 65
A quali attacchi è soggetto Linux: Come abbiamo visto Linux non è vulnerabile
come Windows a malware. è praticamente impossibile che la normale attività di un
utente possa scatenare problemi, anche se l'utente va liberamente in siti di
ogni genere e natura, cliccando e aprendo ogni cosa che gli capita. Linux non si
infetterà mai, regalando a chi lo usa un grande senso di tranquillità.
Una macchina desktop standard, quando ha attivo il suo firewall o è dietro a
router è praticamente inattaccabile.
Un sistema Linux può diventare vulnerabile se è un Server che espone servizi
verso internet, o comunque una macchina casalinga in cui l'utente ha installato
e attivato verso internet servizi tipicamente Server.
Ad esempio server ssh, ftp, web, posta, etc...
In questo caso non è proprio Linux ad essere attaccabile ma i servizi che espone
su internet o i programmi che fa girare (come capita alcune volte anche su
Windows).
Facciamo un esempio: Anni fa avevo una macchinetta che tenevo a casa, collegata
ad internet in adsl su cui era attivo il servizio apache (server WEB) su cui
avevo installato phpBB GoldEdition 2.0.4. PhpBB è software php per creare
piccoli forum.
Un giorno venne scoperta una vulnerabilità di phpBB 2.0.4 che permetteva,
tramite l'invio di determinati URL al server che ospitava il forum, di eseguire
istruzioni arbitrarie in linguaggio PHP.
Meno di 3 giorni dopo la scoperta del BUG era già disponibile un'update che lo
correggeva, però io in quel periodo avevo poco tempo da dedicare alle attività
non lavorative e trascurai per almeno 1 mese questo piccolo server. Qualcuno ne
approfittò per sfruttare questa vulnerabilità di phpBB per “forare” la macchina.
In sostanza tramite l'esecuzione arbitraria di codice php erano riusciti a fare
upload di un file eseguibile Linux, costruito per l'occasione, renderlo
eseguibile e poi avviarlo. Questo programmino era un NetBot.
Dovetti salvare i dati e riformattare la macchina, non potevo avere la sicurezza
che in mezzo a migliaia di file non fosse stato nascosto anche altro.
Il punto è che la vulnerabilità non era intrinseca a Linux ma di un software che
vi era stato fatto girare sopra, esposto al WEB. E l'attacco era stato eseguito
esplicitamente da 1 persona intenzionata proprio a forare quel server.
Anche un server WEB basato su Windows (oltre tutte gli altri problemi di
sicurezza cui soffre Windows) è suscettibile di questo tipo di attacchi. Se si
fosse installato phpBB su un server WEB Windows la sua falla avrebbe provocato
le stesse insicurezze, però magari con Windows poteva essere lanciato un malware
qualsiasi non un programma compilato apposta.
Ma difendersi da questi attacchi non è una cosa difficile, non servono antivirus
e altre cose simili. Basta mantenere aggiornato il software.
Nel mondo Open Source nessuno ti tiene allo scuro di una falla conosciuta, ed i
tempi di correzione di falle gravi come queste sono sempre molto corti,
raramente passano più di 48 ore. Mentre come già sappiamo la politica di chi
sviluppa closed è tenere segrete le cose, magari più impegnative da correggere,
ed intervenire solo quando è evidente che qualcuno conosce la falla e ha già
fatto una gran mole di danni.
Se avessi aggiornato phpBB non sarebbe capitato nulla.
Pag.58 di 65
Curiosità su Linux
Com'è nato il logo di Linux?
La mascotte di Linux che vedete qui sopra si chiama TUX, significa “Torvalds
UniX”
La nascita di questa mascotte risale al 1996 quando uscì la versione 2.0 di
Linux. Erano settimane che Linus si arrovellava per ideare un logo da associare
al suo sistema operativo.
Un weekend Linus sua moglie e le 2 figlie andarono allo Zoo, giunti in
prossimità del recinto con i pinguini Linus infilò un dito nella rete,
agitandolo, per cercare di destare l'attenzione di uno di essi e farlo
avvicinare così che le sue figlie potessero vederlo più da vicino. Un pinguino
si avvicinò al dito di Linus e gli diede una bella beccata.
Durante il ritorno in auto la moglie di Linus gli disse: “Perché non usi un
pinguino come mascotte di Linux?”
Venne indetto su internet un concorso, i partecipanti dovevano disegnare il
pinguino che sarebbe diventata la mascotte di Linux. Il vincitore fu Larry Ewing
con il suo pinguino paffuto e dall'aria contenta, il logo venne disegnato usando
il programma di elaborazione grafica open source GIMP.
Secondo Jeff Ayers, Linus Torvalds ha una "fissazione per gli uccelli acquatici
grassi e che non volano". Inoltre Torvalds afferma di avere contratto la
"pinguinite" dopo essere stato gentilmente mordicchiato da un pinguino: "La
pinguinite ti tiene sveglio la notte a pensare ai pinguini e ti fa provare un
grande senso di affetto verso di loro." Torvalds stava cercando qualcosa di
divertente e simpatico da associare a Linux e un pinguino un po' grasso che si
siede dopo un pranzo abbondante ed una buona pinta di birra rispondeva
perfettamente all'idea. Da notare i piedi arancioni che lo fanno somigliare ad
un'anatra.
Pag.59 di 65
Licenze a riconoscimenti
Questo testo è stato scritto da:
●
●
●
●
●
●
●
●
●
Laboratori AIDAN di Mirko Guandalini
Via C.Colombo n°5
Sozzigalli di Soliera
Modena
Cap: 41019
Tel: 059/563227
Fax: 059/853091
Web: http://www.aidan.it
Email: [email protected]
In collaborazione con: http://www.openlinux.eu
Alcune parti di testo o definizioni sono tratte da fonti esterne e verranno qui
sotto elencate:
●
●
●
●
●
●
●
●
Pagina 5, “Cos'è un sistema operativo”, frammento di testo preso da:
http://it.wikipedia.org/wiki/Sistema_operativo
Pagina 12, “Cos'è uno standard”, frammento di testo preso da:
http://it.wikipedia.org/wiki/Standard_(informatica)
Pagina 12/13, “Standard veri e standard falsi”, testo parzialmente
rielaborato e tratto da un'articolo apparso su http://www.geekplace.org
Pagina 14/15/16/17 Rielaborazione del testo tratto da:
http://it.wikipedia.org/wiki/Open_source
Pagina 24/25/26 Rielaborazione del testo tratto da:
http://it.wikipedia.org/wiki/Kernel
Pagina 33 Testo tratto da http://www.openlinux.eu/content/view/169/58/
Pagina 45, cos'è un hacker: Rielaborazione del testo tratto da:
http://it.wikipedia.org/wiki/Hacker
Pagina 46, cos'è un craker definizione tratta ma rielaborata da:
http://it.wikipedia.org/wiki/Cracker
Pag.60 di 65
Questo testo è distribuito sotto licenza FDL
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful 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, in any medium, that contains a notice placed by
the copyright holder saying it can be distributed under the terms of this License. Such a notice
grants a world-wide, royalty-free license, unlimited in duration, to use that work under the
conditions stated herein. The "Document", below, refers to any such manual or work. Any member of
the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or
distribute the work in a way requiring permission under copyright law.
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. (Thus, 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. If
a section does not fit the above definition of Secondary then it is not allowed to be designated as
Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any
Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A Front-Cover
Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose
specification is available to the general public, that is suitable for revising the document
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, or absence of markup,
has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An
image format is not Transparent if used for any substantial amount of text. 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 standardconforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent
image formats include PNG, XCF and JPG. Opaque formats include 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, PostScript or PDF 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
Pag.61 di 65
prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ
or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ
stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications",
"Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the
Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License
applies to the Document. These Warranty Disclaimers are considered to be included by reference in
this License, but only as regards disclaiming warranties: any other implication that these Warranty
Disclaimers may have is void and has no effect on the meaning of this License.
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 (or copies in media that commonly have printed covers) 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 computer-network location from which the general network-using public has access to
download using public-standard network protocols a complete Transparent copy of the Document, free
of added material. 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 fewer than five), unless
they release you from this requirement.
* 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.
Pag.62 di 65
* H. Include an unaltered copy of this License.
* I. Preserve the section Entitled "History", Preserve 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. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the
section, 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 to be Entitled "Endorsements" or to conflict in title
with any Invariant Section.
* O. Preserve any Warranty Disclaimers.
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, and that you preserve all their
Warranty Disclaimers.
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, is called an "aggregate" if the
copyright resulting from the compilation is not used to limit the legal rights of the compilation's
users beyond what the individual works permit. When the Document is included in an aggregate, this
Pag.63 di 65
License does not apply to the other works in the aggregate which 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 half of the entire aggregate, the Document's Cover Texts may be placed
on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if
the Document is in electronic form. Otherwise they must appear on printed covers that bracket 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, and all the license notices in the Document, and any Warranty
Disclaimers, provided that you also include the original English version of this License and the
original versions of those notices and disclaimers. In case of a disagreement between the
translation and the original version of this License or a notice or disclaimer, the original version
will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the
requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual
title.
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.
How to use this License for your documents
To use this License in a document you have written, include a copy of the License in the document
and put the following copyright and license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts."
line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples
in parallel under your choice of free software license, such as the GNU General Public License, to
permit their use in free software.
Pag.64 di 65
Pag.65 di 65