Home Home page di Daniele Masini
HLab-Fi Home Home Page HackLab Firenze

Informatica e GNU/Linux


Informatica e GNU/Linux
 

- 2006.7.29 -

DANIELE MASINI

29 luglio 2006
Updated: $Date: 2006-10-10 10:09:33 $

Titolo originale dell’opera: Informatica e GNU/Linux
Versione 2006.7.29 del 29 luglio 2006
Numero totale di pagine: 823
Autore: Daniele Masini
Questo documento è reperibile da http://vandali.org/DanieleMasini/infolinux.html
 
 
Copyright © 2003-2006 Daniele Masini.
È permesso copiare, distribuire e/o modificare quest’opera 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 sottosezioni 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 è 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 all’opera originale, devono risultare evidenti e apportati secondo modalità appropriate alle caratteristiche dell’opera stessa. IN NESSUN CASO È COMUNQUE CONSENTITA LA MODIFICA DI QUANTO, IN MODO EVIDENTE, ESPRIME IL PENSIERO O L’OPINIONE DELL’AUTORE.
 
Quest’opera è stata realizzata nella speranza che possa risultare utile, ma SENZA ALCUNA GARANZIA ESPRESSA O IMPLICITA. Sebbene le informazioni siano state riportate in maniera tale da cercare di assicurarne quanto più possibile la correttezza e l’accuratezza, l’autore non si assume nessuna responsabilità per qualsiasi errore o danneggiamento del sistema che possa derivare in maniera diretta o meno dall’utilizzo delle informazioni in essa contenute.
Tutti i nomi di aziende, prodotti ed i relativi marchi, nonché eventuali loghi riportati nella presente opera, appartengono ai legittimi proprietari.
 
Queste condizioni e questo copyright si applicano all’opera nel suo complesso, salvo ove espressamente indicato in modo diverso.
 
 
Copyright © 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 subsections 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 conforming to the work characteristics. IN NO EVENT IS ALLOWED TO MODIFY WHAT ARE CLEARLY THE THOUGHTS, THE OPINIONS AND/OR THE FEELINGS OF THE AUTHOR.
 
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 correctness 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.

 
 
 
 
 
 
 
 

ad Eugenia
Indice
Elenco delle figure
Elenco delle tabelle
Prefazione
  GNU/Linux
  Organizzazione del testo
  Convenzioni tipografiche
  Cronologia
  Ringraziamenti
  L’autore
I  Il sistema
1 Introduzione
 1.1 Il computer
 1.2 Il sistema operativo
 1.3 La rappresentazione delle informazioni
  1.3.1 I sistemi di numerazione
  1.3.2 Bit, byte, nibble, word
  1.3.3 L’aritmetica binaria
  1.3.4 La logica binaria
  1.3.5 L’ASCII
  1.3.6 ISO 8859-X, Unicode e UTF-8
 1.4 La memorizzazione delle informazioni
 1.5 Gli utenti
 1.6 L’interfaccia utente
 1.7 L’hardware
  1.7.1 La motherboard
  1.7.2 La CPU
  1.7.3 La memoria
  1.7.4 Le periferiche
  1.7.5 I bus
  1.7.6 I controller
 1.8 I dischi
  1.8.1 CHS
  1.8.2 LBA
  1.8.3 I dischi ottici
  1.8.4 Le partizioni
  1.8.5 Il caching
  1.8.6 Impostazioni dei dischi
 1.9 Il filesystem
 1.10 Il layout della tastiera
 1.11 Il software
  1.11.1 Il kernel ed i processi
  1.11.2 Compilatore ed interprete
  1.11.3 Input, output ed exit status
  1.11.4 Le versioni
 1.12 La notifica degli eventi
 1.13 Le reti di computer
 1.14 Le distribuzioni di GNU/Linux
 1.15 L’installazione
 1.16 I pacchetti
 1.17 Reperibilità della documentazione
 1.18 Riferimenti
2 Avvio ed arresto del sistema
 2.1 Il boot
  2.1.1 Il boot loader
  2.1.2 Il MBR - Master Boot Record
  2.1.3 Il boot da dischetto
  2.1.4 LOADLIN
  2.1.5 SYSLINUX
  2.1.6 GRUB
  2.1.7 LILO
  2.1.8 initrd
 2.2 Parametri di avvio
 2.3 Avvio del sistema
 2.4 I file di configurazione
 2.5 I runlevel
 2.6 I terminali virtuali
 2.7 I daemon
  2.7.1 Il comando service
  2.7.2 inetd e xinetd
 2.8 Accesso al sistema
  2.8.1 Accesso da interfaccia carattere
  2.8.2 Accesso da interfaccia grafica
 2.9 Arresto del sistema
 2.10 Riferimenti
3 La shell ed i job
 3.1 La tastiera e l’interfaccia a caratteri
 3.2 La shell
 3.3 Le varie shell
 3.4 Bash - Bourne Again Shell
  3.4.1 Il prompt
  3.4.2 Command line editing
  3.4.3 Caratteri particolari
  3.4.4 L’ambiente
  3.4.5 Name completion
  3.4.6 Alias
  3.4.7 Command history
  3.4.8 Comandi interni ed esterni
  3.4.9 Gestione dei metacaratteri
  3.4.10 Scripting language
  3.4.11 Impostazioni
  3.4.12 La redirezione dei comandi
  3.4.13 Job management
 3.5 Riferimenti
4 Il filesystem
 4.1 I dispositivi di memoria di massa
 4.2 Partizionamento del disco
 4.3 I file di dispositivo
 4.4 Inizializzazione del filesystem
 4.5 La struttura del filesystem
  4.5.1 La struttura logica
  4.5.2 La struttura fisica
 4.6 Il filesystem ext2
  4.6.1 Struttura di base
  4.6.2 I file
  4.6.3 I tipi di file
  4.6.4 I formati dei file
  4.6.5 I permessi
  4.6.6 Debug
 4.7 Journaled filesystem
  4.7.1 ext3
 4.8 Il VFS
 4.9 mount e umount
 4.10 Filesystem all’interno di un file
 4.11 La tabella dei filesystem /etc/fstab
 4.12 “Navigare” nel filesystem
 4.13 Alcune directory particolari
  4.13.1 La directory /dev
  4.13.2 La directory /proc
  4.13.3 La directory /sys
 4.14 I permessi e l’umask
 4.15 Cambiare la root directory
 4.16 Lo swap
 4.17 Il quota
 4.18 RAID
 4.19 LVM
  4.19.1 Concetti di base
  4.19.2 Utilizzo
 4.20 RAM disk
 4.21 Copia e ripristino di partizioni
  4.21.1 Partition Image
 4.22 Montaggio automatico dei fileystem
 4.23 Comandi utili
 4.24 Riferimenti
5 Operazioni su file e directory
 5.1 Creazione di file
 5.2 Creazione di directory
 5.3 Copia di file o directory
  5.3.1 Copia di file a basso livello
 5.4 Spostamento o rinominazione di file o directory
 5.5 Modificare la data/ora di un file o directory
 5.6 Cancellazione di file o directory
 5.7 Visualizzazione del contenuto di un file
 5.8 Modifica del contenuto di un file
 5.9 Ricerca di file o nel contenuto di file
 5.10 Differenze tra file
 5.11 Ordinamento
 5.12 Archiviazione e compressione
 5.13 Le espressioni regolari
 5.14 Riferimenti
6 Utenti ed accesso al sistema
 6.1 User account
  6.1.1 La memorizzazione degli user account
  6.1.2 Il superuser
  6.1.3 Creare uno user account
  6.1.4 Modificare uno user account
  6.1.5 Cancellare uno user account
  6.1.6 Visualizzare le informazioni di uno user account
 6.2 Group account
  6.2.1 Memorizzazione dei group account
  6.2.2 Creare un group account
  6.2.3 Modificare un group account
  6.2.4 Cancellare un group account
  6.2.5 Visualizzare i dati di un group account
 6.3 Visualizzazione di UID e GID
 6.4 Modificare il proprio GID
 6.5 La cifratura della password
 6.6 Il meccanismo delle shadow password
  6.6.1 Attivare/disattivare il meccanismo delle shadow password
 6.7 Impersonare un altro utente
 6.8 Casi particolari
  6.8.1 System user e system group
  6.8.2 Gestione particolare delle utenze
 6.9 La registrazione degli eventi
  6.9.1 Il system log
  6.9.2 Altri file di log
 6.10 La libreria PAM
  6.10.1 Configurazione
 6.11 La procedura di login
  6.11.1 Accesso al terminale
  6.11.2 login
 6.12 Comandi utili
 6.13 Riferimenti
7 Il kernel ed i processi
 7.1 Il kernel
  7.1.1 Le versioni
  7.1.2 La compilazione
  7.1.3 L’avvio
  7.1.4 I parametri del kernel
 7.2 LKM - I moduli del kernel
  7.2.1 Caricamento di moduli in memoria
  7.2.2 Scarico di moduli dalla memoria
  7.2.3 Caricamento automatico dei moduli
  7.2.4 Scaricamento automatico dei moduli
  7.2.5 Elenco dei moduli caricati in memoria
 7.3 I device driver
 7.4 I processi
  7.4.1 Multitasking e multithreading
  7.4.2 I diritti di un processo
  7.4.3 Creazione di un processo
  7.4.4 Gestione della memoria
  7.4.5 Terminazione di un processo
 7.5 Lo scheduler
  7.5.1 La gestione dei processi
 7.6 La comunicazione tra processi
  7.6.1 I segnali
  7.6.2 Le pipe
  7.6.3 Le FIFO
  7.6.4 I socket
  7.6.5 I meccanismi di IPC di System V
 7.7 I file di lock
 7.8 Riferimenti
8 La stampa
 8.1 Introduzione
 8.2 Postscript e Ghostscript
  8.2.1 PPD
 8.3 Lo spooler
 8.4 CUPS
 8.5 Comandi utili
 8.6 Riferimenti
9 Il tempo
 9.1 L’orologio di sistema
  9.1.1 Impostazione della data/ora del sistema
  9.1.2 Il calendario
 9.2 La schedulazione dei job
  9.2.1 cron
  9.2.2 anacron
  9.2.3 at
  9.2.4 batch
  9.2.5 watch
 9.3 Riferimenti
10 Il suono
 10.1 Concetti di base
 10.2 La riproduzione del suono
  10.2.1 La sintesi FM
  10.2.2 La sintesi con suoni campionati
  10.2.3 Il mixing
  10.2.4 MIDI
 10.3 Configurazione
 10.4 Riferimenti
11 L’interfaccia grafica
 11.1 Concetti di base
  11.1.1 I colori e l’occhio umano
  11.1.2 I monitor
  11.1.3 Le immagini digitali
  11.1.4 La risoluzione dello schermo
  11.1.5 Le schede video
 11.2 X Window System
  11.2.1 X11
 11.3 X Display Manager
 11.4 Permessi di accesso al server grafico
 11.5 Window manager
  11.5.1 FVWM
  11.5.2 IceWM
  11.5.3 Window Maker
  11.5.4 After Step
  11.5.5 Enlightment
  11.5.6 Metacity
  11.5.7 Sawfish
 11.6 Desktop environment
  11.6.1 GNOME
  11.6.2 KDE
 11.7 I temi del desktop
 11.8 Caratteri particolari
 11.9 Gli pseudo terminali
 11.10 La gestione dei font
  11.10.1 Fontconfig
  11.10.2 X Font server
 11.11 Riferimenti
12 Applicazioni utili
 12.1 Gestione del filesystem
  12.1.1 Midnight Commander
  12.1.2 Nautilus e Konqueror
 12.2 Terminale grafico
  12.2.1 xterm, gterm e kterm
 12.3 Calcoli
 12.4 Scrittura di testo non formattato
  12.4.1 gedit
  12.4.2 SciTE
 12.5 Scrittura di testo formattato
  12.5.1 tetex
 12.6 Grafica
  12.6.1 GIMP
  12.6.2 Inkscape e Sodipodi
  12.6.3 Blender
 12.7 Audio
  12.7.1 Totem
  12.7.2 XMMS
  12.7.3 gnome-cd
 12.8 Office automation
  12.8.1 OpenOffice.org
  12.8.2 koffice
  12.8.3 Evolution
 12.9 Visualizzazione file PDF
  12.9.1 Evince
 12.10 Web browser
  12.10.1 Mozilla e Firefox
  12.10.2 Konqueror
 12.11 Tool per lo sviluppo
  12.11.1 Anjuta
  12.11.2 Glade
  12.11.3 Kdevelop
  12.11.4 Blowfish e NVU
  12.11.5 NetBeans
 12.12 Riferimenti
13 Installazione del software
 13.1 I pacchetti
  13.1.1 Pacchetti tarball
  13.1.2 Pacchetti deb
  13.1.3 Pacchetti rpm
  13.1.4 Risoluzione automatica delle dipendenze - yum
  13.1.5 Risoluzione automatica delle dipendenze - apt
 13.2 Riferimenti
14 Cenni sui database
 14.1 Introduzione
 14.2 Tipi di database
 14.3 Entità e relazioni
 14.4 I RDBMS
  14.4.1 Le tabelle
  14.4.2 Le chiavi e gli indici
  14.4.3 Le relazioni e l’integrità referenziale
  14.4.4 La normalizzazione dei dati
  14.4.5 Il linguaggio SQL
  14.4.6 Le stored procedure
  14.4.7 I trigger
  14.4.8 Le transazioni
 14.5 La gestione degli utenti
 14.6 Implementazioni di database
  14.6.1 PostgreSQL
  14.6.2 MySQL
 14.7 Riferimenti
15 Sviluppo di applicazioni
 15.1 Introduzione
 15.2 Gli algoritmi ed i programmi
  15.2.1 L’interprete
  15.2.2 Il compilatore
 15.3 I metodi di programmazione
 15.4 I linguaggi di programmazione
  15.4.1 La memorizzazione dei dati
  15.4.2 Le funzioni
  15.4.3 I commenti
  15.4.4 L’indentazione del codice
  15.4.5 Assembly
  15.4.6 C
  15.4.7 C++
  15.4.8 Java
  15.4.9 Perl
  15.4.10 Phyton
 15.5 Gli strumenti
  15.5.1 Anjuta
  15.5.2 Quanta
  15.5.3 Glade
  15.5.4 KDevelop
  15.5.5 make
 15.6 Riferimenti
II  La rete
16 Concetti di base
 16.1 Le interfacce
 16.2 I server ed i client
 16.3 I protocolli
 16.4 LAN e WAN
 16.5 Lo stack OSI
 16.6 Lo stack TCP/IP
 16.7 Altri stack di protocolli
 16.8 Il livello fisico e di collegamento
  16.8.1 Ethernet
  16.8.2 Token ring
  16.8.3 FDDI
  16.8.4 Protocolli Punto-punto
  16.8.5 MTU
 16.9 I dispositivi di rete
  16.9.1 Hub
  16.9.2 Switch
  16.9.3 Bridge
  16.9.4 Router
  16.9.5 Gateway
 16.10 Riferimenti
17 TCP/IP - Network
 17.1 Network byte order
 17.2 IP - Internet Protocol (IPv4)
  17.2.1 Gli indirizzi
  17.2.2 CIDR
  17.2.3 Il routing
  17.2.4 Unicast e multicast
  17.2.5 Il datagram IPv4
  17.2.6 Frammentazione
  17.2.7 Diagnosi di problemi di connettività
 17.3 IP - Internet Protocol (IPv6)
  17.3.1 Gli indirizzi
  17.3.2 Il datagram IPv6
  17.3.3 Frammentazione
 17.4 ICMP - Internet Control Message Protocol
 17.5 La scoperta del vicinato
  17.5.1 ARP - Address Resolution Protocol
  17.5.2 NDP - Neighborhood Discovery Protocol
 17.6 Riferimenti
18 TCP/IP - Transport
 18.1 Porte e socket
 18.2 UDP - User Datagram Protocol
  18.2.1 L’UDP datagram
 18.3 TCP - Transmission Control Protocol
  18.3.1 Il TCP segment
  18.3.2 La connessione
 18.4 Comunicazione tra client e server
 18.5 netstat e tcpdump
 18.6 Riferimenti
19 TCP/IP - Application
 19.1 I nomi di dominio
  19.1.1 DNS - Domain Name System
 19.2 La posta elettronica
  19.2.1 La scrittura dei messaggi
  19.2.2 SMTP - Simple Mail Transfer Protocol
  19.2.3 POP - Post Office Protocol
  19.2.4 IMAP - Internet Message Access Protocol
  19.2.5 MIME - Multipurpose Internet Mail Extensions
  19.2.6 Problemi con la e-mail
 19.3 Il web
  19.3.1 HTTP - HyperText Transfer Protocol
  19.3.2 Apache
  19.3.3 Application server
  19.3.4 JSP, applet Java e Java bean
  19.3.5 CMS - Content Management System
  19.3.6 HTTPS - Secure HTTP
 19.4 SOAP - Simple Object Access Protocol
 19.5 Trasferimento di file
  19.5.1 FTP - File Transfer Protocol
 19.6 NTP - Network Time Protocol
 19.7 Configurazione automatica delle interfacce
  19.7.1 DHCP - Dynamic Host Control Protocol
 19.8 Samba
  19.8.1 Elementi di NetBIOS
  19.8.2 Samba in dettaglio
 19.9 Accesso remoto
  19.9.1 telnet
  19.9.2 rlogin, rsh e rcp
 19.10 Gestione automatica dei router
  19.10.1 RIP - Routing Information Protocol
  19.10.2 BGP - Border Gateway Protocol
  19.10.3 EGP - Exterior Gateway Protocol
  19.10.4 HELLO -
  19.10.5 OSPF - Open Shortest Path First
 19.11 Riferimenti
20 Impostazioni di rete
 20.1 Le interfacce di rete
 20.2 Impostazioni di sistema
 20.3 Introduzione ad ip
 20.4 Impostazioni delle interfacce
  20.4.1 Interfacce ethernet
  20.4.2 Interfacce dial-up
 20.5 Gestione della neighbour cache
 20.6 La gestione delle routing table
 20.7 La risoluzione dei nomi
 20.8 Collegamenti dial-up
  20.8.1 Linea analogica
  20.8.2 Linea ISDN
  20.8.3 Linea xDSL
 20.9 Channel bonding
 20.10 Wireless
  20.10.1 Wi-Fi
  20.10.2 Bluetooth
  20.10.3 IrDA (Infrared Device Application)
 20.11 Riferimenti
21 Gestione centralizzata degli utenti
 21.1 NIS
 21.2 LDAP - Lightweight Directory Access Protocol
  21.2.1 La struttura delle informazioni
  21.2.2 Directory service distribuiti
  21.2.3 Popolazione del DIB
 21.3 OpenLDAP
 21.4 Riferimenti
22 Cluster
 22.1 High Availability (HA)
 22.2 Load balancing
 22.3 High Performance Computing (HPC)
 22.4 Riferimenti
III  Sicurezza
23 Protezione delle informazioni
 23.1 Concetti generali
 23.2 Steganografia
 23.3 Crittografia
  23.3.1 Un po’ di matematica
  23.3.2 Cifratura a chiave simmetrica
  23.3.3 Cifratura a chiave asimmetrica
  23.3.4 Protocollo Diffie-Hellman
  23.3.5 Funzioni hash
  23.3.6 PKI - Public Key Infrastructure
 23.4 La firma digitale
  23.4.1 Il MAC - Message Authentication Code
 23.5 I certificati digitali
 23.6 Filesystem cifrati
  23.6.1 Filesystem cifrati su file
 23.7 Riferimenti
24 Comunicazioni sicure
 24.1 SSL/TLS - Secure Sockets Layer / Transport Layer Security
 24.2 SSH - Secure SHell
  24.2.1 Autenticazione
  24.2.2 Login
  24.2.3 Generazione di chiavi asimmetriche
  24.2.4 ssh
  24.2.5 scp
  24.2.6 sftp
 24.3 GNU Privacy Guard
  24.3.1 Generazione delle chiavi
  24.3.2 Esportazione della chiave pubblica
  24.3.3 Creazione di un certificato di revoca
  24.3.4 Importazione di una chiave pubblica
  24.3.5 La fiducia nelle chiavi
  24.3.6 Rimozione di chiavi
  24.3.7 Cifratura e decifratura
  24.3.8 Firma digitale
 24.4 Cifratura della posta elettronica
 24.5 VPN - Virtual Private Network
 24.6 Kerberos
 24.7 Comunicazioni anonime
  24.7.1 Posta elettronica anonima
  24.7.2 Navigazione anonima
 24.8 Riferimenti
25 Protezione del sistema
 25.1 Gli attacchi
 25.2 L’installazione del software
 25.3 I firewall
  25.3.1 Packet filtering
 25.4 Proxy server
  25.4.1 Squid
  25.4.2 Privoxy
 25.5 IDS - Intrusion Detection System
 25.6 Il software
  25.6.1 Il buffer overflow
 25.7 Riferimenti
IV  Appendici
A Il software e le licenze
 A.1 Le licenze
 A.2 Il software libero
 A.3 Altre categorie di software
 A.4 Garanzie del software
 A.5 GNU General Public License
 A.6 Licenza Pubblica Generica GNU
 A.7 Riferimenti
B Utilizzo pratico
 B.1 Sistema
  B.1.1 Problemi di avvio del DVD di installazione
  B.1.2 Avvio con boot loader di Windows
  B.1.3 Problemi con il runlevel di default
  B.1.4 Dimenticata la password del superuser?
  B.1.5 Controllare lo shutdown con Ctrl-Alt-Del
  B.1.6 Sapere in quale CD è contenuto un pacchetto (Fedora)
 B.2 Dispositivi
  B.2.1 Configurazione di USB flash memory
 B.3 Interfaccia grafica
  B.3.1 Personalizzazione dei cursori del mouse
  B.3.2 Personalizzazione dei menù di Gnome
  B.3.3 Utilizzo del cursore senza dispositivo di puntamento
  B.3.4 Attivare il tasto NumLock all’avvio dell’interfaccia
 B.4 Interfaccia carattere
  B.4.1 Impostare il layout di tastiera
  B.4.2 Impostare la risoluzione dello schermo
  B.4.3 Personalizzare il prompt
  B.4.4 Variare il font
 B.5 Riferimenti
C Licenza
 C.1 GNU Free Documentation License
 C.2 GNU Free Documentation License (italiano)
Indice analitico
Bibliografia

[Avanti]