Introduzione A Linux
Introduzione A Linux
Introduzione a Linux
Machtelt Garrels
Xalasys.com
<tille_want_no_spam_at_xalasys_dot_com>
Versione 1.23 Edizione 20060725
Copyright © 2002, 2003, 2004, 2005, 2006 Machtelt Garrels
Prima pubblicazione Dicembre 2002
Traduzione in italiano (v. 1.1 rev. 1) di Andrea Montagner
1
Introduzione a Linux
Indice generale
Introduzione..........................................................................................................................................9
1. Perché questa guida?....................................................................................................................9
2. Chi dovrebbe leggere questo libro?..............................................................................................9
3. Nuove versioni e disponibilità......................................................................................................9
4. Storia delle revisioni..................................................................................................................10
5. Contributi...................................................................................................................................12
6. Feedback....................................................................................................................................13
7. Informazioni sul copyright.........................................................................................................13
8. Cosa vi serve?............................................................................................................................13
9. Convenzioni utilizzate in questo documento..............................................................................14
10. Organizzazione di questo documento.......................................................................................15
Capitolo 1. Cos'è Linux?.....................................................................................................................16
1.1. Storia........................................................................................................................................16
1.1.1. UNIX................................................................................................................................16
1.1.2. Linus e Linux...................................................................................................................17
1.1.3. Attuale utilizzazione dei sistemi Linux............................................................................18
1.2. L'interfaccia utente..................................................................................................................19
1.2.1. Linux è difficile?..............................................................................................................19
1.2.2. Linux per utenti non esperti.............................................................................................19
1.3. Linux ha futuro?......................................................................................................................20
1.3.1. Open Source.....................................................................................................................20
1.3.2. Dieci anni di esperienza al vostro servizio......................................................................21
1.4. Caratteristiche di Linux...........................................................................................................22
1.4.1. Vantaggi di Linux............................................................................................................22
1.4.2. Svantaggi di Linux..........................................................................................................24
1.5. Sapore di Linux.......................................................................................................................25
1.5.1. Linux e GNU...................................................................................................................25
1.5.2. GNU/Linux......................................................................................................................26
1.5.3. Quale distribuzione dovrei installare?.............................................................................26
1.6. Sommario................................................................................................................................27
1.7. Esercizi....................................................................................................................................27
Capitolo 2. Avvio rapido.....................................................................................................................29
2.1. Connettersi, attivare l'interfaccia utente e disconnettersi........................................................29
2.1.1. Introduzione.....................................................................................................................29
2.1.2. Modalità grafica...............................................................................................................29
2.1.3. Modalità testo...................................................................................................................31
2.2. Rudimenti essenziali...............................................................................................................32
2.2.1. I comandi.........................................................................................................................32
2.2.2. Annotazioni generali.......................................................................................................32
2.2.3. Usare le caratteristiche di Bash.......................................................................................33
2.3. Cercare aiuto...........................................................................................................................35
2.3.1. State attenti......................................................................................................................35
2.3.2. Le pagine man.................................................................................................................35
2.3.3. Maggiori informazioni....................................................................................................37
2.4. Sommario................................................................................................................................41
2
Introduzione a Linux
2.5. Esercizi....................................................................................................................................41
2.5.1. Connessione e disconnessione.........................................................................................42
2.5.2. Password..........................................................................................................................42
2.5.3. Le directory.....................................................................................................................43
2.5.4. I file.................................................................................................................................44
2.5.5. Cercare aiuto...................................................................................................................44
Capitolo 3. File e file system..............................................................................................................45
3.1. Panoramica generale sul file system Linux.............................................................................45
3.1.1. I file..................................................................................................................................45
3.1.2. Il partizionamento............................................................................................................47
3.1.3. Di più sulla struttura del file system................................................................................51
3.2. Orientarsi nel file system........................................................................................................54
3.2.1. Il percorso........................................................................................................................54
3.2.2. Percorsi assoluti e relativi...............................................................................................56
3.2.3. I file e le directory più importanti...................................................................................56
3.2.4. I file di configurazione più importanti............................................................................59
3.2.5. I più comuni device.........................................................................................................61
3.2.6. I più comuni file di variabili...........................................................................................62
3.3. Manipolare i file.....................................................................................................................64
3.3.1. Vedere le proprietà dei file..............................................................................................64
3.3.2. Creare e cancellare file e directory..................................................................................66
3.3.3. Trovare i file....................................................................................................................70
3.3.4. Più modi di vedere il contenuto dei file...........................................................................74
3.3.5. Collegare i file.................................................................................................................76
3.4. La sicurezza dei file................................................................................................................78
3.4.1. Diritti di accesso: la prima linea di difesa di Linux.........................................................78
3.4.2. Gli strumenti...................................................................................................................80
3.5. Sommario................................................................................................................................86
3.6. Esercizi....................................................................................................................................87
3.6.1. Partizioni..........................................................................................................................87
3.6.2. Percorsi............................................................................................................................88
3.6.3. Viaggio nel sistema.........................................................................................................88
3.6.4. Manipolare i file..............................................................................................................88
3.6.5. Permessi dei file..............................................................................................................89
Capitolo 4. I processi..........................................................................................................................90
4.1. I processi in dettaglio..............................................................................................................90
4.1.1. Multiutenza e multitasking..............................................................................................90
4.1.2. Tipi di processi................................................................................................................90
4.1.3. Attributi dei processi.......................................................................................................93
4.1.4. Visualizzazione delle informazioni sui processi..............................................................93
4.1.5. Vita e morte di un processo.............................................................................................96
4.1.6. SUID e SGID...................................................................................................................98
4.2. Processo d'avvio, init e shutdown.........................................................................................100
4.2.1. Introduzione...................................................................................................................100
Il processo di avvio.................................................................................................................101
4.2.3. Caratteristiche di GRUB................................................................................................101
3
Introduzione a Linux
4.2.4. Init.................................................................................................................................102
4.2.5. I livelli di esecuzione di init..........................................................................................104
4.2.6. Lo spegnimento.............................................................................................................106
4.3. La gestione dei processi........................................................................................................106
4.3.1. Lavori per l'amministratore di sistema...........................................................................106
4.3.2. Quanto tempo richiede?.................................................................................................107
4.3.4. Le prestazioni................................................................................................................108
4.3.4. Il carico..........................................................................................................................108
4.3.5. Posso fare qualcosa come utente?.................................................................................108
4.4. Temporizzare i processi.........................................................................................................113
4.4.1. Usate quel tempo di ozio!..............................................................................................113
4.4.2. Il comando sleep............................................................................................................114
4.4.3. Il comando at.................................................................................................................114
4.4.4. Cron e crontab...............................................................................................................115
4.5. Sommario..............................................................................................................................117
4.6. Esercizi..................................................................................................................................118
4.6.1. In generale......................................................................................................................118
4.6.2. Avvio, init, ecc...............................................................................................................119
4.6.3. Pianificazione................................................................................................................119
Capitolo 5. Redirezione dell'I/O.......................................................................................................120
5.1. Semplici redirezioni...............................................................................................................120
5.1.1. Cosa sono lo standard input e lo standard output?.........................................................120
5.1.2. Gli operatori di redirezione............................................................................................120
5.2. Caratteristiche avanzate della redirezione.............................................................................123
5.2.1. Uso dei descrittori di file...............................................................................................123
5.2.2. Esempi...........................................................................................................................124
5.3. Filtri.......................................................................................................................................125
5.3.1. Di più su grep.................................................................................................................125
5.3.2. Filtraggio dei dati in uscita............................................................................................126
5.4. Sommario..............................................................................................................................127
5.5. Esercizi..................................................................................................................................127
Capitolo 6. Gli editor di testo............................................................................................................129
6.1. Editor di testo.........................................................................................................................129
6.1.1. Perché dovrei usare un editor?........................................................................................129
6.1.2. Quale editor dovrei usare?.............................................................................................129
6.1.3. Vi(m)..............................................................................................................................130
6.2. Impiego dell'editor Vim.........................................................................................................131
6.2.1. Due modi........................................................................................................................131
6.2.2. Comandi di base............................................................................................................131
6.2.3. La maniera semplice......................................................................................................133
6.3. Linux in ufficio.....................................................................................................................133
6.3.1. Storia..............................................................................................................................133
6.3.2. Suite e programmi.........................................................................................................133
6.3.3. Note...............................................................................................................................134
6.4. Sommario..............................................................................................................................135
6.5. Esercizi..................................................................................................................................135
4
Introduzione a Linux
Capitolo 7. Home sweet /home.........................................................................................................136
7.1. Corretta gestione della casa in generale.................................................................................136
7.1.1. Introduzione....................................................................................................................136
7.1.2. Fare spazio.....................................................................................................................136
7.2. Il vostro ambiente testuale.....................................................................................................139
7.2.1. Le variabili ambientali...................................................................................................139
7.2.2. I file di impostazione della shell....................................................................................142
7.2.3. Un tipico insieme di file di configurazione...................................................................143
7.2.4. Il prompt di Bash...........................................................................................................145
7.2.5. Gli script di shell............................................................................................................147
7.3. L'ambiente grafico.................................................................................................................150
7.3.1. Introduzione...................................................................................................................150
7.3.2. Il sistema X Window.....................................................................................................150
7.3.3. Configurazione di un server X.......................................................................................152
7.4. Specifiche impostazioni di regione.......................................................................................153
7.4.1. Configurazione della tastiera.........................................................................................153
7.4.2. I tipi di caratteri.............................................................................................................153
7.4.3. Data e fusi orari.............................................................................................................154
7.4.4. La lingua........................................................................................................................154
7.4.5. Specifiche informazioni nazionali.................................................................................155
7.5. Installare nuovo software.......................................................................................................156
7.5.1. In generale......................................................................................................................156
7.5.2. I formati dei pacchetti....................................................................................................156
7.5.3. Gestione ed aggiornamenti automatici dei pacchetti.....................................................158
7.5.4. Aggiornare il kernel.......................................................................................................160
7.5.5. Installare pacchetti extra dai CD di installazione...........................................................161
7.6. Sommario..............................................................................................................................162
7.7. Esercizi..................................................................................................................................163
7.7.1. L'ambiente della shell.....................................................................................................163
7.7.2. L'ambiente grafico.........................................................................................................163
Capitolo 8. Stampanti e stampe........................................................................................................164
8.1. I file di stampa.......................................................................................................................164
8.1.1. Stampare da linea di comando........................................................................................164
8.1.2. Impostazione dei formati...............................................................................................166
8.2. Il lato server...........................................................................................................................167
8.2.1. In generale......................................................................................................................167
8.2.2. Configurazione grafica della stampante........................................................................167
8.2.3. L'acquisto di una stampante per Linux..........................................................................167
8.3. Problemi di stampa................................................................................................................168
8.3.1. File sbagliato..................................................................................................................168
8.3.2. La mia stampa non è riuscita.........................................................................................168
8.4. Sommario..............................................................................................................................170
8.5. Esercizi..................................................................................................................................170
Capitolo 9. Tecniche fondamentali di backup...................................................................................172
9.1. Introduzione...........................................................................................................................172
9.1.1. Preparazione dei vostri dati............................................................................................172
5
Introduzione a Linux
9.2. Spostare i vostri dati verso un'unità di backup......................................................................177
9.2.1. Copiare su un disco floppy............................................................................................177
9.2.2. Fare una copia con un masterizzatore di CD.................................................................178
9.2.3. Copie di sicurezza su/da unità jazz, periferiche USB e simili.......................................179
9.2.4. Copie di sicurezza con una periferica a nastro..............................................................180
9.2.5. Strumenti dalla vostra distribuzione..............................................................................180
9.3. Uso di rsync...........................................................................................................................181
9.3.1. Introduzione...................................................................................................................181
9.3.2. Un esempio: rsync su una periferica USB di massa......................................................181
9.4. Sommario..............................................................................................................................181
9.5. Esercizi..................................................................................................................................182
Capitolo 10. Le reti...........................................................................................................................183
10.1. Panoramica sulle reti............................................................................................................183
10.1.1. Protocolli di rete...........................................................................................................183
10.1.2. Configurazioni ed informazioni di rete........................................................................186
10.2. Applicazioni Internet/Intranet.............................................................................................192
10.2.1. Tipi di server................................................................................................................192
10.2.2. La posta........................................................................................................................194
10.2.3. Il web...........................................................................................................................196
10.2.4. File Transfer Protocol..................................................................................................196
10.2.5. Chat e conferenze........................................................................................................197
10.2.6. Servizi per notizie........................................................................................................198
10.2.7. Il Domain Name System..............................................................................................199
10.2.8. DHCP...........................................................................................................................199
10.2.9. Servizi di autenticazione..............................................................................................199
10.3. Esecuzione remota di applicazioni......................................................................................202
10.3.1. Introduzione.................................................................................................................202
10.3.2. Rsh, rlogin e telnet.......................................................................................................202
10.3.3. Il sistema X Window...................................................................................................203
10.3.4. La suite SSH................................................................................................................204
10.3.5. VNC.............................................................................................................................208
10.3.6. Il protocollo rdesktop..................................................................................................208
10.3.7. Cygwin.........................................................................................................................209
10.4. La sicurezza.........................................................................................................................209
10.4.1. Introduzione.................................................................................................................209
10.4.2. I servizi........................................................................................................................210
10.4.3. Aggiornare con regolarità............................................................................................210
10.4.4. I firewall e le politiche d'accesso.................................................................................211
10.4.5. La scoperta delle intrusioni.........................................................................................212
10.4.6. Ulteriori suggerimenti..................................................................................................213
10.4.7. Sono stato attaccato dagli hacker?...............................................................................213
10.4.8. Ripristinare dopo un'intrusione....................................................................................214
10.5. Sommario............................................................................................................................214
10.6. Esercizi................................................................................................................................215
10.6.1. Le reti in generale.........................................................................................................215
10.6.2. Connessioni remote......................................................................................................215
6
Introduzione a Linux
10.6.3. La sicurezza.................................................................................................................215
Capitolo 11. Suoni e video................................................................................................................216
11.1. Le basi dell'audio..................................................................................................................216
11.1.1. Installazione..................................................................................................................216
11.1.2. I driver e l'architettura...................................................................................................216
11.2 Riproduzione audio e video..................................................................................................217
11.2.1 Ascolto e copia dei CD..................................................................................................217
11.2.2. La riproduzione d file musicali....................................................................................217
11.2.3. La registrazione............................................................................................................219
11.3. Riproduzione video, guardare flussi e televisione...............................................................220
11.4. Telefonia Internet.................................................................................................................221
11.4.1. Che cos'è?.....................................................................................................................221
11.4.2. Cosa vi serve?..............................................................................................................221
11.5. Sommario............................................................................................................................222
11.6. Esercizi................................................................................................................................222
Appendice A. Dove andare da qui?..................................................................................................224
A.1. Libri utili...............................................................................................................................224
A.1.1. Linux in generale...........................................................................................................224
A.1.2. Editor............................................................................................................................224
A.1.3. Shell..............................................................................................................................224
A.1.4. X Window.....................................................................................................................224
A.1.5. Reti................................................................................................................................225
A.2. Siti utili.................................................................................................................................225
A.2.1. Informazioni generali....................................................................................................225
A.2.2. Riferimenti a specifiche architetture............................................................................225
A.2.3 Distribuzioni..................................................................................................................225
A.2.4. Software........................................................................................................................226
Appendice B. Comandi DOS contro Linux......................................................................................227
Appendice C. Caratteristiche della shell...........................................................................................228
C.1. Caratteristiche comuni..........................................................................................................228
C.2. Caratteristiche diverse..........................................................................................................229
Appendice D. GNU Free Documentation License...........................................................................232
D.1. PREAMBLE.........................................................................................................................232
D.2. APPLICABILITY AND DEFINITIONS............................................................................232
D.3. VERBATIM COPYING......................................................................................................233
D.4. COPYING IN QUANTITY.................................................................................................234
D.5. MODIFICATIONS..............................................................................................................234
D.6. COMBINING DOCUMENTS.............................................................................................236
D.7. COLLECTIONS OF DOCUMENTS...................................................................................236
D.8. AGGREGATION WITH INDEPENDENT WORKS..........................................................237
D.9. TRANSLATION..................................................................................................................237
D.10. TERMINATION.................................................................................................................237
D.11. FUTURE REVISIONS OF THIS LICENSE......................................................................237
D.12. ADDENDUM: How to use this License for your documents............................................238
Glossario...........................................................................................................................................239
A...................................................................................................................................................239
7
Introduzione a Linux
B...................................................................................................................................................240
C...................................................................................................................................................240
D...................................................................................................................................................241
E...................................................................................................................................................242
F...................................................................................................................................................242
G...................................................................................................................................................243
H..................................................................................................................................................244
I....................................................................................................................................................244
J....................................................................................................................................................245
K...................................................................................................................................................245
L...................................................................................................................................................245
M..................................................................................................................................................246
N...................................................................................................................................................247
O...................................................................................................................................................248
P...................................................................................................................................................248
Q...................................................................................................................................................249
R...................................................................................................................................................249
S...................................................................................................................................................250
T...................................................................................................................................................251
U...................................................................................................................................................252
V...................................................................................................................................................253
W..................................................................................................................................................253
X...................................................................................................................................................254
Z...................................................................................................................................................255
8
Introduzione a Linux
Introduzione
Figura 1. Copertina di “Introduction to Linux”
9
Introduzione a Linux
La guida è stata tradotta in Hindi da:
• Alok Kumar
• Dhananjay Sharma
• Kapil
• Puneet Goel
• Ravikant Yuyutsu
10
Introduzione a Linux
11
Introduzione a Linux
5. Contributi
Molte grazie alle persone che hanno condiviso le loro esperienze e, in particolare, agli utenti Linux
del Belgio per avermi ascoltato fino in fondo ogni giorno sempre generosi nei loro commenti.
Pure un pensiero speciale a Tabatha Marshall per aver fatto sia una revisione realmente minuziosa,
sia il controllo ortografico e stilistico, e a Eugene Crosser per aver individuato gli errori che noi due
avevamo trascurato.
E grazie a tutti i lettori che mi hanno avvisato degli argomenti mancanti ed a chi ha aiutato a togliere
gli ultimi errori, le definizioni e i caratteri poco chiari attraverso le difficoltà di scrivermi tutte le
loro segnalazioni. Quelle sono le persone che mi hanno aiutato a mantenere aggiornata questa
guida, come Filipus Klutiero che ha effettuato una revisione completa nel 2005 e nel 2006 ed
Alexey Eremenko che mi ha inviato la base per il capitolo 11.
Infine, un grosso ringraziamento ai volontari che stanno attualmente traducendo questo documento
in francese, svedese, tedesco, farsi, hindi e altre lingue ancora. E' un grosso lavoro che non va
disprezzato: ammiro il vostro coraggio.
12
Introduzione a Linux
6. Feedback
Informazioni perdute, collegamenti perduti, caratteri perduti? Scrivete per posta elettronica al
manutentore di questo documento:
<tille wants no spam at xalasys dot com>
Non scordatevi di controllare prima l'ultima versione!
E' garantito il permesso di copiare, distribuire e/o modificare questo documento sotto i termini della
GNU Free Documentation License, Versione 1.2 o qualsiasi versione più recente pubblicata dalla
Free Software Foundation. Una copia della licenza è inclusa nell'Appendice D intitolata “GNU Free
Documentation License”.
Leggete il Manifesto GNU se volete sapere perché è stata adottata tale licenza per questo libro.
L'autrice e l'editore hanno fatto ogni sforzo nella preparazione di questo libro per assicurare
l'accuratezza delle informazioni. Comunque le informazioni contenute in questo libro sono offerte
senza garanzie, sia espresse che implicite. Né l'autrice, né l'editore, né alcun venditore o distributore
saranno responsabili per qualsiasi danno causato o asseritamente causato in modo diretto o indiretto
da questo libro.
I loghi, i marchi e i simboli utilizzati in questo libro sono di proprietà dei loro rispettivi proprietari.
8. Cosa vi serve?
Vi servono un computer e un supporto contenente una distribuzione Linux. La maggior parte di
questa guida è applicabile a tutte le distribuzioni Linux e ad UNIX in generale. A parte il tempo non
ci sono altre richieste specifiche.
Lo “Installation HOWTO” contiene utili informazioni su come ottenere software Linux ed
installarlo sui vostri computer: tratta anche delle richieste hardware e della coesistenza con altri
sistemi operativi.
Immagini CD possono essere scaricate da linuxiso.com ed in altri posti, vedi Appendice A.
Un'interessante alternativa per quelli che non osano installare Linux nelle loro macchine è costituita
dalle distribuzioni Linux che si possono avviare da un CD, come quella Knoppix.
13
Introduzione a Linux
Tavola 1. Convenzioni tipografiche e di utilizzo
Tipo di testo Significato
“Testo tra virgolette” Citazioni da persone, output di computer citato.
Vista da terminale Input e output testuale di computer catturato dal terminale, di solito reso con
uno sfondo grigio chiaro.
Comando Nome di un comando che può essere inserito nella linea di comando.
VARIABILE Nome di una variabile o di un puntatore al contenuto di una variabile, come
$VARNAME.
opzione Opzione di un comando come l'opzione a nel comando ls
argomento Argomento di un comando come in “leggere man ls”
prompt Prompt dell'utente abitualmente seguito da un comando che voi battete in
una finestra di terminale come hilda@home > ls l
Comando opzioni argomenti Sintassi o uso generico di un comando su linea separata.
filename Nome di file o directory. Ad es. “Portarsi alla directory /usr/bin”.
Tasto Tasto da premere sulla tastiera come, ad es. “battere Q per terminare”.
Bottone Bottone grafico da premere come, ad es. il pulsante OK.
Menu>Scelta Scelta da effettuare in un menu grafico, per es. “Scegli Aiuto>Informazioni
su Mozilla nel vostro browser”.
Terminologia Termine o concetto importante: ”Il kernel Linux è il cuore del sistema”.
\ La sbarra inversa in una vista da terminale o in un sommario di comandi
indica una linea non terminata. In altre parole se vedete un comando lungo
che è tagliato in più linee, \ significa “Non premere ancora Invio!”.
Vedi Capitolo 1 Collegamento al relativo soggetto della guida
L'autrice Collegamento attivo ad una risorsa di rete esterna.
Vengono utilizzate nel testo le seguenti immagini:
Questa è una nota
Contiene informazioni aggiuntive o annotazioni
Questa è una cautela
Significa di stare attenti
Questo è un avviso
Significa di stare molto attenti
Questo è una curiosità
Si tratta di curiosità e trucchi
14
Introduzione a Linux
● Capitolo 1: Cos'è Linux, come è nato, vantaggi e svantaggi, cosa riserva il futuro per Linux,
chi dovrebbe usarlo, installazione sul vostro computer.
● Capitolo 2: Iniziare, connettersi al sistema, comandi base, dove trovare aiuto.
● Capitolo 3: Il filesystem, directory e file importanti, gestione di file e directory, protezione dei
vostri dati.
● Capitolo 4: Comprensione e gestione dei processi, procedure di avvio e spegnimento,
differimento di operazioni, operazioni ripetute.
● Capitolo 5: Cosa sono gli standard input, output ed error e come tali caratteristiche vengono
utilizzate dalla linea di comando.
● Capitolo 6: Perché dovreste imparare a lavorare con un editor, discussione sugli editor più
comuni.
● Capitolo 7: Configurazione del vostro ambiente, grafico, testuale ed audio, impostazioni per gli
utenti Linux non di lingua inglese, suggerimenti per aggiungere software extra.
● Capitolo 8: Conversione dei file in formato stampabile, loro stampa, suggerimenti per risolvere
problemi di stampa.
● Capitolo 9: Preparazione dei dati per il backup, discussione su vari strumenti, backup remoto.
● Capitolo 10: Panoramica sugli strumenti di rete Linux e applicazioni per gli utenti, con breve
disquisizione sui programmi daemon dei servizi di base e connessioni di rete sicure.
● Capitolo 11: In questo capitolo vengono trattati il suono ed il video, compresi Voice over IP e
registrazione dei suoni.
● Appendice A: Quali libri da leggere e siti da visitare una volta terminata la lettura di questo
testo.
● Appendice B: Un confronto.
● Appendice C: Semmai doveste rimanere bloccati, queste tabelle potrebbero essere una
soluzione. Anche un buon argomento quando il vostro capo insiste che VOI dovreste usare la
SUA shell favorita.
● Appendice D: Cosa potete fare con questa guida dal punto di vista legale.
15
Introduzione a Linux
Questo capitolo risponde a domande come:
Cos'è Linux?
Dove e come è iniziato Linux?
Linux è un sistema dove tutto si fa mediante linea di comando?
Linux ha un futuro o è solo una montatura esagerata?
Quali vantaggi offre Linux?
Quali gli svantaggi?
Quali tipi di Linux ci sono e come faccio a scegliere quello adatto a me?
Cosa sono i movimenti Open Source e GNU?
1.1. Storia
1.1.1. UNIX
Per comprendere la popolarità di Linux dobbiamo tornare indietro nel tempo a circa 30 anni fa...
Immaginate computer grandi come case, oppure come stadi. Mentre le dimensioni di quei computer
ponevano problemi sostanziali, c'era una cosa ancora peggiore: ogni computer aveva un differente
sistema operativo. Il software veniva sempre adattato per svolgere uno compito determinato e il
software di un dato sistema non girava su un altro. Essere capaci di lavorare su di un sistema non
significava automaticamente di poter lavorare con un altro. Erano difficoltà sia per gli utenti che per
gli amministratori di sistema.
Inoltre, i computer erano estremamente costosi e bisognava compiere sacrifici dopo l'iniziale
acquisto anche per spiegare agli utenti come funzionavano. Il costo totale per unità di potenza
elaborativa era enorme.
Tecnologicamente il mondo non era abbastanza avanzato, cosicché si continuò con quelle
dimensioni per un'altra decade. Nel 1969 un team di sviluppatori dei laboratori Bell Labs cominciò
a lavorare su una soluzione per il problema del software, dedicandosi alla questione della
compatibilità. Essi svilupparono un nuovo sistema operativo che era:
1. semplice ed elegante;
2. scritto nel linguaggio di programmazione C al posto del codice assembly;
3. capace di riutilizzare il codice.
16
Introduzione a Linux
Gli sviluppatori dei Bell Labs chiamarono il loro progetto “UNIX”.
La caratteristica di poter riutilizzare il codice fu molto importante. Fino ad allora tutti i sistemi di
computer commercialmente disponibili erano scritti in un codice specificamente sviluppato per
ognuno, UNIX dall'altro lato necessitava solo di un piccolo pezzo di quel codice, ora comunemente
chiamato kernel. Tale kernel è l'unico pezzo di codice che bisogna adattare ad ogni specifico
sistema e costituisce la base del sistema UNIX. Il sistema operativo e tutte le altre funzioni erano
costruite intorno a questo kernel e scritte in un linguaggio di programmazione di più alto livello, il
C.
Tale linguaggio fu in particolare sviluppato per creare il sistema UNIX: utilizzando questa nuova
tecnica fu molto più semplice sviluppare un sistema operativo che potesse girare su molti tipi diversi
di macchine.
I venditori di software furono rapidi ad adattarsi, dal momento che potevano vendere dieci volte di
più software quasi senza sforzo. Vennero in essere nuove strane situazioni: immaginate per un
momento computer di diversi costruttori comunicanti sulla stessa rete oppure utenti che lavorano su
sistemi diversi senza necessità di nuovi studi per usare altri computer. UNIX ha fatto molto per
aiutare gli utenti ad essere pronti per computer diversi.
Nella successiva coppia di decadi lo sviluppo di UNIX è proseguito. Parecchie cose sono divenute
possibili da fare e parecchi venditori di hardware e software hanno aggiunto il supporto UNIX ai
loro prodotti.
UNIX inizialmente si trovava solo in ambienti molto vasti con mainframe e minicomputer (notate
che un PC è un “micro” computer). Dovevate lavorare in un'università, per il governo o per società
molto facoltose per mettere le mani su un sistema UNIX.
Ma furono sviluppati computer più piccoli ed alla fine degli anni '80 molte persone avevano degli
home computer. A quel tempo esistevano diverse versioni di UNIX disponibili per l'architettura PC
ma nessuna di loro era realmente libera e, ancora più importante, erano tutte terribilmente lente,
cosicché la maggioranza della gente faceva girare MS DOS o Windows 3.11 nei propri computer
domestici.
Egli cominciò a porre delle domande per cercare risposte e soluzioni che lo potessero aiutare ad
avere UNIX sul suo PC. Qui sotto c'è uno dei suo primi messaggi su comp.os.minix, datato 1991:
17
Introduzione a Linux
Newsgroups: comp.os.minix
Subject: Gcc-1.40 and posix-question
Message-ID: <[email protected]>
Date: 3 Jul 91 10:00:50 GMT
Hello netlanders,
Due to a project I'm working on (in minix), I'm interested in the posix
standard definition. Could somebody please point me to a (preferably) machine-
readable format of the latest posix rules? FTP-sites would be nice.
Sin dall'inizio lo scopo di Linus fu avere un sistema libero che fosse completamente aderente
all'originale UNIX. Questo è il motivo per cui chiedeva gli standard POSIX, essendo POSIX lo
standard per UNIX.
In quei giorni non era stato ancora inventato il plugandplay, ma così tante persone erano
interessate ad avere un sistema UNIX che questo non fu un grosso ostacolo. Nuovi driver furono resi
disponibili per tutti i tipi di nuovo hardware ad una velocità sempre maggiore. Non appena un nuovo
componente hardware era a disposizione, qualcuno lo comprava e lo sottoponeva al Linux test,
come progressivamente si andava chiamando il sistema, rilasciando più codice libero per una
gamma sempre più ampia di hardware. Questi programmatori non si limitarono ai loro PC: ogni
pezzo di hardware che potevano trovare era utile per Linux.
Quelle persone furono chiamate “nerd” o “freak”, ma a loro non interessava altro che la lista
dell'hardware supportato crescesse sempre più. Grazie a quella gente Linux ora è non solo ideale da
far girare sui nuovi PC, ma anche il sistema preferito per hardware vecchio ed “esotico” che sarebbe
stato inutile senza l'esistenza di Linux.
Due anni dopo il messaggio di Linus c'erano già 12000 utenti Linux. Il progetto, popolare tra gli
appassionati, crebbe in fretta, rimanendo per tutto il tempo legato agli standard POSIX. Tutte le
caratteristiche di UNIX furono aggiunte nei successivi due anni, divenendo così il maturo sistema
Linux odierno. Linux è un clone totale di UNIX, disegnato per l'uso su workstation, così come per i
server di medio e alto livello. Oggi molti dei principali operatori nel mercato hardware e software
hanno il proprio team di sviluppatori Linux; presso i vostri venditori locali voi potete anche
acquistare sistemi con Linux preinstallato insieme al supporto ufficiale – sebbene ci sia ancora una
quantità di hardware e software che non è supportato.
Sul lato server Linux è ben noto come piattaforma stabile ed affidabile, che fornisce database e
servizi di commercio elettronico a compagnie come Amazon, il celebre negozio di libri online, le
Poste statunitensi, l'Esercito tedesco ed altri ancora. In particolar modo i provider internet e di
servizi internet si sono appassionati a Linux impiegato come firewall, proxy e web server, e
18
Introduzione a Linux
troverete una Linux box a disposizione di ogni amministratore di sistema UNIX che apprezzi una
confortevole stazione di gestione. Cluster (ndt. gruppi/complessi) di macchine Linux sono state
utilizzate nella creazione di film come “Titanic”, “Shrek” ed altri. Negli uffici postali (sono i centri
nevralgici che instradano la posta e nel grande motore di ricerca) si usano i cluster per le ricerche
internet. Questi sono solo alcuni delle migliaia di compiti svolti giornalmente da Linux in tutto il
mondo.
E' anche degno di nota che il moderno Linux non solo gira nelle workstation, nei server medio
grandi, ma anche su aggeggi come palmari, portatili, vagonate di applicazioni incorporate e pure su
orologi da polso sperimentali. Ciò fa di Linux l'unico sistema operativo al mondo in grado di
ricoprire una così ampia gamma di hardware.
E' disponibile tutto ciò che possa desiderare un buon programmatore: compilatori, librerie,
strumenti di sviluppo e correzione. Questi pacchetti si trovano in qualsiasi distribuzione Linux. Il
compilatore C è compreso gratuitamente – diversamente da molte distribuzioni UNIX che
domandano dei compensi per l'uso di questo strumento. Ci sono tutti i documenti e i manuali e
spesso sono inclusi esempi per aiutarvi ad iniziare senza sprechi di tempo. Sembra UNIX ed il
passaggio da UNIX a Linux è una cosa naturale.
Ai primordi di Linux essere un esperto era un requisito per poter utilizzare il sistema. Quelli che
dominavano Linux si sentivamo migliori del resto dei “luser” che non avevano ancora visto la luce.
Era pratica comune rispondere “RTFM” (“leggete i [fottuti] manuali”) ai principianti. Mentre i
manuali si trovavano in ogni sistema, era molto difficile trovare la documentazione e sebbene
qualcuno lo facesse, le spiegazioni erano in termini così tecnici che il nuovo utente facilmente si
scoraggiava dal conoscere il sistema.
La comunità di utenti Linux cominciò a comprendere che, se Linux doveva diventare un importante
giocatore nel mercato dei sistemi operativi, avrebbero dovuto esserci alcuni grossi cambiamenti
nell'accessibilità del sistema.
19
Introduzione a Linux
facilitare la gestione di programmi e servizi. Attualmente come utenti Linux avete tutti mezzi per
conoscere a fondo come funziona il vostro sistema, ma non è più necessario possedere tale
conoscenza per adattare il sistema alle vostre esigenze.
Oggigiorno potete registrarvi in modalità grafica ed avviare tutte le applicazioni richieste senza
necessità di battere un solo carattere, pur tuttavia mantenendo la facoltà di accedere quando
necessario al cuore del sistema. Proprio per la sua struttura, Linux consente all'utente di interagire
con il sistema: esso si adatta sia agli utenti esperti che a quelli principianti. I nuovi utenti non sono
costretti a fare cose complicate, mentre gli utenti veterani non devono sforzarsi di lavorare come
quando hanno iniziato a conoscere Linux.
Mentre continua lo sviluppo nel settore dell'assistenza, grandi passi sono stati compiuti per gli utenti
desktop, generalmente considerati come la categoria meno interessata ad apprendere il
funzionamento di un sistema operativo. Sviluppatori di applicazioni desktop stanno facendo sforzi
incredibili per produrre i più bei desktop che voi abbiate mai visto o per far assomigliare le vostre
macchine Linux alle vostre precedenti workstation MS Windows o MacIntosh. Gli ultimi sviluppi
includono anche il supporto per l'accelerazione 3D e per le periferiche USB, aggiornamenti con un
solo clic e pacchetti, ecc... Linux ha tutto ciò e tenta di presentare tutte le sue funzionalità
disponibili in una forma logica che sia comprensibile anche per la gente comune. Qui sotto c'è un
breve elenco di alcuni esempi importanti. Questi siti presentano molte schermate che vi daranno
un'idea di quale Linux sia preferibile nel computer da scrivania:
● http://www.gnome.org
● http://kde.org/screenshots/
● http://www.openoffice.org
● http://www.mozilla.org
L'iniziativa dell'Open Source ha incominciato a far capire ciò al mondo commerciale e, piuttosto
lentamente, i produttori commerciali stanno iniziando a considerare la questione. Mentre molti
accademici e tecnici si sono convinti già da vent'anni che questa è la strada da percorrere, i venditori
commerciali hanno avuto bisogno di applicazioni come internet per capire la possibilità di realizzare
profitti con l'Open Source. Ora Linux ha superato la fase in cui era quasi esclusivamente un sistema
accademico, utile soltanto ad una manciata di soggetti con preparazione tecnica. Attualmente Linux
20
Introduzione a Linux
Forse più famoso di quello SAMBA è il progetto di server HTTP Apache. Il server gira sotto UNIX,
Windows NT e molti altri sistemi operativi. Originariamente conosciuto come “A PatCHy server”,
basato su un programma esistente e una serie di “patch files”, il nome del codice maturo merita di
essere connotato con il nome della tribu americana degli Apache, celebre per la sua superiore
capacità nella strategia bellica e per l'inesauribile resistenza. E' stato dimostrato che Apache è
sostanzialmente più veloce, più robusto e più ricco di funzionalità rispetto a molti altri server di rete.
Apache gira su siti visitati da milioni di persone al giorno e, mentre nessun supporto ufficiale viene
fornito dagli sviluppatori, la comunità degli utenti Apache risponde a tutte le vostre domande:
attualmente diverse ditte esterne lo supportano sul piano commerciale.
Nella categoria delle applicazioni da ufficio viene offerta una scelta di cloni della suite MS Office
che va da parziali ad integrali sostituti delle applicazioni disponibili nelle stazioni di lavoro
[workstation] MS Windows. Tali iniziative hanno giovato assai all'accettazione di Linux nel mercato
dei desktop perché gli utenti non necessitano di corsi extra per imparare a lavorare con i nuovi
sistemi. Attraverso i desktop giungono le preghiere degli utenti comuni, e non soltanto quelle, ma
anche le loro richieste particolari, che si fanno sempre più sofisticate e numerose di giorno in
giorno.
Elencare tutto il software Linux disponibile va oltre lo scopo di questa guida dal momento che
esistono decine di migliaia di pacchetti. Attraverso questo corso vi presenteremo i pacchetti software
più comuni, che sono per lo più liberamente utilizzabili. Per togliere un po' del panico ai nuovi
21
Introduzione a Linux
utenti, ecco una schermata di uno dei programmi più ricercati. Potete constatare da voi stessi che
non si sono risparmiati gli sforzi per far sentire come a casa gli utenti che abbandonano Windows:
Figura 11. Il foglio elettronico compatibile MS di OpenOffice
● Linux è gratuito
Come una birra gratis, dicono. Se non volete spendere assolutamente nulla, non
dovete neppure pagare il prezzo di un CD: Linux può essere scaricato interamente
da internet in modo gratuito. Non ci sono tasse di registrazione, niente costi per
utente, aggiornamenti gratuiti e codice sono liberamente a disposizione se volete
cambiare il comportamento del vostro sistema.
Soprattutto Linux è libero come è libera la parola:
La licenza comunemente adottata è la GNU Public License (GPL). La licenza
afferma che chiunque voglia farlo, ha il diritto di modificare Linux ed
eventualmente di redistribuire una versione modificata, all'unica condizione che il
22
Introduzione a Linux
codice sia ancora a disposizione dopo tale redistribuzione,. In pratica siete liberi di
prendere una immagine del kernel, ad esempio per aggiungere il supporto per le
macchine di teletrasporto o di viaggio nel tempo e di vendere il vostro nuovo
codice purché il vostro cliente possa avere una copia di quel codice.
● Linux è portabile su qualsiasi piattaforma hardware
Un produttore che voglia vendere un nuovo tipo di computer e non sa che genere
di OS girerà sulla sua nuova macchina (sia che si tratti della CPU della vostra auto
o della lavatrice) può prendere un kernel Linux e renderlo funzionante sul suo
hardware dal momento che la documentazione relativa a tale attività è liberamente
disponibile.
● Linux è stato progettato per rimanere sempre funzionante
Come con UNIX, ci si aspetta che un sistema Linux resti in esecuzione per tutto il
tempo senza necessità di riavviarlo: ciò perché una quantità di operazioni vengono
svolte di notte o rispettando automaticamente orari prefissati in altri momenti di
calma, consentendo così una maggiore disponibilità nei periodi di carico maggiore
ed un uso più bilanciato dell'hardware. Questa caratteristica permette di applicare
Linux in ambienti dove le persone non hanno il tempo o la possibilità di
controllare i propri sistemi giorno e notte.
● Linux è sicuro e versatile
Il modello di sicurezza utilizzato da Linux si basa sul concetto di sicurezza UNIX,
conosciuto per la sua robustezza e la sua sperimentata qualità. Ma Linux non si
adatta solo ad essere un baluardo contro gli attacchi nemici provenienti da
internet: infatti esso si adegua ad altre situazioni utilizzando i medesimi elevati
standard di sicurezza. La vostra macchina di sviluppo o la stazione di controllo
saranno sicure come il vostro firewall.
● Linux è scalabile
Da un Palmtop da 2 MB di memoria ad un gruppo di archiviazione da un petabyte
con centinaia di nodi: aggiungete o togliete i pacchetti appropriati e Linux si
adatterà ad entrambi. D'altra parte non avete bisogno di un supercomputer, perché
potete usare Linux per grossi compiti utilizzando i “mattoni” forniti con il sistema.
Se volete fare cose piccole come la realizzazione di un sistema operativo per un
processore integrato o solo riciclare il vecchio 486, Linux ci riuscirà al meglio.
● Il sistema operativo Linux e le sue applicazioni hanno tempi di debug molto
brevi
Siccome Linux è stato sviluppato e provato da migliaia di persone, sia gli errori
sia le persone per correggerli si trovano normalmente piuttosto in fretta. Qualche
volta accade che trascorrano solo due ore dalla scoperta alla correzione di un bug.
23
Introduzione a Linux
Quando gli viene richiesto, generalmente ogni utente Linux risponderà che la
miglior distribuzione è quella specifica versione che sta usando. Così quale
andrebbe scelta? Non preoccupatevi eccessivamente di ciò: tutte le versioni
contengono più o meno lo stesso complesso di pacchetti base. Oltre a quest'ultimi,
vengono aggiunti software di terze parti rendendo così, ad esempio, TurboLinux
più adatta alla piccola e media impresa, RedHat per i server e SuseLinux per le
workstation. Comunque le differenze sono, il più delle volte, solo superficiali. La
miglior strategia è quella di provare una coppia di distribuzioni: peccato che non
tutti abbiano il tempo per questa prova. Fortunatamente esiste una marea di
consigli sull'argomento della scelta del vostro Linux. Una rapida ricerca su Google
utilizzando le parole “choosing your distribution” [ndt. “scelta della distribuzione]
vi darà oltre una decina di collegamenti a buoni suggerimenti. L'Installation
HOWTO tratta anche della scelta della distribuzione.
● Linux non è molto facile e confonde i nuovi utenti
Va detto che Linux, perlomeno il nucleo del sistema, è meno semplice rispetto a
MS Windows e sicuramente molto più complicato di MacOS, ma... alla luce della
sua popolarità sono stati compiuti sforzi considerevoli per rendere Linux sempre
più facile da usare, specialmente per i novizi. Sempre più informazioni vengono
rilasciate quotidianamente, come questa guida, per aiutare a colmare la disparità
di documentazione disponibile per gli utenti di tutti i livelli.
● Un prodotto Open Source è affidabile?
Come può una cosa che è gratuita essere anche affidabile? Gli utenti Linux
possono scegliere di usarlo o fare a meno, cosa che da loro un grosso vantaggio
rispetto agli utenti di software proprietario, che non posseggono questo tipo di
libertà. Dopo lunghi periodi di prova, molti utenti Linux giungono alla
conclusione che Linux non solo è valido ma in molti casi migliore e più veloce
delle soluzioni tradizionali. Se Linux non fosse stato affidabile, sarebbe
scomparso molto tempo fa, senza conoscere la popolarità odierna con milioni di
utenti. Ora gli utenti possono modificare i propri sistemi e condividere le proprie
osservazioni con la comunità, cosicché il sistema migliora di giorno in giorno. E'
un progetto non completato, questo è vero, ma in un mondo in continua evoluzione
Linux è un progetto che continua a competere per la perfezione.
24
Introduzione a Linux
Linux può apparire diverso a seconda della distribuzione, dell'hardware e del gusto personale ma le
basi su cui si fondano tutte le interfacce, grafiche o meno, rimangono le medesime. Il sistema Linux
è basato sugli strumenti GNU (Gnu's Not Unix), che forniscono un insieme di metodi comuni per
maneggiarlo ed usarlo. Tutti gli strumenti GNU [ndt.: GNU tools] sono a sorgente aperto cosicché
possono essere installati su qualsiasi sistema. Molte distribuzioni offrono pacchetti precompilati di
strumenti molto comuni, come i pacchetti RPM di RedHat o quelli Debian (chiamati anche deb o
dpkg) di Debian, in maniera che non dovete essere dei programmatori per installare un pacchetto nel
vostro sistema. Comunque, se vi piace fare da voi stessi, godrete di Linux al meglio dal momento
che molte distribuzioni sono fornite di un insieme completo di strumenti di sviluppo, che
consentono di installare nuovo software semplicemente dal codice sorgente. Tale modalità permette
di installare programmi anche se non esistono già preparati per il vostro sistema.
Un elenco di programmi GNU comuni:
● Bash: la shell GNU
● GCC: il Compilatore C di GNU
● GDB: il Debugger GNU
● coreutils: un insieme di utility base in stile UNIX, come ls, cat e chmod
● Findutils: per cercare e trovare file
● Fontutils: per convertire font da un formato ad un altro e per crearne di nuovi
● The Gimp: GNU Image Manipulation Program [Programma GNU di Manipolazione delle
Immagini]
● Gnome: l'ambiente desktop GNU
● Emacs: un editor molto potente
● Ghostscript e Ghostview: interprete e frontend grafico per i file PostScript.
● GNU Photo: programma per interagire con le macchine fotografiche digitali.
● Octave: un linguaggio di programmazione destinato in primo luogo a svolgere calcoli
numerici ed elaborazioni di immagini.
● GNU SQL: sistema di database relazionale
● Radius: server remoto di autenticazione e gestione account.
● ...
Molte applicazioni commerciali sono disponibili per Linux (per maggiori informazioni su tali
pacchetti ci riportiamo alla loro specifica documentazione). Attraverso questa guida noi tratteremo
solo di programmi liberamente disponibili, forniti (per la maggior parte) di licenza GNU.
25
Introduzione a Linux
Per installare pacchetti cancellati o nuovi avrete bisogno di una qualche forma di gestione del
software: le più comuni sono RPM, dpkg e Ximian Red Carpet. RPM è il RedHat Package Manager
[gestore di pacchetti RedHat] utilizzato da svariati sistemi Linux nonostante il nome non lo lasci
pensare. Dpkg è il sistema di gestione pacchetti di Debian che fa uso di un'interfaccia chiamata apt
get in grado di gestire anche i pacchetti RPM. Ximian Red Carpet è una implementazione di RPM
con interfaccia grafica proveniente da una terza parte. Altri produttori di software possono avere le
proprie procedure d'installazione, qualche volta somiglianti a InstallShield od altri programmi
simili, noti in MS Windows ed altre piattaforme. Quando sarete più esperti di Linux avrete a che
fare facilmente con uno o più di questi programmi.
1.5.2. GNU/Linux
Il kernel Linux (le ossa del vostro sistema, v. Sezione 3.2.3.1) non fa parte del progetto GNU ma
adotta la stessa licenza del software GNU. La grande maggioranza di programmi di utilità e di
strumenti di sviluppo (la carne del vostro sistema), che non è specifica Linux, è tratta dal progetto
GNU. Poiché qualsiasi sistema usabile deve avere sia il kernel che un insieme, anche minimo, di
utility, alcune persone affermano che questo sistema dovrebbe essere definito sistema GNU/Linux.
Per ottenere il maggior grado possibile di indipendenza tra distribuzioni, tratteremo questo genere di
Linux in questo corso. Quando non parleremo di un sistema GNU/Linux, provvederemo ad indicare
la specifica distribuzione, la versione o il nome del programma.
Alcune distribuzioni di Linux sono ottimizzate per certi processori, come la CPU Athlon, mentre
contemporaneamente funzioneranno in modo decente su processori Intel486, 586 e 686 standard.
Talvolta le distribuzioni per certe CPU speciali non sono affidabili perché provate da poche persone.
Molte distribuzioni Linux offrono un insieme di programmi per PC generici con pacchetti speciali
contenenti kernel ottimizzati per le CPU basate su Intel x86. Tali distribuzioni sono ben testate e
mantenute regolarmente, focalizzate su una affidabile realizzazione per server e su semplici
procedure di installazione ed aggiornamento. Esempi sono Debian, Ubuntu, Fedora, SuSE e
Mandriva che sono di gran lunga i più popolari sistemi Linux e sono in genere considerati semplici
da gestire per l'utente principiante, mentre non impediscono ai professionisti di ottenere il massimo
26
Introduzione a Linux
dai loro computer Linux. Linux gira decentemente anche sui portatili e sui server di medio livello. I
driver per il nuovo hardware vengono inclusi solo dopo prove approfondite, cosa che accresce la
stabilità di un sistema.
Mentre il desktop standard su un sistema potrebbe essere Gnome, un altro potrebbe offrire KDE di
base. Generalmente sia Gnome e KDE sono disponibili in tutte le principali distribuzioni Linux.
Altri gestori di finestre e desktop sono a disposizione degli utenti più avanzati.
Il processo di installazione standard consente agli utenti di scegliere tra differenti impostazioni base,
come quella workstation in cui tutti i pacchetti necessari all'uso quotidiano e per lo sviluppo, o
come quella server in cui molteplici servizi di rete possono essere selezionati. Gli utenti esperti
possono installare qualsiasi combinazione di pacchetti che desiderano durante il processo iniziale di
installazione.
L'obbiettivo di questa guida è di applicarsi a tutte le distribuzioni Linux. Per vostra comodità,
comunque, si consiglia vivamente che i principianti si affidino ad una delle distribuzioni principali,
che supportano tutto l'hardware comune e le applicazioni di base. Quelle seguenti sono ottime scelte
per i novizi:
● Fedora Core
● Debian
● SuSE Linux
● Mandriva (in precedenza MandrakeSoft)
● Knoppix: un sistema operativo che funziona dal vostro CDROM senza la necessità di
installare alcunché.
Immagini ISO scaricabili si possono trovare su LinuxISO.org. Le principali distribuzioni possono
essere acquistate presso qualsiasi decente negozio di computer.
1.6. Sommario
In questo capitolo abbiamo appreso che:
● Linux è una specie di UNIX.
● Il sistema operativo Linux è scritto nel linguaggio di programmazione C.
● “De gustibus et coloribus disputandum non est”: esiste un Linux per ciascuno.
● Linux utilizza gli strumenti GNU, un complesso di strumenti standard liberamente disponibili
per la manipolazione del sistema operativo.
1.7. Esercizi
Un esercizio pratico per chi inizia: installate Linux nel vostro PC. Leggete il manuale di
27
Introduzione a Linux
installazione della vostra distribuzione e/o l'Installation HOWTO e procedete.
Leggete la documentazione!
Molti errori vi bloccano per non aver letto le informazioni fornite durante l'installazione.
Leggere perciò con attenzione i messaggi di installazione è il primo passo sulla strada
del successo.
Cose da sapere PRIMA di iniziare un'installazione di Linux:
● Questa distribuzione girerà sul vostro hardware?
Controllate su http://www.tldp.org/HOWTO/HardwareHOWTO/index.html in caso di dubbi
circa la compatibilità del vostro sistema.
● Che genere di tastiera possiedo (numero di tasti, formato)? Che tipo di mouse
(seriale/parallelo, numero di pulsanti)? Quanti MB di RAM?
● Installerò una workstation base o un server, oppure dovrò selezionare da me stesso pacchetti
specifici?
● Installerò dal mio disco rigido, da un CDROM o attraverso la rete? Dovrò adeguare il BIOS
per ciascuno di questi? Il metodo di installazione richiede un disco di avvio?
● Linux sarà l'unico sistema operativo sul computer oppure si procederà ad un'installazione per
l'avvio di due sistemi alternativamente? Dovrò creare una grande partizione per installare più
avanti dei sistemi virtuali o questa è essa stessa un'installazione virtuale?
● Il computer è in rete? Qual è il suo nome di host, il suo indirizzo IP? C'è qualche server
gateway o altra importante macchina in rete con cui comunicare?
Linux si attende di essere collegato in rete
Non utilizzare la rete o configurarla in modo sbagliato può causare un avvio lento.
● Il computer è un gateway/router/firewall? (Se vi ponete questa domanda, probabilmente non lo
è).
● Partizionamento: per questa volta lasciate svolgere il compito al programma di installazione:
tratteremo le partizioni in dettaglio nel Capitolo 3. Esiste documentazione specifica del
sistema da installare se volete sapere tutto di esso. Se la vostra distribuzione Linux non
consente il partizionamento automatico, significa probabilmente che non è adatta ai
principianti.
● Questa macchina si avvierà in modalità testo o grafica?
● Pensate ad una buona parolachiave per l'amministratore di questa macchina (root). Create un
account di utente nonroot (accesso non privilegiato al sistema).
● Ho bisogno di un disco di ripristino [rescue disk]? (operazione raccomandata)
● Che lingua voglio?
Nei successivi capitoli scopriremo se l'installazione è andata a buon fine.
28
Introduzione a Linux
Tratteremo di:
Connessione al sistema
Disconnessione dal sistema
Modalità testo e grafica
Cambio della password
Navigazione nel file system
Determinazione del tipo di file
Osservazioni nei file di testo
Ricerca di aiuti
2.1.1. Introduzione
Per lavora direttamente in un sistema Linux avrete bisogno di un nome utente e di una password.
Dovrete sempre autenticarvi nel sistema. Come già ricordato nell'esercizio del Capitolo 1, molti
sistemi Linux basati su PC hanno due modalità fondamentali per avviarsi: o in rapida e sobria
modalità console testuale, che sembra come il DOS con mouse, dotata di caratteristiche
multitasking e multiutente, o in quella grafica che ha un aspetto migliore ma sottrae molte più
risorse di sistema.
Per autenticarvi, assicuratevi che il puntatore del mouse sia nella finestra di login, fornite il vostro
nome utente e password al sistema e premete OK o il tasto Invio.
Attenti con quell'account di root!
Generalmente è considerata una pessima idea connettersi (in grafica) utilizzando il
nome utente root, l'account dell'amministratore del sistema, dal momento che l'uso della
grafica comprende l'avvio di una quantità extra di programmi, in caso di utente root con
un sacco di permessi extra. Per mantenere il rischio più basso possibile, usate un
account di utente normale per connettervi graficamente. Ci sono così tanti rischi nel
29
Introduzione a Linux
Per continuare dovrete aprire una terminal window [finestra di terminale] o xterm in breve (X è il
nome del software che supporta il sottostante ambiente grafico). Tale programma si può trovare
sotto Applicazioni>Utilità File, Strumenti di Sistema o il menu Internet, a seconda del gestore di
finestra impiegato. Potrebbero esserci delle icone da usare come scorciatoia per ottenere una finestra
xterm, così come premendo il tasto destro del mouse sullo sfondo normalmente apparirà un menu
contenente una applicazione di finestra di terminale.
Scorrendo i menu noterete che si possono fare molte cose senza introdurre comandi via tastiera. Per
molti utenti andrà bene il buon vecchio metodo di gestire il computer “punta_e_clicca”. Ma questa
guida è destinata ai futuri amministratori di rete e di sistema, i quali dovranno occuparsi del cuore
del sistema. Essi necessitano di uno strumento più avanzato rispetto al mouse per gestire tutti i
compiti che dovranno affrontare. Tale strumento è la shell e, trovandoci in modalità grafica, la
attiveremo aprendo una finestra di terminale.
La finestra di terminale è il vostro pannello di controllo del sistema. Quasi tutte le seguenti
operazioni saranno svolte utilizzando questo semplice ma potente strumento testuale. Una finestra di
terminale dovrebbe sempre mostrare il prompt dei comandi alla sua apertura. Il seguente terminale
mostra un prompt standard, che fa apparire il nome di login dell'utente e l'attuale directory di lavoro,
rappresentata dalla tilde (~):
Figura 21. Finestra di terminale
Un'altra forma comune per un prompt è questa:
[utente@host dir]
30
Introduzione a Linux
sufficiente sapere che essi posso mostrare ogni tipo di informazione ma non fanno parte dei
comandi che date al sistema.
Per disconnettervi dal sistema in modalità grafica dovete chiudere tutte le finestre di terminale e le
altre applicazioni. Dopo di ciò premete l'icona di logout o cercate Log Out nel menu. In realtà
chiudere tutto non è necessario e il sistema può farlo al posto vostro, ma il gestore di sessione
potrebbe riportare tutte le applicazioni attualmente aperte di nuovo a video nel successivo
collegamento, rallentando il sistema, effetto questo non sempre desiderato. Comunque tale
comportamento è configurabile.
Quando vedrete di nuovo la schermata di login richiedere nome utente e password, capirete che la
disconnessione ha avuto successo.
Il login è diverso da quello grafico in quanto dovete battere il tasto Invio dopo aver fornito il vostro
nome utente poiché non ci sono pulsanti sullo schermo da schiacciare con il mouse. Subito dopo
dovete scrivere la vostra password seguita da un altro Invio: non vedrete alcuna indicazione di ciò
che state digitando, neppure un asterisco, e non vedrete il cursore muoversi. Questo comportamento
è normale sotto Linux ed è stato fatto per ragioni di sicurezza.
Una volta che il sistema vi ha accettato come utente valido, potrete eventualmente avere altre
informazioni, chiamate messaggio del giorno (message of the day). Inoltre è frequente nei sistemi
UNIX mostrare un “biscotto della fortuna” (fortune cookie) contenente alcuni pensieri saggi o
strampalati (ciò spetta a voi). Dopo di questo, avrete a disposizione una shell, indicata con il
medesimo prompt che otterreste in modalità grafica.
Non autenticatevi come root
Anche in modalità testo: autenticatevi come root solo per operazioni di setup e
configurazione che richiedano assolutamente i privilegi di amministratore, come
l'aggiunta di utenti, l'installazione di pacchetti di programmi, il funzionamento della rete
ed altre configurazioni di sistema. Una volta terminato, abbandonate immediatamente lo
speciale account e riprendete il vostro lavoro come utente non privilegiato. In
alternativa, alcuni sistemi, come Ubuntu, vi costringono ad utilizzare sudo, cosicché
non avete necessità di accedere direttamente all'account amministrativo.
La disconnessione si esegue inserendo il comando logout seguito da Invio: sarete disconnessi con
successo dal sistema quando vedrete nuovamente la schermata di login.
31
Introduzione a Linux
Il pulsante di spegnimento
Dal momento che non ha senso spegnere Linux senza applicare le corrette procedure di
spegnimento del sistema, la pressione del tasto di accensione equivale ad avviare quelle
procedure su sistemi più nuovi. Comunque, spegnere un vecchio sistema senza eseguire
il processo di chiusura può causare gravi danni! Se volete essere al sicuro, utilizzate
sempre l'opzione di spegnimento quando chiudete dall'interfaccia grafica oppure,
quando siete alla schermata di autenticazione (in cui dovete indicare il vostro nome
utente e la parolachiave), cercate un bottone di spegnimento.
Ora che sappiamo come connetterci e disconnetterci dal sistema, siamo pronti per i nostri primi
comandi.
2.2.1. I comandi
Questi sono quelli immediati che ci servono per iniziare; li tratteremo meglio più avanti.
Tabella 21. Comandi di avvio rapido
Comando Significato
Mostra un elenco dei file contenuti nella directory di lavoro attuale, come il
ls
comando dir del DOS
cd directory cambio directory
passwd cambio della password dell'utente correntemente
file nomefile mostra il tipo di file di quello chiamato nomefile
cat filetesto fa apparire sullo schermo il contenuto di filetesto
pwd mostra la directory di lavoro attuale
exit o logout abbandona la sessione
man comando legge le pagine man relative a comando
info comando legge le pagine info relative a comando
apropos stringa cerca nel database whatis la stringa
32
Introduzione a Linux
I comandi possono essere eseguiti da soli, come il comando ls. Un comando si comporta
differentemente quando si aggiunge una opzione, normalmente preceduta da un segno meno (),
come ls a. Il medesimo carattere di opzione può assumere significati diversi con altri comandi. I
comandi GNU accettano opzioni estese, precedute da due meno (), come ls all. Alcuni comandi
non hanno opzioni.
L'argomento di un comando è una precisazione circa l'oggetto su cui volete che il comando agisca:
un esempio è ls /etc, dove la directory /etc è l'argomento del comando ls. Ciò indica che
volete vedere il contenuto di quella directory, invece di quella normale ottenibile battendo il
semplice comando ls seguito da Invio. Qualche volta i comandi richiedono degli argomenti, qualche
altra gli argomenti sono solo opzionali.
Potete scoprire se un comando accetta opzioni e argomenti, e quali di questi sono validi,
controllando gli aiuti in linea per quel comando (v. Sezione 2.3).
In Linux, come in UNIX, le directory sono separate utilizzando delle barre (/) come quelle usate per
gli indirizzi di rete (URL): più avanti tratteremo la struttura delle directory approfonditamente.
I simboli . e .. hanno un significato speciale quando riguardano le directory: proveremo a scoprirlo
con gli esercizi e ancor più nel prossimo capitolo.
Cercate di evitare di autenticarvi o di usare l'account di amministratore root. Oltre a svolgere il
vostro normale lavoro, molti compiti, inclusi il controllo del sistema, la raccolta di informazioni,
ecc., possono essere eseguiti con un account di utente normale senza alcuna necessità di permessi
speciali. Se necessario, per esempio quando create un nuovo utente o installate nuovo software, il
modo preferibile per ottenere l'accesso di root è attraverso lo scambio degli ID di utente (v. Sezione
3.2.1 per un esempio).
Quasi tutti i comandi di questo libro possono essere eseguiti senza i privilegi si amministratore di
sistema. In molti casi quando date un comando o avviate un programma come utente non
privilegiato, il sistema vi avvisa o vi presenta la richiesta della password di root se è necessario
l'accesso di root. Una volta fatto, abbandonate immediatamente l'applicazione o la sessione che vi
ha fornito i privilegi di root.
Leggere la documentazione dovrebbe diventare la vostra seconda natura. Specialmente all'inizio è
importante leggere la documentazione di sistema, i manuali dei comandi base, gli HOWTO e così
via. Dal momento che la quantità di documentazione è così vasta, è impossibile inserire tutta la
relativa documentazione. Questo libro proverà a orientarvi verso la documentazione più appropriata
su ogni argomento trattato per stimolare anche l'abitudine a leggere le pagine man.
33
Introduzione a Linux
3.2.3.2). Qui sotto c'è una lista delle funzioni più utilizzate: siete fortemente consigliati ad abituarvi
al loro uso in modo da ottenere il massimo di esperienza Linux sin dal principio.
Tabella 22. Combinazioni di tasti in Bash
Tasto o combinazione di tasti Funzione
Ctrl+A Muove il cursore all'inizio della linea di comando.
Ctrl+C Termina un programma attivo e ritorna al prompt (v. Capitolo 4).
Disconnessione dalla corrente sessione di shell: corrisponde alla
Ctrl+D
scrittura di exit o logout.
Ctrl+E Sposta il cursore in fondo alla linea di comando.
Ctrl+H Genera un carattere di backspace [cancellazione all'indietro].
Ctrl+L Pulisce il terminale.
Ricerca nella cronologia [history] dei comandi (v. Sezione
Ctrl+R
3.3.3.4).
Ctrl+Z Sospende un programma (v. Capitolo 4)
Sposta il cursore di uno spazio a sinistra o a destra sulla linea di
FrecciaSinistra e
comando in modo che potete inserire caratteri in altri posti oltre
FrecciaDestra
a quelli d'inizio e fine.
Scorre la cronologia [history] dei comandi. Andate alla linea che
FrecciaSu e FrecciaGiù volete ripetere, modificate i dettagli se necessario e premete
Invio per risparmiare tempo.
Maiuscolo+PaginaSu e Scorre il buffer di terminale (per vedere il testo che ha “spostato”
Maiuscolo+PaginaGiù lo schermo).
Completamento di comandi o nomi di file: quando sono possibili
più scelte, il sistema ve lo segnalerà con un segnale sonoro o
Tab
visivo, altrimenti, se le scelte sono troppe, vi chiederà se volete
vedere tutte quante.
Tab Tab Mostra le possibilità di completamento di file o comandi.
Le ultime due voci nella soprastante tabella richiedono alcune spiegazioni extra. Per esempio, se
volete spostarvi nella directory directory_dal_nome_piuttosto_lungo, non dovete
digitare assolutamente tutto quel lunghissimo nome. Dovete solo battere nella linea di comando cd
dir e poi premere il tasto Tab: la shell provvedere a completare il nome per voi se non esistono altri
file che iniziano con gli stessi tre caratteri. Naturalmente se non esistono altre parole che iniziano
con “d”, allora potete digitare solamente cd d e poi Tab. Se più di un file inizia con gli stessi
caratteri, la shell ve lo segnalerà, dopo di che potrete battere due volte Tab di seguito e la shell
mostrerà le scelte disponibili:
vostro_prompt> cd st
34
Introduzione a Linux
Nel esempio qui sopra se digiterete “a” dopo i primi due caratteri e batterete Tab nuovamente, non
rimarranno altre possibilità e la shell completerà il nome della directory senza costringervi a
scrivere la stringa “rthere”:
vostro_prompt> cd starthere
Naturalmente dovrete premere Invio per accettare la scelta.
Ciò funziona con tutti i nomi dei file che sono argomenti dei comandi.
vostro_prompt> ls
ls lsdev lspci lsraid lsw
lsattr lsmod lspgpot lss16toppm
lsb_release lsof lspnp lsusb
35
Introduzione a Linux
grafica) o semplicemente in modalità testo se lo preferite. Dopo il prompt scrivete questo comando
seguito da Invio:
La documentazione di man apparirà sullo schermo dopo aver premuto Invio:
man(1) man(1)
NOME
man - formatta formatta e mostra le pagine di guida in linea
manpath - determina i percorsi di ricerca dell'utente per le
pagine di guida
SINTASSI
man [-acdfFhkKtwW] [-m sistema] [-p stringa] [-C file_configurazione]
[-M percorso] [-P impaginatore] [-S lista_sezioni] [sezione] nome ...
DESCRIZIONE
man formatta e mostra le pagine di guida in linea. Questa versione
riconosce le variabili d'ambiente MANPATH e (MAN)PAGER, in modo da
avere il proprio insieme di pagine di guida e scegliere il programma
preferito per leggere le pagine formattate. Se sezione è specificata,
man cerca solamente in quella sezione del manuale. Si può anche speci-
ficare l'ordine di ricerca delle sezioni e quale preprocessore utiliz-
zare tramite un'opzione della riga di comando o variabile d'ambiente.
Se nome contiene un carattere /, allora questo viene prima provato come
se fosse il nome di un file, in modo da poter fare man ./foo.5 o anche
man /cd/foo/bar.1.gz.
OPZIONI
-C file_configurazione
Specifica il file man.config da usare; il valore di default è
/usr/lib/man.config (vedere man.config(5)).
lines 1-27
Passate alla pagina successiva con la barra spaziatrice. Potete ritornare alla pagina precedente
usando il tasto b. Di solito, quando arrivate alla fine, man si interrompe e vi ritrovate al prompt.
Premete q se volete lasciare la pagina man prima del termine o se il programma di visualizzazione
non si ferma automaticamente alla fine.
Paginatori
Le combinazioni disponibili di tasti per la manipolazione delle pagine man dipendono
dal paginatore (pager) utilizzato dalla vostra distribuzione. Molte distribuzioni usano
less per visualizzare e scorrere avanti e indietro le pagine man. (v. Sezione 3.3.4.2 per
maggiori informazioni sui paginatori).
36
Introduzione a Linux
man sono ordinate per capitoli. I comandi hanno facilmente più pagine, per
esempio la pagina man della sezione utente, quella della sezione di
amministratore di sistema e quella della sezione del programmatore.
● Vengono forniti il nome del comando e una breve descrizione che servono per
costruire un indice di pagine man: potete cercare qualsiasi stringa nell'indice
tramite il comando apropos.
● La sintassi del comando fornisce una annotazione tecnica di tutte le opzioni e/o
argomenti accettabili. Potete pensare ad un'opzione come ad un modo di
eseguire il comando. L'argomento è il destinatario dell'elaborazione. Alcuni
comandi non hanno né opzioni, né argomenti. Opzioni e argomenti non
necessari sono posti tra “[“ e “]” per indicare che possono essere tralasciati.
● Viene fatta una descrizione più lunga del comando.
● Vengono elencate le opzioni con le loro descrizioni. Le opzioni normalmente
possono essere combinate assieme: se ciò non è possibile vi viene segnalato da
questa sezione.
● VARIABILI D'AMBIENTE descrive le variabili di shell che influenzano il
comportamento di questo comando (non tutti ce l'hanno).
● Qualche volta ci sono delle sezioni specifiche del comando, come la sezione
PAGINE FORMATTATE dell'esempio.
● La sezione “VEDERE ALTRO” contiene riferimenti ad altre pagine man. Tra
parentesi c'è il numero della sezione di pagine man in cui si trova questo
comando. Gli utenti esperti spesso accedono alla parte “VEDERE ALTRO”
utilizzando il comando / seguito dalla stringa VED e da Invio.
● Normalmente ci sono anche informazioni sui bachi (bug) noti (anomalie) e su
come segnalarne di nuovi da voi eventualmente riscontrati.
● Potrebbero esserci anche le informazioni circa l'autore e i diritti.
Alcuni comandi hanno numerose pagine man. Per esempio, il comando passwd ha una pagina man
nella sezione 1 ed un'altra nella 5. Normalmente viene mostrata la pagina man con il numero
minore. Se desiderate vedere un'altra sezione rispetto a quella solita, dovete specificarla dopo il
comando man:
man 5 passwd
Se invece volete vedere tutte le pagine man di un comando, una dopo l'altra, usate a con man:
man -a passwd
Tale modalità, raggiunto il termine della prima pagina man e premendo di nuovo SPAZIO, verrà
mostrata la pagina man della sezione successiva.
37
Introduzione a Linux
Oltre alle pagine man, potete leggere le pagine info di un comando usando il comando info. Queste
contengono di solito informazioni più recenti e sono per qualche verso più semplici da usare. Le
pagine man di alcuni comandi rimandano a quelle info.
Cominciate digitando info info in una finestra di terminale:
Usate i tasti freccia per muovervi nel testo e per spostare il cursore su una linea che inizia con un
asterisco, contenente l'argomento di cui volete informazioni, e poi premete Invio. Utilizzate i tasti P
e N per andare all'argomento precedente o successivo . La barra spaziatrice vi porterà alla pagina
successiva, senza verificare se quest'ultima inizia un nuovo argomento o la pagina info di un nuovo
comando. Impiegate Q per uscire. Il programma info ha maggiori informazioni.
[vostro_prompt] whatis ls
ls (1) - list directory contents
Ciò mostra una breve informazione circa un comando e la prima sezione della collezione di pagine
man che contiene una pagina appropriata.
Se non sapete dove cercare e che pagina man leggere, apropos vi fornisce maggiori informazioni.
Supponiamo che voi non sappiate come avviare un browser: potete allora battere il seguente
comando:
38
Introduzione a Linux
entry forms
QTextBrowser [qtextbrowser] (3qt) - Rich text browser with hypertext
navigation
gnome-moz-remote (1) - remote control of browsers
goad-browser (1) - Graphical GOAD browser
links (1) - lynx-like alternative character mode WWW browser
lynx (1) - a general purpose distributed information browser
for the World Wide Web
mozilla (1) - a Web browser for X11 derived from Netscape
Communicator
ncftp (1) - Browser program for the File Transfer Protocol
Dopo aver premuto Invio, vedrete quanti argomenti relativi ai browser ci sono nella vostra
macchina: non solo browser web, ma anche browser di file, FTP e di documentazione. Se avete
installato i pacchetti di sviluppo, potreste anche avere le pagine man di accompagnamento
concernenti programmi di scrittura che hanno a che fare con i browser. Generalmente un comando
con una pagina man in sezione uno (uno rappresentato con “(1)”) può essere sperimentato in qualità
di utente. Pertanto l'utente che qui sopra ha digitato apropos può di conseguenza provare ad avviare
i comandi links, lynx, mozilla o ncftp dal momento che questi hanno a che fare con la navigazione
nel c.d. world wide web.
39
Introduzione a Linux
organizzate in categorie di programmi. Eccellente il contenuto di Aiuto, comprendente anche il
manuale di Konqueror. Avviate quest'ultimo dal menu o digitando il comando konqueror in una
finestra di terminale seguito da Invio; osservate la schermata qui sotto.
Figura 22. Konqueror come browser degli aiuti
Anche il browser degli aiuti Gnome è molto facile da usare. Lo potete avviare selezionando
Applicazioni>Aiuto nel menu di Gnome, con un clic sull'icona del salvagente sul vostro desktop
oppure inserendo il comando gnomehelp in una finestra di terminale. La documentazione di
sistema e le pagine man sono facilmente navigabili grazie alla chiara interfaccia.
Il gestore di file nautilus fornisce un indice di ricerca delle pagine man e info, che risultano
facilmente navigabili e tra loro interconnesse. Nautilus si avvia [ndt. se installato] da linea di
comando, cliccando sull'icona della vostra directory home oppure dal menu di Gnome.
Il grosso vantaggio delle GUI per la documentazione di sistema è che le informazioni sono
completamente interconnesse, cosicché potete cliccare sulla sezione “VEDERE ALTRO” e
dovunque appaiano collegamenti ad altre pagine man, in modo da navigare ed acquisire
40
Introduzione a Linux
contemporaneamente conoscenze senza interruzioni per ore alla volta.
2.3.3.5. Eccezioni
Alcuni comandi non hanno documentazione separata poiché fanno parte di un altro comando. cd,
exit, logout e pwd sono tali eccezioni: appartengono al vostro programma di shell e sono detti
comandi interni alla shell. Per informazioni su questi bisogna ricorrere alle pagine man e info della
vostra shell. Molti nuovi utenti hanno la shell Bash (v. Sezione 3.2.3.3 per maggiori dettagli sulle
shell).
Se avete modificato la configurazione originale, potrebbe anche succedere che le pagine man, pur
esistendo ancora, non siano visibili perché i vostro ambiente di shell è cambiato. In questo caso
dovrete controllare la variabile MANPATH: la Sezione 7.2.1.2. spiega come fare ciò.
Nel caso peggiore, avete rimosso accidentalmente la documentazione dal vostro sistema (speriamo
che sia stato proprio accidentalmente, perché è veramente una pessima idea farlo volontariamente).
In tal caso, per prima cosa cercate di accertarvi che non sia rimasto ancora qualcosa utilizzando uno
strumento di ricerca (v. Sezione 3.3.3.). Se è proprio così, dovete reinstallare il pacchetto che
contiene il comando a cui si riferisce la documentazione (v. Sezione 7.5.).
2.4. Sommario
Abitualmente Linux funziona in modalità testo o grafica. Dal momento che oggi CPU potenti e
RAM non sono più costose, ogni utente Linux può permettersi di lavorare in modalità grafica e
normalmente lo fa. Ciò non significa però che voi non dobbiate conoscere il modo testo: noi
lavoreremo interamente nell'ambiente testuale durante questo corso utilizzando una finestra di
terminale.
2.5. Esercizi
Molto di ciò che impariamo è dovuto agli errori che facciamo ed all'osservazione di come le cose
possono non funzionare. Questi esercizi sono stati creati per procurarvi alcuni messaggi di errore da
leggere. L'ordine in cui affronterete tali esercizi è importante.
41
Introduzione a Linux
Non scordatevi di ricorrere alle caratteristiche di Bash sulla linea di comando: tentate di svolgere gli
esercizi battendo meno caratteri possibili!
Sto lavorando in modalità testo/grafica (barrate quella sbagliata)
● Autenticatevi (login) con il nome utente e la password che avete scelto durante
l'installazione.
● Disconnettetevi (logout).
● Autenticatevi nuovamente usando un nome utente inesistente.
> Cosa succede?
2.5.2. Password
Autenticatevi nuovamente con i vostri nome utente e password.
● Cambiate la password in P6p3.aa! e battete il tasto Invio.
> Cosa succede?
> Cosa succede?
● Provate ancora, questa volta non inserite una password ma battete soltanto il
tasto Invio.
> Cosa succede?
● Provate il comando psswd al posto di passwd.
> Cosa succede?
Nuova password
A meno che voi non ripristiniate la vostra password a quella precedente all'esercizio,
questa sarà ”P6p3.aa!”.
Mutate password dopo questo esercizio!
Notate che alcuni sistemi potrebbero non consentire di riciclare password, cioè
42
Introduzione a Linux
ripristinare quella originale un certo numero di volte o un certo numero di cambi di
password o ambedue.
2.5.3. Le directory
Questi sono alcuni esercizi che vi aiuteranno a capirne il senso.
● Date il comando cd blah
> Cosa accade?
● Date il comando cd ..
Ricordatevi lo spazio tra “cd” e “..”! Usate il comando pwd
> Cosa accade?
● Elencate il contenuto della directory con il comando ls.
> Cosa vedete?
> Cosa pensate che siano quelle voci?
> Controllate con il comando pwd
● Date il comando cd
> Cosa accade?
● Ripetete due volte il passo 2.
> Cosa accade?
● Mostrate il contenuto di questa directory.
● Provate il comando cd root
> Cosa accade?
> A quale directory avete accesso?
● Ripetete il passo 4.
> Conoscete un'altra maniera per sapere dove ora vi trovate?
43
Introduzione a Linux
2.5.4. I file
● Cambiate la directory a / e quindi a etc. Scrivete ls; se l'output è più lungo
del vostro schermo, ampliate la finestra o provate Maiuscolo+PaginaSu e
Maiuscolo+PaginaGiu.
> Il tipo di file del mio inittab è ......
● Usate il comando cat inittab e leggete il file.
> Quale è la modalità normale del vostro computer?
● Ritornate alla vostra directory home impiegando il comando cd
● Date il comando file .
> L'esercizio aiuta a trovare il significato di “.”?
● Potete guardare “.” usando il comando cat?
● Richiamate l'aiuto del programma cat, utilizzando l'opzione --help.
Utilizzate l'opzione per numerare le linee di output per contare quanti utenti
sono elencati nel file /etc/passwd.
> Come potete trovare maggiori informazioni su cd?
● Leggete ls --help e sperimentate.
44
Introduzione a Linux
Elencheremo pure i file e le directory più importanti, useremo metodi diversi per
visualizzare il contenuto di quei file, impareremo come possiamo creare, spostare e
cancellare file e directory.
Dopo il completamente degli esercizi di questo capitolo, sarete in grado di:
Descrivere la struttura di un file system Linux
Mostrare e impostare percorsi (path)
Descrivere i file più importanti, compresi kernel e shell
Trovare file persi e nascosti
Creare, muovere e cancellare file e directory
Mostrare il contenuto dei file
Comprendere ed usare tipi di collegamenti (link) differenti
Esplorare le proprietà dei file e cambiare i loro permessi
3.1.1. I file
3.1.1.1. In generale
Questa è una descrizione semplice del sistema UNIX, applicabile anche a Linux:
“In un sistema UNIX ogni cosa è un file: se qualcosa non è un file, è un processo”.
Tale affermazione è vera perché esistono file speciali che sono più di normali file (chiamati pipe e
socket, per esempio) ma, per semplificare, è una generalizzazione accettabile dire che tutto è un file.
Un sistema Linux, così come UNIX, non fa distinzioni tra un file e una directory dal momento che
una directory è solo un file che contiene nomi di altri file. Programmi, servizi, testi, immagini, e
così via, sono tutti file. Le periferiche di ingresso/uscita (ed in genere tutte le periferiche) sono
considerate come file che si raccordano al sistema.
Per gestire tutti quei file in modo ordinato gli esseri umani preferiscono pensarli in una struttura
organizzata a forma di albero nel disco rigido, come sappiamo ad esempio da MSDOS (Disk
Operating System). I rami principali contengono altri rami e le estremità hanno le foglie, cioè i file.
Per ora utilizzeremo questa immagine dell'albero, ma più avanti scopriremo che non si tratta di
45
Introduzione a Linux
un'immagine perfettamente calzante.
Sebbene sia ragionevolmente sicuro ritenere che tutto ciò che incontrate in un sistema Linux sia un
file, esistono tuttavia alcune eccezioni.
● Directory: file che sono elenchi di altri file.
● File speciali: il meccanismo usato per ingresso e uscita dei dati. Molti file speciali si
trovano in /dev: ne parleremo più avanti.
● Collegamenti (link): un mezzo impiegato per rendere visibili file e directory in più
parti dell'albero dei file del sistema. Tratteremo i collegamenti in dettaglio.
● (Domain) socket: uno speciale tipo di file, simile ai socket TCP/IP, che fornisce
un'infrastruttura di processi interconnessi protetta da un controllo d'accesso del file
system.
● Named pipes: funzionano più o meno come i socket e costituiscono un modo di
comunicazione tra processi senza l'impiego della semantica dei socket di rete.
L'opzione -l di ls mostra il tipo di file usando il primo carattere di ciascuna linea di input:
jaime:~/Documents> ls -l
total 80
-rw-rw-r-- 1 jaime jaime 31744 Feb 21 17:56 intro Linux.doc
-rw-rw-r-- 1 jaime jaime 41472 Feb 21 17:56 Linux.doc
drwxrwxr-x 2 jaim jaime 4096 Feb 25 11:50 course
Questa tabella offre una panoramica dei caratteri che determinano il tipo di file:
Tabella 31. Tipi di file in elenco esteso
Simbolo Significato
File normale
d Directory
l Collegamento (link)
c File speciale
s Socket
p Named pipe
b Periferica a blocchi
Per non dover fare ogni volta un lungo elenco per riconoscere il tipo di file, molti sistemi
normalmente non eseguono un semplice ls, bensì ls -F, che applica un suffisso “/=*|@” ai nomi dei
file per indicarne il tipo. Per rendere la faccenda ancora più semplice per i principianti, le opzioni
-F e --color solitamente vengono combinate assieme (v. Sezione 3.3.1.1.). Noi utilizzeremo ls
46
Introduzione a Linux
-F nel corso di questo documento per una migliore leggibilità.
Come utenti, voi avrete direttamente a che fare solo con comuni file, file eseguibili, directory e
collegamenti. I file di tipo speciale esistono per consentire al sistema di fare ciò che gli richiedete e
sono usati dagli amministratori e dai programmatori.
Adesso, prima di trattare dei file importanti e delle directory, dobbiamo conoscere meglio le
partizioni.
3.1.2. Il partizionamento
3.1.2.1. Perché le partizioni?
Molte persone hanno una vaga idea di cosa siano le partizioni dal momento che ogni sistema
operativo è capace di crearle o rimuoverle. Può sembrare strano che Linux utilizzi più di una
partizione sullo stesso disco, anche quando si usa la procedura di installazione standard, così si
rende necessario fornire alcune spiegazioni.
Uno degli scopi di avere diverse partizioni è quello di raggiungere un livello di sicurezza dei dati
maggiore in caso di disastro. Dividendo il disco rigido in partizioni, i dati possono essere
raggruppati e separati. Quando capita un incidente, solo i dati nella partizione colpita saranno
danneggiati, mentre i dati nelle altre partizioni molto probabilmente sopravviveranno.
Questo principio data dai giorni in cui Linux non aveva un file system di tipo journaled e le cadute
di rete elettrica potevano condurre a disastri. L'uso delle partizioni resta per motivi di sicurezza e
robustezza, in modo che un guasto in una parte del sistema non significa automaticamente che
l'intero computer sia in pericolo. Attualmente questa è la ragione più rilevante del partizionamento.
Un semplice esempio: un utente crea uno script, un programma o un'applicazione web che inizia a
riempire il disco. Se il disco contenesse solo una grande partizione, l'intero sistema potrebbe
smettere di funzionare in caso di totale riempimento. Se l'utente invece conserva i dati in una
partizione separata, allora solo tale partizione (dei dati) potrebbe guastarsi, mentre le partizioni di
sistema e le eventuali altre di dati continuerebbero a funzionare.
Considerate che l'avere un file system “journaled” garantisce unicamente la sicurezza dei dati in
caso di interruzione di rete elettrica ed improvviso scollegamento di periferiche di archiviazione.
Ciò non protegge i vostri dati da blocchi guasti (bad block) ed errori logici del file system. In tali
casi dovreste usare una soluzione RAID (Redundant Array of Inexpensive Disk).
● partizione dati: normali dati del sistema Linux, compresa la partizione di root
contenente tutti i dati per avviare e far funzionare il sistema;
● partizione swap: espansione della memoria fisica del computer, memoria extra su
disco rigido.
47
Introduzione a Linux
Molti sistemi contengono una partizione di root, una o più partizioni di dati e una o più partizioni di
swap. Sistemi in ambienti misti possono avere anche partizioni per altri dati di sistema, come una
partizione con file system FAT o VFAT per i dati di MS Windows.
Parecchi sistemi Linux usano fdisk al momento dell'installazione per impostare il tipo di partizione.
Come avrete potuto notare durante l'esercizio del Capitolo 1, di solito ciò avviene automaticamente.
Tuttavia in qualche occasione potreste non essere così fortunati. In tal caso dovrete sia scegliere
manualmente il tipo di partizione, sia anche provvedere al partizionamento. Le partizioni standard
Linux hanno i numeri 82 per swap e 83 per i dati, i quali possono essere journaled (ext3) o normali
(ext2, nei sistemi più vecchi). L'utility fdisk ha un aiuto integrato sicché potete dimenticare questi
valori.
A parte questi due, Linux supporta una varietà di altri tipi di file system, come il relativamente
recente file system Reiser, JFS, NFS, FATxx e molti altri file system originariamente disponibili in
altri sistemi operativi (proprietari).
La partizione di root standard (rappresentata con una singola barra “/”) è di circa 100500MB e
contiene i file di configurazione del sistema, molti comandi base e programmi di server, librerie di
sistema, un po' di spazio temporaneo e la directory home dell'amministratore. Una installazione
standard richiede circa 250 MB per la partizione di root.
Lo spazio di swap (indicato con swap) è accessibile solo dal sistema stesso ed è nascosto alla vista
durante le normali operazioni. Swap è il mezzo che assicura (come nei normali sistemi UNIX) che
voi possiate continuare a lavorare qualsiasi cosa accada. Con Linux potenzialmente non vedrete mai
irritanti messaggi tipo Out of memory, please close some applications first and try again (Memoria
esaurita, per favore chiudere prima alcune applicazioni e riprovare), per necessità di questa memoria
in più. La procedura di swap o memoria virtuale da lungo tempo adottata, solo ora lo è da parte di
sistemi operativi estranei al mondo UNIX.
Usare la memoria su un disco rigido è naturalmente un'operazione più lenta rispetto all'utilizzo dei
veri circuiti di memoria presenti nel computer, ma avere questa semplice funzionalità extra è una
grossa comodità. Impareremo qualcosa in più sulla swap quando parleremo dei Processi nel
Capitolo 4.
Linux in genere si aspetta di avere il doppio della memoria fisica sotto forma di spazio di Swap sul
disco rigido. Installando un sistema dovete sapere come fare ciò. Ecco un esempio su di un sistema
con 512 MB di RAM:
● prima possibilità: una partizione di swap da 1 GB
● seconda possibilità: due partizioni di swap da 512 MB
● terza possibilità: con due dischi rigidi: 1 partizione da 512 MB
L'ultima opzione darà i migliori risultati quando ci si attende molte operazioni di I/O.
Leggete la documentazione del software per informazioni specifiche. Alcune applicazioni, come i
48
Introduzione a Linux
database, potrebbero richiedere maggiore spazio di swap. Altri, come alcuni sistemi palmari,
potrebbero non avere alcuna swap per l'assenza di un disco rigido. Lo spazio swap può dipendere
anche dalla vostra versione di kernel.
Il resto del disco rigido (dischi rigidi) è generalmente diviso in partizioni di dati, sebbene potrebbe
succedere che tutti i dati di sistema non critici risiedano in un'unica partizione, ad esempio quando
eseguite una installazione standard per stazione di lavoro. Quando i dati non critici sono suddivisi in
differenti partizioni, solitamente si segue uno schema preordinato:
● una partizione di programmi per gli utenti (/usr)
● una partizione contenente i dati personali degli utenti (/home)
● una partizione per conservare i dati temporanei come le code di stampa e di posta
(/var)
● una partizione per software di terze parti ed extra (/opt)
Una volta create le partizioni, potete solo aggiungerne altre. Cambiare dimensioni o proprietà di
partizioni esistenti è possibile ma non consigliabile.
La suddivisione dei dischi rigidi in partizioni è stabilita dall'amministratore di sistema: in sistemi
più grandi potrebbe anche distribuire una partizione su diversi dischi rigidi utilizzando il software
appropriato. Molte distribuzioni consentono impostazioni standard ottimizzate per stazioni di lavoro
(utenti medi) e per impieghi come server generici, ma accettano anche partizioni personalizzate.
Durante il processo di installazione potete definire il vostro schema di partizionamento sia
utilizzando lo strumento specifico della vostra distribuzione, che è abitualmente una interfaccia
puramente grafica, o fdisk, uno strumento testuale per creare partizioni e definirne le proprietà.
Una installazione workstation o cliente è destinata principalmente all'uso di una sola medesima
persona. Il software selezionato per l'installazione riflette ciò ed è posta l'attenzione sui pacchetti
per l'utente comune, come dei bei temi per il desktop, strumenti di sviluppo, programmi clienti per
la posta elettronica, software multimediale, web ed altri servizi. Il tutto è collocato insieme su una
grande partizione, viene aggiunto lo spazio di swap pari al doppio della RAM e la vostra
workstation generica è completa, dotata della più vasta quantità possibile di spazio su disco per
l'uso personale, ma con l'inconveniente di una possibile perdita di integrità dei dati durante
situazioni critiche.
In un server i dati di sistema tendono ad essere separati da quelli degli utenti. I programmi che
offrono servizi vengono tenuti in un posto diverso rispetto ai dati che essi trattano. Su questi sistemi
verranno create diverse partizioni:
● una partizione con tutti i dati necessari per l'avvio della macchina
● una partizione con i dati di configurazione e i programmi server
● una o più partizioni contenenti i dati dei server come le tabelle di database, la posta
degli utenti, un archivio ftp, ecc...
● una partizione con i programmi degli utenti e le applicazioni
● una o più partizioni per i file personali degli utenti (directory home)
● una o più partizioni di swap (memoria virtuale)
49
Introduzione a Linux
I server abitualmente hanno più memoria e, conseguentemente, più spazio di swap. Certi processi di
server, come quelli di database, possono richiedere più spazio swap del normale: leggete la
documentazione specifica per informazioni dettagliate. Per migliori prestazioni, spesso la swap è
divisa in due partizioni di swap.
Vogliamo attaccare questa partizione nel file system in una directory chiamata /opt/media. Per
fare ciò, l'amministratore di sistema deve assicurarsi che la directory /opt/media esista nel
sistema. Preferibilmente dovrebbe essere una directory vuota. Come ciò avvenga viene spiegato più
tardi in questo capitolo. Dopo, usando il comando mount, l'amministratore può attaccare la
partizione al sistema. Quando osserverete il contenuto della directory /opt/media formalmente
vuota, essa conterrà i file e le directory che si trovano sul dispositivo montato (disco rigido o
partizione di disco rigido, CD, DVD, flash card, USB o altra unità di memorizzazione).
Durante l'avvio del sistema, tutte le partizioni vengono montate così come indicato nel file
/etc/fstab. Alcune partizioni non vengono montate in automatico, per esempio se non sono
collegate costantemente al sistema, come le memorie usate dalla vostra macchina fotografica
digitale. Se ben configurata, la periferica sarà montata non appena il sistema si accorgerà che è
collegata, oppure può essere montabile dall'utente, cioè non avete bisogno di essere amministratore
di sistema per attaccare e staccare la periferica al/dal sistema. C'è un esempio nella Sezione 9.3.
In un sistema funzionante le informazioni sulle partizioni e sui relativi punti di montaggi possono
essere mostrate usando il comando df (che significa disk full o disk free). In Linux, df è la versione
GNU e supporta l'opzione -h o human readable (leggibile da esseri umani) che migliora
notevolmente la leggibilità. Notate che le macchine UNIX commerciali hanno comunemente le loro
versioni particolari di df e di molti altri comandi. Il loro comportamento di solito è lo stesso,
sebbene le versioni GNU degli strumenti comuni spesso hanno funzioni migliori e più numerose.
freddy:~> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 496M 183M 288M 39% /
/dev/hda1 124M 8.4M 109M 8% /boot
/dev/hda5 19G 15G 2.7G 85% /opt
/dev/hda6 7.0G 5.4G 1.2G 81% /usr
/dev/hda7 3.7G 2.7G 867M 77% /var
50
Introduzione a Linux
Figura 31. Struttura del file system Linux
51
Introduzione a Linux
Questa è la struttura di un sistema RedHat. A seconda dell'amministratore di sistema, il sistema
operativo e la missione della macchina UNIX, la struttura può cambiare e le directory possono
mancare oppure essere aggiunte a piacere. I nomi non sono neanche richiesti: sono solo una
convenzione.
L'albero del file system inizia dal tronco o sbarra, rappresentato da una sbarra (/). Tale directory,
contenente tutti i file e le directory sottostanti, è chiamata root directory (directory radice) o
“radice” del file system.
Le directory che si trovano solo ad un livello al di sotto di quella di root sono spesso precedute da
una sbarra (slash) per indicare la loro posizione e per evitare di confonderle con altre directory che
potrebbero avere lo stesso nome. Quando si inizia con un nuovo sistema è sempre una buona idea
dare un'occhiata alla directory radice. Vediamo come potete accedervi:
emmy:~> cd /
emmy:~> ls
bin/ dev/ home/ lib/ misc/ opt/ root/ tmp/ var/
boot/ etc/ initrd/ lost+found/ mnt/ proc/ sbin/ usr/
Tabella 32. Sottodirectory della directory radice
Directory Contenuto
Comuni programmi condivisi dal sistema, dall'amministratore di sistema e dagli
/bin
utenti.
I file di avvio e del kernel, vmlinuz. In alcune recenti distribuzioni ci sono
/boot anche i dati di grub. Grub è il GRand Unified Boot loader e rappresenta un
tentativo di sbarazzarsi di molti bootloader differenti che conosciamo oggi.
Contiene i riferimenti a tutto l'hardware periferico della CPU, che viene
/dev
rappresentato come file con particolari caratteristiche.
In /etc si trovano file di configurazione di sistema molto importanti. Questa
/etc
directory contiene dati simili a quelli del Pannello di Controllo di Windows
/home Directory home [personale] dei normali utenti.
/initrd (in alcune distribuzioni) Informazioni per l'avvio. Non rimuovere!
File di libreria, comprende file per tutti i tipi di programmi necessari al sistema
/lib
ed agli utenti.
Ogni partizione possiede lost+found nella directory più alta: vi si trovano i
/lost+found
file salvati durante un guasto.
/misc Per usi diversi.
Punto di montaggio standard per file system esterni, ad es. un CDROM o una
/mnt
fotocamera digitale.
/net Punto di montaggio standard per interi file system remoti.
/opt Contiene tipicamente software extra e di terze parti.
52
Introduzione a Linux
Directory Contenuto
Un file system virtuale contenente informazioni sulle risorse di sistema.
Maggiori informazioni sul significato dei file in proc si ottengono dando il
/proc
comando man proc in una finestra di terminale. Il file proc.txt tratta in
dettaglio del file system virtuale.
La directory home dell'utente amministratore. Tenete presente la differenza tra /,
/root
la directory root o radice, e /root, la home directory dell'utente root.
/sbin Programmi utilizzati dal sistema e dall'amministratore di sistema.
Spazio temporaneo usato dal sistema, ripulito ad ogni riavvio: da non usare per
/tmp
salvare alcun lavoro!
Programmi, librerie, documentazione, ecc... per tutti i programmi a disposizione
/usr
degli utenti.
Deposito di tutti i file variabili e temporanei creati dagli utenti, come i file di log,
le code di posta, l'area per lo spooler di stampa, spazio per l'archiviazione
/var
temporanea dei file scaricati da internet, o per conservare l'immagine di un CD
prima di masterizzarlo.
Come si può scoprire in quale partizione si trova una directory? Usando il comando df con un punto
(.) come opzione mostra la partizione a cui appartiene la directory corrente e informa sulla quantità
di spazio usato in tale partizione:
sandra:/lib> df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/hda7 980M 163M 767M 18% /
Come regola generale, ogni directory sotto la directory root si trova nella partizione di root, a meno
che non esista una voce separata nell'elenco completo prodotto da df (o df h senza altre opzioni).
Leggete di più in man hier.
Ogni partizione ha un proprio file system. Immaginando tutti quei file system insieme, possiamo
farci un idea della struttura ad albero dell'intero sistema, ma non è così semplice come quella. In un
file system, un file è rappresentato da un inode, un tipo di numero seriale che contiene informazioni
sui dati veri che costituiscono il file, su chi possiede il file e dove questo si trova nel disco rigido.
Ogni partizione ha il suo proprio insieme di inode: grazie ad un sistema con partizioni multiple
possono esistere file con lo stesso numero di inode.
Ciascun inode descrive una struttura di dati nel disco rigido, conservando le proprietà di un file,
53
Introduzione a Linux
compresa la locazione fisica dei dati del file. Quando si prepara un disco fisso per accettare
l'archiviazione dei dati, normalmente durante l'iniziale processo di installazione del sistema, si crea
un numero fisso di inode per partizione. Questo numero sarà la quantità massima di file di tutti i tipi
(comprese directory, file speciali, collegamenti, ecc...) che potranno esistere contemporaneamente
nella partizione. Normalmente contiamo di avere 1 inode da 2 a 8 kilobyte di memoria.
Ogni qualvolta si crea un nuovo file, questo ottiene un inode libero contenente le seguenti
informazioni:
● Proprietario (owner) e gruppo possessore del file.
● Tipo del file (normale, directory, ecc...)
● Permessi sul file (v. Sezione 3.4.1.)
● Data ed ora di creazione, ultima lettura e modifica.
● Data ed ora in cui tale informazione è stata cambiata nell'inode.
● Numero di collegamenti a questo file (v. più oltre in questo capitolo).
● Dimensione del file
● Un indirizzo che definisce la vera posizione dei dati del file.
3.2.1. Il percorso
Quando volete che il sistema esegua un comando, non dovete quasi mai dare il percorso (path)
completo di quel comando. Per esempio, sappiamo che il comando ls si trova nella directory /bin
(controllate con which a ls), cosicché non dobbiamo inserire il comando /bin/ls affinché il
computer elenchi il contenuto della corrente directory.
La variabile d'ambiente PATH si occupa di ciò. Tale variabile elenca le directory del file system in
cui si possono trovare i file eseguibili e così risparmia all'utente molte battiture di caratteri e
memorizzazioni delle posizioni dei comandi. Così PATH contiene solitamente molte directory
aventi bin da qualche parte nel loro nome, come mostra l'utente qui sotto. Il comando echo si usa
per vedere il contenuto (“$”) della variabile PATH:
54
Introduzione a Linux
passate. Ciò può portare a strane situazioni. Nel primo esempio qui di seguito l'utente sa che esiste
un programma chiamato sendsms per inviare un messaggio SMS e che un altro utente dello stesso
sistema può usarlo, ma lui no. La differenza consiste nella configurazione della variabile PATH:
Notate l'uso di su (switch user), che vi consente di eseguire una shell nell'ambiente di un altro utente
a condizione che ne conosciate la password.
Una sbarra rovescia indica la continuazione di una linea su quella successiva senza l'interruzione di
un Invio da una linea all'altra.
jumper:~> wc -l test
(Ctrl-C)
jumper:~> which wc
wc is hashed (/home/jumper/bin/wc)
jumper:~> echo $PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
L'uso del comando which ci mostra che questo utente ha una directory bin nella sua home
directory, contenente un programma che è anche chiamato wc. Dal momento che il programma nella
sua home directory viene trovato per primo mentre si stanno scorrendo i percorsi alla ricerca di wc,
tale programma “fatto in casa” viene eseguito con un input che probabilmente non è in grado di
comprendere, cosicché siamo costretti ad interromperlo. Esistono vari modi per risolvere questo
problema (ci sono sempre diversi modi per risolvere un problema in UNIX/Linux): una risposta
potrebbe essere quella di rinominare il programma wc dell'utente, oppure l'utente potrebbe dare il
percorso completo fino al comando desiderato, che può essere trovato utilizzando -a con il
comando wc:
Se l'utente utilizza più frequentemente programmi in altre directory, può cambiare il suo percorso
per cercare per ultimo nelle sue directory:
55
Introduzione a Linux
I cambiamenti non sono permanenti!
Notate che, quando si usa il comando export in una shell, i cambiamenti sono
temporanei e validi solo per la sessione in corso (finché non la chiudete). L'apertura di
nuove sessioni, anche mentre quella corrente è ancora attiva, non vi creerà un nuovo
percorso in esse. Vedremo nella Sezione 7.2 come possiamo rendere permanenti
nell'ambiente questo tipo di modifiche, aggiungendo quelle linee ai file di
configurazione della shell.
Nell'altro caso, il percorso non inizia con una sbarra ed è possibile confondere tra ~/bin/wc (nella
directory home dell'utente) e bin/wc in /usr come nell'esempio precedente. I percorsi che non
iniziano con una sbarra sono sempre relativi.
Nei percorsi relativi usiamo anche . e .. per indicare la directory corrente e quella genitrice. Una
coppia di esempi pratici:
56
Introduzione a Linux
condivise montagne di informazioni. Dibattere in dettaglio sul kernel ci porterebbe troppo lontano:
per ora è sufficiente sapere che il kernel è il file più importante del sistema.
3.2.3.2. La shell
3.2.3.2.1. Cos'è una shell?
Cercare una spiegazione appropriata del concetto di shell mi ha creato più problemi di quanti mi
attendessi. Sono disponibili tutti i generi di spiegazioni, che vanno dal semplice paragone come “la
shell è lo sterzo di un'auto”, alla vaga definizione del manuale di Bash che afferma che “bash è un
interprete del linguaggio a comandi compatibile sh” o ad altre ancora più oscure espressioni come
“una shell gestisce l'interazione tra il sistema e i suoi utenti”. Una shell è molto più di questo.
Una shell può essere meglio paragonata ad un mezzo per parlare con il computer, un linguaggio.
Molti utenti conoscono quell'altro linguaggio, il linguaggio “puntaeclicca” del desktop, ma con
esso il computer guida la conversazione, mentre l'utente assume il ruolo passivo di selezionare le
funzioni che questo gli presenta. E' molto difficile per un programmatore includere tutte le opzioni e
gli usi possibili di un comando in un formato GUI. Così le GUI sono quasi sempre meno potenti del
comando o dei comandi che formano il backend [cioè su cui queste si appoggiano per svolgere le
varie funzioni].
La shell, d'altro canto, è una maniera evoluta di dialogare con il sistema poiché consente la
conversazione nei due sensi e di assumere l'iniziativa. Entrambe le parti della comunicazione sono
uguali, così si possono sperimentare nuove idee. La shell permette all'utente di gestire un sistema in
modo piuttosto flessibile e, come ulteriore vantaggio, di automatizzare i compiti.
● sh o Bourne Shell: la shell originale ancora utilizzata su sistemi UNIX e in ambienti
collegati a UNIX. E' la comune shell, un piccolo programma con poche funzioni.
Quando è in modalità POSIXcompatibile bash emula questa shell.
● bash o Bourne Again Shell: la shell GNU standard, intuitiva e flessibile.
Probabilmente molto consigliabile sia ai principianti sia, contemporaneamente, agli
esperti e professionisti essendo uno strumento molto potente. In Linux bash è la shell
standard per i comuni utenti. Tale shell viene anche detta superinsieme della shell
Bourne, un insieme di aggiunte e plugin. Ciò significa che la shell Bourne Again è
compatibile con quella Bourne: i comandi che funzionano con sh, funzionano pure
con bash. Comunque non è sempre vero il contrario. Tutti gli esempi e gli esercizi di
questo libro usano bash.
● csh o C shell: la sintassi di questa shell assomiglia a quella del linguaggio di
programmazione C. Qualche volta viene richiesta dai programmatori.
● tcsh o Turbo C shell: un superinsieme della comune C shell, che aumenta la
semplicità e la velocità.
● ksh o Korn shell: apprezzata qualche volta da persone con esperienze di UNIX. E' un
superinsieme della Bourne shell: in configurazione base è un incubo per i
57
Introduzione a Linux
principianti.
Il file /etc/shells offre una panoramica delle shell conosciute da un sistema Linux:
Bourne shell falsa
Notate che normalmente /bin/sh è un collegamento a Bash, che, se chiamata in
questo modo, verrà eseguita in modalità Bourne shell.
La vostra shell di base è impostata nel file /etc/passwd, come in questa linea che riguarda
l'utente mia:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash
Per passare da una shell all'altra, basta solo inserire il nome della nuova shell nel terminale attivo. Il
sistema trova la directory dove ricorre il nome usando le impostazioni di PATH e, dal momento che
una shell è un file eseguibile (programma), la shell corrente la attiva e la manda in esecuzione.
Abitualmente appare un nuovo prompt perché ogni shell ha il proprio aspetto tipico:
mia:~> tcsh
[mia@post21 ~]$
Non dovete preoccuparvi eccessivamente di quale sia il percorso della vostra home directory: infatti
il percorso corretto è conservato nella variabile d'ambiente HOME, nel caso alcuni programmi ne
abbiano bisogno. Con il comando echo potete vedere il contenuto di questa variabile:
Nella vostra directory personale potete fare tutto ciò che vi piace: potete metterci tanti file in tante
58
Introduzione a Linux
directory quanti ne volete, sebbene lo spazio totale per dati e i file sia naturalmente limitato a causa
dell'hardware, delle dimensioni delle partizioni e, alle volte, dall'applicazione di un sistema di quota
da parte dell'amministratore. Era infatti pratica comune limitare l'uso del disco quando i dischi rigidi
erano ancora costosi. Al giorno d'oggi i limiti vengono applicati quasi esclusivamente in grossi
ambienti. Potete verificare da voi stessi l'esistenza di un limite utilizzando il comando quota:
pierre@lamaison:/> quota -v
Disquotas for user pierre (uid 501): none
Nel caso siano state stabilite delle quote, otterrete una lista delle partizioni limitate e delle loro
specifiche limitazioni. L'eccedere i limiti può essere comunque tollerato per un breve periodo con
alcune minime o nulle restrizioni. Informazioni dettagliate si possono trovare usando i comandi info
quota o man quota.
Nessuna Quota?
Se il vostro sistema non riesce a trovare quota, allora significa che non sono state
applicate limitazioni all'uso del file system.
La vostra directory personale viene indicata con una tilde (~), abbreviazione di
/path_to_home/nome_utente. Lo stesso percorso è conservato nella variabile HOME,
cosicché non dovete fare nulla per attivarlo. Una semplice applicazione: passare da
/var/music/albums/arno/2001 a images contenuta nella vostra directory personale
utilizzando un comando elegante:
rom:/var/music/albums/arno/2001> cd ~/images
rom:~/images> pwd
/home/rom/images
Più avanti in questo capitolo discuteremo dei comandi per la gestione dei file e delle directory allo
scopo di mantenere ordinata la vostra directory personale.
In questa sezione proveremo ad offrire una panoramica dei file di configurazione più comuni.
Questo non è un elenco esaustivo: installando pacchetti extra si possono aggiungere altri file di
configurazione in /etc. Leggendo i file di configurazione scoprirete che solitamente essi sono
abbastanza ben commentati ed autoesplicanti. Alcuni file hanno anche delle pagine man che
contengono documentazione extra, come man group.
Tabella 33. I più comuni file di configurazione
59
Introduzione a Linux
File Informazioni/servizio
Il file degli alias di posta utilizzato dai server di posta Sendmail e Postfix. L'uso di
un mail server nel mondo UNIX è da lunghi anni comune in tutti i sistemi e quasi
aliases ogni distribuzione Linux contiene ancora un pacchetto Sendmail. In questo file i
nomi dell'utente locale vengono accoppiati con i nomi reali, quando essi ricorrono
negli indirizzi Email, o con altri indirizzi locali.
apache I file di configurazione del web server Apache
Il file di configurazione globale della Bourne Again SHell. Definisce le funzioni e
bashrc gli alias per tutti gli utenti. Le altre shell possono avere il proprio file di
configurazione globale, come cshrc.
crontab e le directory Configurazione delle operazioni da eseguirsi periodicamente backup,
cron.* aggiornamenti dei database di sistema, pulizia del sistema, rotazione dei log, ecc...
default Le opzioni di base per certi comandi, come per useradd.
filesystems File system noti: ext3, vfat, iso9660, ecc...
fstab Elenca le partizioni con i relativi punti di montaggio (mount point).
Configurazione del server ftp: chi può connettersi, quali parti del sistema sono
ftp*
accessibili, ecc...
File di configurazione dei gruppi di utenti. Utilizzate le utility ombra groupadd,
group groupmod e groupdel per modificare questo file. Modificatelo manualmente solo
se realmente sapete cosa state facendo.
Un elenco di macchine che possono essere contattate tramite rete, ma senza la
necessità di un servizio di risoluzione dei nomi di dominio (DNS). Questo non ha
hosts
nulla a che fare con la configurazione di rete del sistema, che si attua con
/etc/sysconfig.
inittab Informazioni per l'avvio: modalità, numero delle console di testo, ecc...
issue Informazioni sulla distribuzione (versione di rilascio e/o info sul kernel)
ld.so.conf Locazioni dei file di libreria
lilo.conf, silo.conf, Informazioni di avvio per il LInux LOader, il sistema di avvio che ora
aboot.conf, ecc... gradualmente sarà soppiantato da GRUB.
Rotazione dei log, un sistema che previene la raccolta di una quantità eccessiva di
logrotate.*
file di log.
mail Directory contenente istruzioni per il comportamento del mail server.
modules.conf Configurazione dei moduli che abilitano funzioni speciali (driver).
Message Of The Day: mostrato a chiunque si colleghi al sistema (in modo testuale),
motd può essere usato dall'amministratore di sistema per annunciare
servizi/manutenzioni ecc...
mtab File system correntemente montati. Si avvisa di non modificare mai questo file.
Ordine secondo cui contattare i risolutori dei nomi quando un processo richiede la
nsswitch.conf
risoluzione di un nome di host.
pam.d Configurazione dei moduli di autenticazione
Elenca gli utenti locali. Utilizzate le utility ombra useradd, usermod e userdel
passwd per modificare questo file. Modificatelo manualmente solo quando sapete
veramente cosa state facendo.
60
Introduzione a Linux
File Informazioni/servizio
File di configurazione di stampa sorpassato ma spesso ancora frequentemente
printcap utilizzato. Non modificatelo manualmente a meno che non sappiate realmente cosa
state facendo.
Estesa configurazione di sistema dell'ambiente di shell: variabili, proprietà basiche
profile
dei nuovi file, limitazioni delle risorse, ecc...
rc* Directory che definiscono i servizi attivi per ogni run level.
resolv.conf Ordine da seguire per contattare i server DNS (solo Domain Name Server).
sendmail.cf Principale file di configurazione del server Sendmail.
sndconfig o sound Configurazione della scheda sonora e degli eventi sonori.
ssh Directory contenente i file di configurazione del client e del server secure shell
Directory contenente i file di configurazione del sistema: mouse, tastiera, rete,
sysconfig desktop, orologio di sistema, gestione dell'alimentazione elettrica, ecc... (specifico
di RedHat).
Impostazioni del server grafico X. RedHat usa Xfree che è richiamato nel nome del
principale file di configurazione, Xfree86Config. Contiene inoltre le direttive
X11
generali per i window manager disponibili nel sistema, per esempio gdm, fvwm,
twm, ecc...
I file di configurazione dei servizi Internet avviati dal daemon di sistema dei
xinetd.* o inetd.conf
servizi (estesi) Internet (server che non avviano daemon indipendenti).
Nel corso di questa guida impareremo di più su questi file e ne studieremo alcuni in dettaglio.
In genere gli utenti novizi di Linux o UNIX sono spesso sopraffatti dalla quantità di nuovi nomi e
concetti che sono costretti ad imparare. Ecco il perché in questa introduzione è stato accluso un
elenco dei comuni dispositivi.
Tabella 34. Comuni periferiche
Nome Device o dispositivo
cdrom CD drive
console Voce speciale per la console correntemente in uso.
cua* Porte seriali
dsp* Periferiche per il campionamento e la registrazione
Nomi della maggioranza di tipi di floppy drive: quello base è /dev/fd0,
fd*
un lettore per floppy da 1.44 MB.
61
Introduzione a Linux
Nome Device o dispositivo
Supporto standard per periferiche IDE con la capacità massima di partizioni
hd[a-t][1-16]
per ciascuna
ir* Periferiche all'infrarosso
isdn* Gestione delle connessioni ISDN
js* Joystick
lp* Stampanti
mem Memoria
midi* Lettori midi
mixer* e music Modello ideale di un mixer (combina o somma segnali)
modem Modem
mouse (anche msmouse, logimouse,
Tutti i tipi di mouse
psmouse, input/mice, psaux)
null Bidone della spazzatura senza fondo
par* Nomi del supporto delle porte parallele
pty* Pseudo terminali
radio* Per radioamatori (HAM)
ram* Device di avvio
sd* Dischi SCSI con le loro partizioni
Per applicazioni audio che usano le caratteristiche di sintetizzazione della
sequencer
scheda sonora (controllore di periferiche MIDI)
tty* Console virtuali che emulano i terminali vt100
usb* Periferiche USB (schede, scanner, ecc...)
video* Per l'uso di una scheda grafica con supporto video.
Come misura di sicurezza questi file sono tenuti normalmente in luoghi separati dai principali file
di sistema, cosicché siamo in grado di osservarli meglio e di impostare, se necessario, permessi più
stretti. Molti di questi file hanno pure bisogno di permessi più estesi del solito, come /var/tmp,
che necessita di essere scrivibile da chiunque. Molte attività dell'utente potrebbero svolgersi colà,
generate anche da anonimi utenti Internet connessi al vostro sistema. Questo è uno dei motivi per
cui la directory /var, comprese tutte le sue sottodirectory, si trova in una partizione separata. In
questo modo, per esempio non sussiste il rischio che una mail bomb, invada il resto del sistema
operativo che contiene dati più importanti, come i vostri programmi e i file di configurazione.
62
Introduzione a Linux
/var/tmp/ e /tmp
I file in /tmp possono essere cancellati senza preavviso da regolari operazioni di
sistema o a causa di un riavvio dello stesso. In alcuni sistemi (personalizzati) anche
/var/tmp potrebbe comportarsi in modo imprevedibile. Tuttavia, dal momento che
non è il caso normale, vi suggeriamo di usare la directory /var/tmp per il salvataggio
dei file temporanei. In caso di dubbi, controllate con il vostro amministratore di sistema.
Se gestite voi il vostro sistema, potrete essere ragionevolmente certi che questo è un
luogo sicuro se non avete cambiato le impostazioni di /var/tmp (come root, in quanto
un utente normale non può farlo).
Qualsiasi cosa facciate, provate a mantenere i privilegi garantiti ad un utente normale
non cominciate a salvare file direttamente nella directory radice (/) del file system, non
metteteli in /usr o in altre sottodirectory o in un altro posto riservato. Ciò limita
notevolmente il vostro accesso ai file system sicuri.
Uno dei principali sistemi di sicurezza di UNIX, che naturalmente è stato bene implementato su
tutte le macchine Linux, è la funzione di conservazione dei log, che registra tutte le azioni
dell'utente, i processi, gli eventi di sistema, ecc... Il file di configurazione del cosiddetto
syslogdaemon stabilisce quale informazione e per quanto essa sarà mantenuta registrata. La
posizione originale di tutti i log è /var/log, che contiene file differenti per i log d'accesso, dei
server, per i messaggi di sistema, ecc...
In /var troviamo di solito i dati dei server, mantenuti qui per separarli dai dati critici come il
programma server stesso e i suoi file di configurazione. Un tipico esempio in Linux è /var/www,
che contiene le pagine HTML attive, script e immagini che offre un web server. L'albero FTP di un
server FTP (dati che possono essere scaricati da un cliente remoto) è altresì ben conservato in una
delle sottodirectory di /var. Siccome tali dati sono pubblicamente accessibili e spesso modificabili
da utenti anonimi, è più sicuro tenerli qui, lontani da partizioni o directory con dati sensibili.
In molte installazioni di tipo stazione di lavoro, /var/spool avrà almeno le directory at e cron,
contenenti le operazioni programmate. In ambienti d'ufficio tale directory contiene lpd, che tiene
sia le code di stampa ed altri file di configurazione della stampante, sia i file dei log di quest'ultima.
In sistemi server troveremo in genere /var/spool/mail, contenente la posta in arrivo degli
utenti locali, ordinata in un file per utente, la “inbox” dell'utente. Una directory correlata è
mqueue, l'area di spooler per i messaggi di posta non inviati. Queste parti del sistema sono molto
occupate nei server di posta con molti utenti. Anche i news server usano l'area /var/spool a
causa dell'enorme quantità di messaggi da elaborare.
63
Introduzione a Linux
In realtà dovreste leggere le pagine Info di ls, dal momento che si tratta di un comando molto
frequente con molte opzioni utili. Le opzioni si possono combinare, come succede con molti
comandi UNIX e le loro opzioni. Una combinazione comune è ls -al: mostra un lungo elenco di
file e le loro proprietà così come le destinazioni a cui punta ciascun collegamento simbolico. ls
-latr mostra gli stessi file, ma ora in ordine di ultima modifica inverso in modo che i file
modificati più di recente appaiono alla fine dell'elenco. Ecco qui un paio di esempi:
krissie:~/mp3> ls
Albums/ Radio/ Singles/ gene/ index.html
krissie:~/mp3> ls
./ .thumbs Radio gene/
../ Albums/ Singles/ index.html
krissie:~/mp3> ls -l Radio/
total 8
drwxr-xr-x 2 krissie krissie 4096 Oct 30 1999 Carolina/
drwxr-xr-x 2 krissie krissie 4096 Sep 24 1999 Slashdot/
krissie:~/mp3> ls -ld Radio/
drwxr-xr-x 4 krissie krissie 4096 Oct 30 1999 Radio/
krissie:~/mp3> ls -ltr
total 20
drwxr-xr-x 4 krissie krissie 4096 Oct 30 1999 Radio/
-rw-r--r-- 1 krissie krissie 453 Jan 7 2001 index.html
drwxrwxr-x 30 krissie krissie 4096 Oct 20 17:32 Singles/
drwxr-xr-x 2 krissie krissie 4096 Dec 4 23:22 gene/
drwxrwxr-x 13 krissie krissie 4096 Dec 21 11:40 Albums/
Tabella 35. Schema base dei colori in colorls
64
Introduzione a Linux
Colore Tipo di file
blu directory
rosso archivi compressi
bianco file di testo
rosa immagini
azzurro collegamenti
giallo dispositivi
verde file eseguibili
rosso lampeggiante collegamenti interrotti
Maggiori indicazioni si trovano nella pagina man. Nei primi tempi le stesse informazioni [sul tipo di
file] venivano rappresentate applicando dei suffissi ad ogni nome di file non standard. Per l'uso in
monocromatico (come la stampa di un elenco di directory) e per una leggibilità generale, è ancora
utilizzato questo schema:
Tabella 36. Schema base dei suffissi per ls
Carattere Tipo di file
nessuno file normale
/ directory
* file eseguibile
@ collegamento
= socket
| named pipe
65
Introduzione a Linux
Il comando file ha una serie di opzioni, fra cui l'opzione -z per curiosare all'interno di file
compressi (v. info file per una descrizione dettagliata). Tenete in mente che i risultati di file non
sono assoluti trattandosi di semplici supposizioni: in altre parole, file può essere tratto in inganno.
Perché tutto questo trambusto per i tipi di file e i formati?
In breve, tratteremo di una coppia di strumenti a linea di comando per guardare i file di
puro testo. Tali strumenti non funzionano se usati con i tipi di file sbagliati. Nel
peggiore dei casi, essi manderanno in crash il vostro terminale e/o faranno un sacco di
segnali sonori. Se vi capita, basta chiudere la sessione del terminale e ricominciare con
una nuova. Ma cercate di evitarlo, perché normalmente è molto fastidioso per le altre
persone.
66
Introduzione a Linux
... non è una cosa complicata da fare. Oggi quasi ogni sistema è collegato in rete e
conseguentemente i file vengono copiati da una macchina all'altra. E, specialmente quando si sta
lavorando in un ambiente grafico, la creazione di nuovi file è semplicissima e spesso è eseguita
senza il consenso dell'utente. Per illustrare il problema, ecco qui il contenuto integrale di una
directory di un nuovo utente, creata in un sistema RedHat:
Di primo acchito, il contenuto di una directory personale “usata” non sembra neppure in brutte
condizioni:
olduser:~> ls
app-defaults/ crossover/ Fvwm@ mp3/ OpenOffice.org638/
articles/ Desktop/ GNUstep/ Nautilus/ staroffice6.0/
bin/ Desktop1/ images/ nqc/ training/
brol/ desktoptest/ Machine@ ns_imap/ webstart/
c/ Documents/ mail/ nsmail/ xml/
closed/ Emacs@ Mail/ office52/ Xrootenv.0
Ma quando tutti i file e le directory inizianti con un punto sono incluse, esistono 185 oggetti in
questa directory. Ciò si spiega perché molte applicazioni hanno le proprie directory e/o file,
contenenti impostazioni specifiche dell'utente, nella directory personale di costui. Abitualmente
questi file vengono creati la prima volta che avviate l'applicazione. In alcuni casi verrete avvisati
quando è necessario creare una nuova directory non ancora esistente, ma il più delle volte tutto
viene effettuato automaticamente.
Inoltre nuovi file sono creati apparentemente in continuazione poiché gli utenti vogliono salvare
file, tenere versioni differenti dei propri lavori, usare applicazioni Internet e scaricare file e allegati
nelle loro macchine locali. Non si ferma. E' evidente che una persona ha bisogno di un preciso
schema per avere una panoramica delle cose.
Nella prossima sezione discuteremo su cosa significhi per noi tenere in ordine. Parleremo solo degli
strumenti testuali disponibili nella shell, dal momento che gli strumenti grafici sono molto intuitivi
e hanno il medesimo aspetto dei gestori di file puntaeclicca in stile MS Windows, comprese le
funzioni grafiche di aiuto ed altre caratteristiche che vi attendete da questo genere di applicazioni.
L'elenco seguente è una panoramica dei più popolari gestori di file per GNU/Linux. Molti di loro
possono essere avviati dal menu del vostro desktop manager o cliccando sull'icona della vostra
directory personale o da linea di comando, dando questi comandi:
67
Introduzione a Linux
su http://docs.kde.org.
● mc: Midnight Commander, il file manager di Unix con lo stile del Norton
Commander. Tutta la documentazione disponibile su http://gnu.org/directory o su un
mirror come http://www.ibiblio.org.
La creazione di directory e sottodirectory in una sola mossa si fa usando l'opzione -p:
richard:~> cd archive
richard:~/archive> ls
1999/ 2000/ 2001/
richard:~/archive> mkdir 2001/reports/Restaurants-Michelin/
mkdir: cannot create directory '2001/reports/Restaurants-Michelin/':
No such file or directory
richard:~/archive> mkdir -p 2001/reports/Restaurants-Michelin/
richard:~/archive> ls 2001/reports/
Restaurants-Michelin/
Se il nuovo file ha bisogno di ulteriori permessi oltre a quelli di base per la creazione, i nuovi diritti
di accesso possono essere impostati in una sola mossa, usando ancora il comando mkdir (v. pagine
Info per maggiori informazioni). Stiamo per trattare le modalità d'accesso nella prossima sezione
dedicata alla sicurezza dei file.
Il nome di una directory deve attenersi alle stesse regole applicate ai nomi dei comuni file. Una
delle restrizioni più importanti è che non ci possono esistere due file con lo stesso nome in una
directory (ma ricordate che Linux è un sistema operativo che distingue tra lettere maiuscole e
minuscole [case sensitive] come UNIX). Virtualmente non esistono limiti alla lunghezza del nome
di un file, ma di solito si tiene più corto di 80 caratteri in modo da farlo stare in una sola linea di
terminale. Potete usare qualsiasi carattere a piacere nel nome di un file, sebbene sia consigliabile
68
Introduzione a Linux
escludere i caratteri che hanno un significato speciale per la shell. In caso di dubbi, consultate
l'Appendice C.
Questo comando serve anche per rinominare i file:
richard:~> ls To_Do
-rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 To_Do
richard:~> mv To_Do done
richard:~> ls -l done
-rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 done
E' evidente che cambia solo il nome del file: tutte le altre proprietà rimangono uguali.
Dettagliate informazioni sulla sintassi e le caratteristiche del comando mv si possono trovare nelle
pagine man o Info. L'uso di tale documentazione dovrebbe essere il vostro primo pensiero quando
incontrate un problema: facilmente la risposta ad esso si trova proprio nella documentazione di
sistema. Come gli utenti esperti consultano le pagine man quotidianamente, così i principianti
dovrebbero leggerle ogni volta. Dopo un po' imparerete le opzioni più comuni dei normali comandi,
ma avrete ancora bisogno della documentazione come fonte primaria di informazioni. Notate che le
informazioni contenute negli HOWTO, FAQ, pagine man e così via, stanno lentamente
trasfondendosi nelle pagine Info, che oggi sono la fonte più aggiornata di documentazione in linea
(cioè disponibile per la lettura sul sistema).
cp [R] dal_file al_file
Come esempio ecco il caso dell'utente newguy che desidera le stesse impostazioni del desktop
Gnome che ha l'utente oldguy. Un modo per risolvere il problema è copiare le impostazioni di
oldguy nella directory personale di newguy:
victor:~> cp -R ../oldguy/.gnome/ .
Ciò restituirà alcuni errori legati ai permessi sui file, ma tutti questi errori hanno a che fare con i file
privati di cui, in ogni caso, newguy non ha necessità. Tratteremo nella prossima parte come
cambiare questi permessi in caso essi costituiscano veramente un problema.
69
Introduzione a Linux
Quanto vuota può essere una directory?
E' normale che le directory . (punto) e .. (puntopunto) non possano essere rimosse, dal
momento che esse sono necessarie anche in una directory vuota per stabilire il livello
delle directory nella gerarchia del file system.
In Linux, esattamente come in UNIX, non esiste un cestino almeno non nella shell, sebbene ci
siano numerose soluzioni per la modalità grafica. Cosicché un file, una volta rimosso, non esiste più
ed in genere non c'è modo di recuperarlo a meno che non abbiate dei backup o siate veramente
rapidi e abbiate un amministratore di sistema realmente bravo. Per proteggere il principiante da
questo inconveniente, è possibile attivare con l'opzione -i il comportamento interattivo dei
comandi rm, cp e mv. In tal caso il sistema non agirà immediatamente su richiesta ma, invece,
chiederà conferma, richiedendo un clic aggiuntivo sul tasto Invio per produrre il danno:
Tratteremo di come rendere automatica tale opzione nel Capitolo 7 in cui si parla della
personalizzazione del vostro ambiente di shell.
Tutti i tipi di sostituzioni possono essere usati contemporaneamente: la shell è molto logica in ciò.
La shell Bash, per esempio, non ha problemi con espressioni come ls dirname/*/*/*[2-3].
In altre shell, l'asterisco è comunemente usato per ridurre gli sforzi di battitura: una persona
potrebbe scrivere cd dir* al posto di cd directory. In Bash, comunque, ciò non è necessario
poiché la shell GNU ha una funzione chiamata completamento dei nomi dei file: significa che voi
70
Introduzione a Linux
potete battere i primi caratteri di un comando (ovunque) o di un file (nella directory corrente) e, se
non c'è possibilità di confusione, la shell indovinerà cosa cosa intendete dire. Per esempio, in una
directory contenente molti file, potete controllare se c'è qualche file che inizia con la lettera A
battendo soltanto ls A e premendo il tasto Tab per due volte, piuttosto che premere Invio. Se esiste
un solo file che inizia per “A”, questo verrà mostrato come argomento di ls (o qualsiasi altro
comando di shell) immediatamente.
3.3.3.2. which
Un modo piuttosto semplice per trovare i file è ricorrere al comando which, che, per l'appunto,
ricerca i file richiesti nelle directory elencate nel percorso di ricerca dell'utente. Naturalmente, dal
momento che il percorso di ricerca contiene solo percorsi a directory con programmi eseguibili,
which non funziona con i file normali. Il comando which è utile quando appaiono messaggi tipo
“Command not found”. Nell'esempio qui sotto, l'utente tina non può usare il programma acroread,
mentre il suo collega non incontra alcun problema sullo stesso sistema. Il problema è simile a quello
del PATH (o PERCORSO) della parte precedente: il collega di Tina le dice che lui può vedere il
programma richiesto in /opt/acroread/bin, ma questa directory non si trova nel percorso di
Tina:
Il problema può essere risolto scrivendo il percorso completo del comando da avviare o
riesportando il contenuto della variabile PATH:
Con which si può anche controllare se un comando è un alias di un altro:
gerrit:~> which -a ls
ls is aliased to 'ls -F --color=auto'
ls is /bin/ls
Ciò può essere così interpretato: “Cerca tutti i file e le sottodirectory contenute in un dato percorso e
stampa i nomi dei file contenenti la stringa di ricerca nel loro nome (non nel loro contenuto)”.
71
Introduzione a Linux
Altra applicazione di find si ha per ricercare file di una certa misura, come nell'esempio seguente,
dove l'utente peter vuole trovare tutti i file della corrente directory o di una delle sue sottodirectory,
che sono più grandi di 5 MB:
Se scavate nelle pagine man, vedrete che find può compiere operazioni sui file trovati. Un semplice
esempio è la rimozione dei file. E' meglio prima provare senza l'opzione -exec che siano stati
selezionati i file giusti e poi ridare il comando per cancellarli. Sotto, cerchiamo file che finiscono
per .tmp:
peter:~>
Ottimizzate!
Tale comando richiamerà rm tante volte quante sarà rintracciato un file corrispondente
ai criteri di ricerca. Nel peggior caso potrebbe essere migliaia o milioni di volte. E'
abbastanza un bel carico sul vostro sistema.
Un modo di procedere più realistico sarebbe quello di usare una pipe (|) e lo strumento
xargs con rm per argomento. In questa maniera il comando rm è chiamato solo quando
la linea di comando è piena, al posto di ogni file. Guardate il Capitolo 5 per maggiori
informazioni sull'uso della redirezione dell'I/O per facilitare i compiti di ogni giorno.
Successivamente (nel 1999 secondo le pagine man, dopo 20 anni da find) è stato sviluppato locate.
Questo programma è più facile da usare, ma più limitato rispetto a find, dal momento che il suo
output si basa su un database indicizzato dei file che viene aggiornato solo una volta al giorno.
D'altra parte una ricerca nel database locate richiede minori risorse rispetto a find e quindi mostra i
risultati quasi istantaneamente.
Molte distribuzioni Linux oggi usano slocate, un locate migliorato dal punto di vista della
sicurezza, la versione moderna di locate che impedisce agli utenti di ottenere informazioni in uscita
che essi non hanno il diritto di leggere. I file nella directory personale di root sono un esempio:
questi non sono normalmente accessibili al pubblico. Un utente che desideri rintracciare qualcuno
che conosca la Cshell può dare il comando locate .cshrc per vedere tutti gli utenti che hanno un
file personalizzato di configurazione della CShell. Supponendo che gli utenti root e jenny stiano
facendo girare una shell C, solo il file /home/jenny/.cshrc verrà mostrato e non quello nella
home directory di root. In molti sistemi locate è un collegamento simbolico al programma slocate:
billy:~> ls -l /usr/bin/locate
lrwxrwxrwx 1 root slocate 7 Oct 28 14:18 /usr/bin/locate -> slocate*
L'utente tina avrebbe potuto usare locate per trovare l'applicazione desiderata:
72
Introduzione a Linux
/usr/share/icons/locolor/32x32/apps/acroread.png
/usr/local/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/bin/acroread
Per mantenere il percorso più breve possibile, in modo tale che il sistema non debba cercare troppo
a lungo ogni volta che un utente vuole eseguire un programma, aggiungeremo /usr/local/bin
al percorso e non le altre directory, contenti solamente i file binari di uno specifico programma,
mentre /usr/local/bin contiene altri utili programmi.
Ricerca nella history
Pure utile in questi casi è la funzione di ricerca di bash, che si attiva premendo insieme
Ctrl+R, come nell'esempio dove vogliamo controllare nuovamente che cosa abbiamo
fatto con l'ultimo find:
thomas ~> ^R
(reverse-i-search)'find': find '/home/thomas' -name *.xml
Battete la vostra stringa di ricerca al prompt di ricerca. Più caratteri batterete e più
ridurrete i risultati della ricerca. Questa legge la cronologia (history) del comando della
sessione di shell (che viene scritta in .bash_history della vostra directory
personale quando voi chiudete quella sessione). Viene mostrata la più recente
73
Introduzione a Linux
apparizione della vostra stringa di ricerca. Se volete vedere i comandi precedenti che
contengono la medesima stringa, battete di nuovo Ctrl+R (v. pagine Info su Bash per
saperne di più).
Tutti gli Unix con un minimo di decenza hanno un dizionario in linea: così pure Linux. Il dizionario
è un elenco delle parole note in un file chiamato words, posizionato in /usr/share/dict. Per
controllare rapidamente la scrittura corretta di una parola, non serve un'applicazione grafica:
Chi è il proprietario della home directory dopo la mia? Hey, c'è il suo numero telefonico!
E, di nuovo, qual è l'indirizzo email di Arno?
find e locate vengono spesso usati in combinazione con grep per realizzare delle ricerche serie. Per
maggiori informazioni, v. Capitolo 5 sulla redirezione dell'I/O.
Per esempio, dire che volete vedere il file “*” al posto di tutti i file di una directory, dovete usare
less\*
Lo stesso vale per i nomi di file contenenti uno spazio:
cat This\ File
74
Introduzione a Linux
Naturalmente la maniera più semplice sarebbe quella di usare strumenti grafici al posto di quelli a
linea di comando. Nell'introduzione abbiamo già dato un rapido sguardo ad una applicazione da
ufficio, OpenOffice. Altri esempi sono GIMP (si avvia con gimp dalla linea di comando) GNU
Image Manipulating Program, xpdf per vedere i file PDF (Portable Document Format), GhostView
(gv) per vedere i file PostScript, Mozilla/Firefox, links (un browser in modalità testo), Konqueror,
Opera e molti altri per quanto riguarda i contenuti del web, XMMS, Cdplay e altri per i contenuti
dei file multimediali, AbiWord, Gnumeric, Koffice, ecc..., per tutti i generi di applicazioni d'ufficio
e così via. Esistono migliaia di applicazioni Linux: elencarle tutte richiederebbe giorni.
Invece noi ci concentreremo sulle applicazioni di shell o in modalità testo, che sono la base di tutte
le altre applicazioni. Questi comandi lavorano meglio in un ambiente testuale su file contenenti
testo. In caso di incertezza, controllate prima con il comando file.
Vediamo così quali strumenti testuali utilizzabili per curiosare all'interno dei file sono a nostra
disposizione.
Problemi di font
Gli strumenti di puro testo come quelli che ora tratteremo, spesso incontrano problemi
con i file di ”puro” testo a causa della codifica dei font utilizzata con quei file. Caratteri
speciali, tipo i caratteri alfabetici accentati, i caratteri cinesi e gli altri caratteri
provenienti da linguaggi che usano insiemi di caratteri differenti dalla codifica base
en_US e così via, sono poi visualizzati in modo errato o rimpiazzati da robaccia
illeggibile. Questi problemi saranno discussi nella Sezione 7.4.
● Prima ci fu cat. L'uscita dei dati fluiva in modo incontrollabile.
● Poi venne pg, che si può ancora trovare in vecchi UNIX. Questo comando produce il
testo in uscita una pagina alla volta.
● Il programma more fu una versione rivista di pg. Questo comando è ancora
disponibile in ogni sistema Linux.
● less è la versione GNU di more ed ha delle caratteristiche extra permettendo
l'evidenziazione delle stringhe di ricerca, lo scorrimento all'indietro, ecc... La sintassi
è molto semplice:
less file
Maggiori informazioni si trovano nelle pagine Info.
Conoscete già gli “impaginatori” (pager) dal momento che essi sono stati usati per vedere le pagine
man.
75
Introduzione a Linux
head funziona in modo simile. Il comando tail ha una utile funzione di mostrare in continuazione le
ultime n linee di un file che cambia costantemente. Tale opzione -f viene spesso usata dagli
amministratori di sistema per controllare i file di log (maggiori informazioni si trovano nei file di
documentazione del sistema).
● Hard link (collegamento fisso): si associano due o più nomi di file al medesimo
inode. Gli hard link condividono gli stessi blocchi di dati nel disco rigido, mentre
continuano a comportarsi come file indipendenti.
● Soft link o link simbolico (collegamento simbolico o, in breve, symlink): un piccolo
file che punta ad un altro file. Un collegamento simbolico contiene il percorso del
file di destinazione (target file) invece di una locazione fisica sul disco rigido.
Siccome con questo metodo non si fa uso di inode, i collegamenti possono espandersi
tra le partizioni.
I due tipi di collegamento si comportano in modo simile, ma non sono la stessa cosa, come viene
illustrato nello schema seguente:
Figura 32. Il meccanismo dei collegamenti hard e soft
76
Introduzione a Linux
Notate che la rimozione del target file di un link simbolico rende inutile quest'ultimo.
Ogni comune file è inizialmente un hardlink. I collegamenti fissi non possono estendersi a più
directory del momento che essi fanno riferimento agli inode e i numeri di inode sono unici per una
data partizione.
Si potrebbe arguire che ci sia un terzo tipo di collegamento, il link in spazio utente (userspace link),
che sarebbe simile alle scorciatoie di MS Windows. Questi sono dei file contenenti metadati che
possono essere interpretati solo dal gestore grafico di file. Per il kernel e la shell questi sono solo
normali file. Essi potrebbero terminare con i sufissi .desktop o .lnk: possiamo trovare un esempio in
~/.gnome-desktop:
Questo esempio è tratto da un desktop KDE:
La creazione di questo tipo di collegamento è abbastanza facile ricorrendo alle funzioni del vostro
ambiente grafico. Se aveste bisogno di aiuto, la vostra documentazione di sistema potrebbe essere la
vostra prima risorsa.
77
Introduzione a Linux
Nella prossima sezione studieremo la creazione di link simbolici in stile UNIX ricorrendo alla linea
di comando.
Il comando per creare link è ln. Per creare symlink dovete usare l'opzione -s:
Nell'esempio seguente, l'utente freddy crea un link in una sottodirectory di quella personale ad una
directory di un'altra parte del sistema:
freddy:~/music> ls -l
lrwxrwxrwx 1 freddy freddy 17 Jan 22 11:07 Queen-> /opt/mp3/Queen
I link simbolici sono sempre file molto corti, mentre gli hard link hanno le stesse dimensioni del file
originale.
L'uso dei link simbolici è ampiamente diffuso. Essi sono spesso usati per risparmiare spazio sul
disco, per fare una copia di un file al fine di soddisfare le richieste di installazione di un nuovo
programma che si attende di trovare in un altro luogo: sono utilizzati per correggere script che
improvvisamente devono girare in un nuovo ambiente e possono generalmente risparmiare un sacco
di lavoro. Un amministratore di sistema può decidere di spostare le directory personali degli utenti
in un altro posto, disk2 per esempio, ma se vuole che tutto funzioni come prima, come il file
/etc/passwd, con uno sforzo minimo può creare un symlink da /home alla nuova posizione
/disk2/home.
Abbiamo già usato l'opzione long per elencare i file con il comando ls -l, sebbene per altri motivi.
Tale comando mostra anche i permessi dei file attribuiti alle tre categorie di utenti: essi vengono
indicati da nove caratteri che seguono il primo carattere, costituito dall'indicatore del tipo di file
posto all'inizio della linea delle proprietà del file. Come vedete nell'esempio seguente, le prime tre
78
Introduzione a Linux
lettere di questa serie di nove mostra i diritti di accesso dell'attuale utente proprietario del file. Le
successive tre lettere sono relative al gruppo a cui appartiene il file, mentre le ultime tre riguardano
gli altri utenti. I permessi sono sempre nello stesso ordine: lettura, scrittura ed esecuzione per
l'utente (user), il gruppo (group) e gli altri (other). Alcuni esempi:
marise:~> ls -l To_Do
-rw-rw-r-- 1 marise users 5 Jan 15 12:39 To_Do
marise:~> ls -l /bin/ls
-rwxr-xr-x 1 root root 45948 Aug 9 15:01 /bin/ls*
Il secondo esempio è un file eseguibile. La differenza: ognuno può eseguire questo programma ma
dovete essere root per poterlo modificare.
Le pagine Info spiegano dettagliatamente come il comando ls gestisce la rappresentazione dei diritti
di accesso (v. la sezione What information is listed).
Per un facile utilizzo con i comandi, sia i diritti o modi di accesso sia i gruppi hanno un codice:
osservate le tabelle seguenti.
Tabella 37. I codici delle modalità di accesso
Codice Significato
0 o Il diritto di accesso che si pensa essere in questa posizione non viene concesso
4 o r L'accesso in lettura è concesso alla categoria di utenti definita in questa posizione
2 o w Il permesso di scrittura è concesso alla categoria di utenti definita in questa posizione
1 o x Il permesso di esecuzione è concesso alla categoria di utenti definita in questa posizione
Tabella 38. Codici dei gruppi d'utenti
Codici Significato
u permessi dell'utente (user)
g permessi del gruppo (group)
o permessi per gli altri (others)
Questo chiaro schema viene applicato molto rigidamente, cosa che rende possibile un elevato livello
di sicurezza perfino senza la sicurezza di rete. Fra le altre funzioni, lo schema di sicurezza si occupa
dell'accesso ai programmi da parte degli utenti, può fornire file in base alle necessità di conoscenza
e protegge i dati sensibili come le directory personali e i file di configurazione del sistema.
Dovreste sapere che cosa è il vostro nome utente. In caso contrario, può essere mostrato usando il
comando id, che mostra anche il gruppo base a cui appartenete ed eventualmente gli altri gruppi di
79
Introduzione a Linux
cui siete membri:
tilly:~> id
uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org)
Il vostro nome utente è conservato anche nella variabile d'ambiente USER:
L'esempio seguente usa le opzioni alfanumeriche per risolvere un problema che di solito si presenta
con i nuovi utenti:
asim:~> ./hello
bash: ./hello: bad interpreter: Permission denied
asim:~> cat hello
#!/bin/bash
echo “Hello, World”
asim:~> ls -l hello
-rw-rw-r-- 1 asim asim 32 Jan 15 16:29 hello
asim:~> ./hello
Hello, World
asim:~> ls -l hello
-rwxrw-r-- 1 asim asim 32 Jan 15 16:29 hello*
Gli operatori + e sono usati per concedere o negare un certo diritto ad un certo gruppo: sono
permesse combinazioni separate. Le pagine Info e man contengono degli utili esempi. Eccone qui
un altro che trasforma il file del precedente esempio in un file personale dell'utente asim:
Il tipo di problema manifestantesi in un messaggio di errore che dice che il permesso è negato da
qualche parte, normalmente dipende in molti casi da un problema con i privilegi d'accesso. Anche
commenti come “Ieri funzionava” o “Funziona quando lo avvio come root” derivano il più delle
80
Introduzione a Linux
volte da errati permessi dei file.
Usando chmod con argomenti numerici, i valori di ogni diritto d'accesso consentito devono essere
conteggiati insieme per gruppo. Così otteniamo un numero di tre cifre che è il valore simbolico
delle impostazioni create con chmod. La tabella seguente elenca le combinazioni più comuni:
Tabella 39. Protezione dei file con chmod
Comando Significato
chmod 400 file Per proteggere un file contro sovrascritture accidentali.
Per proteggervi da cancellazioni, ridenominazioni o spostamenti
chmod 500 directory
accidentali di file da questa directory.
Un file privato che può essere modificato solo dall'utente che ha
chmod 600 file
dato questo comando.
Un file leggibile pubblicamente che può essere modificato solo
chmod 644 file
dall'utente che l'ha messo a disposizione.
Gli utenti appartenenti al vostro gruppo possono modificare questo
chmod 660 file
file mentre gli altri non possono assolutamente accedervi.
Protegge un file contro ogni accesso da parte degli altri utenti,
chmod 700 file
mentre l'utente proprietario ha ancora il pieno accesso.
Per file che dovrebbero essere leggibili ed eseguibili dagli altri, ma
chmod 755 directory
modificabili solo dall'utente proprietario.
chmod 775 file Modalità standard per la condivisione di un file in un gruppo.
chmod 777 file Chiunque può fare di tutto su questo file.
Se inserite un numero con meno di tre cifre come argomento di chmod, i caratteri omessi vengono
rimpiazzati con degli zero a cominciare da sinistra. Effettivamente c'è una quarta cifra nei sistemi
Linux, che precede le prime tre ed imposta speciali modalità di accesso. Qualsiasi informazione su
ciò (e molto altro ancora) si trova nelle pagine Info.
asim:~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)
asim:~> grep asim /etc/passwd
asim:x:501:501:Asim El Baraka:/home/asim:/bin/bash
81
Introduzione a Linux
Il quarto campo nella linea da /etc/passwd contiene il valore “501” che rappresenta il gruppo
asim nell'esempio precedente. Da /etc/group possiamo ottenere il nome corrispondente a questo
ID del gruppo. Quando si connette al sistema, questo è il gruppo a cui appartiene asim.
Schema del gruppo privato dell'utente
Per consentire una maggiore flessibilità, molti sistemi Linux seguono il cosiddetto user
private group scheme (o schema del gruppo privato dell'utente) che assegna ciascun
utente in primo luogo al proprio gruppo. Tale gruppo è un gruppo che contiene solo
questo particolare utente, da qui il nome “gruppo privato”. Normalmente questo gruppo
ha lo stesso nome del nome di login dell'utente, cosa che può creare una leggera
confusione.
asim:/var/www/html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
asim:/var/www/html> ls -l test
-rw-rw-r-- 1 asim web 0 Jun 10 15:38 test
Per maggiori informazioni date un'occhiata alle pagine man riguardanti newgrp.
bert:~> umask
0002
Invece di aggiungere i valori simbolici a ciascuno, come con chmod, per calcolare i permessi su un
82
Introduzione a Linux
nuovo file questi devono essere sottratti dai diritti d'accesso totali possibili. Nell'esempio
precedente, comunque, vediamo 4 valori pur essendoci solo 3 categorie di permessi: user, group e
other. Il primo zero fa parte delle impostazioni speciali degli attributi dei file che tratteremo nelle
Sezioni 3.4.2.4 e 4.1.6. Potrebbe succedere che nel vostro sistema non venga neppure mostrato il
primo zero quando battete il comando umask e che vediate solo i tre numeri che rappresentano la
maschera di base per la creazione dei file.
Ogni sistema derivato da UNIX ha una funzione di sistema per la creazione di nuovi file, funzione
che viene chiamata ogni qualvolta un utente utilizza un programma che crea nuovi file, per esempio,
quando si scarica un file da internet, quando si salva un nuovo documento di testo e così via. Questa
funzione crea sia file che directory nuovi. Il permesso totale di leggere, scrivere ed eseguire è
concesso a tutti quando si crea una nuova directory. Quando invece si crea un nuovo file, tale
funzione concederà i permessi di lettura e scrittura a tutti ma non darà i permessi di esecuzione a
nessuno per tutte le categorie di utenti. Perciò, prima dell'applicazione della maschera, una directory
ha i permessi 777 o rwxrwxrwx e un semplice testo 666 o rwrwrw.
Il valore di umask viene sottratto da questi permessi base dopo che la funzione ha creato il nuovo
file o directory. Di conseguenza, se il valore della maschera è (0)002, una directory avrà di base i
permessi 775 e un file 664. Ciò viene mostrato nell'esempio seguente.
bert:~> ls -l newfile
-rw-rw-r-- 1 bert bert 0 Feb 28 13:52 newfile
Se vi registrate in un altro gruppo utilizzando il comando newgrp, la maschera rimane invariata.
Così, se quest'ultima è impostata a 002, i file e le directory che creerete stando nel nuovo gruppo
saranno pure accessibili a tutti gli altri membri di esso: non avrete quindi bisogno di usare chmod.
L'utente root di base ha dei permessi di creazione dei file più ristretti:
Questi valori di base sono impostati per tutto il sistema nei file di configurazione delle risorse di
shell, per esempio /etc/bashrc oppure /etc/profile. Potete modificarli nel vostro file di
configurazione della shell (v. il capitolo 7 dedicato alla personalizzazione del vostro ambiente di
shell).
83
Introduzione a Linux
verificare ricorrendo all'opzione --help.
Il comando chown può essere impiegato per modificare le proprietà dell'utente e del gruppo,
mentre chgrp cambia solo la proprietà del gruppo. Naturalmente il sistema verificherà se l'utente
che fornisce uno di questi comandi ha sufficienti permessi sui file che intende modificare.
Per modificare l'appartenenza di un file ad un utente, usate questa sintassi:
chown newuser file
Se usate due punti (:) dopo il nome di utente (v. pagine Info), anche l'appartenenza al gruppo verrà
cambiata al gruppo primario dell'utente che fornisce il comando. In un sistema Linux ciascun
utente ha il proprio gruppo cosicché questo sistema può essere usato per rendere privati i file.
jacky:~> id
uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(pproject)
jacky:~> ls -l my_report
-rw-rw-r-- 1 jacky project 29387 Jan 15 09:34 my_report
jacky:~> chown jacky: my_report
jacky:~> ls -l my_report
-rw-rw---- 1 jacky jacky 29387 Jan 15 09:34 my_report
Se jacky volesse condividere questo file, senza dare a nessuno il permesso di scriverlo, potrebbe
usare il comando chgrp:
jacky:~> ls -l report-20020115.xls
-rw-rw---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls
jacky:~> chgrp project report-20020115.xls
jacky:~> ls -l report-20020115.xls
-rw-rw---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls
In questo modo gli utenti del gruppo project potranno lavorare su questo file. Gli utenti estranei al
gruppo non avranno nulla a che fare con questo.
Sia chown che chgrp possono essere usati per cambiare le proprietà ricorsivamente usando
l'opzione R. In tal caso tutti file sottostanti e le sottodirectory di una data directory apparterranno a
quel dato utente e/o gruppo.
Restrizioni
In molti sistemi l'utilizzo dei comandi chown e chgrp è vietato agli utenti non
privilegiati. Se non siete gli amministratori di sistemi, non avrete la possibilità di
modificare utente e gruppo per ragioni di sicurezza. Se l'uso di questi comandi non
fosse limitato, utenti maliziosi potrebbero assegnare la proprietà, modificandola, dei file
84
Introduzione a Linux
ad altri utenti e/o gruppi e modificare il comportamento di quegli ambienti utenti e pure
causare danni ad altro file degli utenti.
● modo sticky bit: dopo l'esecuzione di un compito, il comando viene mantenuto nella
memoria di sistema. In origine questo era una funzione usata spesso per risparmiare
memoria: grandi job venivano caricati in memoria una sola volta. Ma oggigiorno la
memoria è economica e ci sono migliori tecniche per gestirla cosicché il modo non
viene più utilizzato per le sue capacità di ottimizzazione su singoli file. Se applicato
comunque ad un'intera directory, lo sticky bit assume un diverso significato. In tal
caso un utente può modificare file esistenti in questa directory quando è proprietario
del file oppure quando il file ha i permessi corretti. Questa funzione viene utilizzata
con directory come /var/tmp, che deve essere accessibile da chiunque, ma dove
non è appropriato per gli utenti modificare o cancellare i dati altrui. Lo sticky bit è
indicato con una t alla fine dell'elenco dei permessi sul file:
mark:~> ls -ld /var/tmp
drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/
Lo sticky bit si imposta utilizzando il comando chmod o+t directory. L'origine
storica della “t” si ritrova nella funzione UNIX save Text access.
● SUID (set user ID) e SGID (set group ID): rappresentato dalla lettera s nel campo dei
permessi dell'utente o del gruppo. Quando un file eseguibile ha tale modalità
impostata, esso girerà con i permessi dell'utente e del gruppo invece che con quelli
dell'utente che batte il comando, dando così acceso alle risorse di sistema. Più avanti
discuteremo i ciò nel Capitolo 4.
● SGID (set group ID) su una directory: in questo caso speciale ogni file creato nella
directory avrà come gruppo proprietario lo stesso della directory (mentre il normale
comportamento sarebbe che i nuovi file fossero di proprietà dell'utente che li crea). In
questa maniera gli utenti non devono preoccuparsi delle proprietà di file quando
condividono directory
mimi:~> ls -ld /opt/docs
drwxrws--- 4 root users 4096 Jul 25 2001 docs/
mimi:~> ls -l /opt/docs
-rw-rw---- 1 mimi users 345672 Aug 30 2001-Council.doc
Questo è il modo normale di condividere file in UNIX.
I file esistenti non vengono modificati!
I file spostati in una directory SGID, ma creati altrove, mantengono i loro utenti e
gruppi proprietari. Ciò può confondere.
85
Introduzione a Linux
3.5. Sommario
Con UNIX, come con Linux, tutte le cose sono rappresentate in un modo o in un altro come file con
le loro corrette proprietà. L'uso di percorsi (predefiniti) consente agli utenti ed all'amministratore di
sistema di trovare, leggere e modificare i file.
Abbiamo compiuto i primi passi per diventare degli esperti: abbiamo trattato della struttura reale e
fittizia del file system ed ora sappiamo del modello Linux di sicurezza dei file come pure di diverse
altre precauzioni per la sicurezza che vanno adottate normalmente con ogni sistema.
La shell è il più importante strumento per interagire con il sistema. In questo capitolo abbiamo
appreso diversi comandi di shell, riportati nella tabella seguente.
Tabella 310. Nuovi comandi
Comando Significato
bash Programma GNU di shell.
cat file(s) Invia il contenuto dei file allo standard output
Entra nella directory. cd è un comando integrato in
cd directory
bash.
chgrp newgroup file(s) Cambia il gruppo proprietario di file a newgroup
chown mode file Modifica i permessi di accesso nel file .
chmod newowner[:[newgroup]] file(s) Modifica le proprietà di utente e gruppo del file
cp sourcefile targetfile copia sourcefile con il nome targetfile
Rapporto sullo spazio usato del disco nella partizione
df file
contenente file.
echo stringa Mostra una linea di testo
Parte di bash che mostra le variabili ed i loro valori al
export
sistema.
file nomefile Determina il tipo di file di nomefile.
find percorso espressione Trova file nella gerarchia del file system
Mostra le linee in file che contengono il modello
grep PATTERN file
(pattern) di ricerca
head file Invia la prima parte di file allo standard output
id Stampa il nome e i gruppi dell'utente reale ed attuale
info comando Mostra la documentazione relativa a comando
less file Mostra file con un potente visualizzatore
Crea un collegamento di nome linkname a
ln targetfile linkname
targetfile.
Mostra tutti i file accessibili che corrispondono al
locate stringadiricerca
modello di ricerca.
86
Introduzione a Linux
Comando Significato
ls file Stampa il contenuto della directory.
Formatta e mostra le pagine del manuale (di sistema) in
man comando
linea relative a comando.
mkdir nuovadir Crea una nuova directory vuota.
mv vecchiofile nuovofile Rinomina o sposta vecchiofile.
pwd Mostra la directory di lavoro attuale o corrente.
quota Mostra l'utilizzo del disco e i limiti.
rm file Rimuove file e directory.
rmdir file Rimuove directory.
tail file Stampa l'ultima parte di file.
umask[valore] Mostra o cambia la modalità di creazione dei nuovi file.
wc file Conta linee, parole e caratteri di file.
which comando Mostra l'intero percorso del comando.
Insistiamo pure sul fatto che voi dovreste LEGGERE LE PAGINE MAN. Tale documentazione è il
vostro kit di pronto soccorso e contiene le risposte a molte domande. La lista precedente contiene i
comandi fondamentali che userete quotidianamente, ma essi possono fare molto di più rispetto a
quanto abbiamo detto qui. Leggere la documentazione vi darà il controllo di cui avete bisogno.
Ultima ma non meno importante, ecco un'agile panoramica dei permessi sui file:
Tabella 311. Permessi sui file
3.6. Esercizi
Registratevi semplicemente con il vostro ID di utente comune.
3.6.1. Partizioni
● In quale partizione si trova la vostra directory personale?
● Quante partizioni esistono nel vostro sistema?
● Qual è la dimensione totale della vostra installazione di Linux?
87
Introduzione a Linux
3.6.2. Percorsi
● Mostrate il vostro percorso (path) di ricerca.
● Esportate un percorso senza senso inserendo, per esempio, export PATH=blah e
provate ad elencare il contenuto della directory.
● Qual è il percorso della vostra directory personale? Come potrebbe un altro utente
raggiungere la vostro directory personale partendo dalla sua e usando un percorso
relativo?
● Andate nella directory tmp contenuta in /var.
● Ora andate in share contenuta in /usr usando un solo comando. Spostatevi in
doc. Qual è la vostra attuale directory di lavoro?
88
Introduzione a Linux
89
Introduzione a Linux
Capitolo 4. I processi
Dopo i file, i processi sono le cose più importanti in un sistema UNIX/Linux. In questo
capitolo daremo uno sguardo da vicino a quei processi. Impareremo di più su:
Elaborazione multiutente e multitasking
Tipi di processi
Controllo dei processi con diversi segnali
Attributi dei processi
Il ciclo vitale di un processo
Avvio e chiusura del sistema
SUID e SGID
Velocità e tempi di risposta del sistema
Programmazione dei processi
Il sistema Vixie cron
Come ottenere il massimo dal vostro sistema.
D'altra parte Linux si basa su UNIX, dove è pratica comune avere molteplici utenti che fanno girare
molti comandi contemporaneamente e nello stesso sistema. E' intuitivo quali misure debbano essere
assunte per far sì che la CPU gestisca tutti questi processi e quale funzionalità debba essere fornita
in modo che gli utenti possano passare da un processo all'altro. In alcuni casi i processi devono
continuare a funzionare anche quando si disconnette l'utente che li ha avviati. Inoltre gli utenti
hanno bisogno di un mezzo per riattivare i processi interrotti.
Spiegheremo la struttura dei processi di Linux nelle prossime sezioni.
90
Introduzione a Linux
Comunque, mentre un processo gira sullo sfondo, l'utente può fare altre cose nel terminale in cui ha
avviato il programma che sta funzionando.
Far girare un processo sullo sfondo è utile solo con programmi che non necessitano input (tramite
shell) da parte dell'utente. Mettere un job in background si fa abitualmente quando ci si attende che
la sua esecuzione richieda parecchio tempo. Per liberare il terminale dopo l'invio del comando viene
aggiunta una E commerciale (&). Nell'esempio, usando la modalità grafica, noi apriamo una
finestra di terminale in più a partire da quella esistente:
Le caratteristiche complete relative al controllo dei processi sono spiegate in modo particolareggiato
nelle pagine Info di Bash, cosicché solo le applicazioni di controllo dei job sono elencate qui di
seguito:
tabella 41. Controllo dei processi
(parte di un) comando Significato
comando_normale Avvia questo comando in primo piano
Avvia questo comando sullo sfondo (libera il
comando &
terminale)
mostra i comandi che stanno girando sullo
jobs
sfondo
Sospende (ferma ma non chiude) un processo
Ctrl+Z
attivo in primo piano (sospensione).
91
Introduzione a Linux
(parte di un) comando Significato
Interrompe (termina e chiude) un processo che
Ctrl+C
sta girando in primo piano.
Ad ogni processo che gira dietro le quinte
(background) viene assegnato un numero.
%n
Utilizzando la funzione % ci si può riferire ad un
job grazie al suo numero, per esempio fg %2.
bg Riattiva un programma sospeso dietro le quinte.
fg Riporta in primo piano il job.
Termina un programma (v. anche i Comandi
kill
interni alla shell nelle pagine Info di bash)
Ulteriori esempi pratici si possono trovare tra gli esercizi.
Molti sistemi UNIX sono probabilmente capaci di avviare screen, che risulta utile quando volete
un'altra shell per eseguire comandi. Dopo aver avviato screen, viene creata una nuova sessione con
relativa shell e/o comandi come richiesti, che poi potete togliere di mezzo. Nella nuova sessione
potete fare qualsiasi cosa. Tutti i programmi e le operazioni gireranno indipendentemente dalla shell
di provenienza. Potete poi togliere questa sessione mentre i programmi avviati su di essa
continueranno a girare, anche quando vi disconnetterete dalla shell originaria e ripristinerete a
piacimento in qualsiasi momento il vostro screen.
Tale programma deriva dall'epoca in cui le console virtuali non erano state ancora inventate e tutto
andava fatto usando un unico terminale di testo. Per i fanatici è ancora presente in Linux sebbene le
console virtuali esistano da almeno dieci anni.
● ad una certa data e ora: si fa usando il comando at, che tratteremo nella seconda parte
di questo capitolo.
● nel momento in cui il carico totale del sistema è abbastanza ridotto da accettare lavori
extra: si fa usando il comando batch. Di base i task vengono accodati in attesa di
essere eseguiti quando il carico del sistema è inferiore a 0,8. In grandi ambienti
l'amministratore di sistema può preferire l'elaborazione batch quando grandi quantità
di dati devono essere elaborate o quando i task che richiedono molte risorse di
sistema devono essere eseguiti in un sistema già sovraccarico. L'elaborazione batch è
utilizzata anche per ottimizzare le prestazioni del sistema.
4.1.2.3.Daemon
92
Introduzione a Linux
Senza opzioni, ps dà solo informazioni circa la shell corrente e gli eventuali processi:
93
Introduzione a Linux
theo:~> ps
PID TTY TIME CMD
4245 pts/7 00:00:00 bash
5314 pts/7 00:00:00 ps
Dal momento che ciò non vi offre informazioni sufficienti in genere almeno un centinaio di
processi stanno girando nel vostro sistema di solito selezioneremo processi specifici dalla lista di
tutti i processi, usando il comando grep in una pipe (v. Sezione 5.1.2.1.) come in questa linea con
cui sceglieremo e mostreremo tutti i processi posseduti da un particolare utente:
ps -ef | grep nomeutente
Questo esempio mostra tutti i processi con nome bash, la più comune shell di login nei sistemi
Linux:
Le shell Bash sono un caso speciale: questo elenco dei processi mostra quali sono le shell di login
(in cui dovete dare nome utente e password, come quando vi connettete in modalità testo o stabilite
una connessione remota, al contrario delle shell di nonlogin, avviate per esempio cliccando su un
icona della finestra di terminale). Le shell con login sono precedute da un segno meno ().
Si possono trovare maggiori informazioni nel solito modo: ps --help o man ps. GNU ps
supporta diversi stili di formato delle opzioni: gli esempi qui sopra non contengono errori.
94
Introduzione a Linux
La prima linea di top contiene le stesse informazioni mostrate dal comando uptime:
jeff:~> uptime
3:30pm, up 12 days, 23:29, 6 users, load average: 0.01, 0.02, 0.00
Le relazioni tra i processi possono essere visualizzate usando il comando pstree:
sophie:~> pstree
init-+-amd
|-apmd
|-2*[artsd]
|-atd
|-crond
|-deskguide_apple
|-eth0
|-gdm---gdm-+-X
| `-gnome-session-+-Gnome
| |-ssh-agent
| `-true
|-geyes_applet
|-gkb_applet
|-gnome-name-serv
|-gnome-smproxy
|-gnome-terminal-+-bash---vim
| |-bash
| |-bash---pstree
| |-bash---ssh
| |-bash---mozilla-bin---mozilla-bin---3*[mozilla-bin]
| `-gnome-pty-helper
|-gpm
|-gweather
|-kapm-idled
|-3*[kdeinit]
|-keventd
|-khubd
|-5*[kjournald]
|-klogd
|-lockd---rpciod
|-lpd
|-mdrecoveryd
95
Introduzione a Linux
|-6*[mingetty]
|-8*[nfsd]
|-nscd---nscd---5*[nscd]
|-ntpd
|-3*[oafd]
|-panel
|-portmap
|-rhnsd
|-rpc.mountd
|-rpc.rquotad
|-rpc.statd
|-sawfish
|-screenshooter_a
|-sendmail
|-sshd---sshd---bash---su---bash
|-syslogd
|-tasklist_applet
|-vmnet-bridge
|-xfs
`-xinetd-ipv6
Le opzioni -u e -a danno delle informazioni ulteriori. Per le altre opzioni e per sapere cosa fanno,
ricorrete alle pagine Info.
Nella prossima sezione vedremo come un processo può crearne un altro.
Dopo il processo di biforcazione, lo spazio di indirizzo del processo figlio viene sovrascritto con i
dati del nuovo processo: ciò si fa con una chiamata exec al sistema.
Poi il meccanismo forkandexec scambia un vecchio comando con uno nuovo mentre l'ambiente in
cui il nuovo programma viene eseguito rimane lo stesso, comprese la configurazione delle
periferiche di ingresso e uscita, le variabili d'ambiente e le priorità. Tale meccanismo è impiegato
per creare tutti i processi di UNIX, così come è applicato pure nel sistema operativo Linux. Anche il
primo processo, init, con ID di processo pari a 1, viene sdoppiato (fork) durante la procedura di
avvio nella cosiddetta procedura di bootstrap.
Questo schema illustra il meccanismo di forkandexec. L'ID di processo cambia dopo la procedura
di sdoppiamento:
Figura 41. Meccanismo di forkandexec
96
Introduzione a Linux
Di tanto in tanto le cose possono andare male, anche nelle migliori famiglie. In casi eccezionali un
processo potrebbe finire mentre quello genitore non si aspetta il suo completamento. Così un
processo “insepolto” è detto processo zombie.
Il codice di ritorno può essere in seguito interpretato dal processo genitore o da script. I valori dei
codici di ritorno sono specifici del programma. Questa informazione può essere normalmente
97
Introduzione a Linux
trovata nelle pagine man dello specifico programma: per esempio il comando grep restituisce -1
se non ci sono state coincidenze, e con ciò si può scrivere un messaggio sulle linee di “No file
found”. Un altro esempio è true, comando interno a Bash, che non fa altro se non restituire un exit
status uguale a 0 per indicare il successo.
4.1.5.3. Segnali
I processi terminano perché ricevono un segnale. Esistono numerosi segnali che potete inviare ad un
processo. Utilizzate il comando kill per mandare un segnale ad un processo. Il comando kill -l
mostra un elenco di segnali di cui molti sono per uso interno al sistema operativo oppure per
programmatori che stanno scrivendo del codice. Come utenti vi serviranno i seguenti segnali:
Tabella 42. Segnali comuni
Potete leggere di più sulle azioni di base che vengono intraprese con l'invio di un segnale ad un
processo in man 7 signal.
rita:~> ls -l /dev/*mem
crw-r----- 1 root kmem 1, 2 Aug 30 22:30 /dev/kmem
crw-r----- 1 root kmem 1, 1 Aug 30 22:30 /dev/mem
Nelle versioni più vecchie di ps era impossibile avviare il programma come utente comune, a meno
che non gli fossero applicate le modalità speciali.
98
Introduzione a Linux
Mentre in genere tentiamo di evitare l'applicazione di qualsiasi modalità speciale, qualche volta è
necessario utilizzare un SUID. Un esempio è costituito dal meccanismo per cambiare le password.
Naturalmente gli utenti vorranno fare ciò da sé al posto di avere le loro password impostate
dall'amministratore di sistema. Come sappiamo, i nomi utente e le password sono elencate nel file
/etc/passwd, che ha questi permessi di accesso e proprietari:
bea:~> ls -l /etc/passwd
-rw-r--r-- 1 root root 1267 Jan 16 14:43 /etc/passwd
Tuttavia gli utenti devono essere capaci di cambiare le propri informazioni contenute in questo file.
Ciò si ottiene attribuendo al programma passwd dei permessi speciali:
Quando viene invocato, il comando passwd si avvierà utilizzando i permessi di root, abilitando così
un comune utente a modificare il file di password che è posseduto dall'amministratore di sistema.
La modalità SGID su di un file non serve così frequentemente come quella SUID, perché spesso
SGID implica la creazione di gruppi extra. In alcuni casi, comunque, dobbiamo passare attraverso
tale difficoltà per realizzare una soluzione elegante (non preoccupatevi eccessivamente di ciò i
gruppi necessari vengono di solito creati durante l'installazione). Questo è il caso dei programmi
write e wall, che vengono utilizzati per mandare messaggi agli altri terminali d'utenti (tty). Il
comando write scrive un messaggio ad un singolo utente, mentre wall scrive a tutti gli utenti
connessi.
99
Introduzione a Linux
L'utente jenny riceve questo sul suo schermo:
Dopo aver ricevuto un messaggio, il terminale può essere cancellato usando la combinazione di tasti
Ctrl+L. Per non ricevere alcun messaggio (eccetto che dall'amministratore di sistema) usate il
comando mesg. Per vedere quali utenti connessi accettano messaggi da altri usate who -w. Tutte le
caratteristiche sono spiegate nelle pagine Info di ciascun comando.
I nomi dei gruppi possono variare
Lo schema dei gruppi è specifico di ogni distribuzione. Altre distribuzioni possono
utilizzare altri nomi o soluzioni.
4.2.1. Introduzione
Uno dei più potenti aspetti di Linux riguarda il suo metodo aperto di avviare e chiudere il sistema
operativo, dove carica specifici programmi utilizzando le loro particolari configurazioni, vi
permette di cambiare tali configurazioni per controllare il processo d'avvio e chiude in un modo
pulito ed organizzato.
Oltre alla questione del controllo del processo d'avvio o di chiusura, la natura aperta di Linux rende
più semplice determinare la fonte esatta di molti problemi associati agli stessi. Una infarinatura di
questi processi è abbastanza utile per chiunque utilizzi un sistema Linux.
Molte macchine Linux adoperano lilo, il LInux LOader, per avviare il sistema operativo. Noi
tratteremo comunque solo di GRUB che è più facile da usare e maggiormente flessibile. Se avete
bisogno di informazioni su lilo, potete riferirvi alle pagine man e agli HOWTO. Entrambi i sistemi
supportano installazioni in dual boot (faremo riferimento agli HOWTO su questo argomento per
esempi pratici e informazioni di fondo).
100
Introduzione a Linux
4.2.2.
Il processo di avvio
Quando si avvia un computer x86, il processore ricerca il BIOS (Basic Input/Output System) alla
fine della memoria di sistema e lo esegue. Normalmente quest'ultimo controlla il lettore dei floppy
(o il CDROM in molti dei sistemi più recenti) alla ricerca di un supporto avviabile, se presente, e
successivamente cerca nel disco rigido. L'ordine delle periferiche usate per il cosiddetto boot di
solito è controllato da una specifica impostazione del BIOS di sistema. Una volta installato Linux
nel disco rigido di un computer, il BIOS cerca un Master Boot Record (MBR) posizionato nel
primo settore del primo disco fisso, carica il suo contenuto in memoria e poi gli passa il controllo.
Questo MBR contiene istruzioni su come caricare il bootloader GRUB (o LILO), che usa un
sistema operativo preselezionato. Quindi MBR carica il bootloader, il quale assume a sua volta il
controllo del processo (se, naturalmente, il bootloader è installato in MBR). Nella configurazione
base di Red Hat Linux GRUB usa le impostazioni contenute in MBR per mostrare in un menu le
opzioni di avvio. Una volta che GRUB ha ricevuto le corrette istruzioni per il sistema operativo da
far partire (sia dalla sua linea di comando che dal file di configurazione), esso trova il file di boot
necessario e lascia il controllo della macchina a quel sistema operativo.
GRUB supporta entrambi i metodi di boot, consentendovi di utilizzarlo con quasi tutti i sistemi
operativi, con molti file system e qualsiasi disco fisso riconosciuto dal vostro BIOS.
GRUB possiede numerose altre caratteristiche tra cui (le più importanti):
● GRUB fornisce un vero ambiente preSistema Operativo, basato su comandi, per
macchine x86 che consente la massima flessibilità nel caricare sistemi operativi con
certe opzioni o nel raccogliere informazioni sul sistema.
● GRUB supporta la modalità di indirizzamento logico dei blocchi (LBA o Logical
block Addressing), necessaria per accedere a molti dischi fissi IDE e a tutti quelli
SCSI. Prima di LBA i dischi fissi potevano andare incontro al limite del cilindro 1024
oltre al quale il BIOS poteva non trovare un file.
101
Introduzione a Linux
● Il file di configurazione di GRUB viene letto dal disco ogni volta che il sistema si
avvia, evitandovi di dover scrivere nel MBR tutte le volte che cambiate le opzioni di
boot.
4.2.4. Init
Il kernel, dopo essere stato caricato, trova init in sbin e lo esegue.
Quando parte init, esso diviene il genitore o il nonno di tutti i processi che si avviano
automaticamente nel vostro sistema Linux. La prima cosa che init fa è leggere il suo file di
inizializzazione, /etc/inittab. Quest'ultimo istruisce init a leggere uno script iniziale di
configurazione dell'ambiente che imposta il path, avvia lo swapping, controlla i file system, e così
via. Fondamentalmente questa fase si cura di tutte le cose di cui ha bisogno il vostro sistema al
momento della inizializzazione: impostare l'orologio, inizializzare le porte seriali, ecc.
Poi init continua la lettura del file /etc/inittab che descrive come il sistema dovrebbe essere
impostato in ciascun run level (livello di esecuzione o avvio) e seleziona quello di partenza. Un run
level è una configurazione di processi. Tutti i sistemi similUNIX possono essere avviati con diverse
configurazioni di processi, come la modalità utente singolo, che viene definita come run level 1 o S
(o s). In questa modalità solo l'amministratore di sistema può connettersi al sistema: viene utilizzata
per attività di manutenzione senza rischi di danni al sistema o ai dati degli utenti. Naturalmente con
questa configurazione non abbiamo bisogno di offrire servizi di utente, cosicché essi saranno tutti
disabilitati. Un altro run level è quello di reboot (o run level 6) che termina tutto i servizi attivi
seguendo le appropriate procedure e poi riavvia il sistema.
Comunemente il livello di esecuzione 3 è configurato per essere la modalità testo nelle macchine
Linux mentre il run level 5 inizializza l'autenticazione e l'ambiente grafici. Di più sui run level nella
prossima sezione (v. Sezione 4.2.5).
Dopo aver stabilito l'iniziale livello di esecuzione per il vostro sistema, init lancia tutti i processi di
background necessari per far girare il sistema cercando nella directory rc specifica di quel run
level. init avvia ogni script killer (i loro nomi di file iniziano con K) con un parametro di stop. Dopo
fa girare tutti gli script di partenza (i loro nomi di file iniziano con S, cioè Start) contenuti nella
directory del corrispondente livello di avvio in modo che tutti i servizi e le applicazioni vengano
lanciate correttamente. Di fatto, dopo che il sistema ha terminato l'avvio, potete eseguire
manualmente questi stessi script con un comando tipo /etc/init.d/httpd stop o service httpd
stop connessi come root (fermando in questo caso il web server).
Caso speciale
Notate che all'avvio del sistema, gli script in rc2.d e rc3.d vengono eseguiti
normalmente. In questo caso, nessun servizio viene fermato. Ci sono solo servizi che
vengono attivati.
102
Introduzione a Linux
Nessuno degli script che normalmente avviano e fermano i servizi sono collocati in
/etc/rc<x>.d. Piuttosto tutti i file in /etc/rc<x>.d sono collegamenti simbolici che
puntano agli script reali posizionati in /etc/init.d. Un collegamento simbolico non è altro se
non un file che punta ad un altro file ed in tal caso è utilizzato perché può essere creato ed eliminato
senza influire sugli script reali che uccidono o avviano i servizi. I collegamenti simbolici a vari
script sono numerati in un ordine particolare che determina la sequenza di avvio. Potete cambiare
l'ordine con cui si avviano e si uccidono i servizi modificando il nome del collegamento simbolico
che si riferisce allo script che realmente controlla lo script. Potete utilizzare lo stesso numero più
volte se volete che un particolare servizio sia fermato o avviato prima o dopo di un altro, come
nell'esempio seguente che elenca il contenuto di /etc/rc5.d, directory in cui crond e xfs sono
entrambi avviati da un nome di link che inizia per “S90”. In questo caso gli script vengono avviati
in ordine alfabetico.
[jean@blub /etc/rc5.d] ls
K15httpd@ K45named@ S08ipchains@ S25netfs@ S85gpm@
K16rarpd@ K46radvd@ S08iptables@ S26apmd@ S90crond@
K20nfs@ K61ldap@ S09isdn@ S28autofs@ S90xfs@
K20rstatd@ K65identd@ S10network@ S30nscd@ S95anacron@
K20rusersd@ K74ntpd@ S12syslog@ S55sshd@ S95atd@
K20rwalld@ K74ypserv@ S13portmap@ S56rawdevices@ S97rhnsd@
K20rwhod@ K74ypxfrd@ S14nfslock@ S56xinetd@ S99local@
K25squid@ K89bcm5820@ S17keytable@ S60lpd@
K34yppasswdd@ S05kudzu@ S20random@ S80sendmail@
Dopo che init è passato per i livelli di avvio fino a raggiungere quello predefinito, lo script
/etc/inittab biforca un processo getty per ciascuna console virtuale (richiesta di login in
modo testo). getty apre linee tty, imposta le loro modalità, presenta la richiesta di login, ottiene il
nome utente e poi dà inizio al processo di connessione di quell'utente, Tutto ciò consente agli utenti
di autenticarsi nel sistema e di usarlo. Per definizione, molti sistemi offrono sei console virtuali, ma,
come potete riscontrare nel file inittab, ciò è configurabile.
/etc/inittab può anche dire a init come gestire la pressione da parte dell'utente dei tasti
Ctrl+Alt+Del nella console. Siccome il sistema dovrebbe essere spento e riavviato con le dovute
maniere piuttosto che con l'immediato spegnimento dell'energia elettrica, a init viene detto di
eseguire il comando /sbin/shutdown -t3 -r now, per esempio, quando l'utente preme quei tasti.
In aggiunta, /etc/inittab stabilisce cosa init deve fare in caso di interruzione
dell'alimentazione se il vostro sistema è dotato di unità UPS.
In molti sistemi basati su RPM la videata grafica di login viene avviata nel run level 5, quando
/etc/inittab avvia lo script /etc/X11/prefdm. Tale script lancia il gestore dello schermo
(display manager) di X preferito, basato sui contenuti della directory
/etc/sysconfig/desktop. Normalmente si tratta di gdm se lanciate GNOME o di kdm se
invece avviate KDE, ma essi possono essere combinati e c'è pure xdm che fa parte dell'installazione
standard di X.
Esistono però anche altre possibilità. Per esempio sotto Debian c'è un initscript per ciascuno dei
gestori di schermo e il contenuto di /etc/X11/default-display-manager viene usato per
stabilire quale di questi avviare. E' possibile leggere qualcosa di più sull'interfaccia grafica nella
103
Introduzione a Linux
Sezione 7.3. Per finire, la documentazione di sistema spiegherà dettagliatamente gli aspetti di più
alto livello di init.
Le directory /etc/default e/o /etc/sysconfig contengono dati su una serie di funzioni e
servizi che vengono letti al momento del boot. La posizione della directory contenente le
impostazioni di base potrebbe essere in qualche modo diversa a seconda della vostra distribuzione
Linux.
Oltre l'ambiente grafico dell'utente, anche una grande quantità di altri servizi può essere avviata. Se
tutto procede per il meglio, dovreste vedere una richiesta di autenticazione o una schermata di login
al termine del processo di boot.
Altre procedure
Abbiamo spiegato come init SysV opera nei computer basati su x86. Le procedure di
avvio possono variare a seconda delle architetture e delle distribuzioni. Altri sistemi
usano init stile BSD in cui i file di avvio non sono suddivisi in molteplici directory
/etc/rc<LIVELLO>. E' anche possibile che il vostro sistema usi
/etc/rc.d/init.d al posto di /etc/init.d.
Esistono occasioni in cui potreste voler usare il sistema in una modalità di livello più basso. Esempi
sono la sistemazione dei problemi di corruzione dei dischi a livello 1, in modo che nessun altro
utente si trovi nel sistema, oppure il lasciare un server nel livello di esecuzione 3 senza una sessione
di X in funzione. In questi casi non ha senso far girare servizi che dipendono da una modalità di
sistema più alta in quanto, comunque, non lavorerebbero correttamente. Avendo già assegnato a
ciascun servizio di avviarsi quando si è raggiunto il suo specifico livello di esecuzione, voi garantite
un ordinato processo di avvio e potete rapidamente cambiare la modalità della macchina senza
preoccuparvi di quale servizio avviare o terminare manualmente.
I livelli di esecuzione disponibili si trovano generalmente descritti in /etc/inittab, che vi
mostriamo parzialmente qui di seguito:
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
# Default runlevel. The runlevels are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS
# (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
104
Introduzione a Linux
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
<--cut-->
Sentitevi liberi di configurare i c.d. run level 2 e 4 come vi va meglio. Molti utenti configurano
questi livelli di esecuzione in modo da ottimizzarli al massimo, mentre lasciano i livelli di
esecuzione 3 e 5 standard. Ciò consente loro di spostarsi rapidamente dentro e fuori dalla
configurazione personale senza interferire con il normale insieme di funzioni dei livelli standard.
Se il vostro computer cade in uno stato in cui non può avviarsi a causa di un errato
/etc/inittab o non vi lascia autenticarvi a causa di un file /etc/passwd corrotto (o se avete
semplicemente dimenticato la password), fatelo partire nella modalità “utente singolo” (run level 1).
Niente grafica?
Quando lavorate in modalità grafica perché non avete avuto la richiesta di autenticazione
grafica sulla console del vostro computer, di solito potete passare alla console 7 (o
maggiore) per ottenere un login grafico. Se questo non è il vostro caso, verificate il
livello di esecuzione corrente utilizzando il comando who -r. Se è impostato su
qualcosa di diverso da 5, è probabile che normalmente il sistema non si avvii in
modalità grafica: in tal caso contattate l'amministratore di sistema o leggetevi man init.
Osservate che il passaggio di livello avviene utilizzando preferibilmente il comando
telinit: passare da una console testuale ad una grafica o viceversa non comporta un
cambio di livello di esecuzione.
4.2.5.1. Strumenti
I programmi di utilità chkconfig o updaterc.d, se installati nel vostro sistema, forniscono un
semplice strumento a riga di comando per la manutenzione della gerarchia della directory
/etc/init.d: essi sollevano gli amministratori di sistema dal dover manipolare direttamente i
numerosi collegamenti simbolici delle directory sotto /etc/rc[x].d.
Inoltre, alcuni sistemi offrono lo strumento ntsysv, che fornisce un'interfaccia testuale (potrete
trovare questa più facile da usare dell'interfaccia a riga di comando di chkconfig). Con SuSE Linux,
avrete gli strumenti yast e insserv. Per la configurazione semplificata di Mandrake, potreste vole
provare DrakConf, che consente, fra le altre funzionalità, di passare dal livello di esecuzione 3 al 5.
Con Mandriva questo diventa il Mandriva Linux Control Center.
Molte distribuzioni offrono un'interfaccia utente grafica per configurare i processi: verificate nella
vostra documentazione di sistema.
105
Introduzione a Linux
Tutte queste utility devono essere avviate come root. L'amministratore di sistema può anche creare
manualmente gli appropriati collegamenti in ogni directory di run level per avviare o fermare un
servizio di un certo livello di esecuzione.
4.2.6. Lo spegnimento
UNIX non è stato creato per essere spento, ma se proprio dovete, utilizzate il comando shutdown.
Dopo il completamento della procedura di spegnimento, l'opzione -h fermerà il sistema, mentre -r
lo riavvierà.
Se il vostro computer non si spegne da solo, non dovreste farlo fino a che non vedete un messaggio
che vi indica che il sistema è fermo o che la chiusura non è terminata, per dare tempo al sistema di
smontare tutte le partizioni. Essere impazienti potrebbe causare una perdita di dati.
Spiegheremo un po' a livello teorico le prestazioni del sistema, sebbene non fino alla ottimizzazione
dell'hardware e simili. Piuttosto studieremo i problemi quotidiani con cui deve confrontarsi un
comune utente e le azioni da intraprendere in tale qualità per usare al meglio le risorse disponibili.
Come impareremo nella prossima sezione, ciò costituisce un motivo per pensare prima di agire.
Figura 42. Puoi correre più velocemente?
106
Introduzione a Linux
107
Introduzione a Linux
Riportatevi nuovamente alle pagine Info per tutte le informazioni.
4.3.4. Le prestazioni
Per un utente “prestazioni” significa una rapida esecuzione dei comandi. Per un gestore di sistema,
d'altro canto, significa molto di più: l'amministratore deve ottimizzare le prestazioni del sistema
complessivo, compresi gli utenti, tutti i programmi e i demoni. Le prestazioni del sistema possono
dipendere da un migliaio di piccole cose che non vengono considerate dal comando time:
● il programma in esecuzione è stato scritto male o non usa adeguatamente il computer
● l'accesso ai dischi, ai controller, al display, a tutti i tipi d'interfaccia, ecc...
● la raggiungibilità dei sistemi remoti (prestazioni di rete)
● la quantità di utenti nel sistema e di quelli che stanno lavorando in contemporanea
● il momento della giornata
● ...
4.3.4. Il carico
In breve: il carico dipende da ciò che è normale per il vostro sistema. Il mio vecchio P133, che sta
eseguendo un firewall, un server SSH, un file server, un demone di route, un server sendmail, un
server proxy e alcuni altri servizi, non si lamenta con 7 utenti connessi: il carico è ancora
mediamente 0. Alcuni sistemi (multiCPU) che ho visto erano invece abbastanza contenti con un
carico pari a 67. Esiste solo un modo per scoprirlo: controllatelo regolarmente se volete sapere se è
normale. Se non lo fate, sarete solo capaci di misurare il carico di sistema dal tempo di risposta
della linea di comando, che è una misurazione molto difficile dal momento che questa velocità è
influenzata da un centinaio di altri fattori.
Tenete in mente che differenti sistemi si comporteranno in maniera diversa con la stessa media di
carico. Per esempio, un computer con una scheda grafica che supporta l'accelerazione grafica
hardware non incontrerà problemi nella creazione di immagini 3D, mentre lo stesso computer con
una scheda VGA economica rallenterà spaventosamente. Il mio vecchio P133 diverrà abbastanza
scomodo avviando il server X, ma in un moderno computer noterete pesantemente la differenza nel
carico di sistema.
108
Introduzione a Linux
ambientale del percorso) e così via, il sistema avrà bisogno di più tempo per ricercare e leggere dati.
In X, i gestori delle finestre e gli ambienti desktop possono essere dei veri “mangiatori di CPU”. Un
desktop realmente estroso comporta dei costi, anche quando lo scaricate gratis, dal momento che la
maggior parte dei desktop si può dotare di programmi aggiuntivi ad infinitum. La modestia è una
virtù, se non comprate un nuovo computer ogni anno.
4.3.5.1. La priorità
La priorità, ovvero l'importanza di un processo, è definita dal numero di nice. Un programma con
un numero di nice alto è conciliante con gli altri programmi, gli altri utenti e il sistema; non è un job
importante. Minore è il numero di nice e più importante è un job ed esso richiederà maggiori risorse
senza condividerle.
Per definire la priorità di un programma si ricorre al comando nice.
Molti sistemi forniscono anche il comando BSD renice. che vi consente di variare il valore nice di
un comando in esecuzione. Nuovamente, leggete la pagina man per specifiche informazioni sul
sistema.
Programmi interattivi
Non è una buona idea utilizzare nice o renice su un programma interattivo o su un
programma in esecuzione in primo piano.
L'impiego di questi comandi è abitualmente un compito dell'amministratore di sistema. Leggete le
pagine man per maggiori informazioni sulle funzionalità extra a disposizione dell'amministratore di
sistema.
● Avviare programmi pesanti quando il carico è basso. Questo potrebbe essere il caso
del vostro sistema in tempo di notte (v. la prossima sezione per la programmazione
degli eventi).
● Evitare al sistema lo svolgimento di lavoro non necessario: fermate demoni e
109
Introduzione a Linux
programmi non utilizzati, usate locate al posto di un pesante find, ...
● Avviate grossi job con una priorità bassa
Se nessuna di queste soluzioni è utilizzabile nella vostra situazione specifica, dovrete considerare
l'aggiornamento della CPU. In una macchina UNIX questo è un compito dell'amministratore di
sistema.
Se scoprite che molta della memoria e dello spazio sono usati, potete provare a:
I problemi di I/O della rete:
● Rete sovraccarica:
la quantità di dati trasportati sulla rete è maggiore della sua capacità, con
conseguente esecuzione lenta di qualsiasi operazione di rete per tutti gli utenti. Ciò si
può risolvere ripulendo la rete (cosa che implica la disabilitazione di protocolli e
servizi non necessari) o riconfigurando la rete (per esempio con il ricorso a sottoreti,
110
Introduzione a Linux
alla sostituzione degli hub con switch, all'aggiornamento di interfacce e attrezzature);
● Problemi di integrità della rete:
capitano quando i dati vengono trasferiti in modo scorretto. Per risolvere questo tipo
di problema si può solamente isolare l'elemento guasto e sostituirlo.
Problemi di I/O del disco:
● rateo di trasferimento per processo eccessivamente lento:
non è sufficiente la velocità di lettura o scrittura per un singolo processo;
● rateo aggregato del trasferimento troppo lento;
la larghezza di banda totale massima che il sistema può fornire a tutti i programmi
non è sufficiente.
Questo tipo di problemi è più difficile da individuare e normalmente richiede
dell'hardware extra per redistribuire i flussi di dati nei bus, controller e dischi se il
sovraccarico dell'hardware ne è l'origine. Una soluzione di ciò è la configurazione di un
sistema RAID ottimizzato per le operazioni di input e output. In questo modo manterrete
lo stesso hardware. L'altra opzione è l'aggiornamento a bus, controller e dischi più
veloci.
Se la causa non è il sovraccarico, potrebbe trattarsi del vostro hardware che si sta progressivamente
deteriorando o della sua non perfetta connessione al sistema. Per cominciare, controllate contatti,
connettori e prese.
● utenti che avviano un (grande) numero di piccoli processi: voi, per esempio, nuovi utenti
Linux;
● utenti che avviano relativamente pochi processi ma di grosse dimensioni: simulazioni, calcoli,
emulatori o altri programmi che divorano una quantità di memoria e solitamente
accompagnati da grandi file d dati;
● utenti che eseguono pochi processi ma usano molto tempo della CPU (sviluppatori e simili).
Potete constatare che le richieste di sistema possono variare a seconda della classe di utenti e che è
difficile accontentare tutti. Se vi trovate in un sistema multiutente, è utile ( e divertente) scoprire le
abitudini degli altri utenti nel sistema per ottenere il massimo per i vostri impieghi specifici.
Figura 43. Il Monitor di Sistema Gnome
111
Introduzione a Linux
C'è anche un paio di comode icone che potete installare nella task bar come monitor di dischi,
memoria e carico. xload è un'altra piccola applicazione di X per il controllo del sistema. Scoprite la
vostra preferita!
Se desiderate che il processo continui, ma volete lasciare maggior spazio agli altri processi del
sistema, potete usare renice sul medesimo. A parte l'uso dei comandi nice o renice, top è un modo
facile per individuare i processi problematici e per ridurre la priorità.
Identificate il processo nella colonna “NI”: molto probabilmente sarà quello con una priorità
negativa. Battete r ed inserite l'ID del processo a cui volete modificare la priorità. Indicate poi il
valore “nice” (per esempio “20”): ciò sta ad indicare che tale processo userà al massimo 1/5 dei cicli
di CPU.
Esempi di processi che volete mantenere in funzione sono: gli emulatori, le macchine virtuali, i
compilatori e così via.
Se desiderate fermare un processo perché si impianta o sta divenendo completamente un berserk
sulla strada del consumo dell'I/O, nella creazione di file o nell'uso di altre risorse, utilizzate il
comando kill. Se ne avete l'opportunità, prima provate a “uccidere” elegantemente il processo,
inviando il segnale SIGTERM. Questa è un'istruzione per terminare qualsiasi cosa si stia facendo,
secondo le procedure descritte nel codice del programma:
112
Introduzione a Linux
Alcuni processi sono più difficili da eliminare. Se ne avete il tempo, potete inviare loro il segnale
SIGINT per interromperli. Se ciò non funziona, usate il segnale più forte, SIGKILL. Nell'esempio
seguente, joe ferma un Mozilla che si è bloccato:
In questi casi, potreste desiderare di controllare quale processo è realmente morto, usando il filtro
grep sul PID. Se quest'ultimo restituisce solo il processo grep, potrete stare sicuri di essere riusciti
nel fermarlo.
Fra i processi che sono ardui da uccidere c'è la vostra shell. E ciò è una buona cosa: se essa fosse
semplice da uccidere, voi potreste perdere la shell ogni qualvolta premete accidentalmente CtrlC
nella linea di comando, da momento che ciò equivale ad inviare un SIGINT.
Linux è quasi impensabile senza le “pipe”
L'uso delle “pipe” (|) per inviare i dati in uscita di un comando all'ingresso di un altro
viene spiegato nel prossimo capitolo 5
.
In un ambiente grafico, il programma xkill risulta piuttosto facile da impiegare: basta solo digitare il
nome del comando, seguito da un Invio, e scegliere la finestra dell'applicazione da fermare. E'
comunque anche piuttosto pericoloso perché invia normalmente un SIGKILL: usatelo perciò solo
quando un'applicazione si impianta.
Esistono tre tipi di esecuzione ritardata:
● attendere per un poco e poi riassumere l'esecuzione di un processo, usando il comando
113
Introduzione a Linux
sleep. Il tempo di esecuzione dipende dal tempo del sistema al momento dell'invio.
● avviare un comando in un momento specificato, usando il comando at. L'esecuzione del
processo (o di più processi) dipende dal tempo di sistema, non dal momento dell'invio, non
da quello di invio.
● avviare un processo regolarmente con cadenza mensile, settimanale, giornaliera od oraria,
usando i mezzi offerti da cron.
Le seguenti sezioni trattano di ciascuna possibilità.
Allora, perché esiste? Alcuni esempi pratici:
Qualcuno telefona e voi rispondete “Si sarò lì da te tra mezz'ora”, ma siete veramente sommersi da
lavoro e siete pure costretti a rinunciare al pranzo:
(sleep 1800; echo “Ora di pranzo...”) &
Quando per qualche motivo non potete usare il comando at (sono le cinque), volete andare a casa
ma c'è ancora lavoro da sbrigare e proprio adesso qualcuno sta sottraendo risorse del sistema:
(sleep 10000; mioprogramma) &
Avviando questo genere di processo assicuratevi che ci sia una disconnessione automatica nel vostro
sistema e di uscire o di bloccare il vostro ufficio/desktop, oppure avviatelo in una sessione di
screen.
Quando lanciate una serie di stampe di grossi file, ma desiderate che altri utenti possano stampare
nel frattempo:
lp mucchioditesti; sleep 900; lp grossofile; sleep 900; lp altrogrossofile
Nel Capitolo 8 tratteremo della stampa dei file.
I programmatori usano spesso il comando sleep per fermare l'esecuzione di script o programmi per
un certo lasso di tempo.
4.4.3. Il comando at
Il comando at esegue dei comandi ad una data ora, utilizzando la vostra consueta shell a meno che
non diate il comando in altro modo (v. pagina man).
114
Introduzione a Linux
Battendo Ctrl+D si interrompe l'utility at e si genera il messaggio “EOT”.
L'utente steven qui fa una cosa strana combinando due comandi; studieremo questo tipo di esempio
nel Capitolo 5 – Redirezione dell'Input e dell'Output.
steven@home:~> at 0237
warning: commands will be executed using (in order) a) $SHELL
b) login shell c) /bin/sh
at> cd new−programs
at> ./configure; make
at> <EOT>
job 2 at 2001−06−14 02:00
L'opzione -m invia un messaggio di posta all'utente al termine del processo, oppure avvisa quando
quest'ultimo non è stato completato. Il comando atq elenca i processi; date tale comando prima di
lanciare dei processi in modo da evitare di farli partire contemporaneamente ad altri. Con il
comando atrm potete rimuovere dei processi pianificati, se cambiate propositi.
Una buona idea è scegliere strani orari di esecuzione poiché i processi di sistema vengono spesso
avviato allo scoccare delle ore, come potete constatare nella prossima Sezione 4.4.4. Per esempio i
processi spesso vengono lanciati all'una precisa del mattino (l'indicizzazione del sistema per
l'aggiornamento del database standard di locate), cosicché la fissazione di un tempo pari a 0100
potrebbe facilmente rallentare il vostro sistema piuttosto che farlo accelerare. Per impedire che i
processi siano avviati tutti allo stesso tempo, potete usare anche il comando batch, che li accoda e li
sottopone al sistema in un modo equilibrato allo scopo di prevenire picchi eccessivi di uso delle
risorse di sistema. V. le pagine Info per ulteriori informazioni.
Durante l'avvio del sistema il demone cron cerca le istruzioni crontab in /var/spool/cron che
sono elencate dopo gli account in /etc/passwd, in /etc/cron.d e in /etc/crontab,
quindi usa queste informazioni ogni minuto per controllare se c'è qualcosa da fare. Esso esegue i
comandi come l'utente che possiede il file crontab ed invia per posta ogni output dei comandi al
medesimo.
Nei sistemi che utilizzano il Vixie cron, i processi che si ripetono con cadenza oraria, giornaliera,
settimanale e mensile sono conservati in directory separate sotto /etc per vederli rapidamente, al
contrario della funzione cron standard UNIX dove tutti i compiti sono inseriti in un unico grosso
115
Introduzione a Linux
file.
Esempio di un file Vixie crontab:
Vengono prima impostate delle variabili e poi c'è la pianificazione attuale, una linea per ogni
processo con 5 campi iniziali per l'ora e il giorno. Il primo campo contiene i minuti (da 0 a 59), il
secondo definisce l'ora di esecuzione (023), il terzo rappresenta il numero del giorno (131), il
quarto il numero del mese (112) e l'ultimo è il giorno della settimana (07, dove sia 0 che 7
indicano la domenica). Un asterisco in questi campi rappresenta l'intera serie di valori accettati. Gli
elenchi sono consentiti: inserirete nell'ultimo campo 15 per eseguire un processo dal lunedì al
venerdì e 1,3,5 per l'esecuzione nei giorni lunedì, mercoledì e venerdì.
Dopo questi 5 campi viene l'utente che dovrebbe avviare i processi elencati nell'ultima colonna.
L'esempio qui sopra è ricavato da una configurazione di Vixie cron in cui root avvia il programma
runparts ad intervalli regolari con le directory appropriate come opzioni. In queste directory i veri
processi da eseguire all'orario pianificato sono conservati come script di shell, come questo piccolo
script che viene avviato quotidianamente per aggiornare il database utilizzato dal comando locate:
Si suppone che gli utenti modifichino i propri crontab in modo sicuro utilizzando il comando
crontab e : ciò impedirà l'apertura accidentale di più di una copia del file crontab. Solitamente
l'editor è vi (v. Capitolo 6, però potete usare qualsiasi editor testuale, come gvim o gedit, se vi
trovate meglio con un editor visuale).
Al termine il sistema vi comunicherà che è stato installato un nuovo crontab.
Il crontab seguente ricorda a billy di recarsi ogni giovedì sera al proprio club sportivo:
billy:~> crontab −l
# DO NOT EDIT THIS FILE − edit the master and reinstall.
# (/tmp/crontab.20264 installed on Sun Jul 20 22:35:14 2003)
# (Cron version −− $Id: chap4.xml,v 1.24 2006/07/25 08:37:49 tille Exp $)
38 16 * * 3 mail −s "sports evening" billy
116
Introduzione a Linux
Dopo aver aggiunto una nuova attività pianificata, il sistema vi dirà che è stato installato un nuovo
crontab. Non è necessario riavviare il demone crond per rendere efficaci i cambiamenti.
Nell'esempio billy ha aggiunto una nuova riga che punta ad uno script di backup:
billy:~> crontab −e
45 15 * * 3 mail −s "sports evening" billy
4 4 * * 4,7 /home/billy/bin/backup.sh
<−−write and quit−−>
crontab: installing new crontab
billy:~>
Lo script backup.sh viene eseguito ogni giovedì e domenica (v. Sezione 7.2.5 per un'introduzione
agli script di shell). Tenete presente che, se presente, l'output dei vostri comandi viene inviato come
email al proprietario del file crontab. Se non fosse stato configurato alcun servizio di posta,
potreste trovare l'output come semplice file di testo nella vostra casella postale locale
/var/spool/mail/<vostro_nomeutente>.
Chi avvia i miei comandi?
Non dovete specificare l'utente che dovrebbe avviare i comandi in quanto vengono
eseguiti normalmente con i permessi propri dell'utente.
4.5. Sommario
Linux è un sistema operativo multiutente, multitasking, che impiega un modo simile a UNIX per
gestire i processi. La velocità di esecuzione dei comandi può dipendere da migliaia di piccoli fattori:
fra l'altro, abbiamo imparato molti nuovi comandi per visualizzare e manipolare i processi. Eccone
una lista:
Tabella 43. Comandi di gestione dei processi
Comando Significato
at Accoda i processi per la successiva esecuzione.
atq Elenca i processi dell'utente in esecuzione.
atrm Cancella processi in base al loro specifico numero di processo.
batch Esegue comandi quando il livello di carico di sistema lo permette.
crontab Gestisce i file crontab per ogni utente.
halt Ferma il sistema.
init runlevel Elabora il processo di inizializzazione.
jobs Elenca i processi correntemente in esecuzione.
kill Termina un processo.
117
Introduzione a Linux
Comando Significato
mesg Controlla l'accesso in scrittura del vostro terminale.
Mostra le connessioni di rete, le tabelle di instradamento, le statistiche di
netstat
interfaccia, le connessioni mascherate e le appartenenze del multicast.
nice Avvia un programma con la priorità prevista modificata.
ps Presenta lo stato dei processi.
pstree Mostra un albero dei processi.
reboot Riavvia il sistema.
renice Modifica la priorità di esecuzione dei processi.
shutdown Spegne il sistema.
sleep Ritarda per un tempo determinato.
time Temporizza un comando o mostra l'uso delle risorse.
top Mostra i processi principali
uptime Mostra da quanto tempo il sistema sta funzionando
.stat Presenta le statistiche della memoria virtuale.
w Mostra chi è connesso al sistema e che cosa sta facendo
wall Invia un messaggio a tutti i terminali.
who Mostra chi è connesso al sistema
write Manda un messaggio ad un altro utente.
4.6. Esercizi
Questi sono alcuni esercizi che vi aiuteranno a comprendere il significato dei processi che girano
nel vostro sistema.
4.6.1. In generale
● Avviate top in un terminale mentre eseguite gli esercizi in un altro.
● Avviate il comando ps.
● Leggete le pagine man per cercare il modo di visualizzare tutti i vostri processi
● Avviate il comando find /. Quale effetto produce sul carico di sistema? Fermate questo
comando.
● In modalità grafica, avviate il programma xclock in primo piano e poi lasciatelo funzionare
dietro le quinte. Fermate il programma usando il comando kill
● Avviate direttamente in background il programma xcalc in modo da liberare il prompt del
terminale da cui è stato avviato.
118
Introduzione a Linux
● Cosa fa kill 9 1?
● Aprite nuovamente due terminali o finestre di terminale e usate write per inviare un
messaggio dall'una all'altra.
● Date il comando mesg. Che cosa dice?
● Quanto ci vuole per eseguire ls nella directory corrente?
● In base alle informazioni dei processi in /proc di vostra proprietà, come dovete fare per
scoprire quali processi attualmente rappresentano?
● Da quanto tempo è attivo il vostro sistema?
● Qual'è la vostra attuale TTY?
● Indicate 3 processi che non possono aver avuto init come originario genitore.
● Elencate 3 comandi che usano la modalità SUID. Spiegate perché ciò avviene.
● Nominate i comandi che generalmente causano il maggior carico nel vostro sistema.
4.6.3. Pianificazione
● Usate sleep per creare un avviso che la vostra pasta è pronta in dieci minuti.
● Create un processo at che copi tutti i file della vostra directory personale in /var/temp
dopo mezzora. Potreste creare anche una sottodirectory in /var/temp.
● Create un processo cron che esegua questo compito dal lunedì al venerdì all'ora di pranzo.
● Controllate che funzioni.
● Inserite un errore nei dati crontab come, ad esempio, un inesistente comando copy al posto
di cp. Cosa succede con l'esecuzione del compito?
119
Introduzione a Linux
Standard input, output ed errori
Operatori di redirezione
Come usare l'output di un comando come input di un altro
Come creare un file con l'output di un comando per una successiva
consultazione
Come accodare l'output di più comandi in un file
Redirezione dell'input
Gestione dei messaggi standard di errore
Combinare la redirezione dei flussi di input, output e di errore
Filtri dell'output
Comunque, dal momento che Linux è un sistema flessibile, queste impostazioni di base non devono
essere applicate necessariamente. Ad esempio lo standard output di un server molto controllato in
un grande ambiente può essere una stampante.
120
Introduzione a Linux
Non sovrascrivete!
State attenti a non sovrascrivere file esistenti (magari importanti) quando redirigete
l'uscita dei dati. Molte shell, compresa Bash, hanno la capacità predefinita di
proteggervi da tale rischio: noclobber (consultate le pagine Info per maggiori
informazioni). Con Bash dovreste aggiungere il comando set -o noclobber al
vostro file di configurazione .bashrc per prevenire scritture accidentali di file.
Redirigere “niente” verso un file esistente equivale a svuotarlo:
nancy:~> ls −l list
−rw−rw−r−− 1 nancy nancy 117 Apr 2 18:09 list
nancy:~> > list
nancy:~> ls −l list
−rw−rw−r−− 1 nancy nancy 0 Apr 4 12:01 list
Questo processo è chiamato troncamento.
La stessa redirezione ad un file inesistente creerà un nuovo file vuoto con il nome indicato:
nancy:~> ls −l newlist
ls: newlist: No such file or directory
nancy:~> > newlist
nancy:~> ls −l newlist
−rw−rw−r−− 1 nancy nancy 0 Apr 4 12:05 newlist
Il Capitolo 7 fornisce alcuni altri esempi dell'uso di questo tipo di redirezione.
Ecco alcuni esempi dell'utilizzo dell'incanalamento (piping) dei comandi.
Per trovare una parola in un certo testo, mostrate tutte le linee contenenti “parola1” ed escludete
quelle che contengono anche “parola2”:
Per mostrare l'output di un elenco dei file di una directory una pagina alla volta:
ls -la | less
Per trovare un file in una directory:
121
Introduzione a Linux
ls -l | grep parte_del_nome_del_file
Qui sotto c'è un esempio di come inviare un file a qualcuno utilizzando la redirezione dell'input.
Se l'utente mike esiste nel sistema, non avete bisogno di scrivere l'intero indirizzo. Se invece volete
raggiungere qualcuno su Internet, battete l'intero indirizzo come argomento di mail.
Tale esempio si legge con maggiore difficoltà rispetto al banale cat file | mail qualcuno ma è
un modo molto più elegante per usare gli strumenti disponibili.
spell <testo.txt> errori.log
Il comando seguente elenca tutti i comandi che potete dare per esaminare un altro file quando usate
less:
Se desiderate salvare l'output di questo comando per futura memoria, redirigetelo ad un file:
Di fatto l'output di un comando può essere incanalato in un altro comando quante volte volete a
condizione che normalmente tali comandi leggano i dati in ingresso dallo standard input e scrivano
nello standard output quelli in uscita. Talvolta essi non sono in grado di farlo, ma potrebbero esserci
122
Introduzione a Linux
delle speciali opzioni che istruiscono questi comandi a comportarsi secondo le regole consuete.
Leggete perciò la documentazione (pagine man e info) dei comandi utilizzati nel caso otteniate degli
errori.
Nuovamente, siate certi di non usare nomi di file esistenti di cui avete ancora bisogno: la redirezione
dell'output a file esistenti cancellerà il loro contenuto.
Esempio:
Il comando date scriverebbe sull'ultima linea sullo schermo: adesso invece la aggiunge al file
listadesideri.
● standard input: 0
● standard output: 1
● standard error: 2
Nelle descrizioni seguenti, se il numero descrittore di file viene omesso e il primo carattere
dell'operatore di redirezione è <, la redirezione si riferisce allo standard input (descrittore di file 0):
se invece il primo carattere dell'operatore di redirezione è >, allora la redirezione si riferisce allo
standard output (descrittore di file 1).
Alcuni esempi pratici vi chiariranno maggiormente:
ls > dirlist 2>&1
redirigerà sia lo standard output che lo standard error al file dirlist, mentre il comando
123
Introduzione a Linux
ls 2>&1 > dirlist
invierà solo lo standard output a dirlist. Questa può essere una opzione utile per i
programmatori.
Le cose qui si stanno facendo abbastanza complicate: non confondete l'uso della E commerciale (&)
con quello in Sezione 4.1.2.1., dove essa è usata per lanciare un programma in sottofondo. Qui serve
esclusivamente per indicare che il numero seguente non è un nome di file, bensì una locazione a cui
punta il flusso dei dati. Notate pure che il segno di maggiore non dovrebbe essere separato con spazi
dal numero del descrittore di file: se venisse separato, noi punteremmo nuovamente l'uscita dei dati
ad un file. L'esempio successivo ve lo dimostra:
Il primo comando eseguito da nancy è corretto (anche se non vengono generati errori ed è vuoto il
file a cui lo standard error viene rediretto). Il secondo comando si aspetta che 2 sia un nome di file,
che in questo caso è inesistente, cosicché viene segnalato un errore.
Tutte queste caratteristiche sono spiegate in dettaglio nelle pagine Info di Bash.
5.2.2. Esempi
5.2.2.1. Analisi degli errori
Se il vostro processo genera molti errori, questo è un modo per esaminarli approfonditamente:
comando 2>&1 | less
Ciò si usa spesso quando si creano nuovi programmi utilizzando il comando make, come in:
124
Introduzione a Linux
Potete utilizzare il comando tee per copiare l'input nello standard output e in uno o più file in uscita
in una sola mossa. Utilizzando l'opzione -a di tee si ha come risultato l'aggiunta dell'input in coda
a(i) file. Tale comando è utile se volete nello stesso tempo vedere e salvare i dati in uscita. Gli
operatori > e >> non permettono lo svolgimento di entrambe le azioni simultaneamente.
Questo strumento viene di solito invocato tramite una pipe (|), come mostrato nell'esempio seguente:
5.3. Filtri
Quando un programma svolge operazioni sui dati in ingresso e scrive il risultato nello standard
output, esso viene definito filtro. Uno degli impieghi più comuni dei filtri è quello di ristrutturare
l'output. Qui di seguito tratteremo di una coppia dei filtri più importanti.
Ecco alcuni esempi.
Supponete di voler conoscere quali file di una certa directory sono stati modificati in febbraio:
Il comando grep, come molti altri, è sensibile alle maiuscole/minuscole: usate perciò l'opzione -i
per non distinguere tra di esse. Sono disponibili molte estensioni GNU, come --colour, che serve
ad evidenziare i termini ricercati nelle linee lunghe, e –after-context, che stampa il numero di
linea dopo l'ultima che corrisponde. Usando l'opzione -r potete avviare un grep ricorsivo che cerca
in tutte le sottodirectory delle directory trovate. Come al solito le opzioni possono essere combinate.
Le espressioni regolari si possono utilizzare per dettagliare maggiormente le esatte corrispondenze
di caratteri che desiderate ricercare in tutte le linee in ingresso. Il modo migliore di cominciare con
125
Introduzione a Linux
le espressioni regolari è, ovviamente, quello di leggere la documentazione di grep. Un eccellente
capitolo è ricompreso nella pagina info grep. Dal momento che tutto ciò potrebbe condurci troppo
lontano sui dettagli delle espressioni regolari, è fortemente consigliabile iniziare da qui se volete
saperne di più.
Esercitatevi un po' con grep: vale proprio la pena di dedicare del tempo a questo piuttosto
elementare, ma molto potente, comando di filtraggio. Gli esercizi alla fine di questo capitolo vi
aiuteranno ad iniziare (v. Sezione 5.5.).
Amico
Capo
Mamma
Nonna
Papa'
Zietta Emmy
Ma esistono molte altre cose che sort è capace di fare: ad esempio guardare le dimensioni dei file.
Con tale comando il contenuto della directory viene ordinato partendo dal file più piccolo a quello
più grande:
ls -la | sort -nk5
Vecchia sintassi di sort
Potreste ottenere lo stesso risultato con ls -la | sort +4n, ma questa è una forma
sorpassata non conforme agli standard correnti.
126
Introduzione a Linux
5
555
567
5.4. Sommario
In questo capitolo abbiamo imparato come i comandi possono essere combinati tra di loro e come
l'input di un programma può essere usato come output di un altro.
La redirezione di input/output è un'attività comune nelle macchine UNIX e Linux. Tale potente
meccanismo permette l'uso flessibile dei mattoni di cui è costituito UNIX.
Le redirezioni comunemente più usate sono > e |.
5.5. Esercizi
Questi esercizi offrono più esempi di come combinare i comandi. L'obbiettivo principale è di
provare ad usare il tasto Invio il meno possibile.
Tutti gli esercizi sono stati creati utilizzando un ID di utente normale in modo da produrre alcuni
errori. Durante l'esecuzione non dimenticate di leggere le pagine man!
● Usate il comando cut sui dati in uscita di un lungo elenco della directory per mostrare solo i
permessi dei file. Poi reindirizzate questo output a sort e uniq per filtrare tutte le linee
duplicate. Infine usate wc per contare i diversi tipi di permesso contenuti in questa directory.
● Mettete l'output di date in un file. Aggiungete i dati in uscita di ls a questo file. Inviate il file
risultante alla vostra casella postale locale (non specificate alcun <@dominio>, basterà
solo il nome utente). Usando Bash, vedrete un avviso di posta nuova in caso di successo.
● Elencate le periferiche in /dev che al momento sono utilizzate dal vostro UID.
Reindirizzate attraverso less per vedere le loro proprietà.
● Date i comandi seguenti in qualità di utente non privilegiato. Determinate gli standard input,
output ed error di ciascun comando:
cat fileinesistente
file /sbin/ifconfig
grep root /etc/passwd /etc/nofiles > grepresults
/etc/init.d/sshd start > /var/tmp/output
/etc/init.d/crond start > /var/tmp/output 2>&1
Ora controllate i vostri risultati ridando i comandi e redirigendo lo standard
output al file /var/tmp/output e lo standard error al file
/var/tmp/error.
● Quanti processi sono attualmente attivi?
● Quanti file invisibili esistono nella vostra directory personale?
127
Introduzione a Linux
● Usate locate per trovare documentazione sul kernel.
● Scoprite quale file contiene la seguente riga:
root:x:0:0:root:/root:/bin/bash
e quest'altra:
system: root
● Guardate cosa succede battendo questo comando:
> time; date >> time; cat < time
● Quale comando usereste per verificare quale script in /etc/init.d avvia un certo
processo?
128
Introduzione a Linux
Al termine del capitolo sarete in grado di:
aprire e chiudere file in modalità testo
modificare file
cercare del testo
annullare errori
fondere file
recuperare file persi
trovare un programma o una suite per l'uso in ufficio
Avremo bisogno di padroneggiare un editor dal prossimo capitolo non appena ci imbatteremo nella
necessità di modificare i file che influenzano il nostro ambiente. Come un utente esperto, potrete
voler cominciare a scrivere script o libri, sviluppare siti web o nuovi programmi. Saper usare un
editor migliorerà immensamente la vostra produttività così come le vostre capacità.
Esistono, come al solito, molti modi di affrontare la questione. Andiamo a vedere quali editor sono
normalmente disponibili.
6.1.2.1. Ed
L'editor ed è orientato alla linea e utilizzato per creare, mostrare, modificare e manipolare in altri
modi i file testuali, sia in maniera interattiva sia nell'uso con gli script di shell.
129
Introduzione a Linux
ed è l'originale editor di testo delle macchine UNIX e perciò è ampiamente disponibile. Comunque
per molti scopi è stato superato dagli editor a tutto schermo come emacs e vi (v. sotto).
Autodescrittivo significa che in qualsiasi momento potete battere un carattere speciale, Ctrl+H, per
scoprire quali opzioni avete a disposizione. Potete anche usarlo per scoprire cosa fa ogni comando o
per trovare tutti i comandi che riguardano un determinato argomento.
Personalizzabile significa che potete modificare facilmente le definizioni dei comandi di Emacs. Per
esempio, se utilizzate un linguaggio di programmazione i cui commenti iniziano con '<**' e
finiscono con '**>', potete istruire i comandi di manipolazione dei commenti in Emacs a usare
quelle stringhe. Un altro genere di personalizzazione è la ridefinizione dell'insieme dei comandi: per
esempio, se preferite che i quattro comandi fondamentali di movimento del cursore (su, giù, sinistra
e destra) siano disposti a diamante sulla tastiera, potete riassegnare i tasti in quel modo.
Quando gira sotto il sistema a finestre X Emacs (avviato con xemacs) fornisce i propri menu e dei
comode associazioni con i tasti del mouse. Ma Emacs può offrire molti dei vantaggi di un sistema a
finestre in un terminale esclusivamente testuale. Per esempio, potete osservare o modificare alcuni
file alla volta, spostare del testo tra file e redigere file mentre sono attivi dei comandi di shell.
6.1.3. Vi(m)
Vim sta per Vi Improved (anche se era nato come Vi IMitation), esistendo così tanti miglioramenti
da giustificare il cambio del nome. Vim è un editor di testo che comprende quasi tutti i comandi del
programma UNIX vi e molti altri di nuovi.
130
Introduzione a Linux
I comandi nell'editor vi vengono inseriti solo da tastiera con il vantaggio di mantenere le dita su di
essa e lo sguardo sullo schermo, piuttosto che portare il braccio ripetutamente al mouse. Per quelli
che lo desiderano, si possono attivare sia il supporto per il mouse, sia una versione per la GUI con
barre di scorrimento e menu.
Per la redazione di file ci riferiremo a vi o vim nel corso di questo libro, mentre siete naturalmente
liberi di usare il vostro editor prediletto. Comunque raccomandiamo di impratichirvi almeno negli
elementi fondamentali di vi, in quanto è l'editor testuale standard in quasi tutti i sistemi UNIX,
mentre Emacs può costituire un pacchetto opzionale. Possono esistere piccole differenze tra diversi
computer e terminali, ma la questione centrale è che se potete lavorare con vi, siete pure in grado di
sopravvivere in qualsiasi sistema UNIX.
Oltre al comando vim, i pacchetti vIm possono anche offrire gvim, la versione Gnome di vim. Gli
utenti principianti potrebbero trovarlo più semplice da utilizzare, poiché i menu offrono aiuti quando
dimenticate o non sapete come svolgere un particolare compito di redazione usando i comandi
standard di vim.
Quello che rende vi disorientante per un principiante è che può operare in due modalità: comando e
inserimento. L'editor inizia sempre in modalità comando: i comandi vi spostano nel testo, ricercano,
rimpiazzano, marcano blocchi ed eseguono altre attività di elaborazione, ed, infine, alcuni di essi
convertono l'editor in modalità inserimento.
Ciò significa che ogni tasto può avere facilmente non uno solo, ma due significati: può
rappresentare un comando per l'editor nella modalità corrispondente, oppure un carattere che volete
in un testo quando si trova in modalità inserimento.
Pronuncia
Si pronuncia “viai”.
131
Introduzione a Linux
● h per spostare il cursore a sinistra
● l per spostarlo a destra
● k per spostarlo verso l'alto
● j per spostarlo verso il basso
SHIFTG sposta il cursore alla fine del documento.
Premendo il tasto Esc si ritorna in modalità comando. Se non siete sicuri della modalità in cui vi
trovate perché state usando una versione piuttosto vecchia di vi che non riporta il messaggio
“INSERT”, battete Esc e sarete certi di ritornare in modalità comando. E' possibile che il sistema
emetta un piccolo segnale se vi trovate già in tale modalità quando premete Esc, suonando o dando
un avviso visivo (un lampeggio sullo schermo): questo è un comportamento normale.
132
Introduzione a Linux
In UNIX e MS Windows, se Vim è stato installato correttamente, potete avviarlo dalla shell o dalla
linea di comando inserendo vimtutor. Ciò creerà una copia del file della lezione, in modo che
potrete modificarlo senza il rischio di danneggiare l'originale. Esistono alcune versioni tradotte della
lezione. Per sapere se c'è quella vostra, usate il codice di linguaggio a due lettere: per il francese
dovrebbe essere vimtutor fr (se installato nel sistema).
6.3.1. Storia
Per l'intera ultima decade il settore dell'ufficio è stato dominato tipicamente da MS Office e,
ammettiamolo, i formati Microsoft Word, Excel e PowerPoint sono degli standard industriali con cui
prima o poi avrete a che fare.
Questa situazione di monopolio di Microsoft è stata sentita come un grosso impedimento alla
venuta di nuovi utenti di Linux, cosicché un gruppo di sviluppatori tedeschi diedero inizio al
progetto StarOffice, che era (e lo è tuttora) mirato a creare un clone di MS Office. La loro società è
stata acquistata da Sun Microsystems alla fine degli anni 1990, poco prima della versione 5.2. Sun
continua lo sviluppo ma ha vietato l'accesso ai codici. Tuttavia lo sviluppo in base all'insieme
originale dei codici sorgenti continua nella comunità dell'Open Source, la quale ha ridenominato il
progetto OpenOffice. OpenOffice è ora disponibile per una varietà di piattaforme, comprendente
MS Windows, Linux, MacOS e Solaris. C'è una schermata nella Sezione 1.3.2.
Quasi in contemporanea, è stata avviata una coppia di altri progetto abbastanza noti. Anche
KOffice, la suite da ufficio che era popolare abitualmente tra gli utenti SuSE, costituisce una
alternativa molto comune all'uso di MS Office. Come l'originale, questo clone incorpora un
programma compatibile MS Word ed Excel, e molto altro.
Progetti minori si occupano dei singoli programmi della suite MS di esempio, come Abiword e MS
Wordview per la compatibilità con i documenti MS Word e Gnumeric per vedere e creare fogli
elettronici compatibili con Excel.
133
Introduzione a Linux
dettaglio. Come riferimento date un'occhiata alla documentazione di sistema o ai siti web dei
progetti, come:
● http://www.openoffice.org
● http://www.koffice.org
● Freshmeat e Sourceforge per vari altri progetti
6.3.3. Note
6.3.3.1. Uso generale dei documenti d'ufficio
Provate a limitare l'uso dei documenti d'ufficio solo agli scopi per cui sono stati creati: l'ufficio.
Un esempio: molti utenti Linux impazziscono se inviate loro una email che dice più o meno così nel
contenuto: "Ciao, devo dirti qualcosa, leggi l'allegato" e quest'ultimo si rivela essere un documento
compatibile MS Word contenente "Ciao amico mio, come va il tuo nuovo lavoro: hai tempo per
pranzare con me domani?". Un'altra pessima idea è l'allegato con la vostra firma, per esempio. Se
intendete firmare messaggi e file, usate GPG, la Guard Privacy GNU compatibile PGP oppure i
certificati SSL (Secure Socket Layer).
Questi utenti non sono seccati perché sono impossibilitati a leggere tali documenti o perché sono
preoccupati che detti formati generino normalmente file molto ingombranti, ma piuttosto perché
stanno usando MS Windows e, eventualmente, per il lavoro aggiuntivo causato dal dover avviare
alcuni programmi in più.
Non create o modificate questi file con qualsiasi programma d'ufficio!
Le normali specifiche del formato del file potrebbero determinare che il programma aggiunga
alcune linee di codice per definire il formato del file e i font utilizzati. Queste linee potrebbero
essere male interpretate dai programmi che dipendono da esse, causando errori o il blocco del
programma che legge il file. In alcuni casi potrete salvare il file come testo semplice, ma finirete nei
guai se prenderete questa abitudine.
Un'alternativa accettabile è gvim, la versione Gnome di vim: dovrete usare ancora i comandi di vi,
ma se vi troverete in difficoltà potrete cercarli nei menu.
134
Introduzione a Linux
6.4. Sommario
In questo capitolo abbiamo appreso l'uso di un editor. Mentre dipende dai vostri gusti personali
quale usare, è necessario almeno sapere come si utilizza un editor.
L'editor vi è disponibile su ogni sistema UNIX.
Molte distribuzioni comprendono una suite da ufficio e un editor testuale grafico.
6.5. Esercizi
Questo capitolo ha un solo esercizio: avviate il Vim Tutor battendo vimtutor in una sessione di
terminale ed iniziate.
In alternativa potreste avviare emacs, battere Ctrl+H e poi T per richiamare la lezione passopasso
di Emacs.
La pratica è l'unica via!
135
Introduzione a Linux
l'organizzazione del vostro ambiente
i file normali di configurazione della shell
la configurazione della shell
la configurazione del prompt
la configurazione dell'ambiente grafico
le applicazione sonore e video
i gestori del video e delle finestre
il funzionamento del sistema clientserver di X
le impostazioni della lingua e dei font
l'installazione di nuovo software
l'aggiornamento dei pacchetti esistenti
7.1.1. Introduzione
Come abbiamo menzionato in precedenza, è abbastanza semplice mettere a soqquadro il sistema.
Non ci stancheremo mai abbastanza nell'insistere sull'importanza di mantenerlo in ordine. Se
imparerete ciò sin dall'inizio, la cosa diventerà una sana abitudine che farà risparmiare tempo
programmando con un sistema Linux o UNIX oppure nell'affrontare i compiti di gestione del
sistema. Qui sono elencati alcuni modi per semplificarci la vita:
● Create una directory bin per i vostri file e script.
● Organizzate i file non eseguibili in directory appropriate e di queste createne a piacimento:
per esempio create directory distinte per le immagini, i documenti, i progetti, i file scaricati,
i fogli elettronici, i file personali, e così via.
● Rendete private le directory con il comando chmod 700 nomedirectory.
● Date ai vostri file nomi sensati, come Lamentela al primo ministro 050302,
piuttosto di lettera1.
136
Introduzione a Linux
Lanciate il comando quota v per vedere quanto spazio è rimasto.
Il processo di riduzione di un file esistente ad uno con lo stesso nome che sia grande 0 byte si
chiama “troncamento”.
Nel creare un nuovo file vuoto lo stesso effetto si ottiene con il comando touch: con un file esistente
touch aggiornerà soltanto l'ora di modifica. Leggete le pagine Info su touch per maggiori dettagli.
Per svuotare quasi completamente un file utilizzate il comando tail. Supponete che l'elenco dei
desiderata dell'utente andy sia divenuto piuttosto lungo per le continue aggiunte in fondo senza la
cancellazione delle cose già in possesso. Ora costui vuol mantenere solo gli ultimi cinque oggetti:
andy:~> rm nuovoelenco
● Provate a cancellare il file di registro quando il programma non è in funzione se siete certi di
non averne ancora bisogno. Alcuni programmi possono anche verificare all'avvio se non
esiste alcun file di log e dunque non registrare niente.
● Se cancellate il file di log e il programma lo ricrea, leggete la documentazione di
quest'ultimo per cercare l'opzione che evita di scrivere file di registro.
● Tentate di creare file di log più piccoli registrando solo le informazioni per voi importanti o
solo significanti.
137
Introduzione a Linux
● Provate a sostituire il file di log con un collegamento simbolico a /dev/null; se sarete
fortunati il programma non si lamenterà. Non fate ciò con i file di registro di programmi che
vengono eseguiti con l'avvio del sistema o con i programmi lanciati da cron (v. Capitolo 4).
Tali programmi potrebbero infatti sostituire il link simbolico con un piccolo file che inizierà
nuovamente a crescere.
7.1.2.3. Posta
Fate pulizia con regolarità nella vostra casella postale, create sottocartelle e reindirizzate
automaticamente usando procmail (leggete le pagine Info) o i filtri della vostra applicazione
preferita per la lettura della posta. Se avete una cartella per i file da cestinare, svuotatela con
regolarità.
Per reindirizzare la posta utilizzate il file .forward nella vostra directory personale. Il servizio di
posta Linux cerca questo file ogni volta che deve consegnare della posta locale. Il contenuto del file
determina il comportamento del sistema di posta nei confronti della vostra posta. Può avere una sola
linea con un indirizzo di posta elettronica pienamente qualificato. In tal caso il sistema invierà tutta
la vostra posta a quell'indirizzo. Per esempio, noleggiando dello spazio per un sito web potreste
desiderare di reindirizzare la posta con destinatario il webmaster al vostro account personale per non
sprecare spazio su disco. Il .forward del webmaster potrebbe apparire così:
L'impiego dell'inoltro della posta è utile anche per evitarvi di dover controllare diverse caselle
postali: potete infatti fare in modo che ogni indirizzo punti ad un account centralizzato e facilmente
accessibile.
Potete anche domandare all'amministratore di sistema di definire un inoltro per voi nel file locale di
alias di posta, come quando un account è stato chiuso ma la posta elettronica rimane attiva per un
po' di tempo.
Link simbolici multipli possono avere nomi differenti, come, ad esempio, un collegamento può
essere chiamato monfichier nella directory di un utente e miolink in quella di un altro.
Svariati collegamenti (con nomi diversi) al medesimo file possono coesistere nella stessa directory.
Ciò capita frequentemente nella directory /lib: dando il comando
ls l /lib
vedrete che questa directory è piena di link che puntano agli stessi file. Quest'ultimi vengono creati
affinché i programmi che ricercano un nome non restino bloccati ma vengano indirizzati al
138
Introduzione a Linux
corretto/corrente nome delle librerie di cui hanno bisogno.
cindy:~> ulimit −a
core file size (blocks) 0
data seg size (kbytes) unlimited
file size (blocks) unlimited
max locked memory (kbytes) unlimited
max memory size (kbytes) unlimited
open files 1024
pipe size (512 bytes) 8
stack size (kbytes) 8192
cpu time (seconds) unlimited
max user processes 512
virtual memory (kbytes) unlimited
Cindy non è una sviluppatrice e non si cura dei c.d. core dump, contenenti le informazioni di debug
di un programma. Se vi servono i core dump, potete impostarne le dimensioni utilizzando il
comando ulimit. Leggete le pagine Info dedicate a Bash per una spiegazione dettagliata.
Di conseguenza abbiamo degli strumenti che lavorano sui file compressi, scompattandoli solo in
memoria. Il file compresso originario resta nel disco rigido così com'è. Molti sistemi supportano
zgrep, zcat, bzless ed altri in modo da prevenire azioni di decompressione/compressione non
necessarie. Osservate la vostra directory dei file binari di sistema e le pagine Info.
Guardate il Capitolo 9 per maggiori informazioni sulla effettiva compressione dei file e per esempi
di creazione di archivi.
139
Introduzione a Linux
utilità che hanno necessità delle informazioni su di voi per svolgere un buon servizio.
Di quali altre informazioni necessitano i programmi oltre a quelle sui percorsi e sulle directory
personali?
Molti programmi vogliono conoscere il tipo di terminale che state adoperando; tale informazione
viene conservata nella variabile TERM. In modalità testuale costituirà l'emulazione di terminale
linux, in modalità grafica userete probabilmente xterm. Molti programmi desiderano conoscere
qual'è il vostro editor preferito, nel caso che debbano avviare un editor in un sottoprocesso. La shell
che state utilizzando viene registrata nella variabile SHELL, il tipo di sistema operativo in OS e così
via. Un elenco di tutte le variabili correntemente definite per la vostra sessione può essere
visualizzato inserendo il comando printenv.
Le variabili ambientali sono gestite dalla shell. Al contrario delle normali variabili di shell, quelle
d'ambiente vengono ereditate da qualsiasi programma che avviate, compresa un'altra shell. Ai nuovi
processi viene assegnata una copia di queste variabili, copia che essi potranno leggere, modificare e
passare a loro volta ai propri processi figli.
Non c'è nulla di speciale nei nomi delle variabili se non che quelle comuni sono in lettere maiuscole
per convenzione. Potete assegnare qualsiasi nome vogliate, sebbene esistano delle variabili standard
abbastanza importanti da essere le stesse in ogni sistema Linux, come PATH e HOME.
Se volete modificare il contenuto di una variabile in un modo che sia utile agli agli altri programmi,
dovete esportare il nuovo valore dal vostro ambiente a quello che sta eseguendo tali programmi. Un
banale esempio è l'esportazione della variabile PATH. Potete dichiararla come segue per essere in
grado di giocare con il programma di simulazione di volo che si trova in
/opt/FlightGear/bin:
debby:~> PATH=$PATH:/opt/FlightGear/bin
Ciò istruisce la shell a non cercare i programmi soltanto nel percorso corrente ($PATH) ma anche
nella directory aggiuntiva /opt/FlightGear/bin.
Comunque, finché il nuovo valore della variabile PATH non è noto all'ambiente, le cose non
funzionano:
debby:~> runfgfs
bash: runfgfs: command not found
140
Introduzione a Linux
L'esportazione delle variabile si esegue usando il comando interno alla shell export:
debby:~> runfgfs
−−flight simulator starts−−
Con Bash normalmente questo si fa con un'unica mossa elegante:
export VARIABILE=valore
La stessa tecnica si utilizza per la variabile MANPATH, che dice al comando man dove cercare le
pagine man compresse. Se viene aggiunto del software nuovo al sistema in directory nuove o strane,
la sua documentazione si troverà probabilmente anch'essa in una inusuale directory. Se desiderate
leggere le pagine man del nuovo software, estendete la variabile MANPATH:
Potete tralasciare la ribattitura di questo comando in ogni finestra che aprite aggiungendolo in uno
dei vostri file di impostazione della shell (v. Sezione 7.2.2.).
Tabella 71. Comuni variabili ambientali
Nome della variabile Informazioni contenute
DISPLAY usato dal sistema X Window per identificare il server di display
DOMAIN nome di dominio
EDITOR mantiene l'editor di linea favorito
HISTSIZE misura in numero di linee del file history di shell
HOME percorso della vostra directory personale
HOSTNAME nome host locale
INPUTRC locazione del file di definizioni delle periferiche di input come la tastiera
LANG lingua preferita
LD_LIBRARY_PATH percorsi di ricerca delle librerie
LOGNAME nome di login
MAIL posizione della vostra cartella di posta in arrivo
MANPATH percorsi di ricerca delle pagine man
141
Introduzione a Linux
Nome della variabile Informazioni contenute
OS stringa che descrive il sistema operativo
OSTYPE maggiori informazioni su versione, ecc...
usata dai programmi come man che devono sapere cosa fare nel caso in
PAGER
cui l'output sia più di una finestra di terminale
PATH percorsi di ricerca dei comandi
PS1 prompt primario
PS2 prompt secondario
PWD Present Working Directory, ovvero la directory in cui ci si trova
SHELL shell corrente
TERM tipo di terminale
UID ID utente (User ID)
USER(NAME) nome utente
VISUAL il vostro editor a tutto schermo preferito
XENVIRONMENT posizione delle vostre impostazioni personali per il comportamento di X
XFILESEARCHPATH percorsi di ricerca delle librerie grafiche
Molte variabili non solo sono predefinite ma anche preimpostate, utilizzando i file di
configurazione. Discuteremo di ciò nella prossima sezione.
Autenticandosi in una shell di login interattiva, login compirà l'autenticazione, imposterà l'ambiente
e avvierà la vostra shell. Nel caso di bash il passo successivo è la lettura del profile generale da
/etc, se esistente. Poi bash cercherà ~/bash_profile, ~/.bash_login e ~/.profile,
in questa successione, e leggerà ed eseguirà i comandi dal primo che esiste ed è leggibile. Se non
esiste, si applicherà /etc/bashrc.
Quando termina una shell di login, bash legge ed esegue i comandi dal file ~/.bash_logout, se
esiste.
Questa procedura viene spiegata dettagliatamente nelle pagine man dedicate a login e a bash.
142
Introduzione a Linux
# Path manipulation
if [ `id −u` = 0 ] && ! echo $PATH | /bin/grep −q "/sbin" ; then
PATH=/sbin:$PATH
fi
Queste linee controllano il percorso da impostare: se root apre una shell (user ID 0), viene
controllato che /sbin, /usr/sbin e /usr/local/sbin siano nel percorso. Se così non
fosse, esse verrebbero aggiunte. Si controlla per tutti che /usr/X11R6/bin sia nel percorso.
Tutta la spazzatura finisce in /dev/null se l'utente non cambia questa impostazione.
USER=`id −un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
Qui sono assegnati i valori appropriati alle variabili globali.
Se la variabile INPUTRC non è impostata e non esiste .inputrc nella directory personale
dell'utente, allora viene caricato il comune file di controllo dell'input.
143
Introduzione a Linux
Vengono esportate tutte le variabili, cosicché esse sono a disposizione degli altri programmi che
richiedono informazioni sul vostro ambiente.
for i in /etc/profile.d/*.sh ; do
if [ −r $i ]; then
. $i
fi
done
unset i
Tutti gli script di shell leggibili dalla directory /etc/profile.d vengono letti ed eseguiti.
Questi svolgono azioni come abilitare colorls, creare l'alias vi a vim, impostare le variabili locali,
ecc. La variabile temporanea i viene disattivata per impedire che disturbi il comportamento della
shell più tardi.
Poi bash cerca .bash_profile nella directory personale dell'utente:
Questo file molto chiaro istruisce la vostra shell a leggere per prima cosa ~/.bashrc e poi
~/.bash_login. Troverete il comando interno alla shell source regolarmente quando lavorate in
un ambiente di shell: si usa per applicare i cambiamenti della configurazione all'ambiente corrente.
144
Introduzione a Linux
Con la disconnessione vengono eseguiti i comandi in ~/.bash_logout, i quali possono, per
esempio, cancellare il terminale, in modo che abbiate una finestra pulita all'uscita di una sessione
remota o nell'abbandonare la console di sistema:
Diamo un'occhiata più approfondita a come funzionano questi script nella prossima sezione. Tenete
info bash a portata di mano.
Comunque, prima di cominciare, salveremo il nostro attuale prompt in un'altra variabile ambientale:
145
Introduzione a Linux
Cambiando ora il prompt, dando per esempio il comando PS1="->", potremo sempre ritornare a
quello originario con il comando PS1=$MYPROMPT. Naturalmente, lo ritroverete anche alla
riconnessione tutte le volte che vi gingillerete appena con il prompt nella linea di comando ed
eviterete di inserirlo in un file di configurazione della shell.
Le variabili vengono esportate in modo che anche i comandi eseguiti successivamente conoscano
l'ambiente. La linea di configurazione del prompt preferito è meglio metterla nel file di
configurazione ~/.bashrc della vostra shell.
Se lo desiderate, i prompt possono eseguire script di shell e comportarsi diversamente a seconda
delle diverse condizioni. Potete avere pure il prompt che suona una musica ogni volta che date un
comando, sebbene ciò diviene quasi subito fastidioso. Maggiori informazioni si possono trovare nel
BashPrompt HOWTO.
146
Introduzione a Linux
nomefile ARGOMENTI
equivale all'esecuzione di
bash nomefile ARGOMENTI
se 'nomefile' è uno script di shell eseguibile. Tale sottoshell reinizializza se stessa in modo che il
risultato è come se fosse stata invocata una nuova shell per interpretare lo script, con l'eccezione che
le posizioni dei comandi registrate dalla genitrice (v. hash nelle pagine Info) vengono mantenute
dalla figlia.
Molte versioni di UNIX rendono ciò parte del meccanismo di esecuzione di un comando del sistema
operativo. Se la prima riga di uno script comincia con i due caratteri '#!', il resto della riga specifica
un interprete per il programma. Così potete indicare bash, awk, perl o qualche altro interprete o
shell e scrivere il resto del file di script in quel linguaggio.
Gli argomenti per l'interprete consistono in un singolo argomento opzionale dopo il nome
dell'interprete nella prima linea del file di script, seguito dal nome del file di script e poi dai
rimanenti argomenti. Bash svolgerà questa azione nei sistemi operativi che non la gestiscono da loro
stessi.
Spesso gli script di Bash iniziano con '#!/bin/bash' (supponendo che Bash sia stata installata in
'/bin'), poiché ciò assicura che Bash verrà utilizzata per interpretare lo script, anche se eseguito sotto
un'altra shell.
147
Introduzione a Linux
#!/bin/bash
echo "Ciao $USER"
Di fatto lo script è costituito da un solo comando, echo, che usa il valore ($) della variabile
ambientale USER per stampare una frase personalizzata con il nome dell'utente che fornisce il
comando.
Un altro “monolinea”, impiegato per mostrare gli utenti connessi:
#!/bin/bash
who | cut −d " " −f 1 | sort −u
Qui di seguito c'è uno script formato da un numero maggiore di linee che utilizzo per eseguire
copie di sicurezza di tutti i file in una directory. Per prima cosa lo script crea un elenco di tutti i file
presenti nella directory corrente e lo mette nella variabile LIST. Poi imposta il nome della copia per
ciascun file ed infine copia il file. Per ogni file viene stampato un messaggio:
Inserendo solo una linea come mv * *.old non funziona, come noterete sperimentandola su un
gruppo di file di prova. Un comando echo è stato aggiunto per mostrare dell'attività: esso torna
normalmente utile quando uno script non funziona. Inseritene uno dopo ciascun passaggio dubbio e
scoprirete l'errore in un attimo.
La directory /etc/rc.d/init.d contiene una quantità di esempi. Diamo un occhio a questo script che
controlla il server immaginario ICanSeeYou:
#!/bin/sh
# description: ICanSeeYou allows you to see networked people
# process name: ICanSeeYou
# pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid
# config: /etc/ICanSeeYou.cfg
# Source function library.
. /etc/rc.d/init.d/functions
# See how (with which arguments) we were called.
case "$1" in
start)
echo −n "Starting ICanSeeYou: "
daemon ICanSeeYou
echo
touch /var/lock/subsys/ICanSeeYou
;;
stop)
echo −n "Shutting down ICanSeeYou: "
killproc ICanSeeYou
echo
148
Introduzione a Linux
rm −f /var/lock/subsys/ICanSeeYou
rm −f /var/run/ICanSeeYou/ICanSeeYou.pid
;;
status)
status ICanSeeYou
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
Per prima cosa con il comando . (punto) viene caricato un gruppo di funzioni di shell, usate da quasi
tutti gli script di shell in /etc/rc.d/init.d. Dopo viene dato un comando case che definisce
quattro modi diversi di esecuzione dello script: un esempio potrebbe essere IcanSeeYou start. La
decisione su quale case eseguire dipende dalla lettura del primo argomento dello script con
l'espressione $1.
Quando viene dato un input non corretto, viene eseguito il case di base, segnato con un asterisco,
con cui lo script restituisce un messaggio di errore. La lista dei case termina con l'istruzione esac.
Nel case start il programma server viene avviato come demone e gli vengono assegnati un ID di
processo e un lock. Nel case stop il processo server viene rintracciato e fermato con rimozione del
lock e del PID. Opzioni, come quella daemon, e funzioni, come killproc, vengono definite nel
file /etc/rc.d/init.d/functions. Questa impostazione è specifica delle distribuzioni
usate in questo esempio. Gli initscript del vostro sistema potrebbero usare altre funzioni, definite in
altri file, o nemmeno una.
In caso di successo lo script restituisce un codice d'uscita 0 al processo genitore.
Questo script è un bell'esempio di impiego delle funzioni, che rendono lo script più facile da leggere
e il lavoro viene svolto più velocemente. Osservate che esse usano sh invece di bash per essere utili
ad un insieme più esteso di sistemi. In un sistema Linux invocare bash come sh è la conseguenza
della shell che gira in modalità compatibile POSIX.
Le pagine man di bash contengono maggiori informazioni circa le combinazioni di comandi, i cicli
for e while e le espressioni regolari, come pure esempi. Un comprensibile corso di Bash, con
esercizi, destinato ad amministratori di sistema e utenti avanzati, è disponibile su
http://tille.xalasys.com/training/bash/, dalla stessa autrice di questa guida “Introduzione a Linux”.
La descrizione dettagliata delle caratteristiche ed applicazioni di Bash si trova nella guida di
riferimento Advanced Bash Scripting.
149
Introduzione a Linux
7.3.1. Introduzione
L'utente medio potrebbe non preoccuparsi eccessivamente delle proprie impostazioni di login, ma
Linux offre un'ampia varietà di appariscenti gestori di finestre e desktop da usare sotto X, l'ambiente
grafico. L'impiego e la configurazione di gestori di finestre e desktop sono chiari e possono anche
assomigliare agli ambienti standard MS Windows, MacIntosh o UNIX CDE, sebbene molti utenti
Linux preferiscano desktop più colorati e gestori di finestre più fantasiose. Qui non vogliamo
trattare della configurazione specifica degli utenti. Semplicemente sperimentate e leggete la
documentazione usando le funzioni interne di Aiuto fornite da questi gestori e così procederete
bene.
Daremo comunque uno sguardo più attento al sistema che sta alla base.
X supporta la sovrapposizione gerarchica di sottofinestre ed operazioni di testo e grafica, su schermi
sia monocromatici che a colori. Il numero dei programmi clienti X che usano il server X è
abbastanza ampio. Alcuni dei programmi forniti nella distribuzione essenziale di X Consortium
comprendono:
● xterm: un emulatorre di terminale
● twm: un gestore di finestre minimalista
● xdm: un gestore di schermi
● xconsole: un programma di redirezione della console
● bitmap: un editor di bitmap
● xauth, xhost e iceauth: programmi di controllo degli accessi
● xset, xmodmap e molti altri: programmi per impostare le preferenze dell'utente
● xclock: un orologio
● xlsfonts e altri: un visualizzatore di font, utilità per elencare informazioni circa i font, le
finestre e gli schermi
● xfs: un server di font
● ...
Ci riportiamo nuovamente alle pagine man di questi comandi per dettagliate informazioni. Maggiori
150
Introduzione a Linux
spiegazioni sulle funzioni disponibili possono essere ricercate nel manuale Xlib – C language X
Interface che trovate nella vostra distribuzione, nelle specifiche di X Window System Protocol e nei
vari manuali e testi degli X toolkit. la directory /usr/share/doc contiene riferimenti a tali
documenti ed a molti altri ancora.
Molte altri programmi di utilità, gestori di finestre, giochi, toolkit e gadget sono inclusi come
contributi degli utenti nella distribuzione di X Consortium, oppure sono disponibili su Internet
mediante FTP anonimo. Buoni posti dove incominciare sono http://www.x.org e
http://www.xfree.org.
Inoltre tutte le applicazioni grafiche, come i vostri browser, programmi di posta elettronica e di
visualizzazione di immagini, strumenti per la produzione di suoni e così via, sono tutti clienti del
vostro server X. Notate che nelle normali operazioni in modalità grafica i clienti X ed il server X
girano sotto Linux nella stessa macchina.
nomehost:numerodisplay.numeroscreen
Tale informazione viene utilizzata dall'applicazione per stabilire come dovrà connettersi al server X
e che schermo dovrà usare normalmente (su display con molti schermi):
● nomehost: rappresenta il nome della macchina cliente a cui è connesso fisicamente il
display. Se non viene indicato, verrà usata la modalità più efficiente di comunicare ad un
server sulla stessa macchina.
● numerodisplay: la parola “display” viene abitualmente usata per riferirsi ad un gruppo di
monitor che condividono tastiera e puntatore (mouse, tavoletta grafica, ecc...). Molte
workstation tendono ad avere solo una tastiera e perciò un unico display. D'altro canto
sistemi multiutente più grandi hanno spesso diversi display cosicché più di una persona alla
volta può lavorare in grafica. Per evitare equivoci ad ogni display di una macchina viene
assegnato un numero di display (iniziando dallo 0) quando il server X di quel display è stato
avviato. Il numero di display deve essere sempre assegnato in un nome di display.
● numero di screen: alcuni display condividono una sola tastiera ed un unico mouse fra due o
più monitor. Siccome ogni monitor ha il proprio set di finestre, a ciascuno screen viene
attribuito un numero di screen (cominciando dallo 0) all'avvio del server X per il display
corrispondente. Se non viene indicato un numero di screen, si userà lo screen 0.
Nei sistemi POSIX il nome del display di partenza viene conservato nella variabile ambientale
DISPLAY. Tale variabile è impostata automaticamente dall'emulatore di terminale xterm.
Comunque, quando vi autenticate in un'altra macchina di una rete, potete aver bisogno di impostare
manualmente DISPLAY per puntare al vostro display (v. Sezione 10.3.3.).
Maggiori informazioni possono essere scovate nelle pagine man di X
151
Introduzione a Linux
Dal momento che i gestori di finestre sono normali (anche se complessi) programmi clienti, può
essere costruito un tipo diverso di interfaccia utente. La distribuzione di X Consortium viene fornita
di un gestore di finestre chiamato twm, sebbene molti utenti preferiscano qualcosa di più fantasioso,
risorse di sistema permettendo. Sawfish e Enlightenment sono esempi popolari che consentono a
ciascun utente di avere un desktop intonato all'umore ed allo stile.
Un gestore di desktop (desktop manager) consente di usare un gestore di finestre oppure un altro per
definire in modo adeguato il vostro desktop grafico, con menu a barre, menu a tendine, messaggi
informativi, un orologio, un gestore di programmi e di file, ecc... Fra i desktop manager più in voga
troviamo Gnome e KDE, che girano entrambi in quasi tutte le distribuzioni Linux ed in molti altri
sistemi UNIX.
Applicazioni KDE con Gnome/applicazioni Gnome con KDE
Non è necessario avviare il desktop in KDE per far girare delle applicazioni KDE. Se
avete installato le librerie KDE (pacchetto kdelibs), potete eseguire queste applicazioni
dai menu Gnome o farle partire da un terminale di Gnome.
Far girare applicazioni Gnome in ambiente KDE è un attimo più difficoltoso perché
sotto Gnome non esiste un insieme unico di librerie di base. Comunque le dipendenze e
gli altri pacchetti extra che potreste dover installare vi verranno segnalati al momento
dell'avvio o dell'installazione di tali applicazioni.
Se vedete che il file /etc/X11/XF86Config è presente nel vostro sistema, una sua descrizione
può essere rintracciata nelle pagine Info o man con XF86Config.
A causa delle licenze adottate da Xfree86, i sistemi più recenti normalmente sono forniti con la
distribuzione X.Org del server e degli strumenti X. Qui il file principale di configurazione è
xorg.conf, anche questo solitamente in /etc/X11. Il file consta di un certo numero di sezioni
disposte in qualsiasi ordine. Queste contengono informazioni circa il vostro monitor, la scheda
video, la configurazione dello schermo, la tastiera, ecc... Come utenti, non dovete preoccuparvi
eccessivamente di cosa c'è in quel file, dal momento che ogni cosa viene normalmente impostata
quando si installa il sistema.
Se dovete cambiare le impostazioni del server grafico, potete comunque mandare in esecuzione gli
152
Introduzione a Linux
strumenti di configurazione o modificare i file di configurazione che determinano l'infrastruttura
per l'uso del server Xfree86. Date uno sguardo alle pagine man per maggiori informazioni; la vostra
distribuzione potrebbe avere i suoi propri strumenti. Dal momento che una configurazione errata
potrebbe causare della spazzatura illeggibile in modalità grafica, sarebbe consigliabile fare una
copia di backup del file di configurazione prima di provare a modificarlo, tanto per essere sicuri.
XkbdLayout “us”
Questo è di base. Per adeguarlo alle vostre impostazioni locali, modificatelo sostituendo il valore tra
le virgolette con uno qualsiasi dei nomi elencati nelle sottodirectory della vostra directory
keymaps. Se non riuscite a trovare le mappature dei tasti, provate a far apparire nel vostro sistema
la loro posizione dando il comando
locate keymaps
E' possibile combinare le impostazioni degli schemi, come in questo esempio:
Xkblayout "us,ru"
Fate una copia di sicurezza del file /etc/X11/XF86Config prima di modificarlo! Per fare ciò
avete bisogno dell'account di root.
Disconnettetevi e poi riconnettetevi per ricaricare le impostazioni di X.
La Gnome Keyboard Applet vi permette di passare in tempo reale tra gli schemi; non sono richiesti
speciali permessi per l'uso di questo programma. KDE possiede uno strumento analogo per passare
da una configurazione di tastiera all'altra.
export INPUTRC="/etc/inputrc"
153
Introduzione a Linux
al file /etc/bash.
Date uno sguardo al vostro manuale di sistema e alla documentazione allegata al pacchetto NTP.
Molti gestori di desktop comprendono strumenti per la regolazione dell'ora di sistema,
consentendovi di aver accesso all'account di amministratore di sistema.
Per impostare il fuso orario (time zone) corretto, potete servirvi dei comandi tzconfig o timezone.
L'informazione sul fuso orario viene normalmente data durante l'installazione della vostra
macchina. Molti sistemi hanno degli strumenti specifici della distribuzione per configurarlo: date
uno sguardo alla vostra documentazione di sistema.
7.4.4. La lingua
Se preferite piuttosto ricevere i messaggi dal sistema in olandese o in francese (ndt. in italiano),
dovete impostare le variabili ambientali LANG e LANGUAGE, impostando così il supporto per la
localizzazione al linguaggio desiderato ed eventualmente ai font legati ai segni convenzionali di tale
linguaggio.
Notate che in molti sistemi l'impostazione tipo tende ad essere en_US.UTF8 in questo periodo. Ciò
non costituisce un problema poiché i sistemi che ce l'hanno di base sono forniti anche di tutti i
programmi che supportano tale codifica. Così vi può modificare tutti i file del vostro sistema, cat
non si comporta in modo strano, ecc...
I problemi sorgono quando vi collegate ad un sistema più vecchio che non supporta questa codifica
dei font, oppure quando aprite un file codificato UTF8 in un sistema che supporta solo i tipi di
carattere ad 1byte. Il programma di utilità recode potrebbe fornirvi un buon servizio per convertire
i file da un insieme di caratteri ad un altro. Leggete le pagine man per una panoramica sulle
caratteristiche e sull'uso. Un'altra soluzione potrebbe essere quella di lavorare temporaneamente con
una diversa definizione di codifica impostando la variabile ambientale LANG:
154
Introduzione a Linux
LANG=en_US.UTF−8
debby:~> export LANG=en_US
7.5.1. In generale
Dopo l'installazione di Linux, molte persone si stupiscono alla vista del computer funzionante e
utilizzabile. Parecchie distribuzioni contengono un ampio supporto per le schede video e di rete, per
monitor ed altre periferiche esterne, cosicché di solito non serve installare driver extra. Pure
strumenti comuni come le suite da ufficio, i navigatori web, i clienti di posta elettronica e così via,
sono compresi nelle maggiori distribuzioni maggiori. Anche così una prima installazione potrebbe
non corrispondere alle vostre esigenze.
Un pacchetto RPM consiste in un archivio di file e metadati utilizzati per installare e cancellare i file
d'archivio. I metadati includono script di aiuto, attributi dei file, e informazioni descrittive del
pacchetto. I pacchetti sono di due tipi: binari (usati per incapsulare il software da installare) e dei
155
Introduzione a Linux
sorgenti (che contengono il codice sorgente e le regole necessari a produrre pacchetti binari).
Molte altre distribuzioni supportano i pacchetti RPM, fra cui le popolari RedHat Enterprise Linux,
Mandriva (prima Mandrake), Fedora Core e SuSE Linux. A parte i consigli della vostra
distribuzione, vi converrà leggere man rpm.
Numerosi pacchetti vengono semplicemente installati con l'opzione di aggiornamento, -U, che il
pacchetto sia già installato o meno. Il pacchetto RPM contiene una versione completa del
programma che sovrascrive le versioni esistenti o installa come uno nuovo. L'uso tipico è il
seguente:
rpm −Uvh /path/to/rpm−package(s)
L'opzione -v genera un output più descrittivo e -h fa in modo che rpm stampi una barra di
avanzamento.
I pacchetti del nuovo kernel vengono installati con l'opzione -i, che evita di sovrascrivere le
versioni esistenti del pacchetto. In questo modo sarete ancora in grado di avviare il vostro sistema
con il vecchio kernel se quello nuovo non funziona.
Potete pure usare rpm per controllare se un pacchetto è installato nel vostro sistema:
Oppure potete scoprire quale pacchetto contiene un certo file od eseguibile:
Notate che non vi serve l'accesso con i privilegi di amministratore per interrogare mediante rpm il
database di RPM. Dovete essere root solo quando aggiungete, modificate o cancellate pacchetti.
Di seguito un ultimo esempio che dimostra come si disinstalla un pacchetto ricorrendo a rpm:
156
Introduzione a Linux
Osservate che la disinstallazione di base non è quella "verbosa": è normale che non vediate molto di
ciò che sta succedendo. In caso di dubbi, usate di nuovo rpm -qa per verificare che il pacchetto sia
stato rimosso.
Il sito web di Debian contiene tutte le informazioni che vi servono, compreso un "dselect
Documentation for Beginners".
Seguendo le più recenti novità, il formato dei pacchetti di Debian sta divenendo sempre più
popolare. Al momento di questo scritto, lo usano 5 delle distribuzioni top10. Anche aptget (v.
Sezione 7.5.3.2.) sta diventando estremamente popolare pure presso i sistemi nonDEB.
Gli aggiornamenti per molti sistemi Linux normalmente si possono trovare in un vicino sito che fa
da mirror della vostra distribuzione. Elenchi dei siti che offrono tale servizio si possono trovare nel
sito web della vostra distribuzione (v. Appendice A).
Gli aggiornamenti dovrebbero essere effettuati regolarmente (ogni giorno, se possibile), ma ogni
157
Introduzione a Linux
due settimane potrebbe essere un ragionevole inizio. Realmente dovreste tentare di avere la versione
più recente della vostra distribuzione, dal momento che Linux cambia costantemente. Come
abbiamo accennato in precedenza, funzioni, miglioramenti e correzioni di errori nuovi vengono
forniti a ritmo serrato e qualche volta vengono pure sistemati problemi di sicurezza.
La buona notizia è che la maggior parte delle distribuzioni Linux fornisce strumenti in modo che
non dovrete quotidianamente aggiornare a mano decine di pacchetti. Le sezioni seguenti vi
offriranno una panoramica dei "gestori di pacchetti". C'è molto di più su questo argomento, persino
aggiornamenti regolari dei pacchetti sorgenti sono gestibili automaticamente; noi elencheremo
soltanto i sistemi maggiormente noti. Fate sempre riferimento alla documentazione della vostra
particolare distribuzione per le procedure consigliate.
7.5.3.2. APT
Advanced Package Tool è un sistema di gestione dei pacchetti del software. Lo strumento a linea di
comando per maneggiare i pacchetti è aptget, che arriva fornito di una eccellente pagina man che
descrive come installarli, aggiornarli singolarmente o nell'intera distribuzione. APT trae le sue
origini dalla distribuzione Debian GNU/Linux, di cui rappresenta il normale gestore di pacchetti
Debian. APT è stato modificato per supportare anche i pacchetti RPM. I maggiori vantaggi di APT
consistono nell'essere libero e flessibile nell'impiego: vi permetterà di predisporre sistemi simili a
quelli specifici della distribuzione (e, in alcuni casi, commerciali) elencati nelle prossime sezioni.
Generalmente, usando per la prima volta aptget, vi servirà un indice di tutti i pacchetti disponibili.
Per ottenere ciò si usa il comando
apt-get update
Successivamente potrete usare aptget per aggiornare il vostro sistema:
apt-get upgrade
Effettuare spesso questa operazione è un modo semplice per mantenere il vostro sistema al passo
con i tempi e perciò sicuro.
A prescindere da questo impiego generico, aptget è anche molto veloce nell'installare singoli
pacchetti. Funziona così:
158
Introduzione a Linux
Osservate l'opzione -c nel comando su, che indica alla shell di root di eseguire solo questo
comando e di ritornarne poi nell'ambiente dell'utente. In questa maniera non vi scorderete di
chiudere l'account di root.
Maggiori informazioni si possono trovare in APTHOWTO.
Yellowdog's Updater Modifier (yum) è un altro strumento che recentemente è divenuto più
popolare. Si tratta di un programma interattivo ma di aggiornamento automatizzato per installare,
aggiornare o rimuovere pacchetti RPM in un sistema. E' lo strumento di elezione nei sistemi Fedora.
Mandrake Linux e Mandriva offrono gli strumenti chiamati URPMI, un insieme di programmi di
interfaccia che rendono più semplice l'installazione di nuovo software per l'utente. Tali strumenti
mettono insieme RPMDrake e MandrakeUpdate per fornire ogni cosa che serve per una facile
installazione e disinstallazione dei pacchetti software. MandrakeOnline offre una estesa varietà di
servizi e può comunicare automaticamente agli amministratori quando si rendono disponibili degli
aggiornamenti per un particolare sistema Mandrake. Guardate, tra gli altri, man urpmi per
maggiori informazioni.
Anche le suite per desktop KDE e Gnome hanno le loro specifiche (e grafiche) versioni dei gestori
di pacchetti.
159
Introduzione a Linux
Poi create un sistema a doppio avvio, che vi consentirà di scegliere quale kernel avviare,
modificando il vostro file di configurazione del boot loader, grub.conf. Questo è un semplice
esempio:
Dopo che il nuovo kernel è stato collaudato positivamente, potete rimuovere dal file di
configurazione di GRUB le linee che riguardano quello vecchio, anche se sarebbe preferibile
attendere un paio di giorni solo per essere sicuri.
mount /dev/cdrom /mnt/cdrom
In alcuni sistemi solo root può montare delle periferiche rimovibili; ciò dipende dalla
configurazione.
Per consentirne l'uso in automatico, il lettore CD di solito ha una linea in /etc/fstab, il quale
elenca i file system ed i loro punti di montaggio, costituenti il vostro albero del file system. Si tratta
di una riga simile a questa:
160
Introduzione a Linux
Ciò indica che il sistema sarà in grado di comprendere il comando mount /mnt/cdrom. L'opzione
noauto significa che qui i CD non vengono montati nel momento dell'avvio.
Potete anche provare a premere con il tasto di destra del mouse sull'icona del CD nel desktop per
montare il CD stesso se il vostro gestore di file non lo fa per voi. Potete controllare se ha funzionato
dando il comando mount senza argomenti:
7.5.5.2. Usare il CD
Dopo aver montato il CD, siete in grado di cambiare directory, di solito al punto di montaggio
/mnt/cdrom, dove potete accedere al contenuto del CDROM. Utilizzate gli stessi comandi per
muovervi tra file e directory come fareste con i file nel disco rigido.
7.5.5.3. Espellere il CD
Per far uscire il CD dal lettore dopo il suo utilizzo, il file system del CD dovrebbe non essere in uso.
Pur trovandosi in una sola delle sottodirectory del punto di montaggio (nel nostro esempio
/mnt/cdrom), sarà considerato come file system in uso, cosicché dovrete uscire da là. Per esempio,
fatelo battete cd senza argomenti (vi riporterà nella vostra directory personale. Dopo di ciò potete
sia usare il comando
umount /mnt/cdrom
oppure
eject cdrom
Drive bloccati
MAI forzare i drive. Il trucco della graffetta è una pessima idea perché, anche se viene
espulso il CD, il vostro sistema continuerà a credere che il CD sia ancora al suo posto
dal momento che non sono state seguite le procedure normali. E' assai probabile che
dovrete riavviare per far tornare il sistema in uno stato consistente.
Se continuate ad avere messaggi di "periferica occupata", controllate per prima cosa che
tutte le sessioni di shell abbiano rilasciato il file system del CD e che non ci siano più
applicazioni grafiche che lo stiano usando ancora. In caso di dubbi, usate lo strumento
lsof per rintracciare il processo che sta utilizzando la risorsa del CD.
7.6. Sommario
Quando tutto è al suo posto significa che già metà del lavoro è fatto.
Anche se tenere in ordine è importante, altrettanto importante è il sentirsi "a casa" nel proprio
ambiente, sia grafico che testuale. L'ambiente di testo è controllato attraverso i file di impostazione
161
Introduzione a Linux
della shell. L'ambiente grafico, invece, dipende in primo luogo dalla configurazione del server X, su
cui numero altre applicazioni sono state costruite, come i gestori di finestre e dei desktop e le
applicazioni grafiche, ciascuna con i propri file di configurazione. Dovreste leggere la
documentazione specifica del sistema e dei programmi per scoprire come configurarli.
Le impostazioni di regionalizzazione, come quella di tastiera, l'installazione di font appropriati e del
supporto della lingua è meglio effettuarli al momento dell'installazione.
Il software viene gestito sia automaticamente che manualmente utilizzando un sistema di pacchetti.
7.7. Esercizi
7.7.2. L'ambiente grafico
● Provate tutti i tasti del mouse in zone diverse (terminale, sfondo, barra delle funzioni).
● Esplorate i menu.
● Personalizzate la vostra finestra di terminale.
● Usate i bottoni del mouse per copiare e incollare del testo da un terminale ad un altro.
● Scoprite come configurare il vostro gestore di finestre. Provate diversi spazi di lavoro
(schermi virtuali).
● Aggiungere una applet, come un analizzatore dei carichi, alla barra delle funzioni.
● Applicate un tema differente.
162
Introduzione a Linux
● Abilitate il cosiddetto sloppy focus, che si ha quando una finestra viene attivata passandoci
sopra il mouse, cosicché non vi serve cliccare la finestra per abilitarla all'uso.
● Selezionare un gestore di finestre differente.
● Disconnettetevi e selezionate un tipo di sessione diverso, tipo KDE se prima stavate usando
Gnome. Ripetete i passi precedenti.
163
Introduzione a Linux
Impostare il formato dei documenti
Vedere in anteprima i documenti prima di inviarli alla stampante
Scegliere una buona stampante che lavori con il vostro sistema Linux
Stampare file e controllare lo stato della stampante
Risolvere i problemi di stampa
Trovare la documentazione necessaria per installare una stampante
Dalla linea di comando usate i comandi lp o lpr.
lp file(s)
lpr file(s)
Questi comandi possono leggere da un incanalamento [pipe], cosicché potete stampare l'output di
comandi utilizzando
comando | lp
Esistono molte opzioni per regolare l'impostazione della pagina, il numero delle copie, la stampante
con cui volete stampare se ne avete più di una, la dimensione della carta, la stampa normale o quella
fronteretro se la vostra stampante la consente, i margini e così via. Leggete le pagine man per una
panoramica completa.
davy:~> lp /etc/profile
request id is davy@blob+253
Per vedere (query) la coda di stampa, utilizzate i comandi lpq o lpstat. Se inseriti senza argomenti,
164
Introduzione a Linux
mostrano i contenuti della coda di stampa preimpostata.
davy:~> lpq
blob is ready and printing
Rank Owner Job File(s) Total Size
active davy 253 profile 1024 bytes
davy:~> lpstat
blob−253 davy 1024 Tue 25 Jul 2006 10:20_01 AM CEST
lpstat -d
davy:~> lpstat -d
system default destination: blob
Qual'è lo stato della/e mia/e stampante/i?
lpstat -p
davy:~> lpstat -d
printer blob now printing blob−253. enabled since Jan 01 18:01
In ambiente grafico potete vedere apparire una finestra che vi comunica la cancellazione del
processo.
In ambiti maggiori, lpc può essere utilizzato per controllare molteplici stampanti. Guardate le Info
di ciascun comando.
Esistono molti strumenti di stampa ad interfaccia grafica (GUI) utilizzati come frontend di lp e la
maggior parte delle applicazioni grafiche hanno una funzione di stampa che ricorre a lp. Leggete le
funzioni interne di aiuto e la documentazione specifica dei programmi per maggiori informazioni.
Perché esistono due comandi per ogni operazione connessa alla stampa?
La stampa con UNIX e simili ha una lunga storia. Erano consueti due approcci piuttosto
differenti: lo stile BSD di stampa e quello SystemV. Per compatibilità, Linux con CUPS
supporta entrambi gli stili. Notate pure che lp non si comporta esattamente come lpr,
lpq ha qualche opzione diversa da lpstat e lprm è quasi, ma non del tutto, simile a
cancel. Non importa quali usate, basta che adoperiate quelli con cui vi ritrovate o che
potreste conoscere per precedenti esperienze con sistemi similUNIX.
165
Introduzione a Linux
I sistemi Linux moderni supportano la stampa diretta, senza alcuna formattazione da parte
dell'utente, di un ampio spettro di tipi di file: testo, PDF, PostScript e diversi formati di immagine
come PNG, JPEG, BMP e GIF.
Per quei formati di file che necessitano di impostazioni, Linux dispone in quantità di strumenti di
formattazione, come ad esempio i comandi pdf2p, fax2ps e a2ps, che convertono gli altri formati in
PostScript.
Esclusi questi strumenti a linea di comando, esistono molti programmi grafici di elaborazione testi.
Sono disponibili diverse suite da ufficio e molte sono gratuite. Queste svolgono la formattazione in
modo automatico al momento dell'invio di un processo di stampa. Solo per citarne alcune:
OpenOffice, Koffice, AbiWord, WordPerfect, ecc...
I seguenti sono linguaggi comuni in un contesto di stampa:
● groff: versione GNU del comando UNIX roff. Si tratta di un frontend del
sistema groff di impaginazione dei documenti. Normalmente lancia il comando
troff e un postprocessore adatto alla periferica selezionata. Permette la
generazione di file PotScript.
● TeX e il pacchetto di macro LaTeX: uno dei più largamente usati linguaggi di
marcatura per i sistemi UNIX. Solitamente avviato con tex, imposta il formato
dei file e restituisce in uscita la relativa rappresentazione (indipendente dalle
periferiche) del documento di composizione.
Le opere tecniche sono frequentemente scritte ancora in LaTeX perché supporta
le formule matematiche, sebbene siano stati compiuti degli sforzi da parte del
W3C (il World Wide Web Council) per includere tale funzionalità in altre
applicazioni.
● SGML e XML: sono degli analizzatori liberi disponibili per UNIX e Linux.
XML è SGML della prossima generazione, sta alla base del DocBook XML, un
sistema di documenti (per esempio, questo libro è scritto in XML).
Documentazione sulla stampa
Le pagine man contengono dei dati preformattati di troff che devono essere impaginati
prima di farli uscire dalla vostra stampante. La stampa si effettua usando l'opzione -t
del comando man:
166
Introduzione a Linux
man -t comando>comando-man.ps
Successivamente si stampa il file PostScript. Se è stata configurata una destinazione
predefinita di stampa per il vostro sistema/account, potete scrivere unicamente man -t
comando per inviare direttamente la pagina formattata alla stampante.
● File PostScript: gv (GhostView)
● File TeX: xdvi
● File PDF: xpdf o acroread, il visualizzatore Adobe disponibile anch'esso
gratuitamente.
● Nelle applicazioni, come Firefox o OpenOffice, normalmente potete selezionare
l'anteprima di Stampa da uno dei menu.
8.2.1. In generale
Fino ad un paio di anni fa, la scelta per gli utenti Linux era semplice: ognuno lanciava lo stesso
vecchio LPD, derivato dal codice di Net2 di BSD. In seguito divenne molto popolare LPRng, ma al
giorno d'oggi molte distribuzioni Linux moderne utilizzano CUPS, il Common UNIX Printing
System. CUPS è un'implementazione dell'Internet Printing Protocol (IPP), un protocollo simil
HTTP standard RFC che rimpiazza il venerando (e difettoso) protocollo LDP. CUPS viene
distribuito sotto GNU Public License ed è pure il sistema di stampa predefinito in MacOS X.
CUPS può anche essere configurato usando un'interfaccia web attiva alla porta 631 del vostro
computer. Per verificare se questa funzionalità è abilitata, provate a impostare la navigazione
internet su localhost:631/help.
167
Introduzione a Linux
consentirà una facile connessione di qualsiasi stampante collegabile ad una porta seriale, parallela o
USB, oltre a qualsiasi stampante in rete. CUPS vi permetterà una rappresentazione uniforme di tutti
i diversi tipi di stampanti per voi e le vostre applicazioni.
Le stampanti dotate solamente un driver Win9x potrebbero creare dei problemi se non hanno altro
supporto. In caso di dubbi verificate sull'HOWTO dedicato alla compatibilità hardware.
In passato la scelta migliore per voi avrebbe dovuto essere una stampante con supporto nativo di
PostScript nel firmware, dal momento che quasi tutto il software UNIX e Linux che è in grado di
produrre in uscita dati stampabili, lo fa in Postscript, il linguaggio d'elezione dell'industria editoriale
per il controllo delle stampanti. Le stampanti PostScript sono di solito un po' più costose ma sono
dotate di questo linguaggio di programmazione aperto, indipendente dalle periferiche, e perciò
sarete sempre certi al 100% che funzioneranno. Tuttavia ai nostri giorni l'importanza di questa
regola empirica sta scemando.
Ciò che potete tentare in quei casi, oppure nei casi in cui è configurato un driver sbagliato ed esce
solo spazzatura dalla vostra stampante, è di spegnere la stampante. Tuttavia potrebbe non essere
l'azione migliore in quanto potreste causare inceppamenti della carta ed altre irregolarità.
elly:~> lpq
Printer: lp@blob
Queue: 2 printable jobs
Server: pid 29998 active
Unspooler: pid 29999 active
Status: waiting for subserver to exit at 09:43:20.699
Rank Owner/ID Class Job Files Size Time
1 elly@blob+997 A 997 (STDIN) 129 09:42:54
2 elly@blob+22 A 22 /etc/profile 917 09:43:20
168
Introduzione a Linux
Molte stampanti ai nostri giorni hanno interfacce web che sono in grado di mostrare le informazioni
di stato battendo l'indirizzo IP nel vostro navigatore web:
Figura 81. Stato della stampante attraverso l'interfaccia web
L'interfaccia web di CUPS rispetto all'interfaccia web della stampante
Fate attenzione che questa non è l'interfaccia web e funziona solamente con quelle
stampanti che supportano tale funzionalità. Verificate la documentazione della vostra
stampante.
Se l'ID del vostro processo non è là e neppure sulla stampante, contattate il vostro amministratore di
sistema. Se questo ID invece è riportato nell'output, controllate che la stampante sia attualmente
attiva: se così è, aspettate soltanto, il vostro processo verrà eseguito nei tempi dovuti.
Se la stampante non stampa, verificate che abbia carta, controllate le connessioni fisiche sia
all'alimentazione elettrica che alla rete dei dati. Se ciò è a posto, la stampante potrebbe aver bisogno
di essere riavviata. Chiedete un consiglio al vostro amministratore di sistema.
Nel caso di una stampante di rete, provate a stampare da un altro host. Se la stampante è
raggiungibile dal vostro host personale (guardate il Capitolo 10 per il programma di utilità ping),
potete tentare di mettere il file impaginato su di essa, come file.ps in caso di stampante
PostScript, usando un cliente FTP. Se ciò funziona, la vostra stampante è configurata male. Se
invece non funziona, potrebbe essere che la stampante non comprenda il formato che le avete
169
Introduzione a Linux
inviato.
Il sito GNU/Linux Printing contiene più consigli e trucchi.
8.4. Sommario
Il servizio Linux di stampa è dotato di un complesso di strumenti per la stampa basati su quelli
standard UNIX LPD, che si tratti di un'implementazione SystemV o BSD. Sotto c'è un elenco dei
comandi relativi alla stampa.
Tabella 81. Comandi connessi con la stampa
Comando Significato
lpr o lp stampa file
lpq o lpstat interroga la coda di stampa
lprm o cancel rimuove processi di stampa
acroread visualizzatore PDF
groff strumento di impaginazione
gv visualizzatore PostScript
printconf configura stampanti
xdvi visualizzatore DVI
xpdf visualizzatore PDF
*2ps converte file in PostScript
8.5. Esercizi
Configurare e testare stampanti richiede la disponibilità di una almeno e di avere accesso all'account
di root. Se così è, potete provare a:
● installare la stampante usando la GUI [Interfaccia Grafica per l'Utente] del vostro sistema;
● stampare una pagina di prova usando la GUI;
● stampare una pagina di prova con il comando lp;
● stampare da un'applicazione, per esempio Mozilla o OpenOffice, scegliendo File>Stampa
dal menu;
● scollegare la stampante dalla rete o dal computer locale/server di stampa. Cosa succede se
provate a stampare qualcosa?
Gli esercizi seguenti possono essere svolti senza stampante o accesso di root.
● Provate a creare file PostScript da differenti file sorgenti (per esempio HTML, PDF, pagine
man). controllate i risultati con il visualizzatore gv.
● Verificate che il demone di stampa stia funzionando.
170
Introduzione a Linux
● Stampate i file in qualsiasi maniera. Cosa accade?
● Create un file Postscript usando Mozilla. Controllatelo con gv.
● Convertitelo in formato PDF. Controllatelo con xpdf.
● Come potreste avviare una stampa di un file GIF dalla linea di comando?
● Usate a2ps per stampare il file /etc/profile su un file in uscita. Verificatelo di nuovo
con gv. Cosa succede se non specificate un file in uscita?
171
Introduzione a Linux
Al termine di questo capitolo saprete come:
● creare, ricercare e scompattare archivi di file;
● gestire dischetti e creare un disco di avvio per il vostro sistema;
● scrivere CDROM;
● effettuare copie di sicurezza incrementali;
● creare archivi Java;
● trovare documentazione per utilizzare altre periferiche di backup ed altri
programmi.
9.1. Introduzione
Sebbene Linux sia uno dei più sicuri sistemi operativi esistenti e pur essendo stato progettato per
funzionare sempre, i dati possono andare persi. La perdita dei dati è molto spesso la conseguenza di
errori dell'utente, ma occasionalmente un guasto di sistema (come una mancanza di energia
elettrica) ne è la causa, cosicché è sempre una buona idea mantenere una copia extra di dati sensibili
e/o importanti.
tar ha molte opzioni, di cui citiamo qui sotto le più importanti:
● -v: dettagliata o “verbosa”
● -t: prova o test. Mostra il contenuto di una tarball
● -x: estrazione archivio
● -c: creazione archivio
● -f perifericaarchivio: usa perifericaarchivio come
sorgente/destinazione della tarball. La periferica predefinita è la prima a nastro
(di solito /dev/st0 o qualcosa di simile)
● -j: filtra attraverso bzip2 (guardate la Sezione 9.1.1.2.).
172
Introduzione a Linux
E' comune trascurare il prefisso meno [] con le opzioni di tar, come potete vedere negli esempi
seguenti.
Usate GNU tar per la compatibilità
Gli archivi creati con una versione proprietaria di tar in un sistema potrebbero essere
incompatibili con tar di un altro sistema proprietario. Ciò potrebbe causare molti mal di
testa, come quando l'archivio deve essere ripristinato in un sistema che non esiste più.
Usate la versione GNU di tar in tutti i sistemi per prevenire che il vostro amministratore
di sistema scoppi in lacrime. Linux utilizza sempre tar di GNU. Quando lavorate su
altre macchine UNIX, inserite tar help per scoprire quale versione state usando.
Contattate il vostro amministratore di sistema se non vedete la parola GNU da qualche
parte.
Nell'esempio seguente viene creato e spacchettato un archivio.
gaby:~> ls images/
me+tux.jpg nimf.jpg
gaby:~> tar cvf images−in−a−dir.tar images/
images/
images/nimf.jpg
images/me+tux.jpg
gaby:~> cd images
gaby:~> ls */*.tar
images/images−without−a−dir.tar
gaby:~> ls *.tar
images−in−a−dir.tar
gaby:~> tar xvf images−in−a−dir.tar
images/
images/nimf.jpg
images/me+tux.jpg
gaby:~> tar tvf images/images−without−dir.tar
−rw−r−−r−− gaby/gaby 42888 1999−06−30 20:52:25 me+tux.jpg
−rw−r−−r−− gaby/gaby 7578 2000−01−26 12:58:46 nimf.jpg
gaby:~> tar xvf images/images−without−a−dir.tar
me+tux.jpg
nimf.jpg
gaby:~> ls *.jpg
me+tux.jpg nimf.jpg
Questo esempio illustra anche la differenza tra una directory archiviata con tar e un complesso di
file archiviati con tar. E' consigliabile comprimere le directory solamente, cosicché i file non
sprizzeranno ovunque nel momento dello spacchettamento della tarball (cosa che potrebbe avvenire
in un altro sistema dove non potreste sapere quali file ci siano già là e quali siano quelli
173
Introduzione a Linux
dell'archivio).
Quando una unità a nastro è connessa al vostro computer ed è stata configurata dall'amministratore
di sistema, i nomi dei file terminanti in .tar vengono rimpiazzati con il nome della periferica a
nastro, per esempio:
tar cvf /dev/tape mail/
La directory mail e tutti i file che contiene vengono compressi in un file che viene
immediatamente scritto su nastro. Un elenco dei contenuti ci viene mostrato perché abbiamo usato
l'opzione "verboso".
Gli errori standard vengono rediretti verso /dev/null: se non fate ciò, tar stamperà un messaggio
per ogni file non modificato dicendovi che non sarà eliminato.
174
Introduzione a Linux
Questo modo di funzionare ha lo svantaggio che si basa sul tempo di creazione dei file: dite che
scaricate un archivio nella directory contenente le vostre copie di sicurezza e l'archivio contiene file
che sono stati creati due anni fa. Quando viene controllata la data di creazione di quei file rispetto al
tempo di creazione dell'archivio iniziale, i nuovi file sembreranno in realtà vecchi a tar e non
saranno inclusi in un backup incrementale fatto usando l'opzione -N.
Una scelta migliore potrebbe essere l'opzione -g, che creerà un elenco di file da archiviare. Nel
momento della copia di sicurezza incrementale, i file saranno confrontati con questo elenco.
Funziona così:
Questi sono alcuni semplici esempi, ma potreste usare anche questo tipo di comando in un processo
cron (v. Sezione 4.4.4.) che indica per esempio un file di snapshot per il backup settimanale e uno
per quello giornaliero. I file di snapshot verranno rimpiazzati al momento dei backup completi in tal
caso.
Maggiori informazioni si possono trovare nella documentazione di tar.
La vera sostanza
Come probabilmente potete notare, tar va bene quando stiamo discorrendo di una
semplice directory, un insieme di file che stanno assieme. Comunque esistono degli
strumenti che sono più facili da gestire quando volete archiviare intere partizioni, dischi
o progetti più grandi. Noi parliamo qui solo di tar perché è uno strumento molto diffuso
per distribuire archivi. Capiterà abbastanza spesso che avrete bisogno di installare un
software che trovate nella cosiddetta "tarball compressa". Date uno sguardo alla Sezione
9.3. per un modo più semplice di effettuare copie di sicurezza regolari.
175
Introduzione a Linux
Decomprimete i file gzip con l'opzione -d.
bzip2 funziona in modo simile, ma usa un avanzato algoritmo di compressione, cosicché genera file
più piccoli. Guardate le pagine info di bzip2 per maggiori dettagli.
I pacchetti di Software Linux vengono spesso distribuiti in una tarball compressa con gzip. La cosa
importante da fare dopo aver spacchettato questo genere di archivi è trovare README e leggerlo. In
genere conterrà istruzioni per l'installazione del pacchetto.
Il comando GNU tar tiene in considerazione i file gzip. Usate il comando
tar zxvf file.tar.gz
per scompattare e dearchiviare i file .tar.gz o .tgz. Usate invece
tar jxvf file.tar.bz2
per spacchettare gli archivi tar che sono stati compressi con bzip2.
Diversamente da tar, jar normalmente comprime, indipendentemente da altri strumenti (in quanto
si tratta in sostanza della versione Java di zip). Inoltre permette inserimenti individuali in un
archivio che l'autore sigla, in modo che le origini possono essere certificate.
La sintassi è quasi uguale a quella del comando tar. Ci riferiremo a info jar per differenze
specifiche.
tar, jar e i collegamenti simbolici
Una funzione degna di nota, trascurata nella documentazione standard, è che jar seguirà
i collegamenti simbolici. I dati a cui puntano questi collegamenti verranno ricompresi
nell'archivio. Di base in tar si archiviano solo i collegamenti simbolici, ma questo
comportamento può essere modificato con l'opzione -h.
176
Introduzione a Linux
Nella prossima sezione tratteremo delle periferiche locali di backup.
fdformat è lo strumento per la formattazione a basso livello dei dischi floppy. Usa come opzione il
nome dell'unità del disco floppy. fdformat restituirà un errore nel caso in cui il floppy sia protetto
da scrittura.
Il comando mformat (dal pacchetto mtools) viene utilizzato per creare dischetti DOScompatibili,
che poi si possono usare con mcopy, mdir ed altri comandi m.
Sono disponibili anche degli strumenti grafici.
Figura 91. Il formattatore di floppy.
177
Introduzione a Linux
Dopo che il dischetto è stato formattato, è possibile montarlo nel file system ed utilizzarlo come una
normale, seppure piccola, directory, normalmente attraverso l'inserimento di /dev/floppy.
Potreste averne bisogno: installate il programma di utilità mkbootdisk che crea un floppy da cui il
sistema in uso può essere avviato.
Notate che la duplicazione viene eseguita su un'unità non montata. I floppy creati usando questo
metodo non saranno montabili nel file system, ma questo è naturalmente il modo per creare dischi
d'avvio o di ripristino. Per maggiori informazioni sulle possibilità di dd, leggete le pagine man.
Questo strumento fa parte del pacchetto GNU coreutils.
Duplicazione dei dischi
Il comando dd può essere usato anche per fare una copia grezza di un intero disco
rigido.
[rose@blob recordables] df −h .
Filesystem Size Used Avail Use% Mounted on
/dev/hde5 19G 15G 3.2G 82% /home
[rose@blob recordables] du −h −s .
325M .
[rose@blob recordables] mkisofs −J −r −o cd.iso .
<−−snap−−>
making a lot of conversions
<−−/snap−−>
98.95% done, estimate finish Fri Apr 5 13:54:25 2002
Total translation table size: 0
Total rockridge attributes bytes: 35971
Total directory bytes: 94208
178
Introduzione a Linux
Le opzioni -J e -r vengono usate per rendere montabile il CDROM su differenti sistemi (vedete le
pagine man per maggiori dettagli). Dopo di ciò, il CD può essere creato utilizzando lo strumento
cdrecord con le appropriate opzioni:
Ora, a seconda del vostro masterizzatore, avete il tempo per fumare una sigaretta e/o bere un caffè.
Al termine del processo otterrete un messaggio di conferma:
Ci sono alcuni strumenti grafici a disposizione per rendere l'operazione più semplice. Uno tra i
maggiormente diffusi è xcdroast, che è disponibile liberamente sul sito web di XCDROAST ed è
incluso nella maggior parte dei sistemi e nella directory GNU. Sia KDE che Gnome sono dotati di
programmi per masterizzare i vostri CD personali.
Nell'esempio seguente delle immagini vengono copiate da una fotocamera USB ad un disco rigido:
Se la fotocamera è l'unica periferica di memorizzazione USB che avete collegato al vostro sistema,
questo è sicuro. Ma tenete in mente che alle periferiche USB vengono assegnate delle voci in /dev
quando si connettono al sistema. Così se prima collegate al vostro sistema una memoria USB,
179
Introduzione a Linux
questa sarà inserita come /dev/sda, e se poi collegate dopo di questa una fotocamera,
quest'ultima sarà assegnata a /dev/sdb (ammesso che non abbiate dischi SCSI, che sarebbero
anch'essi su /dev/sd*). Nei sistemi più recenti, a partire dal kernel 2.6, un sistema di
collegamento a caldo chiamato HAL (Hardware Abstraction Layer) assicura che gli utenti non
debbano trafficare con questo compito oneroso. Se volete verificare dove si trovi la vostra periferica,
battete dmesg dopo averla attaccata.
Ora potete copiare i file:
Nello stesso modo una unità jazz può essere montata su /mnt/jazz.
I comandi giusti per le copie di sicurezza vengono normalmente inseriti in una delle directory cron
allo scopo di mandarli in esecuzione con regolarità. In ambiti maggiori la suite liberamente
disponibile Amanda o una soluzione commerciale possono essere introdotte per effettuare backup
su molte macchine. Comunque l'uso dei nastri è un compito da amministratore di sistema che va
oltre lo scopo di questo documento.
● Suse: ora Yast comprende copie di sicurezza estese e moduli di ripristino.
● RedHat: lo strumento File Roller fornisce una gestione visuale degli archivi
(compressi). Sembra che siano in favore dello strumento XCDRoast per
spostare le copie di sicurezza su un dispositivo esterno.
● Mandrake: XCDRoast.
● La maggioranza delle distribuzioni giunge fornita dei programmi di utilità BSD
dump e restore per effettuare dei backup dei file system ext2 e ext3. Tale
strumento può scrivere in una varietà di dispositivi e, letteralmente, duplica il (i)
180
Introduzione a Linux
file system bit per bit sulla periferica indicata. Come dd, questo permette di
creare copie di sicurezza di tipi speciali di file come quelli in /dev.
9.3.1. Introduzione
Il programma rsync è uno strumento rapido e flessibile per il backup remoto. E' comune nei sistemi
UNIX e similUNIX, facile da configurare e da usare negli script. Sebbene la r in rsync stia per
"remoto", non dovete prendere tutto ciò alla lettera. Il vostro dispositivo "remoto" potrebbe essere
solo una periferica USB di massa o un'altra partizione del vostro disco rigido: non dovete per forza
avere due macchine separate.
Notate che questa istruzione richiede l'installazione del supporto USB nel vostro sistema. Guardate
USB Guide per un aiuto se questo non funziona. Verificate con dmesg che /dev/sda1 sia
naturalmente la periferica da montare.
Dopo potete avviare l'attuale backup, per esempio, della directory /home/karl:
Come il solito, fate riferimento alle pagine man per maggiori informazioni.
9.4. Sommario
Qui c'è un elenco dei comandi riguardanti il backup dei file:
Tabella 91 Comandi di backup
Comando Significato
bzip2 Un compressore di file a ordinamento a blocchi
cdrecord Registra Compact Disk audio o dati da un originale
dd Converte e copia un file
fdformat Formatta a basso livello di un dischetto floppy
gzip Comprime o espande file
181
Introduzione a Linux
Comando Significato
mcopy Copia file MSDOS verso/da UNIX
mdir Mostra una directory MSDOS
Aggiunge un file system MSDOS ad un dischetto floppy formattato a
mformat
basso livello
mkbootdisk Crea un dischetto di avvio indipendente per far girare il sistema
Monta un file system (integratelo con il file system corrente
mount
connettendolo in un punto di montaggio)
rsync Sincronizza le directory
Programma di utilità per l'archiviazione su nastro, usato anche per creare
tar
archivi su disco invece che su nastro
umount Smonta i file system
9.5. Esercizi
● Fate una copia della vostra directory personale verso /var/tmp usando il
comando tar. Successivamente comprimete il file usando gzip o bzip2: fatelo in
modo che ne risulti un corretto file archiviato con tar, uno che non crei
confusione una volta scompattato.
● Formattate un floppy e mettete alcuni file della vostra directory personale su di
esso. Scambiate i floppy con un altro studente e ripristinate il suo floppy nella
vostra directory personale
● Formattate il floppy in DOS. Usate gli mtools per mettere e cancellare file su di
esso.
● Cosa succede ad un dischetto non formattato quando lo volete montare nel file
system?
● Se avete una memoria USB, provate a registrarci dentro un file.
● Usando rsync, fate una copia della vostra directory personale in un altro file
system locale o remoto.
182
Introduzione a Linux
Sono stati scritti scaffali di libri pieni di informazioni su Linux e le reti, ma in questo
capitolo proveremo a fornire una panoramica. Dopo averlo completato, saprete di più su
● i protocolli di rete supportati
● i file di configurazione della rete
● i comandi per configurare e provare la rete
● i demoni e i programmi clienti che abilitano differenti applicazioni di rete
● la condivisione e la stampa di file
● l'esecuzione remota di comandi e applicazioni
● l'interconnessione base di rete
● l'esecuzione sicura di applicazione remote
● i firewall e l'individuazione delle intrusioni
Linux supporta molti protocolli differenti di rete. Elenchiamo solo quelli più importanti:
10.1.1.1. TCP/IP
Il Transport Control Protocol e l'Internet Protocol sono due dei modi più popolare di comunicazione
su Internet. Molte applicazioni, come i vostri programmi di navigazione e di posta elettronica, sono
costruiti sopra questo complesso di protocolli.
Detto molto semplicemente, IP fornisce una soluzione per inviare pacchetti di informazioni da una
macchina ad un'altra, mentre TCP assicura che i pacchetti siano disposti in flussi, in modo che
pacchetti da diverse applicazioni non vengano mescolati e che siano inviati e ricevuti nell'ordine
corretto.
Internet fu originariamente sviluppata trent'anni fa per il Dipartimento della Difesa degli Stati Uniti
(DoD), principalmente con lo scopo di interconnettere computer di marche diverse. Un altro motivo
dello sviluppo del TCP/IP fu quello di fornire un sistema di trasporto dei dati affidabile su una rete
inaffidabile.
Il collegamento in rete TCP/IP era già presente in Linux sin dai suoi esordi. Era stato implementato
183
Introduzione a Linux
dal nulla. E' una delle più robuste, veloci e affidabili implementazioni ed è uno dei fattori chiave del
successo di Linux. Linux e le reti sono fatti l'uno per l'altro a tal punto che non connettere il vostro
sistema Linux alla rete potrebbe causare lentezza d'avvio ed altri problemi. Anche se non utilizzate
nessuna connessione di rete ad altri computer, i protocolli di rete sono usati per comunicazioni
all'interno del sistema e delle applicazioni. Linux si aspetta di essere messo in rete.
Un buon punto di partenza per imparare di più su TCP e IP sono i seguenti documenti:
● man 7 ip: descrive l'implementazione su Linux del protocollo IPv4 (essendo attualmente
la versione 4 la più diffusa edizione del protocollo IP).
● man 7 tcp: implementazione del protocollo TCP
● RFC793, RFC1122, RFC2001 per TCP, e RFC791, RFC1122 e RFC1112 per IP
I documenti Request For Comment contengono le descrizioni degli standard, dei protocolli,
delle applicazioni e delle implementazioni di rete. Questi documenti sono gestiti dalla
Internet Engineering Task Force, una comunità internazionale che si occupa del
funzionamento di Internet senza intoppi, dell'evoluzione e dello sviluppo dell'architettura di
Internet.
Il vostro ISP ha normalmente a disposizione un archivio di RFC, oppure potete navigare tra
gli RFC via http://www.ietf.org/rfc.html.
10.1.1.2. TCP/IPv6
Nessuno si aspettava che Internet crescesse così in fretta come ha fatto. IP ha dimostrato di avere
alcuni svantaggi quando in rete è presente un numero molto grande di computer, essendo di notevole
importanza la disponibilità di indirizzi unici da assegnare ad ogni macchina connessa. Così IP
versione 6 è stato congegnato per soddisfare le necessità dell'odierna Internet.
Sfortunatamente non tutte le applicazioni e i servizi supportano ancora IPv6. Attualmente è in corso
una migrazione in molti ambienti che possono trarre beneficio dall'aggiornamento a IPv6. Per
alcune applicazioni il vecchio protocollo è ancora in uso, mentre la nuova versione è già attiva per
applicazioni che sono state aggiornate. Cosicché, quando verificate la vostra configurazione di rete,
è possibile che qualche volta sia leggermente confusa dal momento che tutti i generi di misure
possono essere state adottate per nascondere un protocollo dall'altro affinché i due non confondano
le comunicazioni.
Maggiori informazioni si possono trovare nei documenti seguenti:
● man 7 ipv6: l'implementazione del protocollo IPv6 in Linux;
● RFC1883 descrive il protocollo IPv6.
184
Introduzione a Linux
La maggioranza delle distribuzioni Linux fornisce strumenti di facile uso per impostare una
connessione Internet. L'unica cosa di cui avete sostanzialmente bisogno è un nome utente ed una
password per connettervi al vostro Internet Service Provider (ISP) e un numero telefonico in caso di
PPP. Questi dati vengono inseriti nello strumento grafico di configurazione, che assai probabilmente
vi permetterà anche di avviare ed interrompere la connessione con il provider.
10.1.1.4. ISDN
Il kernel di Linux ha il supporto integrato ISDN. Isdn4linux controlla le schede ISDN per PC e può
emulare un modem con l'insieme dei comandi Hayes (comandi "AT"). Le possibilità spaziano dal
semplice uso di un programma di terminale ad una completa connessione a Internet.
Verificate la vostra documentazione di sistema.
10.1.1.5 AppleTalk
AppleTalk è il nome dello stack di interconnessione di Apple. Consente un tipo di rete peertopeer
che fornisce funzionalità di base come la condivisione di file e stampanti. Ciascuna macchina può
contemporaneamente agire in qualità di cliente e di server ed il software e l'hardware sono compresi
in ogni computer Apple.
Linux fornisce connessioni complete a AppleTalk. Netatalk è una implementazione a livello kernel
della Suite di Protocollo AppleTalk, in origine per sistemi BSDderivati. Comprende il supporto per
l'instradamento AppleTalk, funzioni di server per file system UNIX e AFS usando AppleShare, di
server per stampanti UNIX e di accesso alle stampanti AppleTalk.
10.1.1.6. SMB/NMB
Per compatibilità con gli ambienti MS Windows, la suite Samba, comprendente il supporto per i
protocolli NMB e SMB, può essere installata in qualsiasi sistema similUNIX. Il protocollo Server
Message Block (chiamato anche Session Message Block, NetBIOS o protocollo LanManager) viene
usato in MS Windows 3.11, NT, 95/98, 2K e XP per condividere file e stampanti.
Le funzioni base della suite Samba sono: condivisione dei drive Linux con le macchine Windows,
accesso alle condivisioni SMB da macchine Linux, condivisione delle stampanti Linux con le
macchine Windows e viceversa.
Maggiori informazioni si possono trovare nei posti seguenti:
185
Introduzione a Linux
● man smb.conf: descrive il formato del principale file di configurazione di Samba.
● La sezione Samba di RedHat Support Resources on Printing and File Services.
●
Samba Project Documentation (o verificate il vostro mirror locale di samba.org) contiene
una guida di facile lettura sull'installazione e la prova, che spiega pure come configurare il
vostro server Samba come Primary Domain Controller.
● Il sito web di Samba contiene ulteriore documentazione, compresa una guida per la
risoluzione dei problemi.
● La configurazione viene eseguita selezionando System+Administration−>Networking.
● RedHat viene con redhatconfignetwork, che ha un'interfaccia in modalità sia grafica che
testuale.
● YAST o YAST2 di SuSE sono strumenti di configurazione generale.
● Mandrake/Mandriva arriva dotata di un assistente di configurazione di rete e Internet, che è
preferibile avviare dal Centro di Controllo Mandrake.
Le informazioni che dovrete fornire:
● per la connessione ad una rete locale, per esempio con i vostri computer domestici, o al
lavoro: nome host, nome di dominio e indirizzo IP. Se volete impostare la vostra rete
personale, prima meglio leggere qualcosa in più. Al lavoro questa informazione
probabilmente viene assegnata al vostro computer automaticamente al momento dell'avvio.
In caso di dubbi, è meglio non specificare alcuna informazione se non quelle necessarie;
● per la connessione ad Internet: nome utente e password per il vostro ISP, numero di telefono
quando si utilizza un modem. Normalmente il vostro ISP vi attribuisce automaticamente un
nome host, un indirizzo IP e tutti gli altri dati necessari alle vostre applicazioni Internet per
funzionare.
186
Introduzione a Linux
utilizzando una coppia di comandi di base. I nomi esatti dei file di configurazione e la loro
posizione nel file system dipendono largamente dalla vostra distribuzione e versione di Linux.
Comunque, una coppia di file di configurazione sono comuni in tutti i sistemi UNIX:
● /etc/hosts: contiene sempre l'indirizzo IP localhost, 127.0.0.1, che viene utilizzato per la
comunicazione tra i processi. Non cancellate mai questa linea!. Qualche volta contiene gli
indirizzi di host aggiuntivi che possono essere raggiunti senza utilizzare un servizio esterno
di naming come il DNS (Domain Name Server).
● Un file hosts di esempio per una piccola rete domestica:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.52.10 tux.mylan.com tux
192.168.52.11 winxp.mylan.com winxp
Leggete di più in man hosts.
● /etc/resolv.conf: configura l'accesso ad un server DNS. Questo file contiene il vostro
nome di dominio ed il nome del (dei) server da contattare:
search mylan.com
nameserver 193.134.20.4
● Leggete ulteriormente nella pagina man di resolv.conf.
● /etc/nsswitch.conf: definisce l'ordine con cui contattare vari servizi dei nomi. Per
l'uso di Internet, è importante che dns appaia nella linea "hosts":
● Questo istruisce il vostro computer a cercare i nomi degli host e gli indirizzi IP prima nel file
/etc/hosts e poi a contattare il server DNS se un certo host non compare nel file locale
hosts. Altri possibili servizi dei nomi da contattare sono LDAP, NIS e NIS+.
Di più in man nsswitch.conf.
Il comando ip viene utilizzato per assegnare indirizzi IP alle interfacce, per impostare gli
instradamenti verso Internet e verso altre reti, per mostrare le configurazioni TCP/IP, ecc...
I seguenti comandi mostrano l'indirizzo IP e le informazioni dell'instradamento:
187
Introduzione a Linux
Cose da notare:
● Due interfacce di rete, anche in un sistema che ha un'unica connessione di rete: “lo” è il local
loop usato per le comunicazioni interne; “eth0” è un nome comune di una vera interfaccia.
Non cambiate mai la configurazione del local loop, in caso contrario la vostra macchina
incomincerà a funzionare male! Le interfacce senza fili vengono abitualmente definite come
“wlan0”; le interfacce modem come “ppp0”, ma potrebbero pure esserci altri nomi.
● Gli indirizzi IP segnati con “inet”: il local loop ha sempre 127.0.0.1, l'interfaccia fisica può
avere qualsiasi altra combinazione.
● L'indirizzo hardware della vostra interfaccia, che potrebbe essere richiesto come parte della
procedura di autenticazione per la connessione ad un network, viene indicato con “ether”. Il
local loop ha sei paia di tutti zeri, il loop fisico ha sei coppie di caratteri esadecimali di cui i
primi tre sono specifici del produttore.
Mentre ip è il modo più moderno per configurare un sistema Linux, ifconfig è ancora molto diffuso.
Usateli senza opzioni per mostrare le informazioni dell'interfaccia di rete:
els@asus:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:70:31:2C:14
inet addr:60.138.67.31 Bcast:66.255.255.255 Mask:255.255.255.192
inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0
TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0
collisions:802207 txqueuelen:1000
RX bytes:2806974916 (2.6 GiB) TX bytes:2874632613 (2.6 GiB)
Interrupt:11 Base address:0xec00
lo
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:765762 errors:0 dropped:0 overruns:0 frame:0
TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:624214573 (595.2 MiB) TX bytes:624214573 (595.2 MiB)
Pure qui notiamo gli aspetti più rilevanti della configurazione dell'interfaccia:
● L'indirizzo IP è indicato con “inet addr”.
● L'indirizzo hardware segue il tag “Hwaddr”.
Sia ifconfig che ip mostrano informazioni più dettagliate sulla configurazione e numerosi dati
188
Introduzione a Linux
statistici circa ciascuna interfaccia e, potrebbe essere maggiormente importante, se quest'ultima è
“UP” e “RUNNING”.
Nel vostro portatile, che normalmente collegate alla rete aziendale utilizzando la connessione
Ethernet integrata, ma che ora dovete configurare per una connessione telefonica a casa o in
albergo, potreste aver bisogno di attivare la scheda PCMCIA. Ciò si effettua tramite l'utilità di
controllo cardctl. Comunque una buona distribuzione dovrebbe fornire il supporto PCMCIA tra gli
strumenti di configurazione di rete, evitando agli utenti di dover eseguire i comandi PCMCIA
manualmente.
Dibattere ulteriormente sulla configurazione di rete è al di fuori dello scopo di questo documento.
La vostra fonte primaria di informazioni extra sono le pagine man per i servizi che volete impostare.
Letture addizionali:
● ModemHOWTO
: aiuta nella scelta, connessione, configurazione, risoluzione dei problemi
e comprensione dei modem analogici per i PC.
● Indice LDP HOWTO, sezione 4.4
: elenco di HOWTO suddiviso in categorie circa le reti in
generale, i protocolli, le dialup, il DNS, le VPN, il bridging, l'instradamento, la sicurezza ed
altro ancora.
● Il file /usr/share/doc/iproute-<versione>ip-cref.ps, visualizzabile con
gv, per esempio.
La prima periferica ethernet, eth0 nel caso di una tradizionale scheda di interfaccia di rete punta al
vostro indirizzo locale LAN IP. Le normali macchine clienti hanno soltanto un'unica scheda di rete.
I router, collegando le reti tra di loro, hanno una periferica di rete per ciascuna rete servita.
Se usate un modem per connettervi ad Internet, la vostra periferica di rete probabilmente verrà
chiamata ppp0: questo è normale anche nel caso delle connessioni che usano un modem via cavo.
Esistono molti altri nomi, per esempio per le interfacce Virtual Private Network (VPN o rete privata
virtuale), e numerose interfacce possono essere attive contemporaneamente, cosicché l'output dei
comandi ifconfig o ip potrebbe divenire piuttosto esteso quando non vengono utilizzate delle
opzioni. Anche molteplici interfacce dello stesso genere possono essere attive. In tal caso vengono
numerate in sequenza: la prima avrà il numero 0, la seconda un suffisso 1, la terza 2, e così via.
Questo è il caso di molti server di applicazioni, di macchine dotate di configurazione failover, di
router, firewall e molte ancora.
189
Introduzione a Linux
Le informazioni di instradamento possono essere mostrate con l'opzione -nr del comando netstat :
Questa è una tipica macchina cliente in una rete IP: ha solo un'interfaccia di rete, eth0. L'interfaccia
lo è il local loop.
Quando tale macchina tenterà di contattare un host che si trova in una rete diversa dalla sua, indicata
dalla linea iniziante con 0.0.0.0, essa invierà le richieste di connessione alla macchina (router) con
indirizzo IP 192.168.42.1 ed utilizzerà la propria interfaccia primaria eth0 per fare ciò.
Gli host che si trovano sulla stessa rete (la linea iniziante con 192.168.42.0) verranno altresì
contattati attraverso l'interfaccia di rete primaria, ma non sarà necessario un router: i dati saranno
immessi semplicemente in rete.
Le macchine possono avere tabelle di instradamento più complicate di questa, con molte coppie di
“DestinazioneGateway” per connettersi a diverse reti. Se vi capita l'occasione di collegarvi ad un
server di applicazioni (per esempio al lavoro), è piuttosto educativo verificare le informazioni di
instradamento.
Parleremo in questa sezione soltanto di alcuni comuni strumenti testuali di UNIX/Linux.
Per mostrare le informazioni sugli host o i domini, usate il comando host:
Simili informazioni possono essere visualizzate usando il comando dig, che dà nozioni aggiuntive
su come i record vengono registrati nel server dei nomi.
Per controllare se un host è attivo utilizzate ping. Se il vostro sistema è configurato per inviare più
190
Introduzione a Linux
di un pacchetto, interrompete ping con la combinazione di tasti Ctrl + C:
Per controllare il percorso seguito dai pacchetti verso un host di rete, usate il comando traceroute:
Si possono richiedere specifiche informazioni sul nome del dominio usando il comando whois,
come viene spiegato da molti server whois, come quello che segue:
191
Introduzione a Linux
Per altri nomi di domini al di fuori di .com, .net, .org e .edu, specificate il server di whois, come in
questo caso per i domini .be:
whois [email protected]
I servizi di rete che vengono usati pesantemente e/o in continuazione, girano normalmente in modo
indipendente: sono dei programmi demoni indipendenti che stanno sempre in attività. Molto
facilmente vengono fatti partire al momento dell'avvio del sistema ed attendono richieste su
specifici punti o porte di connessione che essi sono stati impostati ad ascoltare. Quando giunge una
richiesta, questa viene elaborata e l'ascolto continua fino alla successiva. Un server web è un
esempio tipico: volete che sia disponibile 24 ore al giorno e, se è troppo occupato, dovrebbe creare
ulteriori istanze di ascolto in modo da servire utenti simultanei. Altri esempi sono i grossi archivi di
software come Sourceforge o il vostro mirror Tucows che devono gestire migliaia di richieste FTP al
giorno.
Un esempio di servizio di rete indipendente nel vostro computer casalingo potrebbe essere named
(name daemon), un server dei nomi con cache. I servizi indipendenti hanno i loro processi attivi,
che voi potete controllare ogni volta usando ps:
192
Introduzione a Linux
Molti servizi nel vostro PC domestico, come FTP, non hanno un demone in funzione, eppure potete
usarli:
Vediamo nella prossima sezione come questo è congegnato.
10.2.1.2. (x)inetd
Di solito nel vostro PC domestico le faccende sono un po' più tranquille. Potete avere una piccola
rete, per esempio, e dei file da trasferire da un PC ad un altro di tanto in tanto usando FTP o Samba
(per il collegamento a macchine MS Windows). In tali casi avviare tutti i servizi di cui avete
bisogno solo saltuariamente e tenerli tutto il tempo in funzione, sarebbe uno spreco di risorse. Così
nelle configurazioni minori scoprirete che i demoni necessari dipendono da un programma centrale
che ascolta su tutte le porte dei servizi di cui è responsabile.
Questo superserver, il demone dei servizi Internet, viene avviato durante l'inizializzazione del
sistema. Esistono due diffuse implementazioni: inetd e xinetd (extended Internet services daemon).
L'uno o l'altro girano di solito in ogni sistema Linux:
I servizi di cui è responsabile il demone Internet sono elencati nel suo file di configurazione
/etc/inetd.conf per inetd e nella directory /etc/xinetd.d per xinetd. Di consueto i
servizi gestiti comprendono la condivisione dei file e i quelli di stampa, SSH, FTP, telnet, il demone
di configurazione Samba, i servizi del parlato e degli orari.
Non appena viene ricevuta una richiesta di connessione, il server centrale avvierà un'istanza del
server desiderato. In questo modo, nell'esempio seguente, quando l'utente bob avvia una sessione
FTP nell'host locale, parte un demone FTP non appena la sessione è attiva:
Naturalmente succede la stessa cosa quando aprite delle connessioni verso host remoti: o un demone
risponde direttamente, oppure un (x)inetd remoto avvia il servizio che vi serve e lo ferma quando
avete finito.
193
Introduzione a Linux
10.2.2. La posta
10.2.2.1. I server
Sendmail è il programma server standard di posta o Mail Transport Agent per le piattaforme UNIX.
E' robusto, scalabile e, se configurato adeguatamente per l'hardware corretto, gestisce migliaia di
utenti senza battere ciglio. Maggiori informazioni su come configurare Sendmail sono incluse nei
pacchetti sendmail e sendmailcf: potreste leggere i file README e README.cf in
/usr/share/doc/sendmail. Sono utili anche man sendmail e man aliases.
Qmail è un altro server di posta che sta guadagnando in popolarità perché si vanta di essere più
sicuro di Sendmail. Mentre Sendmail è un programma monolitico, Qmail è formato da parti più
piccole di programma interagenti, che possono essere resi maggiormente sicuri. Postfix è un altro
server di posta di crescente popolarità.
Questi server gestiscono mailing list, filtri, scansioni antivirus e molto altro ancora. Programmi
liberi o commerciali di scansione antivirus sono disponibili per l'uso con Linux. Esempi di software
per mailing list sono Mailman, Listserv, Majordomo e EZmlm. Guardate le pagine web del vostro
scanner antivirus preferito per informazioni sul supporto dei clienti e server Linux. Amavis e
Spamassassin sono implementazioni libere di virus scanner e spam scanner.
Mentre POP è un protocollo semplice, facile da implementare e supportato da quasi tutti i clienti di
posta, IMAP è preferibile in quanto:
● può manipolare i flag persistenti dello stato dei messaggi;
● può sia conservare al meglio i messaggi di posta così come ridistribuirli;
● può utilizzare e gestire caselle di posta multiple;
● supporta aggiornamenti concorrenti e caselle postali condivise;
● è pure utilizzabile per accedere ai messaggi di Usenet e ad altri documenti;
● IMAP funziona sia online che offline;
● è ottimizzato per le prestazione online, soprattutto nei collegamenti a velocità
estremamente bassa.
Il comando UNIX mail è stato in circolazione per molti anni, anche prima che esistessero le reti. E'
una semplice interfaccia per mandare messaggi e piccoli file ad altri utenti, che può poi salvare il
messaggio, redirigerlo, replicare ad esso e così via.
194
Introduzione a Linux
Mentre solitamente non è più usato come cliente, il programma mail è ancora utile, ad esempio, per
inviare a qualcuno i dati in uscita di un programma:
Il lettore di posta elm è un miglioramento di mail molto più raffinato, e così anche pine (Pine Is Not
Elm). Il lettore di posta mutt è ancora più recente e offre funzioni quali il threading.
Per quegli utenti che preferiscono un'interfaccia grafica per la propria posta (e un gomito da tennista
o un braccio da mouse), esistono centinaia di possibilità. I più popolari tra i nuovi utenti sono
Mozilla Mail/Thnderbird, che ha delle facili opzioni di configurazione antispam, ed Evolution, il
clone Ximian di MS Exchange.
Figura 101. Evolution, il lettore di posta e news
Sono disponibili anche decine di applicazioni di posta web, come Squirrelmail, Yahoo!mail, gmail
di Google e Hotmail.
Una panoramica si trova in Linux Mail User HOWTO.
Molte distribuzioni Linux includono fetchmail, un programma di utilità per la ricerca e l'inoltro
195
Introduzione a Linux
della posta. Ritira la posta da server remoti di posta (POP, IMAP ed alcuni altri) e la inoltra al vostro
sistema locale di consegna. Allora potete gestire la posta ricevuta attraverso normali clienti di posta.
Può essere avviato in modalità demone per interrogare ripetutamente uno o più sistemi ad intervalli
specifici. Informazioni ed esempi di impiego sono rintracciabili sulle pagine Info: la directory
/usr/share/doc/fetchmail-<versione> contiene un elenco completo delle
caratteristiche e una FAQ per i principianti.
Il filtro di procmail si può usare per filtrare la posta in entrata, per creare mailing list, per
preprocessare la posta, per inoltrare selettivamente la posta ed altro ancora. L'unito programma
formail, fra le altre cose, abilita alla generazione di risposte automatiche e la suddivisione in caselle
postali. Procmail si trova ormai da anni nelle macchine UNIX e Linux ed è un sistema molto
robusto, progettato per funzionare anche nelle circostanze peggiori. Maggiori informazioni si
possono trovare nella directory /usr/share/doc/procmail-<versione> e nelle pagine
man.
10.2.3. Il web
10.2.3.1. Il server web Apache
Apache è di gran lunga il più diffuso server web, impiegato in oltre la metà di tutti i server web di
Internet. La maggioranza delle distribuzioni Linux includono Apache. I pregi di Apache
comprendono il suo design modulare, il supporto SSL, stabilità e velocità. Con gli appropriati
hardware e configurazioni può sostenere i carichi più grossi.
Nei sistemi Linux la configurazione del server si esegue solitamente nella directory /etc/httpd.
Il principale file di configurazione è httpd.conf: è notevolmente autoesplicante. Se doveste aver
bisogno di aiuto, lo potreste trovare nella pagina man di httpd nel sito web di Apache.
Amaya è il navigatore di W3C. Opera è un navigatore commerciale, compatto e rapido. Molti
gestori di desktop offrono funzioni di navigazione web nei loro gestori di file, come nautilus.
Fra i diffusi navigatori basati sul testo ci sono lynk e links. Potreste avere necessità di installare dei
server proxy nella vostra shell impostando le variabili giuste. I navigatori testuali sono veloci e
maneggevoli quando non è disponibile un ambiente grafico, come quando si usano negli script.
196
Introduzione a Linux
FTP pesante. Guardate gli esercizi.
I server FTP comprendono, tra gli altri, Ncftpd e Proftpd.
Aiuti eccellenti con molti esempi si possono trovare nelle pagine man. E, di nuovo, è disponibile un
certo numero di applicazioni GUI.
FTP non è sicuro!
Non usate il File Transfer Protocol per accessi non anonimi a meno che non sappiate
cosa state facendo. I vostri nomi utente e password potrebbero essere captati da malevoli
utenti compagni di rete! Usate invece FTP sicuro: il programma sftp è compreso nella
suite Secure SHell (guardate la Sezione 10.3.4.).
197
Introduzione a Linux
sito di Gaim per maggiori informazioni.
● xchat: cliente IRC per il sistema X window:
Figura 102. XChat
La pagina iniziale è Sourceforge.
● JMSN: clone Java di MSN Messenger con molte funzionalità che mancano all'originale.
● Konversation, KVIrc e molti altri strumenti K dalla suite KDE.
● gnomemeeting: programma di videoconferenza per UNIX (ora Ekiga).
● jabber: piattaforma open source di messaggistica istantanea compatibile con ICQ, AIM,
Yahoo, MSN, IRC, SMTP e molti altri ancora.
● psi: cliente jabber, guardate la pagina iniziale di PSI Jabber Client.
● skype: programma per effettuare chiamate in stile telefonico tramite Internet verso altri
utenti Skype (guardate http://www.skype.com per maggiori informazioni). Skype è gratuito
ma non aperto.
● Gizmo: un telefono gratuito per il vostro computer (guardate http://www.gizmoproject.com).
Esiste una coppia di interessanti newsgroup nella gerarchia comp.*, che può essere raggiunta con
svariati clienti in modalità testo e grafica. Molti clienti di posta supportano bene la navigazione nei
newsgroup: controllate il vostro programma o cercate nel vostro mirror di software a sorgente aperto
dei clienti testuali tipo tin, slrnn e mutt, oppure scaricate Mozilla o uno degli altri numerosi clienti
198
Introduzione a Linux
in modalità grafica.
Deja.com mantiene un archivio con ricerca di tutti i newsgroup, motorizzato da Google. Questo è
uno strumento estremamente potente per ricevere aiuto: sono molto alte le probabilità che qualcuno
abbia già avuto i vostri problemi, abbia trovato una soluzione, poi postata in uno dei newsgroup.
Il vostro principale file di configurazione è /etc/resolv.conf, che stabilisce l'ordine in cui
vengono contattati i Domain Name Server:
search somewhere.org
nameserver 192.168.42.1
nameserver 193.74.208.137
Maggiori informazioni si possono trovare nelle pagine Info su named, nei file
/usr/share/doc/bind-<versione> e nella pagina iniziale del progetto Bind. Il DNS
HOWTO tratta dell'uso di BIND come DNS server.
10.2.8. DHCP
DHCP è il Dynamic Host Configuration Protocol che sta gradualmente rimpiazzando il buon
vecchio bootp negli ambiti più grandi. Viene usato per controllare parametri vitali di rete quali gli
indirizzi IP e i server dei nomi degli host. DHCP è compatibile a ritroso con bootp. Per configurare
il server avrete bisogno di leggere l'HOWTO.
Le macchine clienti DHCP normalmente saranno configurate usando una GUI che imposta dhcpd,
il demone cliente DHCP. Verificate la documentazione del vostro sistema se avete necessità di
configurare il computer come cliente DHCP.
199
Introduzione a Linux
scopi addizionali.
Questi file spesso sono i candidati principali per essere esaminati dagli hacker, perciò accertatevi
che i permessi e le appartenenze siano rigidamente impostate in modo opportuno:
10.2.9.2. PAM
Linux può usare PAM, Pluggable Authentication Module, un metodo flessibile per l'autenticazione
in UNIX. Vantaggi di PAM:
● Un comune schema di autenticazione che può essere utilizzato da un'ampia varietà di
applicazioni.
● PAM può essere implementato con varie applicazioni senza la necessità di dover
ricompilarle per supportare PAM specificamente.
● Grandi flessibilità e controllo sull'autenticazione per l'amministratore e lo sviluppatore di
applicazioni.
● Gli sviluppatori di applicazioni non devono sviluppare i loro programmi per utilizzare uno
specifico schema di autenticazione, mentre possono concentrarsi solo sui dettagli dei loro
programmi.
La directory /etc/pam.d contiene i file di configurazione di PAM (di solito /etc/pam.conf).
Ogni applicazione o servizio ha il suo file. Ciascuna linea nel file ha quattro elementi:
● Modulo:
● Flag di controllo: dicono a PAM quali azioni intraprendere in caso di accesso negato o
consentito. I valori possono essere required, requisite, sufficient o
optional.
200
Introduzione a Linux
● Percorso del modulo: percorso del modulo inseribile che deve essere usato, solitamente in
/lib/security.
● Argomenti: informazioni per i moduli.
I file delle shadow password vengono individuati automaticamente da PAM.
10.2.9.3. LDAP
Il Lightweight Directory Access Protocol è un sistema clienteserver per accedere a servizi di
directory globali o locali in una rete. In Linux si usa l'implementazione OpenLDAP. Essa
comprende slapd, un server indipendente, slurpd, un server indipendente di replica LDAP, librerie
che implementano il protocollo LDAP e una serie di programmi di utilità, strumenti e clienti di
esempio.
Il maggior beneficio nell'uso di LDAP è il consolidamento di certi tipi di informazioni all'interno
della vostra organizzazione. Per esempio tutti i differenti elenchi di utenti nella vostra
organizzazione possono essere fusi in una sola directory LDAP. Questa directory può ricevere
richieste da qualsiasi applicazione abilitata a LDAP che abbia bisogno di tale informazione. Possono
accedere ad essa anche utenti che hanno bisogno delle informazioni della stessa.
Altri benefici di LDAP o X.500 Lite comprendono la sua facilità di installazione (rispetto a X.500)
e la sua Interfaccia di Programmazione delle Applicazioni (API o Application Programming
Interface), che significa che il numero delle applicazioni e dei gateway con LDAP dovrebbe
aumentare in futuro.
Per quanto riguarda gli aspetti negativi, se volete usare LDAP, avete bisogno di applicazioni abilitate
a LDAP oppure la capacità di utilizzare gateway LDAP. Mentre l'impiego di LDAP dovrebbe solo
aumentare, attualmente non esistono molte applicazioni abilitate disponibili per Linux. Inoltre,
mentre LDAP supporta qualche controllo degli accessi, non possiede tutte quelle caratteristiche di
sicurezza di X.500.
Dal momento che LDAP è un protocollo aperto e configurabile, può essere impiegato per
conservare ogni tipo di informazione relativa ad una struttura organizzativa particolare. Esempi
comuni sono i lookup degli indirizzi di posta, l'autenticazione accentrata in combinazione con PAM,
gli elenchi telefonici e i database di configurazione delle macchine.
Guardate le informazioni specifiche del vostro sistema e le pagine man per i relativi comandi come
ldapmodify e ldapsearch per i dettagli. Maggiori informazioni si possono trovare in LDAP Linux
HOWTO, che tratta dell'installazione, della configurazione, del funzionamento e della
manutenzione di un server LDAP in Linux. LDAP Implementation HOWTO descrive gli aspetti
tecnici della conservazione dei dati di applicazioni in un server LDAP. L'autrice di questo testo
"Introduzione a Linux" ha pure scritto LDAP Operations HOWTO, che illustra gli elementi basilari
che ognuno dovrebbe conoscere quando ha a che fare con la gestione, le operazioni e l'integrazione
201
Introduzione a Linux
dei servizi di LDAP.
10.3.1. Introduzione
Ci sono due modi differenti per eseguire comandi o per avviare programmi in una macchina remota
ed ottenere dei dati in uscita, testuali o grafici, mandati alle vostre workstation. Le connessioni
possono essere sicure o meno. Sebbene naturalmente sia consigliabile usare connessioni sicure
invece di inviare in rete la vostra password non criptata, parleremo di alcune applicazioni pratiche
dei sistemi più vecchi (insicuri) dal momento che sono ancora utili in un moderno ambiente di rete,
come, ad esempio, per l'individuazione dei problemi o per il funzionamento di esotici programmi.
D'altro canto telnet viene tuttora comunemente utilizzato, spesso da amministratori di sistemi e di
rete. Telnet è uno dei più potenti strumenti per l'accesso da remoto ai file e per l'amministrazione
remota, consentendo connessioni da ovunque su Internet. Combinandolo con un server X le
applicazioni grafiche da remoto possono essere mostrate localmente. Non esiste differenza tra il
lavoro su macchine locali e l'uso di macchine remote.
Poiché l'intero collegamento non è criptato, permettere connessioni con telnet implica l'assunzione
di notevoli rischi per la sicurezza. Per la normale esecuzione remota di programmi è consigliato
Secure SHell o ssh. Parleremo del metodo sicuro più avanti in questa sezione.
Comunque telnet viene ancora utilizzato in molti casi. Qui di seguito ci sono alcuni esempi in cui
un server di posta e un server web vengono provati per le risposte:
controllo del funzionamento di un server di posta:
202
Introduzione a Linux
controllo che un server web risponda ad elementari richieste:
HTTP/1.1 200 OK
Date: Fri, 22 Mar 2002 10:05:14 GMT
Server: Apache/1.3.22 (UNIX) (Red−Hat/Linux)
mod_ssl/2.8.5 OpenSSL/0.9.6
DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01
Last−Modified: Fri, 04 Jan 2002 08:21:00 GMT
ETag: "70061−68−3c3565ec"
Accept−Ranges: bytes
Content−Length: 104
Connection: close
Content−Type: text/html
Connection closed by foreign host.
[jimmy@blob ~]
Ciò è perfettamente sicuro perché non dovete dare mai un nome utente e/o una password per
ottenere i dati voluti, cosicché nessuno può intercettare quelle importanti informazioni dalla rete.
E' importante comprendere la distinzione tra il server X e le applicazioni clienti X. Il server X
controlla lo schermo direttamente ed è responsabile di tutto l'input e output via tastiera, mouse e
schermo. D'altro canto il cliente X non accede direttamente alle periferiche d'ingresso e d'uscita dei
dati: esso comunica con il server X che gestisce l'input e l'output. E' il cliente X che svolge il lavoro
vero, come il calcolo dei valori, l'avvio di applicazioni e così via. Il server X apre solo delle finestre
per trattare l'ingresso e l'uscita dei dati per uno specifico cliente.
203
Introduzione a Linux
Questa natura cliente/server del sistema X lo rende un ambiente ideale per l'esecuzione remota di
applicazioni e programmi. Poiché in realtà il processo si sta svolgendo in una macchina remota, c'è
bisogno di una scarsissima potenza della CPU nell'host locale. Tali macchine, agendo da server per
X, vengono chiamate terminali X ed una volta erano molto diffuse. Maggiori informazioni possono
essere rintracciate in Remote X applications miniHOWTO.
10.3.3.2. Telnet e X
Se voleste usare telnet per mostrare delle applicazioni grafiche che stanno girando in una macchina
remota, dovreste prima concedere l'accesso verso tale macchina al vostro schermo (al vostro server
X!) con il comando xhost, digitando un comando simile a quello seguente in una finestra di
terminale nella vostra macchina locale:
Completato questo passo, qualsiasi applicazione avviata in questa finestra di terminale verrà
mostrata nel vostro desktop, utilizzando le risorse remote per l'elaborazione, ad esclusione delle
vostre risorse grafiche locali (il vostro sistema X).
Questa procedura considera che voi abbiate un qualche tipo di server X (XFree86, Exceed, Cygwin)
già impostato nella macchina dove volete mostrare le immagini. L'architettura e il sistema operativo
della macchina cliente non sono importanti se non perché vi consentono di far girare un server X in
essa.
Ricordate che anche mostrare una finestra di terminale dalla macchina remota è considerata come
un'immagine.
204
Introduzione a Linux
Quando l'identità è stata accettata dal server, quest'ultimo o esegue il comando dato oppure registra
nella macchina e concede all'utente una normale shell nella macchina remota. Tutte le
comunicazioni con il comando o la shell remoti verranno automaticamente criptate.
La sessione termina quando il comando o la shell nella macchina remota si conclude e tutte le
connessioni X11 e TCP/IP sono state chiuse.
Quando vi connettete per la prima volta ad un host usando uno qualsiasi dei programmi che sono
inclusi nella collezione SSH, avete bisogno di stabilire l'autenticità di quell'host e di fargli
comprendere che voi volete connettervi:
E' importante che battiate "yes", con tre caratteri, e non solo "y". Ciò edita il vostro file
~/.ssh/known_hosts (v. Sezione 10.3.4.3.).
Se volete solo controllare qualcosa in una macchina remota e poi ritornare al proprio prompt
nell'host locale, potete dare i comandi che intendete eseguire in remoto come argomenti di ssh:
205
Introduzione a Linux
Ciò è fatto completamente in automatico, così, quando battete il nome di un'applicazione grafica,
essa viene mostrata nella vostra macchina locale e non nell'host remoto. Nell'esempio usiamo
xclock dal momento che si tratta di un piccolo programma che viene solitamente installato ed è
ideale per esperimenti:
Figura 103. Inoltro SSH X11
SSH imposterà anche i dati Xauthority automaticamente) nella macchina server. A tale scopo
genererà un cookie casuale di autorizzazione, lo immagazzinerà in Xauthority nel server,
controllerà che ogni connessione inoltrata trasporti questo cookie e lo rimpiazzerà con quello reale
una volta aperta la connessione. Il vero cookie d autenticazione non è mai inviato alla macchina
server (e nessun cookie viene inviato in chiaro).
L'inoltro di connessioni arbitrarie TCP/IP su un canale sicuro può essere specificato o da linea di
comando o nel file di configurazione.
Il server X
Questa procedura suppone che abbiate un server X in funzione nel cliente in cui volete
mostrare l'applicazione dal'host remoto. Il cliente può avere architettura e sistema
operativo different rispetto all'host remoto, giacché può far girare un server X come
Cygwin (che implementa un server XFree86 per clienti MS Windows e altri) o Exceed,
e dovrebbe essere possibile la predisposizione di una connessione remota con qualsiasi
macchina Linux o UNIX.
206
Introduzione a Linux
middle] che altrimenti potrebbero essere utilizzati per aggirare il criptaggio. In ambiti dove è
richiesta un'elevata sicurezza, sshd può anche essere configurato per prevenire la registrazione
[login] in macchine le cui chiavi di host sono state cambiate o sono sconosciute.
Ogni nome di file può contenere una descrizione dettagliata dell'host e dell'utente per indicare che il
file sta per essere copiato in/da quell'host. Le copie tra due host remoti sono permesse. Guardate le
pagine Info per maggiori informazioni.
Se invece volete usare un'interfaccia tipo FTP, utilizzate sftp:
lenny /var/tmp>
Copia sicura o le GUI di FTP
Non vi sentite ancora a vostro agio con la linea di comando? Provate le capacità di
Konqueror per la copia sicura in remoto oppure installate Putty.
Normalmente ogni utente che vuole usare SSH con autenticazione RSA o DSA lo fa girare una volta
per creare la chiave di autenticazione in $HOME/.ssh/identity, id_dsa o id_rsa. Inoltre
l'amministratore di sistema può usarlo per generare le chiavi di host per il sistema.
Di solito questo programma genera la chiave e richiede un file in cui conservare la chiave privata.
La chiave pubblica viene tenuta in un file con lo stesso nome ma con l'aggiunta di .pub. Il
207
Introduzione a Linux
programma domanda anche una passphrase. La passphrase può essere vuota per indicare di non
serve (le chiavi di host devono avere una passphrase vuota), oppure può essere una stringa di
lunghezza arbitraria.
Non c'è modo di ricostruire una passphrase persa: se infatti questa viene perduta o dimenticata, è
necessario generare una nuova chiave e copiarla tra le corrispondenti chiavi pubbliche.
Studieremo le chiavi SSH negli esercizi. Tutte le informazioni possono essere trovate nelle pagine
man o Info.
10.3.5. VNC
VNC o Virtual Network Computing è in sostanza un sistema di visualizzazione remota che consente
di vedere un ambiente desktop non solo nella macchina locale in cui sta funzionando, ma anche da
qualsiasi punto di Internet e da un'ampia varietà di macchine e di architetture, compresi MS
Windows e diverse distribuzioni UNIX. Potreste, ad esempio, far girare MS Word in una macchina
dotata di Windows NT e mostrare l'output nel vostro desktop Linux. VNC fornisce sia server che
clienti, cosicché funziona anche viceversa ed è perciò possibile usarlo per mostrare programmi
Linux in clienti Windows. Probabilmente VNC è il modo più semplice per avere connessioni X su
un PC. Le seguenti caratteristiche differenziano VNC da un normale server X o da implementazioni
commerciali:
● Lo stato non viene conservato sul lato del visualizzatore: potete lasciare la vostra scrivania e
riprendere da un'altra macchina, continuando da dove eravate rimasti. Quando avete in
funzione un PC server X ed il PC si blocca o viene riavviato, tutte le applicazioni remote, da
voi fatte funzionare, cesseranno. Con VNC rimarranno in funzione.
● E' piccolo e semplice, non avendo bisogno d'installazione, se serve può essere avviato da un
dischetto.
● Indipendente dalla piattaforma con il cliente Java, gira praticamente su ogni sistema che
supporti X.
● Condivisibile: un desktop può essere mostrato in parecchi visualizzatori.
● Libero (GNU Public Licence).
Maggiori informazioni possono essere trovate nelle pagine man del cliente VNC (man
vncviewer) o nel sito web di VNC.
Sorprendete i vostri amici (o la dirigenza) con la modalità a tutto schermo, molti tipi di
conformazioni di tastiere e la modalità a singola applicazione, come se fosse una cosa vera. Il
manuale man rdesktop fornisce ulteriori informazioni. La pagina iniziale del progetto è su
http://www.rdesktop.org/.
208
Introduzione a Linux
10.3.7. Cygwin
Cygwin fornisce sostanziali funzionalità UNIX sotto sistemi MS Windows: a parte gli strumenti a
linea di comando UNIX e le applicazioni grafiche, può essere usato per mostrare un desktop Linux
in una macchina MS Windows, utilizzando X in remoto. Dalla shell Bash di Cygwin, digitate il
comando
/usr/X11R6/bin/XWin.exe query
− nomevostramacchinalinux_o_IP
La connessione è negata come preimpostazione. Dovete perciò cambiare la configurazione di X
Display Manager (XDM) e possibilmente quella di X Font Server (XFS) per abilitare tale genere di
connessione con cui otterrete una schermata di login sulla macchina remota. In base al vostro
gestore di desktop (Gnome, KDE o altro) potreste pure dover cambiare qui alcune configurazioni.
Se non vi serve far apparire l'intero desktop, potete usare SSH con Cygwin, proprio come spiegato
nella Sezione 10.3.3.2. senza tutta la confusione delle modifiche ai file di configurazione.
10.4. La sicurezza
10.4.1. Introduzione
Non appena un computer viene connesso alla rete, tutti i generi di abusi divengono possibili, sia
questo basato su UNIX o su qualsiasi altro sistema. Ammettiamo che montagne di carta sono state
sprecate su tale argomento e che ci potrebbe condurre troppo lontano per discutere in dettaglio il
tema della sicurezza. C'è comunque un paio di cose abbastanza logiche che anche un utente
principiante può fare per ottenere un sistema molto sicuro, poiché molte intrusioni sono il risultato
di utenti ignoranti o incuranti.
Potreste chiedervi se tutto ciò vi riguarda, utilizzando il vostro computer a casa o al lavoro nel vostro
ufficio su un desktop in un ambiente sufficientemente protetto. Tuttavia le domande che dovreste
porvi dovrebbero essere piuttosto di questo tipo:
● Volete avere il controllo del vostro sistema?
● Volete partecipare (involontariamente) ad attività criminose?
● Volete che il vostro sistema sia utilizzato da qualcun altro?
● Volete correre il rischio di perdere la vostra connessione ad Internet?
● Volete ripristinare il vostro sistema ogni volta che è stato craccato?
● Volete correre il rischio di perdere dati personali o altrui?
Supponendo che non lo vogliate, vi elencheremo rapidamente i passi da intraprendere per rendere
sicura la vostra macchina. Informazioni estese si possono trovare nel Linux Security HOWTO.
209
Introduzione a Linux
10.4.2. I servizi
L'obbiettivo è quello di avviare meno servizi possibili. Se il numero delle porte aperte al mondo
esterno viene mantenuto al minimo, ciò è meglio per tenerle sotto osservazione. Se i servizi non
possono essere spenti per la rete locale, tentate almeno di disabilitarli per le connessioni esterne.
Una regola empirica è quella che se non riconoscete un particolare servizio, probabilmente non ne
avete comunque bisogno. Tenete pure in mente che non ha senso utilizzare certi servizi in Internet.
Non fidatevi di ciò che dovrebbe essere fatto girare, verificate con il comando netstat quali servizi
sono in ascolto e su quale porta TCP:
Cose da evitare:
● exec, rlogin, rsh e telnet tanto per stare dalla parte sicura.
● X11 nelle macchine server;
● niente lp se nessuna stampante è fisicamente collegata;
● se non ci sono host MS Windows in rete non occorre Samba;
● non permettete FTP a meno che non sia richiesto un server FTP;
● non permettete NFS e NIS su Internet, disabilitate tutti i relativi servizi in una installazione
indipendente.
● Non avviate un MTA, se non siete veramente in un server di posta.
● ...
Fermate i servizi attivi usando il comando chkconfig, gli initscript o modificando i file di
configurazione di (x)inetd.
Alcuni aggiornamenti possono richiedere dei nuovi file di configurazione e i vecchi file dovrebbero
210
Introduzione a Linux
La maggioranza delle distribuzioni Linux fornisce servizi di mailing list per annunci di
aggiornamenti di sicurezza e strumenti per applicarli al sistema. In generale i problemi di sicurezza
solo di Linux vengono segnalati, fra l'altro, su Linuxsecurity.com.
L'aggiornamento è un procedimento continuo, sicché dovrebbe essere un'abitudine quasi quotidiana.
Firewall è un termine vago che può significare qualcosa che si comporta da barriera protettiva tra
noi e il mondo esterno, in genere Internet. Un firewall può essere un sistema dedicato o una
specifica applicazione che fornisce tale funzione, oppure può trattarsi di una combinazione di
componenti, comprese varie combinazioni di hardware e software. I firewall sono realizzati in base
a "regole" che vengono usate per definire cosa può entrare e/o uscire in un dato sistema o rete.
Dopo la disabilitazione dei servizi non necessari, ora vogliamo limitare i servizi rimasti per
permettere solo il minimo richiesto di connessioni. Un buon esempio funziona da casa: soltanto la
specifica connessione tra il vostro ufficio e la vostra abitazione dovrebbe essere permessa, mentre le
connessioni da altre macchine su Internet dovrebbero essere bloccate.
Uno dei miglioramenti maggiormente degni di nota nei kernel più recenti è la funzione di stateful
inspection, che non solo dice quello che c'è all'interno di un pacchetto, ma anche scopre se un
pacchetto appartiene o è in relazione a una nuova connessione o a quella esistente.
Lo sviluppo è in corso, perciò è meglio controllare in ogni nuova versione di una distribuzione quale
sistema viene usato.
Maggiori informazioni possono essere trovate nella pagina del progetto
netfilter/iptables
.
211
Introduzione a Linux
Il wrapping del TCP fornisce molti degli stessi risultati dei filtri di pacchetti, ma funziona in modo
diverso. Il wrapper accetta realmente il tentativo di connessione, poi esamina i file di
configurazione e decide se accettare o respingere la richiesta di connessione. Esso controlla le
connessioni a livello dell'applicazione piuttosto che a quello di rete.
I vantaggi dei TCP wrapper sono che il cliente che si sta connettendo è inconsapevole che vengono
usati i wrapper e che essi operano separatamente dalle applicazioni che stanno proteggendo.
L'accesso basato sull'host viene controllato nei file host.allow e host.deny. Maggiori
informazioni si possono trovare nei file di documentazione del TCP wrapper in
/usr/share/doc/tcp_wrappers-<versione>/ e nelle pagine man dedicate ai file di
controllo dell'accesso basato sull'host che contengono degli esempi.
10.4.4.4. I proxy
I proxy possono svolgere diversi compiti, di cui non tutti hanno molta attinenza con la sicurezza. Ma
il fatto che essi facciano da intermediari li rende un buon posto per rafforzare le politiche di
controllo degli accessi, limitare le connessioni dirette attraverso un firewall e controllare come la
rete dietro il proxy si affaccia su Internet.
Solitamente in combinazione con un filtro di pacchetti (ma qualche volta tutto da soli) i proxy
forniscono un livello extra di controllo. Maggiori informazioni si possono trovare nel Firewall
HOWTO nel sito web di Squid.
212
Introduzione a Linux
precoce consapevolezza di un problema. Esistono due tipologie base di IDS: quelli che proteggono
le reti e quelli che proteggono singoli host.
Per gli IDS basati sugli host ciò viene fatto tramite programmi di utilità che tengono controllati i
mutamenti nel file system. I file di sistema che in qualche modo sono cambiati, ma non avrebbero
dovuto cambiare, sono una chiara manifestazione che qualcosa non va. Chiunque entri ed ottenga
l'accesso di root farà, presumibilmente, delle modifiche al sistema da qualche parte. Questa è di
solito la primissima cosa che viene fatta, o in modo che si possa successivamente ritornare
attraverso una backdoor, o lanciando un attacco contro qualcun altro (nel qual caso si debbono
cambiare o aggiungere file al sistema). Alcuni sistemi sono dotati del sistema di monitoraggio
tripwire, documentato nel sito web del Progetto Open Source Tripwire.
La scoperta delle intrusioni in rete è gestita da un meccanismo che osserva tutti il traffico che
supera il firewall (non attraverso gli scanner delle porte che segnalano le porte utilizzabili). Snort è
un esempio Open Source di siffatti programmi. Whitehats.com mantiene un database di scoperta
delle intrusioni aperto, arachNIDS.
● Non consentite login di root. Gli sviluppatori UNIX hanno creato oltre vent'anni fa su per
una maggiore sicurezza.
● Prendete seriamente le password: utilizzate quelle "shadow". Cambiatele spesso.
● Provate ad usare sempre SSH. Evitate telnet, clienti FTP e altri programmi clienti, come un
cliente di posta POP3 che invia le password in chiaro sulla rete.
● Limitate le risorse usando quota e/o ulimit.
● La posta per root dovrebbe essere consegnata a (o almeno letta da) una persona reale.
● L'Istituto SANS ha più trucchi e suggerimenti, ordinati per distribuzione, con servizio di
mailing list. Pubblicizza l'impiego del sistema di protezione
Bastille
per gli utenti RedHat.
● Controllate la provenienza del nuovo software, scaricatelo da un luogo/sito fidato. Verificate
i nuovi pacchetti prima dell'installazione.
● Quando utilizzate una connessione Internet non permanente, chiudetela non appena non vi
serve più.
● Fate funzionare i servizi privati su porte diverse da quelle che si aspettano eventuali hacker.
● Comprendete il vostro sistema. Dopo un po' potrete quasi avvertire quando sta capitando
qualcosa.
● Porte misteriose aperte, strani processi.
● Utilità di sistema (normali comandi) che si comportano in modo strano.
● Problemi di autenticazione.
● Uso inspiegabile di larghezza di banda.
213
Introduzione a Linux
● File di registro danneggiati o persi, demone di syslog che si comporta in modo strano.
● Interfacce in modalità inconsuete.
● File di configurazione modificati inaspettatamente.
● Strane voci nei file dello storico di shell.
● File temporanei sconosciuti.
● Disconnettete la macchina dalla rete.
● Tentate di scoprire quanto più potete sul modo in cui la vostra sicurezza è stata violata.
● Fate una copia di sicurezza dei dati importanti non di sistema. Se possibile confrontate
questi dati con le copie di sicurezza esistenti, fatte prima che il sistema fosse compromesso,
per garantire l'integrità dei dati.
● Reinstallate il sistema.
● Usate nuove password.
● Ripristinate dai backup di sistema e dei dati.
● Applicate tutti gli aggiornamenti disponibili.
● Riesaminate il sistema: bloccate i servizi non necessari, controllate le regole del firewall e le
altre politiche d'accesso.
● Riconnettete
10.5. Sommario
Linux e le reti vanno mano nella mano. Il kernel di Linux ha il supporto per tutti i protocolli di rete
comuni e meno comuni. Gli strumenti standard per le reti UNIX sono in dotazione ad ogni
distribuzione. Oltre a questi, la maggior parte delle distribuzioni mette a disposizione strumenti per
una semplice installazione e gestione delle reti.
Linux è ben conosciuto come una stabile piattaforma per far girare vari servizi Internet e la quantità
di software per Internet è infinita. Come UNIX, Linux può essere e amministrato al meglio da una
postazione remota, usando una delle diverse soluzioni per l'esecuzione remota dei programmi.
Abbiamo brevemente toccato l'argomento della sicurezza. Linux è un sistema firewall ideale,
leggero ed economico, ma che può essere impiegato in molteplici altre funzioni di rete come i router
e i server proxy.
L'aumento della sicurezza nella rete viene principalmente ottenuto installando frequentemente gli
aggiornamenti e con il senso comune.
10.6. Esercizi
214
Introduzione a Linux
server dei nomi.
● Fingete che non sia disponibile il DNS. Cosa dovreste fare per raggiungere il computer del
vicino senza digitare ogni volta l'indirizzo IP?
● Come potreste immagazzinare permanentemente le informazioni del proxy per un navigatore
testuale come links?
● Quali server dei nomi gestiscono il dominio redhat.com?
● Inviate un messaggio di posta elettronica al vostro account locale. Provate due modi diversi
per mandarlo e leggerlo. Come potete controllare che è arrivato veramente?
● La vostra macchina accetta connessioni anonime FTP? Come usereste il programma ncftp
per autenticarvi con il nome utente e la password vostri?
● La vostra macchina sta facendo girare un server web? Se così non è, fate che lo sia.
Controllate i file di registro!
10.6.3. La sicurezza
● Redigete un elenco delle porte aperte (in ascolto) nella vostra macchina.
● Supponendo che vogliate far funzionare un web server, quali servizi dovreste disattivare?
Come potreste farlo?
● Installate gli aggiornamenti disponibili.
● Come potete vedere chi è connesso al vostro sistema?
● Create un processo ripetitivo che vi ricordi di cambiare la vostra password ogni mese e
preferibilmente anche quella di root.
215
Introduzione a Linux
configurazione della scheda sonora;
riproduzione e copia dei CD:
riproduzione di file musicali;
controllo del volume;
video e televisione;
registrazione dei suoni.
11.1.1. Installazione
Molto probabilmente il vostro sistema è già installato con i driver audio e la configurazione è stata
eseguita al momento dell'installazione. Allo stesso modo, se voi aveste mai bisogno di sostituire il
vostro hardware audio, la maggior parte dei sistemi fornisce strumenti che consentono una
impostazione e configurazione semplice del dispositivo. Le attuali schede sonore plugandplay più
diffuse dovrebbero essere riconosciute automaticamente. Se siete in grado di ascoltare gli esempi
che vengono riprodotti durante la configurazione, premete solo OK ed ogni cosa sarà impostata per
voi.
Se la scheda non venisse rilevata automaticamente, potreste essere omaggiati di un elenco di schede
sonore e/o di loro proprietà tra cui scegliere. Dopo di ciò dovreste indicare la porta di I/O e le
impostazioni di IRQ e DMA corrette. Informazioni su queste impostazioni possono essere trovate
tra la documentazione della vostra scheda audio. Se siete in un sistema a doppio avvio con MS
Windows, tali informazioni possono essere rinvenute anche nel Pannello di Controllo di Windows.
Se l'identificazione automatica della scheda sonora fallisce
Se la vostra scheda sonora non è supportata in partenza, avrete necessità di seguire altre
tecniche: esse sono descritte nel Linux Sound HOWTO.
Oggigiorno quasi tutti i correnti chipset audio vengono supportati: restano escluse solo alcune
soluzioni professionali di alto livello e alcune schede sviluppate da produttori che si rifiutano di
documentare le specifiche dei loro chipset. Una panoramica delle periferiche supportate può essere
rintracciata nel sito di ALSA in http://www.alsaproject.org/alsadoc/index.php?vendor=All#matrix.
216
Introduzione a Linux
La configurazione dei sistemi dotati di ALSA si effettua con lo strumento alsaconf. Inoltre le
distribuzioni di solito mettono a disposizione i propri strumenti per configurare la scheda sonora;
tali strumenti potrebbero anche integrare il vecchio ed il nuovo modo di gestire le periferiche audio.
Siate certi di comprendere la differenza tra CD audio e CD dati. Non dovete montare un CD audio
nel file system per ascoltarlo. Ciò perché i dati di quel tipo di CD non sono dati del file system di
Linux; essi vengono letti ed inviati al canale d'uscita audio direttamente utilizzando un programma
di riproduzione di CD. Se il vostro CD è un CD dati contenente file .mp3, prima avrete bisogno di
montarlo nel file system e poi di usare uno dei programmi che tratteremo di seguito per riprodurre la
musica. Come montare i CD nel file system è stato spiegato nella Sezione 7.5.5.
Lo strumento cdparanoia dal pacchetto omonimo legge l'audio direttamente come dati dal CD,
senza conversioni in analogico, e scrive i dati in un file o incanalandolo in differenti formati, tra i
quali il più popolare è, probabilmente, il .wav. Vari strumenti per la conversione ad altri formati,
come .mp3, sono contenuti in molte distribuzioni o sono scaricabili come pacchetti separati. Il
progetto GNU fornisce parecchi strumenti per riprodurre, estrarre e codificare CD, e gestori di
database; guardate la sezione Free Software Directory, Audio per informazioni dettagliate.
La creazione di CD audio è semplificata, fra molti altri, dallo strumento kaudiocreator della suite
KDE. E' dotato delle chiare informazioni del Centro Aiuti KDE.
La creazione di CD è trattata genericamente nella Sezione 9.2.2.
Figura 111. Il riproduttore .mp3 XMMS
217
Introduzione a Linux
Parimenti molto diffusi per la riproduzione della musica sono Amarok, un'applicazione KDE, che
sta guadagnando costantemente popolarità, e MPlayer, che può riprodurre anche film.
Restrizioni
Alcune distribuzioni non vi permettono di ascoltare degli MP3 senza modificare la
configurazione: ciò è dovuto alle restrizioni della licenza sugli strumenti MP3. Potreste
aver bisogno di installare software aggiuntivo per essere in grado di suonare la vostra
musica.
In modalità testo potete usare il comando mplayer:
218
Introduzione a Linux
● Ogg Vorbis: formato audio libero: guardate la directory audio GNU per gli strumenti essi
potrebbero essere inclusi anche nella vostra distribuzione. Il formato è stato sviluppato in
quanto MP3 è soggetto a brevetti.
● Real audio e video: realplay della RealNetworks.
● SoX o Sound eXchange: in realtà un convertitore di suoni, si trova con il programma play.
Riproduce .wav, .ogg e vari altri formati, compresi quelli binari grezzi.
● Playmidi: un riproduttore MIDI (guardate la directory GNU).
● AlsaPlayer: dal progetto Advanced Linux Sound Architecture (guardate il sito web di
AlsaPlayer).
● mplayer: riproduce praticamente tutto, compresi i file mp3. Maggiori informazioni nel sito
web MPlayerHQ.
● hxplay: supporta RealAudio e RealVideo, mp3, audio mp4, Flash, wav e altro ancora.
Consultate HelixDNA (non tutti i componenti di questo software sono completamente
liberi).
● rhytmbox: basato sulla struttura di GStreamer, può riprodurre tutto ciò che viene supportato
da GStreamer, che si vanta di essere in grado di riprodurre tutto (date uno sguardo ai siti di
Rhytmbox e di GStreamer).
Controllate la documentazione del vostro sistema e le pagine man per strumenti particolari e
dettagliate spiegazioni su come usarli.
Non ho queste applicazioni nel mio sistema!
Molti degli strumenti e delle applicazioni trattati nelle sezioni precedenti sono software
opzionali. E' perciò possibile che tali applicazioni non siano state installate di base, ma
che possiate ritrovarle nella vostra distribuzione come pacchetti addizionali. Potrebbe
anche succedere molto facilmente che l'applicazione che state cercando non ci sia per
niente nella vostra distribuzione: In tal caso dovrete scaricarla dal sito web
dell'applicazione.
Tralasciando cosa scegliete di ascoltare come musica o altri suoni, ricordate che ci potrebbe essere
altra gente a cui non interessa ascoltare voi o il vostro computer. Provate ad essere cortesi,
specialmente nell'ambito dell'ufficio. Usate cuffie di qualità piuttosto quelle piccole da infilare nelle
orecchie: ciò è meglio per i vostri timpani e causa meno distrazioni per i colleghi.
11.2.3. La registrazione
Anche stavolta sono disponibili vari strumenti che vi permettono di registrare voci e musica. Per la
registrazione vocale potete usare arecord da linea di comando:
219
Introduzione a Linux
“Interrupt” o "Interruzione" significa che l'applicazione ha ricevuto un Ctrl+C. Ascoltate il suono
campionato usando il semplice comando play.
Questa è una buona prova che potete eseguire prima di sperimentare applicazioni che richiedono un
ingresso vocale come Voice over IP (VoIP). Tenete bene in mente che l'ingresso microfonico
dovrebbe essere attivato. Se non sentite la vostra voce, controllate le impostazioni del suono. Spesso
succede che il microfono è muto oppure che il volume è molto basso. Ciò può essere facilmente
sistemato usando alsamixer o l'interfaccia grafica del sistema sonoro specifica della vostra
distribuzione.
Sotto KDE potete avviare il programma di utilità krec; Gnome fornisce gnomesoundrecorder (il
registratore gnome del suono).
● xine: un riproduttore video libero
● ogle: riproduttore di DVD.
● okle: versione KDE di ogle.
● mplayer: Movie Player per Linux.
● totem: riproduce sia file audio che video, CD audio, VCD e DVD.
● realplay: da RealNetworks.
● hxplay: una alternativa a Real, consultate HelixDNA.
● kaffeine: riproduttore file multimediali di KDE3.
Assai probabilmente troverete uno di questi nei vostri menu grafici.
Tenete in mente che tutti i codec necessari per la visione dei diversi tipi di video potrebbero non
essere stati installati inizialmente nel vostro sistema. Potreste dover percorrere una lunga strada per
scaricare i w32codec e libdvdcss.
LPD ha rilasciato un documento che è molto appropriato per questa sezione: si intitola DVD
Playback HOWTO e descrive i vari strumenti disponibili per la visione di DVD in un sistema dotato
di lettore DVD. Si tratta di una buona appendice a DVD HOWTO che spiega l'installazione del
lettore.
Per guardare la TV c'è da scegliere tra questi strumenti, oltre a molti altri per la visione e la cattura
di TV, video ed altri flussi di dati:
● tvtime: grande programma con gestione delle stazioni, interazione con il televideo, modalità
film e molto altro ancora.
● zapping: visualizzatore TV specifico di Gnome.
220
Introduzione a Linux
● xawtv: visualizzatore TV X11.
Sebbene attualmente siano disponibili svariate applicazioni da scaricare gratuitamente, sia libere
che proprietarie, esistono alcuni grossi inconvenienti nella telefonia su Internet: tra quelli
maggiormente degni di nota, il sistema è inaffidabile, può essere lento o ci può essere molto rumore
nella connessione e così certamente non può venire usato per rimpiazzare la telefonia convenzionale
(pensate alle chiamate d'emergenza). Quantunque alcuni provider prendano le loro precauzioni, non
esiste alcuna garanzia che voi possiate raggiungere il soggetto che intendete chiamare.
Attualmente molte applicazioni non usano la crittografia, per cui state attenti che è potenzialmente
facile per qualcuno ascoltare di nascosto le vostre conversazioni. Se la sicurezza è una vostra
preoccupazione, leggete la documentazione allegata al vostro cliente VoIP. In aggiunta, se state
utilizzando un firewall, questo dovrebbe essere configurato per permettere connessioni da qualsiasi
provenienza: perciò l'uso del VoIP implica l'assunzione di rischi a livello della sicurezza del sito.
Se voleste realizzare un server da voi stessi, dovreste dare un occhio ad Asterisk.
Comunque, se vi trovate dietro ad un firewall che fa la "traduzione degli indirizzi di rete" (NAT o
221
Introduzione a Linux
Network Address Translation), alcuni servizi potrebbero non funzionare dal momento che essi
vedrebbero solo l'indirizzo IP del firewall e non quello del computer, che potrebbe essere non
instradabile su Internet (per esempio quando siete in una rete aziendale e il vostro indirizzo IP inizia
con 10., 192.168. o un altro prefisso di sottorete non instradabile). Ciò dipende dal protocollo
utilizzato dall'applicazione.
Anche la larghezza di banda disponibile potrebbe essere un fattore bloccante: alcune applicazioni
sono ottimizzate per un ridotto consumo di larghezza di banda, mentre altre potrebbero richiedere
connessioni ad alta larghezza di banda. Ciò dipende dal codec utilizzato dall'applicazione.
Fra le più comuni applicazioni ci sono il cliente Skype, che ha un'interfaccia che ricorda i
programmi di messaggeria istantanea, e XLite, la versione gratuita del telefono software XTen, che
assomiglia ad un telefono cellulare. Comunque, mentre questi programmi sono disponibile per lo
scaricamento gratuito e sono molto popolari, essi non sono liberi come la parola libera: adottano
protocolli proprietari e/o sono forniti esclusivamente in pacchetti binari, non in formato sorgente.
Clienti VoIP gratuiti e aperti sono per esempio Gizmo, Linphone, GnomeMeeting e Kphone.
Hardware del cliente
Sebbene il vostro computer, specialmente se è un PC portatile, possa avere un microfono
integrato, la resa sarebbe molto migliore collegando delle cuffie con microfono. Se si
tratta di scegliere, optate per delle cuffie USB in quanto funzionano indipendentemente
dall'hardware audio esistente. Usate alsamixer per configurare i livelli d'ingresso e
d'uscita del suono a vostro piacimento.
Le applicazioni VoIP sono assolutamente un mercato in espansione. Dei volontari tentano di
documentare lo stato attuale su http://www.voipinfo.org/.
11.5. Sommario
La piattaforma GNU/Linux è pienamente abilitata alla multimedialità. Viene supportata una ampia
varietà di periferiche come le schede sonore, le schede TV, le cuffie microfoniche, i lettori di CD e
DVD. L'elenco delle applicazioni è semplicemente infinito.
11.6. Esercizi
1) Dal menu di Gnome o di KDE aprite il pannello della configurazione sonora. Accertatevi
che gli altoparlanti o le cuffie siano connesse al vostro sistema e trovate un livello di
emissione che sia per voi confortevole. Assicuratevi, quando il vostro sistema è ALSA
compatibile, di usare il pannello giusto.
2) Se avete un microfono, provate a registrare un campione della vostra voce. Accertatevi che il
volume in ingresso non sia troppo alto, dal momento che ciò comporterebbe toni con picchi
elevati mentre comunicate con altri oppure la trasmissione di rumori di sottofondo all'altra
parte. Nella linea di comando potreste anche usare arecord o aplay per registrare ed
222
Introduzione a Linux
ascoltare il suono.
3) Localizzate i file sonori nel vostro sistema e provate ad ascoltarli.
4) Inserite un CD audio e provate ad ascoltarlo.
5) Trovate un compagno di chat e configurate un programma VoIP (dovreste prima installarne
uno).
6) Potete ascoltare le radio Internet?
7) Se avete un lettore DVD e un film su disco DVD, provate a riprodurlo.
223
Introduzione a Linux
A.1.2. Editor
● "Learning the Vi Editor" di Linda Lamb e Arnold Robbins, O"Reilly UK, ISBN 1565924266
● "GNU Emacs Manual" di Richard M. Stallman, iUniverse.Com Inc., ISBN 0595100333
● "Learning GNU Emacs" di Debra Cameron, Bill Rosenblatt ed Eric Raymond, O"Reilly UK,
ISBN 1565921526
● "Perl Cookbook" di Tom Christiansen e Nathan Torkington, O'Reilly UK, ISBN 156592433
A.1.3. Shell
● "Unix Shell Programming" di Stephen G. Kochan e Patrick H. Wood, Sams Publishing,
ISBN 067248448X
● "Learning the Bash Shell" di Cameron Newham e Bill Rosenblatt, O'Reilly UK, ISBN
1565923472
● "Linux and Unix Shell Programming" di David Tansley, Addison Wesley Pubblishing
Company, ISBN 0201674726
● "Unix C Shell Field Guide" d Gail e Paul Anderson, Prentice Hall, ISBN 013937468X
A.1.4. X Window
● "Gnome User's Guide" della Comunità Gnome, iUniverse.Com Inc., ISBN 0595132251
● "KDE Bible" di Dave Nash, Hungry Minds Inc., ISBN 0764546929
● "The Concise Guide to XFree86 for Linux" di Aron Hsiao, Que, ISBN 0789721821
● "The New XFree86" di Bill Ball, Prima Publishing, ISBN 0761531521
● "Beginning GTK+ and Gnome" di Peter Wright, Wrox Press, ISBN 1861003811
● "KDE 2.0 Development" di David Sweet e Matthias Ettrich, Sams Publishing, ISBN
0672318911
● "GTK+/Gnome Application Development" di Havoc Pennington, New Riders Publishing,
224
Introduzione a Linux
ISBN 0735700788
A.1.5. Reti
● "TCP/IP Illustrated, Volume I: The Protocols" di W. Richard Stevens, AddisonWesley
Professional Computing Serie, ISBN 02001633469
● "DNS and BIND" di Paul Albitz, Cricket Liu, Mike Loukides e Deborah Russell, O'Reilly &
Associates, ISBN 0696001584
● "The Concise Guide to DNS and Bind" di Nicolai Langfeldt, Que, ISBN 0789722739
● "Implementing LDAP" di Mark Wilcox, Wrox Press, ISBN 1861002211
● "Understanding and deploying LDAP directory services" di Tim Howes and co., Sams,
ISBN 0672323168
● "Sendmail" di Brian Costales e Eric Allman, O'Reilly UK, ISBN 1565922220
● "Removing the Spam: Email Processing and Filtering" di Geoff Mulligan, Addison Wesley
Publishing Company, ISBN 0201379570
● "Managing IMAP" di Dianna & Kevin Mullet, O'Reilly UK, ISBN 059600012X
A.2.3 Distribuzioni
● Progetto Fedora : OS sostenuto dalla comunità sponsorizzata da RedHat
●
Mandriva
●
Debian
●
TurboLinux
●
Slackware
225
Introduzione a Linux
● SuSE
●
LinuxIso.org : immagini di CD per tutte le distribuzioni
●
Knoppix : distribuzione che gira su CD; non dovete installare nulla da quest'ultimo
●
DistroWatch.com : scovate un Linux che va d'accordo con il vostro stile
● ...
A.2.4. Software
● Freshmeat : software nuovo, archivi di software
●
OpenSSH : sito di Secure SHell
●
OpenOffice : suite da ufficio compatibile MS
●
KDE : sito di K Desktop
●
GNU : GNU e software GNU
●
Gnome : il sito ufficiale Gnome
●
RPM Find : tutti i pacchetti RPM
●
Samba : servizi MS Windows di file e stampa
● Home of the OpenLDAP Project : server/clienti/utilità OpenLDAP, FAQ e altra
documentazione
●
Sendmail Homepage : una approfondita trattazione tecnica delle caratteristiche di Sendmail,
comprendente esempi di configurazione
●
Netfilter : contiene una miscellanea di informazioni su iptables: HOWTO, FAQ, guide, ...
● Sito ufficiale GIMP : tutte le informazioni su GNU Image Manipulation Program
[programma GNU di manipolazione delle immagini]
●
SourceForge.net : sito di sviluppo del software a sorgente aperto
● homepage di vIm
226
Introduzione a Linux
Quale ulteriore mezzo di orientamento per i nuovi utenti con esperienze di Windows, la tabella
seguente elenca dei comandi MSDOS con i loro corrispondenti in Linux. Tenete in mente che
solitamente i comandi Linux hanno un certo numero di opzioni. Leggete le pagine Info o man sul
comando per scoprire di più.
Tabella B1. Panoramica dei comandi DOS/Linux
Comandi DOS Comandi Linux
<comando> /? man <comando> oppure comando --help
cd cd
chdir pwd
cls clear
copy cp
date date
del rm
dir ls
echo echo
edit vim (o altro editor)
exit exit
fc diff
find grep
format mke2fs oppure mformat
mem free
mkdir mkdir
more more oppure less
move mv
ren mv
time date
227
Introduzione a Linux
Tabella C1. Caratteristiche comuni delle shell
Comando Significato
> Redirige l'output
>> Aggiunge al file
< Redirige l'input
<< Documento “Qui” (redirige l'input)
| Incanalamento dell'output
& Esegue il processo sullo sfondo
; Separa comandi sulla stessa linea
* Usa qualsiasi carattere nel nome del file
? Sostituisce un singolo carattere nel nome del file
[ ] Usa qualsiasi carattere racchiuso
( ) Esegue in una sottoshell
` ` Sostituisce l'output del comando racchiuso
“ ” Apici parziali (consente l'espansione di variabili e comandi)
' ' Apici totali (nessuna espansione)
\ Impedisce l'interpretazione del carattere successivo
$var Usa il valore per la variabile
$$ ID del processo
$0 Nome del comando
$n ennesimo argomento (n da 0 a 9)
$* Tutti gli argomenti come una semplice parola
# Inizio di un commento
bg Esecuzione sullo sfondo
228
Introduzione a Linux
Comando Significato
break Interruzione da comandi ciclici
cd Cambia directory
continue Riavvia un ciclo di programma
echo Mostra l'output
eval Valuta degli argomenti
exec Esegue una nuova shell
fg Esecuzione in primo piano
jobs Mostra i processi attivi
kill Termina i processi in funzione
newgrp Cambia ad un nuovo gruppo
shift Parametri posizionali di spostamento
stop Sospende un processo sullo sfondo
suspend Sospende un processo in primo piano
time Cronometra un programma
umask Imposta o elenca i permessi dei file
unset Cancella le definizioni delle variabili o delle funzioni
wait Attende che finisca un processo sullo sfondo
Compatibilità delle shell
Dal momento che Bourne Again SHell è un superinsieme di sh, tutti i comandi sh
funzioneranno anche con bash ma non viceversa. bash possiede molte altre
caratteristiche proprie e, come dimostra la seguente tabella, molte di queste sono state
incorporate prendendole da altre shell.
Poiché la Turbo C shell è un superinsieme di csh, tutti i comandi csh funzioneranno con
tcsh, ma non il contrario.
Tabella C2. Caratteristiche differenti delle shell
229
Introduzione a Linux
230
Introduzione a Linux
La Bourne Again SHell possiede molte caratteristiche qui non riportate. Questa tabella è solo per
darvi un'idea di come tale shell incorpori tutte le trovate utili delle altre shell: non ci sono spazi
vuoti nella colonna di bash. Ulteriori informazioni sulle caratteristiche riscontrabili solamente in
Bash si possono rintracciare nelle pagine info di Bash, nella sezione "Bash Features".
Maggiori informazioni:
dovreste leggere almeno un manuale, quello della vostra shell. La scelta preferibile potrebbe essere
info bash, essendo bash la shell GNU e la più semplice per i principianti. Stampatelo, portatevelo a
casa e studiatelo ogni volta che avete 5 minuti.
Guardate l'Appendice B se avete difficoltà ad assimilare i comandi della shell.
231
Introduzione a Linux
D.1. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document
"free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially. Secondarily, this License
preserves for the author and publisher a way to get credit for their work, while not being considered
responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must
themselves be free in the same sense. It complements the GNU General Public License, which is a
copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software
needs free documentation: a free program should come with manuals providing the same freedoms
that the software does. But this License is not limited to software manuals; it can be used for any
textual work, regardless of subject matter or whether it is published as a printed book. We
recommend this License principally for works whose purpose is instruction or reference.
A "Modified Version" of the Document means any work containing the Document or a portion of it,
either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a frontmatter section of the Document that deals
exclusively with the relationship of the publishers or authors of the Document to the Document's
overall subject (or to related matters) and contains nothing that could fall directly within that overall
subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not
explain any mathematics.) The relationship could be a matter of historical connection with the
subject or with related matters, or of legal, commercial, philosophical, ethical or political position
regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those
of Invariant Sections, in the notice that says that the Document is released under this License. If a
232
Introduzione a Linux
section does not fit the above definition of Secondary then it is not allowed to be designated as
Invariant. The Document may contain zero Invariant Sections. If the Document does not identify
any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as FrontCover Texts or Back
Cover Texts, in the notice that says that the Document is released under this License. A FrontCover
Text may be at most 5 words, and a BackCover Text may be at most 25 words.
A "Transparent" copy of the Document means a machinereadable copy, represented in a format
whose specification is available to the general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of pixels) generic paint
programs or (for drawings) some widely available drawing editor, and that is suitable for input to
text formatters or for automatic translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent file format whose markup, or absence of
markup, has been arranged to thwart or discourage subsequent modification by readers is not
Transparent. An image format is not Transparent if used for any substantial amount of text. A copy
that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo
input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard
conforming simple HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats
that can be read and edited only by proprietary word processors, SGML or XML for which the DTD
and/or processing tools are not generally available, and the machinegenerated HTML, PostScript or
PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are
needed to hold, legibly, the material this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means the text near the most
prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely
XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here
XYZ stands for a specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you
modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License
applies to the Document. These Warranty Disclaimers are considered to be included by reference in
this License, but only as regards disclaiming warranties: any other implication that these Warranty
Disclaimers may have is void and has no effect on the meaning of this License.
233
Introduzione a Linux
this License applies to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute. However, you may
accept compensation in exchange for copies. If you distribute a large enough number of copies you
must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display
copies.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones
listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must
either include a machinereadable Transparent copy along with each Opaque copy, or state in or
with each Opaque copy a computernetwork location from which the general networkusing public
has access to download using publicstandard network protocols a complete Transparent copy of the
Document, free of added material. If you use the latter option, you must take reasonably prudent
steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy
will remain thus accessible at the stated location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an updated
version of the Document.
D.5. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections
2 and 3 above, provided that you release the Modified Version under precisely this License, with the
Modified Version filling the role of the Document, thus licensing distribution and modification of
the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the
Modified Version:
GNU FDL Modification Conditions
234
Introduzione a Linux
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
and from those of previous versions (which should, if there were any, be listed in the History
section of the Document). You may use the same title as a previous version if the original
publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship
of the modifications in the Modified Version, together with at least five of the principal
authors of the Document (all of its principal authors, if it has fewer than five), unless they
release you from this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright
notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form shown
in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at
least the title, year, new authors, and publisher of the Modified Version as given on the Title
Page. If there is no section Entitled "History" in the Document, create one stating the title,
year, authors, and publisher of the Document as given on its Title Page, then add an item
describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network locations given in the
Document for previous versions it was based on. These may be placed in the "History"
section. You may omit a network location for a work that was published at least four years
before the Document itself, or if the original publisher of the version it refers to gives
permission.
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the
section, and preserve in the section all the substance and tone of each of the contributor
acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
Section numbers or the equivalent are not considered part of the section titles.
M.Delete any section Entitled "Endorsements". Such a section may not be included in the
Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with
any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new frontmatter sections or appendices that qualify as Secondary
Sections and contain no material copied from the Document, you may at your option designate
some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections
in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of
235
Introduzione a Linux
your Modified Version by various partiesfor example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a FrontCover Text, and a passage of up to 25 words
as a BackCover Text, to the end of the list of Cover Texts in the Modified Version. Only one
passage of FrontCover Text and one of BackCover Text may be added by (or through arrangements
made by) any one entity. If the Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity you are acting on behalf of, you
may not add another; but you may replace the old one, on explicit permission from the previous
publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their
names for publicity for or to assert or imply endorsement of any Modified Version.
The combined work need only contain one copy of this License, and multiple identical Invariant
Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same
name but different contents, make the title of each such section unique by adding at the end of it, in
parentheses, the name of the original author or publisher of that section if known, or else a unique
number. Make the same adjustment to the section titles in the list of Invariant Sections in the license
notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original
documents, forming one section Entitled "History"; likewise combine any sections Entitled
"Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled
"Endorsements".
You may extract a single document from such a collection, and distribute it individually under this
License, provided you insert a copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that document.
236
Introduzione a Linux
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the
Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed
on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if
the Document is in electronic form. Otherwise they must appear on printed covers that bracket the
whole aggregate.
D.9. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document
under the terms of section 4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the Document, and any Warranty
Disclaimers, provided that you also include the original English version of this License and the
original versions of those notices and disclaimers. In case of a disagreement between the translation
and the original version of this License or a notice or disclaimer, the original version will prevail.
D.10. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for
under this License. Any other attempt to copy, modify, sublicense or distribute the Document is
void, and will automatically terminate your rights under this License. However, parties who have
received copies, or rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
237
Introduzione a Linux
Each version of the License is given a distinguishing version number. If the Document specifies that
a particular numbered version of this License "or any later version" applies to it, you have the option
of following the terms and conditions either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation. If the Document does not specify a
version number of this License, you may choose any version ever published (not as a draft) by the
Free Software Foundation.
Sample Invariant Sections list
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation; with no
Invariant Sections, no FrontCover Texts, and no BackCover Texts. A copy of the
license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, FrontCover Texts and BackCover Texts, replace the "with...Texts."
line with this:
Sample Invariant Sections list
with the Invariant Sections being LIST THEIR TITLES, with the FrontCover Texts
being LIST, and with the BackCover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these
examples in parallel under your choice of free software license, such as the GNU General Public
License, to permit their use in free software.
238
Introduzione a Linux
Glossario
Questa sezione contiene una panoramica in ordine alfabetico dei comandi trattati nel
presente documento.
A
a2ps
Formatta i file per la stampa con una stampante PostScript (v. Sezione 8.1.2.).
acroread
Visualizzatore PDF (v. Sezione 8.1.2.2.)
adduser
Crea un nuovo utente o aggiorna le informazioni base del nuovo utente.
alias
Crea un alias di shell per un comando.
anacron
Esegue periodicamente dei comandi, supponendo che la macchina non funzioni continuamente.
apropos
Cerca stringhe nel database di whatis (v. Sezione 2.3.3.2.).
aptget
Il programma di utilità per la gestione dei pacchetti di APT (v. Sezione 7.5.3.2.).
aspell
Correttore delle parole
at, atq, atrm
Accoda, esamina o cancella processi per un'esecuzione ritardata (v. Sezione 4.1.2.2.).
aumix
Regola il mixer audio (v. Sezione 11.2.2.3.).
(g)awk
Linguaggio di scansione ed elaborazione di schemi.
239
Introduzione a Linux
B
bash
Bourne Again SHell (v. Sezione 3.2.3.2. e Sezione 7.2.5.).
batch
Accoda, esamina o cancella processi ad esecuzione ritardata (v. Sezione 4.1.2.2.).
bg
Esegue un processo in sottofondo (v. Sezione 4.1.2.1.).
bitmap
Utilità di elaborazione e conversione di bitmap per il sistema X Window.
bzip2
Un compressore di file ad ordinamento di blocchi (v. Sezione 9.1.1.3.).
C
cat
Concatena file e li stampa nello standard output (v. Sezione 2.2. e Sezione 3.2.4.).
cd
Cambia directory (v. Sezione 2.2.).
cdp/cdplay
Un programma interattivo in modalità testo per controlla e riprodurre CD Rom audio sotto Linux (v.
Sezione 11.2.1.).
cdparanoia
Un'utilità di lettura di CD audio che comprende caratteristiche aggiuntive di verificazione dei dati
(v. Sezione 11.2.1.).
cdrecord
Registra un CDR (v. Sezione 9.2.2.).
chattr
Cambia gli attributi dei file.
chgrp
Cambia la proprietà del gruppo (v. Sezione 3.4.2.3.).
chkconfig
240
Introduzione a Linux
Aggiorna o ricerca informazioni di livello d'esecuzione per i servizi di sistema (v. Sezione 4.2.5.1.).
chmod
Cambia i permessi di accesso al file (v. Sezione 3.4.1., Sezione 3.4.2.1. e Sezione 3.4.2.4.).
chown
Cambia il proprietario e il gruppo di un file (v. Sezione 3.4.2.3.).
compress
Comprime file.
cp
Copia file e directory (v. Sezione 3.2.2.).
crontab
Gestisce i file crontab (v. Sezione 4.4.4.).
csh
Apre una C shell (v. Sezione 3.2.3.2.).
cut
Rimuove sezioni da ogni linea di file (v. Sezione 7.2.5.2.).
D
date
Stampa o imposta ora e data del sistema.
dd
Converte e copia un file (disk dump) (v. Sezione 9.2.1.2.).
df
Riporta l'utilizzo del disco da parte del file system (v. Sezione 3.1.2.3.).
dhcpcd
Demone cliente DHCP (v. Sezione 10.2.8.).
diff
Scopre le differenze tra due file.
dig
Invia pacchetti di ricerca del nome di dominio a server dei nomi (v. Sezione 10.1.2.6.).
dmesg
241
Introduzione a Linux
Stampa o controlla il kernel ring buffer.
du
Stima l'uso di spazio da parte del file.
E
echo
Visualizza una linea di testo (v. Sezione 3.2.1.).
ediff
Traduttore da diff all'inglese.
egrep
Extended grep.
eject
Smonta ed espelle supporti removibili (v. Sezione 7.5.5.2.).
emacs
Avvia l'editor Emacs (v. Sezione 6.1.2.2.).
exec
Invoca sottoprocessi.
exit
Esce dalla shell corrente (v. Sezione 2.2.).
export
Aggiunge funzioni all'ambiente di shell (v. Sezione 3.2.1., Sezione 7.2.1.2. e Sezione 7.2.4.2.).
F
fax2ps
Converte un facsimile TIFF in PostScript (v, Sezione 8.1.2.).
fdformat
Formatta dischi floppy (v. Sezione 9.2.1.1).
fdisk
Gestore Linux della tabella delle partizioni (v. Sezione 3.1.2.2.).
fg
Porta in primo piano un processo (v. Sezione 4.1.2.1.).
242
Introduzione a Linux
file
Determina il tipo di file (v. Sezione 3.3.1.2.).
find
Trova file (v. Sezione 3.3.3.3.).
formail
(Ri)organizzatore della posta (v. Sezione 10.2.2.3.).
fortune
Stampa una probabilmente interessante frase a caso.
ftp
Servizi di trasferimento file (insicuri a meno che venga utilizzato l'account anonimo!)(v. Sezione
10.2.4.2.).
G
galeon
Navigatore grafico della Rete.
gdm
Gnome Display Manager (v. Sezione 4.2.4.).
(min/a)getty
Controlla le periferiche della console.
gimp
Programma di elaborazione di immagini.
grep
Stampa le linee che coincidono con uno schema (v. Sezione 3.3.3.4 e Sezione 5.3.1.).
groff
Emulate il comando nroff con groff (v. Sezione 8.1.2.).
grub
Shell di grub (v. Sezione 4.2.3. e Sezione 7.5.4.).
gv
Un visualizzatore PostScript e PDF (v. Sezione 8.1.2.2.).
gzip
243
Introduzione a Linux
Comprime ed espande file (v. Sezione 9.1.1.3.).
H
halt
Ferma il sistema (v. Sezione 4.2.6.).
head
Restituisce la prima parte dei file (v. Sezione 3.3.4.3.).
help
Mostra gli aiuti in un comando integrato nella shell.
host
Utilità di DNS lookup (v. Sezione 10.1.2.6.).
httpd
Server Apache del protocollo di trasferimento ipertestuale (http) (v. Sezione 10.2.3.1.).
I
id
Stampa i veri ed effettivi UID e GID (v. Sezione 3.4.1.).
ifconfig
Configura l'interfaccia di rete o ne mostra la configurazione (v. Sezione 10.1.2.3.).
info
Legge i documenti Info (v. Sezione 2.3.3.1.).
init
Inizializzazione del controllo dei processi (v. Sezione 4.1.5.1., Sezione 4.2.4. e Sezione 4.2.5.).
iostat
Mostra le statistiche di I/O (v. Sezione 4.3.5.4.).
ip
Mostra/cambia lo stato dell'interfaccia di rete (v. Sezione 10.1.2.3.).
ipchains
Amministrazione del firewall IP (v. Sezione 10.4.4.2.).
iptables
244
Introduzione a Linux
Amministrazione del filtro dei pacchetti IP (v. Sezione 10.4.4.2.).
J
jar
Strumento di archiviazione Java (v. Sezione 9.1.1.4.).
jobs
Elenca i processi in sottofondo.
K
kdm
Gestore desktop di KDE (v. Sezione 4.2.4.).
kill(all)
Termina i processi (v. Sezione 4.1.2.1.).
ksh
Apre una shell Korn (v. Sezione 3.2.3.2.).
L
ldapmodify
Modifica un dato LDAP (v. Sezione 10.2.9.3.).
less
more con maggiori caratteristiche (v. Sezione 3.3.4.2.).
lilo
LInux boot LOader (v. Sezione 4.2.).
links
Navigatore WWW in modalità testo (v. Sezione 10.2.3.2.).
ln
Crea collegamenti tra file (v. Sezione 3.3.5.).
loadkeys
Carica le tabelle di traduzione della tastiera (v. Sezione 7.4.1.).
locate
245
Introduzione a Linux
Trova file (v. Sezione 3.3.3.3. e Sezione 4.4.4.).
logout
Chiude la shell corrente (v. Sezione 2.1.3.).
lp
Invia richieste al servizio di stampa LP (v. Sezione 8.1.).
lpc
Programma di controllo della stampante di linea (v. Sezione 8.1.).
lpq
Programma di verifica delle code di attesa di stampa (v. Sezione 8.1.).
lpr
Stampa offline (v. Sezione 8.1.).
lprm
Rimuove le richieste di stampa (v. Sezione 8.1,).
ls
Lista il contenuto della directory (v. Sezione 2.2., Sezione 3.1.1.2. e Sezione 3.3.1.1.).
lynx
Navigatore WWW in modalità testo (v. Sezione 10.2.3.2.).
M
mail
Invia e riceve posta (v. Sezione 10.2.2.3.).
man
Legge le pagine man (v. Sezione 2.3.2.).
mcopy
Copia file MSDOS verso/da Unix.
mdir
Mostra una directory MSDOS.
memusage
Mostra l'uso della memoria (v. Sezione 4.3.5.3.).
memusagestat
246
Introduzione a Linux
Mostra le statistiche sull'uso della memoria (v. Sezione 4.3.5.3.).
mesg
Controlla gli accessi in scrittura al vostro terminale (v. Sezione 4.1.6.).
mformat
Aggiunge un file system MSDOS ad un disco floppy formattato a basso livello (v. Sezione 9.2.1.1.).
mkbootdisk
Crea un floppy di avvio autonomo per la partenza del sistema.
mkdir
Crea una directory (v. Sezione 3.3.2.).
mkisofs
Crea un file system ibrido ISO9660 (v. Sezione 9.2.2.).
mplayer
Riproduttore/codificatore di film per Linux (v.).
more
Filtra per mostrare del testo uno schermo alla volta (v. Sezione 3.3.4.2.).
mount
Monta un file system o mostra le informazioni relative ai file montati (v. Sezione 7.5.5.1.).
mozilla
Navigatore web (v. Sezione 10.2.3.2.).
mt
Controlla le operazioni relative all'unità a nastro magnetico.
mtr
Strumento di diagnosi per la rete.
mv
Rinomina i file (v. Sezione 3.3.2.).
N
named
Server dei nomi di dominio Internet (v. Sezione 10.2.7.).
ncftp
247
Introduzione a Linux
Programma navigatore per servizi ftp (insicuri!) (v. Sezione 10.2.4.2.).
netstat
Stampa le connessioni di rete, le tabelle di instradamento, le connessioni mascherate e le
appartenenze al multicast (v. Sezione 10.1.2.5. e Sezione 10.4.2.).
nfsstat
Stampa le statistiche sui file system in rete.
nice
Avvia un programma con la priorità di esecuzione modificata (v. Sezione 4.3.5.1.).
nmap
Strumento di esplorazione della rete e scanner della sicurezza.
ntsysv
Semplice interfaccia per configurare i livelli di esecuzione (v. Sezione 4.2.5.1.).
O
ogle
Lettore di DVD con il supporto dei menu DVD (v.).
P
passwd
Cambia la password (v. Sezione 2.2. e Sezione 4.1.6.).
pdf2ps
Convertitore GhostScript da PDF a PostScript (v. Sezione 8.1.2.).
perl
Practical Extraction and Report Language.
pg
Output testuale di pagina (v. Sezione 3.3.4.2.).
ping
Invia una richiesta di eco ad un host (v. Sezione 10.1.2.6.).
pr
Converte file di testo per la stampa.
248
Introduzione a Linux
printenv
Stampa tutto o parte dell'ambiente (v. Sezione 7.2.1.).
procmail
Elaboratore di posta autonomo (v. Sezione 10.2.2.3.).
ps
Restituisce lo stato dei processi (v. Sezione 4.1.4. e Sezione 4.3.5.4.).
pstree
Mostra un albero dei processi (v. Sezione 4.1.4.).
pwd
Stampa la Present Working Directory, la corrente directory di lavoro (v. Sezione 2.2.).
Q
quota
Mostra l'uso dei dischi ed i limiti (v. Sezione 3.2.3.3.).
R
rcp
Copia in remoto (non sicuro!).
rdesktop
Cliente di protocollo Remote Desktop (v. Sezione 10.3.6.).
reboot
Riavvia il sistema (v. Sezione 4.2.6.).
renice
Altera la priorità di esecuzione dei processi (v. Sezione 4.3.5.1.).
rlogin
Login remoto (telnet, insicuro!) (v. Sezione 10.3.2. e Sezione 10.3.3.2.).
rm
Rimuove un file (v. Sezione 3.3.2.).
rmdir
Rimuove una directory (v. Sezione 3.3.2.2.).
249
Introduzione a Linux
roff
Un compendio del sistema di typsetting di roff (v. Sezione 8.1.2.).
rpm
Gestore di pacchetti RPM (v. Sezione 7.5.2.1.).
rsh
Shell remota (non sicura!) (v. Sezione 10.3.2.).
S
scp
Copia remota sicura (v. Sezione 10.3.4.4.).
screen
Gestore dello schermo con emulazione VT100 (v. Sezione 4.1.2.1.).
set
Mostra, imposta o modifica una variabile.
setterm
Imposta gli attributi di terminale.
sftp
FTP sicuro (criptato) (v. Sezione 10.2.4.2. e Sezione 10.3.4.4.).
sh
Apre una shell standard (v. Sezione 3.2.3.2.).
shutdown
Spegne il sistema (v. Sezione 4.2.6.).
sleep
Attende per un certo tempo (v. Sezione 4.4.1.).
slocate
Versione di avanzata sicurezza di GNU locate (v. Sezione 3.3.3.3.).
slrnn
Cliente Usnet in modalità testo (v. Sezione 10.2.6.).
snort
Strumento di scoperta delle intrusioni in rete.
250
Introduzione a Linux
sort
Riordina le linee di file di testo (v. Sezione 5.3.2.).
ssh
Shell sicura (v. Sezione 10.3.4.).
sshkeygen
Generazione di chiave di autenticazione, gestione e conversione (v. Sezione 10.3.4.5.).
stty
Cambia e stampa le impostazioni della linea di terminale.
su
Cambia utente (v. Sezione 3.2.1., Sezione 7.5.3.2. e Sezione 10.4.6.).
T
tac
Concatena e stampa i file al contrario (v. cat).
tail
Restituisce l'ultima parte dei file (v. Sezione 3.3.4.3.).
talk
Parlare con un utente.
tar
Utilità di archiviazione (v. Sezione 9.1.1.1.).
tcsh
Apre una shell Turbo C (v. Sezione 3.2.3.2.).
telnet
Interfaccia utente al protocollo TELNET (non sicuro!) (v. Sezione 10.3.2.).
tex
Per formattare ed impostare tipograficamente un testo (v. Sezione 8.1.2.).
time
Temporizza un semplice comando o restituisce l'utilizzo delle risorse (v. Sezione 4.3.2.).
tin
Programma di lettura delle news (v. Sezione 10.2.6.).
251
Introduzione a Linux
top
Mostra i processi ordinati in base all'occupazione della CPU (v. Sezione 4.1.4., Sezione 4.3.5.3. e
Sezione 4.3.5.4.).
touch
Cambia le marche temporali dei file (v. Sezione 7.1.2.).
traceroute
Stampa i pacchetti di instradamento presi dall'host di rete (v. Sezione 10.1.2.6.).
tripwire
Un verificatore dell'integrità dei file per sistemi UNIX (v. Sezione 10.4.5.).
troff
Formatta documenti (v. Sezione 8.1.2.).
tvtime
Un'applicazione televisiva di alta qualità.
twm
Tab Window Manager per il sistema X Window.
U
ulimit
Controlla le risorse (v. Sezione 7.1.2.5.).
umask
Imposta la maschera utente della creazione di file (v. Sezione 3.4.2.2.).
umount
Smonta un file system.
uncompress
Decomprime file compressi.
uniq
Rimuove le linee duplicate partendo da un file ordinato (v. Sezione 5.3.2.).
update
Demone del kernel per ripulire i buffer sporchi verso il disco.
uptime
252
Introduzione a Linux
Mostra da quanto è in funzione il sistema e il carico medio (v. Sezione 4.1.4. e Sezione 4.3.5.2.).
userdel
cancella un account di utente ed i relativi file.
V
vi(m)
Avvia l'editor vi (o vi "improved") (v. Sezione 6.1.2.3.).
vimtutor
Il tutorial di Vim.
vmstat
Riporta le statistiche della memoria virtuale (v. Sezione 4.3.5.4.).
W
w
Mostra chi è collegato e cosa sta facendo.
wall
Invia un messaggio al terminale di ognuno (v. Sezione 4.1.6.).
wc
Stampa il numero di byte, parole e linee contenute nei file (v. Sezione 3.2.1.).
which
Mostra l'intero percorso dei comandi (di shell) (v. Sezione 3.2.1. e Sezione 3.3.3.2.).
who
Mostra chi è collegato (v. Sezione 4.1.6.).
whoami
Stampa l'effettivo ID di utente.
whois
Interroga un database whois o di soprannomi (v. Sezione 10.1.2.6.).
write
Invia un messaggio ad un altro utente (v. Sezione 4.1.6.).
253
Introduzione a Linux
xauth
Programma di utilità per i file X authority.
xawtv
Un programma X11 per guardare la TV.
xcdroast
Interfaccia grafica di cdrecord (v. Sezione 9.2.2.).
xclock
Orologio analogico/digitale per X.
xconsole
Controlla i messaggi della console di sistema con X.
xdm
X Display Manager con supporto per XDMCP, con selettore di host (v. Sezione 4.2.4. e Sezione
7.3.2.).
xdvi
Visualizzatore di DVI (v. Sezione 8.1.2.2.).
xfs
Server X di font.
xhost
Programma per X di controllo degli accessi dei server (v. Sezione 10.3.3.2.).
xine
Un lettore video gratuito (v.).
xinetd
Il demone esteso di servizi Internet (eXtended InterNET services Daemon) (v. Sezione 10.2.1.2.).
xload
Visualizzazione sotto X della media dei carichi di sistema (v. Sezione 4.3.5.6.).
xlsfonts
Visualizzatore per X dell'elenco dei server di font.
xmms
Lettore audio per X (v. Sezione 11.2.2.1.).
254
Introduzione a Linux
xpdf
Visualizzatore di PDF (v. Sezione 8.1.2.2.).
xterm
Emulatore di terminale per X.
Z
zapping
Un visore TV per ambiente Gnome.
zcat
Comprime o espande file.
zgrep
Ricerca espressioni regolari possibilmente all'interno di file compressi.
zmore
Filtro per la visione di testi compressi.
255