Home Home page di Daniele Masini
Home Home page di TechTown.iT

Informatica e GNU/Linux


Informatica e GNU/Linux
 

- 2005.1.16 -

DANIELE MASINI

16 gennaio 2005

Titolo originale dell’opera: Informatica e GNU/Linux
Versione 2005.1.16 del 16 gennaio 2005
Numero totale di pagine: 743
Autore: Daniele Masini
Questo documento è reperibile da http://vandali.org/DanieleMasini/infolinux.php
 
 
Copyright © 2003-2005 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-2005 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
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 La logica binaria
  1.3.4 L’ASCII
  1.3.5 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 Compilatore ed interprete
  1.11.2 Input, output ed exit status
  1.11.3 Le versioni
 1.12 Il kernel ed i processi
 1.13 La notifica degli eventi
 1.14 Le reti di computer
 1.15 Le distribuzioni di GNU/Linux
 1.16 L’installazione
 1.17 I pacchetti
 1.18 Reperibilità della documentazione
 1.19 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 Il filesystem
 3.1 I dispositivi di memoria di massa
 3.2 Partizionamento del disco
 3.3 I file di dispositivo
 3.4 Inizializzazione del filesystem
 3.5 La struttura del filesystem
  3.5.1 La struttura logica
  3.5.2 La struttura fisica
 3.6 Il filesystem ext2
  3.6.1 Struttura di base
  3.6.2 I file
  3.6.3 I tipi di file
  3.6.4 I formati dei file
  3.6.5 I permessi
  3.6.6 Debug
 3.7 Journaled filesystem
  3.7.1 ext3
 3.8 Il VFS
 3.9 mount e umount
 3.10 “Navigare” nel filesystem
 3.11 Alcune directory particolari
  3.11.1 La directory /dev
  3.11.2 La directory /proc
  3.11.3 La directory /sys
 3.12 I permessi e l’umask
 3.13 Limitazioni di accesso al filesystem
 3.14 Lo swap
 3.15 Il quota
 3.16 RAID
 3.17 LVM
  3.17.1 Concetti di base
  3.17.2 Utilizzo
 3.18 RAM disk
 3.19 Copia e ripristino di partizioni
  3.19.1 Partition Image
 3.20 Montaggio automatico dei fileystem
 3.21 Comandi utili
 3.22 Riferimenti
4 Operazioni su file e directory
 4.1 Creazione di file
 4.2 Creazione di directory
 4.3 Copia di file o directory
  4.3.1 Copia di file a basso livello
 4.4 Spostamento o rinominazione di file o directory
 4.5 Modificare la data/ora di un file o directory
 4.6 Cancellazione di file o directory
 4.7 Visualizzazione del contenuto di un file
 4.8 Modifica del contenuto di un file
 4.9 Ricerca di file o nel contenuto di file
 4.10 Differenze tra file
 4.11 Ordinamento
 4.12 Archiviazione e compressione
 4.13 Le espressioni regolari
 4.14 Riferimenti
5 Utenti ed accesso al sistema
 5.1 User account
 5.2 Group account
 5.3 La cifratura della password
 5.4 Il meccanismo delle shadow password
  5.4.1 Attivare/disattivare il meccanismo delle shadow password
 5.5 Impersonare un altro utente
 5.6 Casi particolari
  5.6.1 System user e system group
  5.6.2 Gestione particolare delle utenze
 5.7 La registrazione degli eventi
  5.7.1 Il system log
  5.7.2 Altri file di log
 5.8 La libreria PAM
  5.8.1 Configurazione
 5.9 La procedura di login
  5.9.1 Accesso al terminale
  5.9.2 login
 5.10 Comandi utili
 5.11 Riferimenti
6 Il kernel ed i processi
 6.1 Il kernel
  6.1.1 Le versioni
  6.1.2 La compilazione
  6.1.3 L’avvio
  6.1.4 I parametri del kernel
 6.2 LKM - I moduli del kernel
  6.2.1 Caricamento di moduli in memoria
  6.2.2 Scarico di moduli dalla memoria
  6.2.3 Caricamento automatico dei moduli
  6.2.4 Elenco dei moduli caricati in memoria
 6.3 I device driver
 6.4 I processi
  6.4.1 Multitasking e multithreading
  6.4.2 I diritti di un processo
  6.4.3 Creazione di un processo
  6.4.4 Gestione della memoria
  6.4.5 Terminazione di un processo
 6.5 Lo scheduler
  6.5.1 La gestione dei processi
 6.6 La comunicazione tra processi
  6.6.1 I segnali
  6.6.2 Le pipe
  6.6.3 Le FIFO
  6.6.4 I socket
  6.6.5 I meccanismi di IPC di System V
 6.7 I file di lock
 6.8 Riferimenti
7 La shell ed i job
 7.1 La shell
 7.2 Le varie shell
 7.3 Bash - Bourne Again Shell
  7.3.1 Il prompt
  7.3.2 Command line editing
  7.3.3 Caratteri particolari
  7.3.4 L’ambiente
  7.3.5 Name completion
  7.3.6 Alias
  7.3.7 Command history
  7.3.8 Comandi interni ed esterni
  7.3.9 Gestione dei metacaratteri
  7.3.10 Scripting language
  7.3.11 Impostazioni
  7.3.12 La redirezione dei comandi
  7.3.13 Job management
 7.4 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 wavetable
  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 Le immagini
  11.1.2 La risoluzione dello schermo
  11.1.3 Le schede video
 11.2 X Window System
  11.2.1 X11
 11.3 X Display Manager
 11.4 Window manager
  11.4.1 FVWM
  11.4.2 IceWM
  11.4.3 Window Maker
  11.4.4 After Step
  11.4.5 Enlightment
  11.4.6 Metacity
  11.4.7 Sawfish
 11.5 Desktop environment
  11.5.1 GNOME
  11.5.2 KDE
 11.6 I temi del desktop
 11.7 Caratteri particolari
 11.8 Gli pseudo terminali
 11.9 La gestione dei font
  11.9.1 Fontconfig
  11.9.2 X Font server
 11.10 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.3 Calcoli
 12.4 Scrittura di testi
 12.5 Grafica
  12.5.1 GIMP
  12.5.2 Sodipodi
 12.6 Audio
 12.7 Office automation
  12.7.1 OpenOffice.org
  12.7.2 Evolution
 12.8 Visualizzazione file PDF
 12.9 Web browser
 12.10 Tool per lo sviluppo
 12.11 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.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.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 Protocolli Punto-punto
  16.8.4 MTU
 16.9 I dispositivi di rete
  16.9.1 Hub
  16.9.2 Bridge
  16.9.3 Switch
  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.9 Accesso remoto
  19.9.1 rlogin, rsh e rcp
  19.9.2 telnet
 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 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 Load balancing
 22.2 High Availability (HA)
 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 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 Eliminiazione di chiavi
  24.3.6 Cifratura e decifratura
  24.3.7 Firma digitale
 24.4 Cifratura della posta elettronica
 24.5 VPN - Virtual Private Network
 24.6 Kerberos
 24.7 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.3.2 Screening router e DMZ
 25.4 Proxy server
 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 Copyright, licenze e brevetti
 A.2 Categorie di software
 A.3 Il software libero
 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 Avvio con boot loader di Windows
  B.1.2 Problemi con il runlevel di default
  B.1.3 Dimenticata la password del superuser?
  B.1.4 Controllare lo shutdown con Ctrl-Alt-Del
  B.1.5 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 Cambiare la risoluzione dello schermo
  B.4.2 Personalizzare il prompt
  B.4.3 Variare il font
 B.5 Riferimenti
C Licenza
 C.1 GNU Free Documentation License
 C.2 Licenza per documentazione libera GNU
Indice analitico
Bibliografia

[Avanti]