Info Linux

823
Informatica e GNU/Linux - 2006.7.29 - Daniele Masini 29 luglio 2006

Transcript of Info Linux

  • Informatica e GNU/Linux

    - 2006.7.29 -

    Daniele Masini

    29 luglio 2006

  • ii

    Titolo originale dellopera: Informatica e GNU/Linux

    Versione 2006.7.29 del 29 luglio 2006

    Numero totale di pagine: 823

    Autore: Daniele Masini

    Questo documento e` reperibile da http://vandali.org/DanieleMasini/infolinux.php

    Copyright c 2003-2006 Daniele Masini.E` permesso copiare, distribuire e/o modificare questopera seguendo i termini della Licenza

    per Documentazione Libera GNU, Versione 1.2 o ogni versione successiva pubblicata dalla Free

    Software Foundation; con le sezioni non modificabili intitolate Prefazione (eccetto le sottose-

    zioni in essa contenute), GNU General Public License e GNU Free Documentation License,

    con nessun testo di fronte copertina, e con nessun testo di retro copertina. Una copia della

    licenza e` acclusa nella sezione C.1 intitolata GNU Free Documentation License.

    In caso di modifica e/o di riutilizzo parziale della presente opera, secondo i termini della licenza,

    le annotazioni riferite a queste modifiche ed i riferimenti allopera originale, devono risultare

    evidenti e apportati secondo modalita` appropriate alle caratteristiche dellopera stessa. IN

    NESSUN CASO E` COMUNQUE CONSENTITA LA MODIFICA DI QUANTO, IN MODO

    EVIDENTE, ESPRIME IL PENSIERO O LOPINIONE DELLAUTORE.

    Questopera e` stata realizzata nella speranza che possa risultare utile, ma SENZA ALCU-

    NA GARANZIA ESPRESSA O IMPLICITA. Sebbene le informazioni siano state riportate in

    maniera tale da cercare di assicurarne quanto piu` possibile la correttezza e laccuratezza, lau-

    tore non si assume nessuna responsabilita` per qualsiasi errore o danneggiamento del sistema

    che possa derivare in maniera diretta o meno dallutilizzo delle informazioni in essa contenute.

    Tutti i nomi di aziende, prodotti ed i relativi marchi, nonche eventuali loghi riportati nella

    presente opera, appartengono ai legittimi proprietari.

    Queste condizioni e questo copyright si applicano allopera nel suo complesso, salvo ove espres-

    samente indicato in modo diverso.

    Copyright c 2003-2006 Daniele Masini.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 the Invariant Sections being entitled Prefazione (except the sub-

    sections contained), GNU General Public License and GNU Free Documentation License

    and with no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in

    the section C.1 entitled GNU Free Documentation License.

    If you modify this work and/or reuse it partially, under the terms of the license, the notices

    about these changes and the references about the original work, must be evidenced confor-

    ming to the work characteristics. IN NO EVENT IS ALLOWED TO MODIFY WHAT ARE

    CLEARLY THE THOUGHTS, THE OPINIONS AND/OR THE FEELINGS OF THE AU-

    THOR.

    This work is distributed hoping that it will be useful but WITHOUT ANY EXPLICIT NOR

    IMPLICIT WARRANTY. Even if information were reported keeping attention to their cor-

    rectness and accuracy, the author does not assume any responsibility about any error or system

    damage that could be caused by using the information contained in this work.

    All Company names, Product names and related Trademarks and Logos contained in this work,

    belong to their legitimate owners.

    These conditions and this copyright apply to the whole work, except where clearly stated

    in a different way.

  • iii

    ad Eugenia

  • iv

  • Indice

    Prefazione xiGNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiOrganizzazione del testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvConvenzioni tipografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiCronologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiRingraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxLautore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx

    I Il sistema 1

    1 Introduzione 31.1 Il computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Il sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 La rappresentazione delle informazioni . . . . . . . . . . . . . . . . . 4

    1.3.1 I sistemi di numerazione . . . . . . . . . . . . . . . . . . . . . . 51.3.2 Bit, byte, nibble, word . . . . . . . . . . . . . . . . . . . . . . . 121.3.3 Laritmetica binaria . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.4 La logica binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3.5 LASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.3.6 ISO 8859-X, Unicode e UTF-8 . . . . . . . . . . . . . . . . . . . 17

    1.4 La memorizzazione delle informazioni . . . . . . . . . . . . . . . . . . 181.5 Gli utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.6 Linterfaccia utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.7 Lhardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    1.7.1 La motherboard . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.7.2 La CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.7.3 La memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.7.4 Le periferiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.7.5 I bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.7.6 I controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    1.8 I dischi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.8.1 CHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.8.2 LBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.8.3 I dischi ottici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.8.4 Le partizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.8.5 Il caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.8.6 Impostazioni dei dischi . . . . . . . . . . . . . . . . . . . . . . . 38

    1.9 Il filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411.10 Il layout della tastiera . . . . . . . . . . . . . . . . . . . . . . . . . . 421.11 Il software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    1.11.1 Il kernel ed i processi . . . . . . . . . . . . . . . . . . . . . . . . 431.11.2 Compilatore ed interprete . . . . . . . . . . . . . . . . . . . . . 441.11.3 Input, output ed exit status . . . . . . . . . . . . . . . . . . . . 441.11.4 Le versioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    v

  • vi INDICE

    1.12 La notifica degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . 451.13 Le reti di computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461.14 Le distribuzioni di GNU/Linux . . . . . . . . . . . . . . . . . . . . . 461.15 Linstallazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481.16 I pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.17 Reperibilita` della documentazione . . . . . . . . . . . . . . . . . . . . 501.18 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    2 Avvio ed arresto del sistema 552.1 Il boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    2.1.1 Il boot loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572.1.2 Il MBR - Master Boot Record . . . . . . . . . . . . . . . . . . . 572.1.3 Il boot da dischetto . . . . . . . . . . . . . . . . . . . . . . . . . 652.1.4 LOADLIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.1.5 SYSLINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672.1.6 GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.1.7 LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742.1.8 initrd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    2.2 Parametri di avvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802.3 Avvio del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.4 I file di configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . 862.5 I runlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902.6 I terminali virtuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912.7 I daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    2.7.1 Il comando service . . . . . . . . . . . . . . . . . . . . . . . . . 972.7.2 inetd e xinetd . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    2.8 Accesso al sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092.8.1 Accesso da interfaccia carattere . . . . . . . . . . . . . . . . . . 1092.8.2 Accesso da interfaccia grafica . . . . . . . . . . . . . . . . . . . . 110

    2.9 Arresto del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112.10 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    3 La shell ed i job 1133.1 La tastiera e linterfaccia a caratteri . . . . . . . . . . . . . . . . . . . 1133.2 La shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163.3 Le varie shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193.4 Bash - Bourne Again Shell . . . . . . . . . . . . . . . . . . . . . . . . 119

    3.4.1 Il prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213.4.2 Command line editing . . . . . . . . . . . . . . . . . . . . . . . . 1223.4.3 Caratteri particolari . . . . . . . . . . . . . . . . . . . . . . . . . 1223.4.4 Lambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223.4.5 Name completion . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.4.6 Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273.4.7 Command history . . . . . . . . . . . . . . . . . . . . . . . . . . 1283.4.8 Comandi interni ed esterni . . . . . . . . . . . . . . . . . . . . . 1283.4.9 Gestione dei metacaratteri . . . . . . . . . . . . . . . . . . . . . 1303.4.10 Scripting language . . . . . . . . . . . . . . . . . . . . . . . . . . 1323.4.11 Impostazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1383.4.12 La redirezione dei comandi . . . . . . . . . . . . . . . . . . . . . 1393.4.13 Job management . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    3.5 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

  • INDICE vii

    4 Il filesystem 1434.1 I dispositivi di memoria di massa . . . . . . . . . . . . . . . . . . . . 1434.2 Partizionamento del disco . . . . . . . . . . . . . . . . . . . . . . . . 1444.3 I file di dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1444.4 Inizializzazione del filesystem . . . . . . . . . . . . . . . . . . . . . . 1454.5 La struttura del filesystem . . . . . . . . . . . . . . . . . . . . . . . . 147

    4.5.1 La struttura logica . . . . . . . . . . . . . . . . . . . . . . . . . 1494.5.2 La struttura fisica . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    4.6 Il filesystem ext2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1534.6.1 Struttura di base . . . . . . . . . . . . . . . . . . . . . . . . . . 1534.6.2 I file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1564.6.3 I tipi di file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604.6.4 I formati dei file . . . . . . . . . . . . . . . . . . . . . . . . . . . 1684.6.5 I permessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1714.6.6 Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    4.7 Journaled filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . 1804.7.1 ext3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

    4.8 Il VFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1834.9 mount e umount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1864.10 Filesystem allinterno di un file . . . . . . . . . . . . . . . . . . . . . 1904.11 La tabella dei filesystem /etc/fstab . . . . . . . . . . . . . . . . . . 1914.12 Navigare nel filesystem . . . . . . . . . . . . . . . . . . . . . . . . . 1924.13 Alcune directory particolari . . . . . . . . . . . . . . . . . . . . . . . 204

    4.13.1 La directory /dev . . . . . . . . . . . . . . . . . . . . . . . . . . 2044.13.2 La directory /proc . . . . . . . . . . . . . . . . . . . . . . . . . 2064.13.3 La directory /sys . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    4.14 I permessi e lumask . . . . . . . . . . . . . . . . . . . . . . . . . . . 2094.15 Cambiare la root directory . . . . . . . . . . . . . . . . . . . . . . . . 2104.16 Lo swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2104.17 Il quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2134.18 RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2194.19 LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    4.19.1 Concetti di base . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334.19.2 Utilizzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

    4.20 RAM disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2384.21 Copia e ripristino di partizioni . . . . . . . . . . . . . . . . . . . . . . 239

    4.21.1 Partition Image . . . . . . . . . . . . . . . . . . . . . . . . . . . 2394.22 Montaggio automatico dei fileystem . . . . . . . . . . . . . . . . . . . 2434.23 Comandi utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2434.24 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

    5 Operazioni su file e directory 2475.1 Creazione di file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475.2 Creazione di directory . . . . . . . . . . . . . . . . . . . . . . . . . . 2475.3 Copia di file o directory . . . . . . . . . . . . . . . . . . . . . . . . . 248

    5.3.1 Copia di file a basso livello . . . . . . . . . . . . . . . . . . . . . 2505.4 Spostamento o rinominazione di file o directory . . . . . . . . . . . . 2515.5 Modificare la data/ora di un file o directory . . . . . . . . . . . . . . 2525.6 Cancellazione di file o directory . . . . . . . . . . . . . . . . . . . . . 2535.7 Visualizzazione del contenuto di un file . . . . . . . . . . . . . . . . . 2555.8 Modifica del contenuto di un file . . . . . . . . . . . . . . . . . . . . . 2665.9 Ricerca di file o nel contenuto di file . . . . . . . . . . . . . . . . . . 2695.10 Differenze tra file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2775.11 Ordinamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2795.12 Archiviazione e compressione . . . . . . . . . . . . . . . . . . . . . . 2805.13 Le espressioni regolari . . . . . . . . . . . . . . . . . . . . . . . . . . 2835.14 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

  • viii INDICE

    6 Utenti ed accesso al sistema 2876.1 User account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

    6.1.1 La memorizzazione degli user account . . . . . . . . . . . . . . . 2886.1.2 Il superuser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2886.1.3 Creare uno user account . . . . . . . . . . . . . . . . . . . . . . 2886.1.4 Modificare uno user account . . . . . . . . . . . . . . . . . . . . 2906.1.5 Cancellare uno user account . . . . . . . . . . . . . . . . . . . . 2936.1.6 Visualizzare le informazioni di uno user account . . . . . . . . . 293

    6.2 Group account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2946.2.1 Memorizzazione dei group account . . . . . . . . . . . . . . . . . 2946.2.2 Creare un group account . . . . . . . . . . . . . . . . . . . . . . 2946.2.3 Modificare un group account . . . . . . . . . . . . . . . . . . . . 2956.2.4 Cancellare un group account . . . . . . . . . . . . . . . . . . . . 2956.2.5 Visualizzare i dati di un group account . . . . . . . . . . . . . . 295

    6.3 Visualizzazione di UID e GID . . . . . . . . . . . . . . . . . . . . . . 2966.4 Modificare il proprio GID . . . . . . . . . . . . . . . . . . . . . . . . 2966.5 La cifratura della password . . . . . . . . . . . . . . . . . . . . . . . . 2976.6 Il meccanismo delle shadow password . . . . . . . . . . . . . . . . . . 298

    6.6.1 Attivare/disattivare il meccanismo delle shadow password . . . 2996.7 Impersonare un altro utente . . . . . . . . . . . . . . . . . . . . . . . 3016.8 Casi particolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

    6.8.1 System user e system group . . . . . . . . . . . . . . . . . . . . 3026.8.2 Gestione particolare delle utenze . . . . . . . . . . . . . . . . . . 302

    6.9 La registrazione degli eventi . . . . . . . . . . . . . . . . . . . . . . . 3036.9.1 Il system log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3036.9.2 Altri file di log . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

    6.10 La libreria PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3076.10.1 Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

    6.11 La procedura di login . . . . . . . . . . . . . . . . . . . . . . . . . . . 3136.11.1 Accesso al terminale . . . . . . . . . . . . . . . . . . . . . . . . . 3146.11.2 login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

    6.12 Comandi utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3186.13 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

    7 Il kernel ed i processi 3217.1 Il kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    7.1.1 Le versioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.1.2 La compilazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.1.3 Lavvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3277.1.4 I parametri del kernel . . . . . . . . . . . . . . . . . . . . . . . . 330

    7.2 LKM - I moduli del kernel . . . . . . . . . . . . . . . . . . . . . . . . 3417.2.1 Caricamento di moduli in memoria . . . . . . . . . . . . . . . . 3437.2.2 Scarico di moduli dalla memoria . . . . . . . . . . . . . . . . . . 3487.2.3 Caricamento automatico dei moduli . . . . . . . . . . . . . . . . 3497.2.4 Scaricamento automatico dei moduli . . . . . . . . . . . . . . . 3507.2.5 Elenco dei moduli caricati in memoria . . . . . . . . . . . . . . . 350

    7.3 I device driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3507.4 I processi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

    7.4.1 Multitasking e multithreading . . . . . . . . . . . . . . . . . . . 3547.4.2 I diritti di un processo . . . . . . . . . . . . . . . . . . . . . . . 3557.4.3 Creazione di un processo . . . . . . . . . . . . . . . . . . . . . . 3557.4.4 Gestione della memoria . . . . . . . . . . . . . . . . . . . . . . . 3577.4.5 Terminazione di un processo . . . . . . . . . . . . . . . . . . . . 359

    7.5 Lo scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3607.5.1 La gestione dei processi . . . . . . . . . . . . . . . . . . . . . . . 362

    7.6 La comunicazione tra processi . . . . . . . . . . . . . . . . . . . . . . 3647.6.1 I segnali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

  • INDICE ix

    7.6.2 Le pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3687.6.3 Le FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3687.6.4 I socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3687.6.5 I meccanismi di IPC di System V . . . . . . . . . . . . . . . . . 369

    7.7 I file di lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3707.8 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

    8 La stampa 3738.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3738.2 Postscript e Ghostscript . . . . . . . . . . . . . . . . . . . . . . . . . 373

    8.2.1 PPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3748.3 Lo spooler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3758.4 CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3758.5 Comandi utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3768.6 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

    9 Il tempo 3819.1 Lorologio di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

    9.1.1 Impostazione della data/ora del sistema . . . . . . . . . . . . . 3829.1.2 Il calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

    9.2 La schedulazione dei job . . . . . . . . . . . . . . . . . . . . . . . . . 3859.2.1 cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3859.2.2 anacron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3879.2.3 at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3889.2.4 batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3899.2.5 watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    9.3 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

    10 Il suono 39110.1 Concetti di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39110.2 La riproduzione del suono . . . . . . . . . . . . . . . . . . . . . . . . 393

    10.2.1 La sintesi FM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39310.2.2 La sintesi con suoni campionati . . . . . . . . . . . . . . . . . . 39410.2.3 Il mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39410.2.4 MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

    10.3 Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39510.4 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

    11 Linterfaccia grafica 39711.1 Concetti di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    11.1.1 I colori e locchio umano . . . . . . . . . . . . . . . . . . . . . . 39711.1.2 I monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39811.1.3 Le immagini digitali . . . . . . . . . . . . . . . . . . . . . . . . . 39911.1.4 La risoluzione dello schermo . . . . . . . . . . . . . . . . . . . . 40211.1.5 Le schede video . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

    11.2 X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40311.2.1 X11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

    11.3 X Display Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.4 Permessi di accesso al server grafico . . . . . . . . . . . . . . . . . . . 42511.5 Window manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

    11.5.1 FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.2 IceWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.3 Window Maker . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.4 After Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.5 Enlightment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.6 Metacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.5.7 Sawfish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

  • x INDICE

    11.6 Desktop environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.6.1 GNOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.6.2 KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    11.7 I temi del desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42711.8 Caratteri particolari . . . . . . . . . . . . . . . . . . . . . . . . . . . 42711.9 Gli pseudo terminali . . . . . . . . . . . . . . . . . . . . . . . . . . . 42711.10 La gestione dei font . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    11.10.1 Fontconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42811.10.2 X Font server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

    11.11 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    12 Applicazioni utili 43312.1 Gestione del filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . 433

    12.1.1 Midnight Commander . . . . . . . . . . . . . . . . . . . . . . . . 43312.1.2 Nautilus e Konqueror . . . . . . . . . . . . . . . . . . . . . . . . 433

    12.2 Terminale grafico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43412.2.1 xterm, gterm e kterm . . . . . . . . . . . . . . . . . . . . . . . . 434

    12.3 Calcoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43412.4 Scrittura di testo non formattato . . . . . . . . . . . . . . . . . . . . 434

    12.4.1 gedit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43512.4.2 SciTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

    12.5 Scrittura di testo formattato . . . . . . . . . . . . . . . . . . . . . . . 43512.5.1 tetex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

    12.6 Grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43512.6.1 GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43512.6.2 Inkscape e Sodipodi . . . . . . . . . . . . . . . . . . . . . . . . . 43612.6.3 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

    12.7 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43612.7.1 Totem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43612.7.2 XMMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43612.7.3 gnome-cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

    12.8 Office automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43712.8.1 OpenOffice.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43712.8.2 koffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43812.8.3 Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    12.9 Visualizzazione file PDF . . . . . . . . . . . . . . . . . . . . . . . . . 43812.9.1 Evince . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    12.10 Web browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43812.10.1 Mozilla e Firefox . . . . . . . . . . . . . . . . . . . . . . . . . . . 43812.10.2 Konqueror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    12.11 Tool per lo sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43812.11.1 Anjuta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43912.11.2 Glade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43912.11.3 Kdevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43912.11.4 Blowfish e NVU . . . . . . . . . . . . . . . . . . . . . . . . . . . 43912.11.5 NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    12.12 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    13 Installazione del software 44913.1 I pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

    13.1.1 Pacchetti tarball . . . . . . . . . . . . . . . . . . . . . . . . . . . 44913.1.2 Pacchetti deb . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45413.1.3 Pacchetti rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45413.1.4 Risoluzione automatica delle dipendenze yum . . . . . . . . . . 46113.1.5 Risoluzione automatica delle dipendenze apt . . . . . . . . . . 468

    13.2 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

  • INDICE xi

    14 Cenni sui database 46914.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46914.2 Tipi di database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46914.3 Entita` e relazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47014.4 I RDBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

    14.4.1 Le tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47414.4.2 Le chiavi e gli indici . . . . . . . . . . . . . . . . . . . . . . . . . 47514.4.3 Le relazioni e lintegrita` referenziale . . . . . . . . . . . . . . . . 47614.4.4 La normalizzazione dei dati . . . . . . . . . . . . . . . . . . . . 47714.4.5 Il linguaggio SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 47714.4.6 Le stored procedure . . . . . . . . . . . . . . . . . . . . . . . . . 47714.4.7 I trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47714.4.8 Le transazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

    14.5 La gestione degli utenti . . . . . . . . . . . . . . . . . . . . . . . . . . 47814.6 Implementazioni di database . . . . . . . . . . . . . . . . . . . . . . . 478

    14.6.1 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47814.6.2 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

    14.7 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

    15 Sviluppo di applicazioni 47915.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47915.2 Gli algoritmi ed i programmi . . . . . . . . . . . . . . . . . . . . . . . 479

    15.2.1 Linterprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48115.2.2 Il compilatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

    15.3 I metodi di programmazione . . . . . . . . . . . . . . . . . . . . . . . 48315.4 I linguaggi di programmazione . . . . . . . . . . . . . . . . . . . . . . 484

    15.4.1 La memorizzazione dei dati . . . . . . . . . . . . . . . . . . . . . 48515.4.2 Le funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49015.4.3 I commenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49015.4.4 Lindentazione del codice . . . . . . . . . . . . . . . . . . . . . . 49115.4.5 Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49115.4.6 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49315.4.7 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49415.4.8 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.4.9 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.4.10 Phyton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

    15.5 Gli strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.5.1 Anjuta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.5.2 Quanta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.5.3 Glade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.5.4 KDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49515.5.5 make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

    15.6 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

    II La rete 501

    16 Concetti di base 50316.1 Le interfacce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50316.2 I server ed i client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50316.3 I protocolli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50416.4 LAN e WAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50516.5 Lo stack OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50516.6 Lo stack TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50716.7 Altri stack di protocolli . . . . . . . . . . . . . . . . . . . . . . . . . . 50816.8 Il livello fisico e di collegamento . . . . . . . . . . . . . . . . . . . . . 508

    16.8.1 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510

  • xii INDICE

    16.8.2 Token ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51216.8.3 FDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51416.8.4 Protocolli Punto-punto . . . . . . . . . . . . . . . . . . . . . . . 51416.8.5 MTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

    16.9 I dispositivi di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51616.9.1 Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51616.9.2 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51716.9.3 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51716.9.4 Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51716.9.5 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

    16.10 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

    17 TCP/IP - Network 51917.1 Network byte order . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51917.2 IP - Internet Protocol (IPv4) . . . . . . . . . . . . . . . . . . . . . . 519

    17.2.1 Gli indirizzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52017.2.2 CIDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52217.2.3 Il routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52317.2.4 Unicast e multicast . . . . . . . . . . . . . . . . . . . . . . . . . 52417.2.5 Il datagram IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . 52517.2.6 Frammentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 52817.2.7 Diagnosi di problemi di connettivita` . . . . . . . . . . . . . . . . 529

    17.3 IP - Internet Protocol (IPv6) . . . . . . . . . . . . . . . . . . . . . . 53317.3.1 Gli indirizzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53317.3.2 Il datagram IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 53817.3.3 Frammentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

    17.4 ICMP - Internet Control Message Protocol . . . . . . . . . . . . . . . 54117.5 La scoperta del vicinato . . . . . . . . . . . . . . . . . . . . . . . . . 542

    17.5.1 ARP - Address Resolution Protocol . . . . . . . . . . . . . . . . 54317.5.2 NDP - Neighborhood Discovery Protocol . . . . . . . . . . . . . 544

    17.6 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

    18 TCP/IP - Transport 54518.1 Porte e socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54518.2 UDP - User Datagram Protocol . . . . . . . . . . . . . . . . . . . . . 545

    18.2.1 LUDP datagram . . . . . . . . . . . . . . . . . . . . . . . . . . 54518.3 TCP - Transmission Control Protocol . . . . . . . . . . . . . . . . . . 546

    18.3.1 Il TCP segment . . . . . . . . . . . . . . . . . . . . . . . . . . . 54618.3.2 La connessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548

    18.4 Comunicazione tra client e server . . . . . . . . . . . . . . . . . . . . 55118.5 netstat e tcpdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55118.6 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

    19 TCP/IP - Application 55719.1 I nomi di dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557

    19.1.1 DNS - Domain Name System . . . . . . . . . . . . . . . . . . . . 55719.2 La posta elettronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

    19.2.1 La scrittura dei messaggi . . . . . . . . . . . . . . . . . . . . . . 56819.2.2 SMTP - Simple Mail Transfer Protocol . . . . . . . . . . . . . . 57119.2.3 POP - Post Office Protocol . . . . . . . . . . . . . . . . . . . . . 57319.2.4 IMAP - Internet Message Access Protocol . . . . . . . . . . . . 57419.2.5 MIME - Multipurpose Internet Mail Extensions . . . . . . . . . 57419.2.6 Problemi con la e-mail . . . . . . . . . . . . . . . . . . . . . . . 575

    19.3 Il web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57719.3.1 HTTP - HyperText Transfer Protocol . . . . . . . . . . . . . . . 57719.3.2 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58119.3.3 Application server . . . . . . . . . . . . . . . . . . . . . . . . . . 581

  • INDICE xiii

    19.3.4 JSP, applet Java e Java bean . . . . . . . . . . . . . . . . . . . . 58219.3.5 CMS - Content Management System . . . . . . . . . . . . . . . 58219.3.6 HTTPS - Secure HTTP . . . . . . . . . . . . . . . . . . . . . . . 583

    19.4 SOAP - Simple Object Access Protocol . . . . . . . . . . . . . . . . . 58319.5 Trasferimento di file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

    19.5.1 FTP - File Transfer Protocol . . . . . . . . . . . . . . . . . . . . 58419.6 NTP - Network Time Protocol . . . . . . . . . . . . . . . . . . . . . . 58419.7 Configurazione automatica delle interfacce . . . . . . . . . . . . . . . 584

    19.7.1 DHCP - Dynamic Host Control Protocol . . . . . . . . . . . . . 58419.8 Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587

    19.8.1 Elementi di NetBIOS . . . . . . . . . . . . . . . . . . . . . . . . 58819.8.2 Samba in dettaglio . . . . . . . . . . . . . . . . . . . . . . . . . 590

    19.9 Accesso remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59419.9.1 telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59419.9.2 rlogin, rsh e rcp . . . . . . . . . . . . . . . . . . . . . . . . . . 595

    19.10 Gestione automatica dei router . . . . . . . . . . . . . . . . . . . . . 59619.10.1 RIP - Routing Information Protocol . . . . . . . . . . . . . . . . 59719.10.2 BGP - Border Gateway Protocol . . . . . . . . . . . . . . . . . . 59719.10.3 EGP - Exterior Gateway Protocol . . . . . . . . . . . . . . . . . 59719.10.4 HELLO - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59719.10.5 OSPF - Open Shortest Path First . . . . . . . . . . . . . . . . . 597

    19.11 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

    20 Impostazioni di rete 59920.1 Le interfacce di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59920.2 Impostazioni di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 59920.3 Introduzione ad ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60220.4 Impostazioni delle interfacce . . . . . . . . . . . . . . . . . . . . . . . 603

    20.4.1 Interfacce ethernet . . . . . . . . . . . . . . . . . . . . . . . . . 60720.4.2 Interfacce dial-up . . . . . . . . . . . . . . . . . . . . . . . . . . 608

    20.5 Gestione della neighbour cache . . . . . . . . . . . . . . . . . . . . . 61220.6 La gestione delle routing table . . . . . . . . . . . . . . . . . . . . . . 61420.7 La risoluzione dei nomi . . . . . . . . . . . . . . . . . . . . . . . . . . 62020.8 Collegamenti dial-up . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

    20.8.1 Linea analogica . . . . . . . . . . . . . . . . . . . . . . . . . . . 62420.8.2 Linea ISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62420.8.3 Linea xDSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

    20.9 Channel bonding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62620.10 Wireless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

    20.10.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62720.10.2 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62820.10.3 IrDA (Infrared Device Application) . . . . . . . . . . . . . . . . 628

    20.11 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628

    21 Gestione centralizzata degli utenti 63121.1 NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63121.2 LDAP - Lightweight Directory Access Protocol . . . . . . . . . . . . 631

    21.2.1 La struttura delle informazioni . . . . . . . . . . . . . . . . . . . 63121.2.2 Directory service distribuiti . . . . . . . . . . . . . . . . . . . . . 63421.2.3 Popolazione del DIB . . . . . . . . . . . . . . . . . . . . . . . . 635

    21.3 OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63521.4 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

  • xiv INDICE

    22 Cluster 63722.1 High Availability (HA) . . . . . . . . . . . . . . . . . . . . . . . . . . 63722.2 Load balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63722.3 High Performance Computing (HPC) . . . . . . . . . . . . . . . . . . 63822.4 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638

    III Sicurezza 639

    23 Protezione delle informazioni 64123.1 Concetti generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64123.2 Steganografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64223.3 Crittografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643

    23.3.1 Un po di matematica . . . . . . . . . . . . . . . . . . . . . . . . 64423.3.2 Cifratura a chiave simmetrica . . . . . . . . . . . . . . . . . . . 64823.3.3 Cifratura a chiave asimmetrica . . . . . . . . . . . . . . . . . . . 65223.3.4 Protocollo Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . 65523.3.5 Funzioni hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65623.3.6 PKI - Public Key Infrastructure . . . . . . . . . . . . . . . . . . 657

    23.4 La firma digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65723.4.1 Il MAC - Message Authentication Code . . . . . . . . . . . . . . 658

    23.5 I certificati digitali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65923.6 Filesystem cifrati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660

    23.6.1 Filesystem cifrati su file . . . . . . . . . . . . . . . . . . . . . . . 66123.7 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

    24 Comunicazioni sicure 66324.1 SSL/TLS - Secure Sockets Layer / Transport Layer Security . . . . . 66324.2 SSH - Secure SHell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664

    24.2.1 Autenticazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67024.2.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67124.2.3 Generazione di chiavi asimmetriche . . . . . . . . . . . . . . . . 67224.2.4 ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67224.2.5 scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67824.2.6 sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

    24.3 GNU Privacy Guard . . . . . . . . . . . . . . . . . . . . . . . . . . . 67924.3.1 Generazione delle chiavi . . . . . . . . . . . . . . . . . . . . . . 68424.3.2 Esportazione della chiave pubblica . . . . . . . . . . . . . . . . . 68624.3.3 Creazione di un certificato di revoca . . . . . . . . . . . . . . . . 68724.3.4 Importazione di una chiave pubblica . . . . . . . . . . . . . . . . 68824.3.5 La fiducia nelle chiavi . . . . . . . . . . . . . . . . . . . . . . . . 68824.3.6 Rimozione di chiavi . . . . . . . . . . . . . . . . . . . . . . . . . 69024.3.7 Cifratura e decifratura . . . . . . . . . . . . . . . . . . . . . . . 69024.3.8 Firma digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690

    24.4 Cifratura della posta elettronica . . . . . . . . . . . . . . . . . . . . . 69124.5 VPN - Virtual Private Network . . . . . . . . . . . . . . . . . . . . . 69224.6 Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69224.7 Comunicazioni anonime . . . . . . . . . . . . . . . . . . . . . . . . . 693

    24.7.1 Posta elettronica anonima . . . . . . . . . . . . . . . . . . . . . 69424.7.2 Navigazione anonima . . . . . . . . . . . . . . . . . . . . . . . . 694

    24.8 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696

  • INDICE xv

    25 Protezione del sistema 69925.1 Gli attacchi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69925.2 Linstallazione del software . . . . . . . . . . . . . . . . . . . . . . . . 70125.3 I firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

    25.3.1 Packet filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . 70425.4 Proxy server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

    25.4.1 Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72025.4.2 Privoxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

    25.5 IDS - Intrusion Detection System . . . . . . . . . . . . . . . . . . . . 72125.6 Il software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

    25.6.1 Il buffer overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 72125.7 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728

    IV Appendici 729

    A Il software e le licenze 731A.1 Le licenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731A.2 Il software libero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732A.3 Altre categorie di software . . . . . . . . . . . . . . . . . . . . . . . . 733A.4 Garanzie del software . . . . . . . . . . . . . . . . . . . . . . . . . . . 734A.5 GNU General Public License . . . . . . . . . . . . . . . . . . . . . . . 736A.6 Licenza Pubblica Generica GNU . . . . . . . . . . . . . . . . . . . . 740A.7 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

    B Utilizzo pratico 745B.1 Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745

    B.1.1 Problemi di avvio del DVD di installazione . . . . . . . . . . . . 745B.1.2 Avvio con boot loader di Windows . . . . . . . . . . . . . . . . 745B.1.3 Problemi con il runlevel di default . . . . . . . . . . . . . . . . . 746B.1.4 Dimenticata la password del superuser? . . . . . . . . . . . . . . 747B.1.5 Controllare lo shutdown con Ctrl-Alt-Del . . . . . . . . . . . . . 747B.1.6 Sapere in quale CD e` contenuto un pacchetto (Fedora) . . . . . 748

    B.2 Dispositivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748B.2.1 Configurazione di USB flash memory . . . . . . . . . . . . . . . 748

    B.3 Interfaccia grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749B.3.1 Personalizzazione dei cursori del mouse . . . . . . . . . . . . . . 749B.3.2 Personalizzazione dei menu` di Gnome . . . . . . . . . . . . . . . 752B.3.3 Utilizzo del cursore senza dispositivo di puntamento . . . . . . . 752B.3.4 Attivare il tasto NumLock allavvio dellinterfaccia . . . . . . . 753

    B.4 Interfaccia carattere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754B.4.1 Impostare il layout di tastiera . . . . . . . . . . . . . . . . . . . 754B.4.2 Impostare la risoluzione dello schermo . . . . . . . . . . . . . . . 754B.4.3 Personalizzare il prompt . . . . . . . . . . . . . . . . . . . . . . 755B.4.4 Variare il font . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756

    B.5 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756

    C Licenza 757C.1 GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . 757C.2 GNU Free Documentation License (italiano) . . . . . . . . . . . . . . 762

  • xvi INDICE

  • Elenco delle figure

    1 Il simbolo del progetto GNU ed il pinguino Tux (di L. Ewing), simbolodi Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii

    2 Esempio di interfaccia a caratteri (shell) di GNU/Linux. . . . . . . . xiii3 Esempio di interfaccia grafica di GNU/Linux. . . . . . . . . . . . . . xiv

    1.1 Un computer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Esempio di suddivisione di un intervallo in livelli. . . . . . . . . . . . 51.3 Rappresentazione dei numeri secondo lo standard IEEE 754 (single

    precision). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4 Rappresentazione dei numeri secondo lo standard IEEE 754 (double

    precision). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.5 Ragruppamenti di bit. . . . . . . . . . . . . . . . . . . . . . . . . . . 131.6 La modalita` di memorizzazione big endian. . . . . . . . . . . . . . . . 191.7 La modalita` di memorizzazione little endian. . . . . . . . . . . . . . . 191.8 Esempio di shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.9 Esempio di interfaccia grafica. . . . . . . . . . . . . . . . . . . . . . . 221.10 Esempio di window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.11 Una motherboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.12 Due CPU di due diversi produttori. . . . . . . . . . . . . . . . . . . . 241.13 Esempio del segnale di termporizzazione emesso dal system clock. . . 241.14 Un banco di RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.15 Un hard disk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.16 Nellordine: un floppy disk, uno zip disk ed una USB flash memory. . 261.17 Un CD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.18 Alcune periferiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.19 Connettore PS/2 (6-pin mini-DIN). . . . . . . . . . . . . . . . . . . . 321.20 Connettore DB-25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321.21 Connettore DB-9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321.22 Connettore USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.23 Cavo di rete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.24 Un flat cable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.25 Vista di un disco magnetico in sezione longitudinale e trasversale rispet-

    to allasse di rotazione. . . . . . . . . . . . . . . . . . . . . . . . . . . 341.26 Interno di un hard disk. . . . . . . . . . . . . . . . . . . . . . . . . . 351.27 Schematizzazione della suddivisione di un disco in partizioni. . . . . . 361.28 Schematizzazione del meccanismo di caching. . . . . . . . . . . . . . 381.29 Esempio di albero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411.30 Layout di tastiera: confronto tra il layout statunitense e quello italiano. 42

    2.1 Schema del boot del sistema. . . . . . . . . . . . . . . . . . . . . . . . 552.2 Schema dellavvio del sistema operativo. . . . . . . . . . . . . . . . . 572.3 Schematizzazione del MBR. . . . . . . . . . . . . . . . . . . . . . . . 572.4 Esempio del menu` di avvio di GRUB. . . . . . . . . . . . . . . . . . . 692.5 Esempio del menu` di avvio di LILO. . . . . . . . . . . . . . . . . . . 752.6 Gestione dei daemon. . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    xvii

  • xviii ELENCO DELLE FIGURE

    2.7 figura greeter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.8 figura solo greater relativo allinserimento password. . . . . . . . . . . 1102.9 figura desktop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    3.1 Esempio di shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163.2 Schema della gestione dello scrollback buffer. . . . . . . . . . . . . . . 117

    4.1 Esempio di albero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1484.2 Accesso sequenziale e accesso diretto. . . . . . . . . . . . . . . . . . . 1484.3 Struttura tipica del filesystem di un sistema GNU/Linux. . . . . . . 1504.4 Struttura per la memorizzazione dei file sul filesystem. . . . . . . . . 1524.5 Struttura del filesystem ext2. . . . . . . . . . . . . . . . . . . . . . . 1534.6 Gli inode ed i riferimenti diretti ed indiretti ai blocchi di dati. . . . . 1574.7 Lelemento delle directory: la dentry. . . . . . . . . . . . . . . . . . . 1614.8 Esempio di accesso ad un file. . . . . . . . . . . . . . . . . . . . . . . 1624.9 Flag relativi ai permessi associati agli oggetti del filesystem. . . . . . 1724.10 Schematizzazione del VFS. . . . . . . . . . . . . . . . . . . . . . . . . 1834.11 Schematizzazione di un albero delle directory formato da piu` filesystem. 1904.12 Schematizzazione del RAID 0. . . . . . . . . . . . . . . . . . . . . . . 2194.13 Schematizzazione del RAID 1. . . . . . . . . . . . . . . . . . . . . . . 2204.14 Schematizzazione del RAID 2. . . . . . . . . . . . . . . . . . . . . . . 2204.15 Schematizzazione del RAID 3. . . . . . . . . . . . . . . . . . . . . . . 2214.16 Schematizzazione del RAID 4. . . . . . . . . . . . . . . . . . . . . . . 2214.17 Schematizzazione del RAID 5. . . . . . . . . . . . . . . . . . . . . . . 2214.18 Schematizzazione del RAID 6. . . . . . . . . . . . . . . . . . . . . . . 2224.19 Schematizzazione del RAID 10. . . . . . . . . . . . . . . . . . . . . . 2224.20 Schematizzazione del RAID 0+1. . . . . . . . . . . . . . . . . . . . . 2234.21 Schematizzazione del RAID 03. . . . . . . . . . . . . . . . . . . . . . 2234.22 Schematizzazione del RAID 30. . . . . . . . . . . . . . . . . . . . . . 2234.23 Schematizzazione del RAID 05. . . . . . . . . . . . . . . . . . . . . . 2244.24 Schematizzazione del RAID 50. . . . . . . . . . . . . . . . . . . . . . 2244.25 Schematizzazione del RAID 1+5. . . . . . . . . . . . . . . . . . . . . 2244.26 Schematizzazione del RAID 5+1. . . . . . . . . . . . . . . . . . . . . 2254.27 Struttura del LVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334.28 Gestione delle partizioni. . . . . . . . . . . . . . . . . . . . . . . . . . 2394.29 Esempio di Partition Image. . . . . . . . . . . . . . . . . . . . . . . . 242

    6.1 La gestione della scadenza della password con il meccanismo della sha-dow password. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

    6.2 Schema di funzionamento della procedura di login con la libreria PAM. 308

    7.1 I canali di input, output ed error di un processo. . . . . . . . . . . . 3567.2 Occupazione di memoria di un processo. . . . . . . . . . . . . . . . . 358

    8.1 Esempio di riproduzione PostScript. . . . . . . . . . . . . . . . . . . 3748.2 Linterfaccia web di CUPS. . . . . . . . . . . . . . . . . . . . . . . . . 3768.3 Linterfaccia web di CUPS (amministrazione). . . . . . . . . . . . . . 3778.4 Linterfaccia web di CUPS (aggiungere una stampante). . . . . . . . 3788.5 Linterfaccia web di CUPS (Help). . . . . . . . . . . . . . . . . . . . 379

    10.1 Esempio di una sinusoide. . . . . . . . . . . . . . . . . . . . . . . . . 39210.2 Il processo di conversione dei suoni. . . . . . . . . . . . . . . . . . . . 39210.3 Esempio di campionamento di un segnale. . . . . . . . . . . . . . . . 39310.4 Esempio di quantizzazione di un segnale campionato. . . . . . . . . . 393

    11.1 Lo spettro elettromagnetico. . . . . . . . . . . . . . . . . . . . . . . . 39711.2 Risposta dellocchio umano alla luce visibile. . . . . . . . . . . . . . . 39811.3 Rappresentazione delle componenti di colore dei pixel. . . . . . . . . 399

  • ELENCO DELLE FIGURE xix

    11.4 La ruota dei colori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40011.5 Differenza tra unimmagine vettoriale ed una raster. . . . . . . . . . . 40111.6 Schematizzazione di X Window System. . . . . . . . . . . . . . . . . 40311.7 Una stazione grafica o display. . . . . . . . . . . . . . . . . . . . . . . 40411.8 Esempio di sistema con piu` server grafici. . . . . . . . . . . . . . . . 40411.9 Linterfaccia grafica di gedit. . . . . . . . . . . . . . . . . . . . . . . 40511.10 Interfaccia grafica di gucharmap. . . . . . . . . . . . . . . . . . . . . 42811.11 Esempio di pseudo terminale. . . . . . . . . . . . . . . . . . . . . . . 42911.12 Alcuni esempi di font. . . . . . . . . . . . . . . . . . . . . . . . . . . 42911.13 Visualizzazione dei font con filtro anti-aliasing (testo a sinistra) e senza

    (testo a destra). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    12.1 Esempio di Midnight Commander. . . . . . . . . . . . . . . . . . . . 43412.2 Esempio di Nautilus. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43512.3 Esempio di Konqueror. . . . . . . . . . . . . . . . . . . . . . . . . . . 43612.4 Esempio di xterm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43712.5 Esempio di gnome-terminal. . . . . . . . . . . . . . . . . . . . . . . . 43812.6 Esempio di Konsole. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43912.7 Esempio di gedit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44012.8 Esempio di GIMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44012.9 Esempio di Blender. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44112.10 Esempio di Totem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44212.11 Esempio di Writer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44312.12 Esempio di Calc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44312.13 Esempio di Impress. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44412.14 Esempio di Evolution. . . . . . . . . . . . . . . . . . . . . . . . . . . 44412.15 Esempio di Evince. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44512.16 Esempio di Firefox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44512.17 Esempio di Anjuta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44612.18 Esempio di Glade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    15.1 Esempio di algorittmo espresso in linguaggio naturale. . . . . . . . . 48015.2 Esempio di algoritmo espresso sottoforma di diagramma a blocchi. . 48015.3 Schematizzazione del funzionamento di un interprete. . . . . . . . . . 48115.4 Schematizzazione del funzionamento di un compilatore. . . . . . . . . 48215.5 Schematizzazione della realizzazione di un file eseguibile tramite compi-

    lazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48215.6 Esempi di assegnamento di variabili. . . . . . . . . . . . . . . . . . . 48615.7 Esempio di struttura dati. . . . . . . . . . . . . . . . . . . . . . . . . 48715.8 Esempio di vettore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48715.9 Esempio di lista doppiamente concatenata. . . . . . . . . . . . . . . . 48915.10 Esempio di pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48915.11 Esempio di coda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48915.12 Schematizzazione della struttura interna di una CPU. . . . . . . . . . 493

    16.1 Architettura client server. . . . . . . . . . . . . . . . . . . . . . . . . 50416.2 Schematizzazione dei processi client e server. . . . . . . . . . . . . . . 50416.3 Rappresentazione dello stack OSI. . . . . . . . . . . . . . . . . . . . . 50616.4 Rappresentazione dello stack TCP/IP. . . . . . . . . . . . . . . . . . 50716.5 Schematizzazione di una rete di tipo mesh. . . . . . . . . . . . . . . . 50916.6 Schematizzazione di una rete di tipo bus. . . . . . . . . . . . . . . . . 50916.7 Schematizzazione di una rete di tipo anello. . . . . . . . . . . . . . . 51016.8 Schematizzazione di una rete di tipo stella. . . . . . . . . . . . . . . . 51116.9 Rappresentazione di un frame Ethernet. . . . . . . . . . . . . . . . . 51216.10 Struttura del token. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51316.11 Struttura di un frame token ring. . . . . . . . . . . . . . . . . . . . . 51316.12 Esempio di modulazione di un segnale. . . . . . . . . . . . . . . . . . 515

  • xx ELENCO DELLE FIGURE

    17.1 Indirizzo IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52017.2 Indirizzi IP di classe A. . . . . . . . . . . . . . . . . . . . . . . . . . . 52017.3 Indirizzi IP di classe B. . . . . . . . . . . . . . . . . . . . . . . . . . . 52117.4 Indirizzi IP di classe C. . . . . . . . . . . . . . . . . . . . . . . . . . . 52117.5 Indirizzi IP di classe D. . . . . . . . . . . . . . . . . . . . . . . . . . . 52117.6 Indirizzi IP di classe E. . . . . . . . . . . . . . . . . . . . . . . . . . . 52217.7 Indirizzi IP CIDR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52317.8 Il datagram IPv4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52517.9 Il formato degli indirizzi IPv6 unicast aggregatable global. . . . . . . 53517.10 Il formato degli indirizzi IPv6 unicast link-local. . . . . . . . . . . . . 53517.11 Il formato degli indirizzi IPv6 unicast site-local. . . . . . . . . . . . . 53517.12 Il formato degli indirizzi IPv6 compatibili con IPv4. . . . . . . . . . . 53617.13 Il formato degli indirizzi IPv4 mappati su IPv6. . . . . . . . . . . . . 53617.14 Il formato degli indirizzi IPv6 multicast. . . . . . . . . . . . . . . . . 53717.15 Il datagram IPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53917.16 La frammentazione dellIPv6 datagram. . . . . . . . . . . . . . . . . 54017.17 Il Fragment Header IPv6. . . . . . . . . . . . . . . . . . . . . . . . . 54117.18 Il formato del messaggio ICMP. . . . . . . . . . . . . . . . . . . . . . 54117.19 Il formato del pacchetto ARP request. . . . . . . . . . . . . . . . . . 544

    18.1 Struttura di un UDP datagram. . . . . . . . . . . . . . . . . . . . . . 54618.2 Struttura dellheader di un TCP segment. . . . . . . . . . . . . . . . 54718.3 Diagramma relativo allapertura di una connessione TCP. . . . . . . 54918.4 Diagramma relativo alla chiusura di una connessione TCP. . . . . . . 55018.5 Schematizzazione di unapplicazione server. . . . . . . . . . . . . . . 55218.6 Schematizzazione di unapplicazione client. . . . . . . . . . . . . . . . 552

    19.1 Esempio di albero del DNS. . . . . . . . . . . . . . . . . . . . . . . . 55819.2 Struttura di un Resource Record del DNS. . . . . . . . . . . . . . . . 56019.3 Formato dei messaggi del protocollo del DNS. . . . . . . . . . . . . . 56219.4 Formato dellheader dei messaggi del protocollo del DNS. . . . . . . . 56219.5 Schema esemplificativo di risoluzione dei nomi per mezzo del DNS. . 56719.6 Esempio di comunicazione SMTP. . . . . . . . . . . . . . . . . . . . . 57219.7 La ZMI (interfaccia di amministrazione di Zope). . . . . . . . . . . . 58219.8 Esempio di un sito realizzato con Plone. . . . . . . . . . . . . . . . . 583

    20.1 Esempio di filtro per xDSL. . . . . . . . . . . . . . . . . . . . . . . . 625

    22.1 Schematizzazione di un cluster high availability. . . . . . . . . . . . . 63722.2 Schematizzazione di un cluster load balancing. . . . . . . . . . . . . . 638

    23.1 Schematizzazione delluso dei sistemi crittografici. . . . . . . . . . . . 64323.2 Schematizzazione della comunicazione con cifratura a chiave simmetri-

    ca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64823.3 Schematizzazione della comunicazione con cifratura a chiave asimmetri-

    ca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65223.4 Schematizzazione della comunicazione col protocollo Diffie-Hellman. . 65523.5 Schematizzazione della comunicazione utilizzando la firma digitale. . 658

    24.1 Schematizzazione di una comunicazione cifrata. . . . . . . . . . . . . 66324.2 La cella di comunicazione di TOR. . . . . . . . . . . . . . . . . . . . 69424.3 Esempio di comunicazione con TOR. . . . . . . . . . . . . . . . . . . 695

    25.1 Schematizzazione del meccanismo di NAT. . . . . . . . . . . . . . . . 70325.2 Schematizzazione del funzionamento di Netfilter. . . . . . . . . . . . . 70525.3 Esempio di chain espressa come action. . . . . . . . . . . . . . . . . . 71225.4 Occupazione dello stack da parte di un processo. . . . . . . . . . . . 722

  • ELENCO DELLE FIGURE xxi

    A.1 Relazioni fra alcune categorie di software. . . . . . . . . . . . . . . . 734

    B.1 I cursori del dispositivo di puntamento. . . . . . . . . . . . . . . . . . 750B.2 Esempio del menu` di sistema di Gnome. . . . . . . . . . . . . . . . . 752

  • xxii ELENCO DELLE FIGURE

  • Elenco delle tabelle

    1 Simboli matematici utilizzati nel testo. . . . . . . . . . . . . . . . . . xix2 Multipli del sistema metrico decimale secondo il SI. . . . . . . . . . . xix3 Multipli di quantita` binarie secondo il SI. . . . . . . . . . . . . . . . xix

    1.1 Alcune potenze del 2 e del 10. . . . . . . . . . . . . . . . . . . . . . . 61.2 Particolari significati attribuiti alla rappresentazione dei numeri floating

    point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 La tabella ASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.4 I codici di controllo della tabella ASCII. . . . . . . . . . . . . . . . . 171.5 Codifica dei caratteri secondo UTF-8. . . . . . . . . . . . . . . . . . . 181.6 Possibili stati dellunita` visualizzati da hdparm. . . . . . . . . . . . . 391.7 Modalita` di trasferimento delle informazioni impostabili con hdparm. 401.8 Equivalenze di alcuni tasti sulla tastiera. . . . . . . . . . . . . . . . . 42

    2.1 Partition table entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . 582.2 Conversioni effettuabili con dd. . . . . . . . . . . . . . . . . . . . . . 592.3 Suffissi utilizzabili con dd. . . . . . . . . . . . . . . . . . . . . . . . . 602.4 Offset del kernel GNU/Linux. . . . . . . . . . . . . . . . . . . . . . . 662.5 Exit status di ntsysv. . . . . . . . . . . . . . . . . . . . . . . . . . . 972.6 Attributi necessari per i servizi avviati da xinetd. . . . . . . . . . . . 105

    3.1 Sequenze di caratteri particolari interpretabili da bash nella visualizza-zione del prompt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    3.2 Particolari combinazioni di tasti della shell Bash. . . . . . . . . . . . 1223.3 Caratteri particolari ottenibili con la tastiera italiana. . . . . . . . . . 1233.4 Le variabili di ambiente. . . . . . . . . . . . . . . . . . . . . . . . . . 1233.5 Sequenze di caratteri particolari interpretabili da echo. . . . . . . . . 124

    4.1 File di dispositivo associati ai dischi e partizioni di un sistema GNU/Li-nux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    4.2 Alcuni filesystem supportati da GNU/Linux. . . . . . . . . . . . . . . 1464.3 Caratteristiche principali del filesystem ext2. . . . . . . . . . . . . . . 1534.4 Possibili attributi modificabili con chattr. . . . . . . . . . . . . . . . 1594.5 Possibili tipi di file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604.6 Possibili valori del campo file type delle dentry. . . . . . . . . . . . 1614.7 Possibili valori di type nel comando mknod. . . . . . . . . . . . . . . . 1664.8 Possibili valori di length. . . . . . . . . . . . . . . . . . . . . . . . . . 1714.9 Tabella riassuntiva del significato dei bit dei permessi per un file. . . 1744.10 Tabella riassuntiva del significato dei bit dei permessi per una directory. 1754.11 Possibili valori del formato di output per i file (stat). . . . . . . . . 1784.12 Possibili valori del formato di output per i filesystem (stat). . . . . . 1794.13 Valori di ritorno di fsck. . . . . . . . . . . . . . . . . . . . . . . . . . 1814.14 Significato dellexit status di mount. . . . . . . . . . . . . . . . . . . . 1884.15 Colori standard attribuiti agli oggetti del filesystem da ls. . . . . . . 1934.16 Caratteri aggiunti ai nomi degli oggetti del filesystem. . . . . . . . . 193

    xxiii

  • xxiv ELENCO DELLE TABELLE

    4.17 Formato di visualizzazione del contenuto delle directory. . . . . . . . 1944.18 I permessi (mode) sugli oggetti del filesystem, visualizzati per mezzo

    dellopzione -l del comando ls. . . . . . . . . . . . . . . . . . . . . . 1954.19 Formato dello stile di visualizzazione di ls. . . . . . . . . . . . . . . 1964.20 Ordinamento della visualizzazione dellelenco dei file con ls. . . . . . 1964.21 Ordinamento della visualizzazione dellelenco dei file con ls. . . . . . 1974.22 Codici dei colori secondo lISO 6492 (ANSI). . . . . . . . . . . . . . . 2004.23 Formati possibili dei file di gestione del quota. . . . . . . . . . . . . . 2144.24 Modalita` di avvio dei dispositivi virtuali. . . . . . . . . . . . . . . . . 2324.25 Significato dellexit status di pvcreate. . . . . . . . . . . . . . . . . . 2354.26 Livello di compressione. . . . . . . . . . . . . . . . . . . . . . . . . . 2404.27 Livello di compressione. . . . . . . . . . . . . . . . . . . . . . . . . . 2414.28 Unita` di misura specificabili per le dimensioni dei blocchi. . . . . . . 244

    5.1 Tipi di backup effettuabili con cp. . . . . . . . . . . . . . . . . . . . . 2495.2 Attributi degli oggetti del filesystem mantenibili nella copia con cp. . 2495.3 Copia di sparse file con cp. . . . . . . . . . . . . . . . . . . . . . . . . 2505.4 Possibili opzioni di -b o --backup. . . . . . . . . . . . . . . . . . . . . 2515.5 Comandi di more. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2585.6 Comandi di less (I parte). . . . . . . . . . . . . . . . . . . . . . . . . 2625.7 Comandi di less (II parte). . . . . . . . . . . . . . . . . . . . . . . . 2635.8 Caratteri particolari allinizio del pattern di ricerca. . . . . . . . . . . 2635.9 Combinazioni dei tasti sulla riga di comando di less. . . . . . . . . . 2635.10 Possibili basi per la visualizzazione con od. . . . . . . . . . . . . . . . 2645.11 Possibili formati di output di od. . . . . . . . . . . . . . . . . . . . . 2655.12 Possibili valori di offset per hexdump. . . . . . . . . . . . . . . . . . 2665.13 Possibili suffissi per lopzione -size di find. . . . . . . . . . . . . . . 2715.14 Possibili tipi di file specificabili con lopzione -type di find. . . . . . 2715.15 Possibili valori di format per lopzione -printf di find. . . . . . . . . 2735.16 Possibili insiemi di caratteri utilizzabili nelle espressioni regolari. . . 2855.17 Precedenza degli operatori (dallalto verso il basso). . . . . . . . . . . 285

    6.1 Equivalenze tra vecchia e nuova sintassi di control-flag . . . . . . . . . 310

    7.1 Indicazione dei dispositivi per il kernel di GNU/Linux. . . . . . . . . 3307.2 Possibili tipi di reboot. . . . . . . . . . . . . . . . . . . . . . . . . . . 3357.3 Alcune modalita` video per il framebuffer. . . . . . . . . . . . . . . . . 3377.4 Alcuni driver SCSI supportati dal kernel Linux. . . . . . . . . . . . . 3387.5 Alcune particolari interfacce IDE riconosciute da Linux. . . . . . . . 3397.6 Alcune particolari schede audio ISA riconosciute dal driver ALSA. . 3407.7 Alcune particolari schede audio riconosciute dal driver OSS. . . . . . 3407.8 Alcune particolari schede audio PCI riconosciute dal driver ALSA. . 3417.9 Alcune particolari unita` CD-ROM riconosciute da Linux. . . . . . . . 3417.10 Elenco dei segnali inviabili ai processi. . . . . . . . . . . . . . . . . . 3727.11 Legenda delle azioni predefinite dei processi. . . . . . . . . . . . . . . 372

    8.1 Indicazione del momento di stampa. . . . . . . . . . . . . . . . . . . 3778.2 Visualizzazione delle impostazioni di a2ps con lopzione --list. . . . 379

    11.1 Combinazioni dei colori principali nella rappresentazione RGB. . . . 40011.2 Nomi delle sezioni ne file di configurazione di XFree86. . . . . . . . . 40911.3 Possibili valori per la direttiva Flags. . . . . . . . . . . . . . . . . . . 41611.4 Possibili valori per la direttiva Visual. . . . . . . . . . . . . . . . . . 41911.5 Protocolli di comunicazione con il server grafico. . . . . . . . . . . . . 42511.6 Alcuni caratteri particolari ottenibili con la tastiera italiana in X. . . 427

    13.1 Alcune estensioni utilizzate nei nomi dei pacchetti utilizzati da GNU/Li-nux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

  • ELENCO DELLE TABELLE xxv

    13.2 Campi visualizzabili dei pacchetti rpm (I parte). . . . . . . . . . . . . 45813.3 Campi visualizzabili dei pacchetti rpm (II parte). . . . . . . . . . . . 45913.4 Campi visualizzabili dei pacchetti rpm (III parte). . . . . . . . . . . . 460

    14.1 Esempio del contenuto della tabella libro. . . . . . . . . . . . . . . . 475

    16.1 Denominazione di alcuni tipi di collegamenti Ethernet. . . . . . . . . 51116.2 MTU di alcuni protocolli. . . . . . . . . . . . . . . . . . . . . . . . . 516

    17.1 Le classi degli indirizzi IP. . . . . . . . . . . . . . . . . . . . . . . . . 52117.2 Gli indirizzi IP privati. . . . . . . . . . . . . . . . . . . . . . . . . . . 52217.3 I bit del campo TOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 52517.4 I bit di precedenza del campo TOS. . . . . . . . . . . . . . . . . . . . 52617.5 Le applicazioni principali ed il loro utilizzo del campo TOS. . . . . . 52617.6 I bit del campo Flags dellIP datagram. . . . . . . . . . . . . . . . . . 52617.7 Il valore del campo Protocol dellIP datagram. . . . . . . . . . . . . . 52717.8 Le classi di opzioni dellIP datagram. . . . . . . . . . . . . . . . . . . 52817.9 I tipi di opzioni dellIP datagram. . . . . . . . . . . . . . . . . . . . . 52817.10 Possibili valori di hint del comando ping. . . . . . . . . . . . . . . . . 53017.11 Possibili valori dellexit status di ping. . . . . . . . . . . . . . . . . . 53017.12 Possibili annotazioni nelloutput di traceroute (v. RFC 1812). . . . 53317.13 I tipi di indirizzi IPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . 53417.14 Scope del multicast IPv6. . . . . . . . . . . . . . . . . . . . . . . . . 53817.15 Alcuni gruppi permanenti di multicast IPv6. . . . . . . . . . . . . . . 53817.16 I messaggi ICMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54217.17 I messaggi ICMPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    18.1 Le possibili opzioni del TCP segment. . . . . . . . . . . . . . . . . . 54818.2 I possibili valori per specificare le famiglie di protocolli. . . . . . . . . 55318.3 I possibili stati dei socket. . . . . . . . . . . . . . . . . . . . . . . . . 55418.4 I possibili tipi dei socket. . . . . . . . . . . . . . . . . . . . . . . . . . 55518.5 I possibili stati dei socket. . . . . . . . . . . . . . . . . . . . . . . . . 555

    19.1 Elenco dei general TLD del DNS di Internet. . . . . . . . . . . . . . 55919.2 Alcuni dei country code TLD del DNS di Internet. . . . . . . . . . . 55919.3 Possibili valori del campo type del RR. . . . . . . . . . . . . . . . . 56019.4 Possibili valori del campo class del RR. . . . . . . . . . . . . . . . . 56019.5 Possibili valori del campo OpCode nei messaggi del protocollo dei DNS. 56219.6 Possibili valori del campo RCode nei messaggi del protocollo dei DNS. 56319.7 Possibili valori del campo QType nei messaggi del protocollo dei DNS. 56419.8 Possibili valori del campo QClass nei messaggi del protocollo dei DNS. 56419.9 Caratteri particolari nel master file. . . . . . . . . . . . . . . . . . . . 56519.10 Unita` di misura per gli intervalli di tempo. . . . . . . . . . . . . . . . 56519.11 Campi per linvio dei messaggi e-mail. . . . . . . . . . . . . . . . . . 56919.12 Tipologie dei nodi NetBIOS. . . . . . . . . . . . . . . . . . . . . . . . 58819.13 Servizi offerti dalle risorse NetBIOS. . . . . . . . . . . . . . . . . . . 58919.14 Tipi di risorse contenute dai workgroup. . . . . . . . . . . . . . . . . 589

    20.1 Nomi delle interfacce. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59920.2 Possibili azioni su radvdv. . . . . . . . . . . . . . . . . . . . . . . . . 60120.3 I tipi famiglie di protocolli gestiti da ip. . . . . . . . . . . . . . . . . 60220.4 I possibili ambiti di visibilita` degli indirizzi IP. . . . . . . . . . . . . . 60620.5 I possibili tipi (flag) degli indirizzi IP. . . . . . . . . . . . . . . . . . . 60620.6 Protocolli di configurazione delle schede di rete. . . . . . . . . . . . . 60720.7 I tipi di classi della neighbour cache. . . . . . . . . . . . . . . . . . . 61220.8 I possibili stati nud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61320.9 Possibili famiglie di protocolli gestite da route. . . . . . . . . . . . . 61520.10 Possibili flag delloutput del comando route. . . . . . . . . . . . . . . 617

  • xxvi ELENCO DELLE TABELLE

    23.1 Esempi dei valori assunti da una funzione modulare. . . . . . . . . . 64623.2 Frequenza statistica di alcune lettere nella lingua inglese. . . . . . . . 649

    24.1 Token di AuthorizedKeysFile interpretati da sshd. . . . . . . . . . . 66624.2 Possibili valori di args per PermitRootLogin. . . . . . . . . . . . . . . 66924.3 Possibili sequenze di escape utilizzate nella comunicazione client-server. 67324.4 Possibili valori di args per la direttiva AddressFamily. . . . . . . . . . 67524.5 I possibili comandi contenuti nelle celle di TOR. . . . . . . . . . . . . 695

    25.1 Tabelle utilizzate da Netfilter. . . . . . . . . . . . . . . . . . . . . . . 70525.2 Chain predefinite di Netfilter. . . . . . . . . . . . . . . . . . . . . . . 70525.3 Stati su cui si basa Conntrack. . . . . . . . . . . . . . . . . . . . . . . 70625.4 Valori di default per exp time. . . . . . . . . . . . . . . . . . . . . . . 70625.5 Protocolli utilizzabili da netfilter. . . . . . . . . . . . . . . . . . . . . 70825.6 Valori per filtro sul campo TOS. . . . . . . . . . . . . . . . . . . . . . 71125.7 I possibili messaggi di errore da ritornare al mittente. . . . . . . . . . 714

    B.1 Utilizzo del tastierino numerico come dispositivo di puntamento. . . 753

  • Prefazione

    Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci. M. K. Gandhi

    Ad oggi, il computer e` ormai entrato a far parte di molti degli aspetti della vitaquotidiana: dalle industrie agli uffici, alle scuole, fino ad arrivare nelle case di tutti. Sonosempre di piu` le persone che portano questo strumento sempre con se, sotto forma di PC1

    portatile o palmare2 o altro dispositivo elettronico. Lavvento di Internet ha rincaratoulteriormente la dose. Pertanto, per rimanere al passo con i tempi e` praticamenteindispensabile avere delle nozioni sul funzionamento dei computer, ovvero conosceregli aspetti principali dellinformatica3, la scienza che si occupa dellautomatizzazione informaticadellelaborazione delle informazioni.

    Sebbene recentemente le multinazionali che lavorano nel campo dellinformatica ab-biano costituito un consorzio per promuovere lutilizzo di una tecnologia basata su hard-ware e software il Trusted Computing (informatica fidata)4 che sfrutta i meccanismidi cifratura al fine di rendere piu` sicuri i sistemi5, ma che di fatto considera gli utentialla stregua di virus dai quali difendersi6, ad alcune di esse va comunque riconosciutoil pregio di aver reso luso del computer alla portata di tutti, per mezzo di interfaccegrafiche intuitive ed accattivanti che nascondono i dettagli di cio` che accade effettiva-mente nel sistema. Ma questo ha altres` portato i non addetti ai lavori a credere chelinformatica sia una cosa semplice e come conseguenza, lesplosione di Internet e dellanew economy ha spinto molte persone a lavorare nel settore informatico, anche senzaaverne la necessaria competenza: purtroppo lignoranza in materia ancora presente inItalia e` tale che litaliano medio considera un guru dellinformatica chiunque non cerchidi ingoiarsi un mouse quando si trova davanti ad un computer.

    Nel presente testo saranno illustrati i vari aspetti dellinformatica, cercando di man-tenere per quanto possibile un approccio pratico, prendendo come sistema operativo diriferimento GNU/Linux. In particolare sara` considerato il kernel Linux 2.47 o superiore(il suo sviluppo procede inesorabile ...) per piattaforma Intel X386.8

    Questo documento e` una trattazione dei vari aspetti di GNU/Linux che riguardano ilsistema nel suo complesso, ponendosi come guida essenziale al suo utilizzo per chi gia` usatale sistema operativo, ma poiche i concetti saranno illustrati cercando di non dare nienteper scontato, il testo puo` risultare accessibile anche a chi si avvicina per la prima voltaal pinguino (soprannome di Linux).9 Il testo e` stato scritto tenendo bene a mente ilproverbio cinese se una persona ha fame, non darle un pesce da mangiare, ma insegnalea pescare, quindi, piuttosto che spiegare il funzionamento di una specifica applicazionee` stato ritenuto piu` opportuno illustrare il meccanismo che ne sta alla base, in maniera

    1acronimo che sta per Personal Computer, cioe` computer per uso personale.2PC che ha le dimensioni del palmo di una mano.3il termine deriva da informazione automatica.4v. http://it.wikipedia.org/wiki/Trusted computing.5la tecnologia Trusted Computing non riguarda solo i computer, ma tutti i dispositivi digitali.6v. http://www.no1984.org.7la stesura della prima versione del testo (2003.10.6) e` iniziata nellOttobre 2002, quando il kernel

    Linux 2.4 era la versione piu` recente.8per quanto possibile nel testo sono stati riportati i meccanismi di funzionamento e le caratteristiche

    del sistema, aggiornati alla versione piu` recente del kernel, per cercare di tenere il passo con levoluzionedel sistema stesso.

    9deriva dal fatto che il simbolo di Linux e` Tux, un pinguino, v. fig. 1.

    xxvii

  • xxviii PREFAZIONE

    tale che il lettore possa in seguito eventualmente approfondire i concetti appresi edadattarli al proprio caso specifico, per riuscire cos` a comprendere piu` facilmente ilfunzionamento delle varie applicazioni che li sfruttano.

    I vari argomenti non saranno trattati in maniera superficiale, ma nemmeno troppoapprofondita, anche perche si correrebbe il rischio che le informazioni riportate nel testorisultino obsolete, vista la rapidita` di sviluppo del sistema; nel testo comunque sarannopresenti riferimenti per eventuali approfondimenti, oltre ad incoraggiare il lettore a con-sultare i manuali forniti (in forma cartacea o elettronica) assieme al sistema10. Ottimefonti di spunto per gli argomenti illustrati nel presente testo sono state [1] e [2]. Per po-ter comprendere al meglio gli script di esempio presenti nel testo, si consiglia di leggeresia il cap. 3 che [9] (del quale e` possibile consultare anche una traduzione in italiano dahttp://it.tldp.org/guide/abs).

    Per la stesura del testo, al momento in lingua italiana, e` stato scelto LATEX11 perleccezionale qualita` tipografica con esso ottenibile.

    Per sfruttare al massimo il contenuto del presente testo, e` consigliabile che il lettoreabbia a disposizione un PC sul quale sia installato GNU/Linux (in caso di problemi conlinstallazione si puo` far riferimento alla guida relativa alla distribuzione12 considerata),in modo tale da sperimentare i concetti qui esposti e prendere pratica da subito conquesto sistema operativo che non e` poi cos` difficile da utilizzare come si puo` sentir direin giro, ma diventa semplice man mano che lo si conosce.

    Il presente testo e` consultabile on-line e/o scaricabile come file PDF o insieme di fileHTML da uno dei link presenti su http://vandali.org/DanieleMasini/infolinux.php.Per ottenerne copie cartacee e` opportuno rivolgersi ai centri GNUtemberg! il cui indirizzopuo` essere reperito da http://www.gnutemberg.org.

    GNU/Linux

    Nel 1991, dal lavoro di uno studente universitario, nacque il kernel di un sistema opera-tivo Unix-like13 che il progetto GNU (Gnus Not Unix)14 attendeva per la realizzazionedi un vero e proprio sistema operativo open source15. Tale kernel, denominato LinuxLinuxin onore del suo autore Linus Torvalds, unito alle librerie di sistema gia` sviluppate daGNU, dette origine a GNU/Linux, ovvero il sistema operativo Unix-like open sourceGNU/Linuxche negli ultimi anni, grazie anche ad Internet, si e` diffuso in tutto il mondo con unavelocita` senza eguali.

    Figura 1: Il simbolo del progetto GNU ed il pinguino Tux (di L. Ewing), simbolo di Linux.

    Si tenga presente che Linux e` soltanto uno dei possibili kernel del sistema

    10per una spiegazione piu` dettagliata v. cap. 1.11v. http://www.latex-project.org.12v. sez. 1.14.13un sistema che ha caratteristiche simili al sistema operativo Unix creato dai Bell Labs, una divisione

    della AT&T.14v. http://www.gnu.org.15il codice sorgente dei programmi che compongono il sistema operativo e` disponibile per chiunque

    (v. app. A).

  • GNU/LINUX xxix

    operativo GNU, ideato dalla Free Software Foundation16, un organismo fondato

    nel 1985 da R. Stallman, con lo scopo di creare del software libero, a disposizione di

    tutti, sorgenti compresi. Esistono anche altri kernel, come Hurd17, che permettono

    di far funzionare tale sistema, anche se per il momento non sono arrivati al livello

    di sviluppo di Linux.

    Grazie al fatto di essere governate dalla licenza GNU GPL (General Public Licen-se)18, quindi libere da qualunque restrizione al loro utilizzo, modifica e diffusione, le variecomponenti software del sistema operativo GNU/Linux non sono rimaste appannaggiodi una sola persona o azienda, ma hanno coinvolto nello sviluppo un gran numero di per-sone in tutto il mondo, che costituiscono quella che comunemente viene detta comunita`GNU/Linux.

    La velocita` dello sviluppo di GNU/Linux e` impressionante tanto che in pochi annitale sistema operativo e` divenuto adatto anche per utenti inesperti di informatica. In-fatti, oltre allinterfaccia a caratteri o shell (v. fig. 2), GNU/Linux e` dotato anche diuninterfaccia grafica19 (un esempio della quale e` riportato nella fig. 3) e di un corredodi software che nulla ha da invidiare a quello gia` presente in commercio per altri sistemi.

    Figura 2: Esempio di interfaccia a caratteri (shell) di GNU/Linux.

    Ma cio` che piu` di ogni altra cosa contraddistingue GNU/Linux e`, come per altri si-stemi operativi Unix-like, la sua affidabilita`. Nessun processo infatti puo` compromettereil funzionamento del sistema operativo, neanche la stessa interfaccia utente (a meno chenon si tratti di un processo che gira in kernel space). Inoltre GNU/Linux ha unaltraimportante caratteristica: puo` gestire piu` terminali per laccesso alla stessa macchina,ovvero si presenta come un vero sistema operativo multiutente. Questo va a vantaggioanche della manutenibilita` del sistema, poiche anche se un processo potesse rendereimpossibile lutilizzo di un terminale, ci sarebbe la possibilita` di accedere al sistema at-traverso un altro terminale e poter cos` terminare il processo che tiene bloccato il primoterminale.16v. http://www.fsf.org.17un insieme di miniserver basati su microkernel Mach, creati da un progetto GNU (v.

    http://www.gnu.org/software/hurd/hurd.html.18v. app. A.19in realta` per GNU/Linux sono disponibili piu` interfacce grafiche (v. cap. 11).

  • xxx PREFAZIONE

    Figura 3: Esempio di interfaccia grafica di GNU/Linux.

    GNU/Linux, inoltre, come molti programmi sviluppati per questo sistema, fa partedel software libero (free software)20 e questo e` il suo vero punto di forza. Chiunque hala liberta` di leggere, modificare e ridistribuire il codice sorgente che lo compone. Perdi piu`, sebbene si possa acquistarne una specifica distribuzione commerciale, e` possibilereperire GNU/Linux anche scaricandolo gratuitamente da Internet o tramite lacquistodi riviste mensili del settore informatico, con CD (DVD) allegati, al costo di qualcheeuro!

    La scelta di un software puo` vincolare chi lo sceglie, al produttore dello stesso. Infatti,la licenza con la quale e` distribuito un software proprietario vincola lutente finale al soloutilizzo dello stesso, negando a tutti, ad eccezione del produttore, di poter interveniresul software stesso per modificarlo (correggerlo, adattarlo alle proprie esigenze). Sie` comunque costretti ad attendere la modifica da parte del produttore, sempre che ilproduttore sia interessato ad apportare una modifica al proprio software. Con il softwarelibero, invece, viene concessa la liberta` di modifica a chiunque.

    Bisogna considerare anche il fatto che un software totalmente bug free (senza falle)e` molto difficile da realizzare (per grossi progetti, praticamente impossibile). Inoltreun bug trovato da un utilizzatore del software diviene di pubblico dominio in tempibrevissimi grazie ad Internet, cosicche chiunque puo` venire a conoscenza della fallapresente nel software e sfruttarla per comprometterne luso o addirittura danneggiarelintero sistema (questo dipende dal ruolo che riveste il software che contiene il bugallinterno del sistema). E questa possibilita` ce` per tutto il tempo che