Sei sulla pagina 1di 652

Pagina 1

Testo originale
Contribuisci a una traduzione migliore

Pagina 3
2

Linux ®

Bibbia
Nona edizione

Pagina 5
4
Linux ®
BIBBIA Nona edizione

Christopher Negus

Pagina 6

Bibbia Linux®, nona edizione

Pubblicato da
John Wiley & Sons, Inc.
10475 Crosspoint Boulevard
Indianapolis, NEL 46256
www.wiley.com

Copyright © 2015 di John Wiley & Sons, Inc., Indianapolis, Indiana

Pubblicato contemporaneamente in Canada

ISBN: 978-1-118-99987-5

ISBN: 978-1-118-99989-9 (ebk)

ISBN: 978-1-118-99988-2 (ebk)

Prodotto negli Stati Uniti d'America

10 9 8 7 6 5 4 3 2 1

Nessuna parte di questa pubblicazione può essere riprodotta, memorizzata in un sistema di recupero o trasmessa in qualsiasi forma o da qualsiasi altra
mezzi, elettronici, meccanici, fotocopia, registrazione, scansione o altro, ad eccezione di quanto consentito ai sensi
Le sezioni 107 o 108 dello United States Copyright Act del 1976, senza la previa autorizzazione scritta di
Editore o autorizzazione tramite il pagamento della tariffa per copia appropriata al Copyright Clearance Center,
222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Richieste all'editore per
il permesso deve essere indirizzato al dipartimento autorizzazioni, John Wiley & Sons, Inc., 111 River Street,
Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008 o online all'indirizzo http://www.wiley.com/go/
permessi.

LIMITE DI RESPONSABILITÀ / ESCLUSIONE DI GARANZIA: L'EDITORE E L'AUTORE NON FORNISCONO ALCUNA DICHIARAZIONE
O GARANZIE RELATIVE ALL'ACCURATEZZA O COMPLETEZZA DEL CONTENUTO DI QUESTA OPERA E
ESCLUDERE IN PARTICOLARE TUTTE LE GARANZIE, INCLUSE SENZA LIMITAZIONE LE GARANZIE DI IDONEITÀ PER UN
PARTICOLARE SCOPO. NESSUNA GARANZIA PU ESSERE CREATA O ESTESA DA MATERIALI DI VENDITA O PROMOZIONALI.
I CONSIGLI E LE STRATEGIE QUI CONTENUTE POTREBBERO NON ESSERE ADATTI A OGNI SITUAZIONE. QUESTO LAVORO È
VENDUTO CON LA COMPRENSIONE CHE L'EDITORE NON È IMPEGNATO A RENDERARE LEGALE, CONTABILE,
O ALTRI SERVIZI PROFESSIONALI. SE E 'RICHIESTA ASSISTENZA PROFESSIONALE, SERVIZI DI UN COMPETENTE
CERCARE PERSONA PROFESSIONALE. NÉ L'EDITORE NÉ L'AUTORE SARANNO RESPONSABILI
DANNI DERIVANTI DA QUI. IL FATTO CHE IN QUESTA OPERA SI RIFERISCE A UN'ORGANIZZAZIONE O A UN SITO WEB
COME CITAZIONE E / O POTENZIALE FONTE DI ULTERIORI INFORMAZIONI NON SIGNIFICA CHE L'AUTORE O
L'EDITORE APPROVA LE INFORMAZIONI CHE L'ORGANIZZAZIONE O IL SITO WEB POSSONO FORNIRE O
RACCOMANDAZIONI CHE PUO 'FARE. INOLTRE, I LETTORI DEVONO ESSERE CONSAPEVOLI CHE I SITI WEB DI INTERNET SONO ELENCATI IN
QUESTO LAVORO POTREBBE ESSERE MODIFICATO O SCOMPARSO TRA QUANDO È STATO SCRITTO E QUANDO È
LEGGERE.

Per informazioni generali sugli altri nostri prodotti e servizi, contatta il nostro servizio di assistenza clienti all'interno
Stati Uniti al numero (877) 762-2974, fuori dagli Stati Uniti al numero (317) 572-3993 o fax al numero (317) 572-4002.

Wiley pubblica in una varietà di formati cartacei ed elettronici e tramite stampa su richiesta. Alcuni materiali inclusi
con le versioni cartacee standard di questo libro potrebbe non essere incluso negli e-book o nella stampa su richiesta. Se questo libro
si riferisce a supporti come CD o DVD che non sono inclusi nella versione acquistata, è possibile scaricarlo
materiale su http://booksupport.wiley.com. Per ulteriori informazioni sui prodotti Wiley, visitare
www.wiley.com.

Numero di controllo della Library of Congress: 2015937667

Marchi: Wiley e il logo Wiley sono marchi o marchi registrati di John Wiley & Sons, Inc. e / o
le sue affiliate, negli Stati Uniti e in altri paesi, e non possono essere utilizzati senza autorizzazione scritta. Linux è
un marchio registrato di Linus Torvalds. Tutti gli altri marchi appartengono ai rispettivi proprietari. John
Wiley & Sons, Inc. non è associata ad alcun prodotto o fornitore menzionato in questo libro.

Pagina 7

Come sempre, dedico questo libro a mia moglie Sheree.


Pagina 9
8

Circa l'autore
Chris Negus è un Red Hat Certified Instructor (RHCI), Red Hat Certified Examiner (RHCX),
Red Hat Certified Architect (RHCA) e Principal Technical Writer per Red Hat Inc. In più
in sei anni con Red Hat, Chris ha insegnato a centinaia di professionisti IT aspiranti
diventare Red Hat Certified Engineers (RHCE).

Nella sua attuale posizione in Red Hat, Chris produce articoli per il Red Hat Customer Portal.
I progetti su cui lavora includono Red Hat Enterprise Linux 7, Red Hat Enterprise OpenStack
Piattaforma, Red Hat Enterprise Virtualization e contenitori Linux in formato Docker.

Oltre alla sua certificazione RHCA, Chris è un amministratore di virtualizzazione certificato Red Hat
(RHCVA) e Red Hat Certified Datacenter Specialist (RHCDS). Ha anche certificati di
esperienza in distribuzione e gestione dei sistemi, clustering e gestione dello storage,
Archiviazione nel cloud e protezione avanzata dei server.

Prima di entrare a far parte di Red Hat, Chris ha scritto o co-scritto dozzine di libri su Linux e UNIX, inclusi
ing Red Hat Linux Bible (tutte le edizioni), CentOS Bibbia, Fedora Bibbia, Linux Risoluzione dei problemi della Bibbia,
Giocattoli Linux e Giocattoli Linux II. Chris è anche coautore di diversi libri per Linux Toolbox
serie per utenti esperti: Fedora Linux Toolbox, SUSE Linux Toolbox, Ubuntu Linux Toolbox, Mac
OS X Toolbox e BSD UNIX Toolbox.

Per otto anni Chris ha lavorato con l'organizzazione di AT&T che aveva sviluppato UNIX in precedenza
trasferirsi nello Utah per contribuire al progetto UnixWare di Novell all'inizio degli anni '90. quando
non scrive di Linux, a Chris piace giocare a calcio e uscire con sua moglie,
Sheree e il figlio Seth.

Informazioni sull'editor tecnico


Richard Blum, LPIC-1, lavora nel settore IT da più di 20 anni sia come un
amministratore di sistemi e di rete e ha pubblicato numerosi Linux e open source
libri. Ha amministrato server UNIX, Linux, Novell e Microsoft, oltre che aiutato
progettare e mantenere una rete da 3.500 utenti utilizzando switch e router Cisco. Ha usato
Server Linux e script della shell per eseguire il monitoraggio automatico della rete e ha scritto
script di shell nella maggior parte dei comuni ambienti shell di Linux. Rich è un istruttore online
tor per un corso di introduzione a Linux utilizzato da college e università in tutto il mondo
Stati Uniti. Quando non è un nerd del computer, Rich suona il basso elettrico in un paio di
diverse bande di culto della chiesa e si diverte a passare il tempo con sua moglie, Barbara e due
figlie, Katie Jane e Jessica.

Pagina 11
10
Crediti
Editor del progetto Tecnologia e strategia professionali
Martin V. Minner La direttrice
Barry Pruett
Redattore tecnico
Richard Blum Direttore aziendale
Amy Knies
Manager di produzione
Kathleen Wisor Editore associato
Jim Minatel
Copia editor
Gwenette Gaddis Coordinatore del progetto, copertina
Brent Savage
Responsabile dei contenuti
Sviluppo e assemblaggio Correttore di bozze
Mary Beth Wakefield Amy Schneider

Direttore marketing Indicizzatore


David Mayhew John Sleeva

Marketing Manager Designer di copertine


Carrie Sherrill Wiley

Pagina 13
12

Ringraziamenti

Da molti dei migliori sviluppatori, tester, professionisti del supporto e istruttori Linux in
il mondo. Dato che non posso ringraziare tutti individualmente, saluto invece la cultura di
quando sono stato assunto da Red Hat Inc. più di sei anni fa, sono stato esposto
cooperazione ed eccellenza che servono ogni giorno a migliorare le mie capacità su Linux.

Non parlo bene di Red Hat perché lavoro lì; Lavoro in Red Hat perché è all'altezza
agli ideali del software open source in modi che corrispondono alle mie convinzioni. Ci sono alcuni
persone in Red Hat vorrei ringraziare in particolare. Discussioni con Victor Costea,
Andrew Blum e altri istruttori Red Hat mi hanno aiutato ad adattare il mio modo di pensare
su come le persone imparano Linux. Sono in grado di lavorare su un'ampia gamma di tecnologie perché
del grande supporto che ricevo dal mio supervisore, Adam Strong, e dal mio senior manager, Sam
Knuth, che mi indirizzano entrambi verso progetti interessanti ma non mi trattengono mai.

In questa edizione, un aiuto particolare è venuto da Ryan Sawhill Aroha, che mi ha aiutato a semplificare il mio
scrivere sulla tecnologia di crittografia. Per il nuovo contenuto che ho scritto in questo libro su Linux cloud
tecnologie, vorrei ringraziare i membri dei team OpenStack, Docker e RHEV, che aiutano
imparo ogni giorno tecnologie cloud all'avanguardia.

Per quanto riguarda le persone a Wiley, grazie per avermi permesso di continuare a sviluppare e migliorare questo libro
negli anni. Marty Minner mi ha aiutato a mantenermi in attività attraverso un programma impegnativo.
Mary Beth Wakefield e Ken Brown sono stati lì per ricordarmelo quando me ne sono dimenticato
era un programma impegnativo. Grazie a Richard Blum per il suo lavoro di tecnologia affidabile e completo
la modifica. Grazie a Margot Maley Hutchison di Waterside Productions per aver contratto il
prenota per me con Wiley e sempre attento ai miei migliori interessi.
Infine, grazie a mia moglie, Sheree, per aver condiviso la sua vita con me e per aver fatto un ottimo lavoro
allevando Seth e Caleb.

xi

Pagina 15
14

Contenuto in breve
Ringraziamenti ................................................. .................................................. ..... xi
Introduzione ................................................. .................................................. ....... xxxiii

Parte I: Guida introduttiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


Capitolo 1: Avvio con Linux ............................................ ........................................... 3
Capitolo 2: Creazione del desktop Linux perfetto .......................................... ..................... 29

Parte II: diventare un Power User Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63


Capitolo 3: Utilizzo della shell ............................................ ............................................... 65
Capitolo 4: Spostarsi nel filesystem ........................................... ........................... 97
Capitolo 5: Lavorare con file di testo ........................................... .................................... 117
Capitolo 6: Gestione dei processi in esecuzione ............................................ ........................... 137
Capitolo 7: Scrittura di semplici script di shell ........................................... .............................. 153

Parte III: diventare un amministratore di sistema Linux. . . . . . . . . . . . . . . . . . . . 171


Capitolo 8: Amministrazione del sistema di apprendimento ............................................ ..................... 173
Capitolo 9: Installazione di Linux ............................................. ............................................ 201
Capitolo 10: Recupero e gestione del software ........................................... ..................... 233
Capitolo 11: Gestione degli account utente ............................................ ............................... 259
Capitolo 12: Gestione di dischi e file system ........................................... ..................... 283

Parte IV: diventare un amministratore di server Linux. . . . . . . . . . . . . . . . . . . . 313


Capitolo 13: Comprendere l'amministrazione del server ............................................ ............ 315
Capitolo 14: Amministrazione della rete ............................................. ........................... 347
Capitolo 15: Avvio e arresto dei servizi ........................................... ....................... 377
Capitolo 16: Configurazione di un server di stampa ........................................... .............................. 423
Capitolo 17: Configurazione di un server Web ........................................... ............................... 449
Capitolo 18: Configurazione di un server FTP ........................................... .............................. 477
Capitolo 19: Configurazione di un server Windows File Sharing (Samba) .................................... 499
Capitolo 20: Configurazione di un file server NFS .......................................... ........................ 527
Capitolo 21: Risoluzione dei problemi in Linux ............................................. ................................. 551

Parte V: apprendimento delle tecniche di sicurezza di Linux. . . . . . . . . . . . . . . . . . . . . . . . 589


Capitolo 22: Comprensione della sicurezza Linux di base ........................................... ............... 591
Capitolo 23: Comprensione della sicurezza Linux avanzata ........................................... ......... 627
Capitolo 24: Migliorare la sicurezza di Linux con SELinux .......................................... .......... 669
Capitolo 25: Protezione di Linux su una rete .......................................... ........................... 699

xiii
Pagina 16

Parte VI: estensione di Linux nel cloud. . . . . . . . . . . . . . . . . . . . . . . . . . . 727


Capitolo 26: Utilizzo di Linux per il cloud computing .......................................... ..................... 729
Capitolo 27: Distribuzione di Linux nel cloud .......................................... .......................... 749

Parte VII: Appendici. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769


Appendice A: Media .............................................. .................................................. ..... 771
Appendice B: Risposte agli esercizi ............................................. ....................................... 781

Indice ................................................. .................................................. ..................... 839

xiv

Pagina 17

Contenuti
Ringraziamenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii
Parte I: iniziare d 1
Capitolo 1: Iniziare con Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Capire cos'è Linux .............................................. .................................. 4
Capire le differenze tra Linux e altri sistemi operativi ............................... 6
Esplorazione della storia di Linux ............................................... ......................................... 6
Cultura UNIX a flusso libero nei Bell Labs .......................................... ................. 7
UNIX commercializzato ................................................ ................................... 9
Berkeley Software Distribution arriva .............................................. .... 9
Laboratorio e commercializzazione UNIX .............................................. 10
GNU passa da UNIX alla libertà ............................................. ................... 11
BSD perde un po 'di vapore .............................................. ................................... 13
Linus costruisce il pezzo mancante ............................................. ....................... 13
Definizione open source OSI .............................................. ............................ 14
Capire come sono emerse le distribuzioni Linux ............................................. ..... 16
Scegliere una distribuzione Red Hat ............................................. ..................... 17
Utilizzo di Red Hat Enterprise Linux ............................................. ............. 17
Usare Fedora ................................................ ...................................... 18
Scegliere Ubuntu o un'altra distribuzione Debian .......................................... 19
Trovare opportunità professionali con Linux oggi ............................................ 20
Capire come le aziende guadagnano con Linux ............................... 21
Certificazione Red Hat .............................................. ........................... 22
Argomenti RHCSA ................................................ ..................................... 23
Argomenti RHCE ................................................ ....................................... 24
Sommario ................................................. .................................................. ......... 26

Capitolo 2: Creazione del desktop Linux perfetto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29


Capire la tecnologia desktop Linux .............................................. .............. 30
A partire dal Fedora GNOME Desktop
Immagine dal vivo ................................................ .................................................. ... 32
Utilizzo del desktop GNOME 3 ............................................. .................................... 33
Dopo l'avvio del computer ............................................. .......................... 33
Navigazione con il mouse .............................................. ................... 34

xv

Pagina 18

Contenuti

Navigazione con la tastiera .............................................. ............... 38


Configurazione del desktop GNOME 3 ............................................ ....................... 41
Estensione del desktop GNOME 3 ............................................. ..................... 42
Usare le estensioni della shell GNOME .............................................. ............... 42
Usare lo strumento GNOME Tweak ............................................. .................. 44
Avvio con applicazioni desktop .............................................. ................ 45
Gestione di file e cartelle con Nautilus ............................................ 45
Installazione e gestione di software aggiuntivo ....................................... 46
Riproduzione di musica con Rhythmbox .............................................. ............ 48
Arresto del desktop GNOME 3 ............................................. ....................... 49
Utilizzo del desktop GNOME 2 ............................................. .................................... 49
Utilizzo del window manager Metacity ............................................. ............... 50
Cambiare l'aspetto di GNOME ............................................... ...................... 52
Uso dei pannelli GNOME .............................................. ................................ 53
Uso delle applicazioni e dei menu di sistema ........................................... 54
Aggiungere un'applet ............................................... ................................ 54
Aggiungere un altro pannello ............................................... ......................... 55
Aggiunta di un lanciatore di applicazioni .............................................. ............ 55
Aggiungere un cassetto ............................................... ................................. 56
Modifica delle proprietà del pannello ............................................... ................... 57
Aggiunta di effetti 3D con AIGLX ............................................. ........................ 58
Sommario ................................................. .................................................. ......... 60
Esercizi ................................................. .................................................. .......... 61

Parte II: diventare un Linux Power Use r 63


Capitolo 3: Utilizzo della shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Informazioni su shell e finestre di terminale ............................................. ........................ 66
Utilizzo del prompt della shell .............................................. .................................. 67
Utilizzo di una finestra di terminale .............................................. .............................. 68
Utilizzo delle console virtuali ............................................... ................................. 69
La scelta del guscio ............................................... .............................................. 69
Comandi in esecuzione ................................................ ............................................ 70
Capire la sintassi dei comandi ............................................... ................... 71
Individuazione dei comandi ................................................ ..................................... 74
Richiamo dei comandi utilizzando la cronologia dei comandi ............................................. ............ 76
Modifica dalla riga di comando .............................................. .................................. 77
Completamento della riga di comando .............................................. ............................. 79
Richiamo dalla riga di comando .............................................. ..................................... 80
Collegamento ed espansione dei comandi .............................................. .................... 82
Tubazioni tra i comandi ............................................... ........................... 82
Comandi sequenziali ................................................ ................................. 83
Comandi in background ................................................ ............................... 83
Comandi di espansione ................................................ ................................. 84

xvi

Pagina 19

Contenuti

Espansione di espressioni aritmetiche ............................................... ................ 84


Variabili in espansione ................................................ ................................... 85
Uso delle variabili di shell ............................................... ........................................... 85
Creazione e utilizzo di alias .............................................. ............................. 87
Uscita dalla shell ............................................... .......................................... 88
Creazione dell'ambiente shell .............................................. ............................ 88
Configurazione della shell ............................................... ................................. 88
Impostazione del prompt ............................................... .................................... 89
Aggiunta di variabili d'ambiente ............................................... ...................... 91
Ottenere informazioni sui comandi .............................................. ................... 92
Sommario ................................................. .................................................. ......... 94
Esercizi ................................................. .................................................. ......... 95

Capitolo 4: Spostarsi nel filesystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97


Uso dei comandi di base del file system .............................................. ......................... 100
Uso di metacaratteri e operatori .............................................. ...................... 102
Utilizzo dei metacaratteri di corrispondenza dei file ............................................. ............... 102
Uso dei metacaratteri di reindirizzamento dei file ............................................. ............ 103
Uso dei caratteri di espansione delle parentesi graffe .............................................. ................. 105
Elenco di file e directory .............................................. ................................. 105
Comprensione delle autorizzazioni e della proprietà dei file ............................................. ....... 109
Modifica dei permessi con chmod (numeri) ........................................... ... 111
Modifica dei permessi con chmod (lettere) ........................................... ...... 111
Impostazione dei permessi file predefiniti con umask ............................................ ..... 112
Modifica della proprietà del file ............................................... .............................. 113
Spostamento, copia e rimozione di file ........................................... ....................... 114
Sommario ................................................. .................................................. ........ 115
Esercizi ................................................. .................................................. ........ 115

Capitolo 5: Lavorare con i file di testo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117


Modifica dei file con vim e vi ............................................ .................................. 117
A partire da vi ............................................... ......................................... 119
Aggiunta di testo ................................................ ...................................... 119
Muoversi nel testo ............................................. .................... 120
Eliminazione, copia e modifica del testo ........................................... ...... 121
Incollare (inserire) testo ............................................. .......................... 122
Ripetizione dei comandi ................................................ ........................ 122
Uscita da vi ................................................ ......................................... 122
Saltare nel file ............................................. ........................... 123
Ricerca di testo ............................................... ...................................... 124
Uso della modalità ex ............................................... ............................................ 124
Ulteriori informazioni su vi e vim ............................................ ..................... 124
Ricerca di file ................................................ .................................................. .... 125
Usare la ricerca per trovare i file per nome ........................................... .................... 125

xvii

Pagina 20
Contenuti

Ricerca di file con trova ............................................. .......................... 127


Ricerca di file per nome .............................................. .......................... 127
Ricerca di file per dimensione .............................................. ............................ 128
Ricerca di file per utente .............................................. ............................ 128
Ricerca di file su autorizzazione .............................................. .................. 129
Ricerca di file per data e ora ............................................ ............... 130
Utilizzo di "non" e "o" durante la ricerca di file ....................................... .......... 131
Trovare file ed eseguire comandi ............................................. ..131
Ricerca nei file con grep ............................................. ........................... 132
Sommario ................................................. .................................................. ........ 134
Esercizi ................................................. .................................................. ........ 134

Capitolo 6: Gestione dei processi in esecuzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137


Processi di comprensione ................................................ .................................... 137
Processi di quotazione ................................................ ............................................... 138
Processi di quotazione con ps .............................................. ............................. 138
Elenco e modifica dei processi con top ............................................ ......... 140
Elenco dei processi con System Monitor ............................................. ........... 142
Gestione dei processi in background e in primo piano ............................................. ..... 144
Avvio dei processi in background ............................................... .................... 144
Uso dei comandi in primo piano e in background ............................................. .145
Processi di uccisione e ridimensionamento .............................................. .............................. 146
Uccidere i processi con kill e killall ............................................ .............. 146
Usare kill per segnalare processi tramite PID ........................................... ........ 147
Usare killall per segnalare i processi per nome ........................................... .148
Impostazione della priorità del processore con nice e renice ........................................... 148
Limitare i processi con cgroups .............................................. ............................ 149
Sommario ................................................. .................................................. ........ 151
Esercizi ................................................. .................................................. ........ 151

Capitolo 7: Scrittura di semplici script di shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153


Capire gli script di shell ............................................... ................................. 153
Esecuzione e debug di script di shell ............................................. ........... 154
Capire le variabili di shell ............................................... ..................... 154
Parametri posizionali speciali della shell .............................................. ....... 156
Lettura parametri ............................................... ....................... 157
Espansione dei parametri in bash .............................................. ............... 157
Esecuzione di operazioni aritmetiche negli script di shell ............................................. ............ 158
Uso dei costrutti di programmazione negli script della shell ............................................ .159
Le istruzioni "if ... then" ........................................... ...................... 159
Il comando case ............................................... ............................. 162
Il ciclo "for ... do" ........................................... ................................. 163
I cicli "while ... do" e "until ... do" ..................................... .......... 164
Provare alcuni programmi utili per la manipolazione del testo .............................. 164
Il parser generale di espressioni regolari ............................................. .... 165

xviii

Pagina 21

Contenuti

Rimuovi sezioni di righe di testo (taglia) ......................................... ........ 165


Traduci o cancella caratteri (tr) ........................................... ........... 165
L'editor del flusso (sed) ............................................ ......................... 166
Usare semplici script di shell .............................................. ............................. 167
Elenco telefonico ................................................ ................................... 167
Script di backup ................................................ ................................... 168
Sommario ................................................. .................................................. ........ 168
Esercizi ................................................. .................................................. ........ 169

Parte III: Diventare un sistema Linux Amministrat r 171


Capitolo 8: Amministrazione del sistema di apprendimento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Capire l'amministrazione del sistema ............................................... ................. 173
Utilizzo degli strumenti di amministrazione grafica .............................................. ................... 175
Utilizzo degli strumenti system-config- * ........................................... ............................. 175
Utilizzo degli strumenti di amministrazione basati su browser ............................................ .................... 177
Utilizzo dell'account utente root ............................................. ................................... 177
Diventare root dalla shell (comando su) ......................................... ....... 178
Consentire l'accesso amministrativo tramite la GUI ............................................ ..... 180
Ottenere l'accesso amministrativo con sudo ............................................. ........ 180
Esplorazione di comandi amministrativi, file di configurazione e file di registro ................ 182
Comandi amministrativi ................................................ ......................... 182
File di configurazione amministrativa ............................................... ............... 183
File di registro amministrativo e diario di systemd ............................................ ... 188
Uso di journalctl per visualizzare il journal di systemd .............................. 188
Gestione dei messaggi di log con rsyslogd ............................................. .... 189
Utilizzo di altri account amministrativi .............................................. .................... 189
Controllo e configurazione dell'hardware .............................................. ...................... 190
Controllo dell'hardware ............................................... ............................. 191
Gestione dell'hardware rimovibile ............................................... .................... 194
Lavorare con i moduli caricabili .............................................. .................. 197
Elenco dei moduli caricati ............................................... ....................... 197
Caricamento moduli ................................................ ............................... 198
Rimozione dei moduli ................................................ ............................ 198
Sommario ................................................. .................................................. ........ 199
Esercizi ................................................. .................................................. ........ 199

Capitolo 9: Installazione di Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201


Scegliere un computer ............................................... ........................................... 202
Installazione di Fedora dal supporto Live ............................................. .......................... 203
Installazione di Red Hat Enterprise Linux da
Supporti di installazione ................................................ ......................................... 208
Comprensione delle installazioni basate su cloud ............................................. ................ 211
Installazione di Linux in azienda ............................................. .......................... 211

xix

Pagina 22

Contenuti

Esplorazione degli argomenti di installazione comuni .............................................. ................... 213


Aggiornamento o installazione da zero ............................................. .............. 213
Avvio doppio ................................................ ............................................. 214
Installazione di Linux per l'esecuzione virtuale ............................................. ................... 216
Utilizzo delle opzioni di avvio dell'installazione .............................................. .................... 216
Opzioni di avvio per disabilitare le funzionalità ............................................. ....... 217
Opzioni di avvio per problemi video ............................................. ............ 217
Opzioni di avvio per tipi di installazione speciali .......................................... 218
Opzioni di avvio per kickstart e repository remoti ............................. 218
Opzioni di avvio varie ............................................... ................. 219
Utilizzo di archiviazione specializzata ............................................... ............................ 219
Partizionamento dei dischi rigidi ............................................... ............................. 220
Comprensione dei diversi tipi di partizione ............................................. 221
Motivi per diversi schemi di partizionamento ........................................ 222
Suggerimenti per la creazione di partizioni .............................................. .................. 222
Uso del boot loader GRUB ............................................. ........................... 224
Utilizzo di GRUB Legacy (versione 1) ........................................... ................ 225
Usare GRUB 2 ............................................... .................................... 229
Sommario ................................................. .................................................. ........ 231
Esercizi ................................................. .................................................. ........ 231

Capitolo 10: Acquisizione e gestione del software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233


Gestione del software sul desktop ............................................. ........................ 233
Andare oltre la finestra del software ............................................. ....................... 235
Comprensione del pacchetto software RPM e DEB per Linux ....................................... 236
Capire il packaging DEB ............................................... ..................... 237
Capire il packaging RPM ............................................... ................... 238
Cosa c'è in un RPM? .................................................. ......................... 238
Da dove vengono gli RPM? .................................................. .............. 239
Installazione di RPM ................................................ ................................ 239
Gestione dei pacchetti RPM con YUM ............................................. ......................... 240
Capire come funziona yum .............................................. ..................... 241
1. Controllo di /etc/yum.conf ......................................... ....................... 242
2. Controllo di / etc / sysconfig / rhn / up2date (solo RHEL) .......................... 242
3. Controllo dei file /etc/yum.repos.d/*.repo .................................. ......... 243
4. Download di pacchetti RPM e metadati da un repository YUM ..... 243
5. Pacchetti RPM installati nel file system Linux .................................... 244
6. Memorizza i metadati del repository YUM nel database RPM locale ................... 244
Utilizzo di YUM con archivi di software di terze parti ....................................... 244
Gestione del software con il comando YUM ............................................ .... 245
Ricerca di pacchetti ............................................... ....................... 246
Installazione e rimozione di pacchetti .............................................. ........ 247
Aggiornamento dei pacchetti ................................................ ............................ 249
Aggiornamento di gruppi di pacchetti .............................................. ............... 250

xx

Pagina 23

Contenuti

Manutenzione del database e della cache del pacchetto RPM ........................... 251
Scaricare RPM da un repository yum .......................................... 252
Installazione, interrogazione e verifica del software
con il comando rpm .............................................. .................................... 252
Installazione e rimozione di pacchetti con rpm ............................................ .... 253
Interrogazione delle informazioni sui giri ............................................... .......................... 254
Verifica dei pacchetti RPM ............................................... .............................. 255
Gestione del software in azienda ............................................. ...................... 256
Sommario ................................................. .................................................. ........ 257
Esercizi ................................................. .................................................. ........ 258

Capitolo 11: Gestione degli account utente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259


Creazione di account utente ............................................... ....................................... 259
Aggiunta di utenti con useradd .............................................. ........................... 262
Impostazione delle impostazioni predefinite dell'utente ............................................... .................................. 265
Modifica utenti con usermod .............................................. ..................... 266
Eliminazione di utenti con userdel .............................................. .......................... 268
Capire gli account di gruppo ............................................... ........................... 268
Utilizzo di account di gruppo ............................................... .................................. 269
Creazione di account di gruppo ............................................... .............................. 270
Gestione degli utenti nell'azienda ............................................. ........................... 270
Impostazione delle autorizzazioni con gli elenchi di controllo degli accessi ............................................ .271
Impostazione degli ACL con setfacl .............................................. ................... 272
Impostazione degli ACL predefiniti ............................................... .......................... 273
Abilitazione degli ACL ................................................ ................................... 274
Aggiunta di directory per la collaborazione degli utenti ............................................ ...... 276
Creazione di directory di collaborazione di gruppo (impostare bit GID) ........................... 276
Creazione di directory di eliminazione limitate (sticky bit) ............................. 278
Centralizzazione degli account utente ............................................... .................................. 278
Utilizzo della finestra Utenti .............................................. ............................... 279
Utilizzo della finestra Configurazione autenticazione ....................................... 279
Sommario ................................................. .................................................. ........ 281
Esercizi ................................................. .................................................. ........ 281

Capitolo 12: Gestione di dischi e file system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283


Capire l'archiviazione su disco ............................................... ................................. 283
Partizionamento dei dischi rigidi ............................................... ....................................... 285
Capire le tabelle delle partizioni ............................................... ................... 286
Visualizzazione delle partizioni del disco ............................................... ............................... 286
Creazione di un disco a partizione singola ............................................ ...................... 288
Creazione di un disco con più partizioni ............................................ ................... 292
Utilizzo delle partizioni di gestione del volume logico ............................................. .......... 295
Verifica di un LVM esistente .............................................. ............................ 296
Creazione di volumi logici LVM .............................................. ....................... 299
Volumi logici LVM in crescita .............................................. ........................ 300

xxi

Pagina 24

Contenuti
Montaggio dei filesystem ................................................ ......................................... 301
File system supportati ................................................ ................................ 301
Abilitazione delle aree di scambio ............................................... ................................... 303
Disattivazione di un'area di scambio .............................................. .................................. 304
Utilizzo del file fstab per definire i file system montabili .................................... 305
Uso del comando mount per montare i file system ....................................... 307
Montare un'immagine disco in loopback ............................................ ................. 308
Utilizzo del comando umount .............................................. ......................... 309
Usare il comando mkfs per creare un filesystem .......................................... ....... 310
Sommario ................................................. .................................................. ........ 311
Esercizi ................................................. .................................................. ........ 311

Parte IV: diventare un server Linux Administrato r 313

CAPITOLO 13: Comprendere l'amministrazione del server. . . . . . . . . . . . . . . . . . . . . . . . . . . . 315


A partire dall'amministrazione del server .............................................. ..................... 316
Passaggio 1: installazione del server ............................................ ................................ 316
Passaggio 2: configurazione del server ............................................ ........................... 318
Utilizzo dei file di configurazione ............................................... ................... 318
Verifica della configurazione di default .............................................. ...... 319
Passaggio 3: avviare il server ............................................ .................................. 319
Passaggio 4: proteggere il server ............................................ ................................ 321
Protezione della password ................................................ .......................... 321
Firewall ................................................. ......................................... 321
Wrapper TCP ................................................ .................................... 322
SELinux ................................................. .......................................... 322
Impostazioni di sicurezza nei file di configurazione ............................................. ..322
Passaggio 5: monitorare il server ............................................ .............................. 322
Configurare la registrazione ................................................ .............................. 322
Esegui rapporti sull'attività del sistema .............................................. ................. 323
Mantenere aggiornato il software di sistema ............................................ ............ 323
Controlla il filesystem per segni di cracker ........................................... 323
Gestione dell'accesso remoto con il servizio Secure Shell ........................................ 323
Avvio del servizio openssh-server ............................................ ................ 324
Utilizzo degli strumenti client SSH .............................................. .................................. 326
Usare ssh per il login remoto ............................................. .................... 326
Usare ssh per l'esecuzione remota ............................................. ............. 328
Copia di file tra sistemi con scp e rsync .............................. 329
Copia interattiva con sftp .............................................. .............. 332
Utilizzo dell'autenticazione basata su chiave (senza password) .......................................... ..332
Configurazione della registrazione del sistema ............................................... ................................ 334
Abilitare la registrazione del sistema con rsyslog ............................................. ............ 334
Capire il file rsyslog.conf ............................................ ........ 335
Capire il file di registro dei messaggi ............................................. ...... 337

xxii

Pagina 25

Contenuti

Configurazione e utilizzo di un loghost con rsyslogd .............................. 337


Visualizzazione dei registri con logwatch .............................................. ........................ 339
Controllo delle risorse di sistema con sar ............................................. ....................... 340
Controllo dello spazio di sistema ............................................... ........................................ 341
Visualizzazione dello spazio di sistema con df ............................................. .................... 342
Controllo dell'utilizzo del disco con du ............................................. ......................... 342
Trovare il consumo di disco con Trova ............................................. .............. 343
Gestione dei server nell'azienda ............................................. ........................ 344
Sommario ................................................. .................................................. ........ 344
Esercizi ................................................. .................................................. ........ 345

Capitolo 14: Amministrazione della rete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347


Configurazione della rete per desktop .............................................. ..................... 348
Verifica delle interfacce di rete .............................................. ................. 350
Controllo della rete da NetworkManager .................................... 350
Controllo della rete dalla riga di comando ............................... 352
Configurazione delle interfacce di rete ............................................... ................... 355
Impostazione manuale degli indirizzi IP .............................................. ............. 355
Impostazione degli alias degli indirizzi IP .............................................. ................... 356
Impostazione delle rotte ................................................ .................................. 357
Configurazione di una connessione proxy di rete ............................................. ....... 358
Configurazione
Modificadella di una rete dalla riga di...............................................
connessione comando ............................................ ...... 360
.................................. 360
Capire i file di configurazione di rete ............................................. 362
File dell'interfaccia di rete ............................................... ....................... 363
Altri file di rete ............................................... ........................ 365
Impostazione delle interfacce di rete alias .............................................. ................... 367
Configurazione del collegamento del canale Ethernet ............................................. ............ 368
Impostazione di percorsi personalizzati ............................................... ................................. 370
Configurazione della rete nell'azienda ............................................. ............... 371
Configurazione di Linux come router ............................................. ........................ 371
Configurazione di Linux come server DHCP ............................................ ................ 372
Configurazione di Linux come server DNS ............................................ .................. 372
Configurazione di Linux come server proxy ............................................ ................ 373
Sommario ................................................. .................................................. ........ 374
Esercizi ................................................. .................................................. ........ 374

Capitolo 15: Avvio e arresto dei servizi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377


Capire il demone di inizializzazione (init o systemd) ................................... 378
Capire i classici demoni init ............................................. ......... 380
Capire il demone di inizializzazione di Upstart ............................................. ......... 386
Apprendimento delle basi del demone di inizializzazione di Upstart ............................................. ..... 386
Apprendimento della retrocompatibilità di Upstart con SysVinit ............... 388
Capire l'inizializzazione di systemd ............................................... .......... 392

xxiii

Pagina 26

Contenuti

Apprendimento delle basi di systemd ............................................... ..................... 392


Apprendimento della retrocompatibilità di systemd con SysVinit ............... 397
Verifica dello stato dei servizi ............................................. ............................. 399
Verifica dei servizi per i sistemi SysVinit ............................................. .......... 400
Verifica dei servizi per i sistemi Upstart ............................................. ........... 401
Verifica dei servizi per i sistemi systemd ............................................. .......... 402
Arresto e avvio dei servizi .............................................. ............................. 403
Arresto e avvio dei servizi SysVinit ............................................. ......... 403
Arresto e avvio dei servizi Upstart ............................................. .......... 405
Arresto e avvio dei servizi di systemd ............................................. ......... 406
Arresto di un servizio con systemd ............................................. ........... 406
Avvio di un servizio con systemd ............................................. ............ 406
Riavvio di un servizio con systemd ............................................. ......... 407
Ricaricare un servizio con systemd ............................................. .......... 407
Abilitazione dei servizi persistenti ............................................... ................................ 408
Configurazione di servizi persistenti per SysVinit ............................................. .... 408
Configurazione dei servizi persistenti per Upstart ............................................. ..... 409
Configurazione dei servizi persistenti per systemd ............................................. .... 410
Abilitazione di un servizio con systemd ............................................. ........... 410
Disabilitare un servizio con systemd ............................................. .......... 411
Configurazione di un runlevel predefinito o di un'unità target ........................................... ........... 412
Configurazione del runlevel predefinito di SysVinit ............................................. ....... 412
Configurazione del runlevel predefinito in Upstart ............................................ ..... 413
Configurazione dell'unità di destinazione predefinita per systemd ........................................... 413
Aggiunta di servizi nuovi o personalizzati ............................................. ........................ 414
Aggiunta di nuovi servizi a SysVinit ............................................. ................... 414
Passaggio 1: creare un file di script di servizio nuovo o personalizzato ........................... 415
Passaggio 2: aggiungere lo script del servizio a /etc/rc.d/init.d ................................ .416
Passaggio 3: aggiungere il servizio alle directory dei runlevel .................................... 417
Aggiunta di nuovi servizi a Upstart ............................................. ..................... 417
Aggiunta di nuovi servizi a systemd ............................................. .................. 419
Passaggio 1: creare un file di unità di configurazione del servizio nuovo o personalizzato ....... 419
Passaggio 2: spostare il file dell'unità di configurazione del servizio ............................... 420
Passaggio 3: aggiungere il servizio alla directory Wants .................................... 420
Sommario ................................................. .................................................. ........ 422
Esercizi ................................................. .................................................. ........ 422

Capitolo 16: Configurazione di un server di stampa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423


Sistema di stampa UNIX comune .............................................. ............................. 423
Configurazione delle stampanti ............................................... ............................................. 425
Aggiungere una stampante automaticamente .............................................. ..................... 425
Uso dell'amministrazione CUPS basata sul web ............................................ ............ 426
Utilizzo della finestra Impostazioni di stampa ............................................. ................... 428
Configurazione delle stampanti locali con la finestra Impostazioni di stampa .................. 429
xxiv

Pagina 27

Contenuti

Configurazione delle stampanti remote ............................................... ................ 432


Aggiungere una stampante CUPS remota ............................................. ............... 433
Aggiunta di una stampante UNIX remota (LDP / LPR) ........................................ .... 433
Aggiunta di una stampante Windows (SMB) ........................................... ............. 434
Lavorare con la stampa CUPS .............................................. ................................. 435
Configurazione del server CUPS (cupsd.conf) ......................................... ........... 436
Avvio del server CUPS .............................................. .............................. 437
Configurazione manuale delle opzioni della stampante CUPS ............................................. .... 438
Uso dei comandi di stampa ............................................... .................................... 439
Stampa con lpr ............................................... ........................................ 440
Stato elenco con lpc .............................................. ................................. 440
Rimozione dei lavori di stampa con lprm ............................................. ...................... 441
Configurazione dei server di stampa ............................................... .................................... 441
Configurazione di una stampante CUPS condivisa ............................................. ................. 442
Configurazione di una stampante Samba condivisa ............................................. ............... 443
Capire smb.conf per la stampa ............................................ ..... 444
Configurazione dei client SMB .............................................. ........................ 445
Sommario ................................................. .................................................. ........ 446
Esercizi ................................................. .................................................. ........ 446

Capitolo 17: Configurazione di un server Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449


Capire il server web Apache ............................................. ................... 449
Recupero e installazione del server Web ............................................ ................... 450
Capire il pacchetto httpd .............................................. ................. 450
Installazione di Apache ................................................ ...................................... 453
Avvio di Apache ................................................ ................................................. 454
Protezione di Apache ................................................ ....................................... 455
Autorizzazioni e proprietà dei file Apache ............................................. ..455
Apache e iptables ............................................... ........................... 455
Apache e SELinux ............................................... ........................... 456
Capire i file di configurazione di Apache ............................................. 457
Uso delle direttive ................................................ ................................ 457
Capire le impostazioni predefinite ............................................... ........... 460
Aggiunta di un host virtuale ad Apache ............................................ ..................... 462
Consentire agli utenti di pubblicare i propri contenuti web ....................................... 464
Protezione del traffico web con SSL / TLS .......................................... ............ 465
Capire come è configurato SSL ............................................. .... 467
Generazione di una chiave SSL e di un certificato autofirmato ............................. 469
Generazione di una richiesta di firma del certificato ............................................. 470
Risoluzione dei problemi del server Web .............................................. .......................... 471
Verifica degli errori di configurazione .............................................. ................. 472
Accesso vietato e errori interni al server ............................................ 474
Sommario ................................................. .................................................. ........ 475
Esercizi ................................................. .................................................. ........ 475

xxv

Pagina 28

Contenuti

Capitolo 18: Configurazione di un server FTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477


Capire FTP ................................................ ............................................. 477
Installazione del server FTP vsftpd ............................................. ............................. 479
Avvio del servizio vsftpd .............................................. ................................... 480
Protezione del server FTP .............................................. ...................................... 483
Apertura del firewall per FTP ............................................ ..................... 483
Consentire l'accesso FTP nei wrapper TCP ............................................ ............... 486
Configurazione di SELinux per il proprio server FTP ............................................ ......... 486
Correlare i permessi dei file Linux a vsftpd ............................................ ........ 488
Configurazione del server FTP .............................................. ................................. 488
Configurazione dell'accesso utente .............................................. ................................. 488
Consentire il caricamento ................................................ ................................... 489
Configurazione di vsftpd per Internet ............................................ .................. 491
Utilizzo di client FTP per connettersi al server .......................................... ............... 492
Accesso a un server FTP da Firefox ............................................ .............. 493
Accesso a un server FTP con il comando lftp .......................................... 493
Utilizzo del client gFTP .............................................. ................................... 495
Sommario ................................................. .................................................. ........ 496
Esercizi ................................................. .................................................. ........ 497

Capitolo 19: Configurazione di un server Windows File Sharing (Samba). . . . . . . . . . . . . . . . . . 499


Capire Samba ................................................ ........................................ 499
Installazione di Samba ................................................ ................................................ 500
Avvio e arresto di Samba .............................................. ................................ 502
Avvio del servizio Samba (smb) ........................................... ................... 503
Avvio del server dei nomi NetBIOS (nmbd) .......................................... ......... 505
Arresto dei servizi Samba (smb) e NetBIOS (nmb) ................................. 506
Protezione di Samba ................................................ ................................................. 506
Configurazione dei firewall per Samba .............................................. ................... 507
Configurazione di SELinux per Samba .............................................. ..................... 508
Impostazione booleani di SELinux per Samba ............................................. ...... 508
Impostazione dei contesti di file SELinux per Samba ............................................ .510
Configurazione delle autorizzazioni host / utente di Samba ............................................ ....... 510
Configurazione di Samba ................................................ ............................................. 511
Usare system-config-samba ............................................ ............................ 511
Scegliere le impostazioni del server Samba .............................................. ........... 511
Configurazione degli account utente Samba .............................................. ......... 512
Creazione di una cartella condivisa di Samba ............................................. ............. 513
Controllo della condivisione Samba .............................................. ................... 514
Configurazione di Samba nel file smb.conf .......................................... ............. 516
Configurazione della sezione [global] ............................................ ............. 516
Configurazione della sezione [homes] ............................................ ........... 518
Configurazione della sezione [stampanti] ............................................ .......... 519
Creazione di directory condivise personalizzate .............................................. ...... 519

xxvi

Pagina 29

Contenuti

Accesso alle condivisioni Samba ............................................... ...................................... 521


Accesso alle condivisioni Samba in Linux ............................................. ................... 522
Accesso alle condivisioni Samba in Windows ............................................. .............. 524
Usare Samba nell'azienda ............................................. ............................... 525
Sommario ................................................. .................................................. ........ 525
Esercizi ................................................. .................................................. ........ 526

Capitolo 20: Configurazione di un file server NFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7


Installazione di un server NFS .............................................. ....................................... 529
Avvio del servizio NFS .............................................. ....................................... 530
Condivisione di filesystem NFS ............................................... ...................................... 531
Configurazione del file / etc / export ........................................... ..................... 532
Nomi host in / etc / export ............................................ .................... 533
Opzioni di accesso in / etc / export ........................................... ................ 534
Opzioni di mappatura utente in / etc / export .......................................... ...... 534
Esportare i filesystem condivisi .............................................. .................. 535
Protezione del server NFS .............................................. ..................................... 536
Apertura del firewall per NFS ............................................ .................... 537
Consentire l'accesso NFS nei wrapper TCP ............................................ ............... 539
Configurazione di SELinux per il proprio server NFS ............................................ ......... 539
Utilizzo dei filesystem NFS ............................................... ......................................... 540
Visualizzazione delle condivisioni NFS ............................................... ..................................... 540
Montare manualmente un filesystem NFS ............................................. ............ 541
Montare un filesystem NFS all'avvio ........................................... ......... 542
Montaggio dei filesystem noauto ............................................... .............. 543
Uso delle opzioni di montaggio ............................................... .......................... 543
Usare autofs per montare filesystem NFS su richiesta ....................................... 545
Automounting nella directory / net ............................................ ....... 546
Automounting home directory ............................................... .......... 547
Smontaggio dei filesystem NFS ............................................... ................................ 549
Sommario ................................................. .................................................. ........ 549
Esercizi ................................................. .................................................. ........ 550

Capitolo 21: Risoluzione dei problemi di Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551


Risoluzione dei problemi di avvio .............................................. ...................................... 55 1
Comprensione dei metodi di avvio ............................................... .................. 552
Iniziare con gli script di inizializzazione di System V ............................................ ........ 552
A partire da systemd ............................................... ........................ 553
A partire da Upstart ............................................... ......................... 554
A partire dal firmware (BIOS o UEFI) ......................................... ......... 554
Risoluzione dei problemi di configurazione del BIOS ............................................... ................ 555
Risoluzione dei problemi relativi all'ordine di avvio ............................................... ................. 556
Risoluzione dei problemi del boot loader GRUB ............................................. ........... 557
Avvio del kernel ............................................... ..................................... 559
Risoluzione dei problemi del sistema di inizializzazione ....................................... 560

xxvii

Pagina 30

Contenuti

Risoluzione dei problemi di inizializzazione di System V ............................................. 560


Risoluzione dei problemi rc.sysinit .............................................. ................... 561
Risoluzione dei problemi dei processi runlevel ............................................... ..... 562
Risoluzione dei problemi di inizializzazione di systemd .............................................. 56 6
Risoluzione dei problemi dei pacchetti software ............................................... ...................... 568
Correzione dei database e della cache RPM ............................................. .................... 572
Risoluzione dei problemi di rete ................................................ ............................... 573
Risoluzione dei problemi relativi alle connessioni in uscita ............................................... ......... 573
Visualizza interfacce di rete ............................................... ..................... 574
Verifica collegamenti fisici ............................................... ................ 574
Verifica percorsi ................................................ ..................................... 575
Controlla la risoluzione del nome host ............................................... ................. 576
Risoluzione dei problemi relativi alle connessioni in entrata ............................................... ........ 577
Controlla se il client può raggiungere il tuo sistema ................................... 577
Verificare se il servizio è disponibile per il cliente ....................................... 578
Verificare il firewall sul server ............................................ ............. 578
Verificare il servizio sul server ............................................ ............. 579
Risoluzione dei problemi di memoria ................................................ .................................... 580
Scoprire problemi di memoria ............................................... .......................... 581
Verifica di problemi di memoria .............................................. ............ 583
Affrontare problemi di memoria .............................................. ............ 584
Risoluzione dei problemi in modalità Rescue .............................................. ........................... 585
Sommario ................................................. .................................................. ........ 587
Esercizi ................................................. .................................................. ........ 587

Parte V: apprendimento della tecnica di sicurezza in Linux s 589

Capitolo 22: Comprensione della sicurezza Linux di base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591


Capire le basi della sicurezza ............................................... ............................. 591
Implementazione della sicurezza fisica ............................................... ................... 591
Implementazione del ripristino di emergenza ............................................... ................... 592
Protezione degli account utente ............................................... ............................... 593
Un utente per account utente ............................................. ..................... 593
Limitare l'accesso all'account utente root ........................................... ...... 594
Impostazione delle date di scadenza sui conti temporanei ............................... 594
Rimozione degli account utente inutilizzati .............................................. ........... 595
Protezione delle password ................................................ ................................... 596
Scegliere buone password ............................................... .................... 597
Impostazione e modifica delle password .............................................. .......... 598
Applicazione delle migliori pratiche per la password .............................................. ........ 599
Capire i file delle password e gli hash delle password ............... 601
Protezione del filesystem ............................................... .............................. 603
Gestire i permessi del filesystem pericoloso ....................................... 60 3
Protezione dei file delle password .............................................. ................. 604

xxviii
Pagina 31

Contenuti

Bloccare il filesystem .............................................. ............... 606


Gestione di software e servizi .............................................. ................... 607
Aggiornamento dei pacchetti software ............................................... ............... 607
Tenere il passo con gli avvisi di sicurezza ............................................. ...... 607
Implementazione avanzata ................................................ .......................... 608
Monitoraggio dei sistemi ............................................... ..................................... 608
Monitoraggio dei file di registro ............................................... .................................... 608
Monitoraggio degli account utente ............................................... ............................ 612
Rilevamento di nuovi account e privilegi contraffatti .............................. 612
Rilevamento di password errate per gli account .............................................. ......... 614
Monitoraggio del filesystem ............................................... ........................... 615
Verifica dei pacchetti software ............................................... ............... 615
Scansione del filesystem ............................................... ..................... 616
Rilevamento di virus e rootkit .............................................. ............. 618
Auditing e revisione di Linux .............................................. .............................. 622
Conduzione delle revisioni di conformità ............................................... ................... 623
Conduzione delle revisioni sulla sicurezza ............................................... ....................... 623
Sommario ................................................. .................................................. ........ 624
Esercizi ................................................. .................................................. ........ 624

Capitolo 23: Comprensione della sicurezza Linux avanzata. . . . . . . . . . . . . . . . . . . . . . . . . . . 627


Implementazione della sicurezza Linux con crittografia ............................................. .... 627
Capire l'hashing ................................................ .............................. 628
Capire la crittografia / decrittografia .............................................. .......... 630
Capire i cifrari crittografici ............................................... ..630
Capire le chiavi di cifratura crittografica ........................................... 631
Capire le firme digitali ............................................... ........ 637
Implementazione della crittografia Linux ............................................... ............... 639
Garantire l'integrità del file ............................................... ........................ 639
Crittografare un filesystem Linux .............................................. ............. 640
Crittografia di una directory Linux .............................................. ............... 642
Crittografia di un file Linux .............................................. ........................ 645
Crittografare Linux con strumenti vari .............................. 645
Utilizzo della crittografia dal desktop ............................................. ....... 646
Implementazione della sicurezza Linux con PAM ............................................. .................. 648
Capire il processo di autenticazione PAM ........................................... 649
Capire i contesti PAM ............................................... .............. 650
Capire i flag di controllo PAM .............................................. .......... 651
Capire i moduli PAM ............................................... ............... 652
Capire i file di configurazione degli eventi di sistema PAM ........................... 653
Amministrazione di PAM sul sistema Linux ............................................ ....... 654
Gestione dei file di configurazione delle applicazioni compatibili con PAM ............... 654
Gestione dei file di configurazione degli eventi di sistema PAM ............................. 655
Implementazione dei limiti delle risorse con PAM ........................................... 657
Implementazione dei limiti di tempo con PAM ........................................... 658

xxix

Pagina 32

Contenuti

Applicazione di buone password con PAM ............................................. ...... 660


Incoraggiare l'uso di sudo con PAM ............................................. ............ 664
Blocco degli account con PAM .............................................. ................. 665
Ottenere maggiori informazioni su PAM ............................................. .............. 667
Sommario ................................................. .................................................. ........ 668
Esercizi ................................................. .................................................. ........ 668

Capitolo 24: Migliorare la sicurezza di Linux con SELinux. . . . . . . . . . . . . . . . . . . . . . . . . . . . 669


Comprendere i vantaggi di SELinux ............................................... .......................... 669
Capire come funziona SELinux .............................................. ....................... 671
Capire l'applicazione del tipo ............................................... ................. 671
Capire la sicurezza multilivello ............................................. ................ 672
Implementazione dei modelli di sicurezza SELinux .............................................. ......... 673
Capire le modalità operative di SELinux ....................................... 67 3
Capire i contesti di sicurezza di SELinux ........................................... 674
Capire i tipi di policy di SELinux .............................................. .... 677
Comprensione dei pacchetti di regole dei criteri di SELinux ...................................... 678
Configurazione di SELinux ................................................ .......................................... 679
Impostazione della modalità SELinux .............................................. ............................ 680
Impostazione del tipo di politica SELinux ............................................. ................... 682
Gestire i contesti di sicurezza di SELinux .............................................. ............. 683
Gestione del contesto di sicurezza dell'utente ............................................. ...... 684
Gestione del contesto di sicurezza dei file ............................................. ........ 684
Gestione del contesto di sicurezza del processo ............................................. ..685
Gestione dei pacchetti di regole dei criteri di SELinux ............................................. ......... 686
Gestire SELinux tramite booleani .............................................. .................... 688
Monitoraggio e risoluzione dei problemi SELinux .............................................. ............... 689
Capire il logging di SELinux ............................................... ................... 689
Revisione dei messaggi di SELinux nel registro di controllo ...................................... 690
Revisione dei messaggi di SELinux nel registro dei messaggi ............................... 690
Risoluzione dei problemi relativi al logging di SELinux ............................................... ................. 691
Risoluzione dei problemi comuni di SELinux .............................................. ..692
Utilizzo di una directory non standard per un servizio ........................................ 692
Utilizzo di una porta non standard per un servizio ........................................... .... 693
Spostamento di file e perdita delle etichette del contesto di sicurezza .................................. 69 3
Booleani impostati in modo errato ............................................... ..................... 694
Mettere tutto insieme .............................................. ......................................... 694
Ottenere maggiori informazioni su SELinux ............................................. ................. 695
Sommario ................................................. .................................................. ........ 695
Esercizi ................................................. .................................................. ........ 696

Capitolo 25: Protezione di Linux su una rete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699


Auditing Network Services ............................................... ................................... 699
Valutazione dell'accesso ai servizi di rete con nmap ........................................ 701
Usare nmap per controllare gli annunci dei servizi di rete .......................... 704

xxx

Pagina 33

Contenuti

Controllo dell'accesso ai servizi di rete ............................................. ........... 708


Lavorare con i firewall ............................................... ........................................ 710
Capire i firewall ................................................ ............................. 710
Implementazione dei firewall ................................................ .............................. 711
A partire da firewalld ............................................... ....................... 712
Capire l'utilità iptables .............................................. ....... 713
Usare l'utility iptables .............................................. ..................... 716
Sommario ................................................. .................................................. ........ 724
Esercizi ................................................. .................................................. ........ 724

Parte VI: estensione di Linux in Clou d 727


Capitolo 26: Utilizzo di Linux per il cloud computing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Panoramica di Linux e cloud computing ............................................ .................. 729
Hypervisor cloud (noti anche come nodi di calcolo) ........................................... ......... 730
Controller cloud ................................................ ....................................... 730
Archiviazione nel cloud ................................................ ............................................ 731
Autenticazione cloud ................................................ ................................. 731
Distribuzione e configurazione cloud .............................................. ............. 732
Piattaforme cloud ................................................ ......................................... 732
Provare la tecnologia cloud di base .............................................. .............................. 732
Configurazione di una piccola nuvola ............................................. ....................................... 734
Configurazione degli hypervisor ................................................ ............................. 735
Passaggio 1: scarica il software Linux ............................................ ................... 735
Passaggio 2: controlla i computer ............................................ ................ 735
Passaggio 3: installazione di Linux su hypervisor ........................................... ........ 736
Passaggio 4: avviare i servizi sugli hypervisor .......................................... ..737
Passaggio 5: modifica / etc / hosts o configura DNS ...................................... ............ 738
Configurazione dell'archiviazione ................................................ ................................... 738
Passaggio 1: installazione del software Linux ............................................ ................ 738
Passaggio 2: configurare la condivisione NFS ............................................ ................... 739
Passaggio 3: avviare il servizio NFS ........................................... ................... 739
Passaggio 4: montare la condivisione NFS sugli hypervisor ............................... 740
Creazione di macchine virtuali ............................................... ........................... 740
Passaggio 1: ottieni immagini per creare macchine virtuali .............................. 741
Passaggio 2: controllare il bridge di rete ........................................... ............ 741
Passaggio 3: avviare Virtual Machine Manager (virt-manager) ......................... 741
Passaggio 4: controllare i dettagli della connessione ............................................ ............ 742
Passaggio 5: creare una nuova macchina virtuale .......................................... ....... 743
Gestione delle macchine virtuali ............................................... ......................... 744
Migrazione di macchine virtuali ............................................... ......................... 745
Passaggio 1: identificare altri hypervisor ............................................ .......... 745
Passaggio 2: migrazione della VM in esecuzione a un altro hypervisor .............................. 746
Sommario ................................................. .................................................. ........ 747
Esercizi ................................................. .................................................. ........ 747

xxxi

Pagina 34

Contenuti

Capitolo 27: Distribuzione di Linux nel cloud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749


Far funzionare Linux in un cloud ........................................... ............................... 749
Creazione di immagini Linux per cloud ............................................. ........................... 751
Configurazione ed esecuzione di un'istanza cloud cloud-init .................................... 751
Analisi dell'istanza cloud .............................................. .................. 753
Clonazione dell'istanza cloud .............................................. ........................... 754
Provare un'immagine cloud di Ubuntu ............................................. ...................... 756
Espansione della configurazione cloud-init ............................................ ......... 757
Aggiunta di chiavi ssh con cloud-init ........................................... .............. 757
Aggiunta di interfacce di rete con cloud-init ....................................... 758
Aggiunta di software con cloud-init ............................................ ............ 758
Utilizzo di cloud-init nell'informatica aziendale ........................................... ......... 759
Utilizzo di OpenStack per distribuire immagini cloud ............................................ ................. 760
A partire da OpenStack Dashboard ............................................. ......... 761
Configurazione della rete virtuale OpenStack ...................................... 761
Configurazione tasti per accesso remoto ............................................. ........ 763
Avvio di una macchina virtuale in OpenStack ....................................... 764
Accesso alla macchina virtuale tramite ssh ............................................ .... 765
Utilizzo di Amazon EC2 per distribuire immagini cloud ........................................... ................ 765
Sommario ................................................. .................................................. ........ 766

Parte VII: Appendici s 769

Appendice A: Media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771

Appendice B: Risposte agli esercizi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781

Indice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

xxxii
Pagina 35

introduzione

Y Sono giunto a questa conclusione in oltre un decennio di insegnamento alle persone a imparare Linux. voi
ou semplicemente
non puoi non può imparare
devi saltare e farlo.
Linuxunsenza
leggere libro;usarlo.
non puoi semplicemente ascoltare una conferenza. Hai bisogno di qualcuno che ti guidi e

Nel 1999, Wiley ha pubblicato la mia Bibbia di Red Hat Linux . L'enorme successo del libro mi ha dato l'opportunità
diventare un autore Linux indipendente a tempo pieno. Per circa un decennio ho scritto dozzine di libri su Linux
ed esplorato i modi migliori per spiegare Linux dalla quiete del mio piccolo ufficio di casa.

Nel 2008 mi sono messo in viaggio. Sono stato assunto da Red Hat, Inc., come istruttore a tempo pieno, insegnando a Linux
amministratori di sistema professionisti che richiedono la certificazione Red Hat Certified Engineer (RHCE). Nel mio
tre anni come istruttore di Linux, ho affinato le mie capacità di insegnamento di fronte a persone dal vivo di cui Linux
esperienza variava da nessuno a professionista esperto.

Nell'edizione precedente, ho trasformato la mia esperienza di insegnamento in testo per prendere un lettore da qualcuno
che non ha mai usato Linux a qualcuno con le capacità per diventare un professionista Linux. In questa edizione
ho deciso di estendere queste competenze al cloud. Il fulcro di questa nona edizione di Linux
La Bibbia può essere riassunta in questi modi:

■ Da principiante a professionista certificato: a condizione che tu abbia utilizzato un computer, un mouse e


tastiera, puoi iniziare con questo libro. Ti dico come ottenere Linux, iniziare a usarlo, passo
attraverso argomenti critici e, in definitiva, eccellono nell'amministrazione e nella protezione.
■ Incentrato sull'amministratore di sistema: quando avrai finito con questo libro, saprai come fare
usare Linux e come modificarlo e mantenerlo. Tutti gli argomenti necessari per diventare un Red Hat
Certified Engineer sono trattati in questo libro. Detto questo, molti sviluppatori di software hanno anche
usato questo libro per capire come lavorare su un sistema Linux come piattaforma di sviluppo o
target per le loro applicazioni.
■ Enfasi sugli strumenti della riga di comando: sebbene interfacce point-and-click per la gestione
Linux è migliorato notevolmente negli ultimi anni, molte funzionalità avanzate possono essere utilizzate solo
digitando comandi e modificando manualmente i file di configurazione. Ti insegno a diventare
esperto con la shell della riga di comando di Linux e occasionalmente confronta le funzionalità della shell con
strumenti grafici per eseguire le stesse attività.
■ Rivolto a un minor numero di distribuzioni Linux: nelle edizioni precedenti, ne ho descritti circa 18 diversi
Distribuzioni Linux. Con solo poche eccezioni degne di nota, le distribuzioni Linux più popolari
sono basati su Red Hat (Red Hat Enterprise Linux, Fedora, CentOS e così via) o Debian-
basato (Ubuntu, Linux Mint, KNOPPIX e così via). Sebbene questo libro copra più accuratamente
Per le distribuzioni Red Hat, in questa edizione ho aumentato la copertura di Ubuntu
(perché questo è ciò con cui iniziano molti dei più grandi fan di Linux).

xxxiii

Pagina 36

introduzione

■ Molte, molte demo ed esercizi: invece di dirti solo cosa fa Linux, io


mostrarti effettivamente cosa fa. Quindi, per essere sicuro di averlo ottenuto, hai l'opportunità
possibilità di provare gli esercizi da soli. Ogni procedura ed esercizio è stato testato
lavorare in Fedora o Red Hat Enterprise Linux. La maggior parte funziona anche in Ubuntu.
■ Lead nelle tecnologie cloud: Linux è al centro della maggior parte dei progressi tecnologici
nel cloud computing oggi. Ciò significa che è necessaria una solida conoscenza di Linux
per lavorare in modo efficiente nei data center di domani. Impara le basi di Linux nella parte anteriore di
questo libro. Poi, negli ultimi capitoli, ti mostro come puoi provare Linux
sistemi come hypervisor, controller cloud e macchine virtuali, nonché gestire
reti virtuali e archiviazione in rete.
Come è organizzato questo libro
Il libro è organizzato per consentirti di iniziare dall'inizio con Linux e crescere
diventare un amministratore di sistema Linux professionale e un utente esperto.

La parte I, "Guida introduttiva", include due capitoli progettati per aiutarti a capire cosa
Linux è e inizia con un desktop Linux:

■ Il Capitolo 1, "Iniziare con Linux", tratta argomenti come il funzionamento di Linux


il sistema è, da dove viene e come iniziare a usarlo.
■ Il Capitolo 2, "Creazione del desktop Linux perfetto", fornisce informazioni su come procedere
può creare un sistema desktop e utilizzare alcune delle funzionalità desktop più popolari.
La Parte II, "Diventare un Power User Linux", fornisce dettagli approfonditi su come utilizzare Linux
shell, lavorare con i filesystem, manipolare i file di testo, gestire i processi e utilizzare gli script della shell:

■ Il Capitolo 3, "Utilizzo della shell", include informazioni su come accedere a una shell, eseguire
comandi, richiama i comandi (usando la cronologia) e completa il completamento con tabulazioni. Il capitolo
descrive anche come usare variabili, alias e pagine man (tradizionale Linux con
pagine di riferimento).
■ Il Capitolo 4, "Spostarsi nel filesystem", include comandi per elencare, creare
importare, copiare e spostare file e directory. Argomenti più avanzati in questo capitolo
include la sicurezza del filesystem, come la proprietà dei file, i permessi e il controllo degli accessi
elenchi.
■ Il Capitolo 5, "Lavorare con i file di testo", include tutto, dagli editor di testo di base a
strumenti per trovare file e cercare testo all'interno dei file.
■ Il Capitolo 6, "Gestione dei processi in esecuzione", descrive come vedere cosa sono i processi
in esecuzione sul sistema e modificare tali processi. Modi di cambiare i processi
includere l'uccisione, la pausa e l'invio di altri tipi di segnali.
■ Il Capitolo 7, "Scrittura di semplici script di shell", include comandi e funzioni della shell
puoi riunirli in un file da eseguire come un comando stesso.

xxxiv

Pagina 37

introduzione

Nella Parte III, "Diventare un amministratore di sistema Linux", impari come amministrare Linux
sistemi:

■ Il Capitolo 8, "Amministrazione del sistema di apprendimento", fornisce informazioni di base


strumenti grafici, comandi e file di configurazione per l'amministrazione di Linux
sistemi.
■ Il Capitolo9, "Installazione di Linux", copre le attività di installazione comuni, come il disco
partizionamento e selezione iniziale del pacchetto software, nonché più avanzate
strumenti di installazione, come l'installazione da file kickstart.
■ Il Capitolo 10, "Recupero e gestione del software", fornisce una comprensione
di come funzionano i pacchetti software e come ottenere e gestire il software
pacchi.
■ Il Capitolo11, "Gestione degli account utente", descrive gli strumenti per l'aggiunta e l'eliminazione
utenti e gruppi, nonché come centralizzare la gestione degli account utente.
■ Il Capitolo12, "Gestione di dischi e file system", fornisce informazioni sull'aggiunta
partizioni, creazione di file system e montaggio di file system, oltre a lavorare con
gestione del volume logico.

Nella parte IV, "Diventare un amministratore di server Linux", impari a creare una rete potente
server e gli strumenti necessari per gestirli:

■ Il Capitolo
13, "Comprensione dell'amministrazione del server", tratta della registrazione remota,
strumenti di monitoraggio e il processo di avvio di Linux.
■ Il Capitolo 14, "Amministrazione della rete", spiega come configurare la rete.
■ Il Capitolo15, "Avvio e arresto dei servizi", fornisce informazioni sull'avvio e
interruzione dei servizi.
■ Il Capitolo 16, "Configurazione di un server di stampa", descrive come configurare le stampanti da utilizzare
localmente sul tuo sistema Linux o sulla rete da altri computer.
■ Il Capitolo 17, "Configurazione di un server Web", descrive come configurare un Web Apache
server.
■ Il Capitolo 18, "Configurazione di un server FTP", descrive le procedure per la configurazione di un FTP vsftpd
server che può essere utilizzato per consentire ad altri di scaricare file dal tuo sistema Linux
sulla rete.
■ Il Capitolo 19, "Configurazione di un server Windows File Sharing (Samba)", tratta Windows
configurazione del file server con Samba.
■ Capitolo 20, "Configurazione di un file server NFS", descrive come utilizzare
Funzionalità di file system di rete per condividere cartelle di file tra sistemi su un file
Rete.
■ Il Capitolo
21, "Risoluzione dei problemi in Linux", tratta gli strumenti più diffusi per la risoluzione dei problemi
Sistema Linux.

xxxv

Pagina 38

introduzione

Nella parte V, "Apprendimento delle tecniche di sicurezza di Linux", impari come proteggere il tuo sistema Linux
sistemi e servizi:

■ Il Capitolo 22, "Comprensione della sicurezza Linux di base", tratta i concetti di sicurezza di base
e tecniche.
■ Il Capitolo 23, "Informazioni sulla sicurezza avanzata di Linux", fornisce informazioni su
utilizzando Pluggable Authentication Modules (PAM) e strumenti di crittografia per rafforzare il sistema
sicurezza e autenticazione del sistema.
■ Il Capitolo 24, "Migliorare la sicurezza di Linux con SELinux", mostra come abilitare
Security Enhanced Linux (SELinux) per proteggere i servizi di sistema.
■ Il Capitolo 25, "Protezione di Linux sulla rete", tratta le funzionalità di sicurezza della rete,
come firewalld e iptables firewall, per proteggere i servizi di sistema.

La parte VI, "Estensione di Linux nel cloud", ti porta in tecnologie cloud all'avanguardia:

■ Il Capitolo 26, "Utilizzo di Linux per il cloud computing", introduce i concetti di cloud computing
mettere in Linux descrivendo come configurare hypervisor, costruire macchine virtuali,
e condividere le risorse attraverso le reti.
■ Il Capitolo 27, "Distribuzione di Linux nel cloud", descrive come distribuire le immagini Linux
a diversi ambienti cloud, tra cui OpenStack, Amazon EC2 o Linux locale
sistema configurato per la virtualizzazione.

La parte VII contiene due appendici per aiutarti a ottenere il massimo dalla tua esplorazione di Linux.
L'Appendice A, "Media", fornisce una guida per scaricare le distribuzioni Linux. Appendice B,
"Risposte agli esercizi", fornisce soluzioni di esempio agli esercizi inclusi nei capitoli da 2 a 26.

Convenzioni usate in questo libro


In tutto il libro, una tipografia speciale indica codice e comandi. Comandi e
codice sono mostrati in un carattere a spaziatura fissa:

Ecco come appare il codice.

Nel caso in cui un esempio includa sia input che output, il carattere a spaziatura fissa è fermo
utilizzato, ma l'input è presentato in grassetto per distinguere i due. Ecco un esempio:

$ ftp ftp.handsonhistory.com
Nome (casa: jake): jake
Password: ******

Per quanto riguarda gli stili nel testo:

■I nuovi termini e le parole importanti appaiono in corsivo quando vengono introdotti.


■I tratti della tastiera vengono visualizzati in questo modo: Ctrl + A. Ciò significa tenere premuto il tasto Ctrl mentre si
premere anche il tasto della lettera "a".

xxxvi

Pagina 39
introduzione

■I nomi dei file, gli URL e il codice all'interno del testo hanno questo aspetto: persistenza.
proprietà.
I seguenti elementi richiamano la vostra attenzione su punti particolarmente importanti.

Una casella Note fornisce informazioni aggiuntive alle quali è necessario prestare particolare attenzione.

Una casella Suggerimento mostra un modo speciale di eseguire una determinata attività.

Una casella di avvertenza avverte di prestare particolare attenzione durante l'esecuzione di una procedura o di danni all'hardware del computer o
il software potrebbe risultare.

Saltare in Linux
Se sei nuovo a Linux, potresti avere idee vaghe su cosa sia e da dove sia arrivato
a partire dal. Potresti aver sentito qualcosa sul fatto che sia gratuito (come nel costo) o gratuito (come nella libertà
per usarlo come preferisci). Prima di iniziare a mettere le mani su Linux (cosa che faremo
abbastanza presto), il capitolo 1 cerca di rispondere ad alcune delle tue domande sulle origini e sulle caratteristiche
ture di Linux.

Prenditi il ​tuo tempo e lavora su questo libro per essere al passo con Linux e come puoi
fallo funzionare per soddisfare le tue esigenze. Questo è il tuo invito a saltare e fare il primo passo
per diventare un esperto di Linux!

Visita il sito web della Bibbia di Linux


Per trovare collegamenti a varie distribuzioni Linux, suggerimenti su come ottenere la certificazione Linux e correzioni al file
prenota non appena diventano disponibili, vai su http://www.wiley.com/go/linuxbible9.

xxxvii

Pagina 41
40

Parte I
Iniziare
IN QUESTA PARTE
Capitolo 1
A partire da Linux

capitolo 2
Creazione del desktop Linux perfetto

Pagina 43
42

CAPITOLO

A partire da Linux
1
IN QUESTO CAPITOLO
Imparare cos'è Linux

Imparare da dove viene Linux

Scegliere le distribuzioni Linux

Esplorare opportunità professionali con Linux

Ottenendo la certificazione in Linux

L Oltre al suo impatto sulla crescita di Internet e al suo ruolo di tecnologia abilitante per a
gamma di dispositivi controllati dal computer, lo sviluppo di Linux è stato un modello per quanto collaborativo
inux è uno dei più importanti progressi tecnologici del ventunesimo secolo.
i progetti possono superare ciò che singoli individui e aziende possono fare da soli.

Google gestisce migliaia e migliaia di server Linux per alimentare la sua tecnologia di ricerca. È Android
i telefoni sono basati su Linux. Allo stesso modo, quando scarichi ed esegui Chrome OS di Google, ottieni un file
browser supportato da un sistema operativo Linux.

Facebook crea e distribuisce il proprio sito utilizzando quello che viene definito uno stack LAMP (Linux, Apache
server web, database MySQL e linguaggio di scripting web PHP): tutti i progetti open source.Infatti,
Facebook stesso utilizza un modello di sviluppo open source, creando codice sorgente per le applicazioni
e strumenti che guidano Facebook a disposizione del pubblico. Questo modello ha aiutato Facebook a scrollarsi di dosso
bug rapidamente, ottenere contributi da tutto il mondo e alimentare la crescita esponenziale di Facebook.

Organizzazioni finanziarie che hanno trilioni di dollari che cavalcano la velocità e la sicurezza dei loro
anche i sistemi operativi dipendono fortemente da Linux. Questi includono la Borsa di New York, il
Chicago Mercantile Exchange e Tokyo Stock Exchange.

Poiché "cloud" continua a essere una delle parole d'ordine più in voga oggi, una parte del cloud che non è hype è
che Linux e altre tecnologie open source sono le fondamenta su cui il più grande cloud di oggi
si stanno costruendo innovazioni. Ogni componente software necessario per creare un cloud privato o pubblico
(come hypervisor, controller cloud, archiviazione di rete, reti virtuali e autenticazione)
è disponibile gratuitamente per iniziare a utilizzarlo dal mondo open source.

Pagina 44

Parte I: Guida introduttiva

L'adozione diffusa di Linux in tutto il mondo ha creato un'enorme domanda per Linux
competenza. Questo capitolo ti avvia su un percorso per diventare un esperto di Linux aiutandoti
capisci cos'è Linux, da dove viene e a cosa servono le tue opportunità
diventare esperto in esso. Il resto di questo libro ti fornisce attività pratiche per
aiutarti ad acquisire tale esperienza. Infine, ti mostro come applicare tale esperienza al cloud
tecnologie.

Capire cos'è Linux


Linux è un sistema operativo per computer. Un sistema operativo è costituito dal software che
gestisce il tuo computer e ti consente di eseguire applicazioni su di esso. Le caratteristiche che compongono
Linux e sistemi operativi per computer simili includono quanto segue:

■ Rilevamento e preparazione dell'hardware: all'avvio del sistema Linux (quando si


accendi il tuo computer), guarda i componenti del tuo computer (CPU, hard
drive, schede di rete e così via) e carica il software (driver e moduli)
necessario per accedere a quei particolari dispositivi hardware.
■ Gestione dei processi : il sistema operativo deve tenere traccia di più processi
in esecuzione contemporaneamente e decidere quali hanno accesso alla CPU e quando. Il
il sistema deve inoltre offrire modi per avviare, arrestare e modificare lo stato
dei processi.
■ Gestione della memoria: è necessario allocare RAM e spazio di swap (memoria estesa)
applicazioni in quanto hanno bisogno di memoria. Il sistema operativo decide come richiedere i file
la memoria viene gestita.
■ Fornitura di interfacce utente: un sistema operativo deve fornire le modalità di accesso
il sistema. Ai primi sistemi Linux si accedeva da un interprete della riga di comando
chiamato shell . Oggi sono comunemente disponibili anche interfacce grafiche per desktop.
■ Controllo dei file system : le strutture dei file system sono incorporate nel sistema operativo
(o caricati come moduli). Il sistema operativo controlla la proprietà e l'accesso a
i file e le directory (cartelle) che i filesystem contengono.
■ Fornitura di accesso e autenticazione utente: creazione di account utente e autorizzazione
i confini da stabilire tra gli utenti è una caratteristica fondamentale di Linux. Utente separato e
gli account di gruppo consentono agli utenti di controllare i propri file e processi.
■ Offerta di utilità amministrative: in Linux, centinaia (forse migliaia) di
comandi e finestre grafiche sono disponibili per fare cose come aggiungere utenti,
gestire i dischi, monitorare la rete, installare software e in generale proteggere e
gestisci il tuo computer.
■ Avvio dei servizi: per utilizzare le stampanti, gestire i messaggi di registro e fornirne una varietà
dei servizi di sistema e di rete, i processi chiamati processi daemon vengono eseguiti in
in background, in attesa che arrivino richieste. Molti tipi di servizi vengono eseguiti in Linux.

Pagina 45

Capitolo 1: Iniziare con Linux


Linux fornisce diversi modi per avviare e arrestare questi servizi. In altro
parole, mentre Linux include browser web per visualizzare pagine web, può anche essere il
computer che fornisce pagine web ad altri. Le funzionalità del server più popolari includono web,
posta, database, stampante, file, DNS e server DHCP.
■ Strumenti di programmazione: un'ampia varietà di utilità di programmazione per la creazione 1
sono disponibili applicazioni e librerie per l'implementazione di interfacce speciali
con Linux.

Come qualcuno che gestisce i sistemi Linux, devi imparare come lavorare con quelli
caratteristiche appena descritte. Sebbene molte funzionalità possano essere gestite utilizzando interfacce grafiche,
una comprensione della riga di comando della shell è fondamentale per chi amministra
Sistemi Linux.

I moderni sistemi Linux ora vanno ben oltre ciò che i primi sistemi UNIX (su cui Linux
era basato) potrebbe fare. Le funzionalità avanzate di Linux, spesso utilizzate nelle grandi aziende, includono
il seguente:

■ Clustering —Linux può essere configurato per funzionare in cluster in modo che più sistemi
può apparire come un sistema al mondo esterno. I servizi possono essere configurati per passare
avanti e indietro tra i nodi del cluster, mentre appare a coloro che utilizzano i servizi
che stanno funzionando senza interruzioni.
■ Virtualizzazione: per gestire le risorse di elaborazione in modo più efficiente, Linux può essere eseguito come
un host di virtualizzazione. Su quell'host, potresti eseguire altri sistemi Linux, Microsoft
Windows, BSD o altri sistemi operativi come guest virtuali. Al mondo esterno
ognuno di questi guest virtuali appare come un computer separato. KVM e Xen sono due
tecnologie in Linux per la creazione di host virtuali.
■ Cloud computing : è possibile utilizzare per gestire ambienti di virtualizzazione su larga scala
piattaforme di cloud computing in piena regola basate su Linux. Progetti come OpenStack
e Red Hat Enterprise Virtualization possono gestire simultaneamente molti sistemi di virtualizzazione
host, reti virtuali, autenticazione di utenti e sistemi, guest virtuali e
archiviazione in rete.
■ Elaborazione in tempo reale: Linux può essere configurato per l'elaborazione in tempo reale, dove
i processi ad alta priorità possono aspettarsi un'attenzione rapida e prevedibile.
■ Archiviazione specializzata: invece di archiviare semplicemente i dati sul disco rigido del computer,
in Linux sono disponibili molte interfacce di archiviazione locali e di rete specializzate.
I dispositivi di archiviazione condivisi disponibili in Linux includono iSCSI, Fibre Channel e
Infiniband. Intere piattaforme di archiviazione open source includono progetti come Ceph
( http://ceph.com) e GlusterFS (http://gluster.org).

Alcuni di questi argomenti avanzati non sono trattati in questo libro. Tuttavia, le funzionalità coperte
qui per usare la shell, lavorare con i dischi, avviare e arrestare i servizi e configurare
uring una varietà di server dovrebbe servire come base per lavorare con quelli avanzati
Caratteristiche.

Pagina 46

Parte I: Guida introduttiva

Capire come Linux differisce dagli altri


Sistemi operativi
Se sei nuovo su Linux, è probabile che tu abbia utilizzato Microsoft Windows o Apple
Sistema operativo Mac OS. Sebbene Mac OS X abbia le sue radici in un sistema operativo software gratuito,
denominata Berkeley Software Distribution (ne parleremo più avanti), sistemi operativi da
sia Microsoft che Apple sono considerati sistemi operativi proprietari. Quello che significa è:

■ Non è possibile visualizzare il codice utilizzato per creare il sistema operativo.


■ Pertanto,non è possibile modificare il sistema operativo ai suoi livelli più elementari in tal caso
non soddisfa le tue esigenze e non puoi utilizzare il sistema operativo per crearne uno tuo
sistema operativo dal codice sorgente.
■ Non è possibile controllare il codice per trovare bug, esplorare vulnerabilità di sicurezza o semplicemente
impara cosa sta facendo quel codice.
■ Potrebbe non essere possibile collegare facilmente il proprio software al sistema operativo se
i creatori di quel sistema non vogliono esporre voi le interfacce di programmazione
bisogno del mondo esterno.

Potresti guardare quelle affermazioni sul software proprietario e dire: "Che me ne importa? io sono
non uno sviluppatore di software. Non voglio vedere o modificare il modo in cui è costruito il mio sistema operativo. "
Potrebbe essere vero. Ma il fatto che altri possano prendere software gratuito e open source e
usarlo come vogliono ha guidato la crescita esplosiva di Internet (si pensi a Google),
telefoni cellulari (si pensi ad Android), dispositivi informatici speciali (si pensi a Tivo) e centinaia di
società tecnologiche. Il software libero ha ridotto i costi di elaborazione e consentito un file
esplosione di innovazione.

Forse non vuoi usare Linux, come hanno fatto Google, Facebook e altre società
per gettare le basi per un'azienda multimiliardaria. Ma quelle e altre società
che ora si affidano a Linux per guidare le proprie infrastrutture di computer hanno bisogno di sempre più persone
con le capacità per eseguire quei sistemi.

Potresti chiederti come mai un sistema informatico così potente e flessibile sia diventato gratuito
anche. Per capire come potrebbe essere, devi vedere da dove proviene Linux. Così il
La sezione successiva di questo capitolo descrive lo strano e tortuoso percorso del software libero
movimento che ha portato a Linux.

Esplorare la storia di Linux


Alcune storie di Linux iniziano con questo messaggio inviato da Linus Torvalds al comp.
newsgroup os.minix il 25 agosto 1991 (http://groups.google.com/group/comp.
os.minix / msg / b813d52cbc5a044b? pli = 1):

Pagina 47

Capitolo 1: Iniziare con Linux

Linus Benedict Torvalds

Ciao a tutti là fuori che usano minix -

Sto realizzando un sistema operativo (gratuito) (solo un hobby, non sarà grande e professionale
come gnu) per 386 (486) cloni AT. Questo è stato fermentato da aprile ed è l'inizio- 1
prepararsi. Vorrei feedback su cose che piacciono / non piacciono alle persone in minix, come
il mio sistema operativo gli somiglia un po '(stesso layout fisico del file system (a causa di
ragioni pratiche, tra le altre cose)… Qualsiasi suggerimento è ben accetto, ma non lo farò
prometto che li implementerò :-)

Linus ( torvalds@kruuna.helsinki.fi)

PS. Sì, è privo di qualsiasi codice minix e ha un fs multi-thread. Non è


protable [ sic ] (usa 386 task switching ecc.), e probabilmente non supporterà mai
qualcosa di diverso dagli AT-hard disk, poiché è tutto ciò che ho :-(.

Minix era un sistema operativo simile a UNIX che girava su PC all'inizio degli anni '90. Come Minix,
Linux era anche un clone del sistema operativo UNIX. Con poche eccezioni, come
Microsoft Windows, i sistemi informatici più moderni (inclusi Mac OS X e Linux) erano
derivato dai sistemi operativi UNIX, creato originariamente da AT&T.

Per apprezzare veramente come un sistema operativo libero avrebbe potuto essere modellato su un file
sistema proprietario di AT&T Bell Laboratories, aiuta a comprendere la cultura in
quale UNIX è stato creato e la catena di eventi che ha reso possibile l'essenza di UNIX
per riprodursi liberamente.

Per saperne di più su come è stato creato Linux, prendi il libro Just for Fun: The Story of an Accidental Revolutionary
di Linus Torvalds (HarperCollins Publishing, 2001).

Cultura UNIX a flusso libero presso Bell Labs


Fin dall'inizio, il sistema operativo UNIX è stato creato e alimentato in a
ambiente comune. La sua creazione non è stata guidata dalle esigenze del mercato, ma dal desiderio di farlo
superare gli ostacoli alla produzione di programmi. AT&T, proprietaria del marchio UNIX
originariamente, alla fine trasformò UNIX in un prodotto commerciale, ma a quel punto molti
i concetti (e anche gran parte del codice iniziale) che rendevano UNIX speciale erano caduti nel
dominio pubblico.

Se non sei abbastanza grande per ricordare quando AT&T si sciolse nel 1984, potresti non ricordarlo
un tempo in cui AT&T era "la" compagnia telefonica. Fino all'inizio degli anni '80, AT&T non aveva
pensare molto alla concorrenza perché se volevi un telefono negli Stati Uniti, tu
doveva andare ad AT&T. Aveva il lusso di finanziare progetti di ricerca pura. La mecca per questo
progetti era il sito dei Bell Laboratories a Murray Hill, nel New Jersey.
7

Pagina 48

Parte I: Guida introduttiva

Dopo un progetto chiamato Multics fallito intorno al 1969, i dipendenti di Bell Labs Ken Thompson
e Dennis Ritchie partirono da soli per creare un sistema operativo che offrisse
un ambiente migliore per lo sviluppo di software. Fino a quel momento, la maggior parte dei programmi lo erano
scritti su schede perforate che dovevano essere alimentate in batch ai computer mainframe. In un 1980
conferenza su "L'evoluzione del sistema di condivisione del tempo UNIX", ha riassunto Dennis Ritchie
lo spirito che ha dato vita a UNIX:

Quello che volevamo preservare non era solo un buon ambiente in cui fare
programmazione, ma un sistema attorno al quale potrebbe formarsi una borsa di studio. Sapevamo
dall'esperienza che l'essenza dell'informatica comune fornita da
le macchine ad accesso remoto e condivise nel tempo non servono solo per digitare programmi in un terminale
invece di un keypunch, ma per incoraggiare una stretta comunicazione.

La semplicità e la potenza del design UNIX hanno iniziato ad abbattere barriere che, fino a quando
questo punto, aveva ostacolato gli sviluppatori di software. La fondazione di UNIX è stata impostata con
diversi elementi chiave:

■ Il filesystem UNIX: poiché includeva una struttura che consentiva livelli di


directory (che, per gli utenti desktop di oggi, assomigliano a cartelle all'interno di cartelle), UNIX
potrebbe essere utilizzato per organizzare i file e le directory in modo intuitivo. Inoltre,
metodi complessi di accesso a dischi, nastri e altri dispositivi erano notevolmente
rappresentato rappresentando quei dispositivi come singoli file di dispositivo che potresti anche
accedere come elementi in una directory.
■ Reindirizzamento input / output: i primi sistemi UNIX includevano anche il reindirizzamento dell'input.
zione e tubi. Da una riga di comando, gli utenti UNIX possono dirigere l'output di un file
comando a un file utilizzando un tasto freccia destra (>). Successivamente, il concetto di pipe (|)
è stato aggiunto dove l'output di un comando poteva essere diretto all'input di
un altro comando. Ad esempio, la seguente riga di comando concatena (cat)
file1 e file2, ordina (ordina) le righe in quei file in ordine alfabetico, impagina i file
testo ordinato per la stampa (pr) e indirizza l'output all'impostazione predefinita del computer
stampante (lpr):
$ cat file1 file2 | ordina | pr | lpr

Questo metodo di indirizzare input e output ha consentito agli sviluppatori di crearne di propri
servizi specializzati che potrebbero essere uniti a servizi esistenti. Questa modularità
ha reso possibile lo sviluppo di un sacco di codice da parte di molte persone diverse. Un utente
potrebbe semplicemente mettere insieme i pezzi secondo necessità.
■ Portabilità: la semplificazione dell'esperienza di utilizzo di UNIX lo ha portato anche a diventare
straordinariamente portatile per essere eseguito su computer diversi. Avendo driver di dispositivo
(rappresentato da file nell'albero del filesystem), UNIX potrebbe presentare un'interfaccia a
applicazioni in modo tale che i programmi non dovessero conoscere i dettagli
dell'hardware sottostante. Per portare successivamente UNIX su un altro sistema, gli sviluppatori avevano
solo per cambiare i driver. I programmi applicativi non dovevano cambiare per
hardware diverso!

Pagina 49

Capitolo 1: Iniziare con Linux

Per rendere la portabilità una realtà, tuttavia, era necessario un linguaggio di programmazione di alto livello
implementare il software necessario. A tal fine, Brian Kernighan e Dennis Ritchie hanno creato
il linguaggio di programmazione C. Nel 1973, UNIX è stato riscritto in C. Oggi, C è ancora il primario
linguaggio utilizzato per creare i kernel del sistema operativo UNIX (e Linux).
1
Come ha continuato Ritchie in una conferenza del 1979 (http://cm.bell-labs.com/who/dmr/
hist.html):

Oggi, l'unico programma UNIX importante ancora scritto in assembler è il


l'assemblatore stesso; praticamente tutti i programmi di utilità sono in C, così come la maggior parte dei programmi
programmi dell'applicazione, sebbene ci siano siti con molti in Fortran, Pascal e
Anche Algol 68. Sembra certo che gran parte del successo di UNIX derivi da
la leggibilità, modificabilità e portabilità del suo software che a sua volta segue
dalla sua espressione in linguaggi di alto livello.

Se sei un appassionato di Linux e sei interessato a quali funzionalità fin dai primi giorni
di Linux sono sopravvissuti, una lettura interessante è la ristampa di Dennis Ritchie del primo UNIX
manuale del programmatore (datato 3 novembre 1971). Lo puoi trovare sul sito di Dennis Ritchie:
http://cm.bell-labs.com/cm/cs/who/dmr/1stEdman.html. La forma di questo
la documentazione è costituita dalle pagine man di UNIX, che è ancora il formato principale per documentare UNIX
e comandi del sistema operativo Linux e strumenti di programmazione oggi.

Ciò che è chiaro leggendo la documentazione e gli account iniziali del sistema UNIX
è che lo sviluppo è stato un processo a flusso libero, mancava di ego ed era dedicato
rendendo UNIX eccellente. Questo processo ha portato alla condivisione del codice (sia all'interno che all'esterno di Bell
Labs), che ha consentito il rapido sviluppo di un sistema operativo UNIX di alta qualità.
Ha anche portato a un sistema operativo che AT&T avrebbe avuto difficoltà a riavviare in seguito.

UNIX commercializzato
Prima della cessione di AT&T nel 1984, quando fu suddivisa in AT&T e sette "Baby Bell"
società, ad AT&T era vietato vendere sistemi informatici. Aziende che lo avrebbero successivamente
diventare Verizon, Qwest e Alcatel-Lucent facevano tutti parte di AT&T. Come risultato di AT & T's
monopolio del sistema telefonico, il governo degli Stati Uniti era preoccupato che un senza restrizioni
AT&T potrebbe dominare la nascente industria dei computer.

Perché AT&T non poteva vendere computer direttamente ai clienti prima del suo
disinvestimento, il codice sorgente UNIX è stato concesso in licenza alle università per una tassa nominale. C'era
nessun sistema operativo UNIX in vendita da AT&T che non hai dovuto compilare da solo.

Berkeley Software Distribution arriva


Nel 1975, UNIX V6 divenne la prima versione di UNIX disponibile per un uso diffuso all'esterno
Bell Laboratories. Da questo primo codice sorgente UNIX, la prima grande variante di UNIX
è stato creato presso l'Università della California a Berkeley. È stato chiamato Berkeley Software
Distribuzione (BSD).

Pagina 50

Parte I: Guida introduttiva

Per la maggior parte del decennio successivo, le versioni BSD e Bell Labs di UNIX si sono separate
indicazioni. BSD ha continuato ad andare avanti nel modo libero e condiviso che era
il segno distintivo dei primi Bell Labs UNIX, mentre AT&T ha iniziato a indirizzare UNIX verso
commercializzazione. Con la formazione di un laboratorio UNIX separato, che si è trasferito
di Murray Hill e lungo la strada per Summit, nel New Jersey, AT&T ha iniziato i suoi tentativi
commercializzare UNIX. Nel 1984, la dismissione era dietro AT&T ed era pronta per iniziare davvero
vendere UNIX.

Laboratorio e commercializzazione UNIX


Il Laboratorio UNIX era considerato un gioiello che non riusciva a trovare una casa o un modo per raggiungerlo
fare un profitto. Mentre si spostava tra i Bell Laboratories e altre aree di AT&T, il suo nome
cambiato più volte. Probabilmente è meglio ricordato dal nome che aveva all'inizio
spin-off di AT&T: UNIX System Laboratories (USL).

Il codice sorgente UNIX che è uscito da USL, la cui eredità è stata venduta in parte a Babbo Natale
Cruz Operation (SCO), è stata utilizzata per un certo periodo come base per cause legali in continua diminuzione da SCO
contro i principali fornitori di Linux (come IBM e Red Hat, Inc.). Per questo motivo, penso che il
gli sforzi di USL che hanno contribuito al successo di Linux sono persi nella maggior parte delle persone.

Durante gli anni '80, ovviamente, molte società di computer avevano paura che una nuova società avesse ceduto
AT&T rappresenterebbe una minaccia per il controllo dell'industria dei computer più di quanto non lo sarebbe
una nuova azienda a Redmond, Washington. Per calmare le paure di IBM, Intel, Digital
Equipment Corporation e altre società di computer, UNIX Lab, hanno realizzato quanto segue
impegni per garantire condizioni di parità:

■ Solo codice sorgente: invece di produrre il proprio boxed set di UNIX, AT&T ha continuato
vendere solo il codice sorgente e renderlo ugualmente disponibile a tutti i licenziatari. Ogni
la società quindi trasferirà UNIX sulla propria apparecchiatura. Non è stato fino a circa il 1992,
quando il laboratorio è stato scorporato come joint venture con Novell (chiamato Univel), e poi
alla fine venduta a Novell, che un cofanetto commerciale di UNIX (chiamato UnixWare)
è stato prodotto direttamente da quel codice sorgente.
■ Interfacce pubblicate: per creare un ambiente equo e comunitario
i suoi OEM (produttori di apparecchiature originali), AT&T ha iniziato a standardizzare cosa
diversi port di UNIX dovevano essere in grado di essere chiamati ancora UNIX. A quello scopo,
Standard POSIX (Portable Operating System Interface) e sistema UNIX AT&T
V Interface Definition (SVID) erano le specifiche che i fornitori UNIX potevano utilizzare per creare
sistemi UNIX compatibili. Quegli stessi documenti servivano anche come mappe stradali per il
creazione di Linux.

In un primo post di un newsgroup di posta elettronica, Linus Torvalds ha richiesto una copia, preferibilmente online, dello standard POSIX.
Penso che nessuno di AT&T si aspettasse che qualcuno fosse effettivamente in grado di scrivere il proprio clone di UNIX da quelli inter-
volti, senza utilizzare nessuno dei suoi codici sorgente UNIX.

10

Pagina 51

Capitolo 1: Iniziare con Linux

■ Approccio tecnico: ancora una volta, fino alla fine dell'USL, la maggior parte delle decisioni su
direzione di UNIX sono state fatte sulla base di considerazioni tecniche. La gestione era
promosso attraverso i ranghi tecnici e, per quanto ne so, non c'è mai stato
qualsiasi discorso sulla scrittura di software per rompere il software di altre società o altro
limitare il successo dei partner di USL. 1
Quando alla fine USL iniziò ad assumere esperti di marketing e creare un desktop UNIX
prodotto per gli utenti finali, Microsoft Windows aveva già una solida conoscenza del mercato desktop.
Inoltre, perché la direzione di UNIX era sempre stata verso la licenza del codice sorgente destinata
per i sistemi informatici di grandi dimensioni, USL ha avuto difficoltà nei prezzi dei suoi prodotti. Ad esempio, su
software che includeva con UNIX, USL si è trovata a dover pagare per computer
costi di licenza basati su mainframe da $ 100.000 invece di $ 2.000 PC. Aggiungi a questo
il fatto che nessun programma applicativo fosse disponibile con UnixWare, e puoi capire perché
lo sforzo fallì.

Il marketing di successo dei sistemi UNIX all'epoca, tuttavia, stava avvenendo con altri
società di computer. SCO aveva trovato un mercato di nicchia, vendendo principalmente versioni per PC di
UNIX esegue terminali stupidi in piccoli uffici. Sun Microsystems vendeva un sacco di UNIX
workstation (originariamente basate su BSD ma fuse con UNIX in SVR4) per programmatori e
applicazioni tecnologiche di fascia alta (come la compravendita di azioni).

Anche altri sistemi UNIX commerciali stavano emergendo negli anni '80. Questo nuovo
l'affermazione della proprietà di UNIX stava cominciando a pesare sullo spirito di apertura
contributi. Sono state avviate azioni legali per proteggere il codice sorgente ei marchi di UNIX.
Nel 1984, questo nuovo e restrittivo UNIX diede origine a un'organizzazione che alla fine aprì una strada
a Linux: la Free Software Foundation.

GNU passa da UNIX alla libertà


Nel 1984, Richard M. Stallman ha avviato il progetto GNU (http://www.gnu.org) , in modo ricorsivo
denominato dalla frase GNU è Not UNIX. Come progetto della Free Software Foundation (FSF),
GNU doveva diventare una ricodifica dell'intero sistema operativo UNIX che potrebbe essere
distribuito gratuitamente.

La pagina del progetto GNU (http://www.gnu.org/gnu/thegnuproject.html) dice al file


la storia di come è nato il progetto nelle parole di Stallman. Descrive anche i problemi
che le società di software proprietario imponevano a quegli sviluppatori di software che
voleva condividere, creare e innovare.

Sebbene la riscrittura di milioni di righe di codice possa sembrare scoraggiante per una o due persone,
diffondendo lo sforzo tra dozzine o addirittura centinaia di programmatori ha realizzato il progetto
possibile. Ricorda che UNIX è stato progettato per essere costruito in pezzi separati che potrebbero essere
convogliati insieme. Poiché riproducevano comandi e utilità con note,
interfacce pubblicate, questo sforzo potrebbe essere facilmente suddiviso tra molti sviluppatori.

11
Pagina 52

Parte I: Guida introduttiva

Si è scoperto che non solo si potevano ottenere gli stessi risultati da tutto il nuovo codice, ma in alcuni
casi, quel codice era migliore delle versioni UNIX originali. Perché tutti potevano vedere
il codice prodotto per il progetto, codice scritto male potrebbe essere corretto rapidamente o
sostituiti nel tempo.

Se hai familiarità con UNIX, prova a cercare tra migliaia di pacchetti software GNU
il tuo comando UNIX preferito dalla directory del software libero (http: // directory.
fsf.org/wiki/GNU). Ci sono buone probabilità che lo troverai lì, insieme a molti, molti
altri progetti software disponibili.

Nel tempo, il termine software libero è stato in gran parte sostituito dal termine software open source .
Il termine "software libero" è preferito dalla Free Software Foundation, mentre è open source
il software è promosso dall'Open Source Initiative (http://www.opensource.org).

Per accogliere entrambi i campi, alcune persone usano il termine Software libero e Open Source
(FOSS) invece. Un principio alla base di FOSS, tuttavia, è che, sebbene tu sia libero di farlo
usa il software come preferisci, hai la responsabilità di apportare i miglioramenti che desideri
rendere il codice disponibile ad altri. In questo modo, tutti nella comunità possono trarne vantaggio
dal tuo lavoro come hai beneficiato del lavoro degli altri.

Per definire chiaramente come dovrebbe essere gestito il software open source, il progetto software GNU
ha creato la GNU Public License, o GPL. Sebbene molte altre licenze software coprono
approcci leggermente diversi alla protezione del software libero, la GPL è la più conosciuta—
ed è quello che copre il kernel Linux stesso. Caratteristiche di base della GNU Public License
include il seguente:

■ Diritti dell'autore : l'autore originale conserva i diritti sul proprio software.


■ Distribuzione gratuita: le persone possono utilizzare il software GNU nel proprio software, cambiando
ing e ridistribuirlo a loro piacimento. Tuttavia, devono includere il file
codice sorgente con la loro distribuzione (o renderlo facilmente disponibile).
■ Copyright mantenuto: anche se si dovesse riconfezionare e rivendere il software, il
l'accordo GNU originale deve essere mantenuto con il software, il che significa tutto
i futuri destinatari del software hanno l'opportunità di modificare il codice sorgente,
proprio come hai fatto tu.

Non esiste alcuna garanzia per il software GNU. Se qualcosa va storto, lo sviluppatore originale di
il software non ha l'obbligo di risolvere il problema. Tuttavia, molte organizzazioni, grandi e
small, offre supporto a pagamento (spesso sotto forma di sottoscrizione) per il software quando è incluso in
loro Linux o altra distribuzione di software open source. (Vedere la "Definizione open source OSI"
più avanti in questo capitolo per una definizione più dettagliata del software open source.)

Nonostante il suo successo nella produzione di migliaia di utilità UNIX, il progetto GNU stesso non è riuscito
produrre un pezzo di codice critico: il kernel. I suoi tentativi di costruire un kernel open source
con il progetto GNU Hurd (http://www.gnu.org/software/hurd) non hanno avuto successo
all'inizio, quindi non è riuscito a diventare il principale kernel open source.

12

Pagina 53

Capitolo 1: Iniziare con Linux

BSD perde un po 'di vapore


L'unico progetto software che ha avuto la possibilità di battere Linux per essere il primo
il kernel open source era il venerabile progetto BSD. Alla fine degli anni '80, gli sviluppatori BSD
all'Università della California (UC) Berkeley si rese conto di aver già riscritto la maggior parte
del codice sorgente UNIX che avevano ricevuto un decennio prima.
1
Nel 1989, UC Berkeley distribuì il proprio codice simile a UNIX come Net / 1 e successivamente (nel 1991) come
Netto / 2. Proprio come UC Berkeley stava preparando un sistema operativo completo, simile a UNIX
libero da tutto il codice AT&T, AT&T li colpì con una causa legale nel 1992. La causa sosteneva che il file
il software è stato scritto utilizzando segreti commerciali presi dal sistema UNIX di AT&T.

È importante notare qui che gli sviluppatori BSD avevano completamente riscritto il copyright-
codice protetto da AT&T. Il copyright era il mezzo principale utilizzato da AT&T per proteggere i propri diritti
al codice UNIX. Alcuni credono che se AT&T avesse brevettato i concetti trattati in questo
codice, potrebbe non esserci un sistema operativo Linux (o un clone UNIX) oggi.

La causa è stata ritirata quando Novell ha acquistato UNIX System Laboratories da AT&T nel 1994.
Ma, durante quel periodo critico, c'erano abbastanza timori e dubbi sulla legalità del
Codice BSD che lo slancio BSD aveva acquisito fino a quel punto nella neonata open source
la comunità è stata persa. Molte persone hanno iniziato a cercare un'altra alternativa open source.
I tempi erano maturi per uno studente universitario finlandese che stava lavorando al proprio kernel.

Oggi, le versioni BSD sono disponibili da tre progetti principali: FreeBSD, NetBSD e OpenBSD. Le persone in generale
caratterizzano FreeBSD come il più facile da usare, NetBSD come disponibile sulla maggior parte delle piattaforme hardware di computer, e
OpenBSD come fanaticamente sicuro. Molte persone attente alla sicurezza preferiscono ancora BSD a Linux. Inoltre, a causa della sua
licenze, il codice BSD può essere utilizzato da fornitori di software proprietario, come Microsoft e Apple, che non lo desiderano
per condividere il codice del proprio sistema operativo con altri. Mac OS X è costruito su un derivato BSD.

Linus costruisce il pezzo mancante


Linus Torvalds ha iniziato a lavorare su Linux nel 1991, mentre era studente all'Università di
Helsinki, Finlandia. Voleva creare un kernel simile a UNIX in modo da poter utilizzare lo stesso
tipo di sistema operativo sul suo PC di casa che usava a scuola. A quel tempo, Linus lo era
utilizzando Minix, ma voleva andare oltre ciò che gli standard Minix consentivano.

Come notato in precedenza, Linus ha annunciato la prima versione pubblica del kernel Linux al comp
.os.minix newsgroup il 25 agosto 1991, sebbene Torvalds ritenga che la prima versione
in realtà non è uscito fino a metà settembre di quell'anno.

Sebbene Torvalds abbia affermato che Linux è stato scritto per il processore 386 e probabilmente non lo era
portatile, altri hanno insistito nell'incoraggiare (e contribuire a) un approccio più portabile in
le prime versioni di Linux. Entro il 5 ottobre, Linux 0.02 è stato rilasciato con gran parte dell'originale

13

Pagina 54

Parte I: Guida introduttiva

codice assembly riscritto nel linguaggio di programmazione C, che ha reso possibile l'avvio
portarlo su altre macchine.

Il kernel Linux era l'ultimo, e il più importante, pezzo di codice necessario


per completare un intero sistema operativo simile a UNIX sotto GPL. Quindi, quando le persone hanno iniziato
mettendo insieme le distribuzioni, il nome Linux e non GNU è ciò che è rimasto. Alcuni
distribuzioni come Debian, tuttavia, si riferiscono a se stesse come distribuzioni GNU / Linux.
(Anche non includere GNU nel titolo o nel sottotitolo di un sistema operativo Linux è una questione di
molte lamentele pubbliche da parte di alcuni membri del progetto GNU. Vedi http://www.gnu.org.)

Oggi, Linux può essere descritto come un sistema operativo simile a UNIX open source che riflette
una combinazione di conformità SVID, POSIX e BSD. Linux continua a puntare verso
conformità con POSIX e con gli standard stabiliti dal proprietario del marchio UNIX,
The Open Group (http://www.unix.org ).

Open Source Development Labs senza scopo di lucro, ribattezzato Linux Foundation dopo
fusione con il Free Standards Group (http://www.linuxfoundation.org), che
impiega Linus Torvalds, gestisce oggi la direzione degli sforzi di sviluppo di Linux. Suo
l'elenco degli sponsor è come un Who's Who dei fornitori commerciali di sistemi e applicazioni Linux,
inclusi IBM, Red Hat, SUSE, Oracle, HP, Dell, Computer Associates, Intel, Cisco Systems,
e altri. Lo statuto principale della Linux Foundation è proteggere e accelerare il
crescita di Linux fornendo protezione legale e standard di sviluppo software per
Sviluppatori Linux.

Sebbene gran parte della spinta degli sforzi aziendali di Linux sia sull'azienda, sull'impresa
informatica, stanno continuando enormi miglioramenti anche nell'arena desktop. Il KDE
e gli ambienti desktop GNOME migliorano continuamente l'esperienza Linux per i casual
utenti. I nuovi ambienti desktop leggeri come Xfce e LXDE ora offrono efficienza
alternative che oggi portano Linux a migliaia di possessori di netbook.

Linus Torvalds continua a mantenere e migliorare il kernel Linux.


Per una storia più dettagliata di Linux, vedere il libro Open Sources : Voices from the Open Source Revolution (O'Reilly,
1999). L'intera prima edizione è disponibile online su http://oreilly.com/catalog/opensources/book/
toc.html.

Definizione open source OSI


Linux fornisce una piattaforma che consente agli sviluppatori di software di modificare il sistema operativo come
a loro piace e ottengono un'ampia gamma di aiuti per creare le applicazioni di cui hanno bisogno. Uno di
watchdog del movimento open source è l'Open Source Initiative (OSI , http: // www.
opensource.org).

14

Pagina 55

Capitolo 1: Iniziare con Linux

Sebbene l'obiettivo principale del software open source sia rendere disponibile il codice sorgente, altri
gli obiettivi del software open source sono definiti anche da OSI nella sua definizione open source. La maggior parte
le seguenti regole per licenze open source accettabili servono a proteggere la libertà e
integrità del codice open source:

■ Distribuzione gratuita: una licenza open source non può richiedere una tariffa da parte di chiunque
1
rivende il software.
■ Codice sorgente: il codice sorgente deve essere incluso con il software e può esserci
nessuna restrizione alla ridistribuzione.
■ Opere derivate : la licenza deve consentire la modifica e la ridistribuzione del codice
agli stessi termini.
■ Integrità del codice sorgente dell'autore : la licenza può richiedere che coloro che
usa il codice sorgente rimuovi il nome o la versione del progetto originale se cambiano
il codice sorgente.
■ Nessuna discriminazione contro persone o gruppi : la licenza deve consentire a tutte le persone
per essere ugualmente idonei a utilizzare il codice sorgente.
■ Nessuna discriminazione nei campi di attività : la licenza non può limitare un progetto
dall'utilizzo del codice sorgente perché è commerciale o perché è associato a
un campo di attività che al fornitore di software non piace.
■ Distribuzione della licenza: non è necessaria alcuna licenza aggiuntiva per utilizzare e
ridistribuire il software.
■ La licenzanon deve essere specifica per un prodotto : la licenza non può limitare l'origine
codice a una particolare distribuzione software.
■ La licenza non deve limitare altro software : la licenza non può impedire a qualcuno
dall'inclusione del software open source sullo stesso supporto di non-open
software di origine.
■ La licenza deve essere neutra dal punto di vista tecnologico : la licenza non può limitare i metodi in cui
il codice sorgente può essere ridistribuito.

Le licenze open source utilizzate dai progetti di sviluppo software devono soddisfare questi criteri per essere
accettato come software open source da OSI. Circa 70 licenze differenti sono accettate da OSI per
essere utilizzato per etichettare il software come "software open source certificato OSI". Oltre alla GPL,
altre popolari licenze approvate dall'OSI includono:

■ LGPL : per la distribuzione viene spesso utilizzata la GNU Lesser General Public License (LGPL)
librerie da cui dipendono altri programmi applicativi.
■ BSD : la licenza di distribuzione software di Berkeley consente la ridistribuzione dei sorgenti
code, con il requisito che il codice sorgente mantenga l'avviso di copyright BSD e
non utilizzare i nomi dei contributori per avallare o promuovere software derivato senza
autorizzazione scritta. Una delle principali differenze rispetto alla GPL, tuttavia, è che BSD non lo fa
richiedere alle persone che modificano il codice di trasmettere tali modifiche alla comunità.

15
Pagina 56

Parte I: Guida introduttiva

Di conseguenza, i fornitori di software proprietario come Apple e Microsoft hanno utilizzato


Codice BSD nei propri sistemi operativi.
■ MIT : la licenza MIT è come la licenza BSD, tranne per il fatto che non include l'estensione
requisito di approvazione e promozione.
■ Mozilla : la licenza Mozilla copre l'uso e la ridistribuzione del codice sorgente
associato al browser Web Firefox e ad altri software correlati a Mozilla
progetto (http://www.mozilla.org). È una licenza molto più lunga delle altre
appena citato perché contiene più definizioni di come contributori e quelli
riutilizzare il codice sorgente dovrebbe funzionare. Ciò include l'invio di un file di modifiche
quando si presentano modifiche e che coloro che apportano le proprie aggiunte
il codice per la ridistribuzione dovrebbe essere a conoscenza di questioni di brevetto o altre restrizioni
associati al loro codice.

Il risultato finale del codice open source è un software che ha più flessibilità per crescere e meno
limiti nel modo in cui può essere utilizzato. Molti credono che il fatto che molte persone guardino
sul codice sorgente di un progetto si traduce in software di qualità superiore per tutti. Come aperto
il sostenitore della fonte Eric S. Raymond dice in una linea spesso citata: "Dato abbastanza bulbi oculari, tutto
gli insetti sono superficiali. "

Capire come sono emerse le distribuzioni Linux


Avere bundle di codice sorgente che fluttuano su Internet che potrebbero essere compilati e
confezionato in un sistema Linux ha funzionato bene per i geek. Gli utenti Linux più occasionali, tuttavia,
aveva bisogno di un modo più semplice per mettere insieme un sistema Linux. Per rispondere a tale esigenza, alcuni di
i migliori smanettoni iniziarono a costruire le proprie distribuzioni Linux.

Una distribuzione Linux è costituita dai componenti necessari per creare un sistema Linux funzionante
e le procedure necessarie per installare e far funzionare quei componenti. Tecnicamente,
Linux è proprio quello che viene chiamato kernel . Prima che il kernel possa essere utile, tu
deve avere altro software come i comandi di base (utilità GNU), i servizi che desideri
offerta (come login remoto o server web), ed eventualmente un'interfaccia desktop e grafica
applicazioni. Quindi, devi essere in grado di raccogliere tutto ciò e installarlo sul tuo file
disco rigido del computer.

Slackware ( http://www.slackware.com) è ancora una delle più vecchie distribuzioni Linux


in fase di sviluppo oggi. Ha reso Linux amichevole per gli utenti meno tecnici grazie alla distribuzione
software già compilato e raggruppato in pacchetti (quei pacchetti di software
i componenti erano in un formato chiamato tarball ). Quindi useresti i comandi Linux di base
per fare cose come formattare il disco, abilitare lo scambio e creare account utente.

In poco tempo furono create molte altre distribuzioni Linux. Alcune distribuzioni Linux
sono stati creati per soddisfare esigenze speciali, come KNOPPIX (un live CD Linux), Gentoo (un fantastico

16

Pagina 57

Capitolo 1: Iniziare con Linux

Linux personalizzabile) e Mandrake (in seguito chiamata Mandriva, che era una delle tante
le migliori distribuzioni Linux). Ma due importanti distribuzioni sono diventate la base per
molte altre distribuzioni: Red Hat Linux e Debian.

Scegliere una distribuzione Red Hat 1


Quando Red Hat Linux è apparso alla fine degli anni '90, è diventato rapidamente il Linux più popolare
distribuzione per diversi motivi:

■ Gestione dei pacchetti RPM: i tarball vanno bene per il rilascio di software sul tuo
computer, ma non funzionano altrettanto bene quando si desidera aggiornare, rimuovere o persino
scoprire quel software. Red Hat ha creato il formato di packaging RPM quindi un file
il pacchetto software potrebbe contenere non solo i file da condividere, ma anche le informazioni
sulla versione del pacchetto, chi lo ha creato, quali file erano documentazione o
file di configurazione e quando è stato creato. Installando il software confezionato in
Formato RPM, le informazioni su ciascun pacchetto software potrebbero essere archiviate in un file
database RPM locale. È diventato facile trovare cosa è stato installato, aggiornarlo o
rimuoverlo.
■ Installazione semplice: il programma di installazione di anaconda ha reso molto più semplice l'installazione di Linux.
In qualità di utente, potresti passare attraverso alcune semplici domande, nella maggior parte dei casi accettando
impostazioni predefinite, per installare Red Hat Linux.
■ Amministrazione grafica: Red Hat ha aggiunto semplici strumenti grafici per la configurazione
stampanti, aggiungere utenti, impostare ora e data e svolgere altre attività amministrative di base.
Di conseguenza, gli utenti desktop potrebbero utilizzare un sistema Linux senza nemmeno doverlo
eseguire comandi.

Per anni, Red Hat Linux è stata la distribuzione Linux preferita da entrambi i professionisti Linux
e appassionati. Red Hat, Inc., ha dato via il codice sorgente, così come il compilato, pronto
versioni da eseguire di Red Hat Linux (denominate binari ). Ma come le esigenze dei loro
Gli utenti della comunità Linux e i clienti più esigenti hanno iniziato ad allontanarsi ulteriormente, Red Hat
abbandonò Red Hat Linux e iniziò a sviluppare invece due sistemi operativi: Red Hat
Enterprise Linux e Fedora.

Utilizzo di Red Hat Enterprise Linux


Nel marzo 2012, Red Hat, Inc., è diventata la prima società di software open source a introdurre
oltre 1 miliardo di dollari di fatturato annuo. Ha raggiunto questo obiettivo costruendo una serie di prodotti
intorno a Red Hat Enterprise Linux (RHEL) che soddisferebbe le esigenze dei più esigenti
ambienti informatici aziendali.

Mentre altre distribuzioni Linux si sono concentrate su sistemi desktop o computer per piccole imprese,
RHEL ha lavorato su quelle funzionalità necessarie per gestire le applicazioni mission-critical per il business
e governo. Ha costruito sistemi in grado di accelerare le transazioni per il più grande del mondo
scambi finanziari ed essere distribuiti come cluster e host virtuali.

17

Pagina 58

Parte I: Guida introduttiva

Invece di vendere semplicemente RHEL, Red Hat offre un ecosistema di vantaggi per i clienti Linux
disegnare su. Per utilizzare RHEL, i clienti acquistano abbonamenti che possono utilizzare per distribuire qualsiasi versione
di RHEL che desiderano. Se disattivano un sistema RHEL, possono utilizzare l'abbonamento a
distribuire un altro sistema.

Sono disponibili diversi livelli di supporto per RHEL, a seconda delle esigenze del cliente. I clienti
si può essere certi che, insieme al supporto, possono ottenere hardware e software di terze parti
certificato per lavorare con RHEL. Possono chiedere aiuto ai consulenti e agli ingegneri di Red Hat
mettono insieme gli ambienti informatici di cui hanno bisogno. Possono anche ricevere formazione e
esami di certificazione per i propri dipendenti (vedere la discussione sulla certificazione RHCE più avanti in
questo capitolo).

Red Hat ha anche aggiunto altri prodotti come estensioni naturali a Red Hat Enterprise Linux.
JBoss è un prodotto middleware per la distribuzione di applicazioni basate su Java su Internet o
intranet aziendali. Red Hat Enterprise Virtualization è composto dalla virtualizzazione
host, gestori e computer guest che consentono di installare, eseguire, gestire, migrare e
smantellare enormi ambienti di elaborazione virtuale.

Negli ultimi anni, Red Hat ha esteso il proprio portafoglio al cloud computing. RHEL OpenStack
Platform e Red Hat Enterprise Virtualization offrono piattaforme complete per l'esecuzione e
gestione delle macchine virtuali. Red Hat Cloudforms è una piattaforma di gestione del cloud. RHEL
I contenitori Atomic e Linux in formato Docker offrono modi per containerizzare le applicazioni
per il cloud.

C'è chi ha provato a clonare RHEL, utilizzando il codice sorgente RHEL disponibile gratuitamente,
ricostruendolo e rebranding. Oracle Linux è costruito dal codice sorgente per RHEL ma attualmente
offre un kernel incompatibile. CentOS è una distribuzione Linux sponsorizzata dalla comunità che è
costruito dal codice sorgente RHEL. Recentemente, Red Hat ha assunto il supporto del progetto CentOS.

Ho scelto di utilizzare Red Hat Enterprise Linux per molti degli esempi in questo libro perché,
se vuoi una carriera lavorando su sistemi Linux, c'è una grande richiesta per coloro che possono
amministrare i sistemi RHEL. Se stai iniziando con Linux, tuttavia, Fedora può fornire
un eccellente punto di accesso alle stesse competenze necessarie per utilizzare e amministrare i sistemi RHEL.

Usare Fedora
Mentre RHEL è la distribuzione Linux commerciale, stabile e supportata, Fedora è la distribuzione gratuita,
distribuzione Linux all'avanguardia sponsorizzata da Red Hat, Inc. Fedora è Linux
sistema utilizzato da Red Hat per coinvolgere la comunità di sviluppatori Linux e incoraggiarli
che desiderano un Linux gratuito per uso personale e rapido sviluppo.

Fedora include più di 16.000 pacchetti software, molti dei quali tengono il passo con
ultima tecnologia open source disponibile. Come utente, puoi provare l'ultimo desktop Linux,
server e interfacce amministrative in Fedora gratuitamente. Come sviluppatore di software, puoi farlo
creare e testare le applicazioni utilizzando il kernel Linux e gli strumenti di sviluppo più recenti.

18

Pagina 59

Capitolo 1: Iniziare con Linux

Poiché l'obiettivo di Fedora è sulla tecnologia più recente, si concentra meno sulla stabilità. Così
aspettati che potresti dover fare del lavoro extra per far funzionare tutto e non
tutto il software sarà completamente cotto.

Tuttavia, ti consiglio di usare Fedora per la maggior parte degli esempi in questo libro per
1
seguenti motivi:

■ Fedora viene utilizzato come banco di prova per Red Hat Enterprise Linux. Test di Red Hat
molte nuove applicazioni in Fedora prima di inviarle a RHEL. Usando
Fedora, imparerai le abilità di cui hai bisogno per lavorare con le funzionalità così come sono
sviluppato per Red Hat Enterprise Linux.
■ Per l'apprendimento, Fedora è più conveniente di RHEL, ma include ancora molti dei
strumenti più avanzati e pronti per le aziende che si trovano in RHEL.
■ Fedora è gratuito, non solo come in "libertà" ma anche come in "non devi
pagare per questo."

Fedora è estremamente popolare tra coloro che sviluppano software open source. Tuttavia, in
Negli ultimi anni, un'altra distribuzione Linux ha catturato l'attenzione di molte persone
a partire da Linux: Ubuntu.

Scegliere Ubuntu o un'altra distribuzione Debian


Come Red Hat Linux, la distribuzione Debian GNU / Linux è stata una delle prime distribuzioni Linux
che eccelleva nel confezionamento e nella gestione del software. Debian usa il formato di pacchettizzazione deb e
strumenti per gestire tutti i pacchetti software sui propri sistemi. Debian ha anche una reputazione
per la stabilità.

Molte distribuzioni Linux possono far risalire le loro radici a Debian. Secondo distrowatch
( http://distrowatch.com), è possibile tracciare più di 130 distribuzioni Linux attive
torna a Debian. Le distribuzioni popolari basate su Debian includono Linux Mint, sistema operativo elementare,
Zorin OS, LXLE, Kali Linux e molti altri. Tuttavia, il derivato Debian che ha
il maggior successo ottenuto è Ubuntu (http://www.ubuntu.com ).

Affidandosi allo sviluppo e al packaging stabile del software Debian, Ubuntu Linux
la distribuzione è stata in grado di intervenire e aggiungere quelle caratteristiche che mancavano a Debian. All'inseguimento
di portare nuovi utenti a Linux, il progetto Ubuntu ha aggiunto un semplice programma di installazione grafico e
strumenti grafici facili da usare. Si è concentrato anche su sistemi desktop completi, mentre ancora
offrendo pacchetti server popolari.

Ubuntu è stato anche un innovatore nella creazione di nuovi modi per eseguire Linux. Utilizzo di live CD o live USB
drive offerti da Ubuntu, potresti avere Ubuntu attivo e funzionante in pochi minuti.
Spesso nei CD live erano incluse applicazioni open source, come browser web e word
processori, che effettivamente giravano in Windows. Questo ha reso il passaggio a Linux da Windows
più facile per alcune persone.

19

Pagina 60
Parte I: Guida introduttiva

Se stai usando Ubuntu, non temere. La maggior parte degli argomenti trattati in questo libro funzionerà come
bene in Ubuntu come in Fedora o RHEL. Questa edizione della Bibbia di Linux fornisce espanso
copertura di Ubuntu.

Trovare opportunità professionali con Linux oggi


Se vuoi sviluppare un'idea per un progetto o una tecnologia di ricerca relativa al computer
azienda, da dove inizi? Inizi con un'idea. Dopodiché, cerchi gli strumenti
devi esplorare ed eventualmente creare la tua visione. Quindi, cerchi che altri ti aiutino
durante quel processo di creazione.

Oggi, i costi elevati per avviare un'azienda come Google o Facebook includono solo un
computer, una connessione a Internet e una quantità sufficiente di bevande contenenti caffeina di tua scelta
per tenerti sveglio tutta la notte a scrivere codice. Se hai la tua idea che cambia il mondo, Linux
e migliaia di pacchetti software sono disponibili per aiutarti a costruire i tuoi sogni. L'apertura
source world include anche comunità di sviluppatori, amministratori e utenti che lo sono
disponibile ad aiutarti.

Se vuoi essere coinvolto in un progetto open source esistente, i progetti lo sono sempre
alla ricerca di persone per scrivere codice, testare software o scrivere documentazione. In quei progetti,
troverai persone che usano il software, lavorano sul software e di solito sono disponibili
per condividere la loro esperienza per aiutare anche te.

Ma se cerchi di sviluppare il prossimo grande progetto software open source o semplicemente


desidera acquisire le competenze necessarie per competere per le migliaia di amministratori Linux ben pagati
istruttore o lavori di sviluppo, ti aiuterà a sapere come installare, proteggere e mantenere
Sistemi Linux.

Quindi, quali sono le prospettive per una carriera in Linux? "The 2014 Linux Jobs Report" da Linux
Fondazione (http://www.linuxfoundation.org/publications/linux- founda-
zione / linux-adozione-trend-end-user-report-2014) ha intervistato più di 1, 100
responsabili delle assunzioni e 4.000 professionisti Linux. Ecco cosa ha trovato la Linux Foundation:

■ Il talento Linux è una priorità assoluta: assumere persone con esperienza Linux è una priorità
per il 77% dei responsabili delle assunzioni.
■ Avanzamento di carriera con Linux: per le opportunità di carriera, l'86% di Linux
i professionisti hanno riferito che la conoscenza di Linux ha aumentato le opportunità di carriera.
■ Più reclutamento di Linux: dei responsabili delle assunzioni intervistati, il 46% ha riferito
che avevano pianificato di aumentare il reclutamento di talenti Linux rispetto all'anno precedente
(+ 3% rispetto all'anno precedente).

Il messaggio principale da trarre da questo sondaggio è che Linux continua a crescere e creare
richieste di esperienza Linux. Le aziende che hanno iniziato a utilizzare Linux hanno continuato a farlo

20

Pagina 61

Capitolo 1: Iniziare con Linux

andare avanti con Linux. Chi usa Linux continua ad espandere il suo utilizzo e trova quel costo
i risparmi, la sicurezza e la flessibilità che offre continuano a fare di Linux un buon investimento.

Capire come le aziende guadagnano con Linux 1


Gli appassionati dell'open source credono che un software migliore possa derivare da un software open source
modello di sviluppo del software rispetto ai modelli di sviluppo proprietari. Quindi, in teoria, qualsiasi compo
L'azienda che crea software per uso proprio può risparmiare denaro aggiungendo i propri contributi software
a quelli degli altri per ottenere un prodotto finale molto migliore per se stessi.

Le aziende che vogliono fare soldi vendendo software devono essere più creative di
erano ai vecchi tempi. Sebbene tu possa vendere il software che crei che include
Software GPL, devi inoltrare il codice sorgente di quel software. Ovviamente altri
può quindi ricompilare quel prodotto, fondamentalmente usando e persino rivendendo il tuo prodotto senza
caricare. Ecco alcuni modi in cui le aziende affrontano questo problema:

■ Abbonamenti software — Red Hat, Inc., vende i suoi prodotti Red Hat Enterprise Linux
su base di abbonamento. Per una certa somma di denaro all'anno, ottieni binario
codice per eseguire Linux (quindi non devi compilarlo da solo), supporto garantito,
strumenti per monitorare l'hardware e il software del computer, l'accesso al
base di conoscenza dell'azienda e altre risorse.

Sebbene il progetto Fedora di Red Hat includa gran parte dello stesso software ed è anche
disponibile in formato binario, non ci sono garanzie associate al software o
futuri aggiornamenti di quel software. Un piccolo ufficio o un utente personale potrebbe correre dei rischi
sull'utilizzo di Fedora (che è di per sé un eccellente sistema operativo), ma una grande azienda
che esegue applicazioni mission-critical probabilmente investirà qualche dollaro
per RHEL.
■ Formazione e certificazione: con l' utilizzo del sistema Linux in crescita nel governo e
grandi imprese, sono necessari professionisti per supportare questi sistemi. Offerte di Red Hat
corsi di formazione ed esami di certificazione per aiutare gli amministratori di sistema a diventare
esperto nell'uso dei sistemi Red Hat Enterprise Linux. In particolare, il Red Hat
Certified Engineer (RHCE) e Red Hat Certified System Administrator (RHCSA)
le certificazioni sono diventate popolari (http://www.redhat.com/certification).
Maggiori informazioni sulle certificazioni RHCE / RHCSA più avanti in questo capitolo.
Altri programmi di certificazione sono offerti da Linux Professional Institute
( http://www.lpi.org), CompTIA (http://www.comptia.org) e Novell
( https://training.novell.com/). LPI e CompTIA sono computer professionali
associazioni di categoria. Novell concentra la sua formazione e certificazione su SUSE
Prodotti Linux.
■ Bounties : i bounties del software sono un modo affascinante per il software open source
aziende per fare soldi. Supponiamo che tu stia utilizzando il pacchetto software XYZ e tu
serve subito una nuova funzionalità. Pagando una ricompensa software al progetto stesso,
o ad altri sviluppatori di software, puoi spostare i miglioramenti necessari

21

Pagina 62

Parte I: Guida introduttiva

in testa alla coda. Il software per cui paghi rimarrà coperto dalla sua apertura
licenza sorgente, ma avrai le funzionalità di cui hai bisogno, probabilmente a una frazione di
il costo della costruzione del progetto da zero.
■ Donazioni: molti progetti open source accettano donazioni da privati ​o aperti
aziende di origine che utilizzano il codice dai loro progetti. Sorprendentemente, molti open source
i progetti supportano uno o due sviluppatori e vengono eseguiti esclusivamente su donazioni.
■ Cofanetti,tazze e magliette: alcuni progetti open source hanno negozi online
dove puoi acquistare cofanetti (ad alcune persone piacciono ancora i DVD fisici e le copie cartacee
di documentazione) e una varietà di tazze, magliette, tappetini per il mouse e altri oggetti.
Se ami davvero un progetto, per carità, compra una maglietta!

Questo non è in alcun modo un elenco esaustivo, perché ogni volta vengono inventati modi più creativi
giornata per supportare chi crea software open source. Ricorda che molte persone l'hanno fatto
diventare contributori e manutentori di software open source perché avevano bisogno di o
volevano il software stesso. I contributi che danno gratuitamente valgono il ritorno
ottengono da altri che fanno lo stesso.

Ottenere la certificazione Red Hat


Sebbene questo libro non sia incentrato sull'ottenimento della certificazione in Linux, tocca il
attività che devi essere in grado di padroneggiare per superare gli esami di certificazione Linux più diffusi. Nel
in particolare, la maggior parte di ciò che è trattato in Red Hat Certified Engineer (RHCE) e Red Hat
Vengono descritti gli esami di amministratore di sistema certificato (RHCSA) per Red Hat Enterprise Linux 7
in questo libro.

Se stai cercando un lavoro come professionista IT Linux, spesso certificazione RHCSA o RHCE
è elencato come un requisito o almeno una preferenza per i datori di lavoro. L'esame RHCSA (EX200)
fornisce la certificazione di base, coprendo argomenti come la configurazione di dischi e filesystem,
aggiunta di utenti, configurazione di un semplice server Web e FTP e aggiunta di spazio di swap. Il RHCE
exam (EX300) verifica la configurazione del server più avanzata, nonché una conoscenza avanzata
di funzionalità di sicurezza, come SELinux e firewall.

Quelli di noi che hanno insegnato corsi RHCE / RHCSA e dato esami (come ho fatto per tre
anni) non sono autorizzati a dirti esattamente cosa c'è nell'esame. Tuttavia, Red Hat fornisce un file
panoramica di come funzionano gli esami, nonché un elenco di argomenti che puoi aspettarti di vedere trattati
l'esame. Puoi trovare questi obiettivi dell'esame sui seguenti siti:

■ RHCSA - http://www.redhat.com/en/services/training/
ex200-red-hat-certificato-amministratore di sistema-esame-rhcsa
■ RHCE - http://www.redhat.com/en/services/training/
ex300-red-hat-Certified-engineer-rhce-exam
Come affermano
significa gli obiettivi
che ti vengono dell'esame,
assegnati compitigli
daesami RHCSA
svolgere e che edevi
RHCE sono questi
eseguire basati sulle prestazioni,
compiti su un veroche
rosso

22

Pagina 63

Capitolo 1: Iniziare con Linux

Hat Enterprise Linux, come faresti sul lavoro. Sei valutato in base a quanto bene
ottenuto i risultati di tali compiti.

Se hai intenzione di sostenere gli esami, torna spesso alle pagine degli obiettivi dell'esame, perché
cambiare di volta in volta. Tieni presente anche che RHCSA è una certificazione autonoma;
1
tuttavia, è necessario superare gli esami RHCSA e RHCE per ottenere una certificazione RHCE. Spesso,
i due esami si tengono lo stesso giorno.

Puoi iscriverti alla formazione e agli esami RHCSA e RHCE su http: //training.redhat.
com. La formazione e gli esami vengono impartiti nelle principali città degli Stati Uniti e nei dintorni
mondo. Le competenze necessarie per completare questi esami sono descritte nelle sezioni seguenti.

Argomenti RHCSA
Come notato in precedenza, gli argomenti dell'esame RHCSA coprono le competenze di amministrazione di sistema di base. Questi sono
gli argomenti attuali elencati per Red Hat Enterprise Linux 7 nel sito degli obiettivi dell'esame RHCSA
(di nuovo, controlla il sito degli obiettivi dell'esame nel caso cambino) e dove puoi farlo in questo libro
impara su di loro:

■ Comprendere gli strumenti essenziali : ci si aspetta che tu abbia una conoscenza pratica di
la shell dei comandi (bash), incluso come utilizzare la sintassi dei comandi corretta e fare
reindirizzamento input / output (<> >>). Devi sapere come accedere a remoto e
sistemi locali. Aspettatevi di dover creare, modificare, spostare, copiare, collegare, eliminare e cambiare
autorizzazione e proprietà sui file. Allo stesso modo, dovresti sapere come cercare informazioni
mation nelle pagine man e / usr / share / doc. La maggior parte di questi argomenti sono trattati in
Capitoli 3 e 4 in questo libro. Il Capitolo 5 descrive come modificare e trovare i file.
■ Utilizzo di sistemi in esecuzione: in questa categoria, è necessario comprendere l'avvio di Linux
processo, passare alla modalità utente singolo, spegnere, riavviare e passare a diverso
obiettivi (precedentemente chiamati runlevel ). È necessario identificare i processi e il cambiamento
bei valori o uccidere i processi come richiesto. Devi essere in grado di avviare e arrestare virtual
macchine e servizi di rete, nonché trovare e interpretare i file di registro. Capitolo
15 descrive come modificare target e runlevel e gestire i servizi di sistema.
Vedere il Capitolo 6 per informazioni sulla gestione e la modifica dei processi. Capitolo 26
descrive come gestire le macchine virtuali. La registrazione è descritta nel Capitolo 13.
■ Configurazione dell'archiviazione locale: la configurazione delle partizioni del disco include la creazione di elementi fisici
volumi e configurarli per essere utilizzati per Logical Volume Management (LVM)
o crittografia (LUKS). Dovresti anche essere in grado di configurare quelle partizioni come
filesystem o spazio di swap che possono essere montati o abilitati al momento dell'avvio. Disco
il partizionamento e LVM sono trattati nel Capitolo 12. LUKS e altre crittografie
gli argomenti sono descritti nel Capitolo 23.
■ Crea e configura filesystem: crea e monta automaticamente diversi
tipi di filesystem, inclusi i normali filesystem Linux (ext2, ext3 o ext4),
File system crittografati con LUKS e file system di rete (NFS e CIFS). Crea collaborazione
directory orative utilizzando la funzione set group ID bit e gli elenchi di controllo di accesso (ACL).

23

Pagina 64

Parte I: Guida introduttiva


È inoltre necessario essere in grado di utilizzare LVM per estendere la dimensione di un volume logico. Filesystem
gli argomenti sono trattati nel Capitolo 12. Vedere il Capitolo 19 per CIFS e il Capitolo 20 per
Copertura NFS.
■ Distribuire, configurare e mantenere i sistemi: copre una vasta gamma di argomenti,
compresa la configurazione della rete, la creazione di attività cron, l'impostazione predefinita
runlevel e installazione di sistemi RHEL. Devi anche essere in grado di configurare un semplice file
Server HTTP e FTP. Per i pacchetti software, è necessario essere in grado di installare i pacchetti
da Red Hat Network, un repository remoto o il filesystem locale. Infine, tu
deve essere in grado di installare correttamente un nuovo kernel e scegliere quello o qualche altro ker-
nel per avviarsi all'avvio del sistema. La funzione cron è descritta nel Capitolo
13. Le impostazioni del server Web (HTTP) e del server FTP sono trattate nei Capitoli 17 e 18,
rispettivamente.
■ Gestire utenti e gruppi: è necessario sapere come aggiungere, eliminare e cambiare utente
e account di gruppo. Un altro argomento da conoscere è l'invecchiamento della password, utilizzando l'estensione
comando chage. Devi anche sapere come configurare un sistema da cui eseguire l'autenticazione
connessione a un server di directory LDAP. Vedere il Capitolo 11 per informazioni sulla configurazione
uring utenti e gruppi.
■ Gestire la sicurezza: è necessario avere una conoscenza di base di come impostare un firewall
(firewalld, system-config-firewall o iptables) e come usare SELinux.
Devi essere in grado di configurare SSH per eseguire l'autenticazione basata su chiave. Impara al riguardo
SELinux nel Capitolo 24. I firewall sono trattati nel Capitolo 25. Il Capitolo 13 include a
descrizione dell'autenticazione basata su chiave.

La maggior parte di questi argomenti sono trattati in questo libro. Fare riferimento alla documentazione di Red Hat (https: //
access.redhat.com/documentation/) sotto l'intestazione Red Hat Enterprise Linux per
descrizioni di funzioni non presenti in questo libro. In particolare, l'amministratore di sistema
La guida contiene le descrizioni di molti degli argomenti relativi a RHCSA.

Argomenti RHCE
Gli argomenti dell'esame RHCE coprono una configurazione del server più avanzata, insieme a una varietà di
funzionalità rity per la protezione di tali server in Red Hat Enterprise Linux 7. Ancora una volta, controllare il file
Sito degli obiettivi dell'esame RHCE per le informazioni più aggiornate sugli argomenti che dovresti studiare
per l'esame.

Configurazione e gestione del sistema


I requisiti di configurazione e gestione del sistema per l'esame RHCE coprono una vasta gamma
di argomenti, inclusi i seguenti:

■ Collegamento: impostare il collegamento per aggregare i collegamenti di rete. Il legame è descritto in


Capitolo 14.
■ Instrada il traffico IP: consente di impostare route statiche a indirizzi di rete specifici. Capitolo 14
include una descrizione di come impostare percorsi personalizzati.

24

Pagina 65

Capitolo 1: Iniziare con Linux

■ Firewall: blocca o consenti il ​traffico verso le porte selezionate del sistema che offrono
servizi come web, FTP e NFS, nonché bloccare o consentire l'accesso ai servizi
in base all'indirizzo IP del mittente. I firewall sono trattati nel Capitolo 25.
■ Kernel settaggi -Set kernel sintonizzabile parametri utilizzando il /etc/sysctl.conf
file e il comando sysctl. Vedere il Capitolo 14 per una descrizione di come utilizzare il file 1
/etc/sysctl.conf per modificare le impostazioni di inoltro IP in / proc / sys.
■ Autenticazione Kerberos: utilizzare Kerberos per autenticare gli utenti su un sistema RHEL.
Il Capitolo 11 include una descrizione della configurazione di un sistema per l'autenticazione a un file
Server Kerberos.
■ Configura iSCSI: consente di configurare il sistema come destinazione iSCSI e iniziatore da montare
un target iSCSI al momento dell'avvio. Vedere la Red Hat Storage Administration Guide per
ulteriori informazioni (https://access.redhat.com/documentation/en-US/
Red_Hat_Enterprise_Linux / 7 / html / Storage_Administration_Guide /
ch-iscsi.html)
■ Rapporti di sistema: utilizzare funzionalità come sar per creare rapporti sull'utilizzo della memoria e del disco da parte del sistema
accesso, traffico di rete e utilizzo del processore. Il Capitolo 13 descrive come usare
il comando sar.
■ Scripting della shell: creare un semplice script della shell per ricevere input e produrre output
vari modi. Lo scripting della shell è descritto nel Capitolo 7.
■ Registrazione remota: consente di configurare la funzione rsyslogd per raccogliere i messaggi di registro e
distribuirli a un server di registrazione remoto. Inoltre, configurare un server di registrazione remoto
funzione per raccogliere i messaggi di registro dai client di registrazione. Il capitolo 13 tratta del telecomando
logging con rsyslogd.
■ SELinux: con Security Enhanced Linux in modalità Enforcing, assicurati che tutto
le configurazioni del server descritte nella sezione successiva sono adeguatamente protette con
SELinux. SELinux è descritto nel Capitolo 24.

Installazione e configurazione dei servizi di rete


Per ciascuno dei servizi di rete nell'elenco che segue, assicurati di poterlo utilizzare
i passaggi per installare i pacchetti richiesti dal servizio, configurare SELinux per consentire l'accesso al file
service, impostare il servizio in modo che venga avviato all'avvio, proteggere il servizio dall'host o dall'utente (utilizzando
iptables, wrapper TCP o funzionalità fornite dal servizio stesso) e configurarlo per
operazione base. Questi i servizi:

■ Server Web: consente di configurare un server Apache (HTTP / HTTPS). Devi essere in grado di impostare
su un host virtuale, distribuire uno script CGI, utilizzare directory private e consentire un particolare
Gruppo Linux per gestire il contenuto. Il Capitolo 17 descrive come configurare un file
Server web.
■ Server DNS: consente di impostare un server DNS (pacchetto bind) che agisca solo come cache
server dei nomi in grado di inoltrare le query DNS a un altro server DNS. Non c'è bisogno
per configurare zone master o slave. Il DNS è descritto dal lato client in

25

Pagina 66

Parte I: Guida introduttiva

Capitolo 14. Per informazioni sulla configurazione di un server DNS con Bind, vedere RHEL
Guida alla rete (https://access.redhat.com/documentation/en-US/
Red_Hat_Enterprise_Linux / 7 / html-single / Networking_Guide).
■ Server NFS: consente di configurare un server NFS per condividere directory specifiche con un client specifico
sistemi in modo che possano essere utilizzati per la collaborazione di gruppo. Il Capitolo 20 tratta NFS.
■ Server di condivisione file Windows : configurare Linux (Samba) a cui fornire condivisioni SMB
host e utenti specifici. Configura le condivisioni per la collaborazione di gruppo. Vedere
Capitolo 19 per imparare a configurare Samba.
■ Server di posta: consente di configurare postfix o sendmail per accettare la posta in arrivo dall'esterno
l'host locale. Inoltra la posta a uno smart host. La configurazione del server di posta non è coperta
in questo libro (e non dovrebbe essere fatto alla leggera). Vedere l'amministratore di sistema RHEL
Guida per informazioni sulla configurazione dei server di posta (https: //access.redhat.
com / documentation / en-US / Red_Hat_Enterprise_Linux / 7 / html-single /
System_Administrators_Guide / index.html # ch-Mail_Servers).
■ Server Secure Shell: consente di configurare il servizio SSH (sshd) per consentire l'accesso remoto al proprio
sistema locale e autenticazione basata su chiave. Altrimenti, configura sshd.
conf come necessario. Il Capitolo 13 descrive come configurare il servizio sshd.
■ Network Time Server: consente di configurare un server Network Time Protocol (ntpd) da sincronizzare
cronizza il tempo con altri peer NTP. Vedere il Capitolo 26 per informazioni sulla configurazione
il servizio ntpd.
■ Serverdatabase: configura il database MariaDB e gestiscilo in vari modi.
Scopri come configurare MariaDB dal sito MariaDB.org (https: // mariadb.
com / kb / en / mariadb / documentation /).

Sebbene ci siano altre attività nell'esame RHCE, come appena notato, tieni presente che la maggior parte
delle attività è necessario configurare i server e quindi proteggerli utilizzando qualsiasi tecnica
hai bisogno. Questi possono includere regole firewall (iptables), SELinux, TCP Wrapper o qualsiasi funzionalità
tures incorporate nei file di configurazione per il particolare servizio.

Sommario
Linux è un sistema operativo costruito da una comunità di sviluppatori di software in giro
il mondo e guidato dal suo creatore, Linus Torvalds. È derivato originariamente dall'operatività UNIX
sistema operativo, ma è cresciuta oltre UNIX in popolarità e potenza nel corso degli anni.

La storia del sistema operativo Linux può essere tracciata dai primi sistemi UNIX che
furono distribuiti gratuitamente ai college e migliorati da iniziative come il Berkeley Software
Distribuzione (BSD). La Free Software Foundation ha contribuito a realizzare molti dei componenti
necessario per creare un sistema operativo simile a UNIX completamente libero. Il kernel Linux stesso era il
ultimo componente importante necessario per completare il lavoro.
26

Pagina 67

Capitolo 1: Iniziare con Linux

La maggior parte dei progetti software Linux sono protetti da una delle serie di licenze che rientrano nella
Ombrello Open Source Initiative. Il più importante di questi è la GNU Public License
(GPL). Standard come Linux Standard Base e organizzazioni Linux di livello mondiale e
aziende (come Canonical Ltd. e Red Hat, Inc.) consentono a Linux di continuare
per essere un sistema operativo stabile e produttivo in futuro. 1
Imparare le basi su come usare e amministrare un sistema Linux ti servirà bene in qualsiasi
aspetto del lavoro con Linux. I capitoli rimanenti forniscono ciascuno una serie di esercizi
con cui puoi mettere alla prova la tua comprensione. Ecco perché, per il resto del libro, lo farai
impara meglio con un sistema Linux di fronte a te in modo da poter lavorare attraverso gli esempi in
ogni capitolo e completare gli esercizi con successo.

Il prossimo capitolo descrive come iniziare con Linux descrivendo come ottenere e usare
un sistema desktop Linux.

27

Pagina 69
68

CAPITOLO

2
Creare il perfetto Linux
Desktop
IN QUESTO CAPITOLO
Comprensione del sistema X Window e degli ambienti desktop

Esecuzione di Linux da un Live CD / DVD

Navigare nel desktop GNOME 3

Aggiunta di estensioni a GNOME 3

Usare Nautilus per gestire i file in GNOME 3

Lavorare con il desktop GNOME 2

Abilitare gli effetti 3D in GNOME 2

U con tutto in Linux, hai delle scelte. Esistono desktop GNOME o KDE con funzionalità complete
ambienti o desktop leggeri come LXDE o Xfce. Ci sono anche più semplici
cantare Linux poiché il tuo sistema desktop quotidiano sta diventando sempre più facile da fare. Come
gestori di finestre autonomi.

Dopo aver scelto un desktop, scoprirai che quasi tutti i principali tipi di applicazioni desktop
su un sistema Windows o Mac ha applicazioni equivalenti in Linux. Per applicazioni che
non sono disponibili in Linux, spesso puoi eseguire un'applicazione Windows in Linux usando Windows
software di compatibilità.

L'obiettivo di questo capitolo è familiarizzare con i concetti relativi ai sistemi desktop Linux
e per darti suggerimenti per lavorare con un desktop Linux. In questo capitolo tu:

■ Scorrere le funzionalità e le tecnologie desktop disponibili in Linux


■ Panoramica delle principali caratteristiche dell'ambiente desktop GNOME
■ Impara suggerimenti e trucchi per ottenere il massimo dalla tua esperienza desktop GNOME

29

Pagina 70

Parte I: Guida introduttiva

Per usare le descrizioni in questo capitolo, ti consiglio di avere un sistema Fedora in esecuzione
di fronte a te. Puoi ottenere Fedora in molti modi, inclusi questi:

■ Esecuzione di Fedora da un supporto live — Fare riferimento all'Appendice A per informazioni su


scaricare e masterizzare l'immagine Fedora Live su un DVD o un'unità USB in modo da poter avviare
vivo da usare con questo capitolo.
■ Installazione permanente di Fedora —Installa Fedora sul tuo disco rigido e avvialo da
lì (come descritto nel Capitolo 9, "Installazione di Linux").

Poiché l'attuale versione di Fedora utilizza l'interfaccia GNOME 3, la maggior parte delle procedure
descritto qui funziona con altre distribuzioni Linux che hanno GNOME 3 disponibile. Se sei
utilizzando un vecchio sistema Red Hat Enterprise Linux (RHEL 6 utilizza GNOME 2, ma RHEL 7 utilizza
GNOME 3), ho aggiunto descrizioni di GNOME 2 che puoi provare anche tu.

Ubuntu utilizza il proprio desktop Unity come predefinito, invece di GNOME. Tuttavia, esiste un progetto Ubuntu GNOME.
Per scaricare il supporto per l'ultima versione di Ubuntu con un desktop GNOME, vai al download di Ubuntu GNOME
pagina (http://ubuntugnome.org/download/).
Puoi aggiungere GNOME e usarlo come ambiente desktop per Ubuntu 11.10 e versioni successive. Le versioni precedenti di Ubuntu usano
GNOME 2 per impostazione predefinita.

Comprensione della tecnologia desktop Linux


I moderni sistemi desktop di computer offrono finestre grafiche, icone e menu che lo sono
gestito da un mouse e una tastiera. Se hai meno di 30 anni, potresti pensare che ci sia
niente di speciale in questo. Ma i primi sistemi Linux non avevano interfacce grafiche
a disposizione. Inoltre, oggi, molti server Linux ottimizzati per compiti speciali (ad esempio, che servono come file
server web o file server) non hanno il software desktop installato.

Quasi tutte le principali distribuzioni Linux che offrono interfacce desktop si basano su X
Sistema a finestre ( http://www.x.org). Il sistema X Window fornisce un framework su
quali diversi tipi di ambienti desktop o semplici gestori di finestre possono essere costruiti.

Il sistema X Window (a volte chiamato semplicemente X) è stato creato prima che Linux esistesse e persino
precede Microsoft Windows. È stato creato per essere un framework desktop leggero e in rete.

X funziona in una sorta di modello client / server all'indietro. Il server X gira sul sistema locale
tem, fornendo un'interfaccia allo schermo, al mouse e alla tastiera. X client (come word
processori, lettori musicali o visualizzatori di immagini) possono essere avviati dal sistema locale o da
qualsiasi sistema sulla rete, a condizione che il server X dia il permesso di farlo.

X è stato creato in un'epoca in cui i terminali grafici (thin client) gestivano semplicemente la chiave-
scheda, mouse e display. Applicazioni, archiviazione su disco e potenza di elaborazione erano tutte attive

30

Pagina 71

Capitolo 2: Creazione del desktop Linux perfetto

computer centralizzati più grandi. Quindi le applicazioni venivano eseguite su macchine più grandi ma venivano visualizzate
e gestito in rete sul thin client. Successivamente, i thin client sono stati sostituiti
dai personal computer desktop. La maggior parte delle applicazioni client sui PC venivano eseguite localmente, utilizzando local
potenza di elaborazione, spazio su disco, memoria e altre funzionalità hardware, pur non consentendo
applicazioni che non sono state avviate dal sistema locale.

Lo stesso X fornisce un semplice sfondo grigio e un semplice cursore del mouse "X". Non ci sono
menu, pannelli o icone su un semplice schermo X. Se avvii un client X (come un file
finestra del terminale o elaboratore di testi), apparirà sul display X senza bordi intorno
per spostare, ridurre a icona o chiudere la finestra. Queste funzionalità vengono aggiunte da un gestore di finestre.

Un window manager aggiunge la capacità di gestire le finestre sul desktop e spesso


fornisce menu per l'avvio di applicazioni e altrimenti per lavorare con il desktop.
Un ambiente desktop completo include un gestore di finestre, ma aggiunge anche menu, pannelli,
e di solito un'interfaccia di programmazione dell'applicazione che viene utilizzata per creare applicazioni che
2
giocare bene insieme.

Quindi, in che modo la comprensione di come funzionano le interfacce desktop in Linux ti aiuta quando lo fa
arriva a usare Linux? Ecco alcuni modi:

■ Poiché gli ambienti desktop Linux non sono necessari per eseguire un sistema Linux, a
Il sistema Linux potrebbe essere stato installato senza un desktop. Potrebbe offrire solo un file
testo normale, interfaccia della riga di comando. Puoi scegliere di aggiungere un desktop in un secondo momento. Dopo ciò
è installato, puoi scegliere se avviare il desktop quando il tuo computer
avvia o avvia se necessario.
■ Per un sistema Linux molto leggero, come quello pensato per essere eseguito su sistemi meno potenti
computer, puoi scegliere un gestore di finestre efficiente, anche se meno ricco di funzionalità
(come twm o fluxbox) o un ambiente desktop leggero (come LXDE
o Xfce).
■ Per computer più robusti, è possibile scegliere ambienti desktop più potenti
(come GNOME e KDE) che possono fare cose come guardare gli eventi che accadono
(come l'inserimento di un'unità flash USB) e rispondere a tali eventi (come l'apertura
una finestra per visualizzare il contenuto dell'unità).
■È possibile installare più ambienti desktop e scegliere quale
uno da avviare quando si effettua l'accesso. In questo modo, utenti diversi sullo stesso computer
può utilizzare diversi ambienti desktop.

Sono disponibili molti ambienti desktop diversi tra cui scegliere in Linux. Qui ce ne sono alcuni
esempi:

■ GNOME : GNOME è l'ambiente desktop predefinito per Fedora, Red Hat Enterprise
Linux e molti altri. Consideralo un ambiente desktop professionale,
concentrandosi sulla stabilità più che sugli effetti fantasiosi.
■ Ambiente desktop K: KDE è probabilmente il secondo desktop più popolare
ambiente per Linux. Ha più campane e fischietti di GNOME e offre di più

31
Pagina 72

Parte I: Guida introduttiva

applicazioni integrate. KDE è disponibile anche con Fedora, RHEL, Ubuntu e molti altri
altri sistemi Linux.
■ Xfce : il desktop Xfce è stato uno dei primi ambienti desktop leggeri.
È buono da usare su computer più vecchi o meno potenti. È disponibile con RHEL,
Fedora, Ubuntu e altre distribuzioni Linux.
■ LXDE : l'ambiente desktop Lightweight X11 (LXDE) è stato progettato per essere
un ambiente desktop a prestazioni rapide ea risparmio energetico. Spesso, LXDE viene utilizzato su
dispositivi meno costosi (come i computer netbook) e su supporti live (come un live
CD o chiavetta USB live). È il desktop predefinito per la distribuzione di KNOPPIX live CD.
Sebbene LXDE non sia incluso con RHEL, puoi provarlo con Fedora o Ubuntu.

GNOME è stato originariamente progettato per assomigliare al desktop del sistema operativo MAC, mentre KDE era destinato
per emulare l'ambiente desktop Windows. Perché è il desktop più popolare
ambiente e quello più spesso utilizzato nei sistemi Linux aziendali, la maggior parte dei desktop
le procedure e gli esercizi in questo libro utilizzano il desktop GNOME. Utilizzando GNOME, tuttavia,
ti dà ancora la possibilità di scegliere tra diverse distribuzioni Linux.

A partire dal Fedora GNOME Desktop


Immagine dal vivo
Un'immagine ISO live di Linux è il modo più rapido per ottenere un sistema Linux attivo e funzionante
può iniziare a provarlo. A seconda delle sue dimensioni, l'immagine può essere masterizzata su CD, DVD o
Unità USB e avviata sul tuo computer. Con un'immagine live di Linux, puoi fare in modo che Linux prenda
sul funzionamento del tuo computer temporaneamente, senza danneggiare i contenuti del tuo
disco rigido.

Se hai installato Windows, Linux lo ignora e usa Linux per controllare il tuo file
computer. Quando hai finito con l'immagine live di Linux, puoi riavviare il computer,
fai uscire il CD o il DVD e torna a eseguire il sistema operativo su cui è stato installato
il disco rigido.

Per provare un desktop GNOME insieme alle descrizioni in questa sezione, ti suggerisco di ottenere un file
Fedora Live DVD (come descritto nell'Appendice A). Perché un DVD live fa tutto il suo lavoro dal
DVD e in memoria, funziona più lentamente di un sistema Linux installato. Inoltre, anche se puoi
cambiare file, aggiungere software e altrimenti configurare il sistema, per impostazione predefinita, il lavoro
do scompare al riavvio, a meno che non salvi esplicitamente quei dati sul tuo disco rigido o
archiviazione esterna.

Il fatto che le modifiche apportate all'ambiente live scompaiano al riavvio è molto utile
provare Linux, ma non eccezionale se si desidera un sistema desktop o server in corso. Per
per questo motivo, ti consiglio di installare Linux in modo permanente se hai un computer di riserva
sul disco rigido di quel computer da utilizzare con il resto di questo libro (come descritto nel Capitolo 9).

32

Pagina 73

Capitolo 2: Creazione del desktop Linux perfetto

Dopo aver in mano un CD o un DVD live, procedi come segue per iniziare:

1. Procurati un computer . Se si dispone di un PC standard (32 bit o 64 bit) con un'unità CD / DVD
e almeno 1 GB di memoria (RAM) e almeno un processore da 400 MHz, lo sei
pronto per iniziare. (Assicurati solo che l'immagine che scarichi corrisponda a quella del tuo computer
architettura: un supporto a 64 bit non viene eseguito su un computer a 32 bit.)
2. Avviare il CD / DVD live . Inserisci il CD / DVD live o l'unità USB nel computer e
riavvia il computer. A seconda dell'ordine di avvio impostato sul computer, il file live
l'immagine potrebbe avviarsi direttamente dal BIOS (il codice che controlla il computer
prima dell'avvio del sistema operativo).

Se, invece di avviare il supporto live, viene avviato il sistema operativo installato, è necessario eseguire un file
2
passaggio aggiuntivo per avviare il CD / DVD live. Riavvia di nuovo e quando vedi la schermata del BIOS, cerca alcune parole che
dì qualcosa come "Ordine di avvio". Le istruzioni sullo schermo potrebbero dire di premere il tasto F12 o F1. Premere quel tasto imme-
immediatamente dalla schermata del BIOS. Successivamente, dovresti vedere una schermata che mostra le selezioni disponibili. Evidenzia una voce per
CD / DVD o unità USB e premere Invio per avviare l'immagine live. Se non vedi l'unità lì, potrebbe essere necessario entrare
Configurazione del BIOS e abilitare il CD / DVD o l'unità USB da lì.

3. Avvia Fedora . Se l'unità selezionata è in grado di avviarsi, viene visualizzata una schermata di avvio. Per
Fedora, con Avvia Fedora evidenziato, premere Invio per avviare il supporto live.
4. Iniziare a utilizzare il desktop . Per Fedora, il supporto live ti consente di scegliere tra
installando Fedora o si avvia direttamente dal supporto su un desktop GNOME 3.

È ora possibile passare alla sezione successiva, "Utilizzo del desktop GNOME 3" (che include
informazioni sull'utilizzo di GNOME 3 in Fedora, Red Hat Enterprise Linux e altri sistemi operativi
sistemi). La sezione seguente che copre il desktop GNOME 2.

Utilizzo del desktop GNOME 3


Il desktop GNOME 3 offre una svolta radicale dalle sue controparti GNOME 2. x . GNOME 2. x
è utile, ma GNOME 3 è elegante. Con GNOME 3, un desktop Linux ora appare di più
come le interfacce grafiche sui dispositivi mobili, con meno attenzione su più pulsanti del mouse
e combinazioni di tasti e altro sul movimento del mouse e sulle operazioni con un clic.

Invece di sentirsi strutturato e rigido, il desktop GNOME 3 sembra espandersi come te


ne ho bisogno. Quando viene eseguita una nuova applicazione, la sua icona viene aggiunta al Dash. Mentre usi il prossimo
spazio di lavoro, se ne apre uno nuovo, pronto per inserire più applicazioni.

Dopo che il computer si è avviato


Se hai avviato un'immagine live, quando raggiungi il desktop, vieni assegnato come Live
Utente di sistema per il tuo nome utente. Per un sistema installato, viene visualizzata la schermata di accesso con

33

Pagina 74

Parte I: Guida introduttiva

account utente sul sistema pronti per la selezione e l'immissione di una password. Accedi con
nome utente e password definiti per il sistema.

La Figura 2.1 è un esempio della schermata del desktop GNOME 3 che appare per Fedora. premi il
Tasto Windows (o sposta il cursore del mouse nell'angolo in alto a sinistra del desktop) per attivare / disattivare
tra un desktop vuoto e la schermata Panoramica.

FIGURA 2.1

A partire dal desktop GNOME 3 in Fedora.


All'inizio c'è molto poco sul desktop di GNOME 3. La barra in alto contiene la parola
"Attività" a sinistra, un orologio al centro e alcune icone a destra per queste cose
come la regolazione del volume audio, il controllo della connessione di rete e la visualizzazione del nome di
l'utente corrente. La schermata Panoramica è dove puoi scegliere di aprire le applicazioni, attive
finestre o aree di lavoro diverse.

Navigare con il mouse


Per iniziare, prova a navigare nel desktop GNOME 3 con il mouse:

34

Pagina 75

Capitolo 2: Creazione del desktop Linux perfetto

1. Attiva / disattiva attività e finestre . Sposta il cursore del mouse in alto a sinistra
angolo dello schermo, vicino al pulsante Attività. Ogni volta che ti sposti lì
lo schermo cambia tra la visualizzazione delle finestre che stai utilizzando attivamente
e una serie di attività disponibili. (Questo ha lo stesso effetto della pressione del pulsante
Tasto Windows.)
2. Aprire le finestre dalla barra delle applicazioni . Fare clic per aprire alcune applicazioni dal file
Trattino a sinistra (Firefox, File Manager, Shotwell o altri). Muovi il mouse su
di nuovo nell'angolo in alto a sinistra e alterna tra la visualizzazione di tutte le finestre attive ridotte a icona
(Schermata panoramica) e mostrandoli sovrapposti (a grandezza naturale). La Figura 2.2 mostra un file
esempio della vista delle finestre in miniatura.

FIGURA 2.2

Mostra tutte le finestre sul desktop ridotte a icona. 2

3. Aprire le applicazioni dall'elenco delle applicazioni . Dalla schermata Panoramica, seleziona il file
Pulsante dell'applicazione nella parte inferiore della colonna di sinistra (il pulsante ha nove punti in formato
una scatola). La visualizzazione cambia in un insieme di icone che rappresentano le applicazioni installate
il vostro sistema, come mostrato nella Figura 2.3.

35

Pagina 76
Parte I: Guida introduttiva

FIGURA 2.3

Mostra l'elenco delle applicazioni disponibili.

4. Visualizza applicazioni aggiuntive . Dalla schermata Applicazioni, puoi modificare il file


visualizzare le tue applicazioni in diversi modi e avviarle in modi diversi:
■ Pagina attraverso -Per vedere le icone che rappresentano le applicazioni che non sono sullo schermo, l'uso
fare clic con il mouse sui punti a destra per sfogliare le applicazioni. Se hai un
mouse con rotellina, puoi usarlo invece per scorrere le icone.
■ Frequente: selezionare il pulsante Frequente nella parte inferiore dello schermo per vedere
applicazioni eseguite spesso o il pulsante Tutto per visualizzare nuovamente tutte le applicazioni.
■ Avvio di un'applicazione: per avviare l'applicazione desiderata, fare clic con il pulsante sinistro del mouse sulla sua icona
per aprire l'applicazione nell'area di lavoro corrente. Fare clic con il tasto destro per aprire un menu
che ti consente di scegliere di aprire una nuova finestra, aggiungere o rimuovere l'applicazione da
Preferiti (in modo che l'icona dell'applicazione appaia sul Dash) o Mostra dettagli su
l'applicazione. La Figura 2.4 mostra un esempio del menu.
5. Apri applicazioni aggiuntive . Avvia applicazioni aggiuntive. Notalo come te
aprire una nuova applicazione, un'icona che rappresenta tale applicazione appare nel Dash
barra a sinistra. Ecco altri modi per avviare le applicazioni:

36

Pagina 77

Capitolo 2: Creazione del desktop Linux perfetto

FIGURA 2.4

Fare clic con il pulsante centrale del mouse per visualizzare il menu di selezione di un'applicazione.

2
■ Icona dell'applicazione: fare clic su qualsiasi icona dell'applicazione per aprire tale applicazione.
■ Rilascia le icone del trattino nell'area di lavoro : dalla visualizzazione di Windows, è possibile trascinare qualsiasi
icona dell'applicazione dal Dash premendo e tenendo premuto il pulsante sinistro del mouse
e trascinando l'icona in una qualsiasi delle aree di lavoro in miniatura sulla destra.

6. Utilizzare più aree di lavoro . Spostare nuovamente il mouse nell'angolo in alto a sinistra
per mostrare una vista ridotta a icona di tutte le finestre. Notare tutte le applicazioni su
a destra inceppato in una piccola rappresentazione di uno spazio di lavoro mentre un altro
lo spazio di lavoro è vuoto. Trascina e rilascia alcune delle finestre su un desktop vuoto
spazio. La Figura 2.5 mostra l'aspetto dei piccoli spazi di lavoro. Notare che un file
spazio di lavoro vuoto aggiuntivo viene creato ogni volta che viene utilizzato l'ultimo vuoto.
È possibile trascinare e rilasciare le finestre in miniatura su qualsiasi area di lavoro e quindi
seleziona l'area di lavoro per visualizzarla.
7. Utilizzare il menu della finestra . Spostare il mouse nell'angolo superiore sinistro dello schermo su
tornare all'area di lavoro attiva (visualizzazione finestra grande). Fare clic con il pulsante destro del mouse sulla barra del titolo in un file
finestra per visualizzare il menu della finestra. Prova queste azioni da quel menu:
■ Riduci a icona: rimuove temporaneamente la finestra dalla visualizzazione.
■ Ingrandisci: espande la finestra alla dimensione massima.
■ Sposta: cambia la finestra in modalità di spostamento. Spostando il mouse si sposta la finestra.
Fare clic per fissare la finestra in un punto.
■ Ridimensiona: consente di modificare la finestra in modalità di ridimensionamento. Spostando il mouse ridimensiona il file
finestra. Fare clic per mantenere le dimensioni.
■ Selezioni dell'area di lavoro: numerose selezioni consentono di utilizzare aree di lavoro in diverse
modi. Selezionare Sempre in primo piano per rendere la finestra corrente sempre in primo piano
finestre nell'area di lavoro. Selezionare Sempre nell'area di lavoro visibile per mostrare sempre
la finestra sullo spazio di lavoro visibile. Oppure selezionare Sposta in alto nell'area di lavoro o
Sposta in area di lavoro in basso per spostare la finestra nell'area di lavoro sopra o sotto,
rispettivamente.

37

Pagina 78

Parte I: Guida introduttiva

FIGURA 2.5

Man mano che vengono utilizzati nuovi desktop, ne vengono visualizzati altri sulla destra.

Se non ti senti a tuo agio a navigare in GNOME 3 con il mouse o se non hai un file
mouse, la sezione successiva ti aiuta a navigare sul desktop dalla tastiera.

Navigazione con la tastiera


Se preferisci tenere le mani sulla tastiera, puoi lavorare con il desktop GNOME 3
direttamente dalla tastiera in diversi modi, inclusi questi:

■ Tasto Windows: preme il tasto Windows sulla tastiera. Sulla maggior parte delle tastiere per PC,
questa è la chiave con il logo di Microsoft Windows accanto al tasto Alt. Questo
alterna le viste mini-finestra (Panoramica) e finestra attiva (area di lavoro corrente).
Molte persone usano spesso questa chiave.
■ Selezionare visualizzazioni diverse : dalla visualizzazione Windows o Applicazioni, tenere premuto Ctrl + Alt + Tab
per vedere un menu delle diverse visualizzazioni (vedere la Figura 2.6). Tenendo ancora premuti i tasti Ctrl + Alt,
premere di nuovo Tab per evidenziare una delle seguenti icone dal menu e rilasciare
per selezionarlo:
■ Barra superiore: mantiene la visualizzazione corrente.

38

Pagina 79

Capitolo 2: Creazione del desktop Linux perfetto

FIGURA 2.6

Premere Ctrl + Alt + Tab per visualizzare aree del desktop aggiuntive da selezionare.

■ Dash: evidenzia la prima applicazione nella barra delle applicazioni a sinistra.


Utilizzare i tasti freccia per spostarsi su e giù nel menu e premere Invio per aprire il file
applicazione evidenziata.
■ Windows: seleziona la visualizzazione Windows.
■ Applicazioni: seleziona la visualizzazione Applicazioni.
■ Cerca: evidenzia la casella di ricerca. Digita alcune lettere per le quali mostrare solo le icone
applicazioni che contengono le lettere digitate. Quando hai digitato abbastanza
lettere per identificare in modo univoco l'applicazione desiderata, premere Invio per avviare il file
applicazione.
■ Vassoio messaggi: rivela il vassoio dei messaggi inferiore. Questo vassoio ti consente di visualizzare
notifiche e aprire il supporto rimovibile.
■ Selezionare una finestra attiva: tornare a una delle aree di lavoro (premere il pulsante Windows
tasto se non sei già in un'area di lavoro attiva). Premi Alt + Tab per vedere un elenco di tutti
finestre attive (vedere la Figura 2.7). Continua a tenere premuto il tasto Alt mentre premi Tab
(o i tasti freccia destra o sinistra) per evidenziare l'applicazione desiderata dal file
elenco delle finestre delle applicazioni desktop attive. Se un'applicazione ha più finestre
aprire, premere Alt + `(backtick, situato sopra il tasto Tab) per scegliere tra quelli
sottofinestre. Rilascia il tasto Alt per selezionarlo.

39

Pagina 80
Parte I: Guida introduttiva

FIGURA 2.7

Premere Alt + Tab per selezionare l'applicazione in esecuzione a cui accedere.

■ Avviaun comando o un'applicazione : da qualsiasi area di lavoro attiva, è possibile avviare un file
Comando Linux o un'applicazione grafica. Ecco alcuni esempi:
■ Applicazioni : dalla schermata Panoramica, premere Ctrl + Alt + Tab e continuare
premere Tab fino a evidenziare l'icona Applicazioni; quindi rilascia Ctrl + Alt. Il
Viene visualizzata la vista Applicazioni, con la prima icona evidenziata. Usa il tasto Tab o
tasti freccia (su, giù, destra e sinistra) per evidenziare l'icona dell'applicazione
desidera e premere Invio.
■ Casella di comando: se si conosce il nome (o parte di un nome) di un comando
si desidera eseguire, premere Alt + F2 per visualizzare una finestra di comando. Digita il nome di
il comando che vuoi eseguire nella casella (prova gnome - calcolatrice per aprire un file
applicazione calcolatrice, ad esempio).
■ Casella di ricerca : dalla schermata Panoramica, premere Ctrl + Alt + Tab e continuare
premere Tab fino a evidenziare l'icona della lente di ingrandimento (Cerca); poi
rilascia Ctrl + Alt. Nella casella di ricerca ora evidenziata, digita alcune lettere in un
il nome o la descrizione dell'applicazione (digita scr per vedere cosa ottieni). Continua a digitare
finché l'applicazione desiderata non viene evidenziata (in questo caso, Screenshot) e
premere Invio per avviarlo.
■ Trattino : dalla schermata Panoramica, premere Ctrl + Alt + Tab e continuare a premere Tab
finché non viene evidenziata l'icona della stella (trattino); quindi rilascia Ctrl + Alt. Dal Dash,
spostare le frecce su e giù per evidenziare un'applicazione che si desidera avviare,
e premere Invio.
■ Esc: quando sei bloccato in un'azione che non desideri completare, prova a premere
il tasto Esc. Ad esempio, dopo aver premuto Alt + F2 (per immettere un comando), aprendo un file
l'icona dalla barra in alto, o andando a una pagina di panoramica, premendo Esc si ritorna al
finestra attiva sul desktop attivo.

40

Pagina 81

Capitolo 2: Creazione del desktop Linux perfetto

Spero che ora ti senta a tuo agio nella navigazione sul desktop GNOME 3. Successivamente, puoi provare
eseguire alcune applicazioni desktop utili e divertenti da GNOME 3.

Configurazione del desktop GNOME 3


Gran parte di ciò che è necessario che GNOME 3 faccia per te viene impostato automaticamente. Tuttavia, è necessario
apportare alcune modifiche per ottenere il desktop nel modo desiderato. La maggior parte di queste attività di configurazione sono
disponibile dalla finestra Impostazioni di sistema (vedere la Figura 2.8). Apri l'icona Impostazioni da
l'elenco delle applicazioni.

FIGURA 2.8

Modificare le impostazioni del desktop dalla finestra Impostazioni di sistema.

2
Ecco alcuni suggerimenti per configurare un desktop GNOME 3:

■ Configurazione della rete: spesso viene configurata una connessione di rete cablata
automaticamente quando avvii il tuo sistema Fedora. Per il wireless, probabilmente
selezionare la rete wireless e aggiungere una password quando richiesto. Un'icona
nella barra in alto consente di eseguire qualsiasi configurazione di rete cablata o wireless necessaria
fare. Fare riferimento al Capitolo 14, "Amministrazione della rete", per ulteriori informazioni su
configurazione della rete.

41

Pagina 82

Parte I: Guida introduttiva

■ Impostazioni personali: gli strumenti di questo gruppo consentono di modificare lo sfondo del desktop
(Background), utilizzare diversi account online (Account online) e impostare la lingua
e formato di data e valuta in base alla regione (regione e lingua) e allo schermo
blocco (schermo). Per cambiare lo sfondo, apri la finestra Impostazioni di sistema,
selezionare Sfondo, quindi selezionare dagli sfondi disponibili. Per aggiungere il tuo
Sfondo, scarica un'immagine di sfondo che ti piace nella cartella Immagini, fai clic su
Casella Sfondi per cambiarla nella cartella Immagini e scegliere l'immagine desiderata.
■ Bluetooth: se il computer dispone di hardware Bluetooth, è possibile abilitare il dispositivo a farlo
comunicare con altri dispositivi Bluetooth (come una cuffia o una stampante Bluetooth).
■ Stampanti: invece di utilizzare la finestra Impostazioni di sistema per configurare una stampante,
fare riferimento al Capitolo 16, "Configurazione di un server di stampa", per informazioni sulla configurazione di un
stampante utilizzando il servizio CUPS.
■ Suono: fare clic sul pulsante Impostazioni audio per regolare i dispositivi di ingresso e uscita audio
sul tuo sistema.

Estensione del desktop GNOME 3


Se la shell di GNOME 3 non fa tutto ciò che ti piace, non disperare. Puoi aggiungere estensioni
per fornire funzionalità aggiuntive a GNOME 3. Inoltre, uno strumento di modifica di GNOME consente di modificare
impostazioni avanzate in GNOME 3.

Utilizzo delle estensioni della shell GNOME


Sono disponibili estensioni della shell GNOME per cambiare l'aspetto del desktop GNOME e
si comporta. Visitare il sito GNOME Shell Extensions (http://extensions.gnome.org) da
il browser Firefox sul desktop GNOME 3. Quel sito ti dice quali estensioni hai
hanno installato e quali sono disponibili per l'installazione (è necessario selezionare per consentire il file
sito per vedere quelle estensioni).

Perché la pagina delle estensioni sa quali estensioni hai e la versione di GNOME 3


in esecuzione, può presentare solo quelle estensioni compatibili con il tuo sistema
tem. Molte delle estensioni ti aiutano ad aggiungere di nuovo funzionalità da GNOME 2, incluse queste:

■ Menu Applicazioni: aggiunge un menu Applicazioni al pannello superiore, proprio come era in
GNOME 2.
■ Indicatore
di stato dei luoghi: aggiunge un menu di stato del sistema, simile al menu Luoghi
in GNOME 2, per consentirti di navigare rapidamente in cartelle utili sul tuo sistema.
■ Elenco finestre: aggiunge un elenco di finestre attive al pannello superiore, in modo simile alla finestra
elenco che è apparso sul pannello inferiore in GNOME 2.

Per installare un'estensione, seleziona semplicemente il pulsante ON accanto al nome. Oppure puoi fare clic su
nome dell'estensione dall'elenco per vedere la pagina dell'estensione e fare clic sul pulsante in quella pagina
da OFF a ON. Fare clic su Installa quando viene chiesto se si desidera scaricare e installare il file
estensione. L'estensione viene quindi aggiunta al desktop.

42

Pagina 83

Capitolo 2: Creazione del desktop Linux perfetto

La Figura 2.9 mostra un esempio del menu Applicazioni (l'icona del piede di GNOME), Finestra
Elenco (che mostra diverse icone di applicazioni attive) e Indicatore di stato dei luoghi (con cartelle
visualizzato da un menu a discesa) estensioni installate.

FIGURA 2.9

Le estensioni aggiungono funzionalità al desktop GNOME 3.

Sono ora disponibili più di 100 estensioni della shell GNOME e altre verranno aggiunte tutte
il tempo. Altre estensioni popolari includono Notifications Alert (che ti avvisa di file non letti
messaggi), Modalità presentazione (che impedisce l'attivazione del salvaschermo quando si
stanno facendo una presentazione) e Music Integration (che integra lettori musicali popolari
in GNOME 3 in modo da essere avvisati dei brani in riproduzione).

Poiché il sito delle estensioni può tenere traccia delle tue estensioni, puoi fare clic su Installato
pulsante estensioni nella parte superiore della pagina e vedere tutte le estensioni installate. Puoi
disattivare e attivare le estensioni da lì e persino eliminarle definitivamente.

43

Pagina 84

Parte I: Guida introduttiva


Utilizzo dello strumento GNOME Tweak
Se non ti piace il modo in cui si comportano alcune delle funzionalità integrate di GNOME 3, puoi cambiare
molti di loro con lo strumento GNOME Tweak. Questo strumento non è installato per impostazione predefinita con l'estensione
Fedora GNOME Live CD, ma puoi aggiungerlo installando il pacchetto gnome-tweak-tool.
(Vedere il Capitolo 10, "Recupero e gestione del software", per informazioni su come installare il software
pacchetti ware in Fedora.)

Dopo l'installazione, lo strumento GNOME Tweak è disponibile avviando le Impostazioni avanzate


icona dalla schermata Applicazioni. Inizia con la categoria Desktop per considerare ciò che fai
potrebbe voler cambiare in GNOME 3. La Figura 2.10 mostra lo strumento Tweak (Impostazioni avanzate
finestra) che mostra le impostazioni di aspetto.

FIGURA 2.10

Modificare le impostazioni del desktop utilizzando GNOME Tweak Tool (Impostazioni avanzate).

Se i caratteri sono troppo piccoli per te, seleziona la categoria Caratteri e fai clic sul segno più accanto a
Casella Fattore di scala per aumentare la dimensione del carattere. Oppure cambia i caratteri individualmente per i documenti,
titoli di finestre o caratteri a spaziatura fissa.

In Impostazioni barra superiore, puoi modificare la modalità di visualizzazione delle informazioni sull'orologio nella barra superiore o
impostare se mostrare il numero della settimana nel calendario. Per modificare l'aspetto del desktop,

44

Pagina 85

Capitolo 2: Creazione del desktop Linux perfetto

seleziona la categoria Aspetto e cambia il tema Icone e il tema GTK + come preferisci
dalle caselle a discesa.

A partire dalle applicazioni desktop


Il DVD live desktop Fedora GNOME 3 viene fornito con alcune fantastiche applicazioni che puoi avviare
utilizzando immediatamente. Per utilizzare GNOME 3 come desktop di tutti i giorni, è necessario installarlo
in modo permanente sul disco rigido del computer e aggiungere le applicazioni necessarie (una parola
processore, editor di immagini, applicazione di disegno e così via). Se hai appena iniziato,
le sezioni seguenti elencano alcune applicazioni interessanti da provare.

Gestione di file e cartelle con Nautilus


Per spostare, copiare, eliminare, rinominare e organizzare in altro modo file e cartelle in GNOME 3, tu
può usare il file manager Nautilus. Nautilus viene fornito con il desktop GNOME e funziona come 2
altri gestori di file che puoi utilizzare in Windows o Mac.

Per aprire Nautilus, fare clic sull'icona File dall'elenco Dash o Applicazioni di GNOME. Il tuo utente
account inizia con una serie di cartelle progettate per contenere i tipi di contenuto più comuni:
Musica, immagini, video e simili. Questi sono tutti memorizzati in quello che viene definito il tuo
Directory home. La Figura 2.11 mostra Nautilus aperto in una directory home.

FIGURA 2.11

Gestisci file e cartelle dalla finestra di Nautilus.


Quando vuoi salvare file scaricati da Internet o creati con una parola
processore, puoi organizzarli in queste cartelle. Puoi creare nuove cartelle secondo necessità,
trascina e rilascia file e cartelle per copiarli e spostarli ed eliminarli.

Perché Nautilus non è molto diverso dalla maggior parte dei file manager che hai usato su altri
sistemi informatici, questo capitolo non entra nei dettagli su come usare il drag-and-drop e

45

Pagina 86

Parte I: Guida introduttiva

attraversare le cartelle per trovare il contenuto. Tuttavia, voglio fare alcune osservazioni su questo
potrebbe non essere ovvio su come usare Nautilus:

■ Cartella Home: hai il controllo completo sui file e sulle cartelle che crei
la tua cartella Home. La maggior parte delle altre parti del filesystem non sono accessibili come file
utente normale.
■ Organizzazione del filesystem: anche se appare sotto il nome Home, la tua casa
cartella si trova effettivamente nel filesystem sotto la cartella / home in una cartella
prende il nome dal tuo nome utente, ad esempio / home / liveuser o / home / chris.
Nei prossimi capitoli imparerai come è organizzato il filesystem (specialmente in
relazione alla shell dei comandi di Linux).
■ Lavorare con file e cartelle : fare clic con il pulsante destro del mouse sull'icona di un file o di una cartella per vedere come si fa
può agire su di esso. Ad esempio, puoi copiare, tagliare, spostare nel cestino (eliminare) o aprire qualsiasi file
icona di file o cartella.
■ Creazione di cartelle: per creare una nuova cartella, fare clic con il pulsante destro del mouse in una finestra della cartella e selezionare
Nuova cartella. Digita il nuovo nome della cartella sopra la cartella senza titolo evidenziata e
premere Invio per assegnare un nome alla cartella.
■ Accesso al contenuto remoto: Nautilus può visualizzare il contenuto da server remoti
così come il filesystem locale. In Nautilus, seleziona Connetti al server dal file
menu file. Puoi connetterti a un server remoto tramite SSH (secure shell), FTP con
login, FTP pubblico, condivisione Windows, WebDav (HTTP) o Secure WebDav (HTTPS).
Aggiungere le informazioni appropriate su utente e password secondo necessità e il contenuto di
il server remoto viene visualizzato nella finestra di Nautilus. La Figura 2.12 mostra un esempio
di una finestra Nautilus che mostra le cartelle da un server remoto tramite protocollo SSH
( ssh: //192.168.0.138).

Installazione e gestione di software aggiuntivo


Il Fedora Live Desktop viene fornito con un browser web (Firefox), un file manager (Nautilus),
e poche altre applicazioni comuni. Tuttavia, ci sono molte altre utili applicazioni
che, a causa delle loro dimensioni, non starebbero su un CD live. Se installi il Fedora live
Workstation sul tuo disco rigido (come descritto nel Capitolo 9), quasi sicuramente vorrai
aggiungi altro software.

Puoi provare a installare il software se stai utilizzando il supporto live. Ma tieni presente che perché lo spazio scrivibile su
un supporto live utilizza la memoria virtuale (RAM), lo spazio è limitato e può esaurirsi facilmente. Inoltre, quando riavvii il tuo
sistema, tutto ciò che installi scompare.

Quando Fedora è installato, viene automaticamente configurato per connettere il tuo sistema a
enorme repository di software Fedora disponibile su Internet. Finché hai un file

46
Pagina 87

Capitolo 2: Creazione del desktop Linux perfetto

Connessione Internet, è possibile eseguire lo strumento Aggiungi / Rimuovi software per scaricare e installare
uno qualsiasi dei migliaia di pacchetti Fedora.

FIGURA 2.12

Accedi alle cartelle remote utilizzando la funzione Nautilus Connect to Server.

Sebbene l'intera struttura per la gestione del software in Fedora (le funzionalità yum e rpm)
è descritto in dettaglio nel Capitolo 10, "Recupero e gestione del software", è possibile iniziare
installare alcuni pacchetti software senza sapere molto su come funziona la funzionalità.
Inizia andando alla schermata delle applicazioni e aprendo la finestra del software.

Con la finestra Software aperta, è possibile selezionare le applicazioni con cui si desidera installare
ricerca (digita il nome nella casella Trova) o scegli una categoria. Ogni categoria offre
pacchetti ordinati per sottocategorie e pacchetti presenti in quella categoria. La Figura 2.13 mostra
i risultati di una ricerca della parola avventura nella descrizione o nel nome di un pacchetto.

Puoi leggere una descrizione di ogni pacchetto che compare nella tua ricerca. Quando sei pronto,
fare clic su Installa per installare il pacchetto e tutti i pacchetti dipendenti necessari per farlo funzionare.

Cercando e installando alcune applicazioni desktop comuni, dovresti essere in grado di farlo
iniziare a utilizzare il desktop in modo efficace. Fare riferimento al Capitolo 10 per i dettagli su come aggiungere il software

47

Pagina 88

Parte I: Guida introduttiva

repository e utilizzare i comandi yum e rpm per gestire il software in Fedora e Red Hat
Enterprise Linux.

FIGURA 2.13

Scarica e installa il software dall'enorme repository Fedora.


Riproduzione di musica con Rhythmbox
Rhythmbox è il lettore musicale che arriva su Fedora GNOME Live Desktop. Puoi
avviare Rhythmbox da GNOME 3 Dash e riprodurre immediatamente CD musicali, podcast o
Programmi radiofonici su Internet. Puoi importare file audio nei formati WAV e Ogg Vorbis o aggiungere file
plug-in per MP3 o altri formati audio.

La Figura 2.14 mostra un esempio della finestra Rhythmbox con musica riprodotta da un file
libreria audio importata.

Ecco alcuni modi per iniziare a utilizzare Rhythmbox:

■ Radio : fare doppio clic sulla selezione Radio in Libreria e scegliere una stazione radio
dall'elenco che appare a destra.
■ Podcast: cerca i podcast su Internet e trova l'URL di uno
ti interessa. Fare clic con il pulsante destro del mouse sulla voce Podcast e selezionare Nuovo feed podcast. Incolla o
digita l'URL del podcast e fai clic su Aggiungi. Un elenco di podcast dal sito di te
selezionato appare a destra. Fare doppio clic su quello che si desidera ascoltare.
■ CD audio: inserire un CD audio e premere Play quando viene visualizzato nel Rhythmbox
finestra. Rhythmbox ti consente anche di copiare e masterizzare CD audio.
■ Fileaudio —Rhythmbox può riprodurre file WAV e Ogg Vorbis. Aggiungendo plug-in,
puoi riprodurre molti altri formati audio, incluso MP3. Perché ci sono brevetti

48

Pagina 89

Capitolo 2: Creazione del desktop Linux perfetto

problemi relativi al formato MP3, la capacità di riprodurre MP3 non è inclusa con
Fedora. Nel Capitolo 10, descriverò come ottenere il software necessario che non si trova in
repository della tua distribuzione Linux.

FIGURA 2.14

Riproduci musica, podcast e radio Internet da Rhythmbox.

2
Sono disponibili plug-in per Rhythmbox per ottenere copertine, mostrare informazioni sugli artisti e
canzoni, aggiungere il supporto per i servizi musicali (come Last.fm e Magnatune) e recuperare i testi delle canzoni.

Arresto del desktop GNOME 3


Quando hai finito con la tua sessione di GNOME 3, seleziona il pulsante freccia giù in alto
angolo destro della barra in alto. Da lì, puoi scegliere il pulsante On / Off, che ti consente
per disconnettersi, sospendere la sessione o passare a un account utente diverso senza disconnettersi.

Utilizzo del desktop GNOME 2


Il desktop GNOME 2 è l'interfaccia desktop predefinita utilizzata tramite Red Hat Enterprise
Linux 6. È ben noto, stabile e forse un po 'noioso.

49

Pagina 90

Parte I: Guida introduttiva

I desktop GNOME 2 forniscono i menu, i pannelli, le icone e le aree di lavoro più standard. Se tu
stanno utilizzando un sistema Red Hat Enterprise Linux fino a RHEL 6 o un vecchio Fedora o Ubuntu
distribuzione, probabilmente stai guardando un desktop GNOME 2.

Questa sezione fornisce una panoramica di GNOME 2, insieme ad alcune opportunità per migliorarlo a
po. Le recenti versioni di GNOME includono miglioramenti negli effetti 3D (vedere "Effetti 3D con AIGLX" più avanti
in questo capitolo) e funzionalità di usabilità migliorate che ti mostrerò.

Per utilizzare il desktop GNOME, è necessario acquisire familiarità con i seguenti componenti:

■ Metacity (window manager) : il window manager predefinito per GNOME 2 è


Metacità. Le opzioni di configurazione di Metacity ti consentono di controllare cose come temi,
bordi delle finestre e controlli utilizzati sul desktop.
■ Compiz (gestore di finestre): è possibile abilitare questo gestore di finestre in GNOME per
fornire effetti desktop 3D.
■ Nautilus (file manager / shell grafica): quando si apre una cartella (facendo doppio clic su
ad esempio l'icona Home sul desktop), si apre la finestra di Nautilus e
visualizza il contenuto della cartella selezionata. Nautilus può anche visualizzare altri tipi di file
contenuto, come cartelle condivise da computer Windows sulla rete (utilizzando SMB).
■ Pannelli GNOME (lanciatore di applicazioni / attività): questi pannelli, che si allineano in alto e
nella parte inferiore dello schermo, sono progettati per facilitare l'avvio del file
applicazioni che utilizzi, gestisci applicazioni in esecuzione e lavori con più applicazioni virtuali
desktop. Per impostazione predefinita, il pannello superiore contiene i pulsanti del menu (Applicazioni, Luoghi e
System), lanciatori di applicazioni desktop (e-mail Evolution e browser web Firefox), a
commutatore dell'area di lavoro (per la gestione di quattro desktop virtuali) e un orologio. Le icone vengono visualizzate in
il pannello quando sono necessari aggiornamenti software o SELinux rileva un problema. Il fondo
ha un pulsante Mostra desktop, elenchi di finestre, un cestino e un selettore dell'area di lavoro.
■ Area del desktop : le finestre e le icone utilizzate sono disposte nell'area del desktop,
che supporta il drag-and-drop tra le applicazioni, un menu sul desktop (clic con il tasto destro
per vederlo) e le icone per avviare le applicazioni. Un'icona del computer consolida il CD
unità, unità floppy, file system e risorse di rete condivise in un unico posto.

GNOME include anche una serie di finestre Preferenze che consentono di configurare diversi aspetti
del tuo desktop. Puoi cambiare sfondi, colori, caratteri, scorciatoie da tastiera e altro
funzionalità relative all'aspetto e al comportamento del desktop. La Figura 2.15 mostra come GNOME 2
L'ambiente desktop viene visualizzato la prima volta che si accede, con alcune finestre aggiunte allo schermo.

Il desktop mostrato nella Figura 2.15 è per Red Hat Enterprise Linux. Le seguenti sezioni
fornire dettagli sull'utilizzo del desktop GNOME 2.

Utilizzo del window manager Metacity


Il window manager Metacity sembra essere stato scelto come window manager predefinito
per GNOME a causa della sua semplicità. Il creatore di Metacity lo definisce una "finestra noiosa

50
Pagina 91

Capitolo 2: Creazione del desktop Linux perfetto

manager per l'adulto in te ”e poi confronta altri window manager con


cereali colorati e zuccherini, mentre Metacity è caratterizzato come Cheerios.

Per utilizzare gli effetti 3D, la soluzione migliore è utilizzare il window manager Compiz, descritto più avanti in questo capitolo. Non puoi
fai molto con Metacity (eccetto che il tuo lavoro sia svolto in modo efficiente). Assegni nuovi temi a Metacity e cambi i colori
e le decorazioni delle finestre tramite le preferenze di GNOME (descritte più avanti). Esistono solo pochi temi di Metacity, ma
aspettatevi che il numero cresca.

Le funzioni di base di Metacity che potrebbero interessarti sono le scorciatoie da tastiera e lo switcher dell'area di lavoro. La tabella 2.1 mostra
scorciatoie da tastiera per aggirare il window manager di Metacity.

2
FIGURA 2.15

L'ambiente desktop GNOME 2.

TABELLA 2.1 Tasti rapidi

Azioni Sequenze di tasti

Torna indietro, senza icone a comparsa Alt + Maiusc + Esc

Torna indietro tra i pannelli Alt + Ctrl + Maiusc + Tab

Chiudi menu Esc

51

Pagina 92

Parte I: Guida introduttiva

Puoi anche usare altre scorciatoie da tastiera con il gestore delle finestre. Selezionare
Sistema ➪ Preferenze ➪ Scorciatoie da tastiera per visualizzare un elenco di scorciatoie, come le seguenti:

■ Esegui finestra di dialogo: per eseguire un comando per avviare un'applicazione dal desktop tramite
nome del comando, premere Alt + F2. Dalla finestra di dialogo che appare, digita il comando
e premere Invio. Ad esempio, digita gedit per eseguire un semplice editor di testo grafico.
■ Blocca schermo: se si desidera uscire dallo schermo e bloccarlo, premere
Ctrl + Alt + L. È necessario digitare la password utente per aprire nuovamente la schermata.
■ Mostra menu principale: per aprire un'applicazione da Applicazioni, Luoghi o Sistema
menu, premere Alt + F1. Quindi utilizzare i tasti freccia su e giù per selezionare da
menu corrente o utilizzare i tasti freccia destra e sinistra per selezionare da altri menu.
■ Stampa schermo: premere il tasto Stampa schermo per scattare una foto dell'intero desktop.
Premere Alt + Print Screen per scattare una foto della finestra corrente.

Un'altra caratteristica interessante di Metacity è lo switcher dell'area di lavoro. Quattro spazi di lavoro virtuali
appaiono nello switcher area di lavoro sul pannello GNOME 2. Puoi fare quanto segue con il
Commutatore area di lavoro:

■ Scegli l'area di lavoro corrente: nell'area di lavoro vengono visualizzate quattro aree di lavoro virtuali
Interruttore. Fare clic su uno dei quattro spazi di lavoro virtuali per renderlo corrente
spazio di lavoro.
■ Spostare le finestre in altri spazi di lavoro: fare clic su qualsiasi finestra, ciascuna rappresentata da un
piccolo rettangolo in un'area di lavoro, per trascinarlo su un altro spazio di lavoro. Allo stesso modo,
puoi trascinare un'applicazione dall'elenco Finestra per spostarla
un altro spazio di lavoro.
■ Aggiungere altri spazi di lavoro : fare clic con il pulsante destro del mouse su Selettore aree di lavoro e selezionare
Preferenze. Puoi aggiungere aree di lavoro (fino a 32).
■ Assegnare un nome alle aree di lavoro : fare clic con il pulsante destro del mouse su Selettore aree di lavoro e selezionare Preferenze. Clic
nel riquadro Aree di lavoro per modificare i nomi degli spazi di lavoro con qualsiasi nome tu scelga.

È possibile visualizzare e modificare le informazioni sui controlli e le impostazioni di Metacity utilizzando il


Finestra gconf-editor (digita gconf-editor da una finestra di Terminale). Come la finestra
dice, non è il modo consigliato per modificare le preferenze, quindi quando possibile, dovresti
cambiare il desktop tramite le preferenze di GNOME 2. Tuttavia, gconf-editor è un buon modo
per vedere le descrizioni di ogni caratteristica di Metacity.

Dalla finestra gconf-editor, seleziona app ➪ metacity e scegli tra generale,


global_keybindings, keybindings_commands, window_keybindings e workspace_names.
Fare clic su ciascuna chiave per visualizzarne il valore, insieme a descrizioni brevi e lunghe della chiave.

Cambiare l'aspetto di GNOME


È possibile modificare l'aspetto generale del desktop GNOME selezionando Sistema ➪ Preferenze
➪ Aspetto. Dalla finestra Preferenze aspetto, seleziona una delle tre schede:

52

Pagina 93

Capitolo 2: Creazione del desktop Linux perfetto

■ Tema : per il desktop GNOME 2 sono disponibili interi temi che modificano l'estensione
colori, icone, caratteri e altri aspetti del desktop. Diversi temi diversi
venire con il desktop GNOME, che puoi semplicemente selezionare da questa scheda per usarlo.
Oppure fai clic su Ottieni più temi online per scegliere tra una varietà di temi disponibili.
■ Sfondo: per modificare lo sfondo del desktop, selezionare da un elenco di sfondi
in questa scheda per fare in modo che quello scelto abbia effetto immediato. Per aggiungere un diverso
background, metti lo sfondo che desideri sul tuo sistema (magari scaricane uno da
selezionando Ottieni più sfondi online e scaricandolo nelle tue Immagini
cartella). Quindi fare clic su Aggiungi e selezionare l'immagine dalla cartella Immagini.
■ Caratteri:
è possibile selezionare diversi caratteri da utilizzare per impostazione predefinita con le applicazioni,
documenti, desktop, barra del titolo della finestra e larghezza fissa.

Utilizzo dei pannelli GNOME 2


I pannelli GNOME si trovano nella parte superiore e inferiore del desktop GNOME. Da quelli
pannelli, è possibile avviare applicazioni (da pulsanti o menu), vedere quali programmi sono attivi,
e monitorare come funziona il sistema. Puoi anche modificare i pannelli superiore e inferiore in
in molti modi: aggiungendo applicazioni o monitor o modificando la posizione o il comportamento
del pannello, per esempio.

Fare clic con il pulsante destro del mouse su uno spazio aperto su uno dei pannelli per visualizzare il menu del pannello. La Figura 2.16 mostra il file
Menu del pannello in alto.

FIGURA 2.16

Il menu del pannello GNOME.


Dal menu del pannello di GNOME, puoi scegliere tra una varietà di funzioni, incluse queste:

■ Utilizzare i menu
■ Il menu Applicazioni visualizza la maggior parte delle applicazioni e degli strumenti di sistema
utilizzerà dal desktop.
■ Il menu Luoghi ti consente di selezionare i luoghi in cui andare, come la cartella Desktop, casa
cartella, supporto rimovibile o percorsi di rete.
■ Il menu Sistema consente di modificare le preferenze e le impostazioni di sistema, nonché
ottenere altre informazioni su GNOME.

53

Pagina 94

Parte I: Guida introduttiva

■ Aggiungi al pannello: aggiunge un'applet, un menu, un programma di avvio, un cassetto o un pulsante.


■ Proprietà: consente di modificare la posizione, le dimensioni e le proprietà dello sfondo del pannello.
■ Elimina questo pannello: elimina il pannello corrente.
■ Nuovo pannello: aggiungi pannelli al desktop in diversi stili e posizioni.

Puoi anche lavorare con gli elementi su un pannello. Ad esempio, puoi fare quanto segue:

■ Sposta elementi: per spostare un elemento su un pannello, fare clic con il pulsante destro del mouse, selezionare Sposta e trascinare e
rilasciarlo in una nuova posizione.
■ Ridimensiona elementi: è possibile ridimensionare alcuni elementi, come l'elenco Finestra, facendo clic su
un bordo e trascinandolo nella nuova dimensione.
■ Usa l'elenco Finestra: le attività in esecuzione sul desktop vengono visualizzate nell'elenco Finestra
la zona. Fare clic su un'attività per ridurla a icona o ingrandirla.

Le sezioni seguenti descrivono alcune cose che puoi fare con il pannello GNOME.

Utilizzo delle applicazioni e dei menu di sistema


Fare clic su Applicazioni nel pannello e vengono visualizzate le categorie di applicazioni e strumenti di sistema
che puoi selezionare. Fare clic sull'applicazione che si desidera avviare. Per aggiungere una voce da un menu
in modo che possa essere avviato dal pannello, trascina e rilascia l'elemento che desideri sul pannello.

Puoi aggiungere elementi ai menu di GNOME 2. Per farlo, fai clic con il pulsante destro del mouse su qualsiasi menu
nomi e selezionare Modifica menu. La finestra che appare consente di aggiungere o eliminare i menu
associati ai menu Applicazioni e Sistema. Puoi anche aggiungere elementi da avviare
da quei menu selezionando Nuovo elemento e digitando il nome, il comando e il commento
per l'articolo.

Aggiunta di un'applet
Puoi eseguire diverse piccole applicazioni, chiamate applet , direttamente sul pannello GNOME. Questi
le applicazioni possono mostrare informazioni che potresti voler vedere su base continuativa o semplicemente
fornire un po 'di divertimento. Per vedere quali applet sono disponibili e per aggiungere applet che tu
vuoi al tuo pannello, segui questi passaggi:

1. Fare clic con il pulsante destro del mouse su uno spazio aperto nel pannello in modo che venga visualizzato il menu del pannello.

2. Fare clic su Aggiungi al pannello . Viene visualizzata una finestra Aggiungi al pannello.

3. Selezionare tra diverse dozzine di applet, tra cui un orologio, una ricerca nel dizionario,
ticker di borsa e bollettino meteorologico. L'applet selezionata viene visualizzata sul pannello,
pronto per l'uso.

La Figura 2.17 mostra (da sinistra a destra) occhi, monitor di sistema, bollettini meteorologici, terminale e
Wanda il pesce.

54

Pagina 95
Capitolo 2: Creazione del desktop Linux perfetto

FIGURA 2.17

Posizionare gli applet sul pannello ne semplifica l'accesso.

Dopo aver installato un'applet, fare clic con il pulsante destro del mouse sul pannello per vedere quali opzioni sono disponibili.
Ad esempio, seleziona Preferenze per il ticker di borsa e puoi aggiungere o eliminare azioni il cui
prezzi che vuoi monitorare. Se non ti piace la posizione dell'applet, fai clic con il pulsante destro del mouse, fai clic su Sposta,
fai scorrere il mouse finché l'applet non si trova dove vuoi (anche su un altro pannello) e fai clic su
impostare la sua posizione.

Se non desideri più che un'applet appaia sul pannello, fai clic con il pulsante destro del mouse e fai clic su Rimuovi
Dal pannello. L'icona che rappresenta l'applet scompare. Se scopri di essere finito 2
di spazio sul pannello, è possibile aggiungere un nuovo pannello a un'altra parte dello schermo, come descritto
nella sezione successiva.

Aggiunta di un altro pannello


Se esaurisci lo spazio sui pannelli superiore o inferiore, puoi aggiungere altri pannelli al tuo file
desktop. Puoi avere diversi pannelli sul tuo desktop GNOME 2. Puoi aggiungere pannelli che
correre lungo tutta la parte inferiore, superiore o laterale dello schermo. Per aggiungere un pannello, segui questi passaggi:

1. Fare clic con il pulsante destro del mouse su uno spazio aperto nel pannello in modo che venga visualizzato il menu del pannello.

2. Fare clic su Nuovo pannello . Un nuovo pannello appare sul lato dello schermo.

3. Fare clic con il pulsante destro del mouse su uno spazio aperto nel nuovo pannello e selezionare Proprietà.

4. Dalle proprietà del pannello, selezionare la posizione in cui si desidera inserire il pannello
Casella di orientamento (in alto, in basso, a sinistra o a destra).

Dopo aver aggiunto un pannello, puoi aggiungere applet o lanciatori di applicazioni come hai fatto tu
il pannello predefinito. Per rimuovere un pannello, fai clic con il pulsante destro del mouse e seleziona Elimina questo pannello.

Aggiunta di un lanciatore di applicazioni


Le icone sul pannello rappresentano un browser Web e diverse applicazioni per la produttività dell'ufficio.
Puoi anche aggiungere le tue icone per avviare le applicazioni dal pannello. Per aggiungere un nuovo file
lanciatore di applicazioni sul pannello, segui questi passaggi:

1. Fare clic con il pulsante destro del mouse in uno spazio aperto sul pannello.

2. Fare clic su Aggiungi al pannello ➪ Avvio applicazioni dal menu. Tutte le applicazioni
vengono visualizzate le categorie dai menu Applicazioni e Sistema.
3. Selezionare la freccia accanto alla categoria dell'applicazione desiderata, quindi selezionare
Inserisci. Sul pannello viene visualizzata un'icona che rappresenta l'applicazione.

55

Pagina 96

Parte I: Guida introduttiva

Per avviare l'applicazione appena aggiunta, è sufficiente fare clic sull'icona nel pannello.

Se l'applicazione che desideri avviare non è in uno dei tuoi menu, puoi creare un programma di avvio
te stesso come segue:

1. Fare clic con il pulsante destro del mouse in uno spazio aperto sul pannello.

2. Fare clic su Aggiungi al pannello ➪ Avvio applicazioni personalizzato ➪ Aggiungi . Il programma di avvio di creazione
appare la finestra.
3. Fornisci le seguenti informazioni per l'applicazione che desideri aggiungere:
■ Tipo: selezionare Applicazione (per avviare una normale applicazione GUI) o Applicazione
in Terminal. Usa l'applicazione nel terminale se l'applicazione è basata sui caratteri
o l'applicazione ncurses. (Le applicazioni scritte utilizzando la libreria ncurses vengono eseguite in un file
Finestra di terminale ma offre controlli mouse e tastiera orientati allo schermo.)
■ Nome: scegliere un nome per identificare l'applicazione (visualizzato nella descrizione comando
quando il mouse si trova sopra l'icona).
■ Comando: identifica la riga di comando che viene eseguita quando l'applicazione è
lanciato. Utilizza il percorso completo, più eventuali opzioni richieste.
■ Commento: immettere un commento che descriva l'applicazione. Appare anche quando
in seguito sposti il ​mouse sul programma di avvio.

4. Fare clic sulla casella Icona (potrebbe indicare Nessuna icona), selezionare una delle icone visualizzate e
fare clic su OK. In alternativa, puoi sfogliare il tuo filesystem per scegliere un'icona.
5. Fare clic su OK.

L'applicazione dovrebbe ora apparire nel pannello. Fare clic per avviare l'applicazione.

Le icone disponibili per rappresentare la tua applicazione sono contenute nella directory / usr / share / pixmaps. Queste icone
sono in formato.png o .xpm. Se non c'è un'icona nella directory che desideri utilizzare, creane una tua (in uno dei file
questi due formati) e assegnarlo all'applicazione.

Aggiunta di un cassetto
Un cassetto è un'icona su cui puoi fare clic per visualizzare altre icone che rappresentano menu, applet e
lanciatori; si comporta proprio come un pannello. In sostanza, qualsiasi elemento che puoi aggiungere a un pannello puoi
aggiungi a un cassetto. Aggiungendo un cassetto al tuo pannello GNOME, puoi includere diverse applet
e lanciatori che insieme occupano lo spazio di una sola icona. Fare clic sul cassetto per visualizzare il file
applet e launcher come se fossero stati estratti da un'icona del cassetto sul pannello.

Per aggiungere un cassetto al pannello, fare clic con il pulsante destro del mouse sul pannello e selezionare Aggiungi al pannello ➪ Cassetto.
Sul pannello viene visualizzato un cassetto. Fai clic con il pulsante destro del mouse e aggiungi applet o lanciatori come te
sarebbe a un pannello. Fare nuovamente clic sull'icona per ritirare il cassetto.

56

Pagina 97

Capitolo 2: Creazione del desktop Linux perfetto

La Figura 2.18 mostra una porzione del pannello con un cassetto aperto che include un'icona per
lancio di un bollettino meteorologico, note adesive e un monitoraggio delle scorte.

FIGURA 2.18

Aggiungi launcher o applet a un drawer sul tuo pannello GNOME 2.

Modifica delle proprietà del pannello 2


È possibile modificare l'orientamento, le dimensioni, i criteri di occultamento e le proprietà dello sfondo del file
pannelli desktop. Per aprire la finestra Proprietà pannello che si applica a un pannello specifico,
fare clic con il pulsante destro del mouse su uno spazio aperto nel pannello e scegliere Proprietà. La finestra Proprietà del pannello
visualizzato include i seguenti valori:

■ Orientamento: spostare il pannello in una posizione diversa sullo schermo facendo clic su a
nuova posizione.
■ Dimensioni: selezionare le dimensioni del pannello scegliendone l'altezza in pixel (48 pixel
per impostazione predefinita).
■ Espandi: selezionare questa casella di controllo per espandere il pannello fino a riempire l'intero lato oppure
deselezionare la casella di controllo per rendere il pannello largo quanto le applet che contiene.
■ Nascondi automaticamente: consente di selezionare se un pannello viene nascosto automaticamente (visualizzato solo quando
il puntatore del mouse si trova nell'area).
■ Mostra pulsanti Nascondi: consente di scegliere se i pulsanti Nascondi / Scopri (con pixmap
frecce su di essi) appaiono sui bordi del pannello.
■ Frecce sui pulsanti nascondi: se si seleziona Mostra pulsanti nascosti , è possibile scegliere di avere
frecce su quei pulsanti.
■ Sfondo : dalla scheda Sfondo è possibile assegnare un colore allo sfondo
del pannello, assegna un'immagine pixmap o lascia il valore predefinito (basato su
il tema del sistema corrente). Fare clic sulla casella di controllo Immagine di sfondo se lo si desidera
selezionare un'immagine per lo sfondo, quindi selezionare un'immagine, ad esempio una tessera da
/ usr / share / backgrounds / tiles o un'altra directory.
Di solito attivo la funzione Nascondi automaticamente e disattivo i pulsanti Nascondi. L'uso di AutoHide ti dà più spazio sul desktop
lavorare con. Quando sposti il ​mouse sul bordo in cui si trova il pannello, il pannello si apre, quindi non è necessario
Nascondi pulsanti.

57

Pagina 98

Parte I: Guida introduttiva

Aggiunta di effetti 3D con AIGLX


Diverse iniziative hanno fatto passi da gigante negli ultimi anni per portare effetti desktop 3D su Linux.
Ubuntu, openSUSE e Fedora hanno utilizzato AIGLX (http : // http: //fedoraproject.org/
wiki / RenderingProject / aiglx).

L'obiettivo del progetto Accelerated Indirect GLX (AIGLX) è aggiungere effetti 3D a tutti i giorni
sistemi desktop. Lo fa implementando OpenGL (http://opengl.org) accelerato
effetti utilizzando l' implementazione OpenGL open source di Mesa (http://www.mesa3d.org) .

Attualmente, AIGLX supporta un set limitato di schede video e implementa solo poche schede 3D
effetti, ma offre alcune informazioni sul piacere per gli occhi che è in lavorazione.

Se la tua scheda video è stata rilevata e configurata correttamente, potresti semplicemente girarla
sulla funzionalità Effetti desktop per vedere gli effetti che sono stati implementati finora.
Per attivare gli effetti del desktop, seleziona Sistema ➪ Preferenze ➪ Effetti del desktop. Quando il
Viene visualizzata la finestra Effetti del desktop, selezionare Compiz. (Se la selezione non è disponibile, installa
il pacchetto compiz.)

L'abilitazione di Compiz esegue le seguenti operazioni:

■ Avvia Compiz: arresta il gestore delle finestre corrente e avvia Compiz


gestore di finestre.
■ Abilita l'effetto Oscillazione di Windows quando spostato: con questo effetto attivo, quando tu
afferra la barra del titolo della finestra per spostarla, la finestra oscilla mentre si muove. Menu
e altri elementi che si aprono sul desktop oscillano.
■ Abilita gli spazi di lavoro su un effetto cubo: trascina una finestra dal desktop su
destra o sinistra e il desktop ruota come un cubo, con ciascuno dei tuoi desktop
spazi di lavoro che appaiono come un lato di quel cubo. Rilascia la finestra nell'area di lavoro
dove vuoi che vada. Puoi anche fare clic sull'applet Selettore area di lavoro nel file
pannello inferiore per ruotare il cubo per visualizzare diversi spazi di lavoro.

Altri bei effetti desktop derivano dall'utilizzo dei tasti Alt + Tab per tab tra diversi
Windows in esecuzione. Quando si preme Alt + Tab, una miniatura di ciascuna finestra scorre sul file
schermo mentre viene evidenziata la finestra che rappresenta.

La Figura 2.19 mostra un esempio di un desktop Compiz con AIGLX abilitato. La figura
illustra una finestra del browser Web che viene spostata da uno spazio di lavoro a un altro come
quelle aree di lavoro ruotano su un cubo.

Di seguito sono riportati alcuni effetti interessanti che puoi ottenere con il tuo desktop 3D AIGLX:

58

Pagina 99
Capitolo 2: Creazione del desktop Linux perfetto

FIGURA 2.19

Ruota le aree di lavoro su un cubo con gli effetti desktop AIGLX abilitati.

■ Spin cube: tenere premuti i tasti Ctrl + Alt e premere i tasti freccia destra e sinistra. Il
il cubo del desktop gira su ogni area di lavoro successiva (avanti o indietro).
■ Ruota lentamente il cubo: tieni premuti i tasti Ctrl + Alt, tieni premuto il pulsante sinistro del
e muovi il mouse sullo schermo. Il cubo si muove lentamente con il mouse
tra gli spazi di lavoro.
■ Ridimensionare e separare le finestre: se il desktop è disordinato, tenere premuto Ctrl + Alt e premere
il tasto freccia su. Windows si restringe e si separa sul desktop. Ancora in attesa
Ctrl + Alt, utilizza i tasti freccia per evidenziare la finestra desiderata e rilascia il
chiavi per far emergere quella finestra.
■ Tab nelle finestre: tenere premuto il tasto Alt e premere il tasto Tab. Vedi ridotto
versioni di tutte le finestre in una striscia al centro dello schermo, con l'estensione
finestra corrente evidenziata al centro. Sempre tenendo premuto il tasto Alt, premi Tab o
Maiusc + Tab per spostarsi avanti o indietro nelle finestre. Rilascia i tasti
quando quello che vuoi è evidenziato.
■ Ridimensionare e separare gli spazi di lavoro: tenere premuto Ctrl + Alt e premere il tasto freccia giù per
vedere le immagini ridotte dell'area di lavoro mostrate su una striscia. Ancora tenendo premuto Ctrl + Alt, usa
i tasti freccia destra e sinistra per spostarsi tra le diverse aree di lavoro. Rilasciare il
quando l'area di lavoro desiderata è evidenziata.

59

Pagina 100

Parte I: Guida introduttiva

■ Invia la finestra corrente allo spazio di lavoro successivo: tenere premuti i tasti Ctrl + Alt + Maiusc,
e premere i tasti freccia sinistra e destra. L'area di lavoro successiva a sinistra oa destra,
rispettivamente, appare sul desktop corrente.
■ Far scorrere le finestre: tenere premuto il pulsante sinistro del mouse sul titolo della finestra
barra, quindi premere i tasti freccia sinistra, destra, su o giù per scorrere la corrente
finestra sullo schermo.

Se sei stanco di finestre che oscillano e cubi rotanti, puoi spegnerlo facilmente
gli effetti AIGLX 3D e tornare a utilizzare Metacity come window manager. Selezionare
Sistema ➪ Preferenze ➪ Effetti desktop di nuovo e disattiva Abilita effetti desktop
per disattivare la funzione.

Se disponi di una scheda video supportata, ma scopri che non puoi attivare gli effetti del desktop,
controlla che il tuo server X sia avviato correttamente. In particolare, assicurati che il tuo / etc / X11 /
Il file xorg.conf è configurato correttamente. Assicurati che dri e glx siano caricati nel file
Sezione modulo. Inoltre, aggiungi una sezione delle estensioni in qualsiasi punto del file (in genere alla fine
del file) che appare come segue:

Sezione "estensioni"
Opzione "Composito"
EndSection
Un'altra opzione è aggiungere la seguente riga al file /etc/X11/xorg.conf nel file
Sezione dispositivo:

Opzione "XAANoOffscreenPixmaps"

L'opzione XAANoOffscreenPixmaps migliora le prestazioni. Controlla il tuo / var / log /


File Xorg.log per assicurarsi che le funzionalità DRI e AIGLX siano state avviate correttamente. Il
i messaggi in quel file possono aiutarti a eseguire il debug anche di altri problemi.

Sommario
L'ambiente desktop GNOME è diventato l'ambiente desktop predefinito per molti
Sistemi Linux, inclusi Fedora e RHEL. Il desktop GNOME 3 (ora utilizzato in Fedora e
Red Hat Enterprise Linux 7) è un desktop moderno ed elegante, progettato per adattarsi ai tipi di
interfacce disponibili su molti dei dispositivi mobili odierni. Il desktop GNOME 2 (utilizzato tramite
RHEL 6) offre un'esperienza desktop più tradizionale.

Oltre ai desktop GNOME, puoi provare altri ambienti desktop popolari e utili.
K Desktop Environment (KDE) offre molti più campanelli e fischietti di GNOME e lo è
utilizzato per impostazione predefinita in diverse distribuzioni Linux. Netbook e distribuzioni di CD live alcuni-
volte usano i desktop LXDE o Xfce.

60

Pagina 101

Capitolo 2: Creazione del desktop Linux perfetto

Ora che hai un'idea di come ottenere e utilizzare un desktop Linux, è tempo di iniziare a scavare
nelle interfacce amministrative più professionali. Il Capitolo 3 ti introduce a Linux
interfaccia della shell della riga di comando.

Esercizi
Usa questi esercizi per testare la tua abilità nell'utilizzo di un desktop GNOME. Puoi usare uno GNOME
2. x (Red Hat Enterprise Linux fino a RHEL 6. x ) o GNOME 3. x (Fedora 16 o successivo o Ubuntu
fino a 11.10 o successivo utilizzando il progetto Ubuntu GNOME) desktop. Se sei bloccato, soluzioni
le attività per entrambi i desktop GNOME 2 e GNOME 3 sono mostrate nell'Appendice B.

1. Procurarsi un sistema Linux con un desktop GNOME 2 o GNOME 3 disponibile. Inizio


il sistema e accedere a un desktop GNOME. 2
2. Avvia il browser web Firefox e vai alla home page di GNOME (http: //
gnome.org ).
3. Scegli uno sfondo che ti piace dal sito d'arte GNOME (http: // gnome-lo ok.org/),
scaricalo nella cartella Immagini e selezionalo come sfondo corrente.
4. Avviare una finestra di Nautilus File Manager e spostarla nella seconda area di lavoro in
il tuo desktop.
5. Trova l'immagine che hai scaricato da utilizzare come sfondo del desktop e aprila in
qualsiasi visualizzatore di immagini.
6. Spostarsi avanti e indietro tra l'area di lavoro con Firefox su di esso e quella con
il file manager Nautilus.
7. Aprire un elenco di applicazioni installate sul sistema e selezionare un visualizzatore di immagini per
aperto da quella lista. Utilizza il minor numero di clic o sequenze di tasti possibile.
8. Modificare la visualizzazione delle finestre nell'area di lavoro corrente in visualizzazioni più piccole di
quelle finestre che puoi attraversare. Seleziona qualsiasi finestra che desideri per renderla tua
finestra corrente.
9. Dal desktop, utilizzando solo la tastiera, avviare un lettore musicale.

10. Scatta una foto del desktop, utilizzando solo i tasti.


61

Pagina 103
102

Seconda parte
Diventare un Linux
Power user

IN QUESTA PARTE Capitolo 6


Gestione dei processi in esecuzione
capitolo 3
Capitolo 7
Utilizzando la Shell
Scrittura di semplici script di shell
capitolo 4
Spostarsi nel filesystem

Capitolo 5
Lavorare con file di testo

Pagina 105
104

CAPITOLO
Utilizzando la Shell
IN QUESTO CAPITOLO
3
Capire la shell di Linux

Utilizzo della shell da console o terminali

Usare i comandi

Utilizzo della cronologia dei comandi e del completamento tramite tabulazione

Collegamento ed espansione dei comandi

Comprensione delle variabili e degli alias

Rendere permanenti le impostazioni della shell

Usare le pagine man e altra documentazione

B la maggior parte dei computer. Sui sistemi UNIX, da cui Linux era derivato, il programma utilizzato per inter-
i comandi pret and manage erano indicati come shell.
icone rima e le finestre ha assunto schermi di computer, avete digitato i comandi per interagire con
Indipendentemente dalla distribuzione Linux che stai utilizzando, puoi sempre contare sul fatto che la shell
è a tua disposizione. Fornisce un modo per creare file di script eseguibili, eseguire programmi, lavorare con
filesystem, compilare il codice del computer e gestire il computer. Sebbene la shell sia meno intuitiva
rispetto alle comuni interfacce grafiche utente (GUI), la maggior parte degli esperti Linux considera la shell molto di più
potente delle GUI. Le conchiglie esistono da molto tempo e molte funzionalità avanzate non lo sono
disponibile dal desktop è possibile accedere eseguendo i comandi della shell.

La shell Linux illustrata in questo capitolo è chiamata bash shell, che sta per Bourne
Di nuovo Shell. Il nome deriva dal fatto che bash è compatibile con quello di
prime shell UNIX: la shell Bourne (dal nome del suo creatore Stephen Bourne, e rappresentata
dal comando sh).

Sebbene bash sia incluso nella maggior parte delle distribuzioni e considerato uno standard, altre shell lo sono
disponibile, inclusa la shell C (csh), che è popolare tra gli utenti UNIX BSD, e la shell Korn
(ksh), popolare tra gli utenti UNIX System V. Ubuntu utilizza la shell del trattino, per impostazione predefinita, che
è progettato per funzionare più velocemente della shell bash. Linux ha anche una shell tcsh (una shell C migliorata)
e un guscio di cenere (un altro simile a un guscio Bourne).

65

Pagina 106

Parte II: diventare un Power User Linux

È molto probabile che la distribuzione Linux che stai utilizzando abbia più di una shell
installato per impostazione predefinita e disponibile per l'uso. Questo capitolo, tuttavia, si concentra principalmente su
il bash shell. Questo perché le distribuzioni Linux presenti in questo libro, Fedora e
Red Hat Enterprise Linux, entrambi utilizzano la shell bash per impostazione predefinita. La shell bash può anche facilmente
essere aggiunto a Ubuntu.

I seguenti sono alcuni dei motivi principali per imparare a utilizzare la shell:

■ Saprai come aggirare qualsiasi sistema Linux o simile a UNIX. Per


esempio, posso accedere al mio server web Red Hat Enterprise Linux, il mio multi-
server multimediale, il mio router di casa o il Mac di mia moglie ed esplora e usa uno di questi
sistemi informatici da una shell. Posso persino accedere ed eseguire comandi sul mio Android
Telefono. Tutti eseguono Linux o sistemi simili all'interno.
■ Le speciali caratteristiche della shell consentono di raccogliere dati in ingresso e in uscita dati diretti
tra i comandi e il filesystem Linux. Per salvare la digitazione, puoi trovare, modificare,
e ripeti i comandi dalla cronologia della shell. Molti utenti esperti difficilmente toccano un file
interfaccia grafica, che svolge la maggior parte del lavoro da una shell.
■È possibile raccogliere i comandi in un file utilizzando costrutti di programmazione come
test aggiuntivi, cicli e istruzioni case per eseguire rapidamente operazioni complesse che
sarebbe difficile ridigitare più e più volte. Programmi composti da comandi che
vengono memorizzati ed eseguiti da un file sono indicati come script di shell. La maggior parte dei sistemi Linux
gli amministratori utilizzano gli script della shell per automatizzare attività come il backup dei dati, il monitoraggio
controllare i file di registro o controllare l'integrità del sistema.

La shell è un interprete del linguaggio dei comandi. Se hai utilizzato i sistemi operativi Microsoft,
vedrai che l'uso di una shell in Linux è simile a, ma generalmente molto più potente di,
l'interprete utilizzato per eseguire i comandi in DOS o nell'interfaccia comandi CMD. Puoi
pily usa Linux da un'interfaccia desktop grafica, ma man mano che cresci in Linux lo farai sicuramente
è necessario utilizzare la shell ad un certo punto per rintracciare un problema o amministrare alcune funzionalità.

All'inizio come usare la shell non è ovvio, ma con l'aiuto giusto puoi imparare rapidamente
molte delle più importanti caratteristiche della shell. Questo capitolo è la tua guida per lavorare con
Comandi, processi e filesystem del sistema Linux dalla shell. Descrive la shell
l'ambiente e ti aiuta a adattarlo alle tue esigenze.

Informazioni su shell e finestre di terminale


Esistono diversi modi per accedere a un'interfaccia della shell in Linux. Tre dei più comuni sono
il prompt della shell, la finestra del terminale e la console virtuale, di cui si impara di più nel
sezioni seguenti.

Per iniziare a utilizzare questa sezione, avvia il tuo sistema Linux. Sul tuo schermo, dovresti entrambi
visualizzare un prompt di accesso in testo semplice simile al seguente:

66

Pagina 107

Capitolo 3: Utilizzo della shell

Red Hat Enterprise Linux Server versione 7.0 (Maipo)


Kernel 3.10.0-121.el7.x86_64 su un X86
accesso joe:

Oppure vedrai una schermata di login grafica.

In entrambi i casi, dovresti accedere con un normale account utente. Se hai un login in testo normale
prompt, passare alla sezione "Utilizzo del prompt della shell". Se accedi tramite un file grafico
, vai alla sezione "Utilizzo di una finestra di terminale" per vedere come accedere a una shell dal
desktop. In entrambi i casi, puoi accedere a più shell come descritto nella sezione "Utilizzo
sezione suole ".

Utilizzando il prompt della shell


Se il tuo sistema Linux non ha un'interfaccia utente grafica (o una che non funziona in
moment), molto probabilmente vedrai un prompt della shell dopo aver effettuato l'accesso. Digitando comandi da
la shell sarà probabilmente il mezzo principale per utilizzare il sistema Linux.

Il prompt predefinito per un utente normale è semplicemente un segno di dollaro:

Il prompt predefinito per l'utente root è un cancelletto (chiamato anche cancelletto ):

# 3
Nella maggior parte dei sistemi Linux, i prompt $ e # sono preceduti dal nome utente, system
nome e il nome della directory corrente. Ad esempio, un prompt di accesso per l'utente denominato jake
su un computer chiamato pine con / usr / share / come farebbe la directory di lavoro corrente
appaiono come

[jake @ pine share] $

Puoi modificare il prompt per visualizzare i caratteri che ti piacciono e persino leggere in pezzi
informazioni sul sistema: ad esempio, è possibile utilizzare la directory di lavoro corrente,
la data, il nome del computer locale o qualsiasi stringa di caratteri come prompt. Per configurare
il prompt, vedere la sezione "Impostazione del prompt" più avanti in questo capitolo.

Sebbene con la shell sia disponibile un numero enorme di funzionalità, è facile iniziare
semplicemente digitando alcuni comandi. Prova alcuni dei comandi mostrati nel resto di questo
sezione per acquisire familiarità con il tuo attuale ambiente shell.

Negli esempi che seguono, i simboli del dollaro ($) e della sterlina (#) indicano un prompt.
Un $ indica che il comando può essere eseguito da qualsiasi utente, ma un # in genere indica te
dovrebbe eseguire il comando come utente root: molti strumenti amministrativi richiedono
missione per poterli eseguire. Il prompt è seguito dal comando digitato
(e quindi premere Invio). Le righe che seguono mostrano l'output risultante da
il comando.

67
Pagina 108

Parte II: diventare un Power User Linux

Utilizzando una finestra di terminale


Con la GUI del desktop in esecuzione, è possibile aprire un programma di emulazione di terminale (a volte
denominata finestra di Terminale) per avviare una shell. La maggior parte delle distribuzioni Linux lo rendono facile per
per accedere a una shell dalla GUI. Ecco due modi comuni per avviare una finestra di Terminale
da un desktop Linux:

■ Fare clic con il pulsante destro del mouse sul desktop . Nel menu contestuale che appare, se vedi Apri in
Terminal, Shells, New Terminal, Terminal Window, Xterm o un oggetto simile,
selezionalo per avviare una finestra di Terminale. (Alcune distribuzioni hanno disabilitato questa funzione.)
■ Fare clic sul menu del pannello . Molti desktop Linux includono un pannello in alto o in basso
della schermata da cui è possibile avviare le applicazioni. Ad esempio, in alcuni sistemi
Quando si utilizza il desktop GNOME 2, è possibile selezionare Applicazioni ➪ Strumenti di sistema ➪
Terminale per aprire una finestra di Terminale. In GNOME 3, vai alla schermata delle attività, digita
Terminal e premere Invio.

In tutti i casi, dovresti essere in grado di digitare un comando come faresti da una shell senza GUI.
Diversi emulatori di terminale sono disponibili con Linux. In Fedora, Red Hat Enterprise Linux
(RHEL) e altre distribuzioni Linux che utilizzano il desktop GNOME, il terminale predefinito
La finestra dell'emulatore è il terminale GNOME (rappresentato dal comando gnome-terminal).

Il terminale GNOME supporta molte funzionalità oltre alla shell di base. Ad esempio, puoi tagliare e
incolla il testo in o da una finestra del terminale GNOME, cambia i caratteri, imposta un titolo, scegli i colori o
immagini da utilizzare come sfondo e impostare la quantità di testo da salvare quando il testo scorre fuori dallo schermo.

Per provare alcune funzionalità del terminale GNOME, avvia un sistema Fedora o RHEL e accedi a
desktop. Quindi segui questa procedura:

1. Selezionare Applicazioni ➪ Utilità ➪ Terminale (o accedere alla schermata Attività e


tipo Terminal) . Sul desktop dovrebbe aprirsi una finestra di Terminale.
2. Selezionare Modifica ➪ Preferenze profilo .

3. Nella scheda Generale, deselezionare la casella "Usa il carattere a larghezza fissa del sistema" .

4. Dal campo Carattere, provare un carattere diverso e selezionare OK. Il nuovo carattere viene visualizzato nel file
Finestra terminale.
5. Riselezionare la casella "Usa carattere a larghezza fissa di sistema" . Questo ti riporta al
carattere originale.
6. Nella scheda Colori, deselezionare la casella di controllo "Usa i colori dal tema di sistema" . A partire dal
qui puoi provare diversi caratteri e colori di sfondo.

7. Riselezionare la casella "Usa i colori dal tema di sistema" per tornare ai colori predefiniti .

8. Vai alla finestra Profilo . Ci sono altre funzionalità che potresti voler sperimentare
con, come l'impostazione della quantità di dati di scorrimento conservati.
9. Al termine, chiudere la finestra Profilo . Ora sei pronto per usare il tuo file
Finestra terminale.

68

Pagina 109

Capitolo 3: Utilizzo della shell

Se stai usando Linux da un desktop grafico, probabilmente accederai molto spesso al file
shell da una finestra di Terminale.

Utilizzo di console virtuali


La maggior parte dei sistemi Linux che includono un'interfaccia desktop avvia l'esecuzione di più console virtuali
sul computer. Le console virtuali sono un modo per avere più sessioni di shell aperte contemporaneamente in
oltre all'interfaccia grafica che stai utilizzando.

Puoi passare da una console virtuale a un'altra tenendo premuti i tasti Ctrl e Alt e premendo a
tasto funzione tra F1 e F6. Ad esempio, in Fedora, premi Ctrl + Alt + F1 (o F2, F3, F4,
e così via fino a F6 sulla maggior parte dei sistemi Linux) per visualizzare una delle sette console virtuali. Il
il primo spazio di lavoro virtuale in Fedora è dove si trova la GUI e le successive sei console virtuali
sono console virtuali basate su testo. È possibile tornare alla GUI (se in esecuzione) premendo
Ctrl + Alt + F1. (Su alcuni sistemi la GUI viene eseguita sulla console virtuale 5 o 6. Quindi dovresti tornare a
la GUI premendo Ctrl + Alt + F5 o Ctrl + Alt + F6.)

Provalo adesso. Tieni premuti i tasti Ctrl + Alt e premi F3. Dovresti vedere un testo normale
prompt di accesso. Accedi usando il tuo nome utente e password. Prova alcuni comandi. Quando tu
sono finiti, digitare exit per uscire dalla shell. Quindi premere Ctrl + Alt + F1 per tornare alla grafica
interfaccia desktop. Puoi andare avanti e indietro tra queste console grafiche tanto quanto
ti piace.

Scegliere il tuo guscio


Nella maggior parte dei sistemi Linux, la shell predefinita è la shell bash. Per scoprire qual è il tuo file predefinito
la shell di login è, digita i seguenti comandi:

$ chi sono io
chris punti / 0 21/10/2014 22:45 (: 0,0)
$ grep chris / etc / passwd
chris: x: 13597: 13597: Chris Negus: / home / chris: / bin / bash

Il comando who am i mostra il tuo nome utente e il comando grep (che sostituisce chris
con il tuo nome) mostra la definizione del tuo account utente nel file / etc / password. Il
l'ultimo campo in quella voce mostra che la shell bash (/ bin / bash) è la shell predefinita (il file
uno che si avvia quando accedi o apri una finestra di Terminale).

È possibile, sebbene non probabile, che tu abbia un diverso set di shell predefinito. Per provare un file
shell diversa, digita semplicemente il nome di quella shell (gli esempi includono ksh, tcsh, csh, sh,
dash e altri, supponendo che siano installati). Puoi provare alcuni comandi in quella shell
e digita exit quando hai finito per tornare alla shell bash.

Puoi scegliere di utilizzare shell diverse per i seguenti motivi:

69

Pagina 110

Parte II: diventare un Power User Linux

■ Siete abituati a utilizzare i sistemi UNIX System V (spesso ksh per impostazione predefinita) o Sun
Microsystems e altre distribuzioni basate su UNIX di Berkeley (spesso csh di
default) e ti senti più a tuo agio nell'usare le shell predefinite da quegli ambienti.
■ Si desidera eseguire script di shell creati per un particolare ambiente di shell,
ed è necessario eseguire la shell per cui sono stati creati in modo da poterli testare o utilizzare
quegli script dalla tua shell corrente.
■ Preferisci semplicemente le funzionalità in una shell rispetto a quelle in un'altra. Ad esempio, un mem-
ber del mio Linux Users Group preferisce ksh a bash perché non gli piace il modo
gli alias sono usati con bash.

Sebbene la maggior parte degli utenti Linux abbia una preferenza per una shell o un'altra, quando sai come farlo
usa una shell, puoi imparare rapidamente una delle altre facendo riferimento occasionalmente alle shell
pagina man (ad esempio, digita man bash ). Le pagine man (descritte più avanti nella sezione "Getting
La sezione Informazioni sui comandi ") fornisce documentazione per comandi, formati di file,
e altri componenti in Linux. La maggior parte delle persone usa bash solo perché non ha un particolare
grande ragione per utilizzare una shell diversa. Il resto di questa sezione descrive la shell bash.

Bash include funzionalità originariamente sviluppate per le shell sh e ksh nei primi sistemi UNIX, come
così come alcune funzionalità di csh. Aspettatevi che bash sia la shell di login predefinita nella maggior parte dei sistemi Linux
stai utilizzando, ad eccezione di alcuni sistemi Linux specializzati (come alcuni che eseguono
su dispositivi embedded) che potrebbero richiedere una shell più piccola che richiede meno memoria e richiede
meno funzioni. La maggior parte degli esempi in questo capitolo sono basati sulla shell bash.

Vale la pena conoscere la shell bash non solo perché è l'impostazione predefinita nella maggior parte delle installazioni, ma perché è quella che sei tu
utilizzerà con la maggior parte degli esami di certificazione Linux.
Comandi in esecuzione
Il modo più semplice per eseguire un comando è digitare il nome del comando da una shell. A partire dal
sul desktop, apri una finestra di Terminale. Quindi digita il seguente comando:

$ date
Sabato 19 ottobre, 08:04:00 EST 2014

Digitando il comando date, senza opzioni o argomenti, il giorno, il mese corrente,


data, ora, fuso orario e anno da visualizzare come appena mostrato. Qui ci sono alcuni altri componenti
richieste che puoi provare:

$ pwd
/ home / chris
$ hostname
mydesktop

70

Pagina 111

Capitolo 3: Utilizzo della shell

$ ls
Download desktop modelli di immagini
Documenti Musica Video pubblici

Il comando pwd mostra la directory di lavoro corrente. L'inserimento del nome host mostra il tuo
nome host del computer. Il comando ls elenca i file e le directory nella directory corrente
tory. Sebbene molti comandi possano essere eseguiti semplicemente digitando i nomi dei comandi, è più
mon per digitare altro dopo il comando per modificarne il comportamento. I personaggi e le tue parole
può digitare dopo che un comando è chiamato opzioni e argomenti.

Comprensione della sintassi dei comandi


La maggior parte dei comandi ha una o più opzioni che puoi aggiungere per modificare il comportamento del comando.
Le opzioni sono generalmente costituite da una singola lettera, preceduta da un trattino. Tuttavia, puoi raggruppare
le opzioni di una singola lettera insieme o precedono ciascuna di un trattino, per utilizzare più di un'opzione
Al tempo. Ad esempio, i seguenti due usi delle opzioni per il comando ls sono gli stessi:

$ ls -l -a -t
$ ls -lat

In entrambi i casi, il comando ls viene eseguito con -l (elenco lungo), -a (mostra punto nascosto
file), e le opzioni -t (elenca per ora).

Alcuni comandi includono opzioni rappresentate da una parola intera. Per dire un comando
per utilizzare una parola intera come opzione, in genere la anteponi a un doppio trattino (-). Per 3
Ad esempio, per utilizzare l'opzione della guida su molti comandi, inserisci --help nel comando
linea. Senza il doppio trattino, le lettere h, e, le p verrebbero interpretate come separate
opzioni. (Ci sono alcuni comandi che non seguono la convenzione del doppio trattino, usando
un singolo trattino prima di una parola, ma la maggior parte dei comandi utilizza i doppi trattini per le opzioni delle parole.)

Puoi usare l'opzione --help con la maggior parte dei comandi per vedere le opzioni e gli argomenti che supportano: ad esempio-
ple, prova a digitare hostname --help .

Molti comandi accettano anche argomenti dopo che sono state immesse determinate opzioni o alla fine
dell'intera riga di comando. Un argomento è un'informazione extra, come un file-
nome, directory, nome utente, dispositivo o altro elemento che indica al comando su cosa agire.
Ad esempio, cat / etc / passwd mostra il contenuto del file / etc / passwd sul tuo
schermo. In questo caso, / etc / passwd è l'argomento. Di solito, puoi avere tante discussioni
menti come vuoi sulla riga di comando, limitato solo dal numero totale di caratteri
consentito su una riga di comando.

A volte, un argomento è associato a un'opzione. In tal caso, l'argomento deve immedia-


seguire completamente l'opzione. Con le opzioni di una sola lettera, l'argomento generalmente segue uno spazio.
Per le opzioni di parole complete, l'argomento spesso segue un segno di uguale (=). Ecco alcuni esempi:

71
Pagina 112

Parte II: diventare un Power User Linux

$ ls --hide = Desktop
Documenti Musica Video pubblici
Scarica modelli di immagini

Nell'esempio precedente, l'opzione --hide indica al comando ls di non visualizzare il file o


directory denominata Desktop quando si elenca il contenuto della directory. Notare che l'uguale
il segno segue immediatamente l'opzione (senza spazio) e quindi l'argomento (di nuovo, senza spazio).

Ecco un esempio di un'opzione di una sola lettera seguita da un argomento:

$ tar -cvf backup.tar / home / chris

Nell'esempio tar appena mostrato, le opzioni dicono di creare (c) un file (f) denominato backup.tar
che include tutto il contenuto della directory / home / chris e delle sue sottodirectory e
mostra messaggi dettagliati durante la creazione del backup (v). Perché backup.tar è un argomento
all'opzione f, backup.tar deve seguire immediatamente l'opzione.

Ecco alcuni comandi che puoi provare. Guarda come si comportano diversamente con
diverse opzioni:

$ ls
Download di documenti desktop Musica Immagini Modelli pubblici
Video
$ ls -a
. Desktop .gnome2_private .lesshst Pubblico
.. Documenti .gnote .Locale Modelli
.bash_history Scarica .gnupg .mozilla Video
.bash_logout .emacs .gstreamer-0.10 Musica
.xsession-errors
.bash_profile .esd_auth .gtk-bookmarks Immagini .zshrc
.bashrc .fsync.log .gvfs Immagini
$ uname
Linux
$ uname -a
Linux non utilizzato 3.10.0-121.el7.x86_64 # 1 SMP Tue Oct 21 10:48:19
EDT 2014 x86_64 x86_64 x86_64 GNU / Linux
$ date
Mar 21 ottobre 09:08:38 EST 2014
$ date + "% d /% m /% y"
21/10/14
$ date + "% A,% B% d,% Y"
Martedì 21 ottobre 2014

Il comando ls, da solo, mostra tutti i file e le directory regolari nella directory corrente.
Aggiungendo -a, puoi anche vedere i file nascosti nella directory (quelli che iniziano con
un punto). Il comando uname mostra il tipo di sistema in esecuzione (Linux). Quando tu
aggiungi -a, puoi anche vedere il nome host, la versione del kernel e la versione del kernel.

Il comando date ha alcuni tipi speciali di opzioni. Di per sé, la data stampa semplicemente il file
giorno, data e ora correnti come mostrato sopra. Ma il comando date supporta uno speciale +

72

Pagina 113

Capitolo 3: Utilizzo della shell

opzione di formato, che consente di visualizzare la data in diversi formati. Digita date --help to
vedere i diversi indicatori di formato che puoi utilizzare.

Prova i comandi id e who per avere un'idea del tuo attuale ambiente Linux, come
descritto nei paragrafi seguenti.

Quando accedi a un sistema Linux, Linux ti vede come dotato di un'identità particolare, che
include il nome utente, il nome del gruppo, l'ID utente e l'ID del gruppo. Linux tiene anche traccia dei tuoi file
sessione di accesso: sa quando hai effettuato l'accesso, per quanto tempo sei stato inattivo e dove sei
accesso da.

Per trovare informazioni sulla tua identità, usa il comando id come segue:
$ id
uid = 501 (chris) gid = 501 (chris) gruppi = 105 (vendite), 7 (lp)

In questo esempio, il nome utente è chris, rappresentato dall'ID utente numerico (uid)
501. Il gruppo principale per chris è anche chiamato chris, che ha un ID gruppo (gid) di 501.
È normale che gli utenti Fedora e Red Hat Enterprise Linux abbiano lo stesso gruppo principale
nome come nome utente. L'utente chris appartiene anche ad altri gruppi chiamati vendite (gid
105) e lp (gid 7). Questi nomi e numeri rappresentano i permessi di Chris
per accedere alle risorse del computer.

3
Le distribuzioni Linux che hanno Security Enhanced Linux (SELinux) abilitato, come Fedora e RHEL, mostrano ulteriori
informazioni alla fine dell'output di id. Quell'output potrebbe essere simile al seguente:
context = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023
SELinux fornisce un mezzo per bloccare strettamente la sicurezza di un sistema Linux. Vedere il Capitolo 24, "Miglioramento di Linux
Sicurezza con SELinux ”, se vuoi conoscere SELinux.

È possibile visualizzare le informazioni sulla sessione di accesso corrente utilizzando il comando who. Nel
il seguente esempio, l'opzione -u dice di aggiungere informazioni sul tempo di inattività e il file
ID processo e -H chiede che venga stampata un'intestazione:

$ who -uH
NOME LINEA ORA COMMENTO PID IDLE
chris tty1 13 gennaio 20:57. 2013

L'output di questo comando who mostra che l'utente chris è connesso a tty1 (quale
è la prima console virtuale sul monitor connesso al computer) e la sua sessione di login
è iniziato alle 20:57 del 13 gennaio. Il tempo IDLE mostra per quanto tempo la shell è stata aperta senza
qualsiasi comando digitato (il punto indica che è attualmente attivo). PID mostra il processo
ID della shell di accesso dell'utente. COMMENTO mostrerebbe il nome del computer remoto dell'utente
aveva effettuato l'accesso da, se quell'utente aveva effettuato l'accesso da un altro computer sulla rete, o il
nome del display X locale se quell'utente stava usando una finestra di Terminale (come: 0.0).

73

Pagina 114

Parte II: diventare un Power User Linux

Individuazione dei comandi


Ora che hai digitato alcuni comandi, potresti chiederti dove siano questi comandi
individuato e come la shell trova i comandi che digiti. Per trovare i comandi digitati, il file
shell cerca in quello che viene chiamato il tuo percorso. Per i comandi che non sono sul tuo percorso, tu
può digitare l'identità completa della posizione del comando.

Se conosci la directory che contiene il comando che desideri eseguire, un modo per eseguirlo
è digitare il percorso completo o assoluto di quel comando. Ad esempio, esegui il comando data
mand dalla directory / bin digitando

$ / bin / data

Naturalmente, questo può essere scomodo, soprattutto se il comando risiede in una directory con estensione
percorso lungo. Il modo migliore è memorizzare i comandi in directory note e
quindi aggiungi quelle directory alla variabile d'ambiente PATH della tua shell. Il percorso è costituito da
un elenco di directory che vengono controllate in sequenza per i comandi immessi. Per vedere il tuo
percorso corrente, digita quanto segue:

$ echo $ PERCORSO
/ usr / local / bin: / usr / bin: / bin: / usr / local / sbin: / usr / sbin: / sbin: ↵
/ home / chris / bin

I risultati mostrano un percorso predefinito comune per un utente Linux normale. Directory nel percorso
list sono separati da due punti. La maggior parte dei comandi utente forniti con Linux sono archiviati in
directory / bin, / usr / bin o / usr / local / bin.Le directory / sbin e / usr / sbin
contengono comandi amministrativi (alcuni sistemi Linux non mettono queste directory in
percorsi degli utenti lar). L'ultima directory visualizzata è la directory bin nella directory home dell'utente
(/ home / chris / bin).

Se vuoi aggiungere i tuoi comandi o script di shell, inseriscili nella directory bin nella tua home directory (come
come / home / chris / bin per l'utente chiamato chris). Questa directory viene automaticamente aggiunta al tuo percorso in alcuni file
Sistemi Linux, anche se potrebbe essere necessario creare quella directory o aggiungerla al PATH su altri sistemi Linux. Così come
finché aggiungi il comando al tuo cestino con il permesso di esecuzione, puoi iniziare a usarlo semplicemente digitando il comando
mand name al prompt della shell. Per rendere disponibili i comandi a tutti gli utenti, aggiungili a / usr / local / bin.
A differenza di altri sistemi operativi, Linux, per impostazione predefinita, non controlla la directory corrente.
tory per un eseguibile prima di cercare il percorso. Inizia subito a cercare il percorso,
e gli eseguibili nella directory corrente vengono eseguiti solo se si trovano nella variabile PATH o
dai il loro assoluto (come /home/chris/scriptx.sh) o relativo (ad esempio,
./scriptx.sh) indirizzo.

L'ordine delle directory dei percorsi è importante. Le directory vengono controllate da sinistra a destra. Quindi, in
questo esempio, se è presente un comando chiamato foo situato sia in / bin che in / usr / bin

74

Pagina 115

Capitolo 3: Utilizzo della shell

directory, viene eseguito quello in / bin. Per eseguire l'altro comando foo, anche tu
digitare il percorso completo del comando o modificare la variabile PATH. (Cambiando il tuo PATH e
l'aggiunta di directory viene descritta più avanti in questo capitolo.)

Non tutti i comandi che esegui si trovano nelle directory nella variabile PATH. Alcuni comp
i mand sono incorporati nella shell. Altri comandi possono essere sovrascritti creando alias that
definire tutti i comandi e le opzioni che si desidera vengano eseguiti dal comando. Ci sono anche modi
di definire una funzione che consiste in una serie di comandi memorizzati. Ecco l'ordine in
che la shell verifica per i comandi che digiti:

1. Alias . Nomi impostati dal comando alias che rappresentano un particolare comando
e una serie di opzioni. Digita alias per vedere quali alias sono impostati. Spesso gli alias vengono abilitati
definire un nome breve per un comando lungo e complicato. (Descrivo come
creare i propri alias più avanti in questo capitolo.)
2. Parola riservata Shell . Parole riservate dalla shell per usi speciali. Alcuni di questi
sono parole che useresti nelle funzioni di tipo di programmazione, come do, while,
caso e altro. (Tratto alcune di queste parole riservate nel capitolo 7, "Scrittura
Script di shell semplici. ")
3. Funzione . Questo è un insieme di comandi che vengono eseguiti insieme all'interno di
shell corrente.
4. Comando integrato . Questo è un comando integrato nella shell. Di conseguenza, lì
non è una rappresentazione del comando nel filesystem. Alcuni dei più comodi
3
I comandi mon che userai sono comandi incorporati nella shell, come cd (per cambiare
directory), echo (per visualizzare il testo sullo schermo), exit (per uscire da una shell), fg
(per portare in primo piano un comando in esecuzione in background), history
(per vedere un elenco di comandi eseguiti in precedenza), pwd (per elencare il file present
directory di lavoro), impostare (per impostare le opzioni della shell) e digitare (per mostrare la posizione
di un comando).
5. Comando del file system . Questo comando viene memorizzato ed eseguito dal computer
filesystem. (Questi sono i comandi indicati dal valore del PATH
variabile.)

Per scoprire da dove viene preso un particolare comando, puoi usare il comando type.
(Se stai usando una shell diversa da bash, usa invece il comando which.) Ad esempio,
per scoprire dove si trova il comando della shell bash, digita quanto segue:

$ type bash
bash è / bin / bash

Prova queste poche parole con il comando type per vedere altre posizioni di comandi: quali,
caso e ritorno. Se un comando risiede in più posizioni, puoi aggiungere l'opzione -a a
avere tutte le posizioni note del comando stampate. Ad esempio, il tipo di comando -a
ls dovrebbe mostrare un alias e la posizione del filesystem per il comando ls.

75

Pagina 116
Parte II: diventare un Power User Linux

A volte, si esegue un comando e si riceve un messaggio di errore che il comando non è stato trovato o l'autorizzazione per
eseguire il comando è stato negato. Se il comando non è stato trovato, controlla di aver digitato correttamente il comando e quello
si trova nella variabile PATH. Se l'autorizzazione per eseguire il comando è stata negata, il comando potrebbe trovarsi nel PERCORSO
variabile, ma potrebbe non essere eseguibile. Ricorda anche che il caso è importante, quindi digitando CAT o Cat non troverai il gatto
comando.

Se un comando non è nella variabile PATH, puoi utilizzare il comando locate per provare a trovare
esso. Utilizzando la localizzazione, puoi cercare qualsiasi parte del sistema accessibile a te (alcuni
i file sono accessibili solo all'utente root). Ad esempio, se desideri trovare la posizione di
il comando chage, puoi digitare quanto segue:

$ individuare chage
/ usr / bin / chage
/ usr / sbin / lchage
/usr/share/man/fr/man1/chage.1.gz
/usr/share/man/it/man1/chage.1.gz
/usr/share/man/ja/man1/chage.1.gz
/usr/share/man/man1/chage.1.gz
/usr/share/man/man1/lchage.1.gz
/usr/share/man/pl/man1/chage.1.gz
/usr/share/man/ru/man1/chage.1.gz
/usr/share/man/sv/man1/chage.1.gz
/usr/share/man/tr/man1/chage.1.gz

Si noti che locate non solo ha trovato il comando chage, ma ha anche trovato lchage
comando e una varietà di pagine man associate a chage per lingue diverse. Il
Il comando locate guarda in tutto il tuo filesystem, non solo nelle directory che
contenere comandi.

Nei prossimi capitoli imparerai a usare comandi aggiuntivi. Per ora, voglio che tu lo faccia
acquisire familiarità con il funzionamento della shell stessa. Quindi parlo ora delle funzionalità per
richiamo di comandi, completamento di comandi, utilizzo di variabili e creazione di alias.

Richiamo dei comandi utilizzando la cronologia dei comandi


Essere in grado di ripetere un comando eseguito in precedenza in una sessione di shell può essere conveniente.
Ricordare una riga di comando lunga e complessa che hai digitato male può farti risparmiare qualche problema.
Fortunatamente, alcune funzionalità della shell consentono di richiamare le righe di comando precedenti, modificarle
o completare una riga di comando parzialmente digitata.

La cronologia della shell è un elenco dei comandi che hai inserito prima. Utilizzando la cronologia
comando in una shell bash, puoi visualizzare i tuoi comandi precedenti. Quindi utilizzando vari shell

76

Pagina 117

Capitolo 3: Utilizzo della shell

caratteristiche, è possibile richiamare singole righe di comando da tale elenco e modificarle tuttavia
tu per favore.

Il resto di questa sezione descrive come eseguire l'editing dalla riga di comando, come completare le parti
delle righe di comando e come richiamare e lavorare con l'elenco della cronologia.

Modifica dalla riga di comando


Se digiti qualcosa di sbagliato su una riga di comando, la shell bash ti assicura di non farlo
eliminare l'intera riga e ricominciare da capo. Allo stesso modo, puoi richiamare un comando precedente
riga e modificare gli elementi per creare un nuovo comando.

Per impostazione predefinita, la shell bash utilizza la modifica della riga di comando basata sul testo di emacs
editore. (Digita man emacs per leggerlo, se ti interessa.) Se hai familiarità con emacs,
probabilmente conosci già la maggior parte delle sequenze di tasti descritte qui.
Se preferisci il comando vi per modificare le righe di comando della shell, puoi farlo facilmente. Aggiungi quanto segue
riga al file .bashrc nella directory home:
set -o vi
La prossima volta che apri una shell, puoi usare i comandi vi per modificare le tue righe di comando.

3
Per eseguire la modifica, puoi utilizzare una combinazione di tasti di controllo, meta tasti e tasti freccia.
Ad esempio, Ctrl + F significa tenere premuto il tasto Ctrl e digitare f. Alt + F significa tenere premuto il tasto Alt,
e digita f. (Invece del tasto Alt, la tastiera può utilizzare un tasto Meta o il tasto Esc. In un file
Tastiera Windows, puoi usare il tasto Windows.)

Per provare un po 'di modifica dalla riga di comando, digita quanto segue:

$ ls / usr / bin | sort -f | Di meno

Questo comando elenca i contenuti della directory / usr / bin, ordina i contenuti in ordine alfabetico
cal order (indipendentemente dal caso) e convoglia l'output a less. Il comando less visualizza il file
prima pagina dell'output, dopodiché puoi passare attraverso il resto dell'output una riga (premi Invio)
o una pagina (premere la barra spaziatrice) alla volta. Basta premere q quando hai finito. Ora, supponi di te
si desidera modificare / usr / bin in / bin. È possibile utilizzare i seguenti passaggi per modificare il comando:

1. Premere il tasto freccia su ( ↑ ) . Questo mostra il comando più recente dal tuo
storia della shell.
2. Premere Ctrl + A . Questo sposta il cursore all'inizio della riga di comando.

3. Premere Ctrl + F o il tasto freccia destra ( → ) . Ripeti questo comando alcune volte per
posizionare il cursore sotto la prima barra (/).
4. Premere Ctrl + D . Digita questo comando quattro volte per eliminare / usr dalla riga.

5. Premere Invio . Questo esegue la riga di comando.

77

Pagina 118

Parte II: diventare un Power User Linux

Mentre modifichi una riga di comando, in qualsiasi momento puoi digitare caratteri normali per aggiungerli
caratteri nella riga di comando. I caratteri vengono visualizzati nella posizione del cursore del testo.
È possibile utilizzare le frecce destra → e sinistra ← per spostare il cursore da un'estremità all'altra del file
riga di comando. È anche possibile premere i tasti freccia su ↑ e giù ↓ per passare al precedente
comandi nell'elenco della cronologia per selezionare una riga di comando per la modifica. (Vedi il "Command-line
richiama "sezione per i dettagli su come richiamare i comandi dall'elenco della cronologia.)

È possibile utilizzare molte sequenze di tasti per modificare le righe di comando. La Tabella 3.1 elenca le sequenze di tasti
che puoi usare per muoverti nella riga di comando.

TABELLA 3.1 Sequenze di tasti per la navigazione nelle righe di comando

Sequenza di tastiNome e cognome Senso

Ctrl + F Carattere in avanti Vai avanti di un carattere.

Ctrl + B Carattere all'indietro Torna indietro di un carattere.

Alt + F Parola in avanti Vai avanti di una parola.

Alt + B Parola al contrario Torna indietro di una parola.

Ctrl + A Inizio della riga Vai all'inizio della riga corrente.

Ctrl + E Fine della riga Vai alla fine della riga.

Ctrl + L Schermo pulito Cancella lo schermo e lascia una linea nella parte superiore dello schermo.

Le sequenze di tasti nella Tabella 3.2 possono essere utilizzate per modificare le righe di comando.

TABELLA 3.2 Sequenze di tasti per la modifica delle righe di comando

Sequenza di tasti Nome e cognome Senso

Ctrl + D Elimina corrente Elimina il carattere corrente.

Backspace Elimina precedente Elimina il carattere precedente.

Ctrl + T Trasponi carattere Cambia le posizioni dei caratteri attuali e precedenti.

Alt + T Trasponi le parole Cambia le posizioni delle parole attuali e precedenti.

Alt + U Parola maiuscola Cambia la parola corrente in maiuscolo.

Alt + L Parola minuscola Cambia la parola corrente in minuscolo.

Alt + C Mettere in maiuscolo la parola Cambia la parola corrente in una iniziale maiuscola.

Ctrl + V Inserisci un carattere speciale Aggiungi un carattere speciale. Ad esempio, per aggiungere una scheda
carattere, premere Ctrl + V + Tab.

Utilizzare le sequenze di tasti nella Tabella 3.3 per tagliare e incollare il testo su una riga di comando.

78

Pagina 119

Capitolo 3: Utilizzo della shell

TABELLA 3.3 Sequenze di tasti per tagliare e incollare il testo dall'interno


Linee di comando

Sequenza di tasti Nome e cognome Senso

Ctrl + K Taglia la fine della riga Taglia il testo alla fine della riga.

Ctrl + U Taglia l'inizio della riga Taglia il testo all'inizio della riga.

Ctrl + W Taglia la parola precedente Taglia la parola che si trova dietro il cursore.

Alt + D Taglia la parola successiva Taglia la parola che segue il cursore.

Ctrl + Y Incolla il testo recente Incolla il testo tagliato più di recente.

Alt + Y Incolla il testo precedente Ruota indietro per tagliare il testo in precedenza e incollalo.

Ctrl + C Elimina l'intera riga Elimina l'intera riga.

Completamento della riga di comando


Per risparmiare alcune sequenze di tasti, la shell bash offre diversi modi per completare
valori parzialmente digitati. Per tentare di completare un valore, digita i primi caratteri e
premere Tab. Ecco alcuni dei valori che puoi digitare parzialmente da una shell bash:

■ Comando, alias o funzione: se il testo digitato inizia con regular


caratteri, la shell cerca di completare il testo con un comando, alias o 3
nome della funzione.
■ Variabile: se il testo digitato inizia con un segno di dollaro ($), la shell viene completata
il testo con una variabile dalla shell corrente.
■ Nome utente: se il testo digitato inizia con una tilde (~), la shell completa il
testo con un nome utente. Di conseguenza, ~ nomeutente indica la directory home del file
utente denominato.
■ Nome host: se il testo digitato inizia con il simbolo at (@), la shell viene completata
il testo con un nome host preso dal file / etc / hosts.

Per aggiungere nomi host da un file aggiuntivo, è possibile impostare la variabile HOSTFILE sul nome di quel file. Il file deve
essere nello stesso formato di / etc / hosts.

Ecco alcuni esempi di completamento del comando. (Quando vedi <Tab> , significa premere
il tasto Tab sulla tastiera). Digita quanto segue:

$ echo $ OS < Tab >


$ cd ~ ro < Tab >
$ fing < Tab >

79

Pagina 120

Parte II: diventare un Power User Linux


Il primo esempio causa l'espansione di $ OS nella variabile $ OSTYPE. Nel prossimo esempio,
~ ro si espande nella directory home dell'utente root (~ root /). Successivamente, fing si espande in
comando con le dita.

Premendo due volte Tab offre alcune meravigliose possibilità. A volte, diversi possibili comple-
sono disponibili le zioni per la stringa di caratteri immessa. In quei casi, puoi
controlla i possibili modi in cui il testo può essere espanso premendo Tab due volte nel punto in cui tu
voglio fare il completamento.

Quanto segue mostra il risultato che si otterrebbe se si verificasse la presenza di possibili completamenti
su $ P :

$ echo $ P <Tab> <Tab>


$ PATH $ PPID $ PS1 $ PS2 $ PS4 $ PWD
$ echo $ P

In questo caso, ci sono sei possibili variabili che iniziano con $ P. Dopo che le possibilità sono
visualizzato, ritorna la riga di comando originale, pronta per essere completata come preferisci.
Ad esempio, se hai digitato un'altra P e premuto di nuovo Tab, la riga di comando sarebbe
completato con $ PPID (l'unica possibilità unica).

Richiamo dalla riga di comando


Dopo aver digitato una riga di comando, l'intera riga di comando viene salvata nella shell
elenco della cronologia. L'elenco viene memorizzato nella shell corrente finché non si esce dalla shell. Dopo di che,
viene scritto in un file di cronologia, da cui è possibile richiamare qualsiasi comando per eseguirlo nuovamente
la tua prossima sessione. Dopo aver richiamato un comando, puoi modificare la riga di comando, come
descritto in precedenza.

Per visualizzare l'elenco della cronologia, utilizzare il comando cronologia. Digita il comando senza opzioni
o seguito da un numero per elencare molti dei comandi più recenti. Per esempio:

$ storia 8
382 data
383 ls / usr / bin | sort -a | Di Più
384 uomo tipo
385 cd / usr / local / bin
386 uomini in più
387 useradd -m / home / chris -u 101 chris
388 passwd chris
389 storia 8

Un numero precede ogni riga di comando nell'elenco. Puoi richiamare uno di quei comandi
utilizzando un punto esclamativo (!). Tieni presente che quando utilizzi un punto esclamativo, il file
comando viene eseguito alla cieca, senza presentare la possibilità di confermare il comando che stai
referenziamento. Esistono diversi modi per eseguire un comando immediatamente da questo elenco, incluso
il seguente:

80

Pagina 121

Capitolo 3: Utilizzo della shell

■! n: esegue il numero del comando. Sostituisci n con il numero della riga di comando
e quella linea viene eseguita. Ad esempio, ecco come ripetere il comando data mostrato come
comando numero 382 nell'elenco precedente della cronologia:
$ ! 382
dataMerc 29 ottobre 21:30:06 PDT 2014

■ !! - Esegui il comando precedente. Esegue la riga di comando precedente. Ecco come fai
eseguirà immediatamente lo stesso comando di data:
$ !!
dataMerc 29 ottobre 21:30:39 PDT 2014

■ !? corda? —Run comando contenente una stringa. Questo esegue il comando più recente
che contiene una particolare stringa di caratteri. Ad esempio, puoi eseguire la data
comando di nuovo cercando solo una parte di quella riga di comando come segue:
$ !? dat?
dataMerc 29 ottobre 21:32:41 PDT 2014

Invece di eseguire immediatamente una riga di comando della cronologia, puoi richiamare un file
riga e modificalo. È possibile utilizzare i seguenti tasti o combinazioni di tasti per farlo, come mostrato in
Tabella 3.4.

TABELLA 3.4 Tratti di tasto per l'utilizzo della cronologia dei comandi
3
Chiave / e Nome funzione Descrizione

Tasti freccia Passo Premere i tasti freccia su e giù per passare da uno all'altro
(↑ e ↓) riga di comando nell'elenco della cronologia per arrivare a quella che hai
volere. (Ctrl + P e Ctrl + N svolgono le stesse funzioni,
rispettivamente.)

Ctrl + R Incremento inverso Dopo aver premuto questi tasti, inserisci una stringa di ricerca per eseguire un file
ricerca mentale ricerca inversa. Mentre digiti la stringa, un comando corrispondente
appare una riga che puoi eseguire o modificare.

Ctrl + S Avanti incre- Questa è la stessa della funzione precedente ma per forward
ricerca mentale ricerca. (Potrebbe non funzionare in tutti i casi.)

Alt + P Ricerca inversa Dopo aver premuto questi tasti, inserisci una stringa per eseguire il contrario
ricerca. Digita una stringa e premi Invio per vedere la più recente
riga di comando che include quella stringa.

Alt + N Ricerca in avanti Questa è la stessa della funzione precedente ma per forward
ricerca. (Potrebbe non funzionare in tutti i casi.)

Un altro modo per lavorare con l'elenco della cronologia è utilizzare il comando fc. Digita fc seguito
da un numero di riga della cronologia e quella riga di comando viene aperta in un editor di testo (vi per impostazione predefinita;
digitare : wq per salvare ed uscire oppure : q! uscire solo se sei bloccato in vi). Apporta le modifiche
tu vuoi. Quando esci dall'editor, il comando viene eseguito. Puoi anche dare un intervallo di linea

81

Pagina 122

Parte II: diventare un Power User Linux

numeri (ad esempio, fc 100105). Tutti i comandi si aprono nel tuo editor di testo e poi
eseguiti uno dopo l'altro quando esci dall'editor.

Dopo aver chiuso la shell, l'elenco della cronologia viene archiviato nel file .bash_history nel file
directory home. Per impostazione predefinita, vengono memorizzati fino a 1.000 comandi di cronologia.

Alcune persone disabilitano la funzionalità di cronologia per l'utente root impostando HISTFILE su / dev / null o semplicemente lascia
ing HISTSIZE vuoto. Ciò impedisce che le informazioni sulle attività dell'utente root vengano potenzialmente sfruttate. Se
sei un utente amministratore con privilegi di root, potresti considerare di svuotare il tuo file anche all'uscita
per gli stessi motivi. Inoltre, poiché la cronologia della shell viene memorizzata in modo permanente quando la shell viene chiusa correttamente, è possibile impedire
memorizzare la storia di una shell uccidendo una shell. Ad esempio, per terminare una shell con ID processo 1234, digitare kill -9 1234
da qualsiasi shell.

Comandi di collegamento ed espansione


Una caratteristica veramente potente della shell è la capacità di reindirizzare l'input e l'output
di comandi da e verso altri comandi e file. Per consentire l'esecuzione di comandi
insieme, la shell utilizza metacaratteri. Un metacarattere è un carattere digitato che ha
significato speciale per la shell per la connessione di comandi o la richiesta di espansione.

I metacaratteri includono il carattere barra verticale (|), e commerciale (&), punto e virgola (;), parentesi destra
tesi ()), parentesi sinistra ((), segno di minore di (<) e segno di maggiore di (>).
le sezioni descrivono come utilizzare i metacaratteri sulla riga di comando per modificare il modo in cui
i mand si comportano bene.

Tubazioni tra i comandi


Il metacarattere pipe (|) collega l'output di un comando all'input di un altro
comando. Ciò ti consente di avere un comando che lavora su alcuni dati e quindi di avere il successivo
comando gestire i risultati. Ecco un esempio di una riga di comando che include pipe:

$ cat / etc / passwd | ordina | Di meno

Questo comando elenca il contenuto del file / etc / passwd e invia l'output al file
ordina comando. Il comando sort accetta i nomi utente che iniziano ogni riga del file
/ etc / passwd, li ordina alfabeticamente e convoglia l'output al comando less
(per sfogliare l'output).

I pipe sono un'eccellente illustrazione di come è stato creato UNIX, il predecessore di Linux
come sistema operativo costituito da elementi costitutivi. Una pratica standard in UNIX era quella di
connettere le utilità in modi diversi per svolgere diversi lavori. Ad esempio, prima dei giorni
di elaboratori di testi grafici, gli utenti hanno creato file di testo normale che includevano macro in
82

Pagina 123

Capitolo 3: Utilizzo della shell

indicare la formattazione. Per vedere come appariva realmente il documento, avrebbero usato un comando
come il seguente:

$ gunzip </usr/share/man/man1/grep.1.gz | nroff -c -man | Di meno

In questo esempio, il contenuto della pagina man di grep (grep.1.gz) è diretto al file
comando gunzip da decomprimere. L'uscita da gunzip viene convogliata al nroff comp
mand per formattare la pagina man usando la macro manuale (-man). L'uscita viene convogliata a
comando less per visualizzare l'output. Poiché il file visualizzato è in testo normale, tu
avrebbe potuto sostituire un numero qualsiasi di opzioni per lavorare con il testo prima di visualizzarlo.
È possibile ordinare i contenuti, modificare o eliminare parte del contenuto o importare del testo da
altri documenti. La chiave è che, invece di tutte queste funzionalità in un unico programma, tu
ottenere risultati dal piping e dal reindirizzamento di input e output tra più comandi.

Comandi sequenziali
A volte, potresti voler eseguire una sequenza di comandi, con un comando completato
prima che inizi il comando successivo. Puoi farlo digitando diversi comandi sullo stesso
riga di comando e separandoli con punto e virgola (;):

$ date; troff -me verylargedocument | lpr; Data

In questo esempio, stavo formattando un enorme documento e volevo sapere quanto tempo sarebbe durato
prendere. Il primo comando (data) mostrava la data e l'ora prima dell'inizio della formattazione.
Il comando troff ha formattato il documento e quindi inviato l'output alla stampante.
3
Al termine della formattazione, la data e l'ora sono state stampate di nuovo (quindi sapevo come
lungo il comando troff ha impiegato per completare).

Un altro comando utile da aggiungere alla fine di una lunga riga di comando è la posta. Potresti aggiungere
quanto segue alla fine di una riga di comando.

; mail -s "Finito il comando lungo" chris@example.com

Quindi, ad esempio, viene inviato un messaggio di posta all'utente scelto dopo il comando
completa.

Comandi in background
Alcuni comandi possono richiedere del tempo per essere completati. A volte, potresti non voler legare il tuo file
shell in attesa del termine di un comando. In questi casi, puoi eseguire i comandi in formato
lo sfondo utilizzando la e commerciale (&).

I comandi di formattazione del testo (come nroff e troff, descritti in precedenza) sono esempi
di comandi che vengono spesso eseguiti in background per formattare un documento di grandi dimensioni. Anche tu
potrebbe voler creare i propri script di shell che vengono eseguiti in background per controllare
continuamente affinché si verifichino determinati eventi, come il riempimento del disco rigido o utenti particolari
entrando.

83

Pagina 124

Parte II: diventare un Power User Linux

Di seguito è riportato un esempio di un comando eseguito in background:

$ troff -me verylargedocument | lpr &


Non chiudere il guscio fino a quando il processo non è completato o questo termina il processo. Altri modi
per gestire i processi in background e in primo piano sono descritti nel Capitolo 6, "Gestione
Processi in esecuzione. "

Comandi in espansione
Con la sostituzione del comando, è possibile far interpretare l'output di un comando da
shell invece che dal comando stesso. In questo modo, puoi avere lo standard output di un file
comando diventa un argomento per un altro comando. Le due forme di sostituzione del comando
sono $ (comando) e `comando` (apici inversi, non virgolette singole).

Il comando in questo caso può includere opzioni, metacaratteri e argomenti. Il seguente-


ing è un esempio di utilizzo della sostituzione dei comandi:

$ vi $ (trova / home | grep xyzzy)

In questo esempio, la sostituzione del comando viene eseguita prima che venga eseguito il comando vi. Primo,
il comando find parte dalla directory / home e stampa tutti i file e le directory
sotto quel punto nel filesystem. L'output viene reindirizzato al comando grep, che filtra
out tutti i file tranne quelli che includono la stringa xyzzy nel nome del file. Infine, il vi
Il comando apre tutti i nomi di file per la modifica (uno alla volta) che includono xyzzy. (Se corri
questo e non hai familiarità con vi, puoi digitare : q! per uscire dal file.)

Questo particolare esempio è utile se desideri modificare un file di cui conosci il nome ma
non la posizione. Finché la stringa è insolita, puoi trovare e aprire ogni istanza
di un nome di file esistente sotto un punto scelto nel filesystem. (In altre parole, non farlo
usa grep dal filesystem di root o abbinerai e proverai a modificare diverse migliaia di file.)

Espansione delle espressioni aritmetiche


A volte, vuoi passare i risultati aritmetici a un comando. Ci sono due forme tu
può essere utilizzato per espandere un'espressione aritmetica e passarla alla shell: $ [espressione] o
$ (espressione) . Quanto segue è un esempio:

$ echo "Ho $ [2015 - 1957] anni."


Ho 58 anni.

La shell interpreta prima l'espressione aritmetica (2015 - 1957) e poi la passa


informazioni al comando echo. Il comando echo visualizza il testo, con i risultati
dell'aritmetica (58) inserita.

Ecco un esempio dell'altra forma:

$ echo "Ci sono file $ (ls | wc -w) in questa directory."


Ci sono 14 file in questa directory.

84

Pagina 125

Capitolo 3: Utilizzo della shell

Elenca il contenuto della directory corrente (ls) e esegue il comando di conteggio parole su
conta il numero di file trovati (wc -w). Viene riprodotto il numero risultante (14, in questo caso)
indietro con il resto della frase mostrato.

Variabili in espansione
Le variabili che memorizzano le informazioni all'interno della shell possono essere espanse utilizzando il simbolo del dollaro ($)
metacarattere. Quando si espande una variabile di ambiente su una riga di comando, il valore di
la variabile viene stampata al posto del nome della variabile stessa, come segue:

$ ls -l $ BASH
-rwxr-xr-x 1 root root 1012808 8 ottobre 08:53 / bin / bash

L'uso di $ BASH come argomento per ls -l causa un lungo elenco del comando bash
essere stampato.

Utilizzo delle variabili di shell


La shell stessa memorizza le informazioni che possono essere utili alla sessione della shell dell'utente in ciò che sono
chiamate variabili . Esempi di variabili includono $ SHELL (che identifica la shell che sei
using), $ PS1 (che definisce il prompt della shell) e $ MAIL (che identifica la posizione di
la tua casella di posta).
3
Puoi vedere tutte le variabili impostate per la tua shell corrente digitando il comando set. Un sottoinsieme
delle vostre variabili locali vengono chiamate variabili di ambiente . Le variabili d'ambiente sono
variabili che vengono esportate in qualsiasi nuova shell aperta dalla shell corrente. Digita env to
vedi variabili d'ambiente.
Puoi digitare echo $ VALUE , dove VALUE è sostituito dal nome di un particolare ambiente
variabile di ment che vuoi elencare. E perché ci sono sempre più modi per fare qualsiasi cosa
in Linux, puoi anche digitare declare per ottenere un elenco delle variabili di ambiente correnti e
i loro valori insieme a un elenco di funzioni di shell.

Oltre a quelli impostati da te, i file di sistema impostano variabili che memorizzano cose come
posizioni dei file di configurazione, delle cassette postali e delle directory dei percorsi. Possono anche memorizzare valori
per i prompt della shell, la dimensione dell'elenco della cronologia e il tipo di sistema operativo. voi
può fare riferimento al valore di una qualsiasi di queste variabili precedendolo con un segno di dollaro ($) e
posizionandolo ovunque su una riga di comando. Per esempio:

$ echo $ USER
Chris

Questo comando stampa il valore della variabile USER, che contiene il tuo nome utente (chris).
Sostituisci qualsiasi altro valore per USER per stamparne il valore.

85

Pagina 126

Parte II: diventare un Power User Linux

Quando avvii una shell (accedendo tramite una console virtuale o aprendo una finestra di Terminale),
molte variabili d'ambiente sono già impostate. La Tabella 3.5 mostra alcune variabili che lo sono
impostato quando si utilizza una shell bash o può essere impostato dall'utente per l'utilizzo con funzionalità diverse.

TABELLA 3.5 Variabili d'ambiente comuni della shell

Variabile Descrizione

BASH Contiene il percorso completo del comando bash. Di solito è / bin /


bash.

BASH_VERSION Questo è un numero che rappresenta la versione corrente del comando bash.

EUID Questo è il numero ID utente effettivo dell'utente corrente. Viene assegnato quando
la shell si avvia, in base alla voce dell'utente nel file / etc / passwd.

FCEDIT Se impostata, questa variabile indica l'editor di testo utilizzato dal comando fc per modificare
comandi di cronologia. Se questa variabile non è impostata, viene utilizzato il comando vi.

HISTFILE Questa è la posizione del file della cronologia. Di solito si trova in $ HOME /.
bash_history.
HISTFILESIZE Questo è il numero di voci della cronologia che possono essere memorizzate. Dopo questo numero è
raggiunto, i comandi più vecchi vengono scartati. Il valore predefinito è 1000.

HISTCMD Ciò restituisce il numero del comando corrente nell'elenco della cronologia.

CASA Questa è la tua directory home. Ogni volta è la directory di lavoro corrente
accedi o digita il comando cd con qualsiasi opzione.

HOSTTYPE Questo è un valore che descrive l'architettura del computer su cui Linux
il sistema è in esecuzione. Per i PC compatibili con Intel, il valore è i386, i486, i586,
i686, o qualcosa come i386-linux. Per le macchine AMD a 64 bit, il valore è
x86_64.
MAIL Questa è la posizione del file della tua casella di posta. Il file è in genere il tuo nome utente in
la directory / var / spool / mail.

OLDPWD Questa è la directory che era la directory di lavoro prima di passare a


la directory di lavoro corrente.

OSTYPE Questo nome identifica il sistema operativo corrente. Per Fedora Linux, il
Il valore di OSTYPE può essere linux o linux-gnu, a seconda del tipo di shell
tu stai usando. (Bash può essere eseguito anche su altri sistemi operativi.)

SENTIERO Questo è l'elenco separato da due punti delle directory utilizzato per trovare i comandi che
tu digiti. Il valore predefinito per gli utenti regolari varia a seconda della distribuzione
, ma in genere include quanto segue: / bin: / usr / bin: / usr / local /
bin: / usr / bin / X11: / usr / X11R6 / bin: ~ / bin. Devi digitare il pieno
path o un percorso relativo a un comando che desideri eseguire che non si trova nel tuo file
SENTIERO. Per l'utente root, il valore include anche / sbin, / usr / sbin e
/ usr / local / sbin.
PPID Questo è l'ID di processo del comando che ha avviato la shell corrente (per
esempio, la finestra Terminale contenente la shell).

86
Pagina 127

Capitolo 3: Utilizzo della shell

Variabile Descrizione

RICHIESTA_ Questo può essere impostato su un nome di comando che viene eseguito ogni volta prima della shell
COMANDO viene visualizzato il prompt. L'impostazione PROMPT_COMMAND = date elenca la data corrente /
tempo prima che venga visualizzato il prompt.

PS1 Questo imposta il valore del prompt della shell. Ci sono molti elementi che puoi
leggere nel tuo prompt (data, ora, nome utente, nome host e così via).
A volte un comando richiede prompt aggiuntivi, che puoi impostare con
le variabili PS2, PS3 e così via.

PWD Questa è la directory assegnata come directory corrente. Questo valore


cambia ogni volta che si cambia directory utilizzando il comando cd.

CASUALE L'accesso a questa variabile provoca la generazione di un numero casuale. Il


numero è compreso tra 0 e 99999.

SECONDI Questo è il numero di secondi da quando è stata avviata la shell.

SHLVL Questo è il numero di livelli di shell associati alla sessione di shell corrente.
Quando accedi alla shell, SHLVL è 1. Ogni volta che inizi un nuovo bash
comando (ad esempio, usando su per diventare un nuovo utente, o semplicemente
digitando bash), questo numero viene incrementato.

TMOUT Può essere impostato su un numero che rappresenta il numero di secondi della shell
può essere inattivo senza ricevere input. Dopo il numero di secondi è
raggiunto, il guscio esce. Questa funzione di sicurezza lo rende meno probabile per
shell incustodite accessibili a persone non autorizzate. (Questo deve essere
impostato nella shell di login per far sì che effettivamente la shell disconnetta l'utente.) 3

Creazione e utilizzo di alias


Utilizzando il comando alias, è possibile creare efficacemente un collegamento a qualsiasi comando e
opzioni che desideri eseguire in seguito. È possibile aggiungere ed elencare alias con il comando alias.
Considera i seguenti esempi di utilizzo di alias da una shell bash:

$ alias p = 'pwd; ls –CF '


$ alias rm = 'rm -i'

Nel primo esempio, la lettera p è assegnata per eseguire il comando pwd e quindi per eseguire ls
-CF per stampare la directory di lavoro corrente e elencarne il contenuto sotto forma di colonna. Il
il secondo esempio esegue il comando rm con l'opzione -i ogni volta che si digita rm. (Questo è
un alias che viene spesso impostato automaticamente per l'utente root. Invece di rimuovere solo i file, tu
viene richiesto di rimuovere ogni singolo file. Questo ti impedisce di rimuovere automaticamente
ing tutti i file in una directory digitando per errore qualcosa come rm *.)

Mentre sei nella shell, puoi controllare quali alias sono impostati digitando l'alias comp
mand. Se desideri rimuovere un alias, digita unalias . (Ricorda che se l'alias è impostato
in un file di configurazione, verrà impostato di nuovo quando aprirai un'altra shell.)

87

Pagina 128

Parte II: diventare un Power User Linux

Uscita dal guscio


Per uscire dalla shell quando hai finito, digita exit o premi Ctrl + D. Se vai alla shell
da una finestra di Terminale e stai usando la shell originale da quella finestra, uscendo
fa sì che la finestra del terminale si chiuda. Se sei su una console virtuale, la shell esce e
ti riporta a una richiesta di accesso.

Se hai più shell aperte dalla stessa sessione di shell, l'uscita da una shell ritorna semplicemente
alla shell che ha lanciato la shell corrente. Ad esempio, il comando su apre un file
shell come nuovo utente. L'uscita da quella shell ti riporta semplicemente alla shell originale.

Creazione del tuo ambiente shell


Puoi regolare la tua shell per aiutarti a lavorare in modo più efficiente. Puoi impostare gli alias da creare
scorciatoie alle tue righe di comando preferite e variabili d'ambiente per memorizzare bit di informazioni
mazione. Aggiungendo queste impostazioni ai file di configurazione della shell, puoi avere le impostazioni
disponibile ogni volta che apri una shell.

Configurazione della tua shell


Diversi file di configurazione supportano il comportamento della shell. Alcuni dei file vengono eseguiti
per ogni utente e ogni shell, mentre gli altri sono specifici per l'utente che crea il
file di figurazione. La Tabella 3.6 mostra i file che interessano chiunque utilizzi la shell bash
in Linux. (Notare l'uso di ~ nei nomi dei file per indicare che il file si trova in ciascuno
directory home dell'utente.)

TABELLA 3.6 File di configurazione Bash

File Descrizione

/ etc / profile Questo imposta le informazioni sull'ambiente utente per ogni utente. Viene eseguito
al primo accesso. Questo file fornisce inoltre i valori per il percorso
per impostare variabili di ambiente per cose come la posizione del tuo
casella di posta e la dimensione dei file della cronologia. Infine, / etc / profile si raccoglie
impostazioni della shell dai file di configurazione nella directory /etc/profile.d.

/ etc / bashrc Questo viene eseguito per ogni utente che esegue la shell bash, ogni volta che un bash
shell è aperto. Imposta il prompt predefinito e può aggiungerne uno o più
alias. I valori in questo file possono essere sovrascritti dalle informazioni in ciascuno
file ~ / .bashrc dell'utente.

~ / .bash_profile Viene utilizzato da ogni utente per inserire informazioni specifiche per il proprio o
il suo uso della conchiglia. Viene eseguito una sola volta, quando l'utente effettua il login. Da
predefinito, imposta alcune variabili di ambiente ed esegue l'utente
File .bashrc. Questo è un buon posto per aggiungere variabili d'ambiente
perché, una volta impostati, vengono ereditati dalle future shell.

88

Pagina 129

Capitolo 3: Utilizzo della shell

File Descrizione

~ / .bashrc Questo contiene le informazioni specifiche per le shell bash. È


leggi quando accedi e anche ogni volta che apri una nuova shell bash.
Questa è la posizione migliore per aggiungere alias in modo che la shell li raccolga.

~ / .bash_logout Viene eseguito ogni volta che ti disconnetti (esci dall'ultima shell bash). Per impostazione predefinita,
semplicemente cancella lo schermo.

Per modificare i file / etc / profile o / etc / bashrc, devi essere l'utente root. Gli utenti possono
modificare le informazioni in $ HOME / .bash_profile, $ HOME / .bashrc e $ HOME /.
bash_logout nelle loro directory home.

Fino a quando non impari a usare l'editor vi, descritto nel Capitolo 5, "Lavorare con i file di testo", tu
può utilizzare un semplice editor chiamato nano per modificare file di testo semplice. Ad esempio, digita quanto segue
per modificare e aggiungere elementi al tuo file $ HOME / .bashrc:

$ nano $ HOME / .bashrc

Con il file aperto in nano, sposta il cursore in basso nella parte inferiore del file (usando il pulsante down
tasto freccia). Digita la riga che desideri (ad esempio, potresti digitare alias d = 'date +% D' ).
Per salvare il file, premi Ctrl + O (la lettera O); per uscire, premi Ctrl + X. La prossima volta che accedi
oppure apri una nuova shell, puoi usare il nuovo alias (in questo caso, digita semplicemente d ). Per avere il nuovo
informazioni appena aggiunte al file disponibile dalla shell corrente, digitare quanto segue:
3
$ source $ HOME / .bashrc

Le sezioni seguenti forniscono idee sugli elementi da aggiungere ai file di configurazione della shell. Nel
nella maggior parte dei casi, aggiungi questi valori al file .bashrc nella tua home directory. Tuttavia, se
amministri un sistema, potresti voler impostare alcuni di questi valori come valori predefiniti per tutti i tuoi file
Utenti del sistema Linux.

Impostazione del prompt


Il tuo prompt è costituito da una serie di caratteri che appaiono ogni volta che la shell è pronta
accettare un comando. La variabile d'ambiente PS1 imposta cosa contiene e cosa è il prompt
con cosa interagisci la maggior parte del tempo. Se la tua shell richiede un input aggiuntivo, utilizza l'estensione
valori di PS2, PS3 e PS4.

Quando il tuo sistema Linux è installato, spesso un prompt è impostato per contenere più di un semplice file
segno di dollaro o segno di cancelletto. Ad esempio, in Fedora o Red Hat Enterprise Linux, il tuo prompt
è impostato per includere le seguenti informazioni: nome utente, nome host e base
nome della directory di lavoro corrente. Questa informazione è racchiusa tra parentesi e
seguito da un segno di dollaro (per utenti regolari) o da un segno di cancelletto (per l'utente root). Il seguente-
ing è un esempio di quel prompt:

[chris @ myhost bin] $

89

Pagina 130

Parte II: diventare un Power User Linux

Se si modificano le directory, il nome del contenitore cambierà nel nome della nuova directory.
Allo stesso modo, se dovessi accedere come un utente diverso o su un host diverso, quelle informazioni
Cambierebbe.

È possibile utilizzare diversi caratteri speciali (indicati aggiungendo una barra rovesciata a una varietà di
lettere) per includere informazioni diverse nel prompt. È possibile utilizzare caratteri speciali
visualizzare il numero del terminale, la data e l'ora, nonché altre informazioni
zione. La Tabella 3.7 fornisce alcuni esempi (puoi trovare ulteriori informazioni sulla pagina man di bash).

Se stai impostando temporaneamente il tuo prompt digitando nella shell, dovresti mettere il valore di PS1 tra virgolette. Per esempio,
potresti digitare export PS1 = "[\ t \ w] \ $" per vedere un prompt simile a questo: [20:26:32 / var / spool] $.

TABELLA 3.7 Caratteri per aggiungere informazioni al prompt di bash

Speciale
Carattere Descrizione

\! Questo mostra il numero della cronologia dei comandi corrente. Questo include tutti i precedenti comp
ordini memorizzati per il tuo nome utente.

\# Questo mostra il numero di comando del comando corrente. Questo include solo il
comandi per la shell attiva.

\$ Questo mostra il prompt utente ($) o il prompt root (#), a seconda dell'utente che sei.

\W Questo mostra solo il nome di base della directory di lavoro corrente. Ad esempio, se l'attuale
la directory di lavoro di affitto era / var / spool / mail, questo valore appare semplicemente come posta.

\[ Questo precede una sequenza di caratteri non stampabili. Questo può essere usato per aggiungere un file
sequenza di controllo del terminale nel prompt per cose come cambiare i colori, aggiungere-
effetti di ammiccamento o rendere i caratteri in grassetto. (Il tuo terminale determina l'esatto
sequenze disponibili.)

\] Segue una sequenza di caratteri non stampabili.

\\ Questo mostra una barra rovesciata.

\d Visualizza il nome del giorno, il mese e il numero del giorno della data corrente, ad esempio
ple, sabato 23 gennaio.

\h Questo mostra il nome host del computer che esegue la shell.

\n Ciò causa il verificarsi di una nuova riga.

\ nnn Questo mostra il carattere che si riferisce al numero ottale che sostituisce nnn.

\S Visualizza il nome della shell corrente. Per la shell bash, il valore sarebbe bash.

\t Stampa l'ora corrente in ore, minuti e secondi, ad esempio 10:14:39.

\u Questo stampa il tuo nome utente corrente.

\w Visualizza il percorso completo della directory di lavoro corrente.

90
Pagina 131

Capitolo 3: Utilizzo della shell

Per rendere permanente una modifica al tuo prompt, aggiungi il valore di PS1 al tuo file .bashrc
nella tua home directory (assumendo che tu stia usando la shell bash). Potrebbe già esserci
un valore PS1 in quel file che puoi modificare. Fare riferimento al Bash Prompt HOWTO (http: //
www.tldp.org/HOWTO/Bash-Prompt-HOWTO) per informazioni sulla modifica dei colori, comp
mands e altre funzionalità del prompt della shell bash.

Aggiunta di variabili d'ambiente


Potresti prendere in considerazione l'aggiunta di alcune variabili di ambiente al tuo file .bashrc.
Questi possono aiutare a rendere il lavoro con la shell più efficiente ed efficace:

■ TMOUT: imposta per quanto tempo la shell può essere inattiva prima che si basi automaticamente
esce. Il valore è il numero di secondi per i quali la shell non ha ricevuto
ingresso. Questa può essere una bella funzione di sicurezza, nel caso in cui lasci la scrivania mentre sei
ancora connesso a Linux. Per evitare di essere disconnesso mentre stai lavorando, puoi
desidera impostare il valore su qualcosa come TMOUT = 1800 (per consentire 30 minuti di inattività
tempo). È possibile utilizzare qualsiasi sessione di terminale per chiudere la shell corrente dopo un numero impostato
ber di secondi, ad esempio TMOUT = 30.
■ PATH: come descritto in precedenza, la variabile PATH imposta le directory che sono
cercato i comandi che usi. Se usi spesso directory di comandi che sono
non nel tuo percorso, puoi aggiungerli in modo permanente. Per fare ciò, aggiungi una variabile PATH
al tuo file .bashrc. Ad esempio, per aggiungere una directory chiamata / getstuff / bin, aggiungi
il seguente: 3
PERCORSO = $ PERCORSO: / getstuff / bin; esporta PATH

Questo esempio legge prima tutte le directory dei percorsi correnti nel nuovo PATH ($ PATH),
aggiunge la directory / getstuff / bin, quindi esporta il nuovo PATH.

Alcune persone aggiungono la directory corrente al loro PERCORSO aggiungendo una directory identificata semplicemente come un punto (.) Come segue:
PERCORSO =.: $ PERCORSO; esporta PATH

Ciò consente di eseguire comandi nella directory corrente prima di valutare qualsiasi altro comando nel percorso (quale
le persone possono essere abituate se hanno usato DOS). Tuttavia, il rischio per la sicurezza con questa procedura è che potresti trovarti in un file
directory che contiene un comando che non si intende eseguire da quella directory. Ad esempio, una persona maligna
potrebbe mettere un comando ls in una directory che, invece di elencare il contenuto della tua directory, fa qualcosa di devi-
ous. Per questo motivo, la pratica di aggiungere il punto al percorso è altamente sconsigliata.

■ QUALUNQUE - Puoi creare le tue variabili d'ambiente per fornire scorciatoie in


il vostro lavoro. Scegli un nome che non viene utilizzato e assegnagli un valore utile.
Ad esempio, se lavori molto con i file in / work / time / files / info /
directory memo, è possibile impostare la seguente variabile:
M = / lavoro / ora / file / info / memo; esporta M

91

Pagina 132

Parte II: diventare un Power User Linux

Puoi renderla la tua directory corrente digitando cd $ M. Potresti eseguire un programma


gram da quella directory chiamata hotdog digitando $ M / hotdog . Potresti modificare un file
da lì chiamato bun digitando vi $ M / bun .

Ottenere informazioni sui comandi


Quando inizi a usare la shell per la prima volta, può essere intimidatorio. Tutto quello che vedi è un prompt. Come faccio
sai quali comandi sono disponibili, quali opzioni usano o come usare avanzate
Caratteristiche? Fortunatamente, è disponibile molto aiuto. Ecco alcuni posti in cui puoi cercare di integrare
menziona ciò che impari in questo capitolo:

■ Controllare il PERCORSO . Digita echo $ PATH . Viene visualizzato un elenco delle directory che contengono
comandi immediatamente accessibili. Elenco dei contenuti di quelli
directory mostra la maggior parte dei comandi Linux standard. Per esempio:
$ ls / bin

arch dd fusermount loadkeys mv rnano

awk df gawk login nano rpm

nome base dmesg gettext ls netstat rvi

bash dnsdomainname grep lsblk nice rview

cat nome dominio gtar lscgroup nisdomainname sed

chgrp echo gunzip lssubsys ping setfont

chmod ed posta gzip ping6 setserial

chown egrep nome host mailx 0ps sh

cp env ipcalc mkdir pwd dormire

cpio ex kbd_mode mknod readlink ordinare

csh false keyctl mktemp rosso stty

tagliare fgrep uccidere più redhat_lsb_init su

trattino trova link mount rm sincronizzazione

date findmnt ln mountpoint rmdir catrame

■ Utilizzare il comando della guida . Alcuni comandi sono incorporati nella shell, quindi lo fanno
non vengono visualizzati in una directory. Il comando help elenca questi comandi e mostra

92

Pagina 133

Capitolo 3: Utilizzo della shell

opzioni disponibili con ciascuno di essi. (Digita help | less per sfogliare il file
list.) Per informazioni su un particolare comando integrato, digitare help command , replacement
comando con il nome che ti interessa. Il comando help funziona con il
bash shell solo.
■ Utilizzare --help con il comando . Molti comandi includono un'opzione --help che
è possibile utilizzare per ottenere informazioni su come viene utilizzato il comando. Ad esempio, se
digiti data --help | meno , l'output mostra non solo le opzioni, ma anche il tempo
formati che puoi usare con il comando date. Altri comandi usano semplicemente un –h
opzione, come fdisk -h.
■ Utilizzare il comando info . Il comando info è un altro strumento per visualizzare le informazioni
mazione sui comandi dalla shell. Il comando info può spostarsi tra un file
gerarchia di nodi per trovare informazioni sui comandi e altri elementi. Non tutto
comandi hanno informazioni disponibili nel database delle informazioni, ma a volte di più
le informazioni possono essere trovate lì che su una pagina man.
■ Utilizzare il comando man . Per saperne di più su un particolare comando, digita man
comando . (Sostituisci comando con il nome del comando che desideri.) Una descrizione di
il comando e le sue opzioni vengono visualizzati sullo schermo.

Le pagine man sono il mezzo più comune per ottenere informazioni sui comandi, così come
altri componenti di base di un sistema Linux. Ogni pagina man rientra in una delle categorie
elencati nella tabella 3.8. Come utente normale, sarai più interessato alle pagine man nella sezione 1.
In qualità di amministratore di sistema, sarai interessato anche alle sezioni 5 e 8 e occasionalmente 3
sezione 4. I programmatori saranno interessati alle pagine man della sezione 2 e 3.

TABELLA 3.8 Sezioni pagina manuale

Sezione
Numero Nome sezione Descrizione

1 Comandi utente Comandi che possono essere eseguiti dalla shell da un utente normale
(in genere non è necessario alcun privilegio amministrativo)

2 Chiamate di sistema Funzioni di programmazione utilizzate all'interno di un'applicazione per effettuare chiamate
al kernel

3 Libreria C. Funzioni di programmazione che forniscono interfacce a specifiche


Funzioni librerie di programmazione (come quelle per alcuni file
interfacce o altre librerie che operano nello spazio utente)
4 Dispositivi e I nodi del file system che rappresentano i dispositivi hardware (come
File speciali terminali o unità CD) o dispositivi software (come random
generatori di numeri)

5 Formati di file e Tipi di file (come file grafici o di elaborazione testi) o


Convegni file di configurazione specifici (come passwd o file di gruppo)

Continua

93

Pagina 134

Parte II: diventare un Power User Linux

TABELLA 3.8 (continua)

Sezione
Numero Nome sezione Descrizione

6 Giochi Giochi disponibili sul sistema

7 Miscellanea Panoramica di argomenti come protocolli, filesystem, carattere


fissare degli standard e così via

8 Sistema Comandi che richiedono root o altri privilegi amministrativi


Amministrazione usare
Strumenti e
Daemons

Le opzioni del comando man consentono di cercare nel database delle pagine man o di visualizzare man
pagine sullo schermo. Ecco alcuni esempi di comandi e opzioni man:

$ man -k passwd
...
passwd (1) - aggiorna i token di autenticazione dell'utente
passwd (5) - file di password
$ man passwd
$ man 5 passwd

Usando l'opzione -k, puoi cercare il nome e le sezioni di riepilogo di tutte le pagine man
installato nel sistema. Circa una dozzina di pagine man includono "passwd" nel nome o
descrizione di un comando. Diciamo che le due pagine di manuale che mi interessano sono le
comando passwd (nella sezione 1 delle pagine man) e il file passwd (nella sezione 5) man
pagine. Poiché solo digitando man passwd viene visualizzata la pagina della sezione 1, ho bisogno di farlo esplicitamente
richiedi la pagina man della sezione 5 se voglio vederla invece ( man 5 passwd ).

Mentre stai visualizzando una pagina man, puoi visualizzare diverse parti del file usando Page
Tasti Giù e Pagina su (per spostare una pagina alla volta). Usa il tasto Invio o su e giù
frecce per spostare una linea alla volta. Premere la barra ( / ) e digitare un termine per cercare il file
documento per quel termine. Premere n per ripetere la ricerca in avanti o N per ripetere la ricerca
indietro. Per uscire dalla pagina man, digita q .

Sommario
Per diventare un utente Linux esperto, devi essere in grado di utilizzare la shell per digitare i comandi. Questo
il capitolo si concentra sulla shell bash, che è quella più comunemente usata con Linux
sistemi. In questo capitolo hai imparato come sono strutturati i comandi e quanti comandi speciali
vengono utilizzate funzionalità quali variabili, completamento del comando e alias.

Il prossimo capitolo descrive come spostarsi nel filesystem Linux dalla shell
riga di comando.

94

Pagina 135
Capitolo 3: Utilizzo della shell

Esercizi
Usa questi esercizi per testare la tua conoscenza dell'uso della shell. Questi compiti presumono che tu sia
eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività funzionino su altri
Anche sistemi Linux). Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B.
(sebbene in Linux ci siano spesso diversi modi per completare un'attività).

1. Dal desktop, passa alla seconda console virtuale e accedi con il tuo utente
account. Esegui alcuni comandi. Quindi esci dalla shell e torna al desktop.

2. Aprire una finestra di Terminale e modificare il colore del carattere in rosso e lo sfondo
al giallo.

3. Trova la posizione del comando mount e la pagina man di tracepath.

4. Digitare i seguenti tre comandi, quindi richiamare e modificare quei comandi


come descritto:
$ cat / etc / passwd
$ ls $ HOME
$ date

■ Utilizzare la funzione di richiamo della riga di comando per richiamare il comando cat e modificare /
etc / passwd in / etc / group.
■ Richiama il comando ls, determina come elencare i file in base al tempo (usando man
page) e aggiungi tale opzione alla riga di comando ls $ HOME. 3
■ Aggiungere indicatori di formato al comando data per visualizzare l'output della data come
mese / giorno / anno .

5. Eseguire il seguente comando, digitando il minor numero di caratteri possibile (utilizzando tab
completamento):
nome base / usr / share / doc /.

6. Utilizzare il comando cat per elencare il contenuto del file e della pipe / etc / services
quei contenuti al comando less in modo da poterlo sfogliare (premere q per uscire
quando hai finito).
7. Eseguire il comando date in modo tale che l'output da quel comando
produce il giorno, il mese, la data e l'anno correnti. Fallo leggere in un altro
riga di comando, risultando in un testo che appare come il seguente (la tua data, di
certo, sarà diverso): oggi è giovedì 10 dicembre 2015.
8. Utilizzando le variabili, scopri quali sono il tuo nome host, nome utente, shell e home directory-
sono attualmente impostate su.

9. Creare un alias chiamato mypass che visualizzi il contenuto del file / etc / passwd
sullo schermo in modo tale che sia disponibile ogni volta che accedi o apri un file
nuova shell dal tuo account utente.

10. Visualizzare la pagina man per la chiamata di sistema mount.

95

Pagina 137
136

CAPITOLO

Spostarsi nel filesystem


4
IN QUESTO CAPITOLO
Imparare a conoscere il filesystem Linux

Elenco degli attributi di file e directory

Creazione di file e directory

Elenco e modifica di autorizzazioni e proprietà

Fare copie e spostare file


Il In effetti, una delle proprietà che definiscono i sistemi UNIX su cui si basa Linux è quella
quasi tutto ciò di cui hai bisogno per identificare sul tuo sistema (dati, comandi, collegamenti simbolici,
filesystem Linux è la struttura in cui sono archiviate tutte le informazioni sul tuo computer.
dispositivi e directory) è rappresentato da elementi nei filesystem. Sapere dove sono le cose e
capire come aggirare il filesystem dalla shell sono competenze critiche in Linux.

In Linux, i file sono organizzati all'interno di una gerarchia di directory. Ogni directory può contenere file, come
così come altre directory. Puoi fare riferimento a qualsiasi file o directory utilizzando un percorso completo (ad esempio,
/home/joe/myfile.txt) o un percorso relativo (ad esempio, se / home / joe fosse il tuo
directory, potresti semplicemente fare riferimento al file come myfile.txt).

Se dovessi mappare i file e le directory in Linux, sembrerebbe un albero capovolto.


In alto c'è la directory root (da non confondere con l'utente root), che è rappresentata da un file
singola barra (/). Di seguito è riportato un insieme di directory comuni nel sistema Linux, come bin, dev,
home, lib e tmp, solo per citarne alcuni. Ciascuna di queste directory, così come le directory aggiunte al file
directory principale, può contenere sottodirectory.

La Figura 4.1 mostra come il filesystem Linux è organizzato come una gerarchia. Per dimostrare come
le directory sono connesse, la figura mostra una directory / home che contiene una sottodirectory per il file
utente joe. All'interno della directory joe ci sono Desktop, Documenti e altre sottodirectory. Per
fare riferimento a un file chiamato memo1.doc nella directory dei memo, è possibile digitare il percorso completo di / home / joe /
Documents / memo / memo1.doc. Se la directory corrente è / home / joe / Documents / memos,
fare riferimento al file semplicemente come memo1.doc.

97

Pagina 138

Parte II: diventare un Power User Linux

FIGURA 4.1

Il filesystem Linux è organizzato come una gerarchia di directory.

bidone dev eccetera lib misc optare radice usr

avvio casa media mnt proc sbin tmp var

Joe

Documenti desktop Download Immagini musicali

promemoria piani progetti

memo1.doc

Alcune di queste directory Linux potrebbero interessarti:

■/ bin: contiene i comandi utente Linux comuni, come ls, sort, date e chmod.
■/ boot: contiene il kernel Linux avviabile e i file di configurazione del caricatore di avvio (GRUB).
■/ dev: contiene i file che rappresentano i punti di accesso ai dispositivi sui sistemi. Questi
include dispositivi terminali (tty *), floppy disk (fd *), dischi rigidi (hd * o sd *), RAM
(ram *) e CD-ROM (cd *). Gli utenti possono accedere a questi dispositivi direttamente tramite questi
file del dispositivo; tuttavia, le applicazioni spesso nascondono i nomi effettivi dei dispositivi agli utenti finali.
■/ etc: contiene i file di configurazione amministrativa. La maggior parte di questi file sono in chiaro
file che possono essere modificati con qualsiasi editor di testo se l'utente dispone dell'autorizzazione appropriata.
■/ home: contiene le directory assegnate a ogni utente normale con un account di accesso.
(L'utente root è un'eccezione, che utilizza / root come sua directory home.)
■/ media: fornisce una posizione standard per i dispositivi di montaggio automatico (supporto rimovibile
in particolare). Se il supporto ha un nome di volume, tale nome viene generalmente utilizzato come
il punto di montaggio. Ad esempio, un'unità USB con un nome di volume di myusb sarebbe
montato su / media / myusb.
■/ lib: contiene le librerie condivise necessarie alle applicazioni in / bin e / sbin per
avvia il sistema.
■/ mnt: un punto di montaggio comune per molti dispositivi prima che venisse soppiantato dallo standard
directory dard / media. Alcuni sistemi Linux avviabili usano ancora questa directory per il montaggio
partizioni del disco rigido e filesystem remoti. Molte persone usano ancora questa directory per
montare temporaneamente filesystem locali o remoti che non sono montati permanentemente.
■/ misc: una directory talvolta utilizzata per il montaggio automatico dei file system su richiesta.
■/ opt: struttura della directory disponibile per archiviare il software applicativo aggiuntivo.

98

Pagina 139

Capitolo 4: Spostarsi nel filesystem

■/ proc: contiene informazioni sulle risorse di sistema.


■/ root: rappresenta la directory home dell'utente root. La home directory di root
non risiede sotto / casa per motivi di sicurezza.
■/ sbin: contiene comandi amministrativi e processi daemon.
■/ tmp: contiene i file temporanei utilizzati dalle applicazioni.
■/ usr: contiene documentazione utente, giochi, file grafici (X11), librerie (lib),
e una varietà di altri comandi e file che non sono necessari durante l'avvio
processi. La directory / usr è destinata ai file che non cambiano dopo l'installazione
(in teoria, / usr potrebbe essere montato in sola lettura).
■/ var: contiene directory di dati utilizzate da varie applicazioni. In particolare,
qui è dove metteresti i file che condividi come server FTP (/ var / ftp) o un file
server web (/ var / www). Contiene anche tutti i file di registro di sistema (/ var / log) e lo spool
file in / var / spool (come mail, cups e news). La directory / var contiene
directory e file che dovrebbero cambiare spesso. Sui computer server, lo è
common per creare la directory / var come filesystem separato, utilizzando un filesystem
tipo che può essere facilmente espanso.

I filesystem nei sistemi operativi DOS e Microsoft Windows differiscono dal file di Linux
struttura, come spiega la barra laterale "File system Linux e file system basati su Windows".

File system Linux rispetto a file system basati su Windows


Sebbene simile in molti modi, il filesystem Linux presenta alcune notevoli differenze rispetto ai filesystem usati
nei sistemi operativi MS-DOS e Windows. Eccone alcuni:

■ Nei file system MS-DOS e Windows, le lettere di unità rappresentano diversi dispositivi di archiviazione (per
esempio, A: è un'unità floppy e C: è un disco rigido). In Linux, tutti i dispositivi di archiviazione sono collegati
alla gerarchia del filesystem. Quindi il fatto che tutto / usr possa essere su un disco rigido separato o quello
/ mnt / remote1 è un filesystem di un altro computer invisibile all'utente.
■ Le barre, anziché le barre rovesciate, vengono utilizzate per separare i nomi delle directory in Linux. Così 4
C: \ home \ joe in un sistema Microsoft è / home / joe in un sistema Linux.
■I nomi dei file hanno quasi sempre suffissi in DOS (come .txt per file di testo o .doc per
file di elaborazione testi). Anche se a volte puoi usare quella convenzione in Linux, tre caratteri
i suffissi non hanno alcun significato richiesto in Linux. Possono essere utili per identificare un tipo di file.
Molte applicazioni Linux e ambienti desktop utilizzano suffissi di file per determinare il contenuto
di un file. In Linux, tuttavia, le estensioni dei comandi DOS come .com, .exe e .bat non lo fanno
significa necessariamente un eseguibile. (I flag di autorizzazione rendono eseguibili i file Linux.)

■ Ogni file e directory in un sistema Linux dispone di autorizzazioni e proprietà ad esso associati.
La sicurezza varia tra i sistemi Microsoft. Perché DOS e Microsoft Windows hanno iniziato come
sistemi monoutente, la proprietà dei file non era incorporata in quei sistemi quando sono stati progettati.
Le versioni successive hanno aggiunto funzionalità come attributi di file e cartelle per risolvere questo problema.

99

Pagina 140

Parte II: diventare un Power User Linux


Utilizzo dei comandi di base del file system
Voglio presentarti alcuni semplici comandi per aggirare il filesystem su
iniziare. Se vuoi seguire, accedi e apri una shell. Quando accedi a un file Linux
sistema e apri una shell, ti trovi nella tua directory home. In Linux, la maggior parte dei file
che salvi e con cui lavori sarà probabilmente in quella directory o sottodirectory che crei.
La Tabella 4.1 mostra i comandi per creare e utilizzare file e directory.

TABELLA 4.1 Comandi per creare e utilizzare file

Comando Risultato

CD Passa a un'altra directory

pwd Stampa il nome della directory di lavoro corrente (o presente)

mkdir Crea una directory

chmod Modifica l'autorizzazione su un file o una directory

ls Elenca il contenuto di una directory

Uno dei comandi più basilari che usi dalla shell è cd. È possibile utilizzare il comando cd
senza opzioni (per portarti alla tua directory home) o con percorsi completi o relativi. Prendere in considerazione
i seguenti comandi:

$ cd / usr / share /
$ pwd
/ usr / share
$ cd doc
/ usr / share / doc
$ cd
$ pwd
/ home / chris

L'opzione / usr / share rappresenta il percorso assoluto di una directory sul sistema. Perché
inizia con una barra (/), questo percorso dice alla shell di partire dalla radice del filesystem e
ti porta alla directory di condivisione che esiste nella directory usr. L'opzione doc per il cd
comando ha detto di cercare una directory chiamata doc che è relativa alla directory corrente. Così
che ha reso / usr / share / doc la tua directory corrente.

Dopodiché, digitando cd da solo, si torna alla directory home. Se mai te lo chiedi


dove ti trovi nel filesystem, il comando pwd può aiutarti. Eccone alcuni altri
interessanti opzioni di comando cd:

$ cd ~
$ pwd
/ home / chris
$ cd ~ / Musica

100

Pagina 141

Capitolo 4: Spostarsi nel filesystem

$ pwd
/ home / chris / Musica
$ cd ../../../usr
$ pwd
/ usr

La tilde (~) rappresenta la tua directory home. Quindi cd ~ ti porta lì. Puoi usare il file
tilde per fare riferimento anche alle directory relative alla tua home directory, come / home / chris /
Musica con ~ / Musica. Digitando un nome come opzione si accede a una directory sotto il file
directory corrente, ma puoi usare due punti (..) per andare a una directory sopra quella corrente
directory. L'esempio mostrato ti porta su tre livelli di directory (a /), quindi prende
nella directory / usr.

I seguenti passaggi ti guidano attraverso il processo di creazione delle directory all'interno della tua home
directory e spostarsi tra le directory, con un accenno all'impostazione del file appropriato
permessi:

1. Vai alla tua home directory. Per fare ciò, digita semplicemente cd in una shell e premi
Accedere. (Per altri modi di fare riferimento alla directory home, vedere la sezione "Identificazione
"Directory".)
2. Per assicurarti di essere nella tua directory home, digita pwd . Quando lo faccio, ottengo
la seguente risposta (la tua rifletterà la tua directory home):
$ pwd
/ home / joe
3. Crea una nuova directory chiamata test nella tua home directory, come segue:
$ mkdir test

4. Verifica le autorizzazioni della directory:


$ ls -ld test
drwxr-xr-x 2 vendite joe 1024 24 gennaio 12:17 test

Questo elenco mostra che test è una directory (d). La d è seguita dai permessi
(rwxr-xr-x), illustrati più avanti nella sezione "Informazioni sui permessi dei file 4
e proprietà ". Il resto delle informazioni indica il proprietario (joe),
il gruppo (vendite) e la data in cui i file nella directory erano più recenti
modificato (24 gennaio alle 12:17 pm).

In Fedora e Red Hat Enterprise Linux, quando aggiungi un nuovo utente, l'utente viene assegnato a un gruppo con lo stesso nome
per impostazione predefinita. Ad esempio, nel testo precedente, l'utente joe sarebbe stato assegnato al gruppo joe. Questo approccio a
l'assegnazione di gruppi viene definita schema del gruppo privato dell'utente.

Per ora, digita quanto segue:


$ chmod 700 test

101

Pagina 142

Parte II: diventare un Power User Linux

Questo passaggio modifica le autorizzazioni della directory per darti accesso completo e
tutti gli altri non hanno accesso. (Le nuove autorizzazioni dovrebbero essere rwx ------.)

5. Rendi la directory di prova la tua directory corrente come segue:


$ cd test
$ pwd
/ home / joe / test

Se hai seguito, a questo punto una sottodirectory della tua home directory chiamata test è
la directory di lavoro corrente. È possibile creare file e directory nella directory di test
insieme alle descrizioni nel resto di questo capitolo.

Utilizzo di metacaratteri e operatori


Sia che tu stia elencando, spostando, copiando, rimuovendo o agendo in altro modo sui file nel tuo file
Il sistema Linux, alcuni caratteri speciali, indicati come metacaratteri e operatori, aiutano
per lavorare con i file in modo più efficiente. I metacaratteri possono aiutarti ad abbinare uno o più file
senza digitare completamente ogni nome di file. Gli operatori consentono di dirigere le informazioni da
un comando o un file in un altro comando o file.

Utilizzo di metacaratteri di corrispondenza dei file


Per risparmiare alcune sequenze di tasti e per consentirti di fare riferimento facilmente a un gruppo di file, il file bash
shell ti permette di usare metacaratteri. Ogni volta che è necessario fare riferimento a un file o una directory, come
per elencarlo, aprirlo o rimuoverlo, puoi usare i metacaratteri per abbinare i file che desideri.
Di seguito sono riportati alcuni metacaratteri utili per la corrispondenza dei nomi dei file:

■ *: corrisponde a qualsiasi numero di caratteri.


■ ?: Corrisponde a qualsiasi carattere.
■ [...] - Corrisponde a uno qualsiasi dei caratteri tra parentesi, che può
includere un intervallo di lettere o numeri separati da trattini.

Prova alcuni di questi metacaratteri di corrispondenza dei file andando prima in una directory vuota (come
come la directory di test descritta nella sezione precedente) e creando alcuni file vuoti:

$ touch mela banana uva pompelmo anguria

Il comando touch crea file vuoti. I comandi che seguono ti mostrano come usare
metacaratteri della shell con il comando ls per abbinare i nomi dei file. Prova la seguente combinazione
chiede di vedere se si ottengono le stesse risposte:

$ ls a *
Mela
$ ls g *
pompelmo d'uva
$ ls g * t
pompelmo
102

Pagina 143

Capitolo 4: Spostarsi nel filesystem

$ ls * e *
anguria mela pompelmo pompelmo
$ ls * n *
anguria banana

Il primo esempio corrisponde a qualsiasi file che inizia con una (mela). Il prossimo esempio corrisponde
tutti i file che iniziano con g (uva, pompelmo). Successivamente, i file che iniziano con ge finiscono
in t sono abbinati (pompelmo). Successivamente, viene trovata una corrispondenza con qualsiasi file che contiene e nel nome
(mela, uva, pompelmo, anguria). Infine, viene trovato qualsiasi file che contiene n
(banana, anguria).

Ecco alcuni esempi di pattern matching con il punto interrogativo (?):

$ ls ???? e
uva mela
$ ls g ??? e *
pompelmo d'uva

Il primo esempio corrisponde a qualsiasi file di cinque caratteri che termina con e (mela, uva). Il secondo
corrisponde a qualsiasi file che inizia con ge ha e come quinto carattere (uva, pompelmo).

I seguenti esempi utilizzano le parentesi graffe per eseguire la corrispondenza dei modelli:

$ ls [abw] *
anguria mela banana
$ ls [agw] * [ne]
anguria uva mela

Nel primo esempio, viene trovato qualsiasi file che inizia con a, b o w. Nel secondo, qualsiasi
file che inizia con a, g o w e finisce anche con n o e viene trovato. Puoi anche
includere intervalli tra parentesi. Per esempio:

$ ls [ag] *
pompelmo mela banana uva

Qui, vengono trovati tutti i nomi di file che iniziano con una lettera dalla a alla g. 4

Utilizzo dei metacaratteri di reindirizzamento dei file


I comandi ricevono dati dallo standard input e li inviano allo standard output. Utilizzando i tubi
(descritto in precedenza), è possibile indirizzare l'output standard da un comando allo standard
input di un altro. Con i file, puoi usare i segni minore di (<) e maggiore di (>) per dirigere
dati da e verso i file. Ecco i caratteri di reindirizzamento dei file:

■ <: indirizza il contenuto di un file al comando. Nella maggior parte dei casi, questa è l'impostazione predefinita
l'azione prevista dal comando e l'uso del carattere è facoltativa; utilizzando
less bigfile è uguale a less <bigfile.
■ >: indirizza l'output standard di un comando a un file. Se il file esiste, il
il contenuto di quel file viene sovrascritto.

103

Pagina 144

Parte II: diventare un Power User Linux

■ 2>: indirizza l'errore standard (messaggi di errore) al file.

■ &>: indirizza al file sia lo standard output che lo standard error.


■ >> - Dirige l'output di un comando a un file, aggiungendo l'output alla fine del file
file esistente.

Di seguito sono riportati alcuni esempi di righe di comando in cui le informazioni sono dirette a e
dai file:

$ mail root <~ / .bashrc


$ man chmod | col -b> / tmp / chmod
$ echo "Ho finito il progetto in $ (date)" >> ~ / projects

Nel primo esempio, il contenuto del file .bashrc nella directory home viene inviato in un file
messaggio di posta elettronica all'utente root del computer. La seconda riga di comando formatta il chmod man
page (usando il comando man), rimuove i backspace extra (col -b) e invia l'output
al file / tmp / chmod (cancellando il precedente file / tmp / chmod, se esiste). Il comp finale
mand risulta nel seguente testo aggiunto al file di progetto dell'utente:

Ho terminato il progetto sabato 6 settembre alle 13:46:49 EDT 2015

Un altro tipo di reindirizzamento, denominato here text (chiamato anche here document ), abilita
di digitare del testo che può essere utilizzato come input standard per un comando. Qui documenti
comporta l'immissione di due caratteri minori di (<<) dopo un comando, seguiti da una parola. Tutti
la digitazione successiva a quella parola viene considerata come input dell'utente finché la parola non viene ripetuta su una riga da
si. Ecco un esempio:

$ mail root cnegus rjones bdecker << thetext


> Voglio dire a tutti che ci saranno le 10 del mattino
> riunione nella sala conferenze B. Tutti dovrebbero partecipare.
>
> - James
> il testo
$

Questo esempio invia un messaggio di posta ai nomi utente root, cnegus, rjones e bdecker. Il testo
inserito tra << il testo e il testo diventa il contenuto del messaggio. Un comune
l'uso di questo testo è usarlo con un editor di testo per creare o aggiungere a un file dall'interno di uno script:

/ bin / ed /etc/resolv.conf << reinvia


un
server dei nomi 100.100.100.100
.
w
q
rinvialo

Con queste righe aggiunte a uno script eseguito dall'utente root, l'editor di testo ed aggiunge l'IP
indirizzo di un server DNS nel file /etc/resolv.conf.

104

Pagina 145

Capitolo 4: Spostarsi nel filesystem

Utilizzo dei caratteri di espansione delle parentesi graffe


Utilizzando le parentesi graffe ({}), puoi espandere un insieme di caratteri attraverso i nomi dei file,
nomi di directory o altri argomenti che dai ai comandi. Ad esempio, se vuoi
creare una serie di file come da memo1 a memo5, puoi farlo come segue:

$ touch memo {1,2,3,4,5}


$ ls
memo1 memo2 memo3 memo4 memo5

Gli elementi che vengono espansi non devono essere numeri o anche singole cifre. Per esempio,
è possibile utilizzare intervalli di numeri o cifre. Puoi anche usare qualsiasi stringa di caratteri, come
a patto di separarli con virgole. Ecco alcuni esempi:

$ touch {John, Bill, Sally} - {Colazione, pranzo, cena}


$ ls
Bill-Breakfast Bill-Lunch John-Dinner Sally-Breakfast Sally-Lunch
Bill-Dinner John-Breakfast John-Lunch Sally-Dinner
$ rm -f {John, Bill, Sally} - {Colazione, pranzo, cena}
$ touch {a..f} {1..5}
$ ls
a1 a3 a5 b2 b4 c1 c3 c5 d2 d4 e1 e3 e5 f2 f4
a2 a4 b1 b3 b5 c2 c4 d1 d3 d5 e2 e4 f1 f3 f5

Nel primo esempio, l'uso di due serie di parentesi graffe significa che John, Bill e Sally hanno ciascuno
nomi di file associati a colazione, pranzo e cena. Se avessi fatto un errore, avrei potuto
richiamare facilmente il comando e modificare il tocco in rm -f per eliminare tutti i file. Nel prossimo
Ad esempio, l'uso di due punti tra le lettere a e f ei numeri 1 e 5 specifica il
intervalli da utilizzare. Notare i file che sono stati creati da quei pochi caratteri.
Elenco di file e directory
Il comando ls è il comando più comune utilizzato per elencare le informazioni sui file 4
e directory. Molte opzioni disponibili con il comando ls ti consentono di raccogliere file
diversi set di file e directory, nonché per visualizzare diversi tipi di informazioni
su di loro.

Per impostazione predefinita, quando digiti il ​comando ls, l'output mostra tutti i file non nascosti e
directory contenute nella directory corrente. Quando digiti ls, tuttavia, molti file Linux
i sistemi (inclusi Fedora e RHEL) assegnano un alias ls per aggiungere opzioni. Per vedere se ls è
alias, digita quanto segue:

$ alias ls
alias ls = 'ls --color = auto'

L'opzione --color = auto fa sì che vengano visualizzati diversi tipi di file e directory
in diversi colori. Quindi, tornando alla directory $ HOME / test creata in precedenza in

105

Pagina 146

Parte II: diventare un Power User Linux

capitolo, aggiungi un paio di diversi tipi di file e poi guarda come appaiono con
il comando ls.

$ cd $ HOME / test
$ touch scriptx.sh apple
$ chmod 755 scriptx.sh
$ mkdir Stuff
$ ln -s apple pointer_to_apple
$ ls
apple pointer_to_apple scriptx.sh Roba

Sebbene non sia possibile vederlo nell'esempio di codice precedente, i documenti della directory vengono visualizzati in
blue, pointer_to_apple (un collegamento simbolico) appare come aqua e scriptx.sh (che è
un file eseguibile) viene visualizzato in verde. Tutti gli altri file normali vengono visualizzati in nero. Digitando ls -l
vedere un lungo elenco di questi file può rendere ancora più chiari questi diversi tipi di file:

$ ls -l
totale 4
-rw-rw-r--. 1 joe joe 0 dic 18 13:38 apple
lrwxrwxrwx. 1 joe joe 5 dic 18 13:46 pointer_to_apple -> apple
-rwxr-xr-x. 1 joe joe 0 dic 18 13:37 scriptx.sh
drwxrwxr-x. 2 joe joe 4096 18 dicembre 13:38 Roba

Mentre guardi l'elenco lungo, nota che il primo carattere di ogni riga mostra il
tipo di file. Un trattino (-) indica un file normale, d indica una directory e l (minuscolo
L) indica un collegamento simbolico. Un file eseguibile (uno script o un file binario che viene eseguito come file
comando) ha i bit di esecuzione attivati ​(x). Vedi di più sui bit di esecuzione nel prossimo
Sezione "Comprensione delle autorizzazioni e della proprietà dei file".

Successivamente dovresti acquisire familiarità con il contenuto della tua home directory. Usa -l e
-una opzione per ls.

$ ls -la / home / joe


totale 158
drwxrwxrwx 2 vendite joe 4096 12 maggio 13:55.
drwxr-xr-x 3 root root 4096 10 maggio 01:49 ..
-rw ------- 1 joe sales 2204 18 maggio 21:30 .bash_history
-rw-r - r-- 1 joe sales 24 maggio 10 01:50 .bash_logout
-rw-r - r-- 1 joe sales 230 May 10 01:50 .bash_profile
-rw-r - r-- 1 joe sales 124 May 10 01:50 .bashrc
drw-r - r-- 1 joe sales 4096 10 maggio 01:50 .kde
-rw-rw-r-- 1 joe sales 149872 May 11 22:49 letter

^ ^^^^^ ^
col 1 col 2 col 3 col 4 col 5 col 6 col 7

La visualizzazione di un lungo elenco (opzione -l) dei contenuti della directory home ti mostra di più
sulle dimensioni dei file e sulle directory. La riga del totale mostra la quantità totale di spazio su disco utilizzato
dai file nell'elenco (158 kilobyte in questo esempio). Directory come l'attuale
directory (.) e la directory padre (..) - la directory sopra la directory corrente - sono

106
Pagina 147

Capitolo 4: Spostarsi nel filesystem

annotati come directory dalla lettera d all'inizio di ogni voce. Ogni directory inizia
con annuncio e ogni file inizia con un trattino (-).

I nomi di file e directory sono mostrati nella colonna 7. In questo esempio, un punto (.) Rappresenta /
home / joe e due punti (..) rappresentano / home, la directory principale di / joe. La maggior parte della
i file in questo esempio sono file punto (.) utilizzati per memorizzare le proprietà della GUI (directory .kde)
o proprietà della shell (file .bash). L'unico file non-punto in questo elenco è quello denominato lettera.
La colonna 3 mostra la directory o il proprietario del file. La directory / home è di proprietà di root e
tutto il resto è di proprietà dell'utente joe, che appartiene al gruppo di vendita (i gruppi sono elencati
nella colonna 4).

Oltre a d o -, la colonna 1 di ogni riga contiene le autorizzazioni impostate per quel file
o directory. Altre informazioni nell'elenco includono il numero di collegamenti fisici all'elemento
(colonna 2), la dimensione di ogni file in byte (colonna 5) e la data e l'ora di ogni file
modificato più di recente (colonna 6).

Ecco alcuni altri fatti sugli elenchi di file e directory:

■ Il numero di caratteri mostrato per una directory (4096 byte in questi esempi)
riflette la dimensione del file contenente le informazioni sulla directory. Sebbene
questo numero può superare i 4096 byte per una directory che contiene molti file,
questo numero non riflette la dimensione dei file contenuti in quella directory.
■ Il formato della colonna dell'ora e della data può variare. Invece di visualizzare "12 maggio",
la data potrebbe essere visualizzata come "2011-05-12", a seconda della distribuzione e
l'impostazione della lingua (variabile LANG).
■A volte, invece di vedere il bit di esecuzione (x) impostato su un file eseguibile, tu
potrebbe invece vedere una s in quel punto. Con una s che appare all'interno del proprietario
(-rwsr-xr-x) o di gruppo (-rwxr-sr-x) o entrambi (-rwsr-sr-x),
l'applicazione può essere eseguita da qualsiasi utente, ma la proprietà del processo in esecuzione è
assegnato all'utente / gruppo dell'applicazione anziché a quello dell'utente che avvia il file
comando. Questo è indicato rispettivamente come un set UID o un set GID programma. Per
Ad esempio, il comando mount ha i permessi impostati come -rwsr-xr-x. Questo consente qualsiasi 4
utente per eseguire mount per elencare i filesystem montati (anche se devi ancora essere root per
utilizzare mount per montare effettivamente i filesystem dalla riga di comando, nella maggior parte dei casi).
■ Se alla fine di una directory compare at, indica che lo sticky bit è impostato per quello
directory (ad esempio, drwxrwxr-t). Impostando lo sticky bit su una directory, il file
il proprietario della directory può consentire ad altri utenti e gruppi di aggiungere file alla directory,
ma impedisce agli utenti di eliminare i file degli altri in quella directory. Con un GID impostato
assegnato a una directory, tutti i file creati in quella directory vengono assegnati allo stesso modo
group come gruppo della directory. (Se vedi una S o una T maiuscola invece di execute
bit su una directory, significa che il GID impostato o il permesso stick bit, rispettivamente,
è stato impostato, ma per qualche motivo anche il bit di esecuzione non è stato attivato.)
■ Se vedi un segno più alla fine dei bit di autorizzazione (ad esempio, -rw-rw-
r - +), significa che gli attributi estesi, come gli elenchi di controllo di accesso (ACL) o
SELinux, sono impostati nel file.

107

Pagina 148

Parte II: diventare un Power User Linux

Identificazione delle directory


Quando è necessario identificare la propria directory home su una riga di comando della shell, è possibile utilizzare quanto segue:

■$ HOME: questa variabile di ambiente memorizza il nome della directory home.

■ ~: la tilde (~) rappresenta la directory home sulla riga di comando.


Puoi anche usare la tilde per identificare la directory home di qualcun altro. Ad esempio, ~ joe
verrebbe espanso nella directory home di joe (probabilmente / home / joe). Quindi, se volevo andare
nella directory / home / joe / test, potrei digitare cd ~ joe / test per arrivarci.
Altri modi speciali per identificare le directory nella shell includono quanto segue:

■.: Un singolo punto (.) Si riferisce alla directory corrente.

■ ..— Due punti (..) si riferiscono a una directory direttamente sopra la directory corrente.

■$ PWD: questa variabile di ambiente fa riferimento alla directory di lavoro corrente.

■$ OLDPWD: questa variabile di ambiente fa riferimento alla precedente directory di lavoro precedente
sei passato a quello attuale. (Digitando cd - si ritorna alla directory rappresentata
di $ OLDPWD.)

Come ho detto prima, ci sono molte opzioni utili per il comando ls. Ritorno
nella directory $ HOME / test in cui hai lavorato. Ecco alcuni esempi di ls
opzioni. Non preoccuparti se l'output non corrisponde esattamente a ciò che è nella tua directory in
questo punto.

Qualsiasi file o directory che inizia con un punto (.) È considerato un file nascosto e non lo è
visualizzato di default con ls. Questi file punto sono in genere file o directory di configurazione
che devono essere nella tua directory home, ma non devono essere visti nel tuo lavoro quotidiano. Il
-a ti permette di vedere quei file.

L'opzione -t visualizza i file nell'ordine in cui sono stati modificati più di recente. Con
l'opzione -F, una barra rovesciata (/) appare alla fine dei nomi delle directory, un asterisco (*) è
aggiunto ai file eseguibili e un segno di chiocciola (@) viene visualizzato accanto ai collegamenti simbolici.

Per mostrare file nascosti e non nascosti:

$ ls -a
. apple docs pompelmo pointer_to_apple .stuff watermelon
.. banana uva .hiddendir script.sh .tmpfile

Per elencare tutti i file in base all'ora modificata più di recente:

$ ls -at
.tmpfile .hiddendir .. docs watermelon banana script.sh
. .stuff pointer_to_apple pompelmo mela uva

108

Pagina 149

Capitolo 4: Spostarsi nel filesystem

Per elencare i file e aggiungere indicatori del tipo di file:

$ ls -F
apple banana docs / pompelmo pompelmo pointer_to_apple @ script.sh *
anguria

Per evitare di visualizzare determinati file o directory quando usi ls, usa l'opzione --hide =.
Nella successiva serie di esempi, qualsiasi file che inizia con g non viene visualizzato nell'output. Utilizzando
un'opzione -d su una directory mostra le informazioni su quella directory invece di mostrarle
i file e le directory contenuti nella directory. L'opzione -R elenca tutti i file nel file
directory così come qualsiasi file o directory associata alla directory originale.
L'opzione -S elenca i file per dimensione.

Per non includere alcun file che inizia con la lettera g nell'elenco:

$ ls --hide = g *
apple banana docs pointer_to_apple script.sh watermelon

Per elencare le informazioni su una directory invece dei file che contiene:

$ ls -ld $ HOME / test /


drwxrwxr-x. 4 joe joe 4096 18 dicembre 22:00 / home / joe / test /

Per creare più livelli di directory (è necessario -p):

$ mkdir -p $ HOME / test / documenti / memo /

Per elencare tutti i file e le directory in modo ricorsivo dalla directory corrente in basso:

$ ls -R
...

Per elencare i file per dimensione:

$ ls -S
...
4
Capire i permessi dei file
e proprietà
Dopo aver lavorato con Linux per un po ', sei quasi sicuro di ottenere un'autorizzazione
messaggio negato. Sono state progettate le autorizzazioni associate a file e directory in Linux
per impedire agli utenti di accedere ai file privati ​di altri utenti e per proteggere file di sistema importanti.

I nove bit assegnati a ciascun file per le autorizzazioni definiscono l'accesso a te e agli altri
avere al tuo file. I bit di autorizzazione per un file normale vengono visualizzati come -rwxrwxrwx. Quei pezzi lo sono
utilizzato per definire chi può leggere, scrivere o eseguire il file.

109

Pagina 150

Parte II: diventare un Power User Linux

Per un file normale, viene visualizzato un trattino davanti all'indicatore delle autorizzazioni a nove bit. Invece di un trattino, potresti vedere
ad (per una directory), l (per un collegamento simbolico), b (per un dispositivo a blocchi), c (per un dispositivo a caratteri), s (per un socket) o p
(per una pipe con nome).

Delle autorizzazioni a nove bit, i primi tre bit si applicano all'autorizzazione del proprietario, il successivo
tre si applicano al gruppo assegnato al file e gli ultimi tre si applicano a tutti gli altri. Il r
sta per lettura, la w sta per scrivere e la x sta per permessi di esecuzione. Se un trattino
appare al posto della lettera, significa che il permesso è disattivato per quello associato
leggere, scrivere o eseguire bit.

Poiché i file e le directory sono diversi tipi di elementi, leggere, scrivere ed eseguire
i permessi su file e directory significano cose diverse. La Tabella 4.2 spiega cosa puoi fare
fare con ciascuno di loro.

TABELLA 4.2 Impostazione delle autorizzazioni di lettura, scrittura ed esecuzione

Autorizzazione File Directory

Leggere Visualizza cosa c'è nel file. Guarda quali file e sottodirectory contiene.

Scrivi Cambia il file Aggiungi file o sottodirectory alla directory. Rimuovi file
contenuto, rinominalo o o directory dalla directory.
Cancellalo.

Eseguire Esegui il file come file Passare alla directory come directory corrente, cercare
programma. tramite la directory o eseguire un programma dal file
directory. Accedi ai metadati del file (dimensioni del file, timestamp e
così via) dei file in quella directory.

Come notato in precedenza, puoi vedere l'autorizzazione per qualsiasi file o directory digitando ls -ld
comando. Il file o la directory denominati vengono visualizzati come quelli mostrati in questo esempio:

$ ls -ld ch3 test


-rw-rw-r-- 1 joe sales 4983 Jan 18 22:13 ch3
drwxr-xr-x 2 vendite joe 1024 24 gennaio 13:47 test

La prima riga mostra che il file ch3 ha i permessi di lettura e scrittura per il proprietario e il file
gruppo. Tutti gli altri utenti dispongono dell'autorizzazione di lettura, il che significa che possono visualizzare il file ma non possono
modificarne il contenuto o rimuoverlo. La seconda riga mostra la directory di test (indicata da
la lettera d prima dei bit di autorizzazione). Il proprietario dispone delle autorizzazioni di lettura, scrittura ed esecuzione
mentre il gruppo e gli altri utenti hanno solo le autorizzazioni di lettura ed esecuzione. Di conseguenza, il
il proprietario può aggiungere, modificare o eliminare file in quella directory e tutti gli altri possono solo leggere
il contenuto, passare a quella directory ed elencare il contenuto della directory. (Se tu avessi
non hai usato le opzioni -d per ls, avresti elencato i file nella directory di test invece di
permessi di quella directory.)

110

Pagina 151
Capitolo 4: Spostarsi nel filesystem

Modifica dei permessi con chmod (numeri)


Se possiedi un file, puoi utilizzare il comando chmod per modificare l'autorizzazione su di esso come te
per favore. In un metodo per eseguire questa operazione, viene assegnata ogni autorizzazione (lettura, scrittura ed esecuzione)
un numero — r = 4, w = 2 e x = 1 — e utilizzi il numero totale di ciascun insieme per stabilire il
autorizzazione. Ad esempio, per rendere le autorizzazioni completamente aperte per te come proprietario, lo faresti
imposta il primo numero su 7 (4 + 2 + 1), quindi daresti al gruppo e agli altri la sola lettura
permesso impostando sia il secondo che il terzo numero a 4 (4 + 0 + 0), in modo che il finale
il numero è 744. Qualsiasi combinazione di autorizzazioni può risultare da 0 (nessuna autorizzazione) a
7 (piena autorizzazione).

Di seguito sono riportati alcuni esempi di come modificare l'autorizzazione su un file (denominato file) e cosa il
il permesso risultante sarebbe:

Il seguente comando chmod produce questa autorizzazione: rwxrwxrwx

# chmod 777 file

Il seguente comando chmod produce questa autorizzazione: rwxr-xr-x

# chmod 755 file

Il seguente comando chmod produce questa autorizzazione: rw-r - r--

# chmod 644 file rw-r - r-

Il seguente comando chmod produce questa autorizzazione: ---------

# chmod 000 file

Il comando chmod può essere utilizzato anche in modo ricorsivo. Ad esempio, supponi di voler dare
un permesso 755 per l'intera struttura di directory (rwxr-xr-x), a partire da $ HOME / myapps
directory. Per farlo, puoi usare l'opzione -R, come segue:

$ chmod -R 755 $ HOME / myapps

Tutti i file e le directory sottostanti, inclusa la directory myapps nella directory home 4
avrà 755 autorizzazioni impostate. Perché i numeri si avvicinano all'impostazione delle modifiche ai permessi
tutti i bit di autorizzazione contemporaneamente, è più comune utilizzare le lettere per modificare in modo ricorsivo il permesso
bit su un ampio set di file.

Modifica dei permessi con chmod (lettere)


Puoi anche attivare e disattivare i permessi dei file usando i segni più (+) e meno (-),
rispettivamente, insieme a lettere per indicare cosa cambia e per chi. Usando lettere, per
ogni file è possibile modificare i permessi per l'utente (u), gruppo (g), altro (o) e tutti gli utenti (a).
Ciò che cambieresti include i bit di lettura (r), scrittura (w) ed esecuzione (x). Per esempio,
inizia con un file che ha tutte le autorizzazioni aperte (rwxrwxrwx). Esegui il seguente chmod
comandi che utilizzano le opzioni del segno meno. Le autorizzazioni risultanti vengono visualizzate a destra di
ogni comando:

111

Pagina 152

Parte II: diventare un Power User Linux

Il seguente comando chmod produce questa autorizzazione: r-xr-xr-x

$ chmod aw file

Il seguente comando chmod produce questa autorizzazione: rwxrwxrw-

$ chmod ox file

Il seguente comando chmod produce questa autorizzazione: rwx ------

$ chmod go-rwx file

Allo stesso modo, i seguenti esempi iniziano con tutte le autorizzazioni chiuse (---------). Il vantaggio
sign viene utilizzato con chmod per attivare i permessi:

Il seguente comando chmod produce questa autorizzazione: rw -------


$ chmod u + rw file

Il seguente comando chmod produce questa autorizzazione: --x - x - x

$ chmod a + x file

Il seguente comando chmod produce questa autorizzazione: r-xr-x ---

$ chmod ug + file rx

L'uso di lettere per modificare i permessi in modo ricorsivo con chmod generalmente funziona meglio di
utilizzando i numeri perché è possibile modificare i bit in modo selettivo, invece di modificare tutte le autorizzazioni
bit contemporaneamente. Ad esempio, supponi di voler rimuovere l'autorizzazione di scrittura per "altro"
senza modificare altri bit di autorizzazione su un insieme di file e directory. Potresti fare
il seguente:

$ chmod -R ow $ HOME / mieapps

Questo esempio rimuove in modo ricorsivo i permessi di scrittura per "altro" su qualsiasi file e directory
sotto la directory myapps. Se hai usato numeri come 644, esegui il permesso
sarebbe disattivato per le directory; utilizzando 755, l'autorizzazione di esecuzione verrebbe attivata per
file regolari. Usando ow, solo un bit viene disattivato e tutti gli altri vengono lasciati soli.

Impostazione dei permessi file predefiniti con umask


Quando crei un file come utente normale, viene concesso il permesso rw-rw-r-- per impostazione predefinita. UN
alla directory viene data l'autorizzazione rwxrwxr-x. Per l'utente root, autorizzazioni per file e directory
sono rispettivamente rw-r - r-- e rwxr-xr-x. Questi valori predefiniti sono determinati da
valore di umask. Digita umask per vedere qual è il tuo valore umask. Per esempio:

$ umask
0002

112

Pagina 153

Capitolo 4: Spostarsi nel filesystem

Se per il momento ignori lo zero iniziale, il valore umask maschera ciò che viene considerato
per essere completamente aperti i permessi per un file 666 o una directory 777. Il valore umask di 002
restituisce l'autorizzazione per una directory di 775 (rwxrwxr-x). La stessa umask risulta in un file
permesso del 644 (rw-rw-r--). (Le autorizzazioni di esecuzione sono disattivate per impostazione predefinita per i file normali.)

Per modificare temporaneamente il valore di umask, eseguire il comando umask. Quindi prova a creare
alcuni file e directory per vedere come il valore umask influenza il modo in cui vengono impostati i permessi.
Per esempio:

$ umask 777; touch file01; mkdir dir01; ls -ld file01 dir01


d ---------. 2 joe joe 6 dic 19 11:03 dir01
----------. 1 joe joe 0 19 dic 11:02 file01
$ umask 000; toccare file02; mkdir dir02; ls -ld file02 dir02
drwxrwxrwx. 2 joe joe 6 dic 19 11:00 dir02 /
-rw-rw-rw-. 1 joe joe 0 dic 19 10:59 file02
$ umask 022; touch file03; mkdir dir03; ls -ld file03 dir03
drwxr-xr-x. 2 joe joe 6 dic 19 11:07 dir03
-rw-r - r--. 1 joe joe 0 19 dic 11:07 file03

Se vuoi modificare in modo permanente il tuo valore umask, aggiungi un comando umask al file
.bashrc nella tua directory home (vicino alla fine di quel file). La prossima volta che aprirai un file
shell, la tua umask è impostata su qualsiasi valore tu scelga.

Modifica della proprietà del file


Come utente normale, non è possibile modificare la proprietà di file o directory per farli appartenere
a un altro utente. È possibile modificare la proprietà come utente root. Ad esempio, supponi di te
ha creato un file chiamato memo.txt, mentre eri utente root, nella home directory dell'utente joe.
Ecco come potresti cambiarlo per essere di proprietà di Joe:

# chown joe /home/joe/memo.txt


# ls -l /home/joe/memo.txt
-rw-r - r--. 1 joe root 0 dic 19 11:23 /home/joe/memo.txt

Notare che il comando chown ha cambiato l'utente in joe ma ha lasciato il gruppo come root. Per
4
cambia sia l'utente che il gruppo in joe, puoi invece digitare quanto segue:

# chown joe: joe /home/joe/memo.txt


# ls -l /home/joe/memo.txt
-rw-r - r--. 1 joe joe 0 dic 19 11:23 /home/joe/memo.txt
Il comando
utile chown può
se è necessario essere utilizzato
modificare un'interaanche in modo
struttura ricorsivo.
di directory L'uso dell'opzione
in proprietà ricorsivafile
di un determinato (-R) è
utente. Ad esempio, se hai inserito un'unità USB, che è montata su / media / myusb
directory e volevo dare la piena proprietà dei contenuti di quell'unità all'utente joe,
puoi digitare quanto segue:

# chown -R joe: joe / media / myusb

113

Pagina 154

Parte II: diventare un Power User Linux

Spostamento, copia e rimozione di file


I comandi per spostare, copiare ed eliminare i file sono abbastanza semplici. Per modificare il file
posizione di un file, utilizzare il comando mv. Per copiare un file da una posizione a un'altra, utilizzare il
comando cp. Per rimuovere un file, utilizzare il comando rm. Questi comandi possono essere utilizzati per agire
singoli file e directory o ricorsivamente per agire su più file e directory contemporaneamente.
Ecco alcuni esempi:

$ mv abc def
$ mv abc ~
$ mv / home / joe / mymemos / / home / joe / Documents /

Il primo comando mv sposta il file abc nel file def nella stessa directory (essenzialmente
rinominandolo), mentre il secondo sposta il file abc nella tua directory home (~). Il
Il comando successivo sposta la directory mymemos (e tutto il suo contenuto) in / home / joe /
Directory dei documenti.

Per impostazione predefinita, il comando mv sovrascrive tutti i file esistenti se il file in cui ti stai spostando
esiste. Tuttavia, molti sistemi Linux alias del comando mv in modo che utilizzi l'opzione -i
(che fa sì che mv ti chieda prima di sovrascrivere i file esistenti). Ecco come verificare se
questo è vero sul tuo sistema:

$ alias mv
alias mv = 'mv -i'

Di seguito sono riportati alcuni esempi di utilizzo del comando cp per copiare file da una posizione a un'altra:

$ cp abc def
$ cp abc ~
$ cp -r / usr / share / doc / bash-completamento * / tmp / a /
$ cp -ra / usr / share / doc / bash-completamento * / tmp / b /

Il primo comando di copia (cp) copia abc nel nuovo nome def nella stessa directory,
mentre il secondo copia abc nella tua directory home (~), mantenendo il nome abc. Il due
le copie ricorsive (-r) copiano la directory di completamento bash e tutti i file in essa contenuti, prima in
nuove directory / tmp / a / e / tmp / b /. Se esegui ls -l su queste due directory, tu
vedere che per il comando cp eseguito con l'opzione archive (-a), i timestamp di data / ora e
le autorizzazioni sono mantenute dalla copia. Senza -a, i timbri di data / ora correnti sono
utilizzati e le autorizzazioni sono determinate dal tuo smascheramento.

Il comando cp in genere ha anche un alias con l'opzione -i, per evitare di inadver-
sovrascrivere delicatamente i file.

Come con i comandi cp e mv, anche rm è solitamente alias per includere l'opzione -i.Questo
può prevenire il danno che può derivare da un'opzione di rimozione ricorsiva involontaria (-r).
Ecco alcuni esempi del comando rm:

$ rm abc
$ rm *

114

Pagina 155
Capitolo 4: Spostarsi nel filesystem

Il primo comando remove cancella il file abc; il secondo rimuove tutti i file nel file
directory corrente (tranne per il fatto che non rimuove directory o file che iniziano con un
punto). Se vuoi rimuovere una directory, devi usare l'opzione ricorsiva (-r) per rm o,
per una directory vuota, puoi usare il comando rmdir. Considera i seguenti esempi:

$ rmdir / home / joe / niente /


$ rm -r / home / joe / bigdir /
$ rm -rf / home / joe / hugedir /

Il comando rmdir nel codice precedente rimuove solo la directory (niente) se lo è


vuoto. L'esempio rm -r rimuove la directory bigdir e tutto il suo contenuto (file e
più livelli di sottodirectory) ma richiede prima che ciascuna venga rimossa. Aggiungendo l'estensione
opzione forza (-f), la directory hugedir e tutti i suoi contenuti vengono immediatamente rimossi,
senza chiedere.

Quando sovrascrivi l'opzione -i sui comandi mv, cp e rm, rischi di rimuovere alcuni (o molti) file
sbaglio. L'uso di caratteri jolly (come *) e no -i rende gli errori ancora più probabili. Detto questo, a volte no
vuoi essere disturbato a scorrere ogni file che elimini. Hai altre opzioni:
■ Come notato con l'opzione -f, è possibile forzare l'eliminazione di rm senza chiedere conferma. Un'alternativa è eseguire rm, cp,
o mv con una barra rovesciata davanti (\ rm bigdir). La barra rovesciata fa sì che qualsiasi comando venga eseguito senza sbalzi.
■ Un'altra alternativa con mv è usare l'opzione -b. Con -b, se esiste un file con lo stesso nome nella destinazione-
viene eseguita una copia di backup del vecchio file prima che il nuovo file vi venga spostato.

Sommario
Comandi per spostarsi nel filesystem, copiare file, spostare file e rimuovere
i file sono tra i comandi di base di cui hai bisogno per lavorare dalla shell. Questo capitolo
copre molti comandi per spostarsi e manipolare file, così come comandi per 4
cambio di proprietà e autorizzazione.

Il capitolo successivo descrive i comandi per la modifica e la ricerca di file. Questi comandi
includere gli editor di testo vim / vi, il comando find e il comando grep.

Esercizi
Usa questi esercizi per testare la tua conoscenza dei modi efficienti per spostarti nel filesystem
e lavora con file e directory. Quando possibile, prova a utilizzare le scorciatoie per digitare il meno possibile
possibile ottenere i risultati desiderati. Queste attività presumono che tu stia eseguendo Fedora o Red Hat
Sistema Linux aziendale (sebbene alcune attività funzionino anche su altri sistemi Linux).

115

Pagina 156

Parte II: diventare un Power User Linux

Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, lì
sono spesso diversi modi per completare un'attività).

1. Crea una directory nella tua home directory chiamata progetti. Nei progetti
directory, creare nove file vuoti denominati house1, house2, house3 e
così via a house9. Supponendo che ci siano molti altri file in quella directory, vieni fuori
con un singolo argomento a ls che elencherebbe solo quei nove file.

2. Crea il percorso della directory $ HOME / progetti / case / porte /. Crea quanto segue
file vuoti all'interno di questo percorso di directory (prova a utilizzare percorsi assoluti e relativi da
la tua home directory):
$ HOME / progetti / case / bungalow.txt
$ HOME / progetti / case / porte / bifold.txt
$ HOME / progetti / esterni / vegetazione / landscape.txt

3. Copiare i file house1 e house5 nella directory $ HOME / projects / houses /.

4. Copiare in modo ricorsivo la directory / usr / share / doc / initscripts * in $ HOME /


progetti / directory. Mantieni le autorizzazioni e gli indicatori di data / ora correnti.
5. Elenca ricorsivamente il contenuto della directory $ HOME / projects /. Pipe l'output
al comando less in modo da poter sfogliare l'output.
6. Rimuovere i file house6, house7 e house8 senza che venga richiesto.

7. Spostare house3 e house4 nella directory $ HOME / progetti / case / porte.

8. Rimuovere la directory $ HOME / progetti / case / porte e il suo contenuto.

9. Modificare i permessi sul file $ HOME / projects / house2 in modo che possa essere letto
e scritto dall'utente che possiede il file, letto solo dal gruppo e non hanno
permesso per altri.
10. Modificare in modo ricorsivo i permessi della directory $ HOME / projects / in modo che nessuno li abbia
il permesso di scrittura per qualsiasi file o directory al di sotto di quel punto nel filesystem.

116

Pagina 157

CAPITOLO

Lavorare con file di testo


5
IN QUESTO CAPITOLO
Utilizzo di vim e vi per modificare i file di testo

Ricerca di file

Ricerca nei file

W sul sistema in file di testo normale. Pertanto, era fondamentale per gli utenti sapere come utilizzare gli strumenti per
cercare e all'interno di file di testo semplice ed essere in grado di modificare e configurare tali file.
uando il sistema Unix, su cui si basava Linux, è stato creato, più informazioni sono state gestite
Oggi, la maggior parte delle configurazioni dei sistemi Linux può ancora essere eseguita modificando file di testo normale. Anche
quando uno strumento grafico è disponibile per lavorare con un file di configurazione, lo strumento grafico raramente
fornisce un modo per fare tutto ciò che potresti voler fare in quel file. Di conseguenza, potresti trovare una necessità
utilizzare un editor di testo per configurare manualmente un file. Allo stesso modo, alcuni tipi di file di documenti, come HTML
e XML, sono anche file di testo semplice che possono essere modificati manualmente.

Prima di poter diventare un amministratore di sistema a tutti gli effetti, è necessario essere in grado di utilizzare un testo normale
editore. Il fatto che la maggior parte dei server Linux professionali non abbia nemmeno un'interfaccia grafica disponibile
rende necessaria la modifica di file di configurazione in testo semplice con un editor di testo non grafico.

Dopo aver appreso come modificare i file di testo, potresti ancora trovare difficile capire dove si trovano i file
si trovano che devi modificare. Con comandi come find, puoi cercare file basati su
vari attributi (nome file, dimensione, data di modifica e proprietà, solo per citarne alcuni). Con il grep
, puoi cercare all'interno di file di testo per trovare termini di ricerca specifici.

Modifica dei file con vim e vi


È quasi impossibile usare Linux per qualsiasi periodo di tempo e non è necessario un editor di testo perché, come
notato in precedenza, la maggior parte dei file di configurazione di Linux sono file di testo semplice di cui avrete quasi sicuramente bisogno
cambiare manualmente ad un certo punto.

Se stai usando un desktop GNOME, puoi eseguire gedit (digita gedit nella casella di ricerca e premi
Immettere o selezionare Applicazioni ➪ Accessori ➪ gedit), che è abbastanza intuitivo per la modifica del testo.

117

Pagina 158

Parte II: diventare un Power User Linux

Puoi anche eseguire un semplice editor di testo chiamato nano dalla shell. Tuttavia, la maggior parte degli errori di shell di Linux
gli utenti usano il comando vi o emacs per modificare i file di testo.

Il vantaggio di vi o emacs rispetto a un editor grafico è che puoi usare il comando


da qualsiasi shell, terminale a caratteri o connessione basata su caratteri su una rete (utilizzando
telnet o ssh, ad esempio): non è richiesta alcuna interfaccia grafica. Inoltre contengono ciascuno
tonnellate di funzionalità, così puoi continuare a crescere con loro.

Questa sezione fornisce un breve tutorial sull'editor di testo vi, che puoi usare manualmente
modificare un file di testo da qualsiasi shell. Descrive anche le versioni migliorate di vi chiamate vim. (Se
vi non ti si addice, vedi la barra laterale "Esplorazione di altri editor di testo" per altre opzioni.)

L'editor vi è difficile da imparare all'inizio, ma dopo che lo conosci, non devi mai usare un file
mouse o un tasto funzione: puoi modificare e spostarti in modo rapido ed efficiente all'interno dei file
semplicemente usando la tastiera.

Esplorazione di altri editor di testo


Sono disponibili dozzine di editor di testo per l'uso con Linux. Alcune alternative potrebbero essere nel tuo Linux
distribuzione. Puoi provarli se trovi che vi è troppo faticoso. Ecco alcune delle opzioni:

■ nano: questo popolare editor di testo semplificato viene utilizzato con molti sistemi Linux avviabili e
altri ambienti Linux a spazio limitato. Ad esempio, nano è disponibile per modificare i file di testo
durante un processo di installazione di Gentoo Linux.

■ gedit: l'editor di testo GNOME viene eseguito sul desktop.


■ jed: questo editor orientato allo schermo è stato creato per i programmatori. Usando i colori, jed può evidenziare
codice creato in modo da poter leggere facilmente il codice e individuare gli errori di sintassi. Usa il tasto Alt per
selezionare i menu per manipolare il testo.

■ joe:l'editor di joe è simile a molti editor di testo per PC. Utilizzare i tasti di controllo e freccia per spostarsi
in giro. Premi Ctrl + C per uscire senza salvare o Ctrl + X per salvare e uscire.

■ kate — Questo grazioso editor è contenuto nel pacchetto kdebase. Ha molte campane e
fischietti, come l'evidenziazione per diversi tipi di linguaggi di programmazione e controlli
per la gestione del ritorno a capo automatico.

■ kedit: questo editor di testo basato su GUI viene fornito con il desktop KDE.

■ mcedit:
in questo editor, i tasti funzione aiutano a spostarsi, salvare, copiare, spostare ed eliminare il testo.
Come jed e joe, mcedit è orientato allo schermo. È disponibile nel pacchetto mc in RHEL e Fedora.

■ nedit:
è un eccellente editor per programmatori. È necessario installare il nedit opzionale
pacchetto per ottenere questo editor.

Se usi ssh per accedere ad altri computer Linux sulla tua rete, puoi usare qualsiasi testo disponibile
editor per modificare i file. Se usi ssh -X per connetterti al sistema remoto, viene visualizzato un editor basato su GUI
sullo schermo locale. Quando non è disponibile alcuna GUI, è necessario un editor di testo che venga eseguito nella shell,
come vi, jed o joe.

118

Pagina 159

Capitolo 5: Lavorare con i file di testo


A partire da vi
Molto spesso, avvii vi per aprire un particolare file. Ad esempio, per aprire un file chiamato
/ tmp / test, digita il seguente comando:

$ vi / tmp / test

Se si tratta di un nuovo file, dovresti vedere qualcosa di simile al seguente:

"/ tmp / test" [Nuovo file]

Una casella lampeggiante in alto rappresenta il punto in cui si trova il cursore. La linea di fondo ti tiene
informato su cosa sta succedendo con la tua modifica (qui, hai appena aperto un nuovo file). Nel
in mezzo, ci sono tilde (~) come riempitivo perché non c'è ancora testo nel file. Ora, ecco
la parte intimidatoria: non ci sono suggerimenti, menu o icone per dirti cosa fare. Produrre
peggio, non puoi semplicemente iniziare a digitare. Se lo fai, è probabile che il computer ti emetta un segnale acustico. (E
alcune persone si lamentano del fatto che Linux non è amichevole.)

Innanzitutto, è necessario conoscere le due principali modalità operative: comando e input. L'editor vi
inizia sempre in modalità di comando. Prima di poter aggiungere o modificare il testo nel file, è necessario digitare
un comando (una o due lettere, a volte precedute da un numero opzionale) per dire a vi quello che vuoi
voglio fare. Le maiuscole sono importanti, quindi usa le maiuscole e le minuscole esattamente come mostrato negli esempi!

Su Red Hat Enterprise Linux, Fedora e altre distribuzioni Linux, per gli utenti regolari il comando vi ha un alias
eseguire vim. Se digiti alias vi, dovresti vedere alias vi = 'vim'. La prima evidente differenza tra vi
e vim è che qualsiasi tipo di file di testo noto, come HTML, codice C o un file di configurazione comune, appare a colori.
I colori indicano la struttura del file. Altre caratteristiche di vim che non sono in vi includono funzionalità come visual
evidenziazione e modalità schermo diviso. Per impostazione predefinita, l'utente root non dispone di alias vi per vim.

Aggiunta di testo
Per entrare in modalità di input, digita una lettera di comando di input. Per iniziare, digita uno dei seguenti
lettere. Quando hai finito di inserire il testo, premi il tasto Esc (a volte due volte) per tornare indietro
alla modalità di comando. Ricorda il tasto Esc!

■ a: il comando add. Con questo comando, puoi inserire del testo che inizia con 5
a destra del cursore.
■ A: il comando aggiungi alla fine. Con questo comando, puoi inserire del testo a partire da
la fine della riga corrente.

119

Pagina 160

Parte II: diventare un Power User Linux

■ i: il comando di inserimento. Con questo comando, puoi inserire del testo che inizia con
a sinistra del cursore.
■ I: il comando di inserimento all'inizio. Con questo comando puoi inserire del testo that
inizia all'inizio della riga corrente.
■ o: il comando apri sotto. Questo comando apre una riga sotto la riga corrente
e ti mette in modalità di inserimento.
■ O: il comando di apertura precedente. Questo comando apre una riga sopra la riga corrente
e ti mette in modalità di inserimento.

Quando si è in modalità di inserimento, - INSERT - appare nella parte inferiore dello schermo.

Digita alcune parole e premi Invio. Ripeti l'operazione un paio di volte fino ad ottenere alcune righe di
testo. Quando hai finito di digitare, premi Esc per tornare alla modalità di comando. Ora che tu
avere un file con del testo, prova a muoverti nel testo con i tasti o le lettere
descritto nella sezione successiva.

Ricorda il tasto Esc! Ti riporta sempre in modalità di comando. Ricorda che a volte devi premere Esc
due volte. Ad esempio, se si digita i due punti (:) per accedere alla modalità ex, è necessario premere Esc due volte per tornare alla modalità di comando.
Muoversi nel testo
Per spostarti nel testo, puoi utilizzare le frecce su, giù, destra e sinistra. Tuttavia,
molti dei tasti per spostarsi sono proprio sotto la punta delle dita quando sono dentro
posizione di battitura:

■ Tasti freccia: spostano il cursore su, giù, sinistra o destra nel file di un carattere
Al tempo. Per spostarti a sinistra ea destra, puoi anche usare Backspace e la barra spaziatrice,
rispettivamente. Se preferisci tenere le dita sulla tastiera, sposta il cursore
con h (sinistra), l (destra), j (giù) ok (su).
■ w: sposta il cursore all'inizio della parola successiva (delimitata da spazi, tabulazioni,
o punteggiatura).
■ W: sposta il cursore all'inizio della parola successiva (delimitata da spazi o tabulazioni).
■ b: sposta il cursore all'inizio della parola precedente (delimitata da spazi,
tabulazioni o punteggiatura).
■ B: sposta il cursore all'inizio della parola precedente (delimitata da spazi
o schede).
■0 (zero): sposta il cursore all'inizio della riga corrente.

■ $: sposta il cursore alla fine della riga corrente.

120

Pagina 161

Capitolo 5: Lavorare con i file di testo

■ H: sposta il cursore nell'angolo superiore sinistro dello schermo (prima riga sullo schermo).

■ M: sposta il cursore sul primo carattere della riga centrale sullo schermo.
■ L: sposta il cursore nell'angolo inferiore sinistro dello schermo (ultima riga sullo schermo).

Eliminazione, copia e modifica del testo


L'unica altra modifica che devi sapere è come eliminare, copiare o modificare il testo. La x, d,
I comandi y e c possono essere utilizzati per eliminare e modificare il testo. Questi possono essere usati insieme a
tasti di movimento (frecce, PgUp, PgDn, lettere e tasti speciali) e numeri da indicare
esattamente ciò che stai eliminando, copiando o modificando. Considera i seguenti esempi:

■ x: elimina il carattere sotto il cursore.


■ X: elimina il carattere immediatamente prima del cursore.
■d <?>: Elimina parte del testo.
■c <?>: Modifica parte del testo.

■y <?>: Annulla (copia) del testo.

Il <?> Dopo ogni lettera nell'elenco precedente identifica il luogo in cui è possibile utilizzare un file
comando di movimento per scegliere cosa eliminare, modificare o strappare. Per esempio:

■ dw: elimina (d) una parola (w) dopo la posizione corrente del cursore.

■ db: elimina (d) una parola (b) prima della posizione corrente del cursore.
■ dd: elimina (d) l'intera riga corrente (d).
■c $: modifica (c) i caratteri (effettivamente li cancella) dal carattere corrente
alla fine della riga corrente ($) e passa alla modalità di input.
■ c0: cambia (c) (di nuovo, cancella i caratteri) dal carattere precedente al carattere
all'inizio della riga corrente (0) e passa alla modalità di input.
■ cl: cancella (c) la lettera corrente (l) e passa alla modalità di immissione.
■ cc: cancella (c) la riga (c) e passa alla modalità di immissione.
■ yy: copia (y) la riga corrente (y) nel buffer.
■ y): copia (y) la frase corrente ()), a destra del cursore, nel buffer.
■ y}: copia (y) il paragrafo corrente (}), a destra del cursore, nel buffer.

Qualsiasi comando appena mostrato può essere ulteriormente modificato utilizzando i numeri, come puoi vedere in
i seguenti esempi:

■ 3dd: elimina (d) tre (3) righe (d), iniziando dalla riga corrente.
5
■ 3dw: cancella (d) le tre (3) parole successive (w).
■ 5cl: modifica (c) le successive cinque (5) lettere (l) (ovvero rimuove le lettere e
entra in modalità di input).

121
Pagina 162

Parte II: diventare un Power User Linux

■ 12j: sposta verso il basso (j) di 12 righe (12).


■ 5cw: cancella (c) le successive cinque (5) parole (w) e passa alla modalità di immissione.
■ 4y): copia (y) le successive quattro (4) frasi ()).

Incollare (inserire) testo


Dopo che il testo è stato copiato nel buffer (eliminandolo, modificandolo o estraendolo), puoi farlo
rimetti quel testo nel tuo file usando la lettera p o P. Con entrambi i comandi, il testo più
recentemente memorizzato nel buffer viene inserito nel file in modi diversi.

■ P: posiziona il testo copiato a sinistra del cursore se il testo è composto da lettere o


parole; inserisce il testo copiato sopra la riga corrente se il testo copiato lo contiene
righe di testo.
■ p: posiziona il testo memorizzato nel buffer a destra del cursore se il testo è composto da lettere o
parole; inserisce il testo nel buffer sotto la riga corrente se il testo nel buffer lo contiene
righe di testo.

Ripetendo i comandi
Dopo aver eliminato, modificato o incollato il testo, è possibile ripetere l'azione digitando un punto (.).
Ad esempio, con il cursore all'inizio del nome Joe, digiti cw e digiti Jim
per cambiare Joe in Jim. Cerchi la prossima occorrenza di Joe nel file, posiziona il file
cursore all'inizio del nome e premere un punto. La parola cambia in Jim e
puoi cercare l'occorrenza successiva. Puoi scorrere un file in questo modo, premendo n per andare
all'occorrenza successiva e punto (.) per cambiare la parola.

Uscita da vi
Per concludere, usa i seguenti comandi per salvare o chiudere il file:

■ ZZ: salva le modifiche correnti al file ed esce da vi.


■: w: salva il file corrente ma non esce da vi.
■: wq: funziona come ZZ.
■: q: interrompe il file corrente. Funziona solo se non sono presenti modifiche non salvate.
■: q! - Esclude il file corrente e non salva le modifiche appena apportate al file.

Se hai davvero cestinato il file per errore, il: q! Il comando è il modo migliore per uscire e abbandonare le modifiche. Il
il file ritorna alla versione modificata più di recente. Quindi, se hai appena salvato con: w, sei bloccato con le modifiche
a quel punto. Tuttavia, nonostante aver salvato il file, puoi digitare u per annullare le modifiche (fino al file
all'inizio della sessione di modifica, se lo desideri), quindi salva di nuovo.

122

Pagina 163

Capitolo 5: Lavorare con i file di testo

Hai imparato alcuni comandi di modifica di vi. Descriverò più comandi di seguito
sezioni. Prima, tuttavia, considera i seguenti suggerimenti per appianare le tue prime prove con vi:

■ Esc: ricorda che Esc ti riporta alla modalità di comando. (Ho guardato le persone
premere ogni tasto sulla tastiera cercando di uscire da un file.) Esc seguito da ZZ ottiene
si esce dalla modalità di comando, salva il file ed esce.
■ u: premere u per annullare la modifica precedente apportata. Continua a premere u per annullare il
cambiare prima di quello e quello prima di quello.
■ Ctrl + R: se si decide di non voler annullare il precedente comando di annullamento, utilizzare
Ctrl + R per Ripeti. In sostanza, questo comando annulla il tuo annullamento.
■ Caps Lock: attenzione a non premere maiuscole per errore. Tutto ciò che digiti in vi ha
un significato diverso quando le lettere sono in maiuscolo. Non ricevi un avviso che
stai digitando maiuscolo; le cose iniziano a comportarsi in modo strano.
■ :! comando —Puoi eseguire un comando di shell mentre sei in vi usando:! seguito
da un nome di comando di shell. Ad esempio, digita:! Date per visualizzare la data corrente
e ora, digita:! pwd per vedere qual è la tua directory corrente, oppure digita:! jobs in
controlla se hai lavori in esecuzione in background. Quando il comando
completato, premere Invio e si torna a modificare il file. Potresti anche usare
questa tecnica per avviare una shell (:! bash) da vi, eseguire alcuni comandi da
quella shell, quindi digita exit per tornare a vi. (Consiglio di fare un salvataggio prima
scappando alla shell, nel caso ti dimentichi di tornare a vi.)
■ Ctrl + G: se dimentichi ciò che stai modificando, premendo questi tasti viene visualizzato il nome
del file che stai modificando e la riga corrente in cui ti trovi in ​fondo
dello schermo. Visualizza anche il numero totale di righe nel file, la percentuale
di quanto ti trovi nel file e del numero di colonna su cui si trova il cursore. Questo
ti aiuta solo a orientarti dopo che ti sei fermato per una tazza di caffè alle 3 del mattino

Saltando nel file


Oltre ai pochi comandi di movimento descritti in precedenza, ci sono altri modi di muoversi
attorno a un file vi. Per provarli, apri un file di grandi dimensioni a cui non puoi fare molti danni.
(Prova a copiare / etc / services in / tmp e ad aprirlo in vi.) Ecco alcuni movimenti
comandi che puoi usare:

■ Ctrl + f: pagine successive, una pagina alla volta.


■ Ctrl + b: torna indietro, una pagina alla volta.
■ Ctrl + d: pagine avanti di mezza pagina alla volta.
■ Ctrl + u: torna indietro di mezza pagina alla volta.
5
■ G: va all'ultima riga del file.
■ 1G: va alla prima riga del file.

■ 35G: va a qualsiasi numero di riga (35, in questo caso).

123

Pagina 164

Parte II: diventare un Power User Linux

Ricerca di testo
Per cercare l'occorrenza successiva o precedente di testo nel file, utilizzare la barra (/) o
il punto interrogativo (?). Segui la barra o il punto interrogativo con un motivo (stringa di
text) per cercare in avanti o indietro, rispettivamente, quel pattern. All'interno della ricerca, tu
può anche usare metacaratteri. Ecco alcuni esempi:

■/ hello: cerca in avanti la parola hello.


■? Arrivederci: cerca all'indietro la parola arrivederci.
■ /The.*foot: cerca una riga contenente la parola The e inoltre,
dopo di che ad un certo punto, la parola piede.
■? [ PP ] rint: cerca all'indietro la stampa o la stampa. Ricorda quel caso
è importante in Linux, quindi usa le parentesi per cercare le parole che potrebbero avere
lettere maiuscole diverse.

Dopo aver inserito un termine di ricerca, digita semplicemente n o N per cercare di nuovo nello stesso
direzione (n) o la direzione opposta (N) per il termine.

Utilizzando la modalità ex
L'editor vi era originariamente basato sull'ex editor, che non ti permetteva di lavorare a schermo intero
modalità. Tuttavia, ti ha permesso di eseguire comandi che ti consentono di trovare e modificare il testo
una o più righe alla volta. Quando digiti i due punti e il cursore va in fondo a
sullo schermo, sei essenzialmente in modalità ex. I seguenti sono esempi di alcuni di questi ex
comandi per la ricerca e la modifica del testo. (Ho scelto le parole Local e Remote per
cerca, ma puoi usare qualsiasi parola appropriata.)

■: g / Local: cerca la parola Local e stampa ogni occorrenza di quella riga


dal file. (Se è presente più di una schermata, l'output viene reindirizzato al file more
comando.)
■: s / Local / Remote: sostituisce Remote per la prima occorrenza della parola
Locale sulla linea corrente.
■: g / Local / s // Remote: sostituisce la prima occorrenza della parola Local on
ogni riga del file con la parola Remote.
■: g / Local / s // Remote / g: sostituisce ogni occorrenza della parola Local con
la parola Remote nell'intero file.
■: g / Local / s // Remote / gp: sostituisce ogni occorrenza della parola Local con
la parola Remote nell'intero file, quindi stampa ogni riga in modo da poter vedere il file
cambia (piping attraverso di meno se l'output riempie più di una pagina).

Ulteriori informazioni su vi e vim


Per saperne di più sull'editor vi, prova a digitare vimtutor. Il comando vimtutor apre un file
tutorial nell'editor vim che ti guida attraverso i comandi e le funzionalità comuni che puoi
utilizzare in vim.

124

Pagina 165

Capitolo 5: Lavorare con i file di testo

Ricerca di file
Anche un'installazione Linux di base può contenere migliaia di file installati. Per aiutarti a trovare
file sul tuo sistema, puoi usare comandi come individuare (per trovare i comandi per nome),
find (per trovare file in base a molti attributi diversi) e grep (per cercare all'interno del testo
file per trovare righe nei file che contengono testo di ricerca).

Utilizzo di individuare per trovare i file per nome


Sulla maggior parte dei sistemi Linux (Fedora e RHEL inclusi), il comando updatedb viene eseguito una volta per
giorno per raccogliere i nomi dei file in tutto il sistema Linux in un database. Correndo
il comando locate, puoi cercare in quel database per trovare la posizione dei file archiviati in
quel database.

Ecco alcune cose che dovresti sapere sulla ricerca di file utilizzando il file Locate
comando:

■ Esistono vantaggi e svantaggi nell'utilizzo di Locate per trovare i nomi dei file
del comando find. Un comando di localizzazione trova i file più velocemente perché esegue la ricerca
un database invece di dover cercare in tempo reale l'intero filesystem. Uno svantaggio
è che il comando locate non riesce a trovare alcun file aggiunto al sistema poiché il
la volta precedente in cui è stato creato il database. Non tutti i file nel tuo filesystem sono memorizzati
nel database. Il contenuto del file /etc/updatedb.conf limita quale file-
i nomi vengono raccolti eliminando i tipi di mount selezionati, i tipi di filesystem, i tipi di file,
e punti di montaggio. Ad esempio, i nomi dei file non vengono raccolti da montati in remoto
filesystem (cifs, nfs e così via) o CD o DVD montati localmente (iso9660).
I percorsi contenenti file temporanei (/ tmp) e file di spool (/ var / spool / cups) sono
anche potati. Puoi aggiungere elementi da sfoltire (o rimuovere alcuni elementi che non desideri
sfoltito) il database di localizzazione in base alle proprie esigenze. In RHEL 7, il file updatedb.conf
contiene quanto segue:
PRUNE_BIND_MOUNTS = "sì"

PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup


cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.
sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustro
mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs
securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs "

PRUNENAMES = ".git .hg .svn"

PRUNEPATHS = "/ afs / media / mnt / net / sfs / tmp / udev / var / cache /
ccache / var / lib / yum / yumdb / var / spool / cups / var / spool / squid / 5
var / tmp "

■ Come utente normale, non puoi vedere alcun file dal database di individuazione che non puoi
vedere normalmente nel filesystem. Ad esempio, se non puoi digitare ls per visualizzare i file in formato
nella directory / root, non è possibile individuare i file archiviati in quella directory.

125
Pagina 166

Parte II: diventare un Power User Linux

■ Quando si cerca una stringa, la stringa può essere visualizzata ovunque nel percorso di un file.
Ad esempio, se cerchi passwd, potresti visualizzare / etc / passwd,
/ usr / bin / passwd, /home/chris/passwd/pwdfiles.txt e molti altri
file con passwd nel percorso.
■ Se si aggiungono file al sistema dopo l'esecuzione di updatedb, non è possibile individuarli
file fino a quando updatedb non viene eseguito di nuovo (probabilmente quella notte). Per ottenere il database in
contiene tutti i file fino al momento corrente, puoi semplicemente eseguire updatedb da
la shell come radice.

Di seguito sono riportati alcuni esempi di utilizzo del comando Locate per cercare file:

$ individuare .bashrc
/etc/skel/.bashrc
/home/cnegus/.bashrc
# individuare .bashrc
/etc/skel/.bashrc
/home/bill/.bashrc
/home/joe/.bashrc
/root/.bashrc

Quando viene eseguito come utente normale, locate trova solo .bashrc in / etc / skel e l'utente
propria home directory. Eseguito come root, lo stesso comando individua i file .bashrc in tutti
directory home.

$ individuare muttrc
/usr/share/doc/mutt-1.5.20/sample.muttrc
...
$ individuare -i muttrc
/ etc / Muttrc
/etc/Muttrc.local
/usr/share/doc/mutt-1.5.20/sample.muttrc
...

Utilizzando Locate -i, i nomi dei file vengono trovati indipendentemente dal caso. Nell'esempio precedente,
Muttrc e Muttrc.local sono stati trovati con -i mentre non sono stati trovati senza
quell'opzione.

$ Locate services
/ etc / services
/usr/share/services/bmp.kmgio
/usr/share/services/data.kmgio

A differenza del comando find, che usa l'opzione -name per trovare i nomi dei file, il locate
Il comando individua la stringa immessa se esiste in una parte qualsiasi del percorso del file. Per esempio,
se cerchi servizi utilizzando il comando locate, trovi file e directory che
contenere la stringa di testo "servizi".

126

Pagina 167

Capitolo 5: Lavorare con i file di testo

Ricerca di file con find


Il comando find è il miglior comando per cercare i file nel tuo filesystem, basato su
una varietà di attributi. Dopo che i file sono stati trovati, puoi agire anche su quei file (usando l'estensione
-exec o -okay) eseguendo i comandi che desideri su di essi.

Quando esegui find, cerca il tuo filesystem in tempo reale, il che lo fa funzionare più lentamente di
Locate, ma ti offre una visualizzazione aggiornata dei file sul tuo sistema Linux.
Tuttavia, puoi anche dire a find di iniziare in un punto particolare del filesystem, quindi il file
la ricerca può andare più veloce limitando l'area del filesystem che si sta cercando.
Quasi qualsiasi attributo di file a cui puoi pensare può essere utilizzato come opzione di ricerca. Puoi cercare
per nomi di file, proprietà, autorizzazione, dimensione, tempi di modifica e altri attributi. voi
può persino utilizzare combinazioni di attributi. Di seguito sono riportati alcuni esempi di base dell'utilizzo di
trova comando:

$ find
$ trova / ecc
# trova / ecc
$ trova $ HOME -ls

Eseguito su una riga da solo, il comando find trova tutti i file e le directory sotto l'attuale
directory. Se vuoi cercare da un punto particolare nell'albero delle directory, aggiungi semplicemente il file
nome della directory che si desidera cercare (come / etc). Se corri trova come un normale file
utente, non si dispone di autorizzazioni speciali per trovare file leggibili solo da root
utente. Quindi find produce una serie di messaggi di errore. Se esegui find come utente root, trova
/ etc trova tutti i file in / etc.

Un'opzione speciale per il comando find è -ls. Un lungo elenco (proprietà, autorizzazione, dimensioni,
e così via) viene stampato con ogni file quando aggiungi -ls al comando find (simile a
output del comando ls -l). Questa opzione ti aiuta negli esempi successivi quando lo desideri
verificare di aver trovato file che contengono la proprietà, le dimensioni, i tempi di modifica o
altri attributi che stai cercando di trovare.

Se, come utente normale, stai cercando un'area del filesystem in cui non hai l'autorizzazione completa per accedere a tutti i file
file che contiene (come la directory / etc), potresti ricevere molti messaggi di errore quando cerchi con find.
Per sbarazzarsi di questi messaggi, indirizza gli errori standard a / dev / null. Per farlo, aggiungi quanto segue alla fine del file
riga di comando: 2> / dev / null. Il 2> reindirizza l'errore standard (STDERR) all'opzione successiva (in questo caso / dev /
null, dove l'output viene scartato).

5
Ricerca di file per nome
Per trovare i file per nome, puoi usare le opzioni -name e -iname. La ricerca viene eseguita da
nome di base del file; i nomi delle directory non vengono cercati per impostazione predefinita. Per fare la ricerca

127

Pagina 168

Parte II: diventare un Power User Linux

più flessibile, puoi utilizzare caratteri di corrispondenza file, come asterischi (*) e domanda
segni (?), come nei seguenti esempi:

# trova / etc -name passwd


/etc/pam.d/passwd
/ etc / passwd
# trova / etc -iname '* passwd *'
/etc/pam.d/passwd
/ etc / passwd-
/etc/passwd.OLD
/ etc / passwd
/ etc / MYPASSWD
/ etc / security / opasswd

Utilizzando l'opzione -name e senza asterischi, il primo esempio sopra elenca tutti i file nel file
directory / etc che sono denominate esattamente passwd. Usando invece -iname, puoi abbinare
qualsiasi combinazione di lettere maiuscole e minuscole. Usando gli asterischi, puoi abbinare qualsiasi nome di file
include la parola passwd.

Ricerca di file per dimensione


Se il tuo disco si sta riempiendo e vuoi scoprire dove sono i tuoi file più grandi, puoi farlo
cerca nel tuo sistema per dimensione del file. L'opzione -size ti consente di cercare file che
sono esattamente, più piccole o più grandi di una dimensione selezionata, come puoi vedere di seguito
esempi:

$ find / usr / share / -size + 10M


$ find / principalmentebig -size -1M
$ find / bigdata -size + 500M -size -5G -exec du -sh {} \;
4.1G /bigdata/images/rhel6.img
606M /bigdata/Fedora-16-i686-Live-Desktop.iso
560M /bigdata/dance2.avi

Il primo esempio nel codice precedente trova file più grandi di 10 MB. Il secondo trova i file
meno di 1 MB. Nel terzo esempio, cerco immagini ISO e file video che siano
tra 500 MB e 5 GB. Ciò include un esempio dell'opzione -exec (che descrivo
in seguito) per eseguire il comando du su ogni file per vederne le dimensioni.
Ricerca di file per utente
Puoi cercare un particolare proprietario (-user) o gruppo (-group) quando provi a trovare i file.
Utilizzando -not e -or, è possibile affinare la ricerca di file associati a utenti specifici
e gruppi, come puoi vedere nei seguenti esempi:

128

Pagina 169

Capitolo 5: Lavorare con i file di testo

$ find / home -user chris -ls


131077 4 -rw-r - r-- 1 chris chris 379 29 giugno 2014 ./.bashrc
# trova / home -user chris -o -user joe -ls
131077 4 -rw-r - r-- 1 chris chris 379 29 giugno 2014 ./.bashrc
181022 4 -rw-r - r-- 1 joe joe 379 15 giugno 2014 ./.bashrc
# trova / etc -group ntp -ls
131438 4 drwxrwsr-x 3 root ntp 4096 9 marzo 22:16 / etc / ntp
# trova / var / spool -non -user root -ls
262100 0 -rw-rw ---- 1 rpc mail 0 Jan 27 2014 / var / spool / mail / rpc
278504 0 -rw-rw ---- 1 joe mail 0 3 aprile 2014 / var / spool / mail / joe
261230 0 -rw-rw ---- 1 fattura mail 0 dic 18 2014 / var / spool / mail / bill
277373 0 -rw-rw ---- 1 chris mail 0 15 marzo 2014 / var / spool / mail / chris

Il primo esempio restituisce un lungo elenco di tutti i file nella directory / home che sono
di proprietà dell'utente chris. Il prossimo elenca i file di proprietà di chris o joe. Il comando find
di / etc mostra tutti i file che hanno ntp come assegnazione di gruppo principale. L'ultimo
l'esempio mostra tutti i file in / var / spool che non sono di proprietà di root. Puoi vedere i file
di proprietà di altri utenti nell'output di esempio.

Ricerca di file con autorizzazione


La ricerca di file per autorizzazione è un ottimo modo per rilevare problemi di sicurezza sul tuo
sistema o scoprire problemi di accesso. Proprio come hai modificato le autorizzazioni sui file utilizzando i numeri
o lettere (con il comando chmod), puoi anche trovare file in base al numero o
permessi di lettere insieme alle opzioni -perm. (Fare riferimento al Capitolo 4, "Spostamento in
Filesystem ", per vedere come utilizzare numeri e lettere con chmod per riflettere i permessi del file.)

Se usi i numeri per il permesso, come faccio di seguito, ricorda che i tre numeri rappresentano
autorizzazioni per l'utente, il gruppo e altro. Ciascuno di questi tre numeri varia dal n
permesso (0) al permesso completo di lettura / scrittura / esecuzione (7), aggiungendo lettura (4), scrittura (2) e
eseguire (1) bit insieme. Con un trattino (-) davanti al numero, tutti e tre i bit
indicato deve corrispondere; con un segno più (+) davanti, qualsiasi numero può corrispondere a
cerca per trovare un file. I numeri esatti completi devono corrispondere se non viene utilizzato né un trattino né un segno più.

Considera i seguenti esempi:

$ find / bin -perm 755 -ls


788884 28 -rwxr-xr-x 1 radice radice 28176 10 marzo 2014 / bin / echo

$ find / home / chris / -perm -222 -type d -ls


144503 4 drwxrwxrwx 8 chris chris 4096 23 giugno 2014 / home / chris

Cercando -perm 755, qualsiasi file o directory con esattamente rwxr-xr-x


i permessi sono abbinati. Utilizzando -perm -222, solo i file che dispongono dell'autorizzazione di scrittura per
5

129

Pagina 170
Parte II: diventare un Power User Linux

utente, gruppo e altro vengono abbinati. Si noti che, in questo caso, viene aggiunto il -type d
corrisponde solo alle directory.

$ find / myreadonly -perm +222 -type f


685035 0 -rw-rw-r-- 1 chris chris 0 30 dic 2014 / tmp / write / abc

$ find. -perm -002 -tipo f -ls


266230 0 -rw-rw-rw- 1 chris chris 0 20 dicembre 2014 ./LINUX_BIBLE/a

Usando -perm +222, puoi trovare qualsiasi file (-type f) con il permesso di scrittura attivato
per l'utente, gruppo o altro. Potresti farlo per assicurarti che tutti i file siano di sola lettura
una parte particolare del filesystem (in questo caso, sotto la directory / myreadonly). Il
l'ultimo esempio, -perm +002, è molto utile per trovare file che hanno il permesso di scrittura aperto
per "altro", indipendentemente da come sono impostati gli altri bit di autorizzazione.

Ricerca di file per data e ora


La data e l'ora vengono memorizzate per ogni file quando viene creato, quando vi si accede, quando
il suo contenuto viene modificato o quando vengono modificati i suoi metadati. I metadati includono proprietario, gruppo,
data e ora, dimensione del file, autorizzazioni e altre informazioni memorizzate nell'inode del file. voi
potrebbe voler cercare dati di file o modifiche ai metadati per uno dei seguenti motivi:

■ Hai appena modificato il contenuto di un file di configurazione e non riesci a ricordare


quale. Quindi cerchi / etc per vedere cosa è cambiato negli ultimi 10 minuti:
$ trova / etc / -mmin -10

■ Sospetti che qualcuno abbia violato il tuo sistema tre giorni fa. Quindi cerchi il file
sistema per vedere se è stata modificata la proprietà o le autorizzazioni di qualche comando in
negli ultimi tre giorni:
$ find / bin / usr / bin / sbin / usr / sbin -ctime -3

■ Desideri trovare file nel tuo server FTP (/ var / ftp) e nel server web (/ var / www)
a cui non si accede da più di 300 giorni, quindi puoi vedere se necessario
essere cancellato:
$ find / var / ftp / var / www -atime +300

Come puoi dedurre dagli esempi, puoi cercare modifiche ai contenuti o ai metadati su un file
un certo numero di giorni o minuti. Le opzioni time (-atime, -ctime e -mtime) si abilitano
per eseguire la ricerca in base al numero di giorni trascorsi da quando è stato eseguito l'accesso, modificato o ricevuto ciascun file
i suoi metadati sono cambiati. Le opzioni min (-amin, -cmin e -mmin) fanno lo stesso in pochi minuti.

I numeri forniti come argomenti alle opzioni min e time sono preceduti da a
trattino (per indicare un'ora dall'ora corrente a quel numero di minuti o giorni fa) o
un plus (per indicare il tempo dal numero di minuti o giorni fa e precedenti). Senza trattino
o più, il numero esatto viene abbinato.

130

Pagina 171

Capitolo 5: Lavorare con i file di testo

Utilizzo di "non" e "o" durante la ricerca dei file


Con le opzioni -non e -oppure puoi perfezionare ulteriormente le tue ricerche. Potrebbero esserci delle volte
quando si desidera trovare file di proprietà di un determinato utente, ma non assegnati a un determinato
gruppo. Potresti volere file più grandi di una certa dimensione, ma più piccoli di un'altra dimensione. O tu
potrebbe voler trovare file di proprietà di uno qualsiasi dei diversi utenti. Le opzioni -not e -o possono aiutare
lo fai. Considera i seguenti esempi:

■ Esiste una directory condivisa chiamata / var / all. Questa riga di comando ti consente di
trova i file di proprietà di joe o chris.
$ trova / var / all \ (-user joe -o -user chris \) -ls
679967 0 -rw-r - r-- 1 chris chris 0 31 dic 2014 / var / all / cn
679977 0 -rw-r - r-- 1 joe joe 4379 31 dicembre 2014 / var / all / jj
679972 0 -rw-r - r-- 1 joe sales 0 Dec 31 2014 / var / all / js

■ Questa riga di comando cerca i file di proprietà dell'utente joe, ma solo quelli
non sono assegnati al gruppo joe:
$ trova / var / all / -user joe -not -group joe -ls
679972 0 -rw-r - r-- 1 joe sales 0 Dec 31 2014 / var / all / js

■È inoltre possibile aggiungere più requisiti alle ricerche. Qui, un file deve essere
di proprietà dell'utente joe e deve anche avere una dimensione superiore a 1 MB:
$ trova / var / all / -user joe -e -size + 1M -ls
679977 0 -rw-r - r-- 1 joe joe 4379 31 dicembre 2014 / var / all / jj

Trovare file ed eseguire comandi


Una delle caratteristiche più potenti del comando find è la capacità di eseguire
comandi su tutti i file che trovi. Con l'opzione -exec, il comando che usi viene eseguito
su ogni file trovato, senza fermarsi a chiedere se va bene. L'opzione -ok si ferma a ciascuna
file corrispondente e chiede se si desidera eseguire il comando su di esso.

Il vantaggio di usare -ok è che, se stai facendo qualcosa di distruttivo, puoi farlo
assicurati di accettare ogni file individualmente prima che il comando venga eseguito su di esso. La sintassi per
usare -exec e -ok è lo stesso:

$ trova [opzioni] -exec comando {} \;


$ trova [opzioni] -ok comando {} \;

Con -exec o -ok, esegui find con tutte le opzioni che ti piacciono per trovare i file che sei
cercando. Quindi inserisci l'opzione -exec o -ok, seguita dal comando che desideri
da eseguire su ogni file. Il set di parentesi graffe indica dove leggere sulla riga di comando
in ogni file trovato. Ogni file può essere incluso più volte nella riga di comando,

131

Pagina 172

Parte II: diventare un Power User Linux

se ti piace. Per terminare la riga, è necessario aggiungere una barra rovesciata e un punto e virgola (\;). Ecco
qualche esempio:

■ Questo comando trova qualsiasi file denominato iptables nella directory / etc e
include quel nome nell'output di un comando echo:
$ find / etc -iname iptables -exec echo "Ho trovato {}" \;
Ho trovato /etc/bash_completion.d/iptables
Ho trovato / etc / sysconfig / iptables

■ Questo comando trova tutti i file nella directory / usr / share che sono maggiori di
5 MB di dimensione. Quindi elenca la dimensione di ogni file con il comando du. L'output
di find viene quindi ordinato per dimensione, dal più grande al più piccolo. Con -exec inserito, tutto
le voci trovate vengono elaborate, senza chiedere:
$ find / usr / share -size + 5M -exec du {} \; | sort -nr
116932 /usr/share/icons/HighContrast/icon-theme.cache
69048 /usr/share/icons/gnome/icon-theme.cache
20564 /usr/share/fonts/cjkuni-uming/uming.ttc

■ L'opzione -ok consente di scegliere, uno alla volta, se ogni file trovato è
agito dal comando che inserisci. Ad esempio, vuoi trovare tutti i file che
appartengono a joe nella directory / var / allusers (e nelle sue sottodirectory) e spostati
loro nella directory / tmp / joe:
# trova / var / allusers / -user joe -ok mv {} / tmp / joe / \;
<mv ... /var/allusers/dict.dat>? y
<mv ... / var / allusers / five>? y

Notare nel codice precedente che viene richiesto per ogni file trovato prima di esso
spostato nella directory / tmp / joe. Dovresti semplicemente digitare y e premere Invio su ogni riga per
spostare il file o premere semplicemente Invio per saltarlo.

Per ulteriori informazioni sul comando find, digita man find .

Ricerca nei file con grep


Se vuoi cercare file che contengono un certo termine di ricerca, puoi usare grep
comando. Con grep, puoi cercare un singolo file o cercare un'intera struttura di directory di
file in modo ricorsivo.

Quando effettui una ricerca, puoi avere ogni riga contenente il termine stampata sullo schermo
(output standard) o elenca semplicemente i nomi dei file che contengono il termine di ricerca. Di
default, grep ricerca il testo in modo sensibile al maiuscolo / minuscolo, sebbene tu possa farlo senza distinzione tra maiuscole e minuscole
anche ricerche.

Invece di cercare solo i file, puoi anche usare grep per cercare l'output standard. Quindi, se un file
restituisce molto testo e vuoi trovare solo le righe che contengono un certo testo,
puoi usare grep per filtrare solo quello che vuoi.

Di seguito sono riportati alcuni esempi di righe di comando grep, utilizzate per trovare stringhe di testo in uno o più file:

132

Pagina 173

Capitolo 5: Lavorare con i file di testo

$ grep desktop / etc / services


desktop-dna 2763 / tcp # Desktop DNA
desktop-dna 2763 / udp # Desktop DNA

$ grep -i desktop / etc / services


sco-dtmgr 617 / tcp # SCO Desktop Administration Server
sco-dtmgr 617 / udp # SCO Desktop Administration Server
airsync 2175 / tcp # Protocollo AirSync desktop di Microsoft
...

Nel primo esempio, è stato visualizzato un grep per la parola desktop nel file / etc / services
due righe. Cercando di nuovo, usando -i per non fare distinzione tra maiuscole e minuscole (come nel secondo esempio),
sono state prodotte 29 righe di testo.

Per cercare righe che non contengono una stringa di testo selezionata, usa l'opzione -v. Nel
Nell'esempio seguente, vengono visualizzate tutte le righe del file / etc / services tranne quelle
contenente il testo tcp (case-insensitive):

$ grep -vi tcp / etc / services

Per eseguire ricerche ricorsive, usa l'opzione -r e una directory come argomento. Il seguente
esempio include l'opzione -l, che elenca solo i file che includono il testo di ricerca, senza
mostrando le righe di testo effettive. La ricerca restituisce file che contengono i peerdns di testo
(senza distinzione tra maiuscole e minuscole).

$ grep -rli peerdns / usr / share / doc /


/usr/share/doc/dnsmasq-2.66/setup.html
/usr/share/doc/initscripts-9.49.17/sysconfig.txt
...

Il prossimo esempio cerca ricorsivamente nella directory / etc / sysconfig il termine root.
Elenca ogni riga in ogni file sotto la directory che contiene quel testo. Per farlo
più facile far risaltare il termine root su ogni riga, viene aggiunta l'opzione --color. Di
impostazione predefinita, il termine corrispondente viene visualizzato in rosso.

$ grep -ri --color root / etc / sysconfig /

Per cercare un termine nell'output di un comando, puoi reindirizzare l'output a grep


comando. In questo esempio, so che gli indirizzi IP sono elencati sulle linee di output dell'ip
comando che include la stringa inet. Quindi, uso grep per visualizzare solo quelle linee:

$ ip addr mostra | grep inet


inet 127.0.0.1/8 ambito host lo
inet 192.168.1.231/24 brd 192.168.1.255 scope globale wlan0

133

Pagina 174
Parte II: diventare un Power User Linux

Sommario
Essere in grado di lavorare con file di testo semplice è un'abilità fondamentale per l'utilizzo di Linux. Perché così
molti file di configurazione e file di documenti sono in formato di testo normale, è necessario diventarlo
esperto con un editor di testo per utilizzare efficacemente Linux. Trovare nomi di file e contenuti nei file
sono anche abilità critiche. In questo capitolo hai imparato a usare i comandi di localizzazione e ricerca
per trovare file e grep per cercare file.

Il capitolo successivo copre una varietà di modi per lavorare con i processi. Ecco, impari come
per vedere quali processi sono in esecuzione, eseguire i processi in primo piano e in background e
cambiare i processi (inviare segnali).

Esercizi
Usa questi esercizi per testare la tua conoscenza dell'uso dell'editor di testo vi (o vim), dei comandi
per la ricerca di file (individua e trova) e comandi per la ricerca di file (grep). Questi compiti
presumi di eseguire un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività
funziona anche su altri sistemi Linux). Se sei bloccato, vengono mostrate le soluzioni alle attività
Appendice B (sebbene in Linux ci siano spesso diversi modi per completare un'attività).

1. Copiare il file / etc / services nella directory / tmp. Apri il file / tmp / services
file in vim e cerca il termine WorldWideWeb. Cambia quello per leggere World
Wide Web.
2. Trova il paragrafo seguente nel tuo file / tmp / services (se non è presente, scegli
un paragrafo diverso) e spostalo alla fine di quel file.
# Notare che attualmente è politica di IANA assegnare un singolo
ben noto
# numero di porta sia per TCP che per UDP; quindi, la maggior parte delle voci qui ne ha due
inserimenti
# anche se il protocollo non supporta le operazioni UDP.
# Aggiornato da RFC 1700, "Assigned Numbers" (ottobre 1994). Non tutto
porti
# sono inclusi, solo quelli più comuni.

3. Utilizzando la modalità ex, cerca ogni occorrenza del termine tcp (case-sensitive) in
il tuo file / tmp / services e modificalo in QUALUNQUE.
4. Come utente normale, cerca nella directory / etc ogni file chiamato passwd. Reindirizzare
messaggi di errore dalla ricerca a / dev / null.

5. Crea una directory nella tua home directory chiamata TEST. Crea file in quella directory
denominato uno, due e tre che dispongono di autorizzazioni di lettura / scrittura / esecuzione complete per
tutti (utente, gruppo e altro). Costruisci un comando find per trovare quei file
e qualsiasi altro file con autorizzazione di scrittura aperta ad "altri" da casa tua
directory e sotto.

134

Pagina 175

Capitolo 5: Lavorare con i file di testo

6. Trova i file nella directory / usr / share / doc che non sono stati modificati in
più di 300 giorni.
7. Creare una directory / tmp / FILES. Trova tutti i file nella directory / usr / share
che sono più di 5 MB e meno di 10 MB e copiarli in / tmp / FILES
directory.
8. Trova tutti i file nella directory / tmp / FILES e fai una copia di backup di ogni file
nella stessa directory. Usa il nome esistente di ogni file e aggiungi semplicemente .mybackup a
creare ogni file di backup.

9. Installa il pacchetto kernel-doc in Fedora o Red Hat Enterprise Linux. Utilizzando


grep, cerca all'interno dei file contenuti in / usr / share / doc / kernel-doc *
directory per il termine e1000 (senza distinzione tra maiuscole e minuscole) ed elenca i nomi dei file che
contenere quel termine.

10. Cerca nuovamente il termine e100 0 nella stessa posizione, ma questa volta elenca ogni riga
che contiene il termine ed evidenzia il termine a colori.
5

135

Pagina 177
176

CAPITOLO

6
Gestione dei processi in esecuzione
IN QUESTO CAPITOLO
Visualizzazione dei processi

Processi in esecuzione in primo piano e in background

Processi di uccisione e ridimensionamento

I Multitasking significa che molti programmi possono essere eseguiti allo stesso tempo. Un'istanza di un file
il programma in esecuzione viene definito processo . Linux fornisce strumenti per elencare i processi in esecuzione,
n Oltre ad essere un sistema operativo multiutente, Linux è anche un sistema multitasking.
monitorare l'utilizzo del sistema e interrompere (o terminare) i processi quando necessario.

Da una shell è possibile avviare processi e quindi sospenderli, interromperli o ucciderli. Puoi anche metterli
sullo sfondo e portarli in primo piano. Questo capitolo descrive strumenti come ps, top,
kill, jobs e altri comandi per elencare e gestire i processi.

Comprensione dei processi


Un processo è un'istanza in esecuzione di un comando. Ad esempio, potrebbe esserci un comando vi in
sistema. Ma se vi è attualmente eseguito da 15 utenti diversi, quel comando è rappresentato da 15
diversi processi in esecuzione.

Un processo viene identificato nel sistema da ciò che viene chiamato ID processo . Quell'ID processo è unico per
il sistema attuale. In altre parole, nessun altro processo può utilizzare quel numero come ID di processo mentre quello
il primo processo è ancora in esecuzione. Tuttavia, al termine di un processo, un altro processo può riutilizzare quel numero.

Insieme a un numero ID processo, altri attributi sono associati a un processo. Ogni processo,
quando viene eseguito, è associato a un particolare account utente e account di gruppo. Quel conto
le informazioni aiutano a determinare a quali risorse di sistema può accedere il processo. Per esempio,
i processi eseguiti come utente root hanno molto più accesso ai file di sistema e alle risorse rispetto a un processo
in esecuzione come utente normale.

La capacità di gestire i processi sul sistema è fondamentale per un amministratore di sistema Linux.
A volte, i processi in fuga possono distruggere le prestazioni del tuo sistema. Trovare e trattare
i processi, basati su attributi come la memoria e l'utilizzo della CPU, sono trattati in questo capitolo.

137

Pagina 178

Parte II: diventare un Power User Linux

I comandi che visualizzano le informazioni sui processi in esecuzione ottengono la maggior parte di tali informazioni dai dati non elaborati archiviati in
il file system / proc. Ogni processo memorizza le proprie informazioni in una sottodirectory di / proc, dal nome del processo
ID di quel processo. È possibile visualizzare alcuni di questi dati grezzi visualizzando il contenuto dei file in una di queste directory
(usando cat o meno comandi).

Processi di quotazione
Dalla riga di comando, il comando ps è il comando più vecchio e più comune per l'elenco
processi attualmente in esecuzione sul sistema. Il comando superiore fornisce una più orientata allo schermo
approccio all'elencazione dei processi e può essere utilizzato anche per modificare lo stato dei processi. Se sei
usando il desktop GNOME, puoi usare gnome-system-monitor per fornire un mezzo grafico
di lavorare con i processi. Questi comandi sono descritti nelle sezioni seguenti.

Elenca i processi con ps


L'utilità più comune per controllare i processi in esecuzione è il comando ps. Usalo per vedere
quali programmi sono in esecuzione, le risorse che stanno utilizzando e chi li esegue. Il
il seguente è un esempio del comando ps:

$ ps u
PID UTENTE% CPU% MEM VSZ RSS TTY STAT START TIME COMMAND
jake 2147 0,0 0,7 1836 1020 tty1 S + 14:50 0:00 -bash
jake 2310 0,0 0,7 2592912 tty1 R + 18:22 0:00 ps u

In questo esempio, l'opzione u chiede che vengano visualizzati i nomi utente e altre informazioni
come l'ora in cui è stato avviato il processo e l'utilizzo della memoria e della CPU per i processi associati
con l'utente corrente. I processi visualizzati sono associati al terminale corrente
(tty1). Il concetto di terminale viene dai vecchi tempi, quando le persone lavoravano esclusivamente
dai terminali dei caratteri, quindi un terminale rappresentava tipicamente una singola persona in una singola
schermo. Ora puoi avere molti "terminali" su uno schermo aprendo più virtuali
terminali o finestre di terminale sul desktop.

In questa sessione di shell non sta succedendo molto. Il primo processo mostra che l'utente denominato
jake ha aperto una shell bash dopo aver effettuato l'accesso. Il processo successivo mostra che jake ha eseguito il
comando ps u. Il dispositivo terminale tty1 viene utilizzato per la sessione di accesso. Lo STAT
la colonna rappresenta lo stato del processo, con R che indica un processo attualmente in esecuzione
e S che rappresenta un processo di sonno.

Diversi altri valori possono essere visualizzati nella colonna STAT. Ad esempio, un segno più (+) indica che il processo è
associati alle operazioni in primo piano.

138

Pagina 179

Capitolo 6: Gestione dei processi in esecuzione

La colonna USER mostra il nome dell'utente che ha avviato il processo. Ogni processo è
rappresentato da un numero ID univoco denominato ID di processo (PID). Puoi usare il PID
se hai mai bisogno di uccidere un processo in fuga o inviare un altro tipo di segnale a un processo. Il
Le colonne% CPU e% MEM mostrano le percentuali del processore e della memoria ad accesso casuale,
rispettivamente, che il processo sta consumando. 6
VSZ (dimensione del set virtuale) mostra la dimensione del processo dell'immagine (in kilobyte) e RSS (residente
set size) mostra la dimensione del programma in memoria. Le dimensioni VSZ e RSS possono essere
diverso perché VSZ è la quantità di memoria allocata per il processo, mentre RSS
è l'importo effettivamente utilizzato. La memoria RSS rappresenta la memoria fisica che
non può essere scambiato.

START mostra l'ora di inizio del processo e TIME mostra il cumulativo


tempo di sistema utilizzato. (Molti comandi consumano pochissimo tempo della CPU, come indicato da 0:00 per
processi che non hanno nemmeno utilizzato un secondo intero del tempo della CPU.)

Molti processi in esecuzione su un computer non sono associati a un terminale. Un normale Linux
il sistema ha molti processi in esecuzione in background. Processi di sistema in background
eseguire attività come la registrazione dell'attività del sistema o l'ascolto dei dati in arrivo da
Rete. Vengono spesso avviati all'avvio di Linux e vengono eseguiti continuamente fino a quando il
il sistema si spegne. Allo stesso modo, l'accesso a un desktop Linux causa molti background
processi da avviare, come processi per la gestione dell'audio, pannelli desktop, autenticazione,
e altre funzionalità desktop.

Per sfogliare tutti i processi in esecuzione sul tuo sistema Linux per l'utente corrente, aggiungi
la pipe (|) e il comando less a ps ux:

$ ps ux | Di meno

Per sfogliare tutti i processi in esecuzione per tutti gli utenti del sistema, utilizzare ps aux
comando come segue:

$ ps aux | Di meno

Una barra verticale (situata sopra il carattere barra rovesciata sulla tastiera) consente di dirigere il file
output di un comando come input del comando successivo. In questo esempio, l'output
del comando ps (un elenco di processi) è diretto al comando less, che abilita
di sfogliare tali informazioni. Usa la barra spaziatrice per sfogliare e digita q per terminare
la lista. È inoltre possibile utilizzare i tasti freccia per spostare una riga alla volta nell'output.

Il comando ps può essere personalizzato per visualizzare le colonne di informazioni selezionate e per
ordina le informazioni in base a una di queste colonne. Utilizzando l'opzione -o, puoi usare le parole chiave per
indica le colonne che vuoi elencare con ps. Ad esempio, il prossimo esempio elenca ogni
processo in esecuzione (-e) e quindi segue l'opzione -o con ogni colonna di informazioni I
desidera visualizzare, tra cui:

139

Pagina 180

Parte II: diventare un Power User Linux

ID processo (pid), nome utente (utente), ID utente (uid), nome del gruppo (gruppo), ID gruppo
(gid), memoria virtuale allocata (vsz), memoria residente utilizzata (rss) e comando completo
linea che è stata eseguita (comm). Per impostazione predefinita, l'output viene ordinato in base al numero ID del processo.

$ ps -eo pid, utente, uid, gruppo, gid, vsz, rss, comm | Di meno
COMANDO RSS GID VSZ GRUPPO UTENTI PID
1 radice radice 0 19324 1320 iniz
2 radice radice 0 0 0 kthreadd

Se desideri ordinare in base a una colonna specifica, puoi utilizzare l'opzione sort =. Ad esempio, per vedere
quali processi utilizzano più memoria, ordino in base al campo rss. Ordina dal più basso
uso della memoria al massimo. Poiché voglio vedere prima quelli più alti, metto un trattino davanti
di quell'opzione per ordinare (sort = -rss).

$ ps -eo pid, utente, gruppo, gid, vsz, rss, comm --sort = -rss | Di meno
COMANDO RSS GID VSZ GRUPPO UTENTI PID
12005 cnegus cnegus 13597 1271008 522192 firefox
5412 cnegus cnegus 13597 949584 157268 thunderbird-bin
25870 cnegus cnegus 13597 1332492 112952 swriter.bin

Fare riferimento alla pagina man di ps per informazioni su altre colonne di informazioni che è possibile visualizzare
e ordina per.

Elenco e modifica dei processi con top


Il comando top fornisce un mezzo orientato allo schermo per visualizzare i processi in esecuzione
il tuo sistema. Con top, l'impostazione predefinita è visualizzare i processi in base al tempo di CPU
stanno attualmente consumando. Tuttavia, puoi ordinare anche per altre colonne. Dopo di te
identificare un processo che si comporta male, puoi anche usare top per uccidere (terminare completamente) o renice
(ridefinire le priorità) quel processo.

Se vuoi essere in grado di uccidere o rinominare i processi, devi eseguire top come utente root. Se
si desidera solo visualizzare i processi e possibilmente uccidere o modificare i propri processi, è possibile
fallo come un utente normale. La Figura 6.1 mostra un esempio della finestra in alto:

Le informazioni generali sul sistema vengono visualizzate nella parte superiore dell'output superiore, seguite da
informazioni su ogni processo in esecuzione (o almeno quante ne possono essere visualizzate sullo schermo). A
in alto, puoi vedere da quanto tempo il sistema è attivo, quanti utenti sono attualmente registrati
nel sistema e quanta domanda c'è stata nel sistema negli ultimi 1, 5,
e 10 minuti.

Altre informazioni generali includono quanti processi (attività) sono attualmente in esecuzione,
quanta CPU viene utilizzata e quanta RAM e swap sono disponibili e utilizzati.
Di seguito alle informazioni generali ci sono elenchi di ogni processo, ordinati in base alla percentuale di
la CPU viene utilizzata da ogni processo. Tutte queste informazioni vengono visualizzate di nuovo ogni 5 secondi,
per impostazione predefinita.

140

Pagina 181

Capitolo 6: Gestione dei processi in esecuzione

FIGURA 6.1

Visualizzazione dei processi in esecuzione con top.

Tempo di attività del sistema Carico di sistema medio

In esecuzione
compiti
6

RAM

Scambiare
spazio

Allocato Memoria in realtà Ordina per Ordina per


memoria in uso Utilizzo della CPU
utilizzo della memoria

Il seguente elenco include azioni che puoi eseguire con top per visualizzare le informazioni in modo diverso
modi e modificare i processi in esecuzione:

■ Premere h per visualizzare le opzioni della guida, quindi premere un tasto qualsiasi per tornare al display superiore.
■ Premere M per ordinare in base all'utilizzo della memoria invece che alla CPU, quindi premere P per tornare a
ordinamento per CPU.
■ Premere il numero 1 per attivare o disattivare la visualizzazione dell'utilizzo della CPU di tutte le CPU, se ne hai di più
più di una CPU sul tuo sistema.
■ Premere R per ordinare al contrario l'output.
■ Premere ue immettere un nome utente per visualizzare i processi solo per un particolare utente.

Una pratica comune consiste nell'usare top per trovare processi che consumano troppo
memoria o potenza di elaborazione e quindi agire su quei processi in qualche modo. Un processo
consumare troppa CPU può essere rinominato per dare meno priorità ai processori. UN
il processo che consuma troppa memoria può essere interrotto. Con il top running, ecco come
renice o uccidi un processo:

■ Rinominare un processo: annotare l'ID del processo che si desidera rinominare e


premere r . Quando viene visualizzato il messaggio PID da rinominare: digitare l'ID del processo
vuoi renice. Quando viene richiesto di Renice PID per il valore: digitare un numero da
Da –19 a 20. (Vedere "Impostazione della priorità del processore con nice and renice" più avanti in questo capitolo-
ter per informazioni sui significati dei diversi valori renice.)
■ Terminare un processo: annotare l'ID del processo che si desidera terminare e premere k .
Digita 15 per terminare in modo pulito o 9 per terminare completamente il processo. (Vedi "Killing
processi con kill e killall ”più avanti in questo capitolo per ulteriori informazioni sull'uso
segnali diversi che puoi inviare ai processi.)

141
Pagina 182

Parte II: diventare un Power User Linux

Elenca i processi con System Monitor


Se hai il desktop GNOME disponibile sul tuo sistema Linux, System Monitor (gnome-
system-monitor) è disponibile per fornire un modo più grafico di visualizzare i processi su
il tuo sistema. Ordinate i processi facendo clic sulle colonne. Puoi fare clic con il pulsante destro del mouse sui processi per interrompere,
ucciderli o rinominarli.

Per avviare System Monitor dal desktop GNOME 2, selezionare Applicazioni ➪ Sistema
Strumenti ➪ Monitor di sistema. Oppure in GNOME 3, premere il tasto Windows, quindi digitare Monitor di sistema
e premere Invio. Quindi seleziona la scheda Processi. La Figura 6.2 mostra un esempio di System
Finestra del monitor.

FIGURA 6.2

Utilizzare la finestra Monitor di sistema per visualizzare e modificare i processi in esecuzione.

Per impostazione predefinita, vengono visualizzati solo i processi in esecuzione associati al tuo account utente. Quelli
i processi sono inizialmente elencati in ordine alfabetico. È possibile riordinare i processi facendo clic su uno qualsiasi di
le intestazioni dei campi (avanti e indietro). Ad esempio, fai clic sull'intestazione% CPU per vedere quale
i processi consumano la maggior potenza di elaborazione. Fare clic sull'intestazione Memoria per vedere quale
i processi consumano la maggior parte della memoria.

È possibile modificare i processi in vari modi facendo clic con il pulsante destro del mouse sul nome di un processo e
selezionando dal menu che appare (vedere la Figura 6.3 per un esempio).

Ecco alcune delle cose che puoi fare a un processo dal menu su cui hai fatto clic:

■ Interrompi: sospende il processo, quindi non viene eseguita alcuna elaborazione finché non si seleziona Continua
Processi. (Equivale a premere Ctrl + Z su un processo dalla shell.)

142

Pagina 183

Capitolo 6: Gestione dei processi in esecuzione

■ Continua: continua l' esecuzione di un processo sospeso.


■ Fine: invia un segnale di terminazione (15) a un processo. Nella maggior parte dei casi, questo termina il
elaborare in modo pulito.
■ Kill:invia un segnale Kill (9) a un processo. Questo dovrebbe terminare immediatamente un processo,
indipendentemente dal fatto che possa essere fatto in modo pulito.
6
■ Modifica: presenta una barra di scorrimento da cui è possibile rinominare un processo. Priorità normale
è 0. Per ottenere una migliore priorità del processore, utilizzare un numero negativo compreso tra –1 e –20. Per
hanno una priorità inferiore del processore, utilizzare un numero positivo (da 0 a 19). Solo l'utente root
può assegnare priorità negative, quindi è necessario fornire la password di root, quando
richiesto, per impostare un valore piacevole negativo.
■ Mappe di memoria: consente di visualizzare la mappa di memoria del sistema per vedere quali librerie e
altri componenti vengono tenuti in memoria per il processo.
■ Apri file: consente di visualizzare i file attualmente tenuti aperti dal processo.
■ Proprietà: consente di visualizzare altre impostazioni associate al processo (ad esempio
contesto di protezione, utilizzo della memoria e percentuali di utilizzo della CPU).

FIGURA 6.3

Rinomina, interrompi o metti in pausa un processo dalla finestra Monitor di sistema.

È possibile visualizzare processi in esecuzione associati a utenti diversi da te. Fare


evidenziare qualsiasi processo nel display (basta fare clic su di esso). Quindi, dal pulsante del menu
(pulsante con tre barre sopra), seleziona Tutti i processi. Puoi modificare i processi
non possedere solo se sei l'utente root o se puoi fornire la password di root quando
richiesto dopo aver tentato di modificare un processo.

A volte, non hai il lusso di lavorare con un'interfaccia grafica. Cambiare


processi senza un'interfaccia grafica, è possibile utilizzare una serie di comandi e sequenze di tasti
per modificare, mettere in pausa o terminare i processi in esecuzione. Alcuni di questi sono descritti di seguito.

143

Pagina 184

Parte II: diventare un Power User Linux

Gestione dei processi in background e in primo piano


Se stai usando Linux su una rete o da un terminale stupido (un monitor che consente
solo input di testo senza supporto GUI), la tua shell potrebbe essere tutto ciò che hai. Potresti
essere utilizzato in un ambiente grafico in cui si hanno molti programmi attivi in
stesso tempo in modo da poter passare da uno all'altro secondo necessità. Questa cosa del guscio può sembrare carina
limitato.

Sebbene la shell bash non includa una GUI per eseguire molti programmi contemporaneamente, lo fa
consentono di spostare i programmi attivi tra lo sfondo e il primo piano. In questo modo tu
può avere molte cose in esecuzione e scegliere in modo selettivo quello con cui vuoi occuparti
il momento.

È possibile inserire un programma attivo in background in diversi modi. Uno è aggiungere un file
e commerciale (&) alla fine di una riga di comando quando esegui il comando per la prima volta. Puoi anche
utilizzare il comando at per eseguire i comandi in modo tale che non siano collegati alla shell.

Per interrompere un comando in esecuzione e metterlo in background, premi Ctrl + Z. Dopo il


il comando è fermo, puoi riportarlo in primo piano per eseguirlo (il comando fg
comando) o avviarlo in esecuzione in background (il comando bg). Tieni presente che
qualsiasi comando in esecuzione in background potrebbe generare output durante i comandi
eseguito successivamente da quella shell. Ad esempio, se l'output viene visualizzato da un comando eseguito-
in background durante una sessione vi, premi semplicemente Ctrl + L per ridisegnare lo schermo
sbarazzarsi dell'output.

Per evitare che l'output venga visualizzato, è necessario che qualsiasi processo in esecuzione in background invii il proprio output a un file o
a null (aggiungi 2> / dev / null alla fine della riga di comando).
Avvio dei processi in background
Se hai programmi che vuoi eseguire mentre continui a lavorare nella shell, puoi farlo
posizionare i programmi in background. Per mettere un programma in background in quel momento
esegui il programma, digita una e commerciale (&) alla fine della riga di comando, in questo modo:

$ trova / usr> / tmp / allusrfiles &


[3] 15971

Questo comando di esempio trova tutti i file sul tuo sistema Linux (a partire da / usr),
stampa quei nomi di file e li inserisce nel file / tmp / allusrfiles. Il
e commerciale (&) esegue quella riga di comando in background. Notare che il numero del lavoro,
[3] e il numero ID processo, 15971, vengono visualizzati all'avvio del comando. Per
controlla quali comandi hai in esecuzione in background, usa il comando jobs,
come segue:

144

Pagina 185

Capitolo 6: Gestione dei processi in esecuzione

$ jobs
[1] Arrestato (output tty) vi / tmp / myfile
[2] Correre trova / usr -print> / tmp / allusrfiles &
[3] Correre nroff -man / usr / man2 / *> / tmp / man2 &
[4] - Correre nroff -man / usr / man3 / *> / tmp / man3 &
[5] + Fermato nroff -man / usr / man4 / *> / tmp / man4 6
Il primo lavoro mostra un comando di modifica del testo (vi) che ho posizionato in background e
fermato premendo Ctrl + Z mentre stavo modificando. Job 2 mostra il comando find che ho appena eseguito.
I processi 3 e 4 mostrano i comandi nroff attualmente in esecuzione in background. Giobbe 5 era stato
in esecuzione nella shell (in primo piano) finché non ho deciso che erano in esecuzione troppi processi e
premuto Ctrl + Z per interrompere il lavoro 5 fino al completamento di alcuni processi.

Il segno più (+) accanto al numero 5 indica che è stato posizionato più di recente sullo sfondo.
Il segno meno (-) accanto al numero 4 indica che è stato posizionato sullo sfondo poco prima
il lavoro in background più recente. Poiché il lavoro 1 richiede l'input del terminale, non può essere eseguito in
sfondo. Di conseguenza, viene interrotto finché non viene riportato di nuovo in primo piano.

Per vedere l'ID del processo per il lavoro in background, aggiungere un'opzione -l (la lettera minuscola L) al comando jobs. Se tu
digitare ps, è possibile utilizzare l'ID del processo per capire quale comando è per un particolare lavoro in background.

Utilizzo dei comandi in primo piano e in background


Continuando con l'esempio, puoi portare qualsiasi comando nell'elenco dei lavori al file
primo piano. Ad esempio, per modificare nuovamente myfile, digita:

$ fg% 1

Di conseguenza, il comando vi si apre di nuovo. Tutto il testo è come era quando hai interrotto il lavoro vi.

Prima di mettere in background un elaboratore di testi, un elaboratore di testi o un programma simile, assicurati di salvare il file. Suo
facile dimenticare che hai un programma in background e perderai i tuoi dati se ti disconnetti o il computer si riavvia.

Per fare riferimento a un lavoro in background (per annullarlo o portarlo in primo piano), usa un segno di percentuale (%)
seguito dal numero del lavoro. È inoltre possibile utilizzare quanto segue per fare riferimento a un lavoro in background:

■ %: si riferisce al comando più recente messo in background (indicato dal


segno più quando si digita il comando jobs). Questa azione porta il comando a
il primo piano.
■% string: si riferisce a un lavoro in cui il comando inizia con una particolare stringa di
personaggi. La stringa deve essere univoca. (In altre parole, digitando% vi quando
ci sono due comandi vi in ​background che generano un messaggio di errore.)

145
Pagina 186

Parte II: diventare un Power User Linux

■ %? stringa: si riferisce a un lavoro in cui la riga di comando contiene una stringa in qualsiasi punto.
La stringa deve essere univoca o la corrispondenza non riesce.
■% --— Si riferisce al lavoro precedente interrotto prima di quello interrotto più di recente.

Se un comando viene interrotto, puoi riavviarlo in esecuzione in background utilizzando bg


comando. Ad esempio, prendi il lavoro 5 dall'elenco dei lavori nell'esempio precedente:

[5] + Interrotto nroff -man man4 / *> / tmp / man4

Digita quanto segue:

$ bg% 5

Dopodiché, il lavoro viene eseguito in background. La sua voce di lavoro appare come segue:

[5] Esecuzione di nroff -man man4 / *> / tmp / man4 &

Processi di uccisione e rinniatura


Così come è possibile modificare il comportamento di un processo utilizzando strumenti grafici come System
Monitor (descritto in precedenza in questo capitolo), puoi anche usare strumenti della riga di comando per uccidere un file
elaborare o modificare la priorità della CPU. Il comando kill può inviare un segnale kill a qualsiasi processo
per farla finita, ammesso che tu abbia il permesso di farlo. Può anche inviare segnali diversi a un file
processo per modificare in altro modo il suo comportamento. I comandi nice e renice possono essere utilizzati per
impostare o modificare la priorità del processore di un processo.

Uccidere i processi con kill e killall


Sebbene di solito vengano utilizzati per terminare un processo in esecuzione, i comandi kill e killall
può effettivamente essere utilizzato per inviare qualsiasi segnale valido a un processo in esecuzione. Oltre a raccontare un processo
per terminare, un segnale potrebbe indicare a un processo di rileggere i file di configurazione, mettere in pausa (interrompere) o continuare
dopo essere stato messo in pausa, per citare alcune possibilità.

I segnali sono rappresentati sia da numeri che da nomi. Segnali che potresti inviare di più
comunemente da un comando includono SIGKILL (9), SIGTERM (15) e SIGHUP (1). Il
il segnale predefinito è SIGTERM, che cerca di terminare un processo in modo pulito. Per uccidere un processo
immediatamente, puoi usare SIGKILL. Il segnale SIGHUP dice a un processo di rileggere il suo
file di configurazione. SIGSTOP sospende un processo, mentre SIGCONT continua un processo interrotto.

Diversi processi rispondono a diversi segnali. I processi non possono bloccare SIGKILL e
Segnali SIGSTOP, tuttavia. La tabella 6.1 mostra esempi di alcuni segnali (tipo man 7 signal
per leggere altri segnali disponibili):

146

Pagina 187

Capitolo 6: Gestione dei processi in esecuzione

TABELLA 6.1 Segnali disponibili in Linux

Segnale Numero Descrizione

SIGHUP 1 Rilevato blocco sul terminale di controllo o morte del processo di controllo.

SIGINT 2 Interrompi da tastiera.


6
SIGQUIT 3 Esci dalla tastiera.

SIGABRT 6 Segnale di interruzione da interruzione (3).

SIGKILL 9 Segnale di uccisione.

SIGTERM 15 Segnale di terminazione.


SIGCONT 19,18,25 Continua se fermato.
SIGSTOP 17,19,23 Interrompi il processo.

Notare che ci sono più possibili numeri di segnale per SIGCONT e SIGSTOP perché
numeri diversi vengono utilizzati in diverse architetture di computer. Per la maggior parte dei PC x86 e power
architetture, usa il valore medio. Il primo valore di solito funziona per Alpha e Sparc, mentre
l'ultimo è per l'architettura MIPS.

Utilizzo di kill per segnalare i processi tramite PID


Usando comandi come ps e top, puoi trovare i processi a cui vuoi inviare un segnale.
Quindi puoi utilizzare l'ID del processo di quel processo come opzione per il comando kill, insieme
con il segnale che vuoi inviare.

Ad esempio, esegui il comando top e vedi che il processo bigcommand è consumato


la maggior parte della tua potenza di elaborazione:

PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND


10432 chris 20 0 471m 121m 18m S 99.9 3.2 77: 01.76 bigcommand

In questo caso, il processo bigcommand consuma il 99,9 percento della CPU. Decidi che vuoi
per ucciderlo in modo che altri processi abbiano un colpo alla CPU. Se utilizzi l'ID di processo del file
eseguendo il processo bigcommand, ecco alcuni esempi del comando kill che puoi usare
per uccidere quel processo:

$ kill 10432
$ kill -15 10432
$ kill -SIGKILL 10432

Il segnale predefinito inviato da kill è 15 (SIGTERM), quindi i primi due esempi hanno esattamente l'estensione
stessi risultati. A volte, un SIGTERM non uccide un processo, quindi potrebbe essere necessario un SIGKILL
uccidilo. Invece di SIGKILL, puoi usare –9.

147

Pagina 188

Parte II: diventare un Power User Linux

Un altro segnale utile è SIGHUP. Alcuni processi server, come il processo httpd, che
fornisce servizi web, risponde a un segnale SIGHUP (1) rileggendo i suoi file di configurazione.
Infatti, il servizio di comando httpd reload (in RHEL 6) o systemctl reload
httpd (RHEL 7) invia effettivamente SIGHUP ai processi httpd in esecuzione sul tuo sistema a
dite loro che i file di configurazione devono essere letti di nuovo. Se il processo httpd aveva un PID di
1833, è possibile utilizzare uno di questi comandi per far leggere nuovamente i file di configurazione:

# uccidi -1 1833
# systemctl ricarica httpd

Usare killall per segnalare i processi per nome


Con il comando killall, puoi segnalare i processi per nome invece che per ID processo.
Il vantaggio è che non devi cercare l'ID del processo che desideri
uccidere. Il potenziale svantaggio è che puoi uccidere più processi di quelli che intendi se tu
non stai attento. (Ad esempio, digitare killall bash potrebbe uccidere un gruppo di shell che tu
non intendo uccidere.)

Come il comando kill, killall usa SIGTERM (segnale 15) se non lo inserisci esplicitamente
un numero di segnale. Inoltre, come con kill, puoi inviare qualsiasi segnale che ti piace al processo che desideri
nome con killall. Ad esempio, se vedi un processo chiamato testme in esecuzione sul tuo
sistema e vuoi ucciderlo, puoi semplicemente digitare quanto segue:

$ killall -9 testme

Il comando killall può essere particolarmente utile se vuoi uccidere un gruppo di comandi
con lo stesso nome.

Impostazione della priorità del processore con nice e renice


Quando il kernel di Linux cerca di decidere su quali processi in esecuzione accedere alle CPU
tuo sistema, una delle cose che prende in considerazione è il buon valore impostato nel processo.
Ogni processo in esecuzione sul sistema ha un buon valore compreso tra –20 e 19. Per impostazione predefinita, il
nice value è impostato su 0. Ecco alcuni fatti sui bei valori:

■ Più basso è il valore nice, maggiore è l'accesso alle CPU del processo. In altro
parole, più piacevole è un processo, minore sarà l'attenzione della CPU. Quindi, un bel valore di –20
ottiene più attenzione di un processo con un buon valore 19.
■ Un utente normale può impostare valori accettabili solo da 0 a 19. Non sono consentiti valori negativi.
Quindi un utente normale non può chiedere un valore che dia a un processo più attenzione della maggior parte
processi ottengono per impostazione predefinita.
■ Un utente normale può impostare il valore piacevole più alto, non più basso. Quindi, ad esempio, se un utente
imposta il valore di Nizza su un processo a 10, e poi vuole impostarlo di nuovo a 5, quello
l'azione fallirà. Allo stesso modo, qualsiasi tentativo di impostare un valore negativo fallirà.
■ Un utente normale può impostare il valore nice solo sui processi dell'utente.
■ L'utente root può impostare il valore nice su qualsiasi processo su qualsiasi valore valido, su o giù.

148

Pagina 189

Capitolo 6: Gestione dei processi in esecuzione

Puoi usare il comando nice per eseguire un comando con un particolare valore piacevole. Quando un
è in esecuzione, è possibile modificare il valore nice utilizzando il comando renice, insieme a
l'ID di processo del processo, come nell'esempio che segue:

# nice +5 updatedb &


6
Il comando updatedb viene utilizzato per generare manualmente il database di localizzazione mediante la raccolta
nomi di file in tutto il file system. In questo caso, volevo solo che aggiornatob funzionasse
lo sfondo (&) e non interrompere il lavoro svolto da altri processi sul sistema. io
ha eseguito il comando top per assicurarsi che il valore nice fosse impostato correttamente:

UTENTE PID PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND


20284 radice 25 5 98,7 m 932644 D 2,7 0,0 0: 00,96 aggiornato b

Notare che sotto la colonna NI, il valore corretto è impostato su 5. Poiché il comando era
eseguito come utente root, l'utente root può abbassare il valore nice in un secondo momento utilizzando renice
comando. (Ricorda che un utente normale non può ridurre il valore nice o impostarlo su
un numero negativo.) Ecco come cambieresti il ​valore piacevole per updatedb
comando appena eseguito a -5:

# renice -n -5 20284

Se hai eseguito di nuovo il comando top, potresti notare che il comando updatedb è adesso
in cima o vicino alla lista dei processi che consumano tempo della CPU perché gli è stata data la priorità
per ottenere più attenzione sulla CPU.

Limitare i processi con cgroups


È possibile utilizzare una funzionalità come "nice" per dare a un singolo processo più o meno accesso al tempo della CPU.
L'impostazione del valore piacevole per un processo, tuttavia, non si applica ai processi figli che a
potrebbe essere avviato o qualsiasi altro processo correlato che fa parte di un servizio più ampio.
In altre parole, "nice" non limita la quantità totale di risorse di un determinato utente o
l'applicazione può consumare da un sistema Linux.

Man mano che il cloud computing prende piede, molti sistemi Linux verranno utilizzati più come hypervisor di
come computer di uso generale. La loro memoria, potenza di elaborazione e accesso allo storage lo faranno
diventano merce da condividere da molti utenti. In quel modello, è necessario fare di più
controllare la quantità di risorse di sistema a cui un particolare utente, applicazione, contenitore,
o la macchina virtuale in esecuzione su un sistema Linux ha accesso.

È qui che entrano in gioco i cgroup .

I Cgroup possono essere utilizzati per identificare un processo come un'attività , appartenente a un particolare controllo
gruppo . Le attività possono essere impostate in una gerarchia in cui, ad esempio, potrebbe esserci un'attività
chiamato daemon che imposta le limitazioni predefinite per tutti i processi del server daemon, quindi
attività secondarie che possono impostare limiti specifici su un daemon del server Web (httpd) o un servizio FTP
daemon (vsftpd).

149

Pagina 190
Parte II: diventare un Power User Linux

Quando un'attività avvia un processo, altri processi avvia il processo iniziale (chiamato child
processi ) ereditano le limitazioni impostate per il processo genitore. Queste limitazioni potrebbero
diciamo che tutti i processi in un gruppo di controllo hanno accesso solo a particolari processori
e alcuni set di RAM. Oppure possono consentire l'accesso solo fino al 30% del totale
potenza di elaborazione di una macchina.

I tipi di risorse che possono essere limitati dai cgroup includono quanto segue:

■ Archiviazione(blkio): limita l'accesso totale in ingresso e uscita ai dispositivi di archiviazione (come


come dischi rigidi, unità USB e così via).
■ Processor scheduling (cpu): assegna la quantità di accesso a cui deve accedere un cgroup
essere programmato per la potenza di elaborazione.
■ Contabilitàdei processi (cpuacct): rapporti sull'utilizzo della CPU. Questa informazione può
essere sfruttato per addebitare ai clienti la quantità di potenza di elaborazione che utilizzano.
■ Assegnazione CPU (cpuset): nei sistemi con più core CPU, assegna un'attività
a un particolare insieme di processori e memoria associata.
■ Accesso al dispositivo (dispositivi): consente alle attività in un cgroup di aprire o creare (mknod)
tipi di dispositivi selezionati.
■ Suspend / resume (freezer): sospende e riprende le attività di cgroup.
■ Utilizzo della memoria (memoria): limita l'utilizzo della memoria per attività. Crea anche rapporti
sulle risorse di memoria utilizzate.
■ Larghezza di banda di rete (net_cls): limita l'accesso di rete al cgroup selezionato
compiti. Questo viene fatto taggando i pacchetti di rete per identificare l'attività cgroup che
ha originato il pacchetto e facendo in modo che il controllore del traffico Linux monitorasse e limitasse
pacchetti provenienti da ogni cgroup.
■ Networktraffic (net_prio): imposta le priorità del traffico di rete proveniente da
cgroups selezionati e consente agli amministratori di modificare queste priorità al volo.
■ Spazi dei nomi (ns): separa i cgroup in spazi dei nomi, quindi i processi in uno
cgroup può vedere solo gli spazi dei nomi associati al cgroup. Gli spazi dei nomi possono
includere tabelle di processo separate, tabelle di montaggio e interfacce di rete.

La creazione e la gestione dei cgroup, al suo livello più elementare, generalmente non è un lavoro per il nuovo Linux
amministratori di sistema. Può comportare la modifica dei file di configurazione per creare i propri cgroup
(/etc/cgconfig.conf) o limitare utenti o gruppi particolari (/etc/cgrules.conf). O
puoi usare il comando cgreate per creare cgroup, il che si traduce in quei gruppi
aggiunto alla gerarchia / sys / fs / cgroup. Impostare cgroup può essere complicato e, se fatto
impropriamente, può rendere il sistema non avviabile.

Il motivo per cui introduco i cgroup qui è per aiutarti a capire alcuni dei sottostanti
funzionalità in Linux che è possibile utilizzare per limitare e monitorare l'utilizzo delle risorse. Nel futuro,
probabilmente ti imbatterai in queste funzionalità dai controller che gestiscono il tuo cloud
infrastruttura. Sarai in grado di impostare regole come: "Consenti al reparto marketing virtuale

150

Pagina 191

Capitolo 6: Gestione dei processi in esecuzione

macchine per consumare fino al 40% della memoria disponibile "o" Blocca il database
applicazione a una particolare CPU e set di memoria. "

Sapere come Linux può limitare e contenere l'utilizzo delle risorse da parte dell'insieme di processi
assegnato a un'attività ti aiuterà a gestire meglio le tue risorse di elaborazione. Se tu
6
sei interessato a saperne di più sui cgroup, puoi fare riferimento a quanto segue:

■ Gestione delle risorse di Red Hat Enterprise Linux e contenitori Linux


Guida - https://access.redhat.com/documentation/en-US/Red_Hat_
Enterprise_Linux / 7 / html-single / Resource_Management_and_Linux_
Containers_Guide / index.html
■ Documentazione del kernel su cgroups: fare riferimento ai file nella directory / usr / share / doc /
kernel-doc - * / Documentation / cgroups dopo l'installazione della directory
pacchetto kernel-doc.
Sommario
Anche su un sistema Linux dove non c'è molta attività, in genere dozzine o addirittura centinaia
dei processi sono in esecuzione in background. Utilizzando gli strumenti descritti in questo capitolo, tu
può visualizzare e gestire i processi in esecuzione sul sistema.

La gestione dei processi include la visualizzazione dei processi in modi diversi, eseguendoli nel file
primo piano o sfondo e ucciderli o rinominarli. Funzionalità più avanzate per
la limitazione dell'utilizzo delle risorse da parte di processi selezionati sono disponibili utilizzando la funzione cgroups.

Nel prossimo capitolo imparerai come combinare comandi e funzioni di programmazione in


file che possono essere eseguiti come script di shell.

Esercizi
Usa questi esercizi per testare la tua conoscenza della visualizzazione dei processi in esecuzione e della modifica
in seguito uccidendoli o cambiando la priorità del processore (buon valore). Questi compiti assumono
stai eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività funzionino su
anche altri sistemi Linux). Se sei bloccato, le soluzioni alle attività sono mostrate in Appendice
B (sebbene in Linux, puoi spesso utilizzare più modi per completare un'attività).

1. Elenca tutti i processi in esecuzione sul tuo sistema, mostrando un set completo di colonne. Pipa quello
output al comando less in modo da poter sfogliare l'elenco dei processi.
2. Elencare tutti i processi in esecuzione sul sistema e ordinarli per nome
l'utente che esegue ogni processo.
3. Elenca tutti i processi in esecuzione sul sistema e visualizza le seguenti colonne di
informazioni: ID processo, nome utente, nome gruppo, dimensione memoria virtuale, residente
dimensione della memoria e il comando.

151

Pagina 192

Parte II: diventare un Power User Linux

4. Eseguire il comando top per visualizzare i processi in esecuzione sul sistema. Torna indietro e
avanti tra l'ordinamento per utilizzo della CPU e il consumo di memoria.
5. Avvia il processo gedit dal desktop. Assicurati di eseguirlo come l'utente tu
sono registrati come. Usa la finestra Monitor di sistema per terminare quel processo.
6. Eseguire nuovamente il processo gedit. Questa volta, usando il comando kill, invia un segnale
al processo gedit che lo fa sospendere (arrestare). Prova a digitare del testo nel file
gedit e assicurati che non sia ancora visualizzato alcun testo.
7. Usa il comando killall per dire al comando gedit che hai messo in pausa nel precedente
esercizio per continuare a lavorare. Assicurati che il testo digitato dopo gedit fosse
ora in pausa appare nella finestra.
8. Installa il comando xeyes (in Red Hat Enterprise Linux, si trova nella directory xorg-x11-
pacchetto app). Esegui il comando xeyes circa 20 volte in background, quindi
che 20 finestre xeyes appaiano sullo schermo. Muovi il mouse e guarda
gli occhi guardano il puntatore del mouse. Quando ti sei divertito abbastanza, uccidi tutti gli xeyes
processi in un comando usando killall.
9. Come utente normale, esegui il comando gedit in modo che inizi con un bel valore di 5.

10. Usando il comando renice, cambia il valore piacevole del comando gedit
appena iniziato a 7. Usa qualsiasi comando che ti piace per verificare che il valore corrente sia corretto
poiché il comando gedit è ora impostato su 7.
152

Pagina 193

CAPITOLO

7
Scrittura di semplici script di shell
IN QUESTO CAPITOLO
Lavorare con gli script di shell

Fare aritmetica negli script di shell

Esecuzione di cicli e casi negli script della shell

Creazione di semplici script di shell

Y sistema quando si avvia. Allo stesso modo, potresti lavorare in modo più efficiente se raggruppassi i set
di comandi che esegui tutto il tempo. Gli script della shell possono gestire queste attività.
ou'd mai ottenere qualsiasi lavoro svolto se si è digitato ogni comando che deve essere eseguito sul vostro Linux
Uno script di shell è un gruppo di comandi, funzioni, variabili o qualsiasi altra cosa che puoi usare
da una conchiglia. Questi elementi vengono digitati in un file di testo normale. Quel file può quindi essere eseguito come comando.
I sistemi Linux hanno tradizionalmente utilizzato gli script della shell di inizializzazione del sistema durante l'avvio del sistema
eseguire i comandi necessari per avviare i servizi. Puoi creare i tuoi script di shell per automatizzare il file
compiti che devi svolgere regolarmente.

Questo capitolo fornisce una panoramica rudimentale del funzionamento interno degli script di shell e di come essi
può essere utilizzato. Imparerai come semplici script possono essere sfruttati a una struttura di pianificazione (come cron
o at) per semplificare le attività amministrative o semplicemente eseguirle su richiesta quando sono necessarie.

Comprensione degli script di shell


Hai mai avuto un compito che dovevi svolgere più e più volte che richiedeva molta digitazione sul file
riga di comando? Hai mai pensato a te stesso: "Wow, vorrei poter digitare solo un comando per fare tutto
Questo"? Forse stai cercando uno script di shell.

Gli script della shell sono l'equivalente dei file batch in MS-DOS e possono contenere lunghi elenchi di comandi,
controllo di flusso complesso, valutazioni aritmetiche, variabili definite dall'utente, funzioni definite dall'utente e
test sofisticati delle condizioni. Gli script della shell sono in grado di gestire qualsiasi cosa, dal semplice
comandi di una riga a qualcosa di complesso come l'avvio del sistema Linux. Sebbene dozzine di file
diverse shell sono disponibili in Linux, la shell predefinita per la maggior parte dei sistemi Linux si chiama bash, il
Bourne Again Shell.

153

Pagina 194

Parte II: diventare un Power User Linux


Esecuzione e debug di script di shell
Uno dei principali vantaggi degli script di shell è che possono essere aperti in qualsiasi editor di testo
per vedere cosa fanno. Un grande svantaggio è che spesso vengono eseguiti script di shell grandi o complessi
più lentamente dei programmi compilati. Puoi eseguire uno script di shell in due modi fondamentali:

■ Il nome del file viene utilizzato come argomento della shell (come in bash myscript). Nel
questo metodo, il file non ha bisogno di essere eseguibile; contiene solo un elenco di file
comandi della shell. La shell specificata sulla riga di comando viene utilizzata per interpretare il file
comandi nel file di script. Questo è più comune per attività semplici e veloci.
■ Lo script di shell può anche avere il nome dell'interprete posizionato nella prima riga
dello script preceduto da #! (come in #! / bin / bash) e avere il bit di esecuzione del file
file contenente il set di script (utilizzando chmod + x nomefile ). Puoi quindi eseguire il tuo file
proprio come qualsiasi altro programma nel tuo percorso semplicemente digitando il nome del file
script sulla riga di comando.

Quando gli script vengono eseguiti in entrambi i modi, è possibile specificare le opzioni per il programma
sulla riga di comando. Tutto ciò che segue il nome dello script viene indicato come a
argomento della riga di comando .

Come per la scrittura di qualsiasi software, non vi è alcun sostituto per un design chiaro e ponderato e
molti commenti. Il cancelletto (#) precede i commenti e può occupare un'intera riga o
esistono sulla stessa riga dopo il codice dello script. È meglio implementare script di shell più complessi
in più fasi, assicurandosi che la logica sia corretta in ogni fase prima di continuare. Eccone alcuni
buoni e concisi suggerimenti per assicurarsi che le cose funzionino come previsto durante i test:

■ In alcuni casi, è possibile inserire un'istruzione echo all'inizio delle righe all'interno di
il corpo di un ciclo e racchiudi il comando tra virgolette. In questo modo, piuttosto
rispetto all'esecuzione del codice, puoi vedere cosa verrà eseguito senza crearne alcuno
modifiche permanenti.
■ Per raggiungere lo stesso obiettivo, è possibile inserire dichiarazioni echo fittizie in tutto il file
codice. Se queste righe vengono stampate, sai che viene preso il ramo logico corretto.
■È possibile utilizzare set -x vicino all'inizio dello script per visualizzare ogni comando che
viene eseguito o avvia i tuoi script usando
$ bash -x myscript

■ Perché gli script utili hanno la tendenza a crescere nel tempo, mantenendo il codice
leggibile man mano che si procede è estremamente importante. Fai quello che puoi per mantenere la logica
del tuo codice pulito e facile da seguire.

Capire le variabili di shell


Spesso all'interno di uno script di shell, si desidera riutilizzare determinati elementi di informazione. Durante
corso dell'elaborazione dello script di shell, il nome o il numero che rappresenta queste informazioni

154

Pagina 195

Capitolo 7: Scrittura di semplici script di shell

potrebbe cambiare. Per memorizzare le informazioni utilizzate da uno script di shell in modo tale che possa essere facilmente
riutilizzato, è possibile impostare le variabili. I nomi delle variabili all'interno degli script di shell fanno distinzione tra maiuscole e minuscole e possono
essere definito nel modo seguente:

NOME = valore

La prima parte di una variabile è il nome della variabile e la seconda parte è il valore impostato per
quel nome. Assicurati che il NOME e il valore tocchino il segno di uguale, senza spazi.
Le variabili possono essere assegnate da costanti, come testo, numeri e trattini bassi. Questo
è utile per inizializzare valori o salvare molti caratteri per costanti lunghe. Il seguente
esempi mostrano variabili impostate su una stringa di caratteri (CITY) e un valore numerico (PI):

CITY = "Springfield"
PI = 3,14159265

Le variabili possono contenere l'output di un comando o di una sequenza di comandi. Puoi realizzare 7
questo facendo precedere il comando con un segno di dollaro e una parentesi aperta e seguendolo
con una parentesi chiusa. Ad esempio, MYDATE = $ (date) assegna l'output da
comando date alla variabile MYDATE. Racchiudere il comando tra i backtick (`) può avere
lo stesso effetto. In questo caso, il comando date viene eseguito quando la variabile è impostata e non
ogni volta che viene letta la variabile.
Caratteri speciali della shell in fuga
Tieni presente che caratteri come il simbolo del dollaro ($), backtick (`), asterisco (*), punto esclamativo (!),
e altri hanno un significato speciale per la shell, che vedrai man mano che procedi in questo capitolo.
In alcune occasioni, vuoi che la shell usi il significato speciale di questi caratteri e altre volte tu
non farlo. Ad esempio, se si digita echo $ HOME, la shell penserà che si intende visualizzare il nome di
la tua home directory (memorizzata nella variabile $ HOME) sullo schermo (come / home / chris) perché un $
indica che il nome di una variabile segue quel carattere.

Se vuoi mostrare letteralmente $ HOME, devi sfuggire a $. Digitando echo '$ HOME' o echo
\ $ HOME mostrerebbe letteralmente $ HOME sullo schermo. Quindi, se vuoi che la shell interpreti un singolo file
letteralmente, anteponilo a una barra rovesciata (\). Per avere un'intera serie di caratteri interpretati letteralmente,
racchiudi quei caratteri tra virgolette singole (').

Usare le virgolette doppie è un po 'più complicato. Circonda un set di testo tra virgolette doppie se vuoi tutto tranne a
pochi caratteri usati letteralmente. Ad esempio, con il testo racchiuso tra virgolette doppie, i simboli del dollaro ($),
le virgolette (`) e i punti esclamativi (!) vengono interpretati in modo speciale, ma altri caratteri (come un
asterisco) non lo sono. Digita queste due righe per vedere il diverso output (mostrato a destra):

echo ' $ HOME *** ` data`' $ HOME *** `data`


echo "$ HOME ***` date` " / home / chris file1 file2 Tue Jan 20 16:56:52 EDT 2015

L'utilizzo delle variabili è un ottimo modo per ottenere informazioni che possono cambiare da computer a
computer o da un giorno all'altro. L'esempio seguente imposta l'output di uname -n

155

Pagina 196

Parte II: diventare un Power User Linux

comando alla variabile MACCHINA. Quindi uso le parentesi per impostare NUM_FILES sul numero
ber di file nella directory corrente inviando (|) l'output del comando ls al file
comando di conteggio parole (wc -l).

MACCHINA = ʻuname -n`


NUM_FILES = $ (/ bin / ls | wc -l)

Le variabili possono anche contenere il valore di altre variabili. Questo è utile quando devi
conserva un valore che cambierà in modo da poterlo utilizzare successivamente nello script. Qui è impostato BALANCE
al valore della variabile CurBalance:

BALANCE = "$ CurBalance"

Quando si assegnano le variabili, utilizzare solo il nome della variabile (ad esempio, BALANCE). Quando fai riferimento a una variabile,
nel senso che si desidera il valore della variabile, anteporlo al segno del dollaro (come in $ CurBalance). Il risultato di
il secondo è che ottieni il valore della variabile, non il nome della variabile stessa.

Parametri posizionali speciali della shell


Ci sono variabili speciali che la shell assegna per te. Un set di file
le variabili sono chiamate parametri posizionali o argomenti della riga di comando e vengono indicate come
$ 0, $ 1, $ 2, $ 3… $ n . $ 0 è speciale e gli viene assegnato il nome utilizzato per invocare lo script; il
ad altri vengono assegnati i valori dei parametri passati sulla riga di comando, nel file
ordine in cui apparivano. Ad esempio, supponiamo che tu abbia uno script di shell chiamato myscript that
conteneva quanto segue:

#! / bin / bash
# Script per riprodurre gli argomenti della riga di comando
echo "Il primo argomento è $ 1, il secondo è $ 2."
echo "Il comando stesso si chiama $ 0."

Supponendo che lo script sia eseguibile e si trovi in ​una directory nel tuo $ PATH, il seguente
mostra cosa accadrebbe se eseguissi quel comando con pippo e bar come argomenti:

$ chmod 755 / home / chris / bin / myscript


$ myscript foo bar
Il primo argomento è foo, il secondo è bar.
Il comando stesso si chiama / home / chris / bin / myscript.

Come puoi vedere, il parametro posizionale $ 0 è il percorso completo o relativo a myscript,


$ 1 è foo e $ 2 è bar.

Un'altra variabile, $ #, ti dice quanti parametri sono stati dati al tuo script. Nel
esempio, $ # sarebbe 2. La variabile $ @ contiene tutti gli argomenti immessi al comando
156

Pagina 197

Capitolo 7: Scrittura di semplici script di shell

linea. Un'altra variabile di shell speciale particolarmente utile è $ ?, che riceve l'uscita
stato dell'ultimo comando eseguito. In genere, un valore pari a zero indica che il comando è terminato
correttamente, e qualsiasi cosa diversa da zero indica un errore di qualche tipo. Per un completo
elenco di variabili di shell speciali, fare riferimento alla pagina man di bash.

Lettura dei parametri


Utilizzando il comando di lettura, è possibile richiedere informazioni all'utente e memorizzare tali informazioni
da utilizzare in seguito nel tuo script. Ecco un esempio di uno script che utilizza il comando di lettura:

#! / bin / bash
read -p "Digita un aggettivo, un nome e un verbo (passato):" a1 n1 v1
echo "Ha sospirato e $ v1 all'elisir. Poi ha mangiato $ a1 $ n1."

In questo script, dopo aver richiesto un aggettivo, un nome e un verbo, ci si aspetta che lo faccia l'utente
immettere le parole che vengono poi assegnate alle variabili adj1, sostantivo1 e verbo1. Quei tre
7
le variabili vengono quindi incluse in una frase stupida, che viene visualizzata sullo schermo. Se la
script sono stati chiamati sillyscript, ecco un esempio di come potrebbe essere eseguito:

$ chmod 755 / home / chris / bin / sillyscript


$ sillyscript
Digita un aggettivo, un nome e un verbo (passato): football peloso
ballato
Sospirò e ballò sull'elisir. Poi ha mangiato il peloso
calcio.

Espansione dei parametri in bash


Come accennato in precedenza, se si desidera il valore di una variabile, anteporla a $ (for
esempio, $ CITY). Questa è solo una scorciatoia per la notazione $ {CITY}; parentesi graffe
vengono utilizzati quando il valore del parametro deve essere posizionato accanto ad altro testo senza un
spazio. Bash ha regole speciali che ti consentono di espandere il valore di una variabile in modo diverso
modi. Entrare in tutte le regole è probabilmente eccessivo per una rapida introduzione agli script di shell,
ma il seguente elenco presenta alcuni costrutti comuni che probabilmente vedrai negli script bash
trovi sul tuo sistema Linux.

■$ {var: -value}: se la variabile non è impostata o è vuota, espanderla in valore .


■$ {var # pattern} -Chop la partita più breve per modello dalla parte anteriore del
valore di var .
■$ {var ## pattern} -Chop la corrispondenza più lunga per modello dalla parte anteriore del
valore di var .
■$ {% var pattern} -Chop la partita più breve per modello dalla fine del var s’
valore.
■$ {var %% pattern}: ritaglia la corrispondenza più lunga per il pattern dalla fine di
valore di var .

157

Pagina 198

Parte II: diventare un Power User Linux

Prova a digitare i seguenti comandi da una shell per verificare come funziona l'espansione dei parametri:
$ THIS = "Esempio"
$ QUESTO = $ {QUESTO: - "Non impostato"}
$ QUELLO = $ {QUELLO: - "Non impostato"}
$ echo $ QUESTO
Esempio
$ echo $ QUELLO
Non impostato

Negli esempi qui, la variabile THIS è inizialmente impostata sulla parola Example. Nel prossimo
due righe, le variabili QUESTO e QUELLO sono impostate sui valori correnti o su Non impostato, se
non sono attualmente impostati. Si noti che poiché ho impostato QUESTO sulla stringa Esempio, quando
Mi associo al valore di QUESTO che appare come Esempio. Tuttavia, poiché QUELLO non è stato impostato, esso
appare come Non impostato.

Per il resto di questa sezione, mostro come possono apparire variabili e comandi in uno script di shell. Per provare uno di questi
esempi, tuttavia, puoi semplicemente digitarli in una shell, come mostrato nell'esempio precedente.

Nell'esempio seguente, MYFILENAME è impostato su /home/digby/myfile.txt. Successivamente, il


La variabile FILE è impostata su myfile.txt e DIR è impostata su / home / digby. Nella variabile NAME,
il nome del file è ridotto semplicemente a miofile; quindi, nella variabile EXTENSION, il file
l'estensione è impostata su txt. (Per provarli, puoi digitarli al prompt della shell come in
nell'esempio precedente e ripetere il valore di ciascuna variabile per vedere come è impostata.) Digitare il codice su
la sinistra. Il materiale sul lato destro descrive l'azione.

MYFILENAME = / home / digby / myfile.txt: imposta il valore di MYFILENAME


FILE = $ {MYFILENAME ## * /}: FILE diventa myfile.txt
DIR = $ {MYFILENAME% / *} —DIR diventa / home / digby
NAME = $ {FILE%. *}: NAME diventa myfile
EXTENSION = $ {FILE ## *.} —EXTENSION diventa txt

Esecuzione di operazioni aritmetiche negli script di shell


Bash utilizza variabili non tipizzate , il che significa che normalmente tratta le variabili come stringhe o testo, ma può farlo
cambiali al volo se lo desideri. A meno che tu non dica diversamente con declare, your
le variabili sono solo un mucchio di lettere per bash. Ma quando inizi a provare a fare aritmetica
con loro, bash li converte in numeri interi, se possibile. Ciò rende possibile fare qualcosa in modo equo
aritmetica complessa in bash.

L'aritmetica dei numeri interi può essere eseguita utilizzando il comando let incorporato o tramite il
comandi esterni expr o bc. Dopo aver impostato il valore della variabile BIGNUM su 1024,

158

Pagina 199

Capitolo 7: Scrittura di semplici script di shell

i tre comandi che seguono memorizzerebbero tutti il ​valore 64 nella variabile RESULT.
Il comando bc è un'applicazione calcolatrice disponibile nella maggior parte delle distribuzioni Linux
zioni. L'ultimo comando ottiene un numero casuale compreso tra 0 e 10 e fa eco al file
risultati a te.

BIGNUM = 1024
let RESULT = $ BIGNUM / 16
RISULTATO = ʻexpr $ BIGNUM / 16`
RISULTATO = ʻecho "$ BIGNUM / 16" | bc`
let foo = $ RANDOM; echo $ foo

Un altro modo per far crescere in modo incrementale una variabile è usare la notazione $ (()) con ++ che ho aggiunto
incrementa il valore di I. Prova a digitare quanto segue:

$I=0
$ echo Il valore di I dopo l'incremento è $ ((++ I))
7
Il valore di I dopo l'incremento è 1

$ echo Il valore di I prima e dopo l'incremento è $ ((I ++)) e $ I


Il valore di I prima e dopo l'incremento è 1 e 2

Ripeti uno di questi comandi per continuare ad aumentare il valore di $ I.

Sebbene la maggior parte degli elementi degli script di shell siano relativamente liberi (dove gli spazi, come spazi o tabulazioni, sono
insignificante), sia let che expr sono particolari riguardo alla spaziatura. Il comando let insiste su nessuno spazio tra
ogni operando e l'operatore matematico, mentre la sintassi del comando expr richiede spazi bianchi
tra ogni operando e il suo operatore. In contrasto con quelli, bc non è pignolo per quanto riguarda gli spazi, ma può essere più complicato da usare
perché esegue operazioni aritmetiche in virgola mobile.

Per vedere un elenco completo dei tipi di aritmetica che puoi eseguire utilizzando il comando let,
digitare help let al prompt di bash.

Utilizzo di costrutti di programmazione negli script della shell


Una delle caratteristiche che rende così potenti gli script di shell è che la loro implementazione di
i costrutti di esecuzione ciclica e condizionale sono simili a quelli che si trovano in più complessi
linguaggi di scripting e programmazione. Puoi usare diversi tipi di loop,
a seconda delle tue esigenze.

Le dichiarazioni "se ... allora"


Il costrutto di programmazione più comunemente usato è l'esecuzione condizionale o if
dichiarazione. Viene utilizzato per eseguire azioni solo in determinate condizioni. Ce ne sono diversi
variazioni delle istruzioni if ​per testare vari tipi di condizioni.

159

Pagina 200

Parte II: diventare un Power User Linux

Il primo if ... then esempio verifica se VARIABILE è impostato sul numero 1. Se lo è, allora il
Il comando echo viene utilizzato per dire che è impostato su 1. L'istruzione fi indica quindi che il
se l'istruzione è completa e l'elaborazione può continuare.

VARIABILE = 1
if [$ VARIABILE -eq 1]; poi
echo "La variabile è 1"
fi

Invece di usare -eq, puoi usare il segno di uguale (=), come mostrato nell'esempio seguente.
= Funziona meglio per confrontare i valori di stringa, mentre -eq è spesso migliore per il confronto
numeri. Usando l'istruzione else, parole diverse possono essere ripetute se il criterio di
se l'istruzione non è soddisfatta ($ STRING = "venerdì"). Tieni presente che è una buona pratica
mettere le stringhe tra virgolette doppie.

STRING = "venerdì"
se [$ STRING = "venerdì"]; poi
echo "WhooHoo. Venerdì."
altro
echo "Venerdì arriverà mai qui?"
fi

Puoi anche invertire i test con un punto esclamativo (!). Nell'esempio seguente, if
STRING non è lunedì, quindi viene ripetuto "Almeno non è lunedì".

STRING = "VENERDÌ"
if ["$ STRING"! = "Monday"]; poi
echo "Almeno non è lunedì"
fi

Nell'esempio seguente, elif (che sta per "else if") viene utilizzato per testare un ulteriore
condizione (ad esempio, se il nome del file è un file o una directory).

nomefile = "$ HOME"


if [-f "$ nomefile"]; poi
echo "$ nomefile è un file normale"
elif [-d "$ nomefile"]; poi
echo "$ nomefile è una directory"
altro
echo "Non ho idea di cosa sia $ nomefile"
fi

Come puoi vedere dagli esempi precedenti, la condizione che stai testando è posta
tra parentesi quadre []. Quando un'espressione di test viene valutata, restituisce un valore
di 0, che significa che è vero, o un 1, che significa che è falso. Notare che le linee di eco sono
rientrato. Il rientro è facoltativo e viene eseguito solo per rendere lo script più leggibile.

La Tabella 7.1 elenca le condizioni che possono essere verificate ed è un riferimento piuttosto utile. (Se sei in un file
sbrigati, puoi digitare help test sulla riga di comando per ottenere le stesse informazioni.)

160
Pagina 201

Capitolo 7: Scrittura di semplici script di shell

TABELLA 7.1 Operatori per le espressioni di test

Operatore Cosa viene testato?

-un file Il file esiste? (uguale a -e)


-b file Il file è un dispositivo speciale a blocchi?
-c file Il carattere del file è speciale (ad esempio, un dispositivo a caratteri)? Usato per identificare
tificare linee seriali e dispositivi terminali.
-d file Il file è una directory?
-e file Il file esiste? (uguale a -a)

-f file Il file esiste ed è un file normale (ad esempio, non una directory,
socket, pipe, link o file di dispositivo)?

-g file Il file ha il bit set-group-id (SGID) impostato?

-h file Il file è un collegamento simbolico? (uguale a -L) 7


-k file Il file ha il bit appiccicoso impostato?

-L file Il file è un collegamento simbolico?


-n stringa La lunghezza della stringa è maggiore di 0 byte?

-O file Possiedi il file?


-p file Il file è una pipe con nome?
-r file Il file è leggibile da te?
-s file Il file esiste ed è più grande di 0 byte?

-S file Il file esiste ed è un socket?

-t fd Il descrittore di file è collegato a un terminale?


-u file Il file ha il bit set-user-id (SUID) impostato?

-w file Il file è scrivibile da te?

-x file Il file è eseguibile da te?

-z stringa La lunghezza della stringa è 0 (zero) byte?

espr1 -a espr2 Sia la prima che la seconda espressione sono vere?


espr1 -o espr2 Una delle due espressioni è vera?
file1 -nt file2 Il primo file è più recente del secondo file (utilizzando il timestamp di modifica)?

file1 -ot file2 Il primo file è più vecchio del secondo file (utilizzando il timestamp di modifica)?

file1 -ef file2 I due file sono associati da un collegamento (un collegamento fisico o un collegamento simbolico)?
var1 = var2 La prima variabile è uguale alla seconda variabile?

var1 -eq var2 La prima variabile è uguale alla seconda variabile?


var1 -ge var2 La prima variabile è maggiore o uguale alla seconda variabile?

var1 -gt var2 La prima variabile è maggiore della seconda variabile?


var1 -le var2 La prima variabile è minore o uguale alla seconda variabile?
var1 -lt var2 La prima variabile è minore della seconda variabile?
var1 ! = var2 La prima variabile non è uguale alla seconda variabile?

var1 -ne var2 La prima variabile non è uguale alla seconda variabile?

161

Pagina 202

Parte II: diventare un Power User Linux

Esiste anche uno speciale metodo abbreviato per eseguire i test che può essere utile
semplici azioni con un comando . Nell'esempio seguente, i due tubi (||) lo indicano
se la directory testata non esiste (-d dirname), crea la directory
(mkdir $ dirname).

# [test] || azione
# Esegue un semplice comando singolo se il test è falso
dirname = "/ tmp / testdir"
[-d "$ dirname"] || mkdir "$ dirname"

Invece di pipe, puoi usare due e commerciali per verificare se qualcosa è vero. Nel seguente
Ad esempio, un comando viene testato per vedere se include almeno tre argomenti della riga di comando.

# [test] && {action}


# Esegue una semplice azione singola se il test è vero
[$ # -ge 3] && echo "Ci sono almeno 3 argomenti della riga di comando."

Puoi combinare && e || operatori di fare un rapido, di una riga se-allora-altro


dichiarazione. Il seguente esempio verifica che la directory rappresentata da $ dirname
esiste già. In caso affermativo, un messaggio dice che la directory esiste già. In caso contrario, il file
istruzione crea la directory:

# dirname = mydirectory
# [-e $ dirname] && echo $ dirname già esiste || mkdir $ dirname

Il comando case
Un altro costrutto utilizzato di frequente è il comando case. Simile a un'istruzione switch
nei linguaggi di programmazione, questo può sostituire diverse istruzioni if ​annidate. Il
la seguente è la forma generale della dichiarazione del caso:

caso "VAR" in
Risultato1)
{body} ;;
Risultato2)
{body} ;;
*)
{body} ;;
esac

Tra le altre cose, puoi usare il comando case per aiutare con i tuoi backup. Il seguente
case statement verifica le prime tre lettere del giorno corrente (case 'date +% a' in).
Quindi, a seconda del giorno, una particolare directory di backup (BACKUP) e unità nastro (TAPE)
sono impostati.

# Il nostro VAR non deve essere una variabile,


# può anche essere l'output di un comando
# Eseguire l'azione in base al giorno della settimana
case `date +% a` in
"Lun")
BACKUP = / home / myproject / data0

162

Pagina 203

Capitolo 7: Scrittura di semplici script di shell

NASTRO = / dev / rft0


# Notare l'uso del doppio punto e virgola per terminare ogni opzione
;;
# Nota l'uso di "|" per significare "o"
"Mar" | "Gio")
BACKUP = / home / myproject / data1
NASTRO = / dev / rft1
;;
"Mer" | "Ven")
BACKUP = / home / myproject / data2
NASTRO = / dev / rft2
;;
# Non eseguire backup nel fine settimana.
*)

BACKUP = "nessuno"
7
TAPE = / dev / null
;;
esac

L'asterisco (*) viene utilizzato come catchall, simile alla parola chiave predefinita nella programmazione C.
linguaggio. In questo esempio, se nessuna delle altre voci corrisponde durante la discesa del file
loop, l'asterisco viene trovato e il valore di BACKUP diventa nessuno. Nota l'uso di esac,
o case scritto al contrario, per terminare l'istruzione case.

Il ciclo "for ... do"


I loop vengono utilizzati per eseguire azioni più e più volte finché una condizione non viene soddisfatta o fino a quando non viene soddisfatta
i dati sono stati elaborati. Uno dei cicli più comunemente usati è il ciclo for ... do. It
itera attraverso un elenco di valori, eseguendo il corpo del ciclo per ogni elemento nell'elenco.
La sintassi e alcuni esempi sono presentati qui:

per VAR in LIST


fare
{ body }
fatto

Il ciclo for assegna i valori in LIST a VAR uno alla volta. Quindi per ogni valore, il
il corpo tra parentesi graffe tra do e done viene eseguito. VAR può essere qualsiasi nome di variabile e LIST
può essere composto praticamente da qualsiasi elenco di valori o da qualsiasi cosa che generi un elenco.

per NUMERO in 0 1 2 3 4 5 6 7 8 9
fare
echo Il numero è $ NUMERO
fatto

per FILE in `/ bin / ls`


fare
echo $ FILE
fatto

163

Pagina 204

Parte II: diventare un Power User Linux

Puoi anche scriverlo in questo modo, che è un po 'più pulito:

per NOME in John Paul Ringo George; fare


echo $ NAME è il mio Beatle preferito
fatto

Ogni elemento nella LISTA è separato dal successivo da uno spazio vuoto. Ciò può causare problemi
se non stai attento perché alcuni comandi, come ls -l, restituiscono più campi per
riga, ciascuna separata da spazi bianchi. La stringa done termina l'istruzione for.

Se sei un programmatore C irriducibile, bash ti consente di utilizzare la sintassi C per controllare i tuoi loop:

LIMITE = 10
# Doppie parentesi e niente $ su LIMIT anche se è una variabile!
per ((a = 1; a <= LIMIT; a ++)); fare
echo "$ a"
fatto

I cicli "while ... do" e "until ... do"


Altri due possibili costrutti di ciclo sono il ciclo while ... do e il ciclo until ... do.
La struttura di ciascuno è presentata qui:

mentre condizione fino alla condizione


fare fare
{ body } { body }
fatto fatto

L'istruzione while viene eseguita mentre la condizione è vera. L'istruzione until viene eseguita
finché la condizione è vera, in altre parole, mentre la condizione è falsa.

Ecco un esempio di un ciclo while che restituisce il numero 0123456789:

N=0
while [$ N -lt 10]; fare
echo -n $ N
sia N = $ N + 1
fatto

Un altro modo per generare il numero 0123456789 è utilizzare un ciclo until come segue:

N=0
fino a [$ N -eq 10]; fare
echo -n $ N
sia N = $ N + 1
fatto

Provando alcuni utili programmi di manipolazione del testo


Bash è fantastico e ha molti comandi integrati, ma di solito ha bisogno di aiuto per farlo
qualcosa di veramente utile. Alcuni dei programmi utili più comuni che vedrai utilizzati sono

164
Pagina 205

Capitolo 7: Scrittura di semplici script di shell

grep, cut, tr, awk e sed. Come con tutti i migliori strumenti UNIX, la maggior parte di questi programmi lo sono
progettato per funzionare con lo standard input e lo standard output, quindi puoi usarli facilmente con
pipe e script di shell.

Il parser di espressioni regolari generali


Il nome parser di espressioni regolari generali (grep) sembra intimidatorio, ma grep è solo un file
modo per trovare modelli in file o testo. Consideralo un utile strumento di ricerca. Acquisire esperienza
con le espressioni regolari è una vera sfida, ma dopo averla padroneggiata, puoi portarla a termine
molte cose utili solo con le forme più semplici.

Ad esempio, puoi visualizzare un elenco di tutti gli account utente regolari utilizzando grep per cercare
tutte le righe che contengono il testo / home nel file / etc / passwd come segue:

$ grep / home / etc / passwd 7


Oppure puoi trovare tutte le variabili di ambiente che iniziano con HO utilizzando quanto segue
comando:

$ env | grep ^ HO

Il ^ i n il codice precedente è il carattere effettivo accento circonflesso, ^, non quello che si vede comunemente per un backspace, ^ H. genere
^, H e O (la lettera maiuscola) per vedere quali elementi iniziano con i caratteri maiuscoli HO.

Per trovare un elenco di opzioni da utilizzare con il comando grep, digita man grep .

Rimuovi sezioni di righe di testo (taglia)


Il comando taglia può estrarre campi da una riga di testo o da file. E 'molto utile
per analizzare i file di configurazione del sistema in blocchi facili da digerire. Puoi specificare il file
separatore di campo che desideri utilizzare e i campi che desideri oppure puoi suddividere una riga
in base ai byte.

Il seguente esempio elenca tutte le home directory degli utenti sul sistema. Questo grep
riga di comando invia un elenco di utenti regolari dal file / etc / passwd e visualizza il file
sesto campo (-f6) delimitato da due punti (-d ':'). Il trattino alla fine indica il taglio a
letto dallo standard input (dalla pipe).

$ grep / home / etc / passwd | cut -d ':' -f6 -

Traduci o elimina caratteri (tr)


Il comando tr è un traduttore basato sui caratteri che può essere utilizzato per sostituire un carattere
o un insieme di caratteri con un altro o per rimuovere un carattere da una riga di testo.

165

Pagina 206

Parte II: diventare un Power User Linux

L'esempio seguente traduce tutte le lettere maiuscole in lettere minuscole e visualizza il file
parole mescolate in maiuscolo e minuscolo come risultato:

$ FOO = "Misto UPpEr e LOWeR cAsE"


$ echo $ FOO | tr [AZ] [az]
lettere maiuscole e minuscole miste

Nel prossimo esempio, il comando tr viene utilizzato in un elenco di nomi di file per rinominare qualsiasi file in formato
tale elenco in modo che eventuali tabulazioni o spazi (come indicato dall'opzione [: blank:]) contenuti in un file
nome file vengono tradotti in trattini bassi. Prova a eseguire il codice seguente in una directory di prova:

per file in *; fare


f = `echo $ file | tr [: vuoto:] [_] `
["$ file" = "$ f"] || mv -i - "$ file" "$ f"
fatto

L'editor del flusso (sed)


Il comando sed è un semplice editor con script, quindi può eseguire solo modifiche semplici, come
come rimuovere le righe che hanno testo che corrisponde a un certo modello, sostituendo un modello di
personaggi con un altro e così via. Per avere un'idea migliore di come funzionano gli script sed, non c'è
sostituire la documentazione in linea, ma qui ci sono alcuni esempi di usi comuni.

Puoi usare il comando sed essenzialmente per fare quello che ho fatto in precedenza con l'esempio grep:
cerca nel file / etc / passwd la parola home. Qui il comando sed cerca il file
l'intero file / etc / passwd, cerca la parola home e stampa qualsiasi riga contenente il file
parola casa.

$ sed -n '/ home / p' / etc / passwd

In questo esempio, sed cerca nel file somefile.txt e sostituisce ogni istanza di
string Mac con Linux. Si noti che la lettera g è necessaria alla fine della sostituzione
comando per far sì che ogni occorrenza di Mac su ogni riga venga modificata in Linux.
(In caso contrario, viene modificata solo la prima istanza di Mac su ciascuna riga.) L'output è quindi
inviato al file fixed_file.txt. L'output di sed va a stdout, quindi questo comando
reindirizza l'output a un file per custodia.

$ sed 's / Mac / Linux / g' somefile.txt> fixed_file.txt

Puoi ottenere lo stesso risultato usando una pipe:

$ cat somefile.txt | sed 's / Mac / Linux / g'> fixed_file.txt

Cercando un motivo e sostituendolo con un motivo nullo, si elimina l'originale


modello. Questo esempio cerca il contenuto del file somefile.txt e lo sostituisce
spazi vuoti extra alla fine di ogni riga (s / * $) senza nulla (//). I risultati vanno al
file fixed_file.txt.

$ cat somefile.txt | sed 's / * $ //'> fixed_file.txt

166

Pagina 207

Capitolo 7: Scrittura di semplici script di shell

Utilizzando semplici script di shell


A volte, il più semplice degli script può essere il più utile. Se digiti la stessa sequenza
di comandi ripetutamente, ha senso memorizzare quei comandi (una volta!) in un file. Il
Le sezioni seguenti offrono un paio di semplici, ma utili, script di shell.

Elenco telefonico
Questa idea è stata tramandata di generazione in generazione di vecchi hack UNIX. Suo
davvero abbastanza semplice, ma impiega molti dei concetti appena introdotti.

#! / bin / bash
# (@) / ph
# Un elenco telefonico molto semplice
# Digita "ph nuovo numero nome" per aggiungere all'elenco, o
# digita semplicemente "ph name" per ottenere un numero di telefono 7
PHONELIST = ~ / .phonelist.txt

# Se non ci sono parametri della riga di comando ($ #), lì


# è un problema, quindi chiedi di cosa stanno parlando.
se [$ # -lt 1]; poi
echo "Di chi volevi il numero di telefono?"
uscita 1
fi

# Volevi aggiungere un nuovo numero di telefono?


se [$ 1 = "nuovo"]; poi
cambio
echo $ * >> $ PHONELIST
echo $ * aggiunto al database
uscita 0
fi

# No. Ma il file contiene ancora qualcosa?


# Questa potrebbe essere la prima volta che lo usiamo, dopotutto.
Se [ ! -s $ PHONELIST]; poi
echo "Ancora nessun nome nell'elenco telefonico!"
uscita 1
altro
grep -i -q "$ *" $ PHONELIST # Cerca tranquillamente il file
se [$? -ne 0]; poi # Abbiamo trovato qualcosa?
echo "Spiacenti, il nome non è stato trovato nell'elenco dei telefoni"
uscita 1
altro
grep -i "$ *" $ PHONELIST
fi
fi
uscita 0

167

Pagina 208

Parte II: diventare un Power User Linux

Quindi, se hai creato il file dell'elenco telefonico come ph nella tua directory corrente, potresti digitare il
seguendo dalla shell per provare il tuo script ph:

$ chmod 755 ph
$. / ph nuovo "Mary Jones" 608-555-1212
Mary Jones 608-555-1212 aggiunta al database
$. / ph Mary
Mary Jones 608-555-1212

Il comando chmod rende eseguibile lo script ph. Il comando ./ph esegue il ph


comando dalla directory corrente con la nuova opzione. Ciò aggiunge Mary Jones come
name e 608-555-1212 come numero di telefono del database ($ HOME / .phone.txt). Il
Il comando next ph cerca nel database il nome Mary e visualizza la voce del telefono
per Mary. Se lo script funziona, aggiungilo a una directory nel tuo percorso (come $ HOME / bin).

Script di backup
Poiché nulla funziona per sempre e si verificano errori, i backup sono solo un dato di fatto quando
trattare dati informatici. Questo semplice script esegue il backup di tutti i dati nelle directory home
di tutti gli utenti sul tuo sistema Fedora o RHEL.

#! / bin / bash
# (@) / my_backup
# Uno script di backup molto semplice
#

# Cambia il dispositivo TAPE in modo che corrisponda al tuo sistema.


# Controlla / var / log / messages per determinare il tuo dispositivo a nastro.
# Potrebbe anche essere necessario aggiungere il supporto per scsi-tape al kernel.
NASTRO = / dev / rft0

# Riavvolge il dispositivo a nastro $ TAPE


mt $ TAPE rew
# Ottieni un elenco di directory home
HOMES = `grep / home / etc / passwd | cut -f6 -d ':' `
# Eseguire il backup dei dati in quelle directory
tar cvf $ TAPE $ HOMES
# Riavvolgi ed espelli il nastro.
mt $ TAPE rewoffl

Sommario
La scrittura di script di shell ti dà l'opportunità di automatizzare molti dei tuoi più comuni
attività di amministrazione del sistema. In questo capitolo sono stati trattati i comandi e le funzioni comuni
può essere utilizzato nello scripting con la shell bash. Ha anche fornito alcuni esempi concreti di script
per eseguire backup e altre procedure.

168

Pagina 209
Capitolo 7: Scrittura di semplici script di shell

Nel prossimo capitolo, passerai dall'apprendimento delle funzionalità utente all'esame


argomenti di amministrazione del sistema. Il Capitolo 8 spiega come diventare l'utente root e come
per utilizzare i comandi amministrativi, monitorare i file di registro e lavorare con i file di configurazione.

Esercizi
Usa questi esercizi per testare la tua conoscenza della scrittura di semplici script di shell. Questi compiti
presumi di eseguire un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività
funziona anche su altri sistemi Linux). Se sei bloccato, vengono mostrate le soluzioni alle attività
Appendice B (sebbene in Linux ci siano spesso diversi modi per completare un'attività).

1. Creare uno script nella directory $ HOME / bin chiamato myownscript. Quando lo script
viene eseguito, dovrebbe restituire informazioni che hanno il seguente aspetto: 7
Oggi è sabato 10 dicembre 15:45:04 EST 2016.
Sei in / home / joe e il tuo host è abc.example.com.

Ovviamente, è necessario leggere la data / ora corrente, la directory di lavoro corrente,


e nome host. Inoltre, includi commenti su ciò che lo script fa e indica
che lo script dovrebbe essere eseguito con la shell / bin / bash.

2. Crea uno script che legge tre parametri posizionali dalla riga di comando,
assegna questi parametri alle variabili denominate rispettivamente ONE, TWO e THREE,
e genera tali informazioni nel seguente formato:
Ci sono parametri X che includono Y.
Il primo è A, il secondo è B, il terzo è C.

Sostituisci X con il numero di parametri e Y con tutti i parametri inseriti. Poi


sostituire A con il contenuto della variabile UNO, B con la variabile DUE e C con
variabile TRE.

3. Creare uno script che richieda agli utenti il ​nome della via e della città in cui
sono cresciuti. Assegna città e strada a variabili chiamate mytown e mystreet,
e restituirli con una frase che si legge come mostrato nel codice seguente (di
ovviamente, $ mystreet e $ mytown appariranno con la città e la strada effettive
l'utente entra):
La strada in cui sono cresciuto era $ mystreet e la città $ mytown .

4. Creare uno script chiamato myos che chiede all'utente: "Qual è il tuo funzionamento preferito
sistema?" Emette una frase offensiva se l'utente digita Windows o Mac. Rispondere
"Ottima scelta!" se l'utente digita Linux. Per qualsiasi altra cosa, dì "È < ciò che viene digitato >
un sistema operativo? "

5. Creare uno script che esegua le parole alce, mucca, oca e semina attraverso un ciclo for.
Aggiungi ciascuna di queste parole alla fine della riga "Ho un ..."

169

Pagina 211
210

Parte III
Diventare un Linux
Amministratore di sistema
IN QUESTA PARTE Capitolo 11
Gestione degli account utente
Capitolo 8
Amministrazione del sistema di apprendimento Capitolo 12
Gestione di dischi e file system
Capitolo 9
Installazione di Linux

Capitolo 10
Acquisizione e gestione del software

Pagina 213
212

CAPITOLO

8
Amministrazione del sistema di apprendimento
IN QUESTO CAPITOLO
Fare amministrazione grafica

Utilizzando il login di root

Comprensione dei comandi amministrativi, dei file di configurazione e dei file di registro

Lavorare con dispositivi e filesystem

L Le funzionalità multiutente consentono a molte persone di avere account su un singolo sistema Linux, con il loro
dati tenuti al sicuro dagli altri. Il multitasking consente a molte persone di eseguire molti programmi su
inux, come altri sistemi basati su UNIX, era concepito per essere utilizzato da più di una persona alla volta.
computer contemporaneamente, con ogni persona in grado di eseguire più di un programma.Sofisticato
i protocolli e le applicazioni di rete consentono a un sistema Linux di estendere le proprie capacità
a utenti e computer in rete in tutto il mondo. La persona assegnata per gestire tutto un Linux
le risorse di sistema sono chiamate amministratore di sistema .

Anche se sei l'unica persona che utilizza un sistema Linux, l'amministrazione del sistema è ancora configurata
separato da altri utilizzi del computer. Per eseguire la maggior parte delle attività amministrative, è necessario accedere come
utente root (chiamato anche superutente ) o per ottenere temporaneamente i permessi di root (di solito usando il file sudo
comando). Gli utenti regolari che non hanno il permesso di root non possono cambiare, o in alcuni casi anche vedere,
alcune delle informazioni di configurazione per un sistema Linux. In particolare, funzionalità di sicurezza come
le password memorizzate sono protette dalla visualizzazione generale.

Poiché l'amministrazione del sistema Linux è un argomento così vasto, questo capitolo si concentra sul generale
principi di amministrazione del sistema Linux. In particolare, esamina alcuni degli strumenti di base
è necessario amministrare un sistema Linux per un desktop personale o su un piccolo server. Al di là delle basi,
questo capitolo insegna anche come lavorare con i file system e monitorare la configurazione e le prestazioni
del tuo sistema Linux.

Capire l'amministrazione del sistema


Separare il ruolo di amministratore di sistema da quello di altri utenti ha diversi effetti. Per un
sistema che ha molte persone che lo utilizzano, limitando chi può gestirlo ti consente di mantenere un sistema
più sicuro. Un ruolo amministrativo separato impedisce anche ad altri di danneggiare casualmente il tuo sistema
quando lo usano solo per scrivere un documento o navigare in Internet.

173

Pagina 214

Parte III: diventare un amministratore di sistema Linux

Se sei l'amministratore di sistema di un sistema Linux, generalmente accedi come un normale


account utente e quindi chiedere i privilegi di amministratore quando ne hai bisogno. Questo è spesso
fatto con uno dei seguenti:

■ Comando su: spesso su viene utilizzato per aprire una shell come utente root. Dopo che è stato aperto, il file
L'amministratore può eseguire più comandi e quindi uscire per tornare a una shell come file
utente normale.
■ sudo comando -Con sudo, un utente normale è dato privilegi di root, ma solo quando
quell'utente esegue il comando sudo per eseguire un altro comando. Dopo averlo eseguito
un comando con sudo, l'utente viene immediatamente restituito a una shell e agisce come
nuovamente l'utente normale. Ubuntu assegna il privilegio sudo al primo account utente
su un sistema Ubuntu per impostazione predefinita. Questo non viene fatto di default in Fedora e RHEL,
sebbene tu possa scegliere che il tuo primo utente abbia il privilegio sudo se lo desideri,
durante l'installazione di Fedora o RHEL.
■ Finestre grafiche: molte finestre di amministrazione grafiche, che possono essere
avviato dal menu Sistema o Applicazioni (GNOME 2) o dalla schermata Attività
(GNOME 3), può essere avviato da un utente normale. Con alcuni strumenti, quando il privilegio di root è
necessario, viene richiesta la password di root.

Le attività che possono essere eseguite solo dall'utente root tendono ad essere quelle che influenzano il sistema come
un tutto o influire sulla sicurezza o sulla salute del sistema. Di seguito è riportato un elenco di comuni
caratteristiche che un amministratore di sistema dovrebbe gestire:

■ Filesystem: quando si installa Linux per la prima volta, la struttura della directory è impostata per make
il sistema utilizzabile. Tuttavia, se gli utenti in seguito desiderano aggiungere ulteriore spazio di archiviazione o modificare il file
layout del file system al di fuori della loro directory home, hanno bisogno di privilegi amministrativi
fare quello. Inoltre, l'utente root dispone dell'autorizzazione per accedere ai file di proprietà di qualsiasi utente. Come
Di conseguenza, l'utente root può copiare, spostare o modificare i file di qualsiasi altro utente: un privilegio
necessario per fare copie di backup del filesystem per tenerlo al sicuro.
■ Installazione del software: poiché il software dannoso può danneggiare il sistema o
renderlo insicuro, è necessario il privilegio di root per installare il software in modo che sia disponibile
tutti gli utenti sul tuo sistema. Gli utenti regolari possono ancora installare alcuni software da soli
directory e può elencare le informazioni sul software di sistema installato.
■ Account utente: solo l'utente root può aggiungere e rimuovere account utente e
account di gruppo.
■ Interfacce di rete: in passato, l'utente root doveva configurare le interfacce di rete
e avvia e ferma quelle interfacce. Ora, molti desktop Linux consentono agli utenti regolari
per avviare e arrestare le interfacce di rete dal desktop utilizzando Network Manager.
Ciò è particolarmente vero per le interfacce di rete wireless, che possono andare e venire
posizione, mentre sposti il ​tuo laptop o dispositivo portatile Linux.
■ Server: configurazione di server Web, file server, server dei nomi di dominio, server di posta,
e dozzine di altri server richiedono i privilegi di root, così come l'avvio e l'arresto
quei servizi. I contenuti, come le pagine web, possono essere aggiunti ai server da utenti non root

174

Pagina 215

Capitolo 8: Learning System Administration


utenti se configuri il tuo sistema per consentirlo. I servizi sono spesso eseguiti come speciali
account utente amministrativi, come apache (per il servizio httpd) e rpc (per
il servizio rpcbind). Quindi, se qualcuno viola un servizio, non può ottenere i privilegi di root
ad altri servizi o risorse di sistema.
■ Funzioni di sicurezza -Impostare funzioni di sicurezza, quali firewall e l'accesso degli utenti
elenchi, di solito è fatto con i privilegi di root. Sta anche all'utente root controllare come
i servizi vengono utilizzati e assicurarsi che le risorse del server non siano esaurite
o abusato.

Il modo più semplice per iniziare l'amministrazione del sistema è utilizzare alcuni strumenti di amministrazione grafici.

Utilizzo degli strumenti di amministrazione grafica


La maggior parte dell'amministrazione del sistema per i primi sistemi Linux veniva eseguita dalla riga di comando.
Poiché Linux è diventato più popolare, tuttavia, sia le interfacce grafiche che quelle della riga di comando
cominciò ad essere offerto per le attività amministrative più comuni di Linux.

Alcuni dei primi strumenti grafici di amministrazione del sistema provenivano da Red Hat. Comandi per
il lancio di questi strumenti GUI in genere inizia con system-config- *. Possono essere usati per
eseguire attività amministrative di base, come configurare una stampante o impostare la data, l'ora,
e fuso orario.
8
Per creare una più ampia adozione di Linux nei data center aziendali, tuttavia, alcuni di più
importanti progetti software per la gestione di progetti cloud, gestione delle identità e altro
i servizi ora offrono interfacce basate su browser. Ciò ha contribuito a incoraggiare l'adozione di Linux
in organizzazioni che avevano precedentemente utilizzato sistemi Microsoft Windows nei propri data center.

Le sezioni seguenti descrivono alcuni dei tipi di interfaccia punta e clicca che sono
disponibile per l'amministrazione del sistema in Linux.

Utilizzo degli strumenti system-config- *


Una serie di strumenti grafici forniti con i sistemi Fedora e Red Hat Enterprise Linux
può essere avviato dal sottomenu Amministrazione del menu Sistema (GNOME 2), da
dalla schermata Attività (GNOME 3) o dalla riga di comando. La maggior parte dei file Fedora e RHEL
gli strumenti che si avviano dalla riga di comando iniziano con la stringa di configurazione del sistema (come
system-config-network).

Questi strumenti di configurazione del sistema richiedono l'autorizzazione di root. Se hai effettuato l'accesso come utente normale,
è necessario immettere la password di root prima dell'applicazione GUI (Graphical User Interface)
si apre la finestra o, in alcuni casi, quando si richiede di svolgere un'attività speciale.

Il seguente elenco descrive molti degli strumenti grafici che puoi usare per amministrare Fedora
o il sistema Red Hat Enterprise Linux (alcuni sono solo in Fedora e molti non sono installati

175

Pagina 216

Parte III: diventare un amministratore di sistema Linux

per impostazione predefinita). Il comando che puoi avviare per ottenere la funzione è mostrato tra parentesi (spesso,
è lo stesso del nome del pacchetto). I seguenti strumenti grafici sono disponibili in Fedora:

■ Domain Name System (system-config-bind): crea e configura zone se


il tuo computer funge da server DNS.
■ HTTP (system-config-httpd): consente di configurare il computer come server Web Apache.
■ NFS (system-config-nfs): consente di configurare le directory del sistema con cui condividerle
altri computer sulla rete che utilizzano il servizio NFS.
■ Root Password (system-config-rootpassword): modificare la password root.
■ Samba NFS (system-config-samba): consente di configurare la condivisione di file Windows (SMB). (Per
configurare altre funzionalità di Samba, è possibile utilizzare la finestra SWAT.)

I seguenti strumenti grafici sono disponibili sia in Fedora che in Red Hat Enterprise Linux:

■ Services (system-config-services): consente di visualizzare e modificare i servizi


sono in esecuzione sul tuo sistema Fedora a diversi livelli di esecuzione dal servizio
Finestra di configurazione.
■ Autenticazione (authconfig-gtk): modifica la modalità di autenticazione degli utenti sul tuo
sistema. In genere, vengono selezionate le password shadow e le password MD5. Tuttavia, se
la tua rete supporta l'autenticazione LDAP, Kerberos, SMB, NIS o Hesiod, puoi farlo
selezionare di utilizzare uno qualsiasi di questi tipi di autenticazione.
■ Data e ora (system-config-date): impostare la data e l'ora o scegliere di avere un'estensione
Il server NTP mantiene sincronizzata l'ora di sistema.
■ Firewall (system-config-firewall): consente di configurare il firewall per consentire o negare
servizi ai computer dalla rete.
■ Lingua (system-config-language): selezionare la lingua predefinita utilizzata per
sistema.
■ Stampa (system-config-printer): consente di configurare le stampanti locali e di rete.
■ SELinux Management (policycoreutils-gui): imposta le modalità di applicazione di SELinux
e politica predefinita.
■ Users & Groups (system-config-users): aggiungi, visualizza e cambia utente e
account di gruppo per il tuo sistema Fedora.

Altre utilità amministrative sono disponibili dal menu Applicazioni nel pannello superiore.
Seleziona il sottomenu Strumenti di sistema (in GNOME 2) o vai alla schermata Attività (in GNOME 3)
per scegliere alcuni dei seguenti strumenti (se installati):

■ Editor di configurazione (gconf-editor): modifica direttamente la configurazione di GNOME


Banca dati.
■ Disk Usage Analyzer (gnome-utils): mostra informazioni dettagliate sul tuo
dischi rigidi e dispositivi di archiviazione rimovibili.

176

Pagina 217

Capitolo 8: Learning System Administration

■ Utility Disco (gnome-disks): consente di gestire le partizioni del disco e di aggiungere file system
(pacchetto gnome-disk-utility).
■ Kickstart (system-config-kickstart): crea un file di configurazione kickstart
che può essere utilizzato per installare più sistemi Linux senza l'interazione dell'utente.

Mentre esamini il resto di questo libro per configurare vari server Linux, descriverò come
per utilizzare molti di questi strumenti. Quando si vuole andare oltre l'amministrazione punta e clicca
, è necessario imparare come ottenere i privilegi di root dalla shell, come descritto in
sezione successiva.

Utilizzo di strumenti di amministrazione basati su browser


Per semplificare la gestione di molti progetti open source di qualità aziendale, quelli
i progetti hanno iniziato a offrire strumenti di gestione grafica basati su browser. Nella maggior parte dei casi,
questi progetti offrono anche strumenti a riga di comando per la gestione di questi progetti.

Ad esempio, se stai usando Red Hat Enterprise Linux, ci sono interfacce basate su browser
per la gestione dei seguenti progetti:

■ Red Hat Enterprise Linux OpenStack Platform (RHELOSP): OpenStack


Il progetto Platform as a Service ti consente di gestire il tuo cloud ibrido privato
tramite il tuo browser. Ciò include la dashboard di OpenStack da OpenStack
Progetto Horizon (http://horizon.openstack.org). Quell'interfaccia te lo consente
8
lanciare e gestire macchine virtuali e tutte le risorse che le circondano: storage,
networking, autenticazione, elaborazione delle allocazioni e così via. Fare riferimento al Capitolo 27
per una descrizione di come utilizzare OpenStack Dashboard.
■ Red Hat Enterprise Virtualization (RHEV) - Con RHEV, il gestore RHEV
fornisce l'interfaccia basata su browser per la gestione delle macchine virtuali, inclusi
allocare lo spazio di archiviazione e l'accesso degli utenti alle risorse. Molti altri esempi di
Gli strumenti di amministrazione grafica basati su browser sono disponibili con i progetti open source.
Se sei nuovo su Linux, può essere più facile iniziare con queste interfacce.
Tuttavia, tieni presente che spesso è necessario utilizzare gli strumenti della riga di comando se necessario
risolvere i problemi, perché gli strumenti grafici sono spesso limitati in quell'area.

Utilizzando l'account utente root


Ogni sistema Linux inizia con almeno un account utente amministrativo (l'utente root)
e possibilmente uno o più account utente regolari (dato un nome che scegli o un nome
assegnato dalla tua distribuzione Linux). Nella maggior parte dei casi, accedi come utente normale e diventi
l'utente root per eseguire un'attività amministrativa.

L'utente root ha il controllo completo del funzionamento del tuo sistema Linux. Quell'utente può
apri qualsiasi file o esegui qualsiasi programma. L'utente root installa anche i pacchetti software e aggiunge
rappresenta altre persone che utilizzano il sistema.
177

Pagina 218

Parte III: diventare un amministratore di sistema Linux

Pensa all'utente root in Linux come simile all'utente amministratore in Windows.

Quando installi per la prima volta la maggior parte dei sistemi Linux (sebbene non tutti i sistemi), aggiungi una password
per l'utente root. Devi ricordare e proteggere questa password; ti serve per accedere come
root o per ottenere l'autorizzazione di root mentre si è connessi come un altro utente.

Per acquisire familiarità con l'account utente root, puoi semplicemente accedere come utente root. io
consiglia di provarlo da una console virtuale. Per farlo, premi Ctrl + Alt + F2. Quando vedi
al prompt di accesso, digita root (premi Invio) e inserisci la password. Una sessione di accesso per
si apre la radice. Quando hai finito, digita exit, quindi premi Ctrl + Alt + F1 per tornare al file
accesso desktop regolare.

Dopo aver effettuato l'accesso come root, la directory home dell'utente root è tipicamente / root.
La directory home e altre informazioni associate all'account utente root si trovano
nel file / etc / passwd. Ecco come appare la voce di root nel file / etc / passwd:

root: x: 0: 0: root: / root: / bin / bash

Ciò mostra che per l'utente denominato root, l'ID utente è impostato su 0 (utente root), il gruppo
L'ID è impostato su 0 (gruppo root), la directory home è / root e la shell per quell'utente è
/ bin / bash. (Linux usa il file / etc / shadow per memorizzare i dati delle password crittografate, quindi il file
il campo password qui contiene una x .) È possibile modificare la directory home o la shell utilizzata
modificando i valori in questo file. Un modo migliore per modificare questi valori, tuttavia, è usare
il comando usermod (vedere la sezione "Modifica degli utenti con usermod" nel Capitolo 11 per
ulteriori informazioni).

A questo punto, qualsiasi comando eseguito dalla shell viene eseguito con privilegi di root. Quindi sii
attento. Hai molto più potere di cambiare (e danneggiare) il sistema rispetto a come facevi in
utente normale. Di nuovo, digita exit quando hai finito e se sei su una console virtuale
e avere un'interfaccia desktop in esecuzione su un'altra console, premere Ctrl + Alt + F1 per tornare al file
schermata di accesso grafica, se si utilizza un sistema desktop Linux.

Per impostazione predefinita, l'account root non ha una password impostata in Ubuntu. Ciò significa che anche se l'account esiste, tu
non può accedere usandolo o usare su per diventare l'utente root. Questo aggiunge un ulteriore livello di sicurezza a Ubuntu e richiede
devi usare sudo prima di ogni comando che desideri eseguire come utente root.

Diventare root dalla shell (comando su)


Sebbene tu possa diventare il superutente accedendo come root, a volte non lo è
conveniente.

178

Pagina 219

Capitolo 8: Learning System Administration

■ Ad esempio, potresti aver effettuato l'accesso a un normale account utente e desideri solo creare
una rapida modifica amministrativa al sistema senza dover disconnettersi e accedere
potrebbe essere necessario accedere tramite la rete per apportare una modifica a un Linux
sistema ma scopre che il sistema non consente agli utenti root di accedere dalla rete-
work (una pratica comune per i sistemi Linux sicuri). Una soluzione è usare il su
comando. Da qualsiasi finestra o shell di Terminale, puoi semplicemente digitare quanto segue:

$ su
Password: ******
#

Quando richiesto, digita la password dell'utente root. Il prompt per l'utente normale ($)
modifiche al prompt del superutente (#). A questo punto, hai l'autorizzazione completa per eseguire qualsiasi file
comando e utilizzare qualsiasi file sul sistema. Tuttavia, una cosa che il comando su non fa
quando usato in questo modo viene letto nell'ambiente dell'utente root. Di conseguenza, puoi digitare a
comando che sai è disponibile e ricevi il messaggio Comando non trovato. Per risolvere questo problema
problema, usa invece il comando su con l'opzione trattino (-), in questo modo:

$ su -
Password: ******
#

Hai ancora bisogno di digitare la password, ma dopo tutto ciò che normalmente accade in
il login per l'utente root avviene dopo che il comando su è stato completato. La tua directory attuale
sarà la directory home di root (probabilmente / root) e cose come il PATH dell'utente root 8
vengono utilizzate variabili. Se diventi l'utente root semplicemente digitando su, anziché su -, tu
non modificare le directory o l'ambiente della sessione di accesso corrente.

Puoi anche usare il comando su per diventare un utente diverso da root. Questo è utile per
risoluzione di un problema riscontrato da un determinato utente, ma non da altri
sul computer (come l'impossibilità di stampare o inviare e-mail). Ad esempio, per avere il file
autorizzazioni di un utente chiamato jsmith, devi digitare quanto segue:

$ su - jsmith

Anche se fossi un utente root prima di digitare questo comando, in seguito lo avresti fatto
solo i permessi per aprire file ed eseguire programmi disponibili per jsmith. Come root
user, tuttavia, dopo aver digitato il comando su per diventare un altro utente, non è necessario un file
password per continuare. Se digiti quel comando come utente normale, devi digitare il nuovo
password dell'utente.

Quando hai finito di usare i permessi di superutente, torna alla shell precedente uscendo
la shell corrente. Fallo premendo Ctrl + D o digitando exit . Se sei l'amministratore
per un computer accessibile a più utenti, non lasciare una shell di root aperta su qualcuno
sullo schermo di un altro, a meno che tu non voglia dare a quella persona la libertà di fare tutto ciò che vuole
al computer!

179

Pagina 220

Parte III: diventare un amministratore di sistema Linux

Consentire l'accesso amministrativo tramite la GUI


Come accennato in precedenza, quando esegui strumenti GUI come utente normale (da Fedora, Red Hat
Enterprise Linux, o alcuni altri sistemi Linux), viene richiesta la password di root
prima di poter accedere allo strumento. Inserendo la password di root, ti viene fornito il root
privilegio per quell'attività.

Per i sistemi Linux che utilizzano il desktop GNOME 2, dopo aver immesso la password, un badge giallo
L'icona appare nel pannello superiore, indicando che l'autorizzazione di root è ancora disponibile per altri
Strumenti GUI da eseguire da quella sessione desktop. Per i desktop GNOME 3, è necessario immettere la radice
password ogni volta che avvii uno degli strumenti di configurazione del sistema.

Ottenere l'accesso amministrativo con sudo


A determinati utenti possono anche essere concesse autorizzazioni amministrative per attività particolari o
qualsiasi attività digitando sudo seguito dal comando che vogliono eseguire, senza essere
data la password di root. La struttura sudoers è il modo più comune per fornire tale
privilegio. Usando sudoer, per qualsiasi utente o gruppo sul sistema, puoi farlo
il seguente:

■ Assegnare privilegi di root per qualsiasi comando eseguito con sudo.


■ Assegnare privilegi di root per un insieme selezionato di comandi.
■ Concedere agli utenti privilegi di root senza fornire loro la password di root perché solo loro
devono fornire la propria password utente per ottenere i privilegi di root.
■ Consenti agli utenti, se lo desideri, di eseguire sudo senza immettere una password.
■ Tenere traccia degli utenti che hanno eseguito comandi amministrativi sul sistema. (Usando su,
tutto quello che sai è che qualcuno con la password di root ha effettuato l'accesso, mentre il sudo
il comando registra quale utente esegue un comando amministrativo.)

Con la funzione sudoers, dare privilegi di root completi o limitati a qualsiasi utente implica semplicemente
aggiungendo l'utente a / etc / sudoers e definendo quale privilegio si vuole che l'utente abbia
avere. Quindi l'utente può eseguire qualsiasi comando che ha il privilegio di utilizzare precedendolo
comando con il comando sudo.

Ecco un esempio di come utilizzare la funzione sudo per far sì che l'utente chiamato joe abbia il pieno
privilegio di root.

Se guardi il file sudoers in Ubuntu, vedi che l'utente iniziale sul sistema ha già i privilegi, da
impostazione predefinita, per i membri del gruppo admin. Per concedere a qualsiasi altro utente lo stesso privilegio, puoi semplicemente aggiungere il file
utente al gruppo admin quando esegui visudo.

180

Pagina 221

Capitolo 8: Learning System Administration

1. Come utente root, modifica il file / etc / sudoers eseguendo il comando visudo:
# / usr / sbin / visudo

Per impostazione predefinita, il file si apre in vi, a meno che la variabile EDITOR non sia impostata su
qualche altro editor accettabile per visudo (ad esempio, export EDITOR = gedit).
Il motivo per utilizzare visudo è che il comando blocca il file / etc / sudoers e
esegue alcuni controlli di integrità di base del file per assicurarsi che sia stato modificato correttamente.

Se sei bloccato qui, prova a eseguire il comando vimtutor per un rapido tutorial sull'uso di vi e vim.

2. Aggiungere la seguente riga per consentire a Joe di disporre dei privilegi di root completi sul computer:
joe ALL = (ALL) ALL

Questa linea fa sì che Joe fornisca una password (la sua password, non il pass di root-
word) per utilizzare i comandi amministrativi. Per consentire a Joe di avere quel privilegio
senza utilizzare una password, digita invece la seguente riga:
joe ALL = (ALL) NOPASSWD: ALL

3. Salvare le modifiche al file / etc / sudoers (in vi, digitare Esc e quindi: wq). Il
di seguito è riportato un esempio di una sessione dell'utente joe dopo che è stato assegnato
privilegi sudo:
[joe] $ sudo touch /mnt/testfile.txt
8
Confidiamo che abbiate ricevuto la solita conferenza
dall'amministratore di sistema locale. Di solito
si riduce a queste due cose:
# 1) Rispetta la privacy degli altri.
# 2) Pensa prima di digitare.
Password: *********
[joe] $ ls -l /mnt/testfile.txt
-rw-r - r--. 1 root root 0 Jan 7 08:42 /mnt/testfile.txt
[joe] $ rm /mnt/testfile.txt
rm: impossibile rimuovere "/mnt/testfile.txt": autorizzazione negata
[joe] $ sudo rm /mnt/textfile.txt
[joe] $

In questa sessione, l'utente joe esegue sudo per creare un file (/mnt/textfile.txt) in una directory
storia per la quale non ha il permesso di scrittura. Gli viene dato un avvertimento e gli viene chiesto di promuovere
vide la sua password (questa è la password di Joe, non la password di root).

Anche dopo che Joe ha fornito la password, deve comunque utilizzare il comando sudo per eseguire il successivo
comandi amministrativi come root (rm fallisce, ma sudo rm riesce). Notare che lo è
non è stata richiesta una password per il secondo sudo. Questo perché dopo aver inserito la sua password
con successo, può inserire tutti i comandi sudo che vuole per i prossimi 5 minuti
senza doverlo reinserire. (È possibile modificare il valore di timeout da 5 minuti a qualsiasi
periodo di tempo desiderato impostando il valore passwd_timeout nel file / etc / sudoers.)

181
Pagina 222

Parte III: diventare un amministratore di sistema Linux

L'esempio precedente concede un semplice privilegio amministrativo tutto o niente a


Joe. Tuttavia, il file / etc / sudoers offre un'incredibile flessibilità
nel consentire a singoli utenti e gruppi di utilizzare singole applicazioni o gruppi di
applicazioni. Fare riferimento alle pagine man sudoers e sudo per informazioni su come ottimizzare
la tua struttura sudo.

Esplorazione dei comandi amministrativi, configurazione


File e file di registro
Puoi aspettarti di trovare molti comandi, file di configurazione e file di registro negli stessi posti
nel filesystem, indipendentemente dalla distribuzione Linux che stai utilizzando. La sezione seguente
zioni forniscono alcuni suggerimenti su dove cercare questi elementi importanti.

Se gli strumenti di amministrazione della GUI per Linux sono diventati così buoni, perché è necessario conoscere i file amministrativi? Per
una cosa, mentre gli strumenti GUI differiscono tra le versioni di Linux, molti file di configurazione sottostanti sono gli stessi. Quindi, se tu
impara a lavorare con loro, puoi lavorare con quasi tutti i sistemi Linux. Inoltre, se una funzionalità è rotta o se è necessario farlo
qualcosa che non è supportato dalla GUI, quando chiedi aiuto, gli esperti di Linux ti dicono quasi sempre come eseguire
comandi o modificare direttamente il file di configurazione.

Comandi amministrativi
Solo l'utente root può utilizzare molti comandi amministrativi. Quando accedi
come root (o usa su - dalla shell per diventare root), la tua variabile $ PATH è impostata per includere
alcune directory che contengono comandi per l'utente root. In passato, questi hanno incluso
il seguente:

■/ sbin: contiene i comandi necessari per avviare il sistema, inclusi i comandi per
controllare i filesystem (fsck) e accendere i dispositivi di scambio (swapon).
■/ usr / sbin: contiene comandi per operazioni come la gestione degli account utente
(come useradd) e il controllo dei processi che tengono i file aperti (come
come lsof). Anche i comandi che vengono eseguiti come processi daemon sono contenuti in questo file
directory. I processi daemon sono processi che vengono eseguiti in background, in attesa
per richieste di servizio come quelle per accedere a una stampante o una pagina web. (Cercare
comandi che terminano con d, come sshd, pppd e cupsd.)

Le directory / sbin e / usr / sbin sono ancora utilizzate in Ubuntu come descritto qui. Tuttavia,
per RHEL 7 e le ultime versioni di Fedora, tutti i comandi amministrativi dai due
le directory sono memorizzate nella directory / usr / sbin (che è simbolicamente collegata a / sbin).
Inoltre, solo / usr / sbin viene aggiunto al PATH dell'utente root, così come al PATH di tutti
utenti regolari.

182

Pagina 223

Capitolo 8: Learning System Administration

Alcuni comandi amministrativi sono contenuti in normali directory utente (come / bin
e / usr / bin). Ciò è particolarmente vero per i comandi per i quali sono disponibili alcune opzioni
tutti. Un esempio è il comando / bin / mount, che chiunque può utilizzare per elencare i montati
filesystem, ma solo root può usarli per montare i filesystem. (Alcuni desktop, tuttavia, lo sono
configurato per consentire agli utenti regolari di utilizzare il montaggio per montare CD, DVD o altri supporti rimovibili.)
Vedere la sezione "Montare i filesystem" nel Capitolo 12 per istruzioni su come montare un filesystem.

Per trovare comandi destinati principalmente all'amministratore di sistema, consultare la sezione 8


pagine di manuale (di solito in / usr / share / man / man8). Contengono descrizioni e opzioni
per la maggior parte dei comandi amministrativi di Linux. Se vuoi aggiungere comandi al tuo sistema,
considera di aggiungerli a directory come / usr / local / bin o / usr / local / sbin.
Alcune distribuzioni Linux aggiungono automaticamente quelle directory al tuo PERCORSO, di solito prima
le directory bin e sbin standard. In questo modo, i comandi installati in quelle directory
Le directory non solo sono accessibili, ma possono anche sovrascrivere i comandi con lo stesso nome in altri
directory. Alcune applicazioni di terze parti che non sono incluse nelle distribuzioni Linux
a volte vengono inseriti in / usr / local / bin, / opt / bin o / usr / local / sbin
directory.

File di configurazione amministrativa 8


I file di configurazione sono un altro pilastro dell'amministrazione Linux. Quasi tutto
configurato per il tuo particolare computer: account utente, indirizzi di rete o GUI
preferenze: viene memorizzato in file di testo normale. Questo ha alcuni vantaggi e alcuni
svantaggi.

Il vantaggio dei file di testo semplice è che sono facili da leggere e modificare. Qualsiasi editor di testo
andrà bene. Lo svantaggio, tuttavia, è che mentre modifichi i file di configurazione, non viene eseguito alcun controllo degli errori
in corso. Devi eseguire il programma che legge questi file (come un demone di rete o
desktop X) per scoprire se hai impostato correttamente i file.

Sebbene alcuni file di configurazione utilizzino strutture standard, come XML, per memorizzare le informazioni,
molti non lo fanno. Quindi è necessario imparare le regole di struttura specifiche per ogni file di configurazione. UN
una virgola o una citazione nel posto sbagliato a volte può causare il fallimento di un'intera interfaccia.

Puoi verificare in molti modi che la struttura di molti file di configurazione sia corretta:

■ Alcuni pacchetti software offrono un comando per verificare l'integrità del file di configurazione
legato a un pacchetto prima di avviare un servizio. Ad esempio, il comando testparm
viene utilizzato con Samba per controllare l'integrità del file smb.conf. Altre volte, il file
Il processo daemon che fornisce un servizio offre un'opzione per controllare il file di configurazione.
Ad esempio, esegui httpd -t per controllare prima la configurazione del tuo server web Apache
avviare il tuo server web.

183

Pagina 224

Parte III: diventare un amministratore di sistema Linux

Alcuni editor di testo, come il comando vim (non vi), comprendono la struttura di alcuni tipi di configurazione
File. Se apri un file di configurazione di questo tipo in vim, nota che diversi elementi del file sono mostrati in modo diverso
colori. In particolare, puoi vedere le righe dei commenti in un colore diverso dai dati.

In questo libro troverai le descrizioni dei file di configurazione di cui hai bisogno
impostare le diverse funzionalità che compongono i sistemi Linux. Le due principali località di
i file di configurazione sono la directory home (dove si trovano i file di configurazione personali
keep) e la directory / etc (che contiene i file di configurazione a livello di sistema).

Di seguito sono riportate le descrizioni delle directory (e delle sottodirectory) che contengono file utili
file di configurazione. Queste descrizioni sono seguite da alcuni file di configurazione individuali in
/ etc che sono di particolare interesse. La visualizzazione del contenuto dei file di configurazione di Linux può
insegnarti molto sull'amministrazione dei sistemi Linux.

■$ HOME: tutti gli utenti memorizzano le informazioni nelle directory home che determinano la modalità di
gli account di accesso si comportano. Molti file di configurazione si trovano direttamente nella home di ogni utente
directory (come / home / joe) e iniziano con un punto (.), quindi non compaiono in un file
directory dell'utente quando si utilizza un comando ls standard (è necessario digitare ls -a a
guardali). Allo stesso modo, i file e le directory punto non verranno visualizzati nella maggior parte dei file manager
Windows per impostazione predefinita. Ci sono file punto che definiscono il comportamento della shell di ogni utente,
l'aspetto del desktop e le opzioni utilizzate con l'editor di testo. Ci sono anche
file come quelli nella directory $ HOME / .ssh di ciascun utente che configurano le autorizzazioni
per accedere a sistemi remoti. (Per vedere il nome della tua home directory, digita
echo $ HOME da una shell.)
■/ etc: questa directory contiene la maggior parte dei file di configurazione del sistema Linux di base.
■/ etc / cron *: le directory in questo set contengono file che definiscono il modo in cui crond
utilità esegue le applicazioni su base giornaliera (cron.daily), oraria (cron.hourly),
pianificazione mensile (cron.monthly) o settimanale (cron.weekly).
■/ etc / cups: contiene i file utilizzati per configurare il servizio di stampa CUPS.
■/ etc / default: contiene i file che impostano i valori predefiniti per varie utilità. Per
Ad esempio, il file per il comando useradd definisce il numero di gruppo predefinito, home
directory, data di scadenza della password, shell e directory dello scheletro (/ etc / skel)
che vengono utilizzati durante la creazione di un nuovo account utente.
■/ etc / httpd: contiene una varietà di file utilizzati per configurare il comportamento del tuo
Server web Apache (in particolare, il processo daemon httpd). (Su Ubuntu e altri
Sistemi Linux, / etc / apache o / etc / apache2 viene invece utilizzato.)
■ /etc/init.d— Contiene le copie permanenti degli script run-level in stile System V.
Questi script sono spesso collegati dalle directory /etc/rc?.d per averli ciascuno
servizio associato a uno script avviato o arrestato per il particolare livello di esecuzione. Il

184

Pagina 225

Capitolo 8: Learning System Administration

? è sostituito dal numero del livello di esecuzione (da 0 a 6). Sebbene gli script di inizializzazione di System V
sono ancora supportati, la maggior parte dei servizi è ora gestita dalla funzione systemd.
■/ etc / mail: contiene i file utilizzati per configurare il trasporto della posta sendmail
agente.
■/ etc / pcmcia: contiene file di configurazione che consentono di avere una varietà
di schede PCMCIA configurate per il tuo computer (se il pacchetto pcmciautils è
installato). Gli slot PCMCIA sono quelle aperture sul tuo laptop che ti consentono di avere
carte delle dimensioni di una carta di credito collegate al computer. Puoi collegare dispositivi come
modem e CD-ROM esterni. Con molti dispositivi ora disponibili come dispositivi USB,
Gli slot PCMCIA sono meno comuni di quanto non fossero.
■/ etc / postfix: contiene i file di configurazione per il trasporto della posta di postfix
agente.
■/ etc / ppp: contiene diversi file di configurazione utilizzati per impostare Point-to-Point
Protocollo (PPP) in modo da poter connettere il computer a Internet. (PPP era
più comunemente usato quando i modem dial-up erano popolari.)
■ /etc/rc?.d— Esiste una directory rc? .D separata per ogni stato di sistema valido:
rc0.d (stato di arresto), rc1.d (stato utente singolo), rc2.d (stato multiutente), rc3.d
(multiutente più stato di rete), rc4.d (stato definito dall'utente), rc5.d (multiutente,
networking, oltre allo stato di login della GUI) e rc6.d (stato di riavvio).
■/ etc / security: contiene file che impostano una serie di condizioni di sicurezza predefinite
per il tuo computer, definendo fondamentalmente come viene eseguita l'autenticazione. Questi file sono 8
parte del pacchetto pam (pluggable authentication modules).
■/ etc / skel: tutti i file contenuti in questa directory vengono copiati automaticamente
nella home directory di un utente quando tale utente viene aggiunto al sistema. Per impostazione predefinita,
la maggior parte di questi file sono file punto (.), come .kde (una directory per impostare KDE
impostazioni predefinite del desktop) e .bashrc (per impostare i valori predefiniti utilizzati con
bash shell).
■/ etc / sysconfig: contiene importanti file di configurazione del sistema che vengono creati
e gestito da vari servizi (inclusi iptables, samba e molti altri
servizi di rete). Questi file sono fondamentali per le distribuzioni Linux, come Fedora
e RHEL, che utilizzano strumenti di amministrazione GUI ma non vengono utilizzati su altri Linux
sistemi a tutti.
■/ etc / systemd: contiene i file associati alla funzione systemd, per la gestione
il processo di avvio e i servizi di sistema. In particolare, quando esegui systemctl
comandi per abilitare e disabilitare i servizi, i file che lo fanno accadere vengono memorizzati in
sottodirectory della directory / etc / systemd / system.
■ /etc/xinetd.d: contiene una serie di file, ognuno dei quali definisce un file su richiesta
servizio di rete che il demone xinetd ascolta su una particolare porta.

185
Pagina 226

Parte III: diventare un amministratore di sistema Linux

Quando il processo del demone xinetd riceve una richiesta per un servizio, utilizza l'estensione
informazioni in questi file per determinare quali processi daemon avviare
gestire la richiesta.

Di seguito sono riportati alcuni file di configurazione interessanti in / etc:

■ alias: possono contenere elenchi di distribuzione utilizzati dai servizi di posta Linux. (Questa vita
si trova in / etc / mail in Ubuntu quando installi il pacchetto sendmail.)
■ bashrc:imposta i valori predefiniti a livello di sistema per gli utenti della shell bash. (Questo può essere chiamato bash.
bashrc su alcune distribuzioni Linux.)
■ crontab: imposta i tempi per l'esecuzione di attività automatiche e le variabili associate
la funzione cron (come SHELL e PATH associati a cron).
■ csh.cshrc (o cshrc): imposta i valori predefiniti a livello di sistema per gli utenti di csh (C shell).
■ esportazioni:
contiene un elenco di directory locali disponibili per la condivisione
computer remoti che utilizzano il Network File System (NFS).
■ fstab: identifica i dispositivi per i supporti di memorizzazione comuni (disco rigido, floppy,
CD-ROM e così via) e le posizioni in cui sono montati nel sistema Linux.
Viene usato dal comando mount per scegliere quali filesystem montare e quando
il sistema si avvia per primo.
■ gruppo: identifica i nomi dei gruppi e gli ID di gruppo (GID) definiti in
sistema. I permessi di gruppo in Linux sono definiti dal secondo dei tre set di rwx
(leggi, scrivi, esegui) bit associati a ciascun file e directory.
■ gshadow: contiene le password shadow per i gruppi.
■ host.conf: utilizzato dalle applicazioni meno recenti per impostare le posizioni in quale dominio
i nomi (ad esempio, redhat.com) vengono cercati su reti TCP / IP (come
la rete). Per impostazione predefinita, viene eseguita la ricerca nel file host locale e quindi in qualsiasi server dei nomi
voci in resolv.conf.
■ hostname: contiene il nome host per il sistema locale (a partire da RHEL 7 e
recenti sistemi Fedora e Ubuntu).
■ host: contiene indirizzi IP e nomi host che puoi raggiungere dal tuo
computer. (Di solito questo file viene utilizzato solo per memorizzare i nomi dei computer sulla LAN o
piccola rete privata.)
■ hosts.allow: elenca i computer host a cui è consentito utilizzare determinati servizi TCP / IP.
vizi dal computer locale. (Questo e hosts.deny fanno parte dei wrapper TCP
servizio.)
■ hosts.deny: elenca i computer host a cui non è consentito utilizzare determinati servizi TCP / IP.
vizi dal computer locale (sebbene questo file venga utilizzato se lo crei, non lo fa
esistono per impostazione predefinita).

186

Pagina 227

Capitolo 8: Learning System Administration

■ inittab: sui sistemi Linux precedenti, conteneva informazioni che definivano quali
i programmi si avviano e si arrestano quando Linux si avvia, si spegne o passa in modo diverso
afferma in mezzo. Questo file di configurazione è stato il primo letto quando Linux
ha avviato il processo di inizializzazione. Questo file non è più utilizzato sui sistemi Linux che
sistema di supportod.
■ mtab: contiene un elenco di file system attualmente montati.
■ mtools.conf: contiene le impostazioni utilizzate dagli strumenti DOS in Linux.
■ named.conf: contiene le impostazioni DNS se si esegue il proprio server DNS (bind
o pacchetto bind9).
■ nsswitch.conf: contiene le impostazioni dell'interruttore del servizio di denominazione, per identificare dove
informazioni sui sistemi critici (account utente, mappature da nome host a indirizzo e così via
on) proviene da (host locale o tramite servizi di rete).
■ ntp.conf: include le informazioni necessarie per eseguire NTP (Network Time Protocol).

■ passwd: memorizza le informazioni sull'account per tutti gli utenti validi sul sistema locale. Anche
include altre informazioni, come la directory home e la shell predefinita. (Raramente
include le password utente stesse, che sono tipicamente memorizzate nel file / etc /
file shadow.)
■ printcap: contiene le definizioni per le stampanti configurate per il computer.
(Se il file printcap non esiste, cerca le informazioni sulla stampante nel file / etc /
directory di coppe.)
8
■ profilo: imposta l'ambiente a livello di sistema e i programmi di avvio per tutti gli utenti. Questo
file viene letto quando l'utente accede.
■ protocolli: imposta numeri e nomi di protocollo per una varietà di servizi Internet.
■ rpc: definisce i nomi e i numeri delle chiamate di procedura remota.
■ servizi: definisce i nomi dei servizi TCP / IP e UDP e le relative assegnazioni di porta.

■ shadow: contiene le password crittografate per gli utenti definiti in passwd


file. (Questo è visto come un modo più sicuro per memorizzare le password rispetto all'originale
password crittografata nel file passwd. Il file passwd deve essere pubblicamente
leggibile, mentre il file shadow può essere illeggibile da tutti tranne l'utente root.)
■ shell:
elenca gli interpreti della riga di comando della shell (bash, sh, csh e così via)
che sono disponibili nel sistema, così come le loro posizioni.
■ sudoers: imposta i comandi che possono essere eseguiti dagli utenti, che altrimenti non potrebbero avere
permesso per eseguire il comando, utilizzando il comando sudo. In particolare, questo file
viene utilizzato per fornire agli utenti selezionati l'autorizzazione di root.
■ rsyslog.conf:definisce quali messaggi di registrazione vengono raccolti da rsyslogd
daemon e in quali file sono archiviati (in genere, i messaggi di registro vengono archiviati in file
contenuto nella directory / var / log.)

187

Pagina 228

Parte III: diventare un amministratore di sistema Linux

■ termcap: elenca le definizioni per i terminali dei caratteri, quindi le applicazioni basate sui caratteri
sapere quali funzionalità sono supportate da un determinato terminale. Terminali grafici e
le applicazioni hanno reso questo file obsoleto per la maggior parte delle persone.
■ xinetd.conf: contiene semplici informazioni di configurazione utilizzate da xinetd
processo daemon. Questo file punta principalmente alla directory /etc/xinetd.d per
informazioni sui singoli servizi.
Un'altra directory, / etc / X11, include sottodirectory che contengono ciascuna a livello di sistema
file di configurazione usati da X e da diversi gestori di finestre X disponibili per Linux. Il
xorg.conf (configura il computer e il monitor per renderlo utilizzabile con X) e
le directory di configurazione contenenti i file usati da xdm e xinit per avviare X si trovano qui.

Le directory relative ai gestori di finestre contengono file che includono i valori predefiniti that
un utente otterrà se quell'utente avvia uno di questi gestori di finestre sul tuo sistema. Finestra
i gestori che possono avere file di configurazione a livello di sistema in queste directory includono twm
(twm /) e xfce (xdg /).

File di registro amministrativi e giornale di sistema


Una delle cose che Linux fa bene è tenere traccia di se stesso. Questa è una buona cosa, quando
si considera quanto sta succedendo in un sistema operativo complesso.

A volte stai cercando di far funzionare una nuova struttura e non riesce senza darti il
motivo più nebbioso perché. Altre volte, vuoi monitorare il tuo sistema per vedere se le persone
stanno tentando di accedere illegalmente al tuo computer. In ognuno di questi casi, vuoi essere in grado di farlo
fare riferimento ai messaggi provenienti dal kernel e dai servizi in esecuzione sul sistema.

Per i sistemi Linux che non utilizzano la funzione systemd, l'utilità principale per la registrazione degli errori
e il debug dei messaggi è il demone rsyslogd. (Alcuni sistemi Linux meno recenti usano syslogd
e daemon syslogd.) Sebbene sia ancora possibile utilizzare rsyslogd con i sistemi systemd,
systemd ha il proprio metodo di raccolta e visualizzazione dei messaggi chiamato systemd
journal (comando journalctl).

Utilizzo di journalctl per visualizzare il journal di systemd


Il comando principale per visualizzare i messaggi dal journal di systemd è journalctl
comando. Il processo di avvio, il kernel e tutti i servizi gestiti da systemd dirigono i propri file
messaggi di stato e di errore nel journal di systemd.
Usando il comando journalctl, puoi visualizzare i messaggi del journal in molti differenti
modi. Ecco alcuni esempi:

# journalctl
# journalctl --list-boots | testa
-12 eb3d5cbdda8f4f8da7bdbc71fb94e61e Sun 2014-08-17 15:33:30 EDT ...
-11 534713a5a65c41c1b5b3d056487a16db Mer 2014-08-20 06:45:15 EDT ...

188

Pagina 229

Capitolo 8: Learning System Administration

-10 64147da7154b4499a312a88a696c19bd ven 2014-08-29 23:14:38 EDT ...


# journalctl -b eb3d5cbdda8f4f8da7bdbc71fb94e61e
# journalctl -k

In questi esempi, il comando journalctl senza opzioni ti consente di sfogliare tutto


messaggi nel diario di systemd. Per elencare gli ID di avvio per ogni volta che il sistema è stato avviato,
usa l'opzione –list-boots. Per visualizzare i messaggi associati a una particolare istanza di avvio,
usa l'opzione -b con una delle istanze di avvio. Per vedere solo i messaggi del kernel, usa -k
opzione. Ecco alcuni altri esempi:

# journalctl _SYSTEMD_UNIT = sshd.service


# journalctl PRIORITY = 0
# journalctl -a -f

Usa le opzioni _SYSTEMD_UNIT = per mostrare i messaggi per servizi specifici (qui, il file sshd
service) o per qualsiasi altro file di unità di systemd (come altri servizi o montaggi). Vedere
messaggi associati a un particolare livello di log di syslog (da 0 a 7). Solo in questo caso
vengono visualizzati i messaggi di emergenza (0). Per seguire i messaggi appena arrivano, usa l'opzione -f;
per mostrare tutti i campi, usa l'opzione -a.

Gestione dei messaggi di registro con rsyslogd


La funzione rsyslogd e il suo predecessore syslogd raccolgono i messaggi di registro e dirigono
per registrare file o host di log remoti. La registrazione viene eseguita in base alle informazioni nel file
/etc/rsyslog.conf file. I messaggi vengono generalmente indirizzati ai file di registro che di solito sono 8
nella directory / var / log, ma può anche essere indirizzato agli host di log per ulteriore sicurezza.
Di seguito sono riportati alcuni file di registro comuni:

■ boot.log: contiene i messaggi di avvio sui servizi all'avvio.

■ messaggi: contiene molti messaggi informativi generali sul sistema.


■ secure: contiene messaggi relativi alla sicurezza, come attività di accesso o altro
atto che autentica gli utenti.
■ XFree86.0.log o Xorg.0.log: a seconda del server X in uso,
contiene messaggi sulla configurazione della scheda video, del mouse e del monitor.

Fare riferimento al Capitolo 13, "Informazioni sull'amministrazione del server", per informazioni sulla configurazione
la funzione rsyslogd.

Utilizzo di altri account amministrativi


Non si sente molto parlare di accesso con altri account utente amministrativi (oltre a
root) su sistemi Linux. Era una pratica abbastanza comune nei sistemi UNIX averne diversi
diversi accessi amministrativi che consentivano di suddividere le attività amministrative tra più

189

Pagina 230
Parte III: diventare un amministratore di sistema Linux

utenti. Ad esempio, le persone sedute vicino a una stampante potrebbero avere i permessi lp per spostare la stampa
lavori su un'altra stampante se sapevano che una stampante non funzionava.

In ogni caso, i login amministrativi sono disponibili con Linux; tuttavia, accedendo direttamente
poiché questi utenti è disabilitato per impostazione predefinita. I conti vengono mantenuti principalmente per fornire
proprietà per file e processi associati a particolari servizi. Eseguendo daemon
processi sotto accessi amministrativi separati, avendo uno di quei processi crackato fa
non dare al cracker il permesso di root e la possibilità di accedere ad altri processi e file.
Considera i seguenti esempi:

■ lp: l'utente possiede cose come il file di registro di stampa / var / log / cups e altro
cache di stampa e file di spooling. La directory home di lp è / var / spool / lpd.
■ apache: l'utente può essere utilizzato per impostare file e directory di contenuto. È principalmente
utilizzato per eseguire i processi del server web (httpd) nei sistemi RHEL e Fedora, mentre
l'utente www-data esegue il servizio Apache (apache2) sui sistemi Ubuntu.
■ avahi: l'utente esegue il processo avahi-daemon per fornire i servizi zeroconf
la tua rete.
■ chrony: l'utente esegue il demone chronyd, che viene utilizzato per mantenere la precisione
orologi per computer.
■ suffisso: l'utente possiede vari file e directory di spool del server di posta. L'utente corre
i processi daemon utilizzati per fornire il servizio postfix (master).
■ bin: l'utente possiede molti comandi in / bin nei sistemi UNIX tradizionali. Questo non è
il caso in alcuni sistemi Linux (come Ubuntu, Fedora e Gentoo) perché root
possiede la maggior parte dei file eseguibili. La directory home di bin è / bin.
■ news: l'utente può amministrare i servizi di notizie Internet, a seconda di come
hai impostato i permessi per / var / spool / news e altre risorse relative alle notizie. Il
la home directory per le notizie è / etc / news.
■ rpc: l'utente esegue la procedura remota chiama daemon (rpcbind), a cui è abituato
ricevere chiamate per servizi sul sistema host. Il servizio NFS utilizza il servizio RPC.

Per impostazione predefinita, gli accessi amministrativi nell'elenco precedente sono disabilitati. Avresti bisogno
per cambiare la shell predefinita dalla sua impostazione corrente (solitamente / sbin / nologin o
/ bin / false) a una shell reale (tipicamente / bin / bash) per poter accedere come questi utenti.
Come accennato in precedenza, tuttavia, in realtà non sono destinati agli accessi interattivi.

Controllo e configurazione dell'hardware


In un mondo perfetto, dopo aver installato e avviato Linux, viene rilevato tutto il tuo hardware
e disponibile per l'accesso. Anche se i sistemi Linux si stanno rapidamente avvicinando a questo
mondo, a volte è necessario adottare misure speciali per far funzionare l'hardware del computer.
Inoltre, il crescente utilizzo di dispositivi USB e FireWire rimovibili (CD, DVD, unità flash,

190

Pagina 231

Capitolo 8: Learning System Administration

fotocamere digitali e dischi rigidi rimovibili) lo ha reso importante per Linux


il seguente:

■ Gestione efficiente dell'hardware che va e viene


■ Guardare lo stesso componente hardware in modi diversi (ad esempio, essere in grado di vedere un file
stampante come fax, scanner e dispositivo di archiviazione, oltre che come stampante)

Le funzionalità del kernel Linux aggiunte negli ultimi anni hanno reso possibile il cambiamento
drasticamente il modo in cui i dispositivi hardware vengono rilevati e gestiti. Funzionalità in, o
strettamente correlato a, il kernel include Udev (per denominare e creare dinamicamente dispositivi come
hardware va e viene) e HAL (per passare le informazioni sulle modifiche hardware a
spazio utente).

Se tutto questo suona confuso, non preoccuparti. È progettato per rendere la tua vita un utente Linux
molto più facile. Il risultato delle funzionalità costruite sul kernel è che ha la gestione dei dispositivi in ​Linux
diventare:

■ Più automatico: per l' hardware più comune, quando è presente un dispositivo hardware
connesso o disconnesso, viene rilevato e identificato automaticamente. Interfacce
per accedere all'hardware vengono aggiunti, quindi è accessibile a Linux. Poi il fatto che
l'hardware è presente (o rimosso) viene passato al livello utente, dove le applicazioni
in ascolto di modifiche hardware sono pronti per montare l'hardware e / o lanciare un file
applicazione (come un visualizzatore di immagini o un lettore musicale).
■ Più flessibile: se non ti piace ciò che accade automaticamente quando un elemento hardware 8
è connesso o disconnesso, puoi modificarlo. Ad esempio, funzionalità integrate in
I desktop GNOME e KDE ti consentono di scegliere cosa succede quando un CD musicale o un DVD dati
è inserito o quando è collegata una fotocamera digitale. Se preferisci che sia diverso
essere avviato per gestirlo, puoi facilmente apportare tale modifica.

Questa sezione copre diversi problemi relativi al corretto funzionamento dell'hardware in


Linux. Innanzitutto, descrive come controllare le informazioni sui componenti hardware del tuo
sistema. Viene quindi illustrato come configurare Linux per gestire i supporti rimovibili. Infine, esso
descrive come utilizzare gli strumenti per caricare manualmente e lavorare con i driver per hardware che
non viene rilevato e caricato correttamente.

Controllo dell'hardware
Quando il sistema si avvia, il kernel rileva l'hardware e carica i driver che consentono
Linux per lavorare con quell'hardware. Perché i messaggi sul rilevamento dell'hardware scorrono
rapidamente fuori dallo schermo quando si avvia, per visualizzare potenziali messaggi di problema che devi
rivisualizzare quei messaggi dopo che il sistema si avvia.

Ci sono alcuni modi per visualizzare i messaggi di avvio del kernel dopo l'avvio di Linux. Qualsiasi utente può eseguire
il comando dmesg per vedere quale hardware è stato rilevato e quali driver sono stati caricati

191

Pagina 232

Parte III: diventare un amministratore di sistema Linux

il kernel al momento dell'avvio. Man mano che nuovi messaggi vengono generati dal kernel, quei messaggi lo sono
reso disponibile anche al comando dmesg.

Un secondo modo per vedere i messaggi di avvio su alcuni sistemi Linux è visualizzare il contenuto
del file / var / log / dmesg, se esiste. Un terzo modo è il comando journalctl per
mostra i messaggi associati a una particolare istanza di avvio (come mostrato in precedenza in
questo capitolo).

Dopo che il sistema è in esecuzione, molti messaggi del kernel vengono inviati al file / var / log / messages. Quindi, ad esempio, se
vuoi vedere cosa succede quando colleghi un drive USB, puoi digitare tail -f / var / log / messages e
guarda come vengono creati dispositivi e punti di montaggio. Allo stesso modo, puoi usare il comando journalctl -f per seguire
messaggi man mano che entrano nel journal di systemd.

Quello che segue è un esempio di alcuni output del comando dmesg che è stato tagliato
giù per mostrare alcune informazioni interessanti:

$ dmesg | Di meno
[0.000000] Linux versione 3.16.3-200.fc20.x86_64
( mockbuild@bkernel02.phx2.fedoraproject.org )
(versione gcc 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC))
# 1 SMP mercoledì 17 settembre 22:34:21 UTC 2014

[0.000000] DMI: Dell Inc. Precision WorkStation 490


/ 0GU083, BIOS A06 20/08/2007
[0.485293] Disimballaggio initramfs ...

[0.886285] Liberazione della memoria initrd: 17284K ...


[0.056934] CPU0: CPU Intel (R) Xeon (R) E5320 a 1,86 GHz con stepping 0b
[0.272025] Creato 4 CPU
[0.272029] Totale di 4 processori attivati ​(14895.38 BogoMIPS).
[3.020618] Seriale: driver 8250/16550, 4 porte, condivisione IRQ abilitata
[3.041185] serial8250: ttyS0 su I / O 0x3f8 (irq = 4) è un 16550A
[3.061880] serial8250: ttyS1 all'I / O 0x2f8 (irq = 3) è un 16550A
[3.145982] mousedev: dispositivo mouse PS / 2 comune a tutti i mouse
[3.538044] scsi 6: 0: 0: 0: CD-ROM
TSSTcorp DVD-ROM TS-H352C DE02 PQ: 0 ANSI: 5
[3.870128] input: ImPS / 2 Generic Wheel Mouse
as / devices / platform / i8042 / serio1 / input / input3
[26.964764] e1000: driver di rete Intel (R) PRO / 1000
[26.964767] e1000: Copyright (c) 1999-2006 Intel Corporation.
[26.964813] e1000 0000: 0c: 02.0: PCI INT A -> GSI 18 (livello, basso)
[27.089109] parport_pc 00:08: segnalato da Plug and Play ACPI
[27.089169] parport0: stile PC a 0x378 (0x778), irq 7
[24179.176315] scsi 9:S31B1102
0: 0: 0: Accesso diretto
USB DISK 1100 PQ: 0 ANSI: 0 CCS

192

Pagina 233

Capitolo 8: Learning System Administration

[24179.177466] sd 9: 0: 0: 0: scsi generico sg2 tipo 0 allegato


[24179.177854] sd 9: 0: 0: 0: [sdb]
8343552 Blocchi logici da 512 byte: (4,27 GB / 3,97 GiB)
[24179.178593] sd 9: 0: 0: 0: [sdb] La protezione da scrittura è disattivata

Da questo output, viene prima visualizzata la versione del kernel Linux, seguita dalle informazioni su
computer (Dell Precision WorkStation) e le opzioni della riga di comando del kernel. Successivamente, puoi vedere
il tipo di processori (Intel Xeon) e il numero di CPU (4). Dopo di che, ho tagliato
alle informazioni sull'hardware connesso al computer: porte seriali, porta mouse, CD
unità, scheda di interfaccia di rete (e1000) e porta parallela. Le ultime righe riflettono una USB da 4 GB
l'unità viene collegata al computer.

Se qualcosa va storto rilevando l'hardware o caricando i driver, puoi fare riferimento a questo
informazioni per vedere il nome e il numero di modello dell'hardware che non funziona. Allora lei
può cercare nei forum o nella documentazione di Linux per provare a risolvere il problema.

Dopo che il tuo sistema è attivo e funzionante, alcuni altri comandi ti consentono di esaminare informazioni dettagliate
informazioni sull'hardware del tuo computer. Il comando lspci elenca i bus PCI sul computer
computer e dispositivi ad essi collegati. Ecco uno snippet di output:

$ lspci
00: 00.0 Bridge host: Intel Corporation
Controller di memoria del chipset 5000X Hub
00: 02.0 Bridge PCI: chipset Intel Corporation serie 5000
Porta PCI Express x4 2 8
00: 1b.0 Dispositivo audio: Intel Corporation 631xESB / 632xESB
Controller audio ad alta definizione (rev 09)
00: 1d.0 Controller USB: Intel Corporation 631xESB / 632xESB / 3100
Chipset UHCI USBController # 1 (rev 09)
07: 00.0 Controller compatibile VGA: nVidia Corporation NV44
0c: 02.0 Controller Ethernet: Intel Corporation 82541PI
Controller Gigabit Ethernet (rev 05)

Il bridge host collega il bus locale agli altri componenti sul bridge PCI. io taglio
verso il basso l'output per mostrare le informazioni sui diversi dispositivi sul sistema che
gestire varie funzionalità: suono (dispositivo audio), unità flash e altri dispositivi USB (USB
controller), il display video (controller compatibile VGA) e le schede di rete cablate
(Controller Ethernet). Se hai problemi a far funzionare uno di questi dispositivi, prendi nota
i nomi e i numeri dei modelli ti danno qualcosa a Google per.

Per ottenere un output più dettagliato da lspci, aggiungi una o più opzioni -v. Ad esempio, utilizzando
lspci -vvv, ho ricevuto informazioni sul mio controller Ethernet, inclusa la latenza,
capacità del controller e il driver Linux (e1000) utilizzato per il dispositivo.

Se sei specificamente interessato ai dispositivi USB, prova il comando lsusb. Per impostazione predefinita,
lsusb elenca le informazioni sugli hub USB del computer insieme a qualsiasi dispositivo USB
collegato alle porte USB del computer:

193

Pagina 234

Parte III: diventare un amministratore di sistema Linux


$ lsusb
Bus 001 Dispositivo 001: ID 1d6b: 0002 Hub radice di Linux Foundation 2.0
Bus 002 Dispositivo 001: ID 1d6b: 0001 Hub radice di Linux Foundation 1.1
Bus 003 Dispositivo 001: ID 1d6b: 0001 Hub radice di Linux Foundation 1.1
Bus 004 Dispositivo 001: ID 1d6b: 0001 Hub radice di Linux Foundation 1.1
Bus 005 Dispositivo 001: ID 1d6b: 0001 Hub radice di Linux Foundation 1.1
Bus 002 Dispositivo 002: ID 413c: 2105 Dell Computer Corp.
Tastiera modello L100
Bus 002 Dispositivo 004: ID 413c: 3012 Dell Computer Corp.
Mouse ottico con rotella
Bus 001 Dispositivo 005: ID 090c: 1000 Silicon Motion, Inc. -
Taiwan 64MB QDI U2 DISK

Dall'output precedente, puoi vedere il modello di tastiera, mouse e flash USB


unità collegata al computer. Come con lspci, puoi aggiungere una o più opzioni -v a
vedere più dettagli.

Per vedere i dettagli sul tuo processore, esegui il comando lscpu. Quel comando fornisce di base
informazioni sui processori del tuo computer.

$ lscpu
Architettura: x86_64
Modalità operative CPU: 32 bit, 64 bit
CPU: 4
Elenco CPU in linea: 0-3
Discussioni per nucleo: 1
Nucleo (i) per presa: 4
...

Dal campionamento dell'output di lscpu, puoi vedere che questo è un sistema a 64 bit (x86-64),
può funzionare in modalità a 32 o 64 bit e ci sono quattro CPU.

Gestione dell'hardware rimovibile


Sistemi Linux come Red Hat Enterprise Linux, Fedora e altri che supportano KDE completo
e gli ambienti desktop GNOME includono semplici strumenti grafici per configurare cosa
accade quando colleghi i dispositivi rimovibili più diffusi al computer. Quindi, con un KDE
o il desktop GNOME in esecuzione, è sufficiente collegare un dispositivo USB o inserire un CD o DVD e un file
la finestra potrebbe apparire per gestire quel dispositivo.

Sebbene diversi ambienti desktop condividano molti degli stessi meccanismi sottostanti
(in particolare, Udev) per rilevare e nominare l'hardware rimovibile, offrono diversi strumenti
per configurare il modo in cui vengono montati o utilizzati. Udev (usando il demone udevd) crea
e rimuove i dispositivi (directory / dev) quando l'hardware viene aggiunto e rimosso dal computer
puter. L'Hardware Abstraction Layer (HAL) fornisce la piattaforma globale per la scoperta
e la configurazione dell'hardware. Impostazioni che interessano qualcuno che utilizza un desktop Linux
il sistema, tuttavia, può essere configurato con strumenti desktop di facile utilizzo.

194

Pagina 235

Capitolo 8: Learning System Administration

Il file manager Nautilus utilizzato con il desktop GNOME consente di definire cosa succede quando
si collegano dispositivi rimovibili o si inseriscono supporti rimovibili nel computer dal file
Finestra Preferenze di gestione. Le descrizioni in questa sezione sono basate su GNOME 3.14
in Fedora 21.

Dal desktop GNOME 3.14, seleziona Attività e digita Dettagli . Quindi seleziona i dettagli
icona. Quando viene visualizzata la finestra Dettagli, selezionare Supporto rimovibile dalla colonna di sinistra.
La Figura 8.1 mostra un esempio di quella finestra.

FIGURA 8.1

Modificare le impostazioni dei supporti rimovibili nella finestra Supporti rimovibili.

8
Le seguenti impostazioni sono disponibili dalla finestra Supporto rimovibile. Queste impostazioni
riguardano il modo in cui vengono gestiti i supporti rimovibili quando vengono inseriti o collegati. Nella maggior parte dei casi
casi, viene chiesto come gestire un supporto inserito o connesso.

■ CD audio: quando viene inserito un CD audio, è possibile scegliere di ricevere un messaggio


da fare (impostazione predefinita), non fare nulla, aprire il contenuto in una finestra della cartella o selezionare da
vari lettori di CD audio da avviare per riprodurre il contenuto. Rhythmbox (musica
player), Audio CD Extractor (masterizzatore CD) e Brasero (masterizzatore CD) sono tra i file
scelte disponibili per la gestione di un CD audio inserito.

195

Pagina 236

Parte III: diventare un amministratore di sistema Linux

■ Video DVD: quando viene inserito un DVD video commerciale, viene chiesto cosa
a che fare con quel DVD. Puoi modificare l'impostazione predefinita per avviare Totem (video), Brasero
(Masterizzatore DVD) o un altro lettore multimediale installato (come MPlayer).
■ Lettore musicale: quando il supporto inserito contiene file audio, viene chiesto cosa fare.
È possibile scegliere di avviare Rhythmbox o un altro lettore musicale per avviare la riproduzione di
file selezionando quel lettore da questa casella.
■ Foto: quando è inserito un supporto (come una scheda di memoria di una fotocamera digitale)
contiene immagini digitali, ti viene chiesto cosa fare con quelle immagini. Puoi
selezionare di non fare nulla. Oppure puoi scegliere di aprire le immagini nello Shotwell
visualizzatore di immagini (l'applicazione predefinita per visualizzare le immagini sul desktop GNOME) o
un altro gestore di foto installato.
■ Software: quando il supporto inserito contiene un'applicazione di esecuzione automatica, un'esecuzione automatica
si apre il prompt. Per cambiare quel comportamento (non fare nulla o aprire i contenuti multimediali
in una cartella), puoi selezionarlo da questa casella.
■ Altrisupporti: selezionare la casella Tipo sotto l'intestazione Altri supporti per selezionare come
vengono gestiti i supporti meno comunemente utilizzati. Ad esempio, puoi selezionare quali azioni
vengono utilizzati per gestire DVD audio o dischi Blu-ray vuoti, CD, DVD o dischi HD DVD.
È possibile selezionare quali applicazioni avviare per dischi video Blu-ray, lettori di ebook, HD
Video DVD, Picture CD, Super Video CD e Video CD.

Notare che le impostazioni qui descritte sono valide solo per l'utente attualmente connesso
in. Se più utenti hanno account di accesso, ognuno può avere il proprio modo di gestire
supporto rimovibile.

Il lettore di film Totem non riproduce i DVD di film a meno che non si aggiunga un software aggiuntivo per decrittografare il DVD. Dovresti guardare
in questioni legali e altre opzioni di riproduzione di film se si desidera riprodurre film in DVD commerciali da Linux.

Le opzioni per collegare normali unità flash USB o dischi rigidi non sono elencate in questo
finestra. Ma se colleghi una di queste unità al tuo computer, vengono creati i dispositivi
quando li colleghi (chiamati / dev / sda, / dev / sdb e così via). Qualsiasi file system trovato
su quei dispositivi vengono automaticamente montati su / run / media / username , e tu lo sei
richiesto se si desidera aprire una finestra di Nautilus per visualizzare i file su quei dispositivi. Questo è
fatto automaticamente, quindi non è necessario eseguire alcuna configurazione speciale per farlo accadere.

Quando hai finito con un'unità USB, fai clic con il pulsante destro del mouse sul nome del dispositivo nel file Nautilus
finestra di gestione e selezionare Rimozione sicura dell'unità. Questa azione smonta l'unità e
rimuove il punto di montaggio nella directory / run / media / username . Dopodiché puoi farlo
scollegare in modo sicuro l'unità USB dal computer.
196

Pagina 237

Capitolo 8: Learning System Administration

Lavorare con moduli caricabili


Se hai aggiunto hardware al tuo computer che non viene rilevato correttamente, potrebbe essere necessario
per caricare manualmente un modulo per quell'hardware. Linux viene fornito con una serie di comandi per
caricare, scaricare e ottenere informazioni sui moduli hardware.

I moduli del kernel vengono installati in / lib / modules / sottodirectory. Il nome di ciascuno
la sottodirectory è basata sul numero di rilascio del kernel. Ad esempio, se il kernel
erano 3.17.4-301.fc21.x86_64, la directory /lib/modules/3.17.4-301.fc21.x86_64
conterrebbe i driver per quel kernel. I moduli in queste directory possono quindi essere caricati e
scaricati quando sono necessari.

I comandi per elencare, caricare, scaricare e ottenere informazioni sui moduli sono
disponibile con Linux. Le sezioni seguenti descrivono come utilizzare questi moduli.

Elenco dei moduli caricati


Per vedere quali moduli sono attualmente caricati nel kernel in esecuzione sul tuo computer, usa
il comando lsmod. Considera il seguente esempio:

# lsmod
Modulo Dimensioni utilizzate da
vfat 17411 1
Grasso 65059 1 vfat
uas 23208 0 8
usb_storage 65065 2 uas
fusibile 91446 3
ipt_MASQUERADE 12880 3
xt_CHECKSUM 12549 1
nfsv3 39043 1
rpcsec_gss_krb5 31477 0
nfsv4 466956 0
dns_resolver 13096 1 nfsv4
nfs 233966 3 nfsv3, nfsv4
.
.
.
i2c_algo_bit 13257 1 nouveau
drm_kms_helper 58041 1 nouveau
ttm 80772 1 nouveau
drm 291361 7 ttm, drm_kms_helper, nouveau
ata_generic 12923 0
pata_acpi 13053 0
e1000 137260 0
i2c_core 55486 5 drm, i2c_i801, drm_kms_helper

Questo output mostra una varietà di moduli che sono stati caricati su un sistema Linux, incluso
uno per una scheda di interfaccia di rete (e1000).

197

Pagina 238

Parte III: diventare un amministratore di sistema Linux

Per trovare informazioni su uno qualsiasi dei moduli caricati, utilizzare il comando modinfo. Per
esempio, puoi digitare quanto segue:

# / sbin / modinfo -d e1000


Driver di rete Intel (R) PRO / 1000
Non tutti i moduli hanno descrizioni disponibili e, se non è disponibile nulla, nessun dato lo è
restituito. In questo caso, tuttavia, il modulo e1000 è descritto come Intel (R) PRO / 1000
Modulo driver di rete. Puoi anche usare l'opzione -a per vedere l'autore del modulo o
-n per vedere il file oggetto che rappresenta il modulo. Le informazioni sull'autore spesso hanno l'estensione
indirizzo e-mail del creatore del driver, in modo da poter contattare l'autore in caso di problemi
o domande al riguardo.

Caricamento dei moduli


Puoi caricare qualsiasi modulo (come utente root) che è stato compilato e installato
(in una sottodirectory / lib / modules) nel kernel in esecuzione usando modprobe
comando. Un motivo comune per caricare un modulo è utilizzare temporaneamente una funzionalità (come
caricare un modulo per supportare un filesystem speciale su un floppy a cui si desidera accedere). Un altro
motivo per caricare un modulo è identificare quel modulo come quello che verrà utilizzato da un particolare
componente hardware che non è stato possibile rilevare automaticamente.

Ecco un esempio del comando modprobe utilizzato per caricare il modulo parport,
che fornisce le funzioni principali per condividere le porte parallele con più dispositivi:

# modprobe parport

Dopo aver caricato parport, è possibile caricare il modulo parport_pc per definire lo stile PC
porte disponibili tramite l'interfaccia. Il modulo parport_pc ti consente di farlo opzionalmente
definire gli indirizzi e i numeri IRQ associati a ciascun dispositivo che condivide il parallelo
porta. Per esempio:

# modprobe parport_pc io = 0x3bc irq = auto

In questo esempio, un dispositivo viene identificato come avente un indirizzo 0x3bc e l'IRQ per il
il dispositivo viene rilevato automaticamente.

Il comando modprobe carica i moduli temporaneamente, che scompaiono al successivo riavvio. Per
aggiungi in modo permanente il modulo al tuo sistema, aggiungi la riga di comando modprobe a uno dei file
gli script di avvio vengono eseguiti al momento dell'avvio.

Rimozione dei moduli


Usa il comando rmmod per rimuovere un modulo da un kernel in esecuzione. Ad esempio, a
rimuovere il modulo parport_pc dal kernel corrente, digitare quanto segue:

198

Pagina 239

Capitolo 8: Learning System Administration

# rmmod parport_pc

Se non è attualmente occupato, il modulo parport_pc viene rimosso dal kernel in esecuzione. Se
è occupato, prova a terminare qualsiasi processo che potrebbe utilizzare il dispositivo. Quindi eseguire nuovamente rmmod.
A volte, il modulo che stai tentando di rimuovere dipende da altri moduli che potrebbero esserlo
caricato. Ad esempio, il modulo usbcore non può essere scaricato mentre la stampante USB mod-
ule (usblp) viene caricato, come mostrato qui:

# rmmod usbcore

ERRORE: il modulo usbcore è utilizzato da wacom, usblp, ehci_hcd, ohci_hcd

Invece di usare rmmod per rimuovere i moduli, potresti usare il comando modprobe -r.
Con modprobe -r, invece di rimuovere semplicemente il modulo richiesto, puoi anche rimuovere
moduli dipendenti che non vengono utilizzati da altri moduli.

Sommario
Molte funzionalità di Linux, specialmente quelle che possono potenzialmente danneggiare il sistema o impattare
altri utenti, richiedono di ottenere i privilegi di root. Questo capitolo descrive diversi modi di
ottenere il privilegio di root: accesso diretto, comando su o comando sudo. Ne copre anche alcuni
delle responsabilità chiave di un amministratore di sistema e dei componenti (file di configurazione,
strumenti grafici e così via) che sono fondamentali per il lavoro di un amministratore di sistema.
8
Il capitolo successivo descrive come installare un sistema Linux. Approcci all'installazione
Linux trattato in quel capitolo include come installare da live media e da
supporto di installazione.
Esercizi
Usa questi esercizi per testare la tua conoscenza dell'amministrazione del sistema e permetterti di farlo
esplora le informazioni sull'hardware del tuo sistema. Queste attività presuppongono che tu stia correndo
un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività funzionino su altri Linux
anche sistemi). Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B (sebbene
in Linux, ci sono spesso diversi modi per completare un'attività).

1. Da un desktop GNOME, aprire la finestra Data e ora. Controlla il tuo fuso orario
è impostato correttamente.
2. Eseguire il Monitor di sistema per ordinare tutti i processi in esecuzione sul sistema in base al nome utente.
Notare quali utenti eseguono quali processi.
3. Trova tutti i file nella directory / var / spool di proprietà di utenti diversi da
root e visualizzarne un lungo elenco.

199

Pagina 240

Parte III: diventare un amministratore di sistema Linux

4. Diventa l'utente root utilizzando il comando su. Per dimostrare che hai root
privilegio, creare un file di testo vuoto o semplice denominato /mnt/test.txt. Esci dal guscio
quando hai finito. Se stai usando Ubuntu, devi impostare la tua password di root
primo (sudo passwd root).

5. Accedi come utente normale e diventa root utilizzando su -. Modifica il file / etc / sudoers
file per consentire al tuo account utente normale di avere il pieno privilegio di root tramite sudo
comando.
6. Come utente a cui hai appena concesso il privilegio sudoers, usa il comando sudo per creare
un file chiamato /mnt/test2.txt. Verificare che il file sia presente e di proprietà della radice
utente.

7. Esegui il comando journalctl -f e collega un'unità USB a una porta USB del tuo
computer. Se non si monta automaticamente, montalo su / mnt / test. In un secondo
terminale, smonta il dispositivo e rimuovilo, continuando a guardare l'output da
journalctl -f.

8. Eseguire un comando per vedere quali dispositivi USB sono collegati al computer.

9. Immagina di aver aggiunto una scheda TV al tuo computer, ma il modulo doveva usarla
(bttv) non è stato rilevato e caricato correttamente. Carica tu stesso il modulo bttv e
quindi guarda per vedere che è stato caricato. Sono stati caricati altri moduli con esso?

10. Rimuovere il modulo bttv insieme a tutti gli altri moduli che sono stati caricati con esso.
Elenca i tuoi moduli per assicurarti che sia stato fatto.

200
Pagina 241

CAPITOLO

Installazione di Linux
9
IN QUESTO CAPITOLO
Scegliere un metodo di installazione

Installazione di un sistema ad avvio singolo o multiplo

Eseguire un'installazione dal supporto live di Fedora

Installazione di Red Hat Enterprise Linux

Comprensione delle installazioni basate su cloud

Partizionamento del disco per l'installazione

Capire il boot loader GRUB

I fino alle specifiche (disco rigido, RAM, CPU e così via) e non ti dispiace cancellare completamente il tuo disco rigido.
L'installazione è più complessa se si desidera allontanarsi da un'installazione predefinita. Quindi questo capitolo
NSTALLAZIONE Linux è diventato una cosa abbastanza facile da fare, se si inizia con un computer che è
inizia con una semplice installazione dal supporto Live e procede ad argomenti di installazione più complessi.

Per facilitarti nell'argomento dell'installazione di Linux, traggo tre modi per installare Linux e ti passo
attraverso ogni processo:

■ Installazione da un supporto Live: l'ISO di un supporto Linux Live è una singola immagine di sola lettura che
contiene tutto il necessario per avviare un sistema operativo Linux. Quell'immagine può essere bruciata
su un DVD o un'unità USB e avviato da quel supporto. Con i media live, puoi farlo totalmente
ignora il disco rigido del tuo computer; infatti, puoi eseguire Live Media su un sistema con no
disco rigido. Dopo aver eseguito il sistema Live Linux, alcuni ISO di Live Media lo consentono
avvia un'applicazione che installa permanentemente i contenuti del supporto Live sul tuo
disco rigido. La prima procedura di installazione in questo capitolo mostra come procedere in modo permanente
installa Linux da un Fedora Live media ISO.
■ Installazione da un DVD di installazione: un DVD di installazione, disponibile con Fedora, RHEL,
Ubuntu e altre distribuzioni Linux offrono modi più flessibili per installare Linux. Nel
particolare, invece di copiare semplicemente l'intero contenuto multimediale Live sul tuo computer, con
un DVD di installazione puoi scegliere esattamente quali pacchetti software desideri. Il secondo
La procedura di installazione mostrata in questo capitolo ti guida attraverso un processo di installazione da
un DVD di installazione di Red Hat Enterprise Linux 7.

201

Pagina 242

Parte III: diventare un amministratore di sistema Linux

■ Installazione in azienda: sedersi davanti a un computer e fare clic


le domande sull'installazione non sono scomode se si installa un singolo sistema. Ma
cosa succede se è necessario installare dozzine o centinaia di sistemi Linux? E se lo volessi
per installare quei sistemi in modi particolari che devono essere ripetuti su più
installazioni? L'ultima sezione di questo capitolo descrive modi efficienti di installazione
più sistemi Linux, utilizzando le funzionalità di installazione di rete e file kickstart.

Un quarto metodo di installazione non trattato in questo capitolo è installare Linux come virtuale
macchina su un host di virtualizzazione, come Virtual Box o sistema VMware. Capitolo 26 e
27 descrivono
ambiente cloud.i modi per installare o distribuire una macchina virtuale su un host KVM Linux o in un file

Per provare insieme a me le procedure di questo capitolo, dovresti avere un computer davanti
tu che non ti dispiace cancellare completamente. In alternativa, puoi utilizzare un computer dotato di
un altro sistema operativo installato (come Windows), a condizione che il disco inutilizzato sia sufficiente
spazio disponibile al di fuori di quel sistema operativo. Descrivo la procedura e il rischio di perdita di dati,
se decidi di impostare uno di questi accordi "dual boot" (Linux e Windows).

Scegliere un computer
Puoi ottenere una distribuzione Linux che gira su dispositivi palmari o un vecchio PC nel tuo armadio
con appena 24 MB di RAM e un processore 486. Per avere una buona esperienza con il PC desktop
con Linux, tuttavia, dovresti considerare cosa vuoi essere in grado di fare con Linux quando
stai scegliendo il tuo computer.

Assicurati di considerare le specifiche di base necessarie affinché un computer di tipo PC esegua il file
Distribuzioni Fedora e Red Hat Enterprise Linux. Perché Fedora è usato come base per
Le versioni di Red Hat Enterprise Linux, i requisiti hardware sono simili per desktop di base e
hardware del server per queste due distribuzioni.

■ Processore: un processore Pentium da 400 MHz è il minimo per un'installazione GUI.


Per la maggior parte delle applicazioni, va bene un processore a 32 bit (x86). Tuttavia, se vuoi impostare
il sistema per eseguire la virtualizzazione, è necessario un processore a 64 bit (x86_64).

Se hai una macchina 486 (almeno 100 MHz), considera di provare Damn Small Linux (http: // www.damnsmall-
linux.org) o Slackware (http://www.slackware.org). Non avrà la stessa interfaccia grafica, bu t
potresti fare alcuni degli esercizi di shell. Se hai un MacBook, prova una versione GNOME di Ubuntu che puoi trovare
https://help.ubuntu.com/community/MacBook.

■ RAM: Fedora consiglia almeno 1 GB di RAM, ma almeno 2 GB o 3 GB lo sarebbero


molto meglio. Sul mio desktop RHEL, sto eseguendo un browser Web, un elaboratore di testi e
lettore di posta e sto consumando oltre 2 GB di RAM.

202

Pagina 243

Capitolo 9: Installazione di Linux

■ UnitàDVD o CD: è necessario essere in grado di avviare il processo di installazione da un DVD,


CD o unità USB. Nelle versioni recenti, l'ISO live media di Fedora è diventato troppo grande per
si adatta a un CD, quindi è necessario masterizzarlo su un DVD o un'unità USB. Se non riesci ad avviare da un DVD
o unità USB, ci sono modi per avviare l'installazione da un disco rigido o utilizzando un file
Installazione PXE. Dopo aver avviato il processo di installazione, a volte può essere necessario più software
recuperati da posizioni diverse (sulla rete o dal disco rigido, ad esempio).

PXE (pronunciato pixie) sta per Preboot eXecution Environment. È possibile avviare un computer client da una rete
Scheda di interfaccia (NIC) abilitata per PXE. Se un server di avvio PXE è disponibile sulla rete, può fornire tutto a
il computer client deve essere avviato. Quello che avvia può essere un programma di installazione. Quindi con un avvio PXE, è possibile fare un completo
Installazione di Linux senza CD, DVD o qualsiasi altro supporto fisico.

■ Scheda di rete: è necessario un hardware di rete cablato o wireless per poterlo aggiungere
altro software o ottieni aggiornamenti software. Fedora offre repository software gratuiti se
puoi connetterti a Internet. Per RHEL, gli aggiornamenti sono disponibili come parte di
prezzo di abbonamento.
■ Spazio su disco: Fedora consiglia almeno 10 GB di spazio su disco per un desktop medio
installazione, anche se le installazioni possono variare (a seconda di quali pacchetti si
scegliere di installare) da 600 MB (per un server minimo senza installazione GUI) a 7 GB
(per installare tutti i pacchetti dal DVD di installazione). Considera la quantità di dati
hai bisogno di memorizzare. Sebbene i documenti possano occupare pochissimo spazio, i video sì
consumare enormi quantità di spazio. (In confronto, puoi installare Damn
Piccolo Linux Live CD su disco con solo circa 200 MB di spazio su disco.)
■ Funzionalità hardware speciali: alcune funzionalità di Linux richiedono hardware speciale
Caratteristiche. Ad esempio, per utilizzare Fedora o RHEL come host di virtualizzazione utilizzando KVM,
il computer deve disporre di un processore che supporti la virtualizzazione. Questi includono
Chip AMD-V o Intel-VT.

Se non sei sicuro dell'hardware del tuo computer, ci sono alcuni modi per controllare cosa
hai. Se stai utilizzando Windows, la finestra Proprietà del sistema può mostrarti il ​file 9
processore che hai, così come la quantità di RAM installata. Come alternativa,
con Fedora Live CD avviato, aprire una shell e digitare dmesg | meno per vedere un elenco di
hardware non appena viene rilevato sul sistema.

Dopo aver installato l'hardware, puoi scegliere di installare Linux da un Live CD o da


supporto di installazione, come descritto nelle sezioni seguenti.

Installazione di Fedora dal supporto Live


Nel Capitolo 1, hai imparato come ottenere e avviare il supporto di Linux Live. Questo capitolo ti guida
attraverso un processo di installazione di un Fedora Live DVD in modo che sia installato permanentemente sul tuo
disco rigido.

203

Pagina 244

Parte III: diventare un amministratore di sistema Linux

La semplicità è il vantaggio principale dell'installazione da supporti Live. In sostanza, sei solo


copiare il kernel, le applicazioni e le impostazioni dall'immagine ISO sul disco rigido. Là
ci sono meno decisioni che devi prendere per fare questo tipo di installazione, ma non ottieni neanche
per scegliere esattamente quali pacchetti software installare. Dopo l'installazione, puoi aggiungere
e rimuovi i pacchetti come preferisci.

Le prime decisioni che devi prendere sulla tua installazione di Live Media includono dove
si desidera installare il sistema e se si desidera mantenere i sistemi operativi esistenti
intorno al termine dell'installazione:

■ Computer ad avvio singolo : il modo più semplice per installare Linux è non doversi preoccupare
su altri sistemi operativi o dati sul computer e far sostituire Linux
qualunque cosa. Quando hai finito, il computer si avvia direttamente su Fedora.
■ Computer ad avvio multiplo: se Windows è già installato su un computer,
e non vuoi cancellarlo, puoi installare Fedora insieme a Windows su
quel sistema. Quindi, all'avvio, puoi scegliere quale sistema operativo avviare
su. Per essere in grado di installare Fedora su un sistema con un altro sistema operativo
installato, è necessario disporre di spazio su disco aggiuntivo (al di fuori di Windows
partizione) o essere in grado di ridurre il sistema Windows per ottenere abbastanza spazio libero per
installa Fedora.
■ Bare metal o sistema virtuale : è possibile installare l'installazione Fedora risultante
eseguire l'avvio direttamente dall'hardware del computer o dall'interno di un sistema operativo esistente
sistema sul computer. Se hai un computer che funziona come virtual
host, puoi installare Fedora su quel sistema come guest virtuale. Host di virtualizzazione
software include KVM, Xen e VirtualBox (per sistemi Linux e UNIX, oltre a
Windows e MAC), Hyper-V (per sistemi Microsoft) e VMWare (entrambi Linux
e sistemi Microsoft). È possibile utilizzare l'immagine ISO di Fedora Live dal disco o masterizzata
su un DVD per avviare un'installazione dall'host dell'hypervisor scelto. (Capitolo 16
descrive come configurare un host di virtualizzazione KVM.)

La seguente procedura ti guida attraverso il processo di installazione di Fedora Live ISO


descritto nel Capitolo 1 sul computer locale. Perché l'installazione di Fedora 21 è molto
simile all'installazione di Red Hat Enterprise Linux 7 descritta più avanti in questo capitolo, tu
può fare riferimento a tale procedura se si vuole andare oltre le semplici selezioni qui riportate
(in particolare nell'area della configurazione di archiviazione).

Prima di iniziare la procedura, assicurarsi di eseguire copie di backup di tutti i dati che si desidera conservare. Anche se puoi
scegli di non cancellare le partizioni del disco selezionate (purché tu abbia abbastanza spazio disponibile su altre partizioni), lì
è sempre un rischio che i dati possano essere persi quando si manipolano le partizioni del disco. Inoltre, scollega tutte le unità USB che hai
collegati al computer perché potrebbero essere sovrascritti.

204

Pagina 245
Capitolo 9: Installazione di Linux

1. Ottieni Fedora . Scegli l'immagine multimediale Fedora Live che desideri utilizzare, scaricala su
nel sistema locale e masterizzarlo su un DVD, come descritto nel Capitolo 1. Vedere l'Appendice A per
informazioni su come ottenere il supporto Fedora Live e masterizzarlo su un DVD o un'unità USB.
2. Avvia l'immagine Live . Inserisci il DVD o l'unità USB. Quando viene visualizzata la schermata del BIOS,
cerca un messaggio che ti dice di premere un particolare tasto funzione (come F12)
per interrompere il processo di avvio e selezionare il supporto di avvio. Seleziona il DVD o l'USB
drive, a seconda di quello che hai, e Fedora dovrebbe apparire e visualizzare il file
schermata di avvio. Quando vedi la schermata di avvio, seleziona Avvia Fedora Live.

3. Avviare l'installazione . Quando appare la schermata di Benvenuto in Fedora, posiziona il tuo


passare il mouse sull'area Installa su disco rigido e selezionarla. La Figura 9.1 mostra un esempio
della selezione Installa su disco rigido sul supporto Fedora Live.

FIGURA 9.1

Avvia il processo di installazione dal supporto Live.

4. Seleziona la lingua . Quando richiesto, scegli il tipo di lingua più adatto


tu (come l'inglese americano) e seleziona Avanti. Dovresti vedere il riepilogo dell'installazione
schermata, come mostrato nella Figura 9.2.
5. Selezionare DATA E ORA . Dalla schermata DATA E ORA, puoi selezionare il tuo fuso orario
facendo clic sulla mappa o scegliendo la regione e la città dalle caselle a discesa.
Per impostare la data e l'ora, se si dispone di una connessione Internet, è possibile selezionare il file
Pulsante Network Time per accenderlo. Oppure puoi selezionare OFF e impostare la data e l'ora
manualmente dalle caselle nella parte inferiore dello schermo. Seleziona Fine in alto a destra
angolo quando hai finito.

205

Pagina 246

Parte III: diventare un amministratore di sistema Linux

FIGURA 9.2

Selezionare le opzioni di configurazione dalla schermata Riepilogo installazione.


6. Selezionare DESTINAZIONE DI INSTALLAZIONE . Dispositivi di archiviazione disponibili (come hard
drive) vengono visualizzati, con il disco rigido selezionato come destinazione dell'installazione.
Se vuoi che il programma di installazione installi automaticamente Fedora, seleziona Fine nel file
angolo in alto a sinistra. Ecco le tue scelte a questo punto:
■ Configura automaticamente ...: se lo spazio su disco disponibile è sufficiente nel file
disco selezionato, è possibile continuare con l'installazione selezionando
Continua. Il programma di installazione assicurerà che ci sia abbastanza spazio disponibile su disco per
installa Fedora.
■ Voglio più spazio ...: se desideri eliminare parte o tutto lo spazio nel file
disco rigido attualmente in uso, scegliere questa selezione e fare clic su Continua.
È possibile cancellare le partizioni che attualmente contengono dati.
■ Voglio rivedere / modificare ...: per avere un maggiore controllo sul partizionamento del disco,
seleziona questa opzione e fai clic su Continua. Ciò consente di aggiungere ed eliminare il partizionamento
per dividere il disco esattamente come preferisci.
■ Altre opzioni : da questa schermata è anche possibile scegliere lo schema di partizionamento
(Consiglio LVM perché ti consente di espandere il tuo spazio di archiviazione più facilmente
dopo). Puoi anche scegliere se crittografare i dati sul tuo disco, rendendo
i tuoi dati inaccessibili a chiunque tenti di avviare il tuo computer senza l'estensione
password impostata successivamente.

Seleziona Fine dopo aver configurato lo spazio di archiviazione.

7. Selezionare TASTIERA . È possibile utilizzare la tastiera inglese (USA) predefinita o selezionare


TASTIERA per scegliere un diverso layout di tastiera.

206

Pagina 247

Capitolo 9: Installazione di Linux

8. Selezionare CONFIGURAZIONE DI RETE . Scegli questa opzione per abilitare il tuo file
interfaccia di rete e digitare un nome host per il computer. Se DHCP è disponibile
sulla rete, puoi semplicemente impostare le tue interfacce di rete per rilevare l'indirizzo IP
automaticamente le informazioni. È inoltre possibile impostare manualmente le informazioni sull'indirizzo IP.
Seleziona Inizia installazione quando hai finito e il processo di installazione inizia.

9. Selezionare PASSWORD ROOT . Durante l'installazione di Fedora, questa selezione consente di impostare la password
per l'utente root. Digita la password che preferisci, quindi digitala di nuovo in Conferma
scatola. Seleziona Fine per impostare la password. Se la password non è di almeno sei caratteri
lungo o se è considerato troppo facile (come una parola comune), l'installatore no
lasciare la schermata della password quando si fa clic su Fine. Puoi cambiare la password
oppure fare di nuovo clic su Fine per fare in modo che il programma di installazione utilizzi comunque la password.
10. Selezionare CREA UTENTE . È buona norma avere almeno un file regolare (non root)
utente su ogni sistema, perché root dovrebbe essere utilizzato solo per attività amministrative
e non l'uso quotidiano del computer. Aggiungi il nome completo dell'utente, il nome utente breve e
parola d'ordine. Per consentire a questo utente di eseguire attività amministrative senza conoscere il root
password, selezionare la casella "Rendi questo utente amministratore".
Facendo clic sulla casella Avanzate, è possibile modificare alcune delle impostazioni predefinite.
Ad esempio, con un utente chiamato chris, la directory home predefinita sarebbe
/ home / chris e il successivo ID utente e ID gruppo disponibili vengono assegnati al file
utente. Selezionando Avanzate, puoi modificare queste impostazioni e persino assegnare il file
utente ad altri gruppi. Seleziona Fine quando hai finito di aggiungere l'utente.

11. Fine configurazione . Quando la prima parte dell'installazione è completa, fare clic su
Fine configurazione. A questo punto viene eseguita una configurazione finale sul sistema
punto. Al termine, seleziona Esci. A questo punto, il disco viene ripartizionato,
i filesystem vengono formattati, l'immagine di Linux viene copiata sul disco rigido e il file
vengono implementate le impostazioni necessarie.

12. Riavvia . Seleziona il piccolo pulsante di accensione / spegnimento nell'angolo in alto a destra dello schermo. quando
richiesto, fare clic sul pulsante di riavvio. Espelli o rimuovi il supporto Live. Il computer
dovrebbe avviarsi sul sistema Fedora appena installato. (Potrebbe essere necessario in realtà
spegnere il computer per riavviarlo.) 9
13. Accedi e inizia a usare Fedora . A questo punto viene visualizzata la schermata di accesso che consente
di accedere con l'account utente e la password appena creati.
14. Ottieni aggiornamenti software . Per mantenere il tuo sistema sicuro e aggiornato, uno dei
Il primo compito che dovresti fare dopo aver installato Fedora è quello di ottenere le ultime versioni di
software appena installato. Se il tuo computer ha una connessione Internet (plug
in una rete Ethernet cablata o selezionando una rete wireless accessibile dal file
desktop si occupa di questo), puoi semplicemente aprire un terminale come root e digitare yum
update per scaricare e aggiornare tutti i tuoi pacchetti da Internet. Se un nuovo kernel
è installato, è possibile riavviare il computer per rendere effettivo il nuovo kernel.

A questo punto, puoi iniziare a utilizzare il desktop, come descritto nel Capitolo 2. Puoi anche usare
il sistema per eseguire gli esercizi di uno qualsiasi dei capitoli di questo libro.

207

Pagina 248

Parte III: diventare un amministratore di sistema Linux

Installazione di Red Hat Enterprise Linux da


Supporti di installazione
Oltre a offrire un DVD live, la maggior parte delle distribuzioni Linux offre una singola immagine o set di file
immagini che possono essere utilizzate per installare la distribuzione. Per questo tipo di supporto di installazione,
invece di copiare l'intero contenuto del supporto su disco, il software viene suddiviso in
pacchetti che puoi selezionare per soddisfare le tue esatte esigenze. Un DVD di installazione completo, ad esempio,
può permetterti di installare qualsiasi cosa, da un sistema minimale a un desktop completo di funzionalità in un file
server completo che offre più servizi.

In questo capitolo, utilizzo un DVD di installazione di Red Hat Enterprise Linux 7 server edition come file
mezzo di installazione. Rivedere le informazioni sull'hardware e le descrizioni del dual boot in
la sezione precedente prima di iniziare l'installazione di RHEL.

Segui questa procedura per installare Red Hat Enterprise Linux da un DVD di installazione.

1. Ottieni il supporto di installazione. Il processo di download delle immagini ISO di installazione di RHEL è
descritto nella pagina del prodotto Red Hat Enterprise Linux. Se non sei ancora un rosso
Cliente di Hat, puoi richiedere una copia di valutazione e scaricare immagini ISO
qui : http://www.redhat.com/en/technologies/linux-platforms/
enterprise-linux.
Ciò richiede la creazione di un account Red Hat. Se ciò non è possibile, puoi farlo
scarica un DVD di installazione da un sito mirror del progetto CentOS per ottenere un file
esperienza simile : http://wiki.centos.org/Download.
Per questo esempio, ho utilizzato l'ISO del DVD del server RHEL 7 3.4G denominato rhel-server-
7.0-x86_64-dvd.iso. Dopo aver ottenuto l'ISO del DVD, puoi masterizzarlo su un file fisico
DVD come descritto nell'Appendice A.
2. Avviare il supporto di installazione . Inserisci il DVD nell'unità DVD e riavvia il file
computer. Viene visualizzata la schermata di benvenuto.
3. Selezionare Installa o Prova supporto . Selezionare "Installa" o "Prova questo supporto e installa" su
fare una nuova installazione di RHEL. Il media test verifica che il DVD non lo abbia
danneggiato durante il processo di copia o masterizzazione. Se è necessario modificare il file
processo di installazione, è possibile aggiungere opzioni di avvio premendo il tasto Tab con un avvio
voce evidenziata e digitando le opzioni desiderate. Vedere la sezione "Utilizzo di
opzioni di avvio dell'installazione ”più avanti in questo capitolo.
4. Seleziona una lingua . Seleziona la tua lingua e seleziona Continua. L'installazione
Viene visualizzata la schermata di riepilogo. Da quella schermata, puoi scegliere di modificare: Data e ora,
Supporto della lingua, tastiera, origine dell'installazione, selezione del software, installazione
Destinazione e Rete e nome host, come mostrato nella Figura 9.3.
5. Data e ora . Scegli un fuso orario per la tua macchina dalla mappa o dal
elenco mostrato (come descritto nella sezione Fedora). O impostare l'ora manualmente con
frecce su / giù o selezionare Ora di rete per fare in modo che il sistema tenti di eseguire automaticamente

208

Pagina 249
Capitolo 9: Installazione di Linux

connettersi ai server dell'ora in rete per sincronizzare l'ora del sistema. Seleziona Fatto quando tu
sono finiti.

FIGURA 9.3

Scegliere tra gli argomenti Localizzazione, Software e Sistema nella schermata Riepilogo installazione.

6. Supporto linguistico . Hai la possibilità di aggiungere il supporto per altre lingue


(oltre a quanto impostato per impostazione predefinita in precedenza). Seleziona Fine quando hai finito.
7. Tastiera . Scegli tra diversi tipi di tastiere disponibili con le lingue
hai selezionato in precedenza. Digita del testo per vedere come sono disposti i tasti. 9
8. Origine dell'installazione . Il DVD di installazione viene utilizzato, per impostazione predefinita, per fornire il file
Pacchetti RPM utilizzati durante l'installazione. Hai la possibilità di selezionare "Sul
network "e scegliendo un URL Web (http, https o ftp) quando un Red Hat Enterprise
Il repository del software Linux è installato. Dopo aver scelto il DVD o una rete
posizione, puoi aggiungere altri repository yum per farli utilizzare
anche durante l'installazione. Seleziona Fine quando hai finito.
9. Selezione del software . Per impostazione predefinita è selezionata un'installazione minima, che offre
nessuna interfaccia desktop (solo shell). Se sei nuovo su Linux e vuoi provare
alcuni servizi, la selezione "Server con GUI" fornisce un desktop GNOME 3
sistema su un'installazione server di base. È possibile scegliere di aggiungere altri servizi, come
come DNS, file e archiviazione, gestione delle identità e altri servizi. Altra base
ambienti includono server infrastruttura, file e server di stampa, Web di base

209

Pagina 250

Parte III: diventare un amministratore di sistema Linux

server e server host di virtualizzazione. Seleziona Fine quando sei pronto


continuare.
10. Destinazione dell'installazione . Il nuovo sistema RHEL è installato, per impostazione predefinita, su
disco rigido locale utilizzando il partizionamento automatico. Hai anche la possibilità di allegare
memoria di rete o memoria speciale, come Firmware RAID. (Vedi la sezione
"Partizionamento dei dischi rigidi" più avanti in questo capitolo per i dettagli sulla configurazione dell'archiviazione.)
Al termine, fai clic su Fine. È possibile che ti venga chiesto di verificare che va bene
elimina lo spazio di archiviazione esistente.

11. Rete e nome host . Qualsiasi scheda di interfaccia di rete rilevata può essere
configurato a questo punto. Se un servizio DHCP è disponibile sulla rete, network
le informazioni sull'indirizzo vengono assegnate all'interfaccia dopo aver selezionato ON. Selezionare
Configura se preferisci configurare manualmente l'interfaccia di rete. Compila il
Casella Nome host se si desidera impostare il nome host del sistema. Configurazione della rete
e il nome host durante l'installazione possono rendere più semplice iniziare a utilizzare il sistema
dopo l'installazione. Fare clic su Fine per continuare.
12. Inizia l'installazione . Fare clic sul pulsante Avvia installazione per avviare il processo di installazione.
Una barra di avanzamento indica l'avanzamento dell'installazione. Durante l'installazione del sistema,
puoi impostare la password di root e creare un nuovo account utente per il tuo nuovo sistema.
13. Password di root . Imposta la password per l'utente root e verificala (digitala di nuovo).
Fare clic su Fine per accettarlo. Se la password è troppo breve o troppo debole, rimani sul file
pagina (dove puoi impostare una nuova password). Se decidi di mantenere la password debole
invece, fai di nuovo clic su Fine per accettare la password debole.

14. Crea utente . È buona norma accedere a un sistema Linux con un utente non root
account e richiedere i privilegi di root secondo necessità. Puoi impostare un account utente,
incluso un nome utente, nome completo e password. È possibile selezionare "Make this user
amministratore "per concedere a quell'utente privilegi sudo (consentendo all'account di agire come
utente root secondo necessità). Seleziona Fine quando hai finito. Se la password che inserisci
è troppo corto o comunque debole, è necessario modificarlo o fare di nuovo clic su Fine se ancora
desidera utilizzare la password debole.

15. Completare l'installazione . Al termine dell'installazione, fare clic su Riavvia. Apri il file
DVD quando il sistema si riavvia e Red Hat Enterprise Linux viene avviato dal file
disco rigido.

16. Eseguire firstboot. Se hai installato un'interfaccia desktop, la prima schermata di avvio appare il file
la prima volta che avvii il sistema. Ecco cosa fai:
■ Licenza: leggere e accettare le informazioni sulla licenza, fare clic su Fine e quindi su
Fine configurazione.
■ Kdump: puoi scegliere di mettere da parte una certa quantità di RAM per kdump
caratteristica. Se kdump è abilitato, la RAM messa da parte può essere usata nel caso in cui
il kernel si arresta in modo anomalo per avere un posto in cui memorizzare il dump del kernel. Senza
kdump, non ci sarebbe modo di diagnosticare un kernel danneggiato. Se abiliti
kdump, che viene eseguito di default, puoi anche impostare manualmente la quantità di file
memoria da mettere da parte per questo. Fai clic su Avanti quando hai finito.

210

Pagina 251

Capitolo 9: Installazione di Linux

■ Registrazione abbonamento : è possibile, a condizione che la rete sia configurata


selezionare "Sì" per registrare il sistema ora. Quando richiesto, puoi lasciare il file
sistema di gestione degli abbonamenti predefinito in atto (subscription.rhn.redhat.com)
oppure immettere la posizione di un server Red Hat Satellite per registrare il sistema. voi
hai bisogno del tuo account e password Red Hat per registrarti e autorizzare il tuo sistema
per gli aggiornamenti. Nella maggior parte dei casi, è possibile allegare automaticamente un'autorizzazione a
sistema. Tuttavia, puoi fare clic sul pulsante "Allega manualmente ..." se lo desideri
scegliere un'autorizzazione specifica da allegare al sistema in un secondo momento quando si accede a
il sistema.

Ora dovresti essere in grado di accedere al tuo sistema Red Hat Enterprise Linux. Uno dei primi
le cose che dovresti fare è ottenere gli aggiornamenti software per il nuovo sistema.

Comprensione delle installazioni basate su cloud


Quando installi un sistema Linux su un computer fisico, il programma di installazione può vedere il file
disco rigido del computer, interfacce di rete, CPU e altri componenti hardware. quando
installi Linux in un ambiente cloud, questi componenti fisici vengono astratti
un pool di risorse. Quindi, per installare una distribuzione Linux in Amazon EC2, Google Compute
Engine, o piattaforma cloud OpenStack, devi affrontare le cose in modo diverso.

Il modo comune di installare Linux in un cloud è iniziare con un file che è un'immagine di
un sistema Linux installato. In genere, quell'immagine include tutti i file necessari a un utente di base,
con sistema operativo Linux. I metadati vengono aggiunti a quell'immagine da un file di configurazione o da
compilando un modulo da un controller cloud che crea e avvia il sistema operativo
come macchina virtuale.

Il tipo di informazioni aggiunte all'immagine potrebbe includere un particolare nome host, root
password e nuovo account utente. Potresti anche voler scegliere di avere un importo specifico
di spazio su disco, particolare configurazione di rete e un certo numero di processori CPU.
9
I metodi per l'installazione di Linux in un ambiente KVM simile al cloud locale sono discussi in
Capitolo 26, "Utilizzo di Linux per il cloud computing". I metodi per la distribuzione di immagini cloud sono
contenuto nel Capitolo 27, "Distribuzione di Linux nel cloud". Quel capitolo spiega come eseguire
un sistema Linux come immagine di macchina virtuale su un ambiente KVM, cloud Amazon EC2 o
Ambiente OpenStack.

Installazione di Linux nell'azienda


Se gestissi dozzine, centinaia, persino migliaia di sistemi Linux in un grande
impresa, sarebbe terribilmente inefficiente dover andare su ogni computer per digitare e
fare clic su ciascuna installazione. Fortunatamente, con Red Hat Enterprise Linux e altri

211

Pagina 252

Parte III: diventare un amministratore di sistema Linux

distribuzioni, puoi automatizzare l'installazione in modo tale che tutto ciò che devi fare è girare
su un computer e avviare dalla scheda di interfaccia di rete del computer per ottenere quello desiderato
Installazione di Linux.

Sebbene ci siamo concentrati sull'installazione di Linux da un DVD o da un supporto USB, ce ne sono molti
altri modi per avviare un'installazione Linux e molti modi per completare un'installazione. Il
i seguenti elenchi puntano attraverso il processo di installazione e descrivono i modi per cambiarlo
processo lungo il percorso:

■ Avviare il supporto di installazione . Puoi avviare un'installazione da qualsiasi supporto


è possibile eseguire l'avvio da un computer: CD, DVD, unità USB, disco rigido o rete
scheda frontale con supporto PXE. Il computer esegue l'ordine di avvio e guarda
nel record di avvio principale sul supporto fisico o cerca un server PXE nel file
Rete.
■ Avvia il kernel anaconda . Il compito del boot loader è puntare allo speciale
kernel (e possibilmente un RAM disk iniziale) che avvia l'installer di Linux (chiamato
anaconda). Quindi tutti i media appena descritti devono semplicemente indicare il file
posizione del kernel e del disco RAM iniziale per avviare l'installazione. Se il software
i pacchetti non sono sullo stesso supporto, il processo di installazione richiede
dove trovare quei pacchetti.
■ Aggiungi kickstart o altre opzioni di avvio . Opzioni di avvio (descritte più avanti in questo capitolo)
può essere passato al kernel anaconda per configurarne l'avvio. Un'opzione
supportato da Fedora e RHEL ti permette di passare la posizione di un file kickstart a
l'installatore. Quel kickstart può contenere tutte le informazioni necessarie per completare il file
installazione: password di root, partizionamento, fuso orario e così via per ulteriori configurazioni
il sistema installato. Dopo l'avvio del programma di installazione, viene richiesto se necessario
informazioni o utilizza le risposte fornite nel file kickstart.
■ Trova pacchetti software . I pacchetti software non devono essere nell'installazione
medio. Ciò consente di avviare un'installazione da un supporto di avvio che contiene
solo un kernel e un disco RAM iniziale. Dal file kickstart o da un'opzione tu
accedere manualmente al programma di installazione, è possibile identificare la posizione del repository
tenendo i pacchetti software RPM. Quella posizione può essere un CD locale (cdrom), sito web
(http), sito FTP (ftp), condivisione NFS (nfs), NFS ISO (nfsiso) o disco locale (hd).
■ Modificare l'installazione con gli script kickstart . Gli script inclusi in una lattina kickstart
eseguire i comandi scelti prima o dopo l'installazione per configurare ulteriormente il file
Sistema Linux. Questi comandi possono aggiungere utenti, modificare autorizzazioni, creare file e
directory, acquisire file sulla rete o configurare in altro modo il sistema installato
esattamente come specifichi.

Sebbene l'installazione di Linux in ambienti aziendali esuli dallo scopo di questo libro, I.
desidera che tu comprenda le tecnologie disponibili quando desideri automatizzare il
Processo di installazione di Linux. Ecco alcune di quelle tecnologie disponibili per l'uso con Red
Hat Enterprise Linux, insieme ai collegamenti a dove è possibile trovare ulteriori informazioni su di loro:

212

Pagina 253

Capitolo 9: Installazione di Linux


■ Server di installazione: se si configura un server di installazione, non è necessario portare con sé il file
pacchetti software in giro per ogni macchina su cui installi RHEL. Essenzialmente tu
copiare tutti i pacchetti software dal supporto di installazione RHEL a un server web
(http), server FTP (ftp) o server NFS (nfs), quindi puntare alla posizione di
server quando avvii il programma di installazione. La Guida all'installazione di RHEL descrive come
configurare un server di installazione (https://access.redhat.com/documentation/
it / Red_Hat_Enterprise_Linux / 7 / html-single / Installation_Guide /
index.html # sect-making-media-sources-network).
■ Server PXE: se si dispone di un computer con una scheda di interfaccia di rete che supporta
Avvio PXE (come la maggior parte), puoi impostare il BIOS del tuo computer per l'avvio da quello
NIC. Se hai configurato un server PXE su quella rete, quel server può presentare un file
menu del computer contenente le voci per avviare un processo di installazione. Il
La Guida all'installazione di RHEL fornisce informazioni su come configurare i server PXE per
installazione (https://access.redhat.com/documentation/en-US/Red_
Hat_Enterprise_Linux / 7 / html-single / Installation_Guide / index.
html # chap-installazione-server-setup).
■ File kickstart: per automatizzare completamente un'installazione, creare quello che viene chiamato un file
file kickstart. Passando un file kickstart come opzione di avvio a un programma di installazione Linux, tu
può fornire risposte a tutte le domande di installazione che dovresti normalmente fare
clicca attraverso.
Quando installi RHEL, un file kickstart contenente le risposte a tutte le domande di installazione-
zioni per l'installazione che hai appena fatto si trovano nel file /root/anaconda-ks.cfg. voi
può presentare quel file alla tua prossima installazione per ripetere la configurazione dell'installazione
o utilizzare quel file come modello per diverse installazioni.
Vedere la Guida all'installazione di RHEL per informazioni sul passaggio di un file kickstart a
programma di installazione di anaconda (https://access.redhat.com/documentation/en-US/
Red_Hat_Enterprise_Linux / 7 / html-single / Installation_Guide /
index.html # sect-parameter-configuration-files- kickstart-
s390) e creare i propri file kickstart (https: //access.redhat. com /
documentazione / it-IT / Red_Hat_Enterprise_Linux / 6 / html-single /
Installation_Guide / index.html # s1-kickstart2-file).
9

Esplorazione degli argomenti di installazione comuni


Alcuni degli argomenti relativi all'installazione trattati in precedenza in questo capitolo richiedono ulteriori informazioni
spiegazione per poterle implementare completamente. Leggi gli argomenti in questo
sezione per ottenere una maggiore comprensione di argomenti di installazione specifici.

Aggiornamento o installazione da zero


Se hai una versione precedente di Linux già installata sul tuo computer, Fedora, Ubuntu,
e altre distribuzioni Linux offrono un'opzione di aggiornamento. Red Hat Enterprise Linux offre un
percorso di aggiornamento limitato da RHEL 6 a RHEL 7.

213

Pagina 254

Parte III: diventare un amministratore di sistema Linux

L'aggiornamento consente di spostare un sistema Linux da una versione principale a quella successiva. Tra minori
release, puoi semplicemente aggiornare i pacchetti secondo necessità (ad esempio, digitando yum update).
Ecco alcune regole generali prima di eseguire un aggiornamento:

■ Rimuovere i pacchetti aggiuntivi . Se disponi di pacchetti software non necessari, rimuovi


prima di eseguire un aggiornamento. I processi di aggiornamento in genere aggiornano solo quelli
pacchetti presenti nel sistema. Gli aggiornamenti generalmente eseguono più controlli e
confronto rispetto alle installazioni pulite, quindi qualsiasi pacchetto che puoi rimuovere fa risparmiare tempo
durante il processo di aggiornamento.
■ Controllare i file di configurazione . Una procedura di aggiornamento di Linux spesso lascia copie di
vecchi file di configurazione. Dovresti controllare che i nuovi file di configurazione siano ancora
Lavoro per te.

L'installazione di Linux da zero è più veloce di un aggiornamento. Inoltre si traduce in un sistema Linux più pulito. Quindi, se non lo fai
hai bisogno dei dati sul tuo sistema (o se hai un backup dei tuoi dati), ti consiglio di fare una nuova installazione. Poi
puoi ripristinare i tuoi dati su un sistema appena installato.

Alcune distribuzioni Linux, in particolare Gentoo, hanno adottato l'approccio della fornitura
aggiornamenti in corso. Invece di prendere una nuova versione ogni pochi mesi, semplicemente continuamente
prendi i pacchetti aggiornati non appena diventano disponibili e installali sul tuo sistema.
Doppio avvio
È possibile avere più sistemi operativi installati sullo stesso computer. Senso unico
per farlo è avere più partizioni su un disco rigido e / o più dischi rigidi, e
quindi installare diversi sistemi operativi su partizioni diverse. Finché lo stivale
loader contiene informazioni di avvio per ciascuno dei sistemi operativi installati, è possibile
scegli quale eseguire all'avvio.

Sebbene gli strumenti per il ridimensionamento delle partizioni Windows e la configurazione di sistemi ad avvio multiplo siano migliorati negli ultimi anni,
c'è ancora qualche rischio di perdere dati sui sistemi dual-boot Windows / Linux. Spesso i diversi sistemi operativi hanno
diverse visualizzazioni delle tabelle delle partizioni e dei record di avvio principale che possono causare l'impossibilità di avviare la macchina
(almeno temporaneamente) o perdere i dati in modo permanente. Esegui sempre il backup dei dati prima di provare a ridimensionare un file Windows (NTFS
o FAT) per creare spazio per Linux.

Se il computer che stai utilizzando ha già un sistema Windows su di esso, molto probabilmente l'intero
il disco rigido è dedicato a Windows. Sebbene tu possa eseguire un Linux avviabile, come KNOPPIX
o Damn Small Linux, senza toccare il disco rigido, per fare un'installazione più permanente,
ti consigliamo di trovare spazio su disco al di fuori dell'installazione di Windows. Ci sono diversi modi per farlo
Fai questo:

214

Pagina 255

Capitolo 9: Installazione di Linux

■ Aggiungere un disco rigido . Invece di scherzare con la partizione di Windows, puoi semplicemente
aggiungi un disco rigido e dedicalo a Linux.
■ Ridimensionare la partizione di Windows . Se hai spazio disponibile su Windows
partizione, è possibile ridurre quella partizione in modo che lo spazio libero sia disponibile sul disco a
dedicarsi a Linux. Strumenti come Acronis Disk Director (http://www.acronis.com )
sono disponibili per ridimensionare le partizioni del disco e configurare un boot manager funzionante.
Alcune distribuzioni Linux (in particolare Linux avviabili usati come CD di ripristino) includono
uno strumento chiamato GParted (che include il software del progetto Linux-NTFS per
ridimensionamento delle partizioni Windows NTFS).

Digita yum install gparted (in Fedora) o apt-get install gparted (in Ubuntu) per installare GParted.
Esegui gparted come root per avviarlo.

Prima di provare a ridimensionare la partizione di Windows, potrebbe essere necessario deframmentarla. Per
deframmenta il tuo disco su alcuni sistemi Windows, in modo da mettere tutto lo spazio utilizzato
ordine sul disco, aprire Risorse del computer, fare clic con il pulsante destro del mouse sull'icona del disco rigido (in genere C :), selezionare
Proprietà, fare clic su Strumenti e selezionare Deframmenta ora.

La deframmentazione del disco può essere un processo abbastanza lungo. Il risultato della deframmentazione è
che tutti i dati sul disco siano contigui, creando molto spazio libero contiguo nel file
fine della partizione. A volte, devi completare le seguenti attività speciali per fare
questo è vero:

■ Seil file di scambio di Windows non viene spostato durante la deframmentazione, è necessario rimuoverlo.
Quindi, dopo aver deframmentato nuovamente il disco e ridimensionato, è necessario ripristinare il file
file di scambio. Per rimuovere il file di scambio, apri il Pannello di controllo, apri l'icona Sistema,
fare clic sulla scheda Prestazioni e selezionare Memoria virtuale. Per disabilitare il file di scambio, fare clic su
Disabilita la memoria virtuale.
■ Se la partizione DOS contiene file nascosti che si trovano nello spazio che si sta tentando di liberare
su, devi trovarli. In alcuni casi, non è possibile eliminarli. In altri casi, tale 9
come file di scambio creati da un programma, puoi tranquillamente eliminare quei file. Questo è un po '
complicato perché alcuni file non dovrebbero essere eliminati, come i file di sistema DOS. Puoi
utilizzare il comando attrib -s -h dalla directory principale per gestire i file nascosti.

Dopo che il disco è stato deframmentato, è possibile utilizzare gli strumenti commerciali descritti in precedenza (Acronis
Disk Director) per ripartizionare il disco rigido per creare spazio per Linux. Oppure usa l'open source
GParted alternativo.

Dopo aver liberato spazio su disco sufficiente per installare Linux (vedere i requisiti di spazio su disco
descritto in precedenza in questo capitolo), è possibile installare Ubuntu, Fedora, RHEL o un altro Linux
distribuzione. Quando si imposta il boot loader durante l'installazione, è possibile identificare Windows,
Linux e qualsiasi altra partizione avviabile in modo da poter selezionare quale avviare quando si
avvia il tuo computer.

215
Pagina 256

Parte III: diventare un amministratore di sistema Linux

Installazione di Linux per l'esecuzione virtuale


Utilizzando la tecnologia di virtualizzazione, come KVM, VMWare, VirtualBox o Xen, puoi farlo
configurare il computer per eseguire più sistemi operativi contemporaneamente. In genere, tu
avere un sistema operativo host in esecuzione (come il desktop Linux o Windows), quindi
si configurano i sistemi operativi guest per l'esecuzione in quell'ambiente.

Se disponi di un sistema Windows, puoi utilizzare prodotti VMWare commerciali per eseguire Linux su
il desktop di Windows. Visita http://www.vmware.com/try-vmware per ottenere una prova di
VMWare Workstation. Quindi esegui i tuoi guest virtuali installati con VMWare Player gratuito.
Con una versione completa di VMWare Workstation, è possibile eseguire più distribuzioni in
contemporaneamente.

I prodotti di virtualizzazione open source disponibili con i sistemi Linux includono


VirtualBox (http://www.virtualbox.org), Xen (http://www.xen.org) e
KVM ( http://www.linux-kvm.org). VirtualBox è stato sviluppato originariamente da Sun
Microsistemi. Alcune distribuzioni Linux usano ancora Xen. Tuttavia, tutti i sistemi Red Hat
attualmente utilizza KVM come base per le funzionalità dell'hypervisor di Red Hat in RHEL, Red Hat
Virtualizzazione aziendale e altri progetti cloud. Vedere il Capitolo 26 per informazioni su
installazione di Linux come macchina virtuale su un host KVM Linux.

Utilizzo delle opzioni di avvio dell'installazione


Quando il kernel anaconda viene avviato all'avvio di RHEL o Fedora, vengono fornite le opzioni di avvio
sulla riga di comando del kernel modificare il comportamento del processo di installazione. Per interruzione
Quando si avvia il boot loader prima dell'avvio del kernel di installazione, è possibile aggiungere le proprie opzioni di avvio
per dirigere il comportamento dell'installazione.

Quando vedi la schermata di avvio dell'installazione, a seconda del boot loader, premi Tab o alcuni
altra chiave per poter modificare la riga di comando del kernel anaconda. La linea che identifica il
il kernel potrebbe essere simile al seguente:

vmlinuz initrd = initrd.img ...

Vmlinuz è il kernel compresso e initrd.img è il disco RAM iniziale (contiene-


moduli e altri strumenti necessari per avviare il programma di installazione). Per aggiungere altre opzioni, digita semplicemente
alla fine di quella riga e premere Invio.

Quindi, ad esempio, se hai un file kickstart disponibile da /root/ks.cfg su un CD, il tuo


Il prompt di avvio di anaconda per avviare l'installazione utilizzando il file kickstart potrebbe essere simile al file
a seguire:

vmlinuz initrd = initrd.img ks = cdrom: /root/ks.cfg

Per Red Hat Enterprise Linux 7 e le ultime versioni di Fedora, le opzioni di avvio del kernel
l'installazione sta passando a un nuovo metodo di denominazione. Con questa nuova denominazione, un prefisso
di inst. può essere posizionato davanti a una qualsiasi delle opzioni di avvio mostrate in questa sezione che sono
specifico per il processo di installazione (ad esempio, inst.xdriver o inst.repo = dvd).

216

Pagina 257

Capitolo 9: Installazione di Linux

Per il momento, tuttavia, puoi ancora utilizzare le opzioni mostrate nelle prossime sezioni
con l'inst. prefisso.

Opzioni di avvio per disabilitare le funzionalità


A volte, un'installazione di Linux non riesce perché il computer presenta alcuni file o
hardware non supportato. Spesso è possibile aggirare questi problemi passando le opzioni al file
programma di installazione che fa cose come disabilitare l'hardware selezionato quando è necessario selezionare il proprio
proprio autista. La Tabella 9.1 fornisce alcuni esempi:

TABELLA 9.1 Opzioni di avvio per disabilitare le funzionalità

Opzione di installazione Racconta il sistema

nofirewire Non caricare il supporto per i dispositivi firewire

nodma Non caricare il supporto DMA per i dischi rigidi

noide Non caricare il supporto per i dispositivi IDE

nompath Non abilitare il supporto per dispositivi multipath

noparport Non caricare il supporto per le porte parallele

nopcmcia Non caricare il supporto per i controller PCMCIA

noprobe Non sondare l'hardware, ma richiedere all'utente i driver

noscsi Non caricare il supporto per i dispositivi SCSI

nousb Non caricare il supporto per i dispositivi USB

noipv6 Non abilitare la rete IPV6

senza rete Non cercare dispositivi di rete

numa-off Per disabilitare l'accesso alla memoria non uniforme (NUMA) per l'architettura AMD64

acpi = off Per disabilitare la configurazione avanzata e l'interfaccia di alimentazione (ACPI)

Opzioni di avvio per problemi video 9


In caso di problemi con la visualizzazione del video, è possibile specificare le impostazioni video come indicato
nella tabella 9.2.

TABELLA 9.2 Opzioni di avvio per problemi video

Opzione di avvio Racconta il sistema

xdriver = vesa Usa driver video vesa standard

risoluzione = 1024x768 Scegli la risoluzione esatta da usare

nofb Non utilizzare il driver del framebuffer VGA 16

skipddc Non sondare il DDC del monitor (la sonda può appendere l'installatore)

grafica Forza un'installazione grafica

217

Pagina 258

Parte III: diventare un amministratore di sistema Linux

Opzioni di avvio per tipi di installazione speciali


Per impostazione predefinita, l'installazione viene eseguita in modalità grafica con l'utente seduto alla console che risponde
domande. Se hai una console di solo testo o se la GUI non funziona correttamente, puoi eseguire un file
installazione in modalità testo normale: digitando testo , l'installazione viene eseguita in modalità testo.

Se vuoi avviare l'installazione su un computer, ma vuoi rispondere all'installazione


domande da un altro computer, è possibile abilitare un'installazione vnc (virtual network computing)
lazione. Dopo aver avviato questo tipo di installazione, puoi andare su un altro sistema e aprire un file vnc
visualizzatore, fornendo al visualizzatore l'indirizzo della macchina di installazione (ad esempio 192.168.0.99:1).
La Tabella 9.3 fornisce i comandi necessari, insieme a cosa dire al sistema di fare.

TABELLA 9.3 Opzioni di avvio per installazioni VNC

Opzione di avvio Racconta il sistema

vnc Esegui l'installazione come server VNC

vncconnect = hostname [: port] Collegarsi al nome host del client VNC e alla porta opzionale

vncpassword = <password> Il client utilizza la password (almeno 8 caratteri) per connettersi


installatore

Opzioni di avvio per kickstart e repository remoti


È possibile avviare il processo di installazione da un supporto di installazione che contiene poco
più del kernel e del disco RAM iniziale. In tal caso, è necessario identificare il file
repository in cui esistono i pacchetti software. Puoi farlo fornendo un kickstart
file o identificando in qualche modo la posizione dei repository. Per forzare il programma di installazione a
prompt per la posizione del repository (CD / DVD, disco rigido, NFS o URL), aggiungi askmethod a
le opzioni di avvio dell'installazione.
Utilizzando repo = options, è possibile identificare le posizioni del repository del software. Il seguente
gli esempi mostrano la sintassi da utilizzare per la creazione di voci repo =:

repo = hd: / dev / sda1: / myrepo


Repository in / myrepo sulla prima partizione del disco 1
repo = http://abc.example.com/myrepo
Repository disponibile da / myrepo sul server Web
repo = ftp://ftp.example.com/myrepo
Repository disponibile da / myrepo su server FTP
repo = cdrom
Repository disponibile da CD o DVD locale
repo = nfs :: mynfs.example.com: / myrepo /
Repository disponibile da / myrepo sulla condivisione NFS
repo = nfsiso :: nfs.example.com: /mydir/rhel7.iso
Immagine ISO di installazione disponibile dal server NFS

218

Pagina 259

Capitolo 9: Installazione di Linux

Invece di identificare direttamente il repository, puoi specificarlo all'interno di un file kickstart.


I seguenti sono esempi di alcuni modi per identificare la posizione di un file kickstart.

ks = cdrom: /stuff/ks.cfg
Ottieni kickstart da CD / DVD.
ks = hd: sda2: /test/ks.cfg
Ottieni kickstart dalla directory di test sul disco rigido (sda2)
ks = http://www.example.com/ksfiles/ks.cfg
Ottieni kickstart da un server Web.
ks = ftp://ftp.example.com/allks/ks.cfg
Ottieni kickstart da un server FTP.
ks = nfs: mynfs.example.com: /someks/ks.cfg
Ottieni kickstart da un server NFS.

Opzioni di avvio varie


Ecco alcune altre opzioni che puoi passare al programma di installazione che non rientrano in una categoria.

salvare
Invece di installare, esegui il kernel per aprire la modalità di ripristino di Linux.

mediacheck
Controllare il CD / DVD di installazione per errori di checksum.

Per ulteriori informazioni sull'utilizzo dell'installer di anaconda in modalità rescue (per ris-
cue un sistema Linux guasto), vedere il Capitolo 21, "Risoluzione dei problemi di Linux". Per informazioni
Informazioni sulle ultime opzioni di avvio utilizzate in RHEL 7, fare riferimento all'installazione di RHEL 7
Guida (https://access.redhat.com/documentation/en-US/Red_Hat_
Enterprise_Linux / 7 / html-single / Installation_Guide / index.
html # chap-anaconda-boot-options).

Utilizzo di archiviazione specializzata


Negli ambienti di elaborazione di grandi imprese, è comune archiviare il sistema operativo
e dati al di fuori del computer locale. Invece, qualche dispositivo di archiviazione speciale oltre il locale 9
il disco rigido viene identificato dall'installatore e tale dispositivo di archiviazione (o dispositivi) può essere utilizzato
durante l'installazione.

Una volta identificati, i dispositivi di archiviazione indicati durante l'installazione possono essere utilizzati allo stesso modo
modo in cui vengono utilizzati i dischi locali. Puoi partizionarli e assegnare una struttura (filesystem,
scambia spazio e così via) o lasciali soli e montali semplicemente dove vuoi
dati disponibili.

I seguenti tipi di dispositivi di archiviazione specializzati possono essere selezionati da Specialized


Schermata Dispositivi di archiviazione quando installi Red Hat Enterprise Linux, Fedora o altro Linux
distribuzioni:

219
Pagina 260

Parte III: diventare un amministratore di sistema Linux

■ RAID firmware: un dispositivo RAID firmware è un tipo di dispositivo dotato di ganci in


BIOS, che consente di utilizzarlo per avviare il sistema operativo, se lo desideri.
■ Dispositivi multipath: come suggerisce il nome, i dispositivi multipath forniscono più percorsi
tra il computer e i suoi dispositivi di archiviazione. Questi percorsi sono aggregati, quindi questi
i dispositivi sembrano un unico dispositivo al sistema che li utilizza, mentre i dispositivi sottostanti
la tecnologia fornisce prestazioni migliorate, ridondanza o entrambi. Le connessioni possono
essere fornito da dispositivi iSCSI o Fibre Channel over Ethernet (FCoE).
■ Altri dispositivi SAN: qualsiasi dispositivo che rappresenta una SAN (Storage Area Network).

Anche se la configurazione di questi dispositivi di archiviazione specializzati va oltre lo scopo di questo libro, sappilo
che se lavori in un'azienda in cui sono disponibili dispositivi iSCSI e FCoE, puoi farlo
configurare il proprio sistema Linux per utilizzarli al momento dell'installazione. I tipi di informazioni che tu
bisogno di fare questo include:

■ Dispositivi iSCSI: chiedere all'amministratore di archiviazione di fornire l'IP di destinazione


indirizzo del dispositivo iSCSI e il tipo di autenticazione di rilevamento necessaria da utilizzare
il dispositivo. Il dispositivo iSCSI potrebbe richiedere credenziali.
■ Dispositivi Fibre Channel over Ethernet (FCoE): per FCoE, è necessario conoscere il
interfaccia di rete collegata allo switch FCoE. Puoi cercarlo
interfaccia per i dispositivi FCoE disponibili.

Partizionamento dei dischi rigidi


Il disco rigido (o i dischi) del computer fornisce l'area di archiviazione permanente per i file
file di dati, programmi applicativi e il sistema operativo stesso. Il partizionamento è l'atto
di dividere un disco in aree logiche che possono essere lavorate separatamente. In Windows, tu
in genere hanno una partizione che consuma l'intero disco rigido. Tuttavia, con Linux lì
ci sono diversi motivi per cui potresti voler avere più partizioni:

■ Più sistemi operativi: se si installa Linux su un PC che dispone già di un file


Sistema operativo Windows, potresti voler mantenere entrambi i sistemi operativi
il computer. Per tutti gli scopi pratici, ogni sistema operativo deve esistere su un file
partizione completamente separata. Quando il tuo computer si avvia, puoi scegliere quale
sistema da eseguire.
■ Partizioni multiple all'interno di un sistema operativo: per proteggere il loro intero
sistema operativo dall'esaurimento dello spazio su disco, le persone spesso assegnano separatamente
partizioni in diverse aree del filesystem Linux. Ad esempio, if / home e
/ var sono stati assegnati a partizioni separate, quindi un utente goloso che riempie il file
La partizione / home non impedirebbe ai daemon di registrazione di continuare a scrivere nel registro
file nella directory / var / log.

Partizioni multiple consentono anche di eseguire determinati tipi di backup (come un'immagine
backup) più facile. Ad esempio, un backup dell'immagine di / home sarebbe molto più veloce
(e probabilmente più utile) di un'immagine di backup del filesystem di root (/).

220

Pagina 261

Capitolo 9: Installazione di Linux

■ Diversi tipi di filesystem: diversi tipi di filesystem hanno differenti


strutture. Filesystem di diversi tipi devono essere sulle proprie partizioni. Anche,
potresti aver bisogno di diversi filesystem per avere diverse opzioni di montaggio per speciali
funzionalità (come sola lettura o quote utente). Nella maggior parte dei sistemi Linux, hai bisogno di
almeno un tipo di filesystem per la radice del filesystem (/) e uno per il tuo scambio
la zona. I filesystem su CD-ROM usano il tipo di filesystem iso9660.

Quando crei partizioni per Linux, di solito assegni il tipo di filesystem come nativo di Linux (usando ext2, ext3,
ext4 o xfs sulla maggior parte dei sistemi Linux). Se le applicazioni in esecuzione richiedono nomi di file particolarmente lunghi, grande
dimensioni dei file, o molti inode (ogni file consuma un inode), potresti voler scegliere un diverso tipo di filesystem.
Ad esempio, se configuri un server di notizie, può utilizzare molti inode per memorizzare piccoli articoli di notizie. Un altro motivo per
l'utilizzo di un tipo di file system diverso significa copiare un nastro di backup dell'immagine da un altro sistema operativo sul disco locale
(come un file system legacy da un sistema operativo OS / 2 o Minix).

Proveniente da Windows
Se in precedenza hai utilizzato solo sistemi operativi Windows, probabilmente avevi l'intero disco rigido
assegnato a C: e non ha mai pensato alle partizioni. Con molti sistemi Linux, hai l'opportunità
per visualizzare e modificare il partizionamento predefinito in base a come si desidera utilizzare il sistema.

Durante l'installazione, sistemi come Fedora e RHEL consentono di partizionare il disco rigido
utilizzando strumenti grafici di partizionamento. Le sezioni seguenti descrivono come partizionare il file
disk durante un'installazione di Fedora. Vedere la sezione "Suggerimenti per la creazione di partizioni" per alcuni
idee per la creazione di partizioni del disco.

Comprensione dei diversi tipi di partizione


9
Molte distribuzioni Linux ti danno la possibilità di selezionare diversi tipi di partizione quando
si partiziona il disco rigido durante l'installazione. I tipi di partizione includono:

■ Partizioni Linux: utilizzare questa opzione per creare una partizione per ext2, ext3 o ext4
tipo di file system che viene aggiunto direttamente a una partizione sul disco rigido (o altro
supporto di memorizzazione). Il tipo di file system xfs può essere utilizzato anche su una partizione Linux.
■ Partizioni LVM: creare una partizione LVM se si intende creare o aggiungere a un LVM
gruppo di volumi. Gli LVM offrono maggiore flessibilità nella crescita, nella riduzione e nel trasferimento
partizioni più tardi rispetto alle normali partizioni.
■ Partizioni RAID: creare due o più partizioni RAID per creare un array RAID.
Queste partizioni dovrebbero essere su dischi separati per creare un array RAID efficace.

221

Pagina 262

Parte III: diventare un amministratore di sistema Linux

Gli array RAID possono aiutare a migliorare le prestazioni, l'affidabilità o entrambe le funzionalità
riguardano la lettura, la scrittura e l'archiviazione dei dati.
■ Partizioni di scambio: creare una partizione di scambio per estendere la quantità di memoria virtuale
disponibile sul tuo sistema.

Le sezioni seguenti descrivono come aggiungere partizioni Linux regolari, LVM, RAID e swap
partizioni utilizzando l'installatore grafico Fedora. Se non sei ancora sicuro di quando dovresti usare
questi diversi tipi di partizione, fare riferimento al Capitolo 12 per ulteriori informazioni sulla configurazione
partizioni del disco.

Motivi per diversi schemi di partizionamento


Esistono opinioni diverse su come suddividere un disco rigido. Ecco alcuni problemi
considerare:

■ Desideri installare un altro sistema operativo? Se vuoi Windows sul tuo


computer insieme a Linux, è necessario almeno un Windows (Win95, FAT16, VFAT o
Tipo NTFS), una partizione Linux (Linux ext4 o xfs) e solitamente una partizione di swap Linux.
■È un sistema multiutente? Se stai usando il sistema da solo, probabilmente non lo fai
servono molte partizioni. Uno dei motivi per il partizionamento di un sistema operativo è mantenere
l'intero sistema dall'esaurimento dello spazio su disco contemporaneamente. Questo serve anche a mettere
limiti su ciò che un individuo può utilizzare nella sua directory home (sebbene
le quote del disco forniscono un modo più raffinato per limitare l'uso del disco).
■ Hai più dischi rigidi? È necessaria almeno una partizione per disco rigido. Se
il tuo sistema ha due dischi rigidi, puoi assegnarne uno a / e uno a / home (se tu
avere molti utenti) o / var (se il computer è un server che condivide molti dati). Con un
partizione separata / home, puoi installare un altro sistema Linux in futuro con-
disturbare le directory home (e presumibilmente tutti o la maggior parte dei dati utente).

Suggerimenti per la creazione di partizioni


Modificare le partizioni del disco per gestire più sistemi operativi può essere molto complicato, in formato
parte perché ogni sistema operativo ha le proprie idee su come partizionare le informazioni
dovrebbe essere gestito, così come diversi strumenti per farlo. Ecco alcuni suggerimenti per aiutarti
fallo bene:
■ Se si sta creando un sistema dual-boot, in particolare per un sistema Windows, provare a farlo
installare il sistema operativo Windows prima dopo aver partizionato il disco. Altrimenti,
l'installazione di Windows potrebbe rendere inaccessibili le partizioni Linux. Scegliere un file
VFAT invece del file system NTFS per Windows rende anche la condivisione di file tra i tuoi file
Sistemi Windows e Linux più semplici e affidabili. (Supporto per partizioni NTFS
da Linux è migliorato notevolmente negli ultimi anni, ma non tutti i sistemi Linux
includere il supporto NTFS.)
■ La pagina man di fdisk consiglia di utilizzare gli strumenti di partizionamento forniti con
un sistema operativo per creare partizioni per quel sistema operativo. Per esempio,

222

Pagina 263

Capitolo 9: Installazione di Linux

l'fdisk DOS sa come creare partizioni che piaceranno a DOS e Linux


fdisk creerà felicemente le tue partizioni Linux. Dopo aver configurato il disco rigido per
dual boot, tuttavia, probabilmente non dovresti tornare al partizionamento solo per Windows
utensili. Usa fdisk di Linux o un prodotto realizzato per sistemi ad avvio multiplo (come Acronis
Disk Director).
■È possibile avere fino a 63 partizioni su un disco rigido IDE. Un disco rigido SCSI può contenere
a 15 partizioni. In genere non avrai bisogno di quasi tante partizioni. Se hai bisogno
più partizioni, usa LVM e crea tutti i volumi logici che desideri.

Se stai usando Linux come sistema desktop, probabilmente non hai bisogno di molte cose diverse
partizioni. Tuttavia, esistono alcune ottime ragioni per avere più partizioni per Linux
sistemi condivisi da molti utenti o server Web pubblici o file server. Avere
più partizioni all'interno di Fedora o RHEL, ad esempio, offrono i seguenti vantaggi:

■ Protezione dagli attacchi : gli attacchi di annullamento del servizio a volte eseguono azioni
che cercano di riempire il tuo disco rigido. Se le aree pubbliche, come / var, sono separate
partizioni, un attacco riuscito può riempire una partizione senza chiudere il file
intero computer. Poiché / var è il percorso predefinito per i server Web e FTP,
e dovrebbe contenere molti dati, spesso interi dischi rigidi vengono assegnati al file
/ var filesystem da solo.
■ Protezione dai file system danneggiati: se si dispone di un solo file system (/),
la sua corruzione può danneggiare l'intero sistema Linux. Corruzione di
una partizione più piccola può essere più facile da riparare e spesso consente al computer di rimanere all'interno
servizio durante la correzione.

La Tabella 9.4 elenca alcune directory che potresti considerare di separare


partizioni del file system.

TABELLA 9.4 Assegnazione di partizioni a directory particolari

Directory Spiegazione 9
/avvio A volte, il BIOS nei PC meno recenti può accedere solo ai primi 1.024 cilindri di
il tuo disco rigido. Per assicurarti che le informazioni nella tua directory / boot siano
accessibile al BIOS, creare una partizione del disco separata (di circa 500 MB) per
/avvio. Anche con diversi kernel installati, raramente c'è un motivo per / boot
essere maggiore di 500 MB.

/ usr Questa struttura di directory contiene la maggior parte delle applicazioni e delle utilità disponibili per
Utenti Linux. La teoria originale era che se / usr fosse su una partizione separata, tu
potrebbe montare quel filesystem in sola lettura dopo che il sistema operativo era stato
installato. Ciò impedirebbe agli aggressori di rimuovere importanti applicazioni di sistema
o sostituirli con le loro versioni che potrebbero causare problemi di sicurezza. UN
La partizione separata / usr è utile anche se hai workstation senza disco sul tuo locale
Rete. Usando NFS, puoi condividere / usr sulla rete con quelle workstation.

Continua

223

Pagina 264
Parte III: diventare un amministratore di sistema Linux

TABELLA 9.4 (continua)

Directory Spiegazione

/ var Le directory FTP (/ var / ftp) e del server web (/ var / www) sono, per impostazione predefinita, in molti
Sistemi Linux, archiviati in / var. Avere una partizione / var separata può impedire un file
attaccare queste strutture danneggiando o riempiendo l'intero disco rigido.

/casa Poiché le directory degli account utente si trovano in questa directory, con estensione
un account separato / domestico può impedire a un utente sconsiderato di riempire l'intero disco
disco. Inoltre separa comodamente i dati utente dal tuo sistema operativo (per easy
backup o nuove installazioni). Spesso / home viene creato come volume logico LVM, quindi esso
può crescere di dimensioni con l'aumentare delle richieste degli utenti. Possono anche essere assegnate quote utente a
limitare l'uso del disco.

/ tmp Proteggere / tmp dal resto del disco rigido posizionandolo su una partizione separata
può garantire che le applicazioni che devono scrivere su file temporanei in / tmp possano farlo
completare la loro elaborazione, anche se il resto del disco si riempie.

Sebbene le persone che usano i sistemi Linux casualmente raramente vedono la necessità di molte partizioni,
coloro che mantengono e occasionalmente devono ripristinare sistemi di grandi dimensioni sono grati quando il file
il sistema che devono riparare ha diverse partizioni. Partizioni multiple possono limitare gli effetti
di danni intenzionali (come attacchi denial-of-service), problemi da utenti errati e
danneggiamento accidentale del filesystem.

Utilizzo del boot loader GRUB


Un boot loader ti consente di scegliere quando e come avviare i sistemi operativi installati sul tuo
dischi rigidi del computer. Il GRand Unified Bootloader (GRUB) è il boot loader più popolare
utilizzato per i sistemi Linux installati. Oggi sono disponibili due versioni principali di GRUB:

■ GRUB Legacy (versione 1): al momento della stesura di questo documento, questa versione di GRUB è utilizzata da
impostazione predefinita per avviare i sistemi operativi Red Hat Enterprise Linux (almeno tramite RHEL
6.5). È stato utilizzato anche con le versioni precedenti di Fedora e Ubuntu.
■ GRUB 2 : vengono utilizzate le versioni correnti di Red Hat Enterprise Linux, Ubuntu e Fedora
GRUB 2 come boot loader predefinito.

La versione precedente di GRUB è descritta nelle sezioni seguenti. Dopodiché, c'è un file
descrizione di GRUB 2.

SYSLINUX è un altro boot loader che incontrerai con i sistemi Linux. I boot loader SYSLINUX non lo sono in genere
utilizzato per i sistemi Linux installati. Tuttavia, SYSLINUX è comunemente usato come boot loader per CD e DVD Linux.
SYSLINUX è particolarmente utile per avviare immagini CD ISO9660 (isolinux) e chiavette USB (syslinux) e per lavorare
su hardware più vecchio o per l'avvio PXE (pxelinux) di un sistema in rete.

224

Pagina 265

Capitolo 9: Installazione di Linux

Utilizzo di GRUB Legacy (versione 1)


Con più sistemi operativi installati e diverse partizioni configurate, come funziona il tuo file
il computer sa quale sistema operativo avviare? Per selezionare e gestire quale partizione è
avviato e come viene avviato, è necessario un boot loader. Il boot loader installato da
l'impostazione predefinita con i sistemi Red Hat Enterprise Linux è GRand Unified Boot loader (GRUB).

GRUB Legacy è un boot loader GNU (http://www.gnu.org/software/grub) che offre


le seguenti caratteristiche:

■ Supporto per più formati eseguibili.


■ Supporto per sistemi operativi ad avvio multiplo (come Fedora, RHEL, FreeBSD, NetBSD,
OpenBSD e altri sistemi Linux).
■ Supporto per sistemi operativi non multi-boot (come Windows 95, Windows 98,
Windows NT, Windows ME, Windows XP, Windows Vista, Windows 7 e OS / 2) tramite
una funzione di caricamento a catena. Il caricamento a catena è l'atto di caricare un altro boot loader
(presumibilmente uno specifico per il sistema operativo proprietario) da GRUB a
avviare il sistema operativo selezionato.
■ Supporto per più tipi di file system.
■ Supporto per la decompressione automatica delle immagini di avvio.
■ Supporto per il download di immagini di avvio da una rete.

Al momento della stesura di questo documento, la versione 1 di GRUB è utilizzata in Red Hat Enterprise Linux 6.
La versione 2 di GRUB è utilizzata in Fedora, Ubuntu, Red Hat Enterprise Linux 7 e altri Linux
distribuzioni. Questa sezione descrive come utilizzare GRUB versione 1.

Per maggiori informazioni su come funziona GRUB, dalla riga di comando digita man grub o info
grub . Il comando info grub contiene maggiori dettagli su GRUB.

Avvio con GRUB Legacy


Quando installi Linux, in genere ti viene data la possibilità di configurare le informazioni
necessario per avviare il computer (con uno o più sistemi operativi) con l'impostazione predefinita
9
boot loader. GRUB è molto flessibile da configurare, quindi ha un aspetto diverso in diversi Linux
distribuzioni.

Con il boot loader GRUB fornito con Red Hat Enterprise Linux installato in
record di avvio principale del disco rigido, quando il BIOS avvia il boot loader uno dei file
possono succedere diverse cose:

■ Predefinito:se non si esegue alcuna operazione, il sistema operativo predefinito viene avviato automaticamente dopo
cinque secondi. (Il timeout è impostato dal valore di timeout, in secondi, nel file grub.
conf o menu.lst file.)
■ Selezionare un sistema operativo: premere un tasto qualsiasi prima che scadano i cinque secondi e
viene visualizzato un elenco di titoli tra cui scegliere. I titoli possono rappresentare uno o più kernel

225

Pagina 266

Parte III: diventare un amministratore di sistema Linux

per lo stesso sistema Linux. Oppure possono rappresentare Windows, Ubuntu o altro
sistemi operativi. Utilizzare i tasti freccia su e giù per evidenziare qualsiasi titolo e
premere Invio per avviare il sistema operativo.
■ Modifica il processo di avvio: se si desidera modificare una delle opzioni utilizzate durante
durante il processo di avvio, utilizzare i tasti freccia per evidenziare il sistema operativo desiderato
e digita e per selezionarlo. Segui la procedura successiva per modificare le opzioni di avvio
temporaneamente.

Se desideri modificare le opzioni di avvio in modo che abbiano effetto ogni volta che avvii il tuo file
computer, vedere la sezione sulla modifica permanente delle opzioni di avvio. Modifica di quelle opzioni
implica la modifica del file /boot/grub/grub.conf.

Modifica temporanea delle opzioni di avvio


Dalla schermata di avvio di GRUB Legacy, è possibile scegliere di modificare o aggiungere opzioni di avvio per
sessione di avvio corrente. Su alcuni sistemi Linux, il menu è nascosto, quindi devi premere
il tasto Tab o un altro tasto (prima che vengano superati alcuni secondi di timeout) per visualizzare il file
menù. Quindi selezionare il sistema operativo desiderato (utilizzando i tasti freccia) e digitare e
(come descritto in precedenza).

Tre righe nell'esempio della schermata di modifica di GRUB Legacy identificano il processo di avvio per
il sistema operativo che hai scelto. Ecco un esempio di quelle righe (a causa della lunghezza di
la riga del kernel, è rappresentata qui come tre righe):

radice (hd0,0)
kernel /vmlinuz-2.6.32-131.17.1.el6.x86_64 ro
root = / dev / mapper / vg_myhost-lv_root
rd_NO_MD rd_NO_DM
LANG = en_US.UTF-8 SYSFONT = latarcyrheb-sun16 KEYBOARDTYPE = pc
KEYTABLE = us rhgb quiet crashkernel = auto
initrd /initramfs-2.6.32-131.17.1.el6.x86_64.img

La prima riga (che inizia con root) mostra che la voce per il boot loader GRUB è attiva
la prima partizione del primo disco rigido (hd0,0). GRUB rappresenta il disco rigido come hd,
indipendentemente dal fatto che si tratti di un disco SCSI, IDE o di altro tipo. In GRUB Legacy, conti e basta
il numero di unità e il numero di partizione, a partire da zero (0).

La seconda riga dell'esempio (che inizia con il kernel) identifica l'immagine di avvio del kernel
(/boot/vmlinuz-2.6.32-131.17.1.el6.x86_64) e diverse opzioni. Le opzioni
identifica la partizione come inizialmente caricata ro (sola lettura) e la posizione della radice
filesystem su una partizione con l'etichetta che inizia come root = / dev / mapper / vg_myhost-lv_
radice. La terza riga (che inizia con initrd) identifica la posizione del disco RAM iniziale,
che contiene moduli e strumenti aggiuntivi necessari durante il processo di avvio.

Se hai intenzione di modificare una qualsiasi delle righe relative al processo di avvio, probabilmente lo farai
modificare solo la seconda riga per aggiungere o rimuovere le opzioni di avvio. Segui questi passaggi da fare
solo quello:

226

Pagina 267

Capitolo 9: Installazione di Linux

1. Dopo aver interrotto il processo di avvio di GRUB e aver digitato e per selezionare la voce di avvio
desidera, posizionare il cursore sulla riga del kernel e digitare e .
2. Aggiungere o rimuovere opzioni dopo il nome dell'immagine di avvio. Puoi usare un file
set minimo di funzionalità di modifica della riga di comando della shell bash per modificare la riga. Puoi
usa anche il completamento del comando (digita parte di un nome di file e premi Tab per completare
it). Ecco alcune opzioni che potresti voler aggiungere o eliminare:
■ Avvio in una shell . Se hai dimenticato la password di root o se il processo di avvio si blocca,
puoi avviare direttamente una shell aggiungendo init = / bin / sh alla riga di avvio.
■ Selezionare un livello di esecuzione . Se vuoi avviare un particolare livello di esecuzione, puoi aggiungere
il livello di esecuzione che si desidera alla fine della riga del kernel. Ad esempio, per avere RHEL
avviare per eseguire il livello 3 (multiutente più modalità di rete), aggiungere 3 alla fine del file
linea kernel. Puoi anche avviare in modalità utente singolo (1), modalità multiutente (2) o X
Modalità GUI (5). Il livello 3 è una buona scelta se la tua GUI è temporaneamente rotta. Livello 1
va bene se hai dimenticato la password di root.
■ Guarda i messaggi di avvio . Per impostazione predefinita, vedrai una schermata iniziale all'avvio di Linux.
Se vuoi vedere i messaggi che mostrano le attività in corso all'avvio del sistema
su, puoi rimuovere l'opzione rhgb quiet dalla riga del kernel. Questo te lo permette
visualizzare i messaggi mentre scorrono. Premendo Esc durante l'avvio si ottiene lo stesso risultato.

3. Premere Invio per tornare alla schermata di modifica.

4. Digitare b per avviare il computer con le nuove opzioni. La prossima volta che avvierai il tuo
computer, le nuove opzioni non verranno salvate. Per aggiungere opzioni in modo che vengano salvate
in modo permanente, vedere la sezione successiva.

Modifica permanente delle opzioni di avvio


È possibile modificare le opzioni che hanno effetto ogni volta che si avvia il computer modificando
il file di configurazione di GRUB. In RHEL e altri sistemi Linux, centri di configurazione GRUB
nel file /boot/grub/grub.conf o /boot/grub/menu.lst.

Il file /boot/grub/grub.conf viene creato quando installi Linux. Ecco un esempio di


quel file per RHEL: 9
# grub.conf generato da anaconda
#
# Nota che non devi rieseguire grub dopo aver apportato modifiche al file
# AVVISO: hai una partizione / boot. Ciò significa che
# tutti i percorsi del kernel e initrd sono relativi a / boot /, ad es.
# root (hd0,0)
# kernel / vmlinuz-version ro root = / dev / mapper / vg_joke-lv_root
# initrd /initrd-[generic-”version.img
# boot = / dev / sda
predefinito = 0
timeout = 5
splashimage = (hd0,0) /grub/splash.xpm.gz

227

Pagina 268
Parte III: diventare un amministratore di sistema Linux

hiddenmenu
titolo Red Hat Enterprise Linux (2.6.32-131.17.1.el6.x86_64)
radice (hd0,0)
kernel /vmlinuz-2.6.32-131.17.1.el6.x86_64 ro
root = / dev / mapper / vg_myhost-lv_root rd_NO_MD rd_NO_DM
LANG = en_US.UTF-8 SYSFONT = latarcyrheb-sun16 KEYBOARDTYPE = pc
KEYTABLE = us rhgb quiet crashkernel = auto
initrd /initramfs-2.6.32-131.17.1.el6.x86_64.img
titolo Windows XP
rootnoverify (hd0,1)
caricatore a catena +1

La riga default = 0 indica che la prima partizione in questo elenco (in questo caso, Red Hat
Enterprise Linux) viene avviato per impostazione predefinita. Il timeout della riga = 5 fa sì che GRUB si fermi per cinque
secondi prima di avviare la partizione predefinita. (Questo è quanto tempo hai per premere
e se si desidera modificare la riga di avvio o premere i tasti freccia per selezionare un'operazione diversa
sistema da avviare.)

La riga splashimage cerca nella prima partizione del primo disco (hd0,0) il file
partizione di avvio (in questo caso / dev / sda1). GRUB carica splash.xpm.gz come immagine
nella schermata iniziale (/boot/grub/splash.xpm.gz). La schermata iniziale viene visualizzata come
sfondo della schermata di avvio.

GRUB indica le partizioni del disco utilizzando la seguente notazione: (hd0,0). Il primo numero rappresenta il disco e il file
secondo è la partizione su quel disco. Quindi (hd0,1) è la seconda partizione (1) sul primo disco (0).

Le due partizioni avviabili in questo esempio sono Red Hat Enterprise Linux e Windows XP.
Le righe del titolo per ciascuna di queste partizioni sono seguite dal nome visualizzato nel file
schermata di avvio per rappresentare ciascuna partizione.

Per il sistema RHEL, la riga principale indica la posizione della partizione di avvio come
seconda partizione sul primo disco. Quindi, per trovare il kernel avviabile (vmlinuz- *) e il file
immagine di avvio del disco RAM iniziale initrd che viene caricata (initrd- *), GRUB monta hd0,0 come file
la radice dell'intero filesystem (rappresentata da / dev / mapper / vg_myhost-lv_root
e montato come /). Ci sono anche altre opzioni sulla riga del kernel.

Per la partizione di Windows XP, la riga rootnoverify indica che GRUB non dovrebbe
prova a montare la partizione. In questo caso, Windows XP si trova sulla prima partizione del primo
disco rigido (hd0,1) o / dev / sda2. Invece di montare la partizione e passare le opzioni
al nuovo sistema operativo, la riga chainloader +1 dice a GRUB di passare l'avvio di
il sistema operativo a un altro boot loader. Il +1 indica che il primo settore del
la partizione viene utilizzata come boot loader. (È possibile impostare in modo simile l'avvio di Windows Vista o
Sistema operativo Windows 7).

228

Pagina 269

Capitolo 9: Installazione di Linux

I sistemi operativi Microsoft richiedono l'utilizzo del chainloader per avviarli da GRUB perché GRUB
non offre supporto nativo per i sistemi operativi Windows.

Se si apportano modifiche al file /boot/grub/grub.conf, non è necessario caricarlo


quei cambiamenti. GRUB rileva automaticamente tali modifiche quando riavvii il computer.

Aggiunta di una nuova immagine di avvio di GRUB


Potresti avere immagini di avvio diverse per i kernel che includono funzionalità diverse. Nella maggior parte dei casi
casi, l'installazione di un nuovo pacchetto del kernel configura automaticamente grub.conf per usare quello nuovo
kernel. Tuttavia, se vuoi aggiungere manualmente un kernel, ecco la procedura per la modifica
il file grub.conf in Red Hat Enterprise Linux per poter avviare il kernel:

1. Copia la nuova immagine dalla directory in cui è stata creata (come / usr /
src / kernels / linux-2.6.25-11 / arch / i386 / boot) nella directory / boot.
Assegna al file un nome che rifletta il suo contenuto, ad esempio bz-2.6.25-11. Per
esempio:
# cd /usr/src/Linux-2.6.25.11/arch/i386/boot
# cp bzImage /boot/bz-2.6.25-11
2. Aggiungere diverse righe al file /boot/grub/grub.conf in modo che l'immagine possa essere
avviato all'avvio, se selezionato. Per esempio:
titolo Red Hat Enterprise Linux 6.3 (My own IPV6 build)
radice (hd0,4)
kernel /bz-2.6.25-11 ro root = / dev / sda5
initrd /initrd-2.6.25-11.img

3. Riavvia il computer.

4. Quando viene visualizzata la schermata di avvio di GRUB, spostare il cursore sul titolo che rappresenta il file
nuovo kernel e premere Invio.
9
Il vantaggio di questo approccio, rispetto alla copia della nuova immagine di avvio sulla vecchia
uno, è che se il kernel non si avvia, puoi sempre tornare indietro e riavviare il vecchio kernel.
Quando sei sicuro che il nuovo kernel funzioni correttamente, puoi usarlo per sostituirlo
il vecchio kernel o forse solo rendere il nuovo kernel la definizione di avvio predefinita.

Usare GRUB 2
GRUB 2 rappresenta un'importante riscrittura del progetto GRUB Legacy. È stato adottato come
il boot loader predefinito per Red Hat Enterprise Linux 7, Fedora e Ubuntu. Il sindaco
funzione del boot loader GRUB 2 è ancora quella di trovare e avviare il sistema operativo desiderato,
ma ora molta più potenza e flessibilità sono incorporate negli strumenti e nei file di configurazione che
arrivarci.

229

Pagina 270

Parte III: diventare un amministratore di sistema Linux

In GRUB 2, il file di configurazione è ora denominato /boot/grub2/grub.cfg (in Fedora e


altri sistemi Linux che utilizzano GRUB 2). Tutto, dal contenuto di grub.cfg al modo
grub.cfg viene creato è diverso dal file GRUB Legacy grub.conf. Qui ce ne sono alcuni
cose che dovresti sapere sul file grub.cfg:

■ Invece di modificare grub.cfg manualmente o aggiungere pacchetti RPM del kernel,


grub.cfg viene generato dal contenuto del file / etc / default / grub e
la directory /etc/grub.d. È necessario modificare o aggiungere a questi file per configurare
GRUB 2 te stesso.
■ Il file grub.cfg può contenere sintassi di scripting, incluse cose come func-
zioni, cicli e variabili.
■I nomi dei dispositivi necessari per identificare la posizione dei kernel e dei dischi RAM iniziali possono
essere identificati in modo più affidabile utilizzando etichette o identificatori univoci universali (UUID).
Ciò impedisce la possibilità di modificare un dispositivo disco come / dev / sda
a / dev / sdb quando aggiungi un nuovo disco (il che risulterebbe nel kernel non
essere trovato).

I commenti nel file grub.cfg indicano la provenienza del contenuto. Per esempio,
le informazioni generate dal file /etc/grub.d/00_header vengono subito dopo
riga di commento:

### BEGIN /etc/grub.d/00_header ###

All'inizio della sezione 00_header, ci sono alcune funzioni, come quelle that
caricare i driver per far funzionare il display video. Dopodiché, la maggior parte delle sezioni in
Il file grub.cfg è costituito da voci di menu. Quello che segue è un esempio di una voce di menu da
il file grub.cfg che puoi selezionare per avviare Fedora 20 all'avvio del sistema:

voce di menu 'Fedora (3.16.3-200.fc20.x86_64)' --class fedora


--class gnu-linux --class gnu --class os ... {
load_video
set gfxpayload = keep
insmod gzio
insmod part_msdos
insmod ext2
imposta root = '(hd0, msdos1)'
cerca --no-floppy --fs-uuid --set = root
eb31517f-f404-410b-937e-a6093b5a5380

linux /vmlinuz-3.16.3-200.fc20.x86_64
root = / dev / mapper / fedora_fedora20-root ro
rd.lvm.lv = fedora_fedora20 / swap
vconsole.font = latarcyrheb-sun16
rd.lvm.lv = fedora_fedora20 / root rhgb quiet
LANG = en_US.UTF-8
initrd /initramfs-3.16.3-200.fc20.x86_64.img
}
230

Pagina 271

Capitolo 9: Installazione di Linux

La voce di menu per questa selezione appare come Fedora (3.16.3-200.fc20.x86_64) nel file
Menu di avvio di GRUB 2. Le voci --class su quella riga consentono a GRUB 2 di raggruppare le voci di menu
in classi (in questo caso, lo identifica come un tipo di sistema fedora, gnu-linux, gnu, os). Il
le righe successive caricano i driver video e i driver del file system. Successivamente, le linee identificano la posizione
del file system radice.

La riga linux mostra la posizione del kernel (/boot/vmlinuz-3.16.3-200.fc20.x86_64),


seguito dalle opzioni passate al kernel.

Ci sono molte, molte altre funzionalità di GRUB 2 che puoi imparare se vuoi scavare
più in profondità nel boot loader del tuo sistema. La migliore documentazione per GRUB 2 è disponibile su
il sistema Fedora; digita info grub2 nella shell. La voce di informazioni per GRUB 2 fornisce molte
di informazioni per l'avvio di diversi sistemi operativi, scrivendo la propria configurazione
file, lavorare con i file immagine di GRUB, impostare le variabili d'ambiente di GRUB e lavorare
con altre funzionalità di GRUB.

Sommario
Sebbene ogni distribuzione Linux includa un metodo di installazione diverso, è necessario
svolgere molte attività comuni, indipendentemente dal sistema Linux installato. Per ogni Linux
sistema, è necessario affrontare i problemi di partizionamento del disco, opzioni di avvio e configurazione
caricatori di avvio.

In questo capitolo, hai seguito le procedure di installazione per Fedora (usando un live
media di installazione) e Red Hat Enterprise (dal supporto di installazione). Hai imparato come
la distribuzione di Linux in ambienti cloud può differire dai metodi di installazione tradizionali per
combinando metadati con file immagine del sistema operativo di base precompilati per l'esecuzione su pool di grandi dimensioni
di risorse di calcolo.

Il capitolo ha trattato anche argomenti di installazione speciali, incluso l'utilizzo delle opzioni di avvio e del disco
partizionamento. Con il tuo sistema Linux ora installato, il Capitolo 10 descrive come iniziare
9
gestire il software sul tuo sistema Linux.

Esercizi
Usa questi esercizi per verificare la tua conoscenza dell'installazione di Linux. Ti consiglio di farlo
questi esercizi su un computer che non ha sistema operativo o dati su di esso
temeremmo di perdere (in altre parole, uno che non ti dispiace cancellare). Se hai un computer
che ti permette di installare sistemi virtuali, che è un modo sicuro per fare questi esercizi come
bene. Questi esercizi sono stati testati utilizzando un supporto Fedora 21 Live e un server RHEL 7
DVD di installazione.

231

Pagina 272

Parte III: diventare un amministratore di sistema Linux

1. Inizia l'installazione dal supporto Fedora Live, utilizzando tutte le opzioni predefinite quante
possibile.
2. Dopo aver installato completamente Fedora, aggiorna tutti i pacchetti sul sistema.

3. Avviare l'installazione da un DVD di installazione RHEL, ma fare in modo che l'installazione venga eseguita
in modalità testo. Completa l'installazione come preferisci.

4. Avviare l'installazione da un DVD di installazione RHEL e impostare il partizionamento del disco come
segue: 400 MB / boot, / (3 GB), / var (2 GB) e / home (2 GB). Lascia il resto come
spazio inutilizzato.

Il completamento dell'esercizio 4 elimina infine tutto il contenuto sul disco rigido. Se vuoi usare questo esercizio solo per esercitarti
tice di partizionamento, è possibile riavviare il computer prima di fare clic su Accetta modifiche alla fine di questa procedura
senza danneggiare il tuo disco rigido. Se vai avanti e partiziona il tuo disco, presumi che tutti i dati che non hai
esplicitamente modificato è stato eliminato.

232

Pagina 273

CAPITOLO

10
Acquisizione e gestione del software
IN QUESTO CAPITOLO
Installazione del software dal desktop

Lavorare con il packaging RPM

Usare yum per gestire i pacchetti

Usare rpm per lavorare con i pacchetti

Installazione di software in azienda

I il software è confezionato e gestito per ottenere il software desiderato. Quelle distribuzioni hanno
ottimi strumenti di installazione software che puntano automaticamente a enormi archivi di software. Appena
distribuzioni n Linux come Fedora e Ubuntu, non hanno bisogno di sapere molto su come
pochi clic e stai utilizzando il software in poco più tempo di quello necessario per scaricarlo.

Il fatto che la gestione del software Linux sia così facile in questi giorni è un merito per la comunità Linux,
che ha lavorato diligentemente per creare formati di packaging, strumenti di installazione complessi e
pacchetti software di alta qualità. Non solo è facile ottenere il software, ma una volta installato, lo è
facile da gestire, interrogare, aggiornare e rimuovere.

Questo capitolo inizia descrivendo come installare il software in Fedora usando il nuovo software grafico
strumento di installazione. Se stai installando solo alcune applicazioni desktop sul tuo sistema desktop,
potresti non aver bisogno di molto di più e occasionali aggiornamenti di sicurezza.

Per approfondire la gestione del software Linux, descriverò in seguito cosa compone i pacchetti software Linux
(confronto di pacchetti formattati deb e rpm), componenti di gestione del software sottostanti e
comandi (yum e rpm) per la gestione del software in Fedora e Red Hat Enterprise Linux. Quello è
seguito da una descrizione di come gestire i pacchetti software nell'informatica aziendale.

Gestione del software sul desktop


In Fedora 21, il Fedora Project include la nuova applicazione software per sostituire il PackageKit Aggiungi /
Rimuovi la finestra del software. La finestra Software offre un modo più intuitivo di scegliere e installare
applicazioni desktop che non sono in linea con le pratiche di installazione tipiche di Linux. Con il software
finestra, il software più piccolo che installi è un'applicazione. Con Linux, installi i pacchetti.

233

Pagina 274

Parte III: diventare un amministratore di sistema Linux

La Figura 10.1 mostra un esempio della finestra Software.

FIGURA 10.1

Installa e gestisci i pacchetti software dalla finestra Software.

Dalla finestra Software, è possibile selezionare le applicazioni che si desidera installare dal file
Gruppo Picks (una manciata di applicazioni popolari), scegli tra categorie di applicazioni
(Internet, giochi, audio, video e così via) oppure cerca per nome o descrizione dell'applicazione.
Selezionare il pulsante Installa per fare in modo che la finestra Software scarichi e installi tutti i file
pacchetti software necessari per far funzionare l'applicazione.

Altre caratteristiche di questa finestra consentono di vedere tutte le applicazioni installate (scheda Installate) o visualizzare
un elenco di applicazioni che dispongono di pacchetti aggiornati disponibili per l'installazione (scheda Aggiornamenti).
Se desideri rimuovere un'applicazione installata, fai semplicemente clic sul pulsante Rimuovi accanto al file
nome del pacchetto.

Se stai usando Linux esclusivamente come sistema desktop, dove vuoi scrivere documenti,
riprodurre musica e svolgere altre attività desktop comuni, la finestra del software potrebbe essere tutto te stesso

234
Pagina 275

Capitolo 10: Acquisizione e gestione del software

è necessario ottenere il software di base desiderato. Per impostazione predefinita, il tuo sistema si connette al main
Repository software Fedora e ti dà accesso a centinaia di applicazioni software.

Ma anche se la finestra Software ti consente di scaricare e installare centinaia di applicazioni


dal repository software Fedora, quel repository in realtà contiene decine di migliaia
di pacchetti software. Quali pacchetti non puoi vedere da quel repository, quando potrebbe
vuoi quegli altri pacchetti e come puoi accedere a quei pacchetti (oltre a
pacchetti da altri repository software)?

Andare oltre la finestra del software


Se gestisci un singolo sistema desktop, potresti essere abbastanza soddisfatto del file
centinaia di pacchetti che puoi trovare attraverso la finestra Software. Versioni open source
dei tipi più comuni di applicazioni desktop sono disponibili tramite il Software
dopo avere una connessione Internet da Fedora a Internet.

Tuttavia, ecco alcuni esempi del motivo per cui potresti voler andare oltre ciò che puoi fare
con la finestra Software:

■ Altri repository: Fedora e Red Hat Enterprise Linux distribuiscono solo aperti
sorgente, software liberamente distribuibile. Potresti voler installare alcuni commer-
software cial (come Adobe Flash Player) o software non libero (disponibile da
repository come rpmfusion.org).
■ Oltre le applicazioni desktop: decine di migliaia di pacchetti software in
I repository Fedora non sono disponibili tramite la finestra Software. Molti di questi
i pacchetti non sono affatto associati ad applicazioni grafiche. Ad esempio, alcuni
i pacchetti contengono puri strumenti della riga di comando, servizi di sistema, strumenti di programmazione o
documentazione che non viene visualizzata nella finestra Software.
■ Flessibilità: anche se potresti non saperlo, quando installi un'applicazione tramite
nella finestra Software, stai effettivamente installando più pacchetti RPM. Questo set di
packages può essere solo un set di pacchetti predefinito che include documentazione, caratteri extra,
plug-in software aggiuntivi o più language pack che potresti desiderare o meno.
Con i comandi yum e rpm, hai maggiore flessibilità con esattamente quali pacchetti
relativo a un'applicazione o altra funzione software è installato sul sistema.
■ Query più complesse: utilizzando comandi come yum e rpm, è possibile ottenere
informazioni dettagliate su pacchetti, gruppi di pacchetti e repository.
■ Convalida del software: utilizzando rpm e altri strumenti, è possibile verificare se a
il pacchetto firmato è stato modificato prima dell'installazione o se uno qualsiasi dei file
i componenti di un pacchetto sono stati manomessi dall'installazione del pacchetto.
10
■ Gestione dell'installazione del software: sebbene la finestra Software funzioni bene se
stai installando software desktop su un unico sistema, non è scalabile bene per
gestione del software su più sistemi. Altri strumenti sono costruiti sopra il numero di giri
facilità per farlo.

235

Pagina 276

Parte III: diventare un amministratore di sistema Linux

Prima di avviare alcuni degli strumenti della riga di comando per l'installazione e la gestione
software in Linux, la sezione successiva descrive come il packaging e il pacchetto sottostanti
i sistemi di gestione in Linux funzionano. In particolare, mi concentro sul packaging RPM così come viene utilizzato in
Fedora, Red Hat Enterprise Linux e distribuzioni correlate, nonché pacchetti Deb, che
sono associati a Debian, Ubuntu, Linux Mint e alle relative distribuzioni.
Comprensione di Linux RPM e DEB
Pacchetto software
Sui primi sistemi Linux, se volessi aggiungere software, dovresti prendere il codice sorgente
da un progetto che lo ha prodotto, compilarlo in binari eseguibili e rilasciarlo nel tuo file
computer. Se fossi fortunato, qualcuno l'avrebbe già compilato in una forma che lo avrebbe fatto
eseguito sul tuo computer.

La forma del pacchetto potrebbe essere un tarball , contenente file eseguibili (comandi),
documentazione, file di configurazione e librerie. (Un tarball è un singolo file in cui più
i file vengono raccolti insieme per una comoda memorizzazione o distribuzione.) Quando si installa il software
da un tarball, i file da quel tarball potrebbero essere distribuiti sul vostro sistema Linux in formato
directory appropriate (/ usr / share / man, / etc, / bin e / lib, solo per citarne alcune).

Anche se è facile creare un tarball e rilasciare un set di software su Linux


sistema, questo metodo di installazione del software rende difficile fare queste cose:

■ Ottieni il software dipendente: dovresti sapere se il software eravate


l'installazione dipendeva dall'installazione di altro software affinché il software funzionasse.
Quindi dovresti rintracciare quel software e installare anche quello (che potrebbe
stesso ha alcune dipendenze).
■ Elenca il software: anche se conoscessi il nome del comando, potresti non conoscerlo
sapere dove si trovavano la documentazione o i file di configurazione quando hai guardato
per dopo.
■ Rimuovere il software: a meno che tu non abbia mantenuto il tarball originale o un elenco di file, tu
non saprebbe dove fossero tutti i file quando è arrivato il momento di rimuoverli. Anche se
sapevi, avresti dovuto rimuoverli singolarmente.
■ Aggiorna il software: i tarball non sono progettati per contenere metadati relativi a
contenuti che contengono. Dopo aver installato il contenuto di un tarball, potresti non farlo
avere un modo per sapere quale versione del software stai utilizzando, rendendolo difficile
rintraccia i bug e ottieni nuove versioni del tuo software.

Per affrontare questi problemi, i pacchetti sono passati da semplici tarball a più complessi
confezione. Con solo poche eccezioni degne di nota (come Gentoo, Slackware e pochi
altri), la maggior parte delle distribuzioni Linux è passata a uno dei due formati di packaging: DEB
e RPM:

236

Pagina 277

Capitolo 10: Acquisizione e gestione del software

■ Pacchettizzazione DEB (.deb) : il progetto Debian GNU / Linux ha creato pacchettizzazione .deb,
che viene utilizzato da Debian e altre distribuzioni basate su Debian (Ubuntu,
Linux Mint, KNOPPIX e così via). Utilizzando strumenti come apt-get e dpkg, Linux
le distribuzioni potrebbero installare, gestire, aggiornare e rimuovere software.
■ Pacchetto RPM (.rpm): originariamente denominato Red Hat Package Manager, ma in seguito
rinominato in modo ricorsivo RPM Package Manager, RPM è il formato di pacchetto preferito
per SUSE, le distribuzioni Red Hat (RHEL e Fedora) e quelle basate su Red Hat
distribuzioni (CentOS, Oracle Linux e così via). Il comando rpm è stato il primo
strumento per gestire gli RPM, ma in seguito è stato aggiunto yum per migliorare la funzionalità RPM.

Per la gestione del software sui singoli sistemi, ci sono sostenitori su entrambi i lati del
Discussione tra RPM e DEB con punti validi. Sebbene RPM sia il formato preferito per la gestione
Installazione, aggiornamenti e manutenzione di software di qualità aziendale, DEB è molto popolare
tra molti appassionati di Linux. Questo capitolo copre sia RPM (Fedora e Red Hat
Enterprise Linux) e (in una certa misura) gestione di pacchetti e software DEB.

Capire il packaging DEB


I pacchetti software Debian contengono più file e metadati relativi ad alcuni set di software in formato
il formato di un file di archivio ar. I file possono essere eseguibili (comandi), file di configurazione,
documentazione e altri elementi software. I metadati includono cose come dipendenze
cies, licenze, dimensioni dei pacchetti, descrizioni e altre informazioni Riga di comando multipla e
sono disponibili strumenti grafici per lavorare con i file DEB in Ubuntu, Debian e altri Linux
distribuzioni. Alcuni di questi includono quanto segue:

■ Ubuntu Software Center: selezionare l'icona Ubuntu Software Center da


Desktop Ubuntu. La finestra che appare ti permette di cercare applicazioni e
pacchetti desiderati cercando parole chiave o esplorando le categorie.
■ aptitude: il comando aptitude è uno strumento di installazione di pacchetti che fornisce
un menu orientato allo schermo che viene eseguito nella shell. Dopo aver eseguito il comando, usa
tasti freccia per evidenziare la selezione desiderata e premere Invio per selezionarla. Puoi
aggiornare i pacchetti, ottenere nuovi pacchetti o visualizzare i pacchetti installati.
■ apt *: esiste una serie di comandi apt (apt-get, apt-config, apt-cache e così
on) che puoi usare per gestire l'installazione del pacchetto.

Ubuntu Software Center è abbastanza intuitivo per trovare e installare i pacchetti. Tuttavia,
ecco alcuni esempi di comandi che possono aiutarti a installare e gestire i pacchetti con
comando apt *. In questo caso, sto cercando e installando il pacchetto vsftpd:

10
Si noti che i comandi apt * sono preceduti dal comando sudo in questi esempi. Questo perché lo è
pratica comune per un amministratore di Ubuntu per eseguire comandi amministrativi come un utente normale con privilegio sudo.

237

Pagina 278

Parte III: diventare un amministratore di sistema Linux

$ sudo apt-get update Ottieni le ultime versioni del pacchetto


$ sudo apt-search vsftpd Trova pacchetto per parola chiave (vsftpd)
$ sudo apt-cache mostra vsftpd Visualizza le informazioni su un pacchetto
$ sudo apt-get install vsftpd Installa il pacchetto vsftpd
$ sudo apt-get upgrade Aggiorna i pacchetti installati
$ sudo apt-cache pkgnames Elenca tutti i pacchetti installati

Ci sono molti altri usi dei comandi apt * che puoi provare. Se hai un file Ubuntu
installato, ti consiglio di eseguire man apt per capire cosa è il file
apt e i comandi correlati possono fare.

Capire il packaging RPM


Un pacchetto RPM è un consolidamento di file necessari per fornire una funzionalità, come un elaboratore di testi,
un visualizzatore di foto o un file server. All'interno di un RPM possono essere presenti i comandi, i file di configurazione e
documentazione che compone la funzione software. Tuttavia, un file RPM contiene anche metadati
che memorizza informazioni sul contenuto di quel pacchetto, da dove proviene il pacchetto, cosa
deve essere eseguito e altre informazioni.

Cosa c'è in un RPM?


Prima ancora di guardare all'interno di un RPM, puoi dire molto su di esso con il nome dell'RPM
pacchetto stesso. Per scoprire il nome di un pacchetto RPM attualmente installato sul tuo sistema
(come il browser Web Firefox), è possibile digitare quanto segue dalla shell in Fedora o
Red Hat Enterprise Linux:

# rpm -q firefox
firefox-24.7.0-1.el7_0.x86_64

Da questo, puoi dire che il nome di base del pacchetto è firefox. Il numero di rilascio
è 24,7 (assegnato dal produttore upstream di Firefox, il Mozilla Project). La versione
numero (assegnato dal packager, Red Hat, ogni volta che il pacchetto viene ricostruito contemporaneamente
numero di rilascio) è 1. Il pacchetto firefox è stato creato per Red Hat Enterprise Linux 7.0
(el7_0) ed è compilato per l'architettura x86 a 64 bit (x86_64).

Quando il pacchetto firefox è stato installato, probabilmente è stato copiato dall'installazione


supporto (come un CD o DVD) o scaricato da un repository YUM (ne parleremo più avanti).
Se ti fosse stato fornito il file RPM e si trovasse in una directory locale, il nome sarebbe
apparire come firefox-24.7.0-1.el7_0.x86_64.rpm e puoi installarlo da lì.
Indipendentemente da dove provenga, una volta installato, il nome e altre informazioni sul file
sono archiviati in un database RPM sulla macchina locale.

Per saperne di più su cosa c'è all'interno di un pacchetto RPM, puoi usare opzioni diverse da
comando rpm per interrogare il database RPM locale. Per esempio:

# rpm -qi firefox


Nome : firefox
Versione: 24.7.0

238
Pagina 279

Capitolo 10: Acquisizione e gestione del software

Versione: 1.el7_0
Architettura: x86_64
Data di installazione: Tue 29 Jul 2014 09:39:20 AM EDT
Gruppo: Applicazioni / Internet
Taglia : 92377616
Licenza: MPLv1.1 o GPLv2 + o LGPLv2 +
Firma: RSA / SHA256, lunedì 21 luglio 2014 05:09:41 PM EDT, ID chiave
199e2f91fd431d51
RPM di origine: firefox-24.7.0-1.el7_0.src.rpm
Data di costruzione: ven 18 luglio 2014 07:58:58 EDT
Host di compilazione: x86-030.build.eng.bos.redhat.com
Trasferimenti: (non trasferibile)
Packager: Red Hat, Inc. < http://bugzilla.redhat.com/bugzilla>
Produttore: Red Hat, Inc.
URL : http://www.mozilla.org/projects/firefox/
Riepilogo: browser Web Mozilla Firefox
Descrizione:
Mozilla Firefox è un browser web open source, progettato per gli standard
conformità, prestazioni e portabilità.

Oltre alle informazioni ottenute dal nome del pacchetto stesso, -qi (informazioni sulla query)
opzione consente di vedere chi ha creato il pacchetto (Red Hat, Inc.), quando è stato creato e quando
è stato installato. Il gruppo in cui si trova il pacchetto (Applicazioni / Internet), le sue dimensioni e l'estensione
sono elencate le licenze. Per saperne di più sul pacchetto, l'URL punta alla pagina del progetto
su Internet e il Riepilogo e la descrizione indicano per cosa viene utilizzato il pacchetto.

Da dove vengono gli RPM?


Il software incluso con le distribuzioni Linux o creato per funzionare con tali distribuzioni,
proviene da migliaia di progetti open source in tutto il mondo. Questi progetti, di cui
come fornitori di software a monte , di solito rendono il software disponibile a chiunque lo desideri,
in determinate condizioni di licenza.

Una distribuzione Linux prende il codice sorgente e lo compila in binari. Quindi raccoglie quelli
binari insieme a documentazione, file di configurazione, script e altri componenti
disponibile dal provider upstream.

Dopo aver raccolto tutti quei componenti nell'RPM, il pacchetto RPM viene firmato (quindi gli utenti
può testare la validità del pacchetto) e inserito in un repository di RPM per la distribuzione specifica
bution e architettura (x86 a 32 bit, x86 a 64 bit e così via). Il repository è posizionato su un file
CD o DVD di installazione o in una directory resa disponibile come server FTP, web o NFS.

Installazione di RPM
Quando installi inizialmente un sistema Fedora o Red Hat Enterprise Linux, molti individui
10
I pacchetti RPM costituiscono tale installazione. Dopo aver installato Linux, puoi aggiungere più pack-
età utilizzando la finestra Software (come descritto in precedenza). Fare riferimento al Capitolo 9 per informazioni
sull'installazione di Linux.

239

Pagina 280

Parte III: diventare un amministratore di sistema Linux

Il primo strumento sviluppato per l'installazione dei pacchetti RPM, tuttavia, è stato il comando rpm.
Utilizzando rpm, è possibile installare, aggiornare, interrogare, convalidare e rimuovere i pacchetti RPM. Il comando,
tuttavia, presenta alcuni importanti inconvenienti:

■ Dipendenze: la maggior parte dei pacchetti RPM dipende da altri software


(libreria, eseguibili e così via) installati sul sistema per quel pacchetto
lavorare. Quando si tenta di installare un pacchetto con rpm, se un pacchetto dipendente è
non installato, l'installazione del pacchetto fallisce, indicando quali componenti erano
necessario. A quel punto, devi scavare per trovare quale pacchetto lo conteneva
componente. Quando si va ad installarlo, quel pacchetto dipendente potrebbe avere esso stesso
dipendenze che devi installare per farlo funzionare. Questa situazione è riferita amorevolmente
come "inferno delle dipendenze" ed è spesso usato come esempio del motivo per cui i pacchetti DEB erano
meglio degli RPM. Gli strumenti di packaging DEB sono stati creati per risolvere automaticamente il pacchetto
molto prima che gli strumenti di pacchettizzazione relativi a RPM potessero farlo.
■ Posizione degli RPM : il comando rpm si aspetta che tu fornisca la posizione esatta
del file RPM quando si tenta di installarlo. In altre parole, dovresti
dare firefox-24.7.0-1.el7_0.x86_64.rpm come opzione se l'RPM fosse in
la directory corrente o http://example.com/firefox-24.7.0-1.el7_0.
x86_64.rpm se fosse su un server.

Man mano che Red Hat Linux e altre applicazioni basate su RPM crebbero in popolarità, divenne evidente
che qualcosa doveva essere fatto per rendere più conveniente l'installazione dei pacchetti. La risposta
era la struttura YUM.

Gestione dei pacchetti RPM con YUM


Il progetto Yellowdog Updater Modified (YUM) si proponeva di risolvere il problema della gestione
dipendenze con i pacchetti RPM. Il suo contributo principale è stato smettere di pensare all'RPM
pacchetti come singoli componenti e pensarli come parti di repository software più grandi.

Con i repository, il problema di gestire le dipendenze non ricadeva sulla persona che
ha installato il software, ma nella distribuzione Linux o nel distributore di software di terze parti
che rende disponibile il software. Quindi, ad esempio, spetterebbe al progetto Fedora
assicurati che ogni componente necessario per ogni pacchetto nella sua distribuzione Linux possa farlo
essere risolto da qualche altro pacchetto nel repository.

I repository potrebbero anche essere basati l'uno sull'altro. Quindi, ad esempio, il repository rpmfusion.org
potrebbe presumere che un utente avesse già accesso al repository principale di Fedora. Quindi, se un pacchetto
essendo installato da rpmfusion.org necessitava di una libreria o di un comando dalla Fedora principale
repository, il pacchetto Fedora potrebbe essere scaricato e installato contemporaneamente a te
installa il pacchetto rpmfusion.org.

I repository yum potrebbero essere messi in una directory su un server web (http: //), un server FTP
(ftp: //) o un supporto locale come un CD, DVD o una directory locale (file: //). I luoghi
di questi repository verrebbero quindi archiviati sul sistema dell'utente nel file /etc/yum.conf
o, più tipicamente, in file di configurazione separati nella directory /etc/yum.repos.d.

240

Pagina 281

Capitolo 10: Acquisizione e gestione del software

Capire come funziona lo yum


Questa è la sintassi di base del comando yum:

# yum [opzioni] comando

Usando questa sintassi, puoi trovare pacchetti, vedere le informazioni sui pacchetti, trovare informazioni su
gruppi di pacchetti, pacchetti di aggiornamento o eliminazione di pacchetti, per nominare alcune funzionalità.Con il
Repository YUM e configurazione in atto, un utente può installare un pacchetto semplicemente digitando
qualcosa come questo:

# yum installa Firefox

L'utente deve solo conoscere il nome del pacchetto (che potrebbe essere interrogato in diversi modi,
come descritto nella sezione "Ricerca di pacchetti" più avanti in questo capitolo). La struttura YUM
trova l'ultima versione di quel pacchetto disponibile dal repository, la scarica in
sistema locale e lo installa. La Figura 10.2 mostra cosa succede quando qualcuno installa un file
pacchetto utilizzando il comando yum.

Il risultato di un comando yum install package è che il pacchetto richiesto viene copiato
dal repository yum al sistema locale. I file nel pacchetto vengono inseriti in
filesystem dove necessario (/ etc, / bin, / usr / share / man e così via). Informazioni su
il pacchetto è memorizzato nel database RPM locale, dove può essere interrogato.

FIGURA 10.2

Attività locali e remote durante l'installazione di un RPM con YUM.

# yum installa Firefox

1 /etc/yum.conf

2 / etc / sysconfig / rhn / up2date


(Solo RHEL)

3 /etc/yum.repos.d/
myrepo.repo
[myrepo]
nome = Il mio repository
baseurl = http://myrepo.example.com/pub/myrepo

File system Linux 5


/ bin / etc / usr ...
4 Repository YUM
10
Database RPM 6 Pacchetti RPM
(memorizza metadati)

pacchetto rpm -q metadati

241

Pagina 282

Parte III: diventare un amministratore di sistema Linux

Per acquisire più esperienza con la struttura YUM e vedere dove ci sono opportunità per
per personalizzare il funzionamento di YUM sul tuo sistema, segui le descrizioni di ogni fase di
il processo di installazione di YUM illustrato nella Figura 10.2 e definito qui.

1. Controllare /etc/yum.conf
Quando viene avviato qualsiasi comando yum, controlla il file /etc/yum.conf per le impostazioni predefinite. Il
/etc/yum.conf è il file di configurazione YUM di base. Puoi anche identificare la posizione
di repository qui, sebbene la directory /etc/yum.repos.d sia la posizione più tipica
per identificare i repository. Ecco un esempio di /etc/yum.conf su un sistema RHEL 7:

[principale]
cachedir = / var / cache / yum / $ basearch / $ releasever
keepcache = 0
debuglevel = 2
logfile = / var / log / yum.log
hexarch = 1

gpgcheck = 1
plugin = 1

Le impostazioni in yum.conf dicono a YUM dove conservare i file della cache (/ var / cache / yum) e il log
voci (/var/log/yum.log) e se mantenere i file della cache in giro dopo che un pacchetto è
installato (0 significa no). Puoi aumentare il valore del livello di debug nel file yum.conf a sopra
2 se vuoi vedere più dettagli nei tuoi file di registro.

Successivamente, puoi vedere se l'architettura esatta (x86, x86_64 e così via) deve essere abbinata
quando si scelgono i pacchetti da installare (1 significa sì) e se utilizzare i plugin (1 significa sì) a
consentire cose come blacklist, whitelist o connessione a Red Hat Network per i pacchetti.

Infine, gpgcheck dice se convalidare ogni pacchetto rispetto a una chiave da cui si riceve
coloro che hanno costruito l'RPM. Per i pacchetti forniti con Fedora o RHEL, la chiave è inclusa
con la distribuzione per controllare tutti i pacchetti. Tuttavia, se provi a installare pacchetti che
non provengono dalla tua distribuzione, devi importare la chiave necessaria per firmarli
packages o disattivare quella funzionalità (gpgcheck = 0).

Per trovare altre funzionalità che puoi impostare nel file yum.conf, digita man yum.conf.

2. Controllo di / etc / sysconfig / rhn / up2date (solo RHEL)


Per i sistemi Red Hat Enterprise Linux, invece di puntare a un singolo repository software pubblico
(come fa Fedora), registri il tuo sistema con Red Hat Network e acquisti i diritti per
scaricare software da diversi canali.

Quando il tuo sistema è registrato con Red Hat Network, le informazioni vengono aggiunte al file / etc /
sysconfig / rhn / up2date per indicare a yum dove trovare i pacchetti di Red Hat Enterprise Linux
(da un Red Hat Network ospitato o da un server RHN Satellite).

242

Pagina 283
Capitolo 10: Acquisizione e gestione del software

3. Controllo dei file /etc/yum.repos.d/*.repo


I repository software possono essere abilitati trascinando i file che terminano con .repo nella directory
/etc/yum.repos.d/ che punta alla posizione di uno o più repository. In Fedora,
anche i tuoi repository Fedora di base sono abilitati dai file .repo in questa directory.

Ecco un esempio di un semplice file di configurazione yum chiamato /etc/yum.repos.d/


myrepo.repo:

[myrepo]
name = Il mio repository di pacchetti software
baseurl = http://myrepo.example.com/pub/myrepo
abilitato = 1
gpgcheck = 1
gpgkey = file: /// etc / pki / rpm-gpg / MYOWNKEY

Ogni voce del repository inizia con il nome del repository racchiuso tra parentesi quadre.
La riga del nome contiene una descrizione leggibile dal repository. La linea baseurl
identifica la directory contenente i file RPM, che possono essere httpd: //, ftp: // o
file: // voce.

La riga abilitata indica se la voce è attiva. Un 1 è attivo; 0 è inattivo. Se ci


non è una linea abilitata, la voce è attiva. Le ultime due righe nel codice precedente indicano
se controllare le firme sui pacchetti in questo repository. La riga gpgkey mostra il file
posizione della chiave utilizzata per controllare i pacchetti in questo repository.

Puoi avere tutti i repository abilitati che desideri. Tuttavia, tieni presente che quando
usi i comandi yum, ogni repository viene controllato e i metadati su tutti i pacchetti lo sono
scaricato nel sistema locale eseguendo il comando yum. Quindi, per essere più efficienti, non farlo
abilita i repository che non ti servono.

4. Download di pacchetti RPM e metadati da un repository YUM


Dopo che yum conosce le posizioni dei repository, i metadati dal repodata
la directory di ogni repository viene scaricata nel sistema locale. In effetti, è il file
esistenza di una directory repodata in una directory di RPM che indica che si tratta di un file
repository yum.

Le informazioni sui metadati vengono memorizzate sul sistema locale nella directory / var / cache / yum. Qualunque
ulteriori domande su pacchetti, gruppi di pacchetti o altre informazioni dal repository
vengono raccolti dai metadati memorizzati nella cache fino a quando non viene raggiunto un periodo di timeout.

Una volta raggiunto il periodo di timeout, yum recupera i nuovi metadati se il comando yum
è eseguito. Per impostazione predefinita, il timeout è di 90 minuti. È possibile modificare tale periodo impostando
10
metadata_expire nel file /etc/yum.conf. Rimuovere il commento da quella riga e modificare il file
numero di minuti.

243

Pagina 284

Parte III: diventare un amministratore di sistema Linux

Successivamente, yum esamina i pacchetti che hai richiesto di installare e controlla se sono dipendenti
pacchetti sono necessari per quei pacchetti. Con l'elenco dei pacchetti raccolto, yum ti chiede se è così
va bene scaricare tutti quei pacchetti. Se scegli di sì, i pacchetti vengono scaricati in
le directory della cache e installato.

5. Pacchetti RPM installati nel file system Linux


Dopo che tutti i pacchetti necessari sono stati scaricati nelle directory della cache, yum esegue rpm
comandi per installare ogni pacchetto. Se un pacchetto contiene script di preinstallazione (che potrebbero
creare un account utente speciale o creare directory), questi script vengono eseguiti. Il contenuto di
i pacchetti vengono copiati nel filesystem (comandi, file di configurazione, documenti e così via). Poi
tutti gli script di post-installazione vengono eseguiti. (Gli script di post-installazione eseguono comandi aggiuntivi necessari per
configurare il sistema dopo l'installazione di ogni pacchetto.)

6. Memorizza i metadati del repository YUM nel database RPM locale


I metadati contenuti in ogni pacchetto RPM installato vengono infine copiati nel file
database RPM locale. Il database RPM è contenuto in file archiviati in / var / lib / rpm
directory.

Dopo che le informazioni sui pacchetti installati si trovano nel database RPM locale, puoi fare tutto
tipi di query di quel database. Puoi vedere quali pacchetti sono installati, elencare i componenti
di questi pacchetti e visualizzare gli script o i registri delle modifiche associati a ciascun pacchetto. Puoi
convalidare anche i pacchetti installati rispetto al database RPM per vedere se qualcuno ha manomesso
con componenti installati.

Il comando rpm (descritto nella sezione "Installazione, interrogazione e verifica del software
con il comando rpm ”più avanti in questo capitolo) è lo strumento migliore per interrogare l'RPM
Banca dati. È possibile eseguire singole query con rpm o utilizzarlo negli script per produrre report o
eseguire query comuni più e più volte.

Ora che hai compreso il funzionamento di base del comando yum, il tuo sistema Fedora
dovrebbe essere automaticamente configurato per connettersi al repository Fedora principale e Fedora
Aggiorna il repository. Puoi provare alcune righe di comando yum per installare i pacchetti in questo momento. O
puoi abilitare altri repository YUM di terze parti da cui attingere software.

Utilizzo di YUM con repository software di terze parti


I repository software Fedora e Red Hat Enterprise Linux sono stati selezionati per contenere
solo software che soddisfa i criteri che lo rendono aperto e ridistribuibile. In alcuni casi,
tuttavia, potresti voler andare oltre quei repository. Prima di farlo, dovresti capire
che alcuni repository di terze parti hanno queste limitazioni:

■ Possono avere requisiti meno rigorosi per la ridistribuzione e la libertà da


vincoli di brevetto rispetto ai repository Fedora e RHEL.
■ Possono introdurre alcuni conflitti software.

244

Pagina 285

Capitolo 10: Acquisizione e gestione del software

■ Possono includere software che non è open source e, sebbene possa essere gratuito per
uso personale, potrebbe non essere ridistribuibile.
■ Potrebbero rallentare il processo di installazione di tutti i pacchetti (perché i metadati
viene scaricato per ogni repository abilitato).
Per questi motivi, ti consiglio di non abilitare alcun software aggiuntivo
repository o abilitare inizialmente solo il repository RPM Fusion (http://rpmfusion.org)
per Fedora e il repository EPEL (http://fedoraproject.org/wiki/EPEL) per Red
Hat Enterprise Linux. RPM Fusion rappresenta una fusione di diversi popolari Fedora di terze parti
repository (Freshrpms, Livna.org e Dribble). Vedi le FAQ del repository per i dettagli
( http: // rpmfusion.org/FAQ). Per abilitare il repository RPM Fusion gratuito in Fedora, fai
il seguente:

1. Apri una finestra di Terminale.

2. Digitare su - e immettere la password di root quando richiesto.

3. Digitare il seguente comando su una riga senza spazi tra la barra


e rpmfusion. (Ho dovuto spezzare la linea in due perché era troppo lunga per adattarsi
in una riga sulla pagina stampata, quindi assicurati di digitare l'intero indirizzo su una riga
senza spazio):

# rpm -Uvh http://download1.rpmfusion.org/free/fedora/


rpmfusion-free-release-stable.noarch.rpm

Il repository non libero di RPM Fusion contiene cose come i codec necessari per riprodurne molti
formati multimediali popolari. Per abilitare il repository non libero in Fedora, digita quanto segue
(di nuovo, digita le seguenti due righe su una singola riga, senza spazi tra le due):

# rpm -Uhv http://download1.rpmfusion.org/nonfree/fedora/


rpmfusion-nonfree-release-stable.noarch.rpm

La maggior parte degli altri repository di terze parti che potrebbero interessarti contengono software che
non è open source. Ad esempio, se desideri installare il plug-in Adobe Flash per Linux,
scarica il pacchetto del repository YUM da Adobe e puoi usare il comando yum per
installa il plug-in Flash e ottieni gli aggiornamenti in un secondo momento eseguendo il comando yum update,
quando sono disponibili aggiornamenti.

Gestione del software con il comando YUM


Il comando yum ha dozzine di sottocomandi che puoi usare per lavorare con i pacchetti RPM
sul tuo sistema. Le sezioni seguenti forniscono alcuni esempi di utili comandi yum
righe per cercare, installare, interrogare e aggiornare i pacchetti associati al tuo YUM
repository. Include anche una sezione che descrive come rimuovere i pacchetti installati con 10
il comando yum.

245

Pagina 286

Parte III: diventare un amministratore di sistema Linux

I metadati, che descrivono il contenuto dei repository YUM, vengono scaricati da ciascuno dei repository YUM abilitati
la prima volta che esegui un comando yum. I metadati vengono scaricati di nuovo una volta raggiunta l'ora metadata_expire
(90 minuti, per impostazione predefinita). Più repository YUM abiliti e più grandi sono, più lungo è il download
potere prendere. Puoi ridurre questo tempo di download aumentando il tempo di scadenza (nel file /etc/yum.conf) o non
abilitare i repository che non ti servono.

Ricerca di pacchetti
Utilizzando diversi sottocomandi di ricerca, è possibile trovare pacchetti in base a parole chiave, pacchetto
contenuti o altri attributi.

Supponiamo che tu voglia provare un diverso editor di testo, ma non ricordi il nome di
quello che volevi. È possibile iniziare utilizzando il sottocomando di ricerca per cercare il termine
"Editor" nel nome o nella descrizione:

# yum editor di ricerca


...
eclipse-veditor.noarch: plug-in Verilog / VHDL basato su Eclipse
ed.x86_64: l'editor di riga GNU
emacs.x86_64: editor di testo GNU Emacs

La ricerca ha scoperto un lungo elenco di pacchetti contenenti "editor" nel nome o nella descrizione.
Quello che stavo cercando si chiama emacs. Per ottenere informazioni su quel pacchetto, posso usare
il sottocomando info:

# yum info emacs


Nome : emacs
Arco : x86_64
Epoca: 1
Versione: 24.4.0
Versione: 3.fc21
Taglia : 3.0 M
Repo : aggiornamenti / 21 / x86_64
Riepilogo: editor di testo GNU Emacs
URL : http://www.gnu.org/software/emacs/
Licenza: GPLv3 + e CC0-1.0
Descrizione: Emacs è un potente, personalizzabile, auto-documentante,
: editor di testo non modale. Emacs contiene una speciale modifica del codice
: caratteristiche, un linguaggio di scripting (elisp) e la capacità
: per leggere posta, notizie e altro senza uscire dall'editor.

Se conosci il comando, il file di configurazione o il nome della libreria che desideri, ma non lo sai
in quale pacchetto si trova, utilizzare il sottocomando fornisce per cercare il pacchetto. Qui tu
può vedere che il comando dvdrecord fa parte del pacchetto wodim:

246

Pagina 287

Capitolo 10: Acquisizione e gestione del software


# yum fornisce dvdrecord
wodim-1.1.11-25.fc21.x86_64: un programma di registrazione di CD / DVD dalla riga di comando
Repo : fedora
Corrisponde a:
Fornisce: dvdrecord

Il sottocomando list può essere utilizzato per elencare i nomi dei pacchetti in modi diversi. Usalo con
un nome di base del pacchetto per trovare la versione e il repository di un pacchetto. Puoi elencare solo
pacchetti disponibili o installati oppure è possibile elencare tutti i pacchetti.

# yum list emacs


emacs.i686 1: 24.4-3.fc21 aggiornamenti
# lista yum disponibile
389-admin.i686 1.1.35-2.fc21 fedora
389-admin-console.noarch 1.1.35-2.fc21 fedora
389-admin-console-doc.noarch 1.1.8-7.fc21 fedora
...
# yum list installato
Pacchetti installati
GConf2.x86_64 3.2.6-11.fc21 @ koji-override-0 / $ releasever
LibRaw.x86_64 0.16.0-4.fc21 @ koji-override-0 / $ releasever
...
# yum elenca tutto
...

Se trovi un pacchetto, ma vuoi vedere da quali componenti dipende quel pacchetto, puoi farlo
utilizzare il sottocomando deplist. Con deplist, puoi vedere i componenti (dipendenza) ma
anche il pacchetto in cui viene fornito il componente (provider). L'utilizzo di deplist può aiutare se nessun pacchetto
è disponibile per fornire una dipendenza, ma vuoi sapere qual è il componente in modo da poterlo fare
cercalo in altri repository. Considera il seguente esempio:

# yum deplist emacs | Di meno


pacchetto: emacs.x86_64 1: 24.4-3.fc21
dipendenza: / bin / sh
provider: bash.x86_64 4.3.33-1.fc21
dipendenza: / usr / sbin / alternatives
provider: chkconfig.x86_64 1.3.63-1.fc21
dipendenza: dejavu-sans-mono-fonts
provider: dejavu-sans-mono-fonts.noarch 2.34-4.fc21

Installazione e rimozione di pacchetti


Il sottocomando install consente di installare uno o più pacchetti, insieme a qualsiasi dipendente
pacchetti necessari. Con l'installazione yum, è possibile cercare più repository per soddisfare le esigenze
dipendenze. Considera il seguente esempio di installazione yum:
10
# yum installa emacs
...

247

Pagina 288

Parte III: diventare un amministratore di sistema Linux

Pacchetto Versione ad arco Dimensioni del repository


================================================== ==================
Installazione:
emacs x86_64 1: 24.4-3.fc21 aggiornamenti 3,0 M
Installazione per dipendenze:
ImageMagick-libs x86_64 6.8.8.10-5.fc21 fedora 2,0 M
emacs-common x86_64 1: 24.4-3.fc21 aggiornamenti 37 M
libXaw x86_64 1.0.12-4.fc21 fedora 190 k
aggiornamenti liblockfile x86_64 1.08-16.fc21 27 k
libotf x86_64 0.9.13-5.fc21 fedora 96 k

Riepilogo delle transazioni


================================================== ==================
Installa 1 pacchetto (+5 pacchetti dipendenti)

Dimensione totale del download: 42 M.


Dimensione installata: 109 MI va bene [y / N]: y

Puoi vedere qui che emacs richiede che emacs-common e molti altri pacchetti
essere installati in modo che tutti siano in coda per l'installazione. I sei pacchetti insieme sono da 26 MB a
scarica, ma consuma 91 MB dopo l'installazione. Premendo y si installano. Puoi mettere un -y
sulla riga di comando (subito dopo il comando yum) per evitare di dover premere y per installare il file
packages, ma personalmente, di solito voglio vedere tutti i pacchetti che stanno per essere installati prima
Accetto l'installazione.
È possibile reinstallare un pacchetto se si eliminano per errore componenti di un pacchetto installato. Se tu
tentare un'installazione regolare, il sistema risponde con "niente da fare". Devi, invece, usare il file
reinstallare il sottocomando. Ad esempio, supponiamo di aver installato il pacchetto zsh e quindi di averlo eliminato
/ bin / zsh per errore. È possibile ripristinare i componenti mancanti digitando quanto segue:

# yum reinstallare zsh

Puoi rimuovere un singolo pacchetto con il sottocomando erase. Ad esempio, per cancellare il file
pacchetto emacs, puoi digitare quanto segue:

# yum cancella emacs


Dipendenze risolte ===========================================
Pacchetto Arch Versione Dimensioni del repository
================================================== ==============
Rimozione:
emacs x86_64 1: 24.4-3.fc21 @updates 14 M

Riepilogo delle transazioni


================================================== ==============
Rimuovi 1 pacchetto

Dimensione installata: 14 MI va bene [y / N]: y

248

Pagina 289

Capitolo 10: Acquisizione e gestione del software

Notare che anche se sei pacchetti sono stati installati solo durante l'installazione di emacs
il pacchetto emacs stesso è stato rimosso con il sottocomando erase. Sebbene emacs
richiedeva che emacs-common fosse installato, emacs-common non dipendeva da emacs e
potrebbe quindi rimanere nel sistema senza interrompere le dipendenze. Esecuzione di yum remove
emacs-common avrebbe rimosso entrambi i pacchetti.

Un metodo alternativo per rimuovere una serie di pacchetti installati è utilizzare la cronologia
sottocomando. Usando la cronologia, puoi vedere le tue attività yum e annullare un'intera transazione.
In altre parole, tutti i pacchetti installati possono essere disinstallati utilizzando l'opzione di annullamento del file
sottocomando history. Per esempio:

# yum storia
ID | Utente di accesso | Data e ora | Azione / i | Alterato
-------------------------------------------------- -------------------
96 | Chris Negus <cnegus> | 10/12/2016 06:25 | Installa | 2
...
# yum informazioni sulla cronologia 96
ID transazione: 96
...
Riga di comando: installa emacs
...
# yum history annulla 96
Annullamento della transazione 96, da mercoledì 14 dicembre alle 06:25:41 2014
Dep-Install emacs-common-1: 24.4-3.fc21.x86_64 @updates
Dep-Installa libXaw-1.0.12-4.fc21.x86_64 @fedora
...

Prima di annullare la transazione, puoi visualizzare la transazione per vedere esattamente quali pacchetti
sono stati coinvolti. La visualizzazione della transazione può salvarti dall'eliminazione errata dei pacchetti
voglio mantenere. Annullando la transazione 96, è possibile rimuovere tutti i pacchetti installati
durante quella transazione. Se stai tentando di annullare un'installazione che includeva dozzine o addirittura
centinaia di pacchetti, undo può essere un'opzione molto utile.

Aggiornamento dei pacchetti


Man mano che le nuove versioni di un pacchetto diventano disponibili, a volte vengono messe separatamente
aggiornare i repository o semplicemente aggiunti al repository originale. Se più versioni di un file
pacchetto sono disponibili (sia nello stesso repository o in un altro repository abilitato),
yum fornisce l'ultima versione quando installi un pacchetto. Se viene visualizzata una nuova versione
in un secondo momento, è possibile scaricare e installare la nuova versione del pacchetto utilizzando il
aggiorna il sottocomando.

Il sottocomando check-update può controllare gli aggiornamenti. Il sottocomando di aggiornamento può


essere utilizzato per aggiornare un singolo pacchetto o per ottenere aggiornamenti a tutti i pacchetti attualmente 10
installato e avere un aggiornamento disponibile. Oppure puoi semplicemente aggiornare un singolo pacchetto (come
la confezione di tazze). Per esempio:

# yum check-update
... kernel.x86_64 3.10.0-123.6.3.el7 rhel-7-server-rpms
249

Pagina 290

Parte III: diventare un amministratore di sistema Linux

kernel-headers.x86_64 3.10.0-123.6.3.el7 rhel-7-server-rpms

# aggiornamento yum
... Risolvere le dipendenze
-> Esecuzione del controllo delle transazioni
---> Verrà installato il pacchetto kernel.x86_64 0: 3.10.0-123.6.3.el7
---> Il pacchetto kernel-headers.x86_64 0: 3.10.0-123.4.4.el7 sarà
aggiornato
...
Riepilogo delle transazioni
================================================== ===================
Upgrade 38 Pacchetto (i)
Dimensione totale del download: 50 M.
Va bene [y / N]: y
# yum update tazze

Il comando precedente richiedeva di aggiornare il pacchetto cups. Se altro dipendente


i pacchetti devono essere aggiornati per aggiornare cups, quei pacchetti verranno scaricati e
installato pure.

Aggiornamento di gruppi di pacchetti


Per semplificare la gestione di un intero set di pacchetti contemporaneamente, YUM supporta i gruppi di pacchetti.
Ad esempio, potresti installare GNOME Desktop Environment (per ottenere un intero desktop) o
Virtualizzazione (per ottenere i pacchetti necessari per configurare il computer come host virtuale). Puoi
inizia eseguendo il sottocomando grouplist per vedere un elenco di nomi di gruppi:

# yum grouplist | Di meno


Gruppi di ambienti disponibili:
Fedora Server
...
Gruppi installati:
Strumenti di amministrazione
Suite di design
...
Gruppi disponibili:
Creazione e pubblicazione
Libri e guide
Strumenti di sviluppo e librerie C.
...

Supponiamo che tu voglia provare un ambiente desktop diverso. Vedi LXDE e lo vuoi
per sapere cosa c'è in quel gruppo. Per scoprirlo, usa il sottocomando groupinfo:

# yum groupinfo LXDE


Gruppo: LXDE
ID gruppo: lxde-desktop

250

Pagina 291

Capitolo 10: Acquisizione e gestione del software

Descrizione: LXDE è un ambiente desktop X11 leggero ...


Pacchetti obbligatori:
lxde-common
lxmenu-data
...

Oltre a mostrare una descrizione del gruppo, groupinfo mostra Pacchetti obbligatori
(quelli che sono sempre installati con il gruppo), Pacchetti predefiniti (quelli che vengono installati
per impostazione predefinita, ma può essere escluso) e Pacchetti opzionali (che fanno parte del gruppo, ma
non installato di default). Quando si utilizzano alcuni strumenti grafici per installare i gruppi di pacchetti,
puoi deselezionare i pacchetti predefiniti o controllare i pacchetti opzionali per cambiare se lo sono
installato con il gruppo.

Se decidi di installare un gruppo di pacchetti, utilizza il sottocomando groupinstall:

# yum groupinstall LXDE

Questa installazione di gruppo ha prodotto 30 pacchetti dal gruppo installati e 5 esistenti


pacchetti in aggiornamento. Se decidi che non ti piace il gruppo di pacchetti, puoi rimuoverlo
l'intero gruppo in una volta utilizzando il sottocomando groupremove:

# yum groupremove LXDE

Mantenere il database e la cache del pacchetto RPM


Diversi sottocomandi di yum possono aiutarti a svolgere attività di manutenzione, come il controllo dei problemi
lems con il database RPM o svuota la cache. La struttura YUM dispone di strumenti per
conservare i pacchetti RPM e mantenere il software del sistema efficiente e sicuro.

Svuotare la cache è qualcosa che vuoi fare di tanto in tanto. Se decidi di farlo
mantenere i pacchetti scaricati dopo che sono stati installati (vengono rimossi per impostazione predefinita, in base a
l'impostazione keepcache = 0 nel file /etc/yum.conf), le directory della cache (sotto
/ var / cache / yum) può riempirsi. I metadati memorizzati nelle directory della cache possono essere cancellati, causando
nuovi metadati da scaricare da tutti i repository YUM abilitati la prossima volta che yum è
correre. Ecco i modi per cancellare queste informazioni:

# yum pacchetti puliti


Repository di pulizia: rhel-7-server-rpms
7 file di pacchetto rimossi
# yum clean metadata
43 file di metadati rimossi
13 file sqlite rimossi
# yum pulisci tutto
Repository di pulizia: rhel-7-server-rpms
Ripulire tutto 10
Sebbene improbabile, è possibile che il database RPM possa essere danneggiato. Questo può
succede se si verifica qualcosa di imprevisto, come tirare il cavo di alimentazione quando un pacchetto

251

Pagina 292

Parte III: diventare un amministratore di sistema Linux

è parzialmente installato. Puoi controllare il database RPM per cercare errori (yum check) o
basta ricostruire i file del database RPM, come segue:

# assegno yum
seleziona tutto
# yum clean rpmdb
Repository di pulizia: rhel-7-server-rpms
4 file rpmdb rimossi

Degli esempi puliti yum nelle tre righe di comando precedenti, tutti rimuovono i dati memorizzati nella cache
dalle sottodirectory / var / cache / yum, ad eccezione dell'esempio rpmdb. Quel comando
ha rimosso i file db * dalla directory / var / lib / rpm (rigenerando quei file di database in
ripulire eventuali problemi).

L'opzione rpmdb è una delle poche opzioni di yum che viene utilizzata per lavorare con l'RPM
database direttamente. In generale, yum viene utilizzato per manipolare i repository yum. Il comando
il più adatto per lavorare con il database RPM locale è il comando rpm.

Download di RPM da un repository yum


Se vuoi solo esaminare un pacchetto senza installarlo effettivamente, puoi usare il
comando yumdownloader. L'esecuzione di quel comando fa sì che il pacchetto che chiami sia
scaricato dal repository YUM e copiato nella directory corrente.

Ad esempio, per scaricare l'ultima versione del pacchetto del browser Web Firefox dal file
Repository YUM nella directory corrente, digita quanto segue:

# yumdownloader firefox
... (1/2): firefox-35.0-3.fc21.x86_64.rpm | 68 MB 00:00:09
(2/2): firefox-35.0-3.fc21.i686.rpm | 68 MB 00:00:10
In questo caso, poiché sono disponibili le versioni x86_64 e i686 del pacchetto firefox, entrambe
vengono scaricati nella directory corrente. Con tutti i pacchetti RPM scaricati ora disponibili
nella directory corrente, è possibile utilizzare una varietà di comandi rpm per interrogarli o utilizzarli
pacchetti in modi diversi (come descritto nella sezione successiva).

Installazione, interrogazione e verifica del software


con il comando rpm
Ci sono molte informazioni sui pacchetti installati nel database RPM locale. Il
Il comando rpm contiene dozzine di opzioni per consentire di trovare informazioni su ciascuno
pacchetto, come i file che contiene, chi lo ha creato, quando è stato installato, quanto è grande,
e molti altri attributi. Poiché il database contiene le impronte digitali (md5sums) di ogni file
file in ogni pacchetto, può essere interrogato con RPM per scoprire se i file di qualsiasi pacchetto hanno
stato manomesso.

252

Pagina 293

Capitolo 10: Acquisizione e gestione del software

Il comando rpm può ancora eseguire le attività di installazione e aggiornamento di base, sebbene la maggior parte delle persone
usa rpm in questo modo solo quando c'è un pacchetto seduto nella directory locale, pronto per
essere installato. Quindi prendiamone uno nella nostra directory locale con cui lavorare. Digita quanto segue a
scarica l'ultima versione del pacchetto zsh:

# yumdownloader zsh
zsh-5.0.7-4.fc21.x86_64.rpm | 2,5 MB 00:03

Con il pacchetto zsh scaricato nella directory corrente, provare alcuni comandi rpm su di esso.

Installazione e rimozione di pacchetti con rpm


Per installare un pacchetto con il comando rpm, digita questo:

# rpm -i zsh-5.0.7-4.fc21.x86_64.rpm

Si noti che viene fornito l'intero nome del pacchetto per l'installazione con rpm, non solo la base del pacchetto
nome. Se è stata installata una versione precedente di zsh, è possibile aggiornare il pacchetto utilizzando -U.
Spesso, le persone usano le opzioni -h e -v per ottenere la stampa di segni hash e un output più dettagliato
durante l'aggiornamento:

# rpm -Uhv zsh-5.0.7-4.fc21.x86_64.rpm


Preparazione... ######################### [100%]
1: zsh ######################### [100%]

Sebbene un'installazione (-i) installi un pacchetto solo se il pacchetto non è già installato,
un aggiornamento (-U) installa il pacchetto anche se è già installato. Un terzo tipo di installazione
chiamato freshen (-F) installa un pacchetto solo se esiste una versione precedente di un pacchetto
installato sul computer. Per esempio:

# rpm -Fhv * .rpm

Potresti usare il precedente comando freshen se fossi in una directory contenente migliaia
di RPM ma volevo solo aggiornare quelli che erano già installati (in una versione precedente) su
sistema e salta quelli che non erano ancora installati. Puoi aggiungere alcune opzioni interessanti
a una qualsiasi delle opzioni di installazione. L'opzione --replacepkgs ti consente di reinstallare un esistente-
versione di un pacchetto (se, ad esempio, hai cancellato per errore alcuni componenti), e
--oldpackage consente di installare una versione precedente di un pacchetto.

# rpm -Uhv --replacepkgs emacs-common-24.4-3.fc21.x86_64.rpm


# rpm -Uhv --oldpackage zsh-4.3.10-7.el6.x86_64.rpm

Puoi rimuovere un pacchetto con l'opzione -e. Hai solo bisogno del nome di base di un pacchetto per
rimuoverlo. Per esempio:

# rpm -e emacs

Il comando rpm -e emacs avrebbe successo perché nessun altro pacchetto dipende
10
ammaccatura su emacs. Tuttavia, lascerebbe alle spalle emacs-common, che è stato installato come
una dipendenza da emacs. Se avessi provato a rimuovere prima emacs-common, quel comando
fallirebbe con un messaggio "Dipendenze non riuscite".

253
Pagina 294

Parte III: diventare un amministratore di sistema Linux

Interrogazione delle informazioni sui giri / min


Dopo aver installato il pacchetto, è possibile richiedere informazioni sul pacchetto. Usando il
-q opzione, puoi vedere le informazioni sul pacchetto, inclusa una descrizione (-qi), elenco
di file (-ql), documentazione (-qd) e file di configurazione (-qc).

# rpm -qi zsh


Nome: zsh
Versione: 5.0.7
Versione: 4.fc21
...
# rpm -ql zsh
/ bin / zsh
/etc/skel/.zshrc
/ etc / zlogin
/ etc / zlogout
...
# rpm -qd zsh / usr / share / doc / zsh / BUGS
/ usr / share / doc / zsh / CONTRIBUTORS
/ usr / share / doc / zsh / FAQ # rpm -qc zsh
/etc/skel/.zshrc
/ etc / zlogin
/ etc / zlogout

È possibile utilizzare le opzioni per interrogare qualsiasi informazione contenuta in un RPM. Potete trovare
di cosa ha bisogno un RPM per essere installato (--requires), quale versione del software è un pacchetto
fornisce (--provides), quali script vengono eseguiti prima e dopo l'installazione di un RPM o
rimosso (--scripts) e quali modifiche sono state apportate a un RPM (--changelog).

# rpm -q - richiede emacs-common


/ bin / sh
/ sbin / install-info
/ usr / bin / perl
...
# rpm -q - fornisce emacs-common
config (emacs-common) = 1: 24.4-3.fc21
emacs-comune = 1: 24.4-3.fc21
emacs-common (x86-64) = 1: 24.4-3.fc21
emacs-el = 1: 24,4-3.fc21
pkgconfig (emacs) = 1: 24,4
# rpm -q --scripts httpd
# Aggiungi l'utente "apache"
/ usr / sbin / useradd -c "Apache" -u 48 \
-s / sbin / nologin -r -d / var / www apache 2> / dev / null || :
scriptlet di postinstallazione (utilizzando / bin / sh):
...
# rpm -q --changelog httpd | meno *
Mercoledì 3 settembre 2014 Jan Kaluza
< jkaluza@redhat.com> - 2.4.10-9
- risolto il requisito del nome host e il conflitto con openssl-libs
...

254

Pagina 295

Capitolo 10: Acquisizione e gestione del software

Nei due esempi precedenti, puoi vedere che gli script all'interno del pacchetto httpd aggiungono un apache
utente al momento dell'installazione e attiva il servizio httpd con chkconfig. Il --changelog
l'opzione consente di vedere perché sono state apportate modifiche a ciascuna versione del pacchetto. La correzione
# rappresenta un bug corretto che puoi cercare in http: // bugzilla.redhat.com.

Utilizzando una funzionalità chiamata --queryformat, puoi eseguire query su diversi tag di informazioni e
riprodurli in qualsiasi forma ti piaccia. Esegui l'opzione --querytags per poter vedere tutti i file
tag disponibili:
# rpm --querytags | Di meno
ARCO
ARCHIVESIZE
NOMI DI BASE
BUGURL
...
# rpm -q binutils --queryformat "Il pacchetto è% {NAME} \
e il rilascio è% {RELEASE} \ n "
Il pacchetto è binutils e il rilascio è 30.fc21

Tutte le query che hai fatto finora sono state al database RPM locale. Aggiungendo una -p
a queste opzioni di query, puoi invece interrogare un file RPM che si trova nella tua directory locale.
L'opzione -p è un ottimo modo per guardare all'interno di un pacchetto che qualcuno ti dà per indagare
di cosa si tratta prima di installarlo sul sistema.

Se non lo hai già fatto, prendi il pacchetto zsh e mettilo nella tua directory locale (yumdown-
caricatore zsh). Quindi eseguire alcuni comandi di query sul file RPM.

# rpm -qip zsh-5.0.2-7.el7.x86_64.rpm Visualizza le informazioni sul file RPM


# rpm -qlp zsh-5.0.2-7.el7.x86_64.rpm Elenca tutti i file nel file RPM
# rpm -qdp zsh-5.0.2-7.el7.x86_64.rpm Mostra i documenti nel file RPM
# rpm -qcp zsh-5.0.2-7.el7.x86_64.rpm Elenca i file di configurazione nel file RPM

Verifica dei pacchetti RPM


Usando l'opzione -V, puoi controllare i pacchetti installati sul tuo sistema per vedere se il file
i componenti sono stati modificati dalla prima installazione dei pacchetti. Anche se è normale
affinché i file di configurazione cambino nel tempo, non è normale che i binari (i comandi in
/ bin, / sbin e così via) da modificare dopo l'installazione. I file binari modificati sono problematici
abilmente un'indicazione che il tuo sistema è stato violato.

In questo esempio, installerò il pacchetto zsh e lo rovinerò. Se lo desidera


prova con gli esempi, assicurati di rimuovere o reinstallare il pacchetto quando lo sei
finito.
10
# rpm -i zsh-5.0.7-4.fc21.x86_64.rpm
# echo ciao> / bin / zsh
# rm / etc / zshrc
# rpm -V zsh

255

Pagina 296

Parte III: diventare un amministratore di sistema Linux

S.5 .... T. / bin / zsh


c / etc / zshrc mancante

In questo output, puoi vedere che il file / bin / zsh è stato manomesso e / etc /
zshrc è stato rimosso. Ogni volta che vedi una lettera o un numero invece di un punto dal
uscita rpm -V, è un'indicazione di cosa è cambiato. Lettere che possono sostituire i punti
(in ordine) includere quanto segue:

La dimensione del file S è diversa


La modalità M è diversa (include autorizzazioni e tipo di file)
5 La somma MD5 è diversa
D Mancata corrispondenza del numero maggiore / minore del dispositivo
L readLink (2) percorso non corrispondente
U La proprietà dell'utente è diversa
La proprietà del gruppo G è diversa
T mTime è diverso
Le capacità differiscono

Questi indicatori provengono dalla sezione Verifica della pagina man rpm. Nel mio esempio, puoi
vedere che la dimensione del file è cambiata (S), l'md5sum confrontato con l'impronta digitale del file ha
modificato (5) e l'ora di modifica (T) sul file è diversa.

Per ripristinare il pacchetto allo stato originale, usa rpm con l'opzione --replacepkgs, come
mostrato di seguito. (Anche il comando yum reinstall zsh funzionerebbe). Quindi controlla con
-V di nuovo. Nessun output da -V significa che ogni file è tornato al suo stato originale.

# rpm -i --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm


# rpm -V zsh

È buona norma eseguire il backup del database RPM (da / var / lib / rpm) e copiarlo in
un supporto di sola lettura (come un CD). Quindi, quando vai a verificare i pacchetti che tu
sospetto sono stati violati, sai che non lo stai verificando con un database che ha anche
stato rotto.
Gestire il software nell'azienda
A questo punto, dovresti avere una buona conoscenza di come installare, interrogare, rimuovere,
e altrimenti manipolare i pacchetti con strumenti grafici, il comando yum e rpm
comando. Quando inizi a lavorare con i file RPM in una grande azienda, devi estendere
quella conoscenza.

Funzionalità utilizzate per gestire i pacchetti RPM nell'azienda con Red Hat Enterprise Linux
offrono un po 'più di complessità e molta più potenza. Invece di avere un grande software
repository, come fa Fedora, RHEL fornisce la distribuzione tramite Red Hat Network, che
richiede un abbonamento a pagamento e diritti a una varietà di canali software (RHEL, Red
Hat Enterprise Virtualization, Red Hat Cluster Suite e così via).

256

Pagina 297

Capitolo 10: Acquisizione e gestione del software

In termini di elaborazione aziendale, uno dei grandi vantaggi della progettazione di pacchetti RPM è
che la loro gestione possa essere automatizzata. Altri schemi di pacchettizzazione di Linux consentono i pacchetti
per interrompere e richiedere informazioni quando vengono installati (come la richiesta di un file
posizione della directory o un nome utente). I pacchetti RPM si installano senza interruzioni, offrendo alcuni
dei seguenti vantaggi:

■ File kickstart: tutte le domande a cui si risponde durante un'installazione manuale e tutti i file
i pacchetti selezionati possono essere aggiunti in un file chiamato file kickstart. Quando inizi un file
Installer Fedora o Red Hat Enterprise Linux, puoi fornire un file kickstart nel
prompt di avvio. Da quel momento in poi, l'intero processo di installazione si completa
proprio. Qualsiasi modifica alle installazioni del pacchetto predefinito può essere apportata eseguendo pre
e pubblicare script dal file kickstart, per fare cose come aggiungere account utente o
modificare i file di configurazione.
■ Avvio PXE: è possibile configurare un server PXE per consentire ai computer client di avviare un file
anaconda (installatore) e un file kickstart selezionato. Un computer completamente vuoto
con una scheda di interfaccia di rete (NIC) che supporta l'avvio PXE può semplicemente avviarsi da
la sua scheda NIC per avviare una nuova installazione. In altre parole, accendi il computer e se
colpisce la scheda di rete nell'ordine di avvio, pochi minuti dopo puoi averne appena installato
sistema, configurato secondo le vostre specifiche esatte senza intervento.
■ Server satellite (Spacewalk ): è possibile distribuire i sistemi Red Hat Enterprise Linux
utilizzando quello che viene chiamato Satellite Server (il progetto open source è chiamato
Passeggiata nello spazio). In Satellite Server sono presenti le stesse funzionalità di Red
Hat Network per gestire e distribuire nuovi sistemi e aggiornamenti. Senza effettuare il login
direttamente, i sistemi RHEL possono essere configurati per ottenere aggiornamenti software a volte impostati da
il server satellitare. Possono essere insiemi di pacchetti chiamati Errata che risolvono problemi specifici
distribuito rapidamente e automaticamente ai sistemi che ne hanno bisogno.

Descrizioni di come utilizzare file kickstart, server satellite e altri strumenti pronti per l'azienda
le caratteristiche di installazione esulano dallo scopo di questo libro. Ma la comprensione che hai
ottenuto dall'apprendimento di YUM e RPM servirà come solida base per qualsiasi RHEL
lavoro di installazione del software che farai in futuro.

Sommario
Viene fornito il pacchetto software in Fedora, Red Hat Enterprise Linux e nei sistemi correlati
utilizzando pacchetti software basati sugli strumenti RPM Package Manager (RPM). Debian, Ubuntu,
e il relativo pacchetto di sistemi software in file DEB. Puoi provare strumenti grafici di facile utilizzo
come la finestra Software per trovare e installare i pacchetti. Il comando principale-
gli strumenti in linea includono i comandi yum e rpm per i sistemi correlati a Red Hat e aptitude, 10
apt * e dkpg per i sistemi relativi a Debian.

Utilizzando questi strumenti di gestione del software, è possibile installare, interrogare, verificare, aggiornare e rimuovere
pacchi. Puoi anche eseguire attività di manutenzione, come pulire i file della cache e ricostruire il file

257
Pagina 298

Parte III: diventare un amministratore di sistema Linux

Database RPM. Questo capitolo descrive anche molte delle caratteristiche della finestra Software
come comandi yum e rpm.

Dopo aver installato il sistema e aver aggiunto i pacchetti software necessari, è il momento di farlo
configura ulteriormente il tuo sistema Fedora, RHEL, Debian o Ubuntu. Se ti aspetti di avere
più persone utilizzano il tuo sistema, il tuo prossimo compito potrebbe essere quello di aggiungere e gestire in altro modo
account utente sul tuo sistema. Il Capitolo 11 descrive la gestione degli utenti in Fedora, RHEL e
altri sistemi Linux.

Esercizi
Questi esercizi mettono alla prova la tua conoscenza del lavoro con i pacchetti software RPM in Fedora o
Red Hat Enterprise Linux. Per fare gli esercizi, ti consiglio di avere un sistema Fedora in formato
davanti a te che ha una connessione Internet. (La maggior parte delle procedure funziona altrettanto bene su
un sistema RHEL registrato.)

Devi essere in grado di raggiungere i repository Fedora (che dovrebbero essere impostati automaticamente).
Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, lì
sono spesso diversi modi per completare un'attività).

1. Cerca nel repository YUM il pacchetto che fornisce il comando mogrify.

2. Visualizzare le informazioni sul pacchetto che fornisce il comando mogrify e


determinare qual è la home page (URL) di quel pacchetto.
3. Installa il pacchetto contenente il comando mogrify.

4. Elenca tutti i file di documentazione contenuti nel pacchetto che fornisce l'estensione
comando mogrify.

5. Guarda attraverso il changelog del pacchetto che fornisce il comando mogrify.

6. Elimina il comando mogrify dal tuo sistema e verifica il suo pacchetto con il file
Database RPM per vedere che il comando è effettivamente mancante.

7. Reinstallare il pacchetto che fornisce il comando mogrify e assicurarsi che il file


l'intero pacchetto è di nuovo intatto.
8. Scarica il pacchetto che fornisce il comando mogrify al tuo file corrente
directory.

9. Visualizza le informazioni generali sul pacchetto appena scaricato eseguendo una query
il file RPM del pacchetto nella directory corrente.
10. Rimuovere il pacchetto contenente il comando mogrify dal sistema.

258

Pagina 299

CAPITOLO

11
Gestione degli account utente
IN QUESTO CAPITOLO
Lavorare con gli account utente
Lavorare con account di gruppo
Configurazione di account utente centralizzati

La mantenere i confini tra le persone che utilizzano i sistemi e tra i processi che
eseguito sui tuoi sistemi. I gruppi sono un modo per assegnare diritti al sistema che possono essere assegnati
gestione e la gestione degli utenti sono attività comuni per gli amministratori di sistemi Linux. Profili utente
a più utenti contemporaneamente.

Questo capitolo descrive non solo come creare un nuovo utente, ma anche come creare impostazioni predefinite
e file per configurare l'ambiente dell'utente. Utilizzando strumenti come useradd e usermod
comandi, è possibile assegnare impostazioni come la posizione di una directory home, una shell predefinita, una directory predefinita
gruppo e valori ID utente e ID gruppo specifici.

Creazione di account utente


Ogni persona che usa il tuo sistema Linux dovrebbe avere un account utente separato. Avere un account utente
fornisce un'area in cui archiviare in modo sicuro i file, nonché un mezzo per personalizzare l'utente
interfaccia (GUI, percorso, variabili di ambiente e così via) per adattarsi al modo in cui si utilizza il computer.

È possibile aggiungere account utente alla maggior parte dei sistemi Linux in diversi modi. Fedora e Red Hat
I sistemi Linux aziendali dispongono di una finestra Utenti disponibile dalla finestra Impostazioni. Nel
GNOME 3, vai alla schermata Attività, digita Utenti e premi Invio. In GNOME 2, dal
Dal menu Applicazioni, selezionare Strumenti di sistema ➪ Impostazioni. Quindi seleziona l'icona Utenti. Seleziona il
Pulsante di sblocco e inserisci la password di root. Quindi selezionare il segno più (+) per aprire una finestra
l'aggiunta di un account utente, come mostrato nella Figura 11.1.

Ora sei pronto per iniziare ad aggiungere un nuovo account utente al tuo sistema Linux. Ecco i campi tu
è necessario compilare:

■ Tipo di account: scegliere Standard (per creare un account utente normale) o Amministratore
(per creare un account con autorizzazione di root).

259

Pagina 300

Parte III: diventare un amministratore di sistema Linux

FIGURA 11.1

Aggiungi account utente dalla finestra Utente.

■ Nome completo: utilizzare il vero nome dell'utente, generalmente utilizzato con lettere maiuscole e minuscole
lettere come le scriverebbe l'utente nella vita reale. Tecnicamente, queste informazioni vengono memorizzate
nel campo dei commenti del file passwd ma, per convenzione, la maggior parte di Linux e UNIX
i sistemi si aspettano che questo campo contenga il nome completo di ogni utente.
■ Nome utente: questo è il nome utilizzato per accedere come questo utente. Quando scegli un file
nome utente, non iniziare con un numero (ad esempio, 26jsmith). Inoltre, è meglio
utilizzare tutte le lettere minuscole, nessun carattere di controllo o spazi e un massimo di otto
personaggi. Il comando useradd consente fino a 32 caratteri, ma alcune applicazioni
non può gestire i nomi utente così a lungo. Strumenti come ps visualizzano invece gli ID utente (UID)
di nomi se i nomi sono troppo lunghi. Avere utenti denominati Jsmith e jsmith può causare
confusione con programmi (come sendmail) che non distinguono maiuscole e minuscole.
■ Password, verifica: selezionare il pulsante "Imposta una password adesso". Quindi inserisci il file
password che desideri che l'utente abbia nei campi Password e Verifica. Il
la password deve contenere almeno otto caratteri e contenere una combinazione di maiuscole
e lettere minuscole, numeri e punteggiatura. Non dovrebbe contenere parole vere,

260

Pagina 301

Capitolo 11: Gestione degli account utente

lettere ripetute o lettere di fila sulla tastiera. Attraverso questa interfaccia, tu


deve impostare una password che soddisfi i criteri di cui sopra. (Se vuoi aggiungere una password
che non soddisfa questi criteri, puoi usare il comando useradd, descritto
più avanti in questo capitolo.)
Seleziona Aggiungi per aggiungere l'utente al sistema. Viene aggiunta una voce per il nuovo account utente 11
il file / etc / passwd e il nuovo account di gruppo nel file / etc / group. Li descrivo
più avanti in questo capitolo.

La finestra Software consente di modificare un piccolo insieme di informazioni su un utente normale


dopo che è stato creato. Per modificare le informazioni utente in un secondo momento, selezionare l'account utente
si desidera modificare, fare clic sul pulsante Sblocca e immettere la password di root. A questo punto tu
può modificare il tipo di account (Standard o Amministratore), modificare la password dell'utente o
consentire all'account utente di accedere automaticamente (senza password). Viene visualizzata questa schermata
nella Figura 11.2.

FIGURA 11.2

Modifica gli account utente esistenti dalla finestra Utenti.

La finestra Utenti è stata progettata per semplificare il processo di creazione e modifica


profili utente. È possibile aggiungere o modificare altre funzionalità associate agli account utente
dalla riga di comando. La parte successiva di questo capitolo descrive come aggiungere l'utente
account dalla riga di comando con useradd o modificarli con usermod
comando.

261

Pagina 302
Parte III: diventare un amministratore di sistema Linux

Aggiunta di utenti con useradd


A volte, un sistema Linux non ha un desktop disponibile per utilizzare User Manager
finestra. Altre volte, potresti trovare più conveniente aggiungere più utenti contemporaneamente con un file
script di shell o modificare le funzionalità dell'account utente che non sono disponibili dalla finestra Utenti.
In questi casi, sono disponibili comandi che consentono di aggiungere e modificare account utente
dalla riga di comando.

Il metodo più semplice per creare un nuovo utente dalla shell è useradd
comando. Dopo aver aperto una finestra di Terminale con il permesso di root, devi semplicemente invocare
useradd al prompt dei comandi, con i dettagli del nuovo account come parametri.

L'unico parametro richiesto è il nome di accesso dell'utente, ma probabilmente vorrai includerlo


alcune informazioni aggiuntive prima di esso. Ogni elemento delle informazioni sull'account è preceduto da
un codice opzione di una sola lettera con un trattino davanti. Le opzioni disponibili con useradd
include il seguente:

■ -c "comment here": fornisce una descrizione del nuovo account utente. Tipicamente,
questo è il nome completo della persona. Sostituisci il commento con il nome dell'utente
account (-c Jake). Usa le virgolette per inserire più parole (ad esempio, - c "Jake
Jackson " ).
■ -d dir_home: imposta la directory home da utilizzare per l'account. L'impostazione predefinita è
nominalo come il nome di accesso e per inserirlo in / home. Sostituisci home_dir
con il nome della directory da usare (ad esempio, -d / mnt / homes / jake).
■ -D : anziché creare un nuovo account, salva le informazioni fornite come nuove
impostazioni predefinite per tutti i nuovi account che vengono creati.
■ -e expire_date: assegna la data di scadenza dell'account in AAAA-MM-GG per-
stuoia. Sostituisci expire_date con una data che desideri utilizzare. (Ad esempio, per far scadere un
account il 5 maggio 2017, utilizzare -e 2017-05-05.)
■ -f -1: imposta il numero di giorni dopo la scadenza di una password prima che l'account venga
manently disabili. L'impostazione predefinita, -1, disabilita l'opzione. L'impostazione di questo a 0 disabilita
l'account subito dopo la scadenza della password. Sostituisci -1 (è meno
uno) con il numero da utilizzare.
■ -g gruppo: imposta il gruppo principale (deve già esistere nel file / etc / group)
il nuovo utente sarà in. Sostituisci gruppo con il nome del gruppo (ad esempio, -g
ruota). Senza questa opzione, viene creato un nuovo gruppo che è lo stesso dell'utente
nome e viene utilizzato come gruppo principale dell'utente.
■ -G grouplist: aggiunge il nuovo utente all'elenco delimitato da virgole fornito di
gruppi supplementari (ad esempio, -G wheel, sales, tech, lunch). (Se usi
-G in seguito con usermod, assicurati di usare -aG e non solo -G. Se non lo fai, esistenti
i gruppi supplementari vengono rimossi e i gruppi che fornisci qui sono gli unici
quelli assegnati.)

262

Pagina 303

Capitolo 11: Gestione degli account utente

■ -k skel_dir : imposta la directory dello scheletro contenente i file di configurazione iniziale e


script di accesso che dovrebbero essere copiati nella home directory di un nuovo utente. Questo parametro
può essere utilizzato solo insieme all'opzione -m. Sostituisci skel_dir con
nome della directory da utilizzare. (Senza questa opzione, viene utilizzata la directory / etc / skel.)
■ -m: crea automaticamente la directory home dell'utente e copia i file nel file 11
directory dello scheletro (/ etc / skel) ad esso. (Questa è l'azione predefinita per Fedora e
RHEL, quindi non è richiesto. Non è l'impostazione predefinita per Ubuntu.)
■ -M: non crea la directory home del nuovo utente, anche se è impostato il comportamento predefinito
per crearlo.
■ -n: disattiva il comportamento predefinito di creazione di un nuovo gruppo che corrisponda al nome
e l'ID utente del nuovo utente. Questa opzione è disponibile con i sistemi Fedora e RHEL.
Altri sistemi Linux spesso assegnano invece un nuovo utente al gruppo denominato utenti.
■ -o: utilizzare con -u uid per creare un account utente con lo stesso UID di un altro
nome utente. (Questo ti consente di avere due nomi utente diversi con autorità
sullo stesso insieme di file e directory.)
■ -p passwd: immettere una password per l'account che si sta aggiungendo. Questo deve essere un file
password crittografata. Invece di aggiungere una password crittografata qui, puoi semplicemente
utilizzare il comando utente passwd in seguito per aggiungere una password per l' utente . (Per generare un file
password MD5 crittografata, digita openssl passwd .)
■ -s shell: specifica la shell dei comandi da utilizzare per questo account. Sostituisci shell
con la shell dei comandi (ad esempio, -s / bin / csh ).
■ -u user_id -Specificare il numero ID utente per l'account (ad esempio, -u 793).
Senza l'opzione -u, il comportamento predefinito è di assegnare automaticamente il successivo
numero disponibile. Sostituisci user_id con il numero ID.

Creiamo un account per un nuovo utente. Il nome completo dell'utente è Sara Green e il suo login
il nome è sara. Per iniziare, diventa utente root e digita il seguente comando:

# useradd -c "Sara Green" sara

Quindi, impostare la password iniziale per sara utilizzando il comando passwd. Ti viene chiesto di farlo
digita la password due volte:

# passwd sara
Modifica della password per l'utente sara.
Nuova password: **********
Digita nuovamente la nuova password: **********

Gli asterischi in questo esempio rappresentano la password digitata. Non viene effettivamente visualizzato nulla quando si digita la password.
Inoltre, tieni presente che l'esecuzione di passwd come utente root ti consente di aggiungere password brevi o vuote che gli utenti normali non possono
si aggiungono.

263

Pagina 304

Parte III: diventare un amministratore di sistema Linux

Nella creazione dell'account per Sara, il comando useradd esegue diverse azioni:

■ Legge i file /etc/login.defs e / etc / default / useradd per ottenere default


valori da utilizzare durante la creazione degli account.
■ Verifica i parametri della riga di comando per individuare i valori predefiniti da sostituire.
■ Crea una nuova voce utente nei file / etc / passwd e / etc / shadow basata su
valori predefiniti e parametri della riga di comando.
■ Crea eventuali nuove voci di gruppo nel file / etc / group. (Fedora crea un gruppo
utilizzando il nome del nuovo utente.)
■ Crea una directory home, basata sul nome dell'utente, nella directory / home.
■ Copia tutti i file presenti nella directory / etc / skel nella nuova home
directory. Questo di solito include gli script di accesso e di avvio dell'applicazione.

L'esempio precedente utilizza solo alcune delle opzioni useradd disponibili. La maggior parte degli account
le impostazioni vengono assegnate utilizzando i valori predefiniti. Puoi impostare più valori in modo esplicito, se lo desideri
per. Ecco un esempio che utilizza alcune altre opzioni per farlo:

# useradd -g users -G wheel, apache -s / bin / tcsh -c "Sara Green" sara

In questo caso, a useradd viene detto di rendere agli utenti il ​gruppo primario a cui appartiene sara (-g), aggiungila
ai gruppi wheel e apache, e assegna tcsh come sua shell di comando principale (-s). Una casa
la directory in / home sotto il nome dell'utente (/ home / sara) viene creata per impostazione predefinita. Questo comando
riga risulta in una riga simile alla seguente aggiunta al file / etc / passwd:

sara: x: 1002: 1007: Sara Green: / home / sara: / bin / tcsh

Ogni riga nel file / etc / passwd rappresenta un singolo record di account utente. Ogni campo
è separato dal successivo da un carattere di due punti (:). La posizione del campo nella sequenza
determina di cosa si tratta. Il nome di accesso è il primo. Il campo della password contiene una x perché,
in questo esempio, il file della password shadow viene utilizzato per memorizzare i dati della password crittografata (in formato
/ etc / shadow).

L'ID utente selezionato da useradd è 1002. L'ID gruppo principale è 1007, che corrisponde a
un gruppo sara privato nel file / etc / group. Il campo del commento è stato impostato correttamente su Sara
Verde, la directory home è stata automaticamente assegnata come / home / sara e il comando
shell è stata assegnata come / bin / tcsh, esattamente come specificato con le opzioni useradd.

Tralasciando molte delle opzioni (come ho fatto nel primo esempio useradd), i valori predefiniti sono
assegnato nella maggior parte dei casi. Ad esempio, non utilizzando -g sales o -G wheel, apache, the
il nome del gruppo mary è stato assegnato al nuovo utente. Alcuni sistemi Linux (diversi da Fedora
e RHEL) assegnano gli utenti come nome del gruppo per impostazione predefinita. Allo stesso modo, escludendo -s / bin / tcsh
fa sì che / bin / bash venga assegnato come shell predefinita.
Il file / etc / group contiene informazioni sui diversi gruppi sul tuo sistema Linux
e gli utenti che appartengono a loro. I gruppi sono utili per consentire a più utenti di condividere

264

Pagina 305

Capitolo 11: Gestione degli account utente

accesso agli stessi file negando l'accesso ad altri. Ecco la voce / etc / group
creato per sara:

sara: x: 1007:

Ogni riga nel file del gruppo contiene il nome di un gruppo, una password di gruppo (solitamente compilata 11
con una x), il numero ID del gruppo ad esso associato e un elenco di utenti in quel gruppo. Di
impostazione predefinita, ogni utente viene aggiunto al proprio gruppo, a partire dal successivo GID disponibile,
a partire da 1000.

Impostazione delle impostazioni predefinite dell'utente


Il comando useradd determina i valori predefiniti per i nuovi account leggendo il file
/etc/login.defs e / etc / default / useradd file. È possibile modificare tali impostazioni predefinite da
modificare manualmente i file con un editor di testo standard. Sebbene login.defs sia diverso
su diversi sistemi Linux, il seguente è un esempio contenente molte delle impostazioni
potresti trovare in un file login.defs:

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
GID_MIN 1000
GID_MAX 60000
CREATE_HOME sì

Tutte le righe non commentate contengono coppie parola chiave / valore. Ad esempio, la parola chiave PASS_
MIN_LEN è seguito da uno spazio bianco e dal valore 5. Questo dice a useradd che il file
la password utente deve contenere almeno cinque caratteri. Altre linee consentono di personalizzare il file
intervallo valido di numeri ID utente assegnati automaticamente o numeri ID gruppo. (Fedora si avvia
con UID 1000; i sistemi precedenti iniziavano con UID 100.) Una sezione di commenti che lo spiega
lo scopo della parola chiave precede ogni parola chiave (che ho modificato qui per risparmiare spazio). Alterare
un valore predefinito è semplice come modificare il valore associato a una parola chiave e salvare il file
file prima di eseguire il comando useradd.

Se si desidera visualizzare altre impostazioni predefinite, fare riferimento al file / etc / default / useradd.
Puoi anche vedere le impostazioni predefinite digitando il comando useradd con l'opzione -D, come
segue:

# useradd -D
GRUPPO = 100
HOME = / home
INATTIVO = -1
SCADENZA =
SHELL = / bin / bash
SKEL = / etc / skel
CREATE_MAIL_SPOOL = sì

265

Pagina 306

Parte III: diventare un amministratore di sistema Linux


È inoltre possibile utilizzare l'opzione -D per modificare i valori predefiniti. Quando viene eseguito con questo flag, useradd
si astiene dal creare effettivamente un nuovo account utente; invece, salva qualsiasi ulteriore
opzioni fornite come nuovi valori predefiniti in / etc / default / useradd. Non tutti gli useradd
le opzioni possono essere utilizzate insieme all'opzione -D. Puoi utilizzare solo le cinque opzioni
elencati qui.

■ -b home_predefinita: consente di impostare la directory predefinita in cui si trovano le directory home dell'utente
creato. Sostituisci default_home con il nome della directory da utilizzare (ad esempio, -b
/box auto). Di solito, questo è / home.
■ -e default_expire_date: imposta la data di scadenza predefinita in cui l'utente
l'account è disabilitato. Il valore default_expire_date dovrebbe essere sostituito con un
data nel formato AAAA-MM-GG (ad esempio, -e 2011-10-17).
■ -f default_inactive: consente di impostare il numero di giorni dopo la scadenza di una password
prima che l'account venga disabilitato. Sostituisci default_inactive con un numero
che rappresenta il numero di giorni (ad esempio, -f 7).
■ -g gruppo_predefinito: imposta il gruppo predefinito in cui verranno inseriti i nuovi utenti.
Normalmente, useradd crea un nuovo gruppo con lo stesso nome e numero ID di
l'utente. Sostituisci default_group con il nome del gruppo da usare (ad esempio, -g
orsi).
■ -s default_shell: imposta la shell predefinita per i nuovi utenti. In genere, questo è
/ bin / bash. Sostituisci default_shell con il percorso completo della shell that
vuoi come predefinito per i nuovi utenti (ad esempio, -s / usr / bin / ksh.

Per impostare uno qualsiasi dei valori predefiniti, fornire prima l'opzione -D e aggiungere i valori predefiniti che si desidera impostare. Per
esempio, per impostare la posizione della directory home predefinita su / home / everyone e quella predefinita
shell in / bin / tcsh, digitare quanto segue:

# useradd -D -b / home / tutti -s / bin / tcsh

Oltre a configurare le impostazioni predefinite dell'utente, un amministratore può creare file predefiniti che sono
copiato nella home directory di ogni utente per l'uso. Questi file possono includere script di accesso e shell
file di configurazione (come .bashrc).

Altri comandi utili per lavorare con gli account utente includono usermod (to
modificare le impostazioni per un account esistente) e userdel (per eliminare un account utente esistente).

Modifica utenti con usermod


Il comando usermod fornisce un metodo semplice e diretto per cambiare account
parametri. Molte delle opzioni disponibili con esso rispecchiano quelle trovate in useradd. Il
le opzioni che possono essere utilizzate con questo comando includono quanto segue:

■ -c nome utente: modifica la descrizione associata all'account utente. Sostituire


username con il nome dell'account utente (-c jake). Usa le virgolette per entrare
più parole (ad esempio, -c "Jake Jackson").

266

Pagina 307

Capitolo 11: Gestione degli account utente

■ -d dir_home: consente di modificare la directory home da utilizzare per l'account. L'impostazione predefinita è
per nominarlo come il nome di accesso e per inserirlo in / home . Sostituisci home_dir
con il nome della directory da usare (ad esempio, -d / mnt / homes / jake).
■ -e expire_date: assegna una nuova data di scadenza per l'account in AAAA-MM-GG
formato. Sostituisci expire_date con una data che desideri utilizzare. (Per il 15 ottobre 2017, 11
utilizzare -e 2017-10-15.)
■ -f -1: modifica il numero di giorni dopo la scadenza di una password fino a quando l'account è
disabilitato permanentemente. L'impostazione predefinita, -1, disabilita l'opzione. Impostandolo a 0 dis-
Abilita l'account subito dopo la scadenza della password. Sostituisci -1 con il
numero da usare.
■ -g group: modifica il gruppo principale (come elencato nel file / etc / group) dell'utente
sarà in. Sostituisci gruppo con il nome del gruppo (ad esempio, -g wheel).
■ -G grouplist : imposta i gruppi secondari dell'utente sui valori separati da virgole
elenco di gruppi. Se l'utente è già in almeno un gruppo oltre al privato dell'utente
gruppo, devi aggiungere anche l'opzione -a (-Ga). In caso contrario, l'utente appartiene solo a
il nuovo insieme di gruppi e perde l'appartenenza a tutti i gruppi precedenti.
■ -l login_name: modifica il nome di accesso dell'account.

■ -L: blocca l'account inserendo un punto esclamativo all'inizio del file


password crittografata in / etc / shadow. Questo blocca l'account, pur consentendo
di lasciare intatta la password (l'opzione -U la sblocca).
■ -m: disponibile solo quando si utilizza –d, causa il contenuto della home dell'utente
directory da copiare nella nuova directory.
■ -o: utilizzare solo con -u uid per rimuovere la restrizione secondo cui gli UID devono essere univoci.
■ -s shell: specifica una shell dei comandi diversa da utilizzare per questo account. Sostituire
shell con il comando shell (ad esempio, -s bash).
■ -u user_id -Cambiare il numero ID utente per l'account. Sostituisci user_id con
il numero ID (ad esempio, -u 1474).
■ -U: sblocca l'account utente (rimuovendo il punto esclamativo all'inizio
della password crittografata).

Di seguito sono riportati esempi del comando usermod:

# usermod -s / bin / csh chris


# usermod -Ga vendite, marketing, chris

Il primo esempio cambia la shell nella shell csh per l'utente chiamato chris. Nel secondo
Ad esempio, vengono aggiunti gruppi supplementari per l'utente chris. L'opzione -a (-Ga) fa
assicurarsi che i gruppi supplementari vengano aggiunti a tutti i gruppi esistenti per l'utente chris. Se
-a non viene utilizzato, i gruppi supplementari esistenti per chris vengono cancellati e il nuovo elenco di
gruppi include gli unici gruppi supplementari assegnati a quell'utente.

267

Pagina 308

Parte III: diventare un amministratore di sistema Linux

Eliminazione di utenti con userdel


Proprio come usermod viene utilizzato per modificare le impostazioni utente e useradd viene utilizzato per creare utenti,
userdel viene utilizzato per rimuovere gli utenti. Il seguente comando rimuove l'utente chris:

# userdel -r chris

Qui, l'utente chris viene rimosso dal file / etc / password. L'opzione –r rimuove il file
anche la directory home dell'utente. Se scegli di non usare –r, come segue, la directory home
per chris non viene rimosso:

# userdel chris

Tieni presente che la semplice rimozione dell'account utente non cambia nulla sul file
file che l'utente lascia nel sistema (ad eccezione di quelli che vengono eliminati quando si utilizza -r).
Tuttavia, la proprietà dei file lasciati sembra appartenere all'utente del proprietario precedente
Numero ID quando si esegue ls -l sui file.

Prima di eliminare l'utente, potresti voler eseguire un comando find per trovare tutti i file che
verrebbe lasciato indietro dall'utente. Dopo aver eliminato l'utente, è possibile cercare l'ID utente su
trova i file lasciati. Ecco due comandi find per eseguire queste operazioni:

# trova / -user chris -ls


# trova / -uid 504 -ls

Poiché i file che non sono assegnati a nessun nome utente sono considerati un rischio per la sicurezza, esso
è una buona idea trovare quei file e assegnarli a un account utente reale. Ecco un esempio
di un comando find che trova tutti i file nel filesystem che non sono associati a nessuno
utente (i file sono elencati per UID):

# trova / -nouser -ls

Capire gli account di gruppo


Gli account di gruppo sono utili se desideri condividere un set di file con più utenti. voi
può creare un gruppo e modificare l'insieme di file da associare a quel gruppo. La radice
l'utente può assegnare gli utenti a quel gruppo in modo che possano avere accesso ai file in base a quel gruppo
autorizzazione. Considera il file e la directory seguenti:

$ ls -ld / var / salesdocs /var/salesdocs/file.txt


drwxrwxr-x. 2 vendite di radici 4096 14 gennaio 09:32 / var / salesstuff /
-rw-rw-r--. 1 vendite di root 0 gennaio 14 09:32 /var/salesstuff/file.txt

Guardando i permessi sulla directory / var / salesdocs (rwxrwxr-x), vedrai che il


la seconda serie di rwx mostra che qualsiasi membro del gruppo (vendite) ha il permesso di leggere i file
in quella directory (r è letto), creare ed eliminare file da quella directory (w è scrittura) e
passare a quella directory (x è eseguito). Il file denominato file.txt può essere letto e modificato
dai membri del gruppo di vendita (in base al secondo rw-).
268

Pagina 309

Capitolo 11: Gestione degli account utente

Utilizzo di account di gruppo


Ogni utente è assegnato a un gruppo principale. In Fedora e RHEL, per impostazione predefinita, quel gruppo è
un nuovo gruppo con lo stesso nome dell'utente. Quindi, se l'utente si chiamava sara, il gruppo
assegnata a lei sarebbe stata anche sara. Il gruppo principale è indicato dal numero nel file
terzo campo di ogni voce nel file / etc / passwd, ad esempio, l'ID gruppo 1007 qui:
11
sara: x: 1002: 1007: Sara Green: / home / sara: / bin / tcsh

Quella voce punta a una voce nel file / etc / group:

sara: x: 1007:

Passiamo agli account utente e di gruppo di sara per esempi. Ecco alcuni fatti su
utilizzando i gruppi:

■ Quando sara crea un file o una directory, per impostazione predefinita, viene assegnato quel file o directory
al gruppo principale di sara (chiamato anche sara).
■ L'utente sara può appartenere a zero o più gruppi supplementari. Se sara fosse un
membro di gruppi denominati vendite e marketing, tali voci potrebbero essere simili a
seguendo nel file / etc / group:

vendite: x: 1302: joe, bill, sally, sara


marketing: x: 1303: mike, terry, sara

■ L'utente sara non può aggiungersi a un gruppo supplementare. Non sa nemmeno aggiungere
un altro utente al suo gruppo sara. Solo qualcuno con privilegi di root può assegnare utenti
ai gruppi.
■ Qualsiasi file assegnato al gruppo di vendita o di marketing è accessibile a sara con
gruppo e altre autorizzazioni (a seconda di quale fornisce il maggior accesso). Se Sara vuole
per creare un file con i gruppi di vendita o di marketing ad esso assegnati, potrebbe utilizzare
il comando newgrp. In questo esempio, sara usa il comando newgrp per avere
le vendite diventano temporaneamente il suo gruppo principale e crea un file:

[sara] $ touch file1


[sara] $ newgrp sales
[sara] $ touch file2
[sara] $ ls -l file *
-rw-rw-r--. 1 sara sara 0 Jan 18 22:22 file1
-rw-rw-r--. 1 sara sales 0 Jan 18 22:23 file2
[sara] $ exit

È anche possibile consentire agli utenti di diventare temporaneamente membri di un gruppo con l'estensione
comando newgrp senza essere effettivamente un membro di quel gruppo. Per farlo, qualcuno con
i permessi di root possono usare gpasswd per impostare una password di gruppo (come gpasswd sales).Dopo
che, qualsiasi utente può digitare newgrp sales in una shell e utilizzare temporaneamente le vendite come loro
gruppo principale inserendo semplicemente la password del gruppo quando richiesto.

269

Pagina 310

Parte III: diventare un amministratore di sistema Linux

Creazione di account di gruppo


Come utente root, puoi creare nuovi gruppi dalla finestra Gestione utenti o dal file
riga di comando con il comando groupadd. Inoltre, come notato in precedenza, vengono creati i gruppi
automaticamente quando viene creato un account utente.

I numeri ID gruppo compresi tra 0 e 999 vengono assegnati a gruppi amministrativi speciali. Per
Ad esempio, il gruppo radice è associato a GID 0. I gruppi regolari iniziano da 1000 per il rosso
Hat Enterprise Linux e Fedora. Sui primi sistemi UNIX, i GID sono passati da 0 a 99. Altro
I sistemi Linux riservano GID da 0 a 500 per i gruppi amministrativi.

Di seguito sono riportati alcuni esempi di creazione di un account di gruppo con il comando groupadd:

# groupadd re
# groupadd -g 1325 jolly

Negli esempi appena mostrati, il gruppo denominato kings viene creato con il successivo disponibile
ID gruppo. Successivamente, il gruppo jolly viene creato utilizzando l'ID gruppo 1325. Alcuni
agli amministratori piace utilizzare un numero di gruppo non definito inferiore a 1000 in modo che il gruppo che creano
non si intromette nelle designazioni di gruppo superiori a 1000 (quindi i numeri UID e GID possono andare
lungo in parallelo).

Per modificare un gruppo in un secondo momento, utilizzare il comando groupmod. Per esempio:

# groupmod -g 330 jolly


# groupmod -n jacks jolly

Nel primo esempio, l'ID di gruppo per i jolly viene modificato in 330. Nel secondo, il file
nome jolly viene cambiato in jack. Se si desidera quindi assegnare uno dei gruppi come
gruppi supplementari a un utente, puoi usare il comando usermod (come descritto in precedenza in
questo capitolo).

Gestione degli utenti nell'azienda


Il metodo Linux di base per la gestione degli account utente e di gruppo non è cambiato rispetto a
i primi sistemi UNIX sono stati sviluppati decenni fa. Tuttavia, come sono diventati i sistemi Linux
utilizzato in modi più complessi, funzionalità per la gestione di utenti, gruppi e autorizzazioni
ad essi associati sono stati aggiunti al modello base utente / gruppo in modo che potesse essere:

■ Più flessibile: nel modello base, è possibile assegnare solo un utente e un gruppo
a ogni file. Inoltre, gli utenti normali non hanno la possibilità di assegnare autorizzazioni specifiche a
utenti o gruppi diversi e poca flessibilità nell'impostazione di file collaborativi /
directory. I miglioramenti a questo modello consentono agli utenti regolari di impostare speciali
directory collaborative (utilizzando funzionalità come sticky bit e set GID bit
directory). Utilizzando gli elenchi di controllo di accesso (ACL), qualsiasi utente può anche assegnare specifici file
autorizzazioni per file e directory a tutti gli utenti e gruppi che desiderano.

270

Pagina 311

Capitolo 11: Gestione degli account utente

■ Più centralizzato: quando si dispone di un solo computer, memorizzazione delle informazioni sugli utenti
per tutti gli utenti nel file / etc / password probabilmente non è un problema. Tuttavia, se
devi autenticare lo stesso gruppo di utenti su migliaia di sistemi Linux,
centralizzare tali informazioni può far risparmiare molto tempo e angoscia. cappello rosso
Enterprise Linux include funzionalità che consentono di autenticare gli utenti da LDAP 11
server o server Microsoft Active Directory.

Le sezioni seguenti descrivono come utilizzare funzionalità come gli elenchi di controllo di accesso (ACL)
e directory condivise (sticky bit e set di directory di bit GID) per fornire modi potenti per
condividere selettivamente file e directory. Successivamente, descriverò come gestire gli account utente da
server di autenticazione centralizzati utilizzando la finestra Configurazione autenticazione.

Impostazione delle autorizzazioni con gli elenchi di controllo degli accessi


La funzione Access Control List (ACL) è stata creata in modo che gli utenti normali potessero condividere i propri file
e directory selettivamente con altri utenti e gruppi. Con gli ACL, un utente può consentire ad altri
per leggere, scrivere ed eseguire file e directory senza lasciare quegli elementi del filesystem
completamente aperto o che richiede all'utente root di cambiare l'utente o il gruppo a lui assegnato.

Ecco alcune cose da sapere sugli ACL:

■ Per poter utilizzare gli ACL, devono essere abilitati su un filesystem quando quel filesystem
è montato.
■ In Fedora e Red Hat Enterprise Linux, gli ACL vengono abilitati automaticamente su qualsiasi file
filesystem creato quando il sistema è installato.
■ Se crei un filesystem dopo l'installazione (come quando aggiungi un disco rigido),
devi assicurarti che l'opzione di montaggio acl sia usata quando il filesystem è
montato (ne parleremo più avanti).
■ Per aggiungere ACL a un file, utilizzare il comando setfacl; per visualizzare gli ACL impostati su un file,
usi il comando getfacl.
■ Perimpostare gli ACL su qualsiasi file o directory, è necessario essere l'effettivo proprietario (utente) assegnato
ad esso. In altre parole, l'assegnazione di autorizzazioni utente o gruppo con setfacl lo fa
non ti autorizza a modificare gli ACL su quei file da solo.
■ Poiché più utenti e gruppi possono essere assegnati a un file / directory, il file
l'autorizzazione di un utente si basa su un'unione di tutte le designazioni di utenti / gruppi a cui
loro appartengono. Ad esempio, se un file aveva l'autorizzazione di sola lettura (r--) per le vendite
group e read / write / execute (rwx) per il gruppo di mercato, a cui apparteneva mary
entrambi, Mary avrebbe il permesso rwx.

Se gli ACL non sono abilitati sul filesystem che stai tentando di usare con setfacl, consulta la sezione "Abilitazione degli ACL" più avanti
in questo capitolo per informazioni su come montare un filesystem con gli ACL abilitati.

271

Pagina 312

Parte III: diventare un amministratore di sistema Linux

Impostazione degli ACL con setfacl


Utilizzando il comando setfacl, puoi modificare i permessi (-m) o rimuovere i permessi ACL
(-X). Quello che segue è un esempio della sintassi del comando setfacl:

setfacl -mu: nomeutente : nomefile rwx

Nell'esempio appena mostrato, l'opzione di modifica (-m) è seguita dalla lettera u, indicante
che stai impostando le autorizzazioni ACL per un utente. Dopo i due punti (:), indichi il
nome utente, seguito da altri due punti e dalle autorizzazioni che desideri assegnare. Come con il
chmod, puoi assegnare permessi di lettura (r), scrittura (w) e / o esecuzione (x) al
utente o gruppo (nell'esempio, viene fornita l'autorizzazione rwx completa). L'ultimo argomento viene sostituito
dal nome file effettivo che stai modificando.

Di seguito sono riportati alcuni esempi dell'utente mary che utilizza il comando setfacl per aggiungere
autorizzazione per altri utenti e gruppi su un file:

[mary] $ touch /tmp/memo.txt


[mary] $ ls -l /tmp/memo.txt
-rw-rw-r--. 1 maria maria 0 gennaio 21 09:27 /tmp/memo.txt
[mary] $ setfacl -mu: bill: rw /tmp/memo.txt
[mary] $ setfacl -mg: sales: rw /tmp/memo.txt

Nell'esempio precedente, mary ha creato un file denominato /tmp/memo.txt. Utilizzando setfacl


comando, ha modificato i permessi (-m) per l'utente denominato bill in modo che ora abbia lettura / scrittura
(rw) autorizzazioni per quel file. Quindi ha modificato le autorizzazioni per le vendite di gruppo così chiunque
l'appartenenza a quel gruppo avrebbe anche i permessi di lettura / scrittura. Guarda ls -l e
getfacl ora su quel file:

[mary] $ ls -l /tmp/memo.txt
-rw-rw-r - + 1 mary mary 0 gen 21 09:27 /tmp/memo.txt
[mary] $ getfacl /tmp/memo.txt
# file: tmp / memo.txt
# proprietario: mary
# gruppo: mary
utente :: rw-
utente: bill: rw-
gruppo :: rw-
gruppo: vendite: rw-
maschera :: rw-
altro :: r--

Dall'output ls -l, notare il segno più (+) nell'output rw-rw-r - +. Il segno più
indica che gli ACL sono impostati sul file, quindi sai di eseguire il comando getfacl per vedere
come vengono impostati gli ACL. L'output mostra mary come proprietario e gruppo (lo stesso di quello che vedi con
ls -l), i permessi utente regolari (rw-) e i permessi per la fattura utente ACL (rw-). Il
lo stesso vale per le autorizzazioni di gruppo e le autorizzazioni per le vendite di gruppo. Altre autorizzazioni
sono r--.

272
Pagina 313

Capitolo 11: Gestione degli account utente

La linea della maschera (vicino alla fine del precedente esempio getfacl) richiede qualcosa di speciale
discussione. Non appena si impostano gli ACL su un file, viene impostata l'autorizzazione di gruppo regolare sul file
una maschera dell'autorizzazione massima che un utente o un gruppo ACL può avere su un file. Quindi, anche se tu
fornire a un individuo più autorizzazioni ACL di quelle consentite dalle autorizzazioni di gruppo, il
le autorizzazioni effettive dell'individuo non superano le autorizzazioni del gruppo. Per esempio: 11
[mary] $ chmod 644 /tmp/memo.txt
[mary] $ getfacl /tmp/memo.txt
# file: tmp / memo.txt
# proprietario: mary
# gruppo: mary
utente :: rw-
utente: bill: rw- #effective: r--
gruppo :: rw- #effective: r--
gruppo: vendite: rw- #effective: r--
maschera :: r--
altro :: r--

Si noti nell'esempio precedente che anche se la fattura dell'utente e le vendite di gruppo hanno rw-
permessi, i loro permessi effettivi sono r--. Quindi, Bill o chiunque altro nelle vendite non lo sarebbe
in grado di modificare il file a meno che mary non apra nuovamente i permessi (ad esempio, digitando
chmod 664 /tmp/memo.txt).

Impostazione degli ACL predefiniti


L'impostazione degli ACL predefiniti su una directory consente di ereditare gli ACL. Ciò significa che
quando vengono creati nuovi file e directory in quella directory, vengono assegnati gli stessi
ACL. Per impostare un'autorizzazione ACL utente o gruppo come predefinita, aggiungi ad: all'utente o
designazione di gruppo. Considera il seguente esempio:

[mary] $ mkdir / tmp / mary


[mary] $ setfacl -md: g: market: rwx / tmp / mary /
[mary] $ getfacl / tmp / mary /
# file: tmp / mary /
# proprietario: mary
# gruppo: mary
utente :: rwx
gruppo :: rwx
altro :: rx
predefinito: utente :: rwx
predefinito: gruppo :: rwx
predefinito: gruppo: vendite: rwx
predefinito: gruppo: mercato: rwx
predefinito: mask :: rwx
predefinito: altro :: rx

Per assicurarti che l'ACL predefinito funzioni, crea una sottodirectory. Quindi eseguire nuovamente getfacl.
Vedrai che vengono aggiunte linee predefinite per utente, gruppo, maschera e altro, che sono
ereditato dagli ACL della directory.

273

Pagina 314

Parte III: diventare un amministratore di sistema Linux

[mary] $ mkdir / tmp / mary / test


[mary] $ getfacl / tmp / mary / test
# file: tmp / mary / test
# proprietario: mary
# gruppo: mary
utente :: rwx
gruppo :: rwx
gruppo: vendite: rwx
gruppo: mercato: rwx
maschera
altro :: rx :: rwx
predefinito: utente :: rwx
predefinito: gruppo :: rwx
predefinito: gruppo: vendite: rwx
predefinito: gruppo: mercato: rwx
predefinito: mask :: rwx
predefinito: altro :: rx

Notare che quando si crea un file in quella directory, le autorizzazioni ereditate sono diverse.
Poiché un file normale viene creato senza l'autorizzazione di esecuzione, l'autorizzazione effettiva è
ridotto a rw-:

[mary @ cnegus ~] $ touch /tmp/mary/file.txt


[mary @ cnegus ~] $ getfacl /tmp/mary/file.txt
# file: tmp / mary / file.txt
# proprietario: mary
# gruppo: mary
utente :: rw-
gruppo :: rwx #effective: rw-
gruppo: vendite: rwx # efficace: rw-
gruppo: mercato: rwx # efficace: rw-
maschera :: rw-
altro :: r--

Abilitazione degli ACL


I filesystem Linux di base che crei dopo l'installazione hanno solo un utente e un gruppo
assegnato a ogni file e directory e non include il supporto ACL per impostazione predefinita. Linux ext
I tipi di filesystem (ext2, ext3 e ext4) possono aggiungere il supporto ACL tramite un'opzione di montaggio. Aggiungere
Supporto ACL, è necessario aggiungere l'opzione di montaggio acl quando lo si monta. Puoi farlo in
diversi modi:

■ Aggiungere l'opzione acl al quinto campo della riga nel file / etc / fstab that
monta automaticamente il filesystem all'avvio del sistema.
■ Impiantare la riga acl nel campo Default mount options nel super block del filesystem,
quindi l'opzione acl viene utilizzata se il filesystem è montato automaticamente o manualmente.
■ Aggiungere l'opzione acl alla riga di comando mount quando si monta il filesystem
manualmente con il comando mount.

274

Pagina 315

Capitolo 11: Gestione degli account utente

Tieni presente che nei sistemi Fedora e Red Hat Enterprise Linux, devi solo aggiungere
l'opzione di montaggio acl su quei filesystem che crei dopo l'installazione di Linux. L'anaconda
installer aggiunge automaticamente il supporto ACL a ogni filesystem che crea durante il tempo di installazione.
Per verificare che l'opzione acl sia stata aggiunta a un filesystem, determinare il nome del dispositivo
associato al filesystem ed eseguire il comando tune2fs -l per visualizzare il file 11
opzioni di montaggio. Per esempio:

# mount | grep home


/ dev / mapper / mybox-home su / home tipo ext4 (rw)
# tune2fs -l / dev / mapper / mybox-home | grep "opzioni di montaggio"
Opzioni di montaggio predefinite: user_xattr acl

Per prima cosa, ho digitato il comando mount per vedere un elenco di tutti i filesystem attualmente montati,
limitando l'output grepping per la parola home (perché stavo cercando il filesystem
montato su / home). Dopo aver visto il nome del dispositivo del filesystem, l'ho usato come opzione per
tune2fs -l per trovare la riga delle opzioni di montaggio predefinite. Lì, ho potuto vedere le opzioni di montaggio
user_xattr (per attributi estesi come SELinux) e acl sono stati entrambi impiantati nel file
superblocco del filesystem in modo che vengano usati quando il filesystem è stato montato.

Se il campo Opzioni di montaggio predefinite è vuoto (come quando hai appena creato un nuovo file
filesystem), puoi aggiungere l'opzione di montaggio acl usando il comando tune2fs -o. Per esempio,
Ho creato un filesystem su un'unità USB rimovibile che è stata assegnata come dispositivo / dev / sdc1.
Per impiantare l'opzione di montaggio acl e verificare che sia presente, ho eseguito i seguenti comandi:

# tune2fs -o acl / dev / sdc1


# tune2fs -l / dev / sdc1 | grep "opzioni di montaggio"
Opzioni di montaggio predefinite: acl

Puoi verificare che abbia funzionato rimontando il filesystem e provando a usare setfacl
comando su un file in quel filesystem.

Un secondo modo per aggiungere il supporto acl a un filesystem è aggiungere l'opzione acl alla riga del file
/ etc / fstab che monta automaticamente il filesystem all'avvio. Quello che segue è
un esempio di come apparirebbe una riga che monta il filesystem ext4 che si trova nel file
/ dev / sdc1 nella directory / var / stuff:
/ dev / sdc1 / var / stuff ext4 acl 12

Invece della voce di default nel quarto campo, ho aggiunto acl. Se ci fossero già
opzioni impostate in quel campo, aggiungi una virgola dopo l'ultima opzione e aggiungi acl. La prossima volta che il file
il filesystem è montato, gli ACL sono abilitati. Se il filesystem fosse già montato, potrei
digita il seguente comando mount come root per rimontare il filesystem, usando acl o qualsiasi file
altri valori aggiunti al file / etc / fstab:

# mount -o rimonta / dev / sdc1

Un terzo modo per aggiungere il supporto ACL a un filesystem è montare il filesystem manualmente
e richiedere specificatamente l'opzione di montaggio acl. Quindi, se non ci sono voci per il filesystem

275

Pagina 316

Parte III: diventare un amministratore di sistema Linux

nel file / etc / fstab, dopo aver creato il punto di montaggio (/ var / stuff), digitare quanto segue
comando per montare il filesystem e includere il supporto ACL:

# mount -o acl / dev / sdc1 / var / stuff

Tieni presente che il comando mount monta il filesystem solo temporaneamente. quando
il sistema si riavvia, il filesystem non viene montato di nuovo, a meno che non si aggiunga una voce al file
/ etc / fstab file.

Aggiunta di directory per consentire agli utenti di collaborare


Un insieme speciale di tre bit di autorizzazione viene generalmente ignorato quando si utilizza chmod
comando per modificare i permessi sul filesystem. Questi bit possono impostare permessi speciali
su comandi e directory. L'obiettivo di questa sezione è impostare i bit che ti aiutano
creare directory da utilizzare per la collaborazione.

Come per i bit di lettura, scrittura ed esecuzione per utente, gruppo e altri, questi file speciali
i bit di autorizzazione possono essere impostati con il comando chmod. Se, ad esempio, esegui chmod
775 / mnt / xyz, il permesso implicito è in realtà 0775. Per cambiare i permessi, puoi
sostituire il numero 0 con qualsiasi combinazione di questi tre bit (4, 2 e 1) oppure è possibile utilizzare
valori in lettere invece. (Fare riferimento al Capitolo 4, "Spostarsi nel filesystem", se necessario
essere ricordato su come funzionano i permessi.) Le lettere e i numeri sono mostrati nella Tabella 11.1.

TABELLA 11.1 Comandi per creare e utilizzare file

Nome Valore numerico Valore della lettera

Imposta bit ID utente 4 u+s

Imposta bit ID gruppo 2 g+s

Un po 'appiccicoso 1 o+t

I bit a cui sei interessato per la creazione di directory collaborative sono il bit ID gruppo impostato
(2) e sticky bit (1). Se sei interessato ad altri usi dell'ID utente impostato e dell'ID gruppo impostato
bit, fare riferimento alla barra laterale "Utilizzo dei comandi Set UID e Set GID Bit".

Creazione di directory di collaborazione di gruppo (imposta bit GID)


Creando una directory GID impostata, tutti i file creati in quella directory vengono assegnati al file
gruppo assegnato alla directory stessa. L'idea è di avere una directory in cui tutti i membri
di un gruppo può condividere file ma comunque proteggerli da altri utenti. Ecco una serie di passaggi per
creando una directory collaborativa per tutti gli utenti nel gruppo che ho creato chiamato vendite:

1. Crea un gruppo da utilizzare per la collaborazione:


# groupadd -g 301 vendite

276
Pagina 317

Capitolo 11: Gestione degli account utente

2. Aggiungi alcuni utenti al gruppo con cui desideri condividere file (ho usato mary):
# usermod -aG sales mary

3. Crea la directory collaborativa:


# mkdir / mnt / salestools 11

Utilizzo dei comandi Set UID e Set GID Bit


I bit set UID e set GID vengono utilizzati su file eseguibili speciali che consentono l'esecuzione dei comandi set
diversamente dalla maggior parte. Normalmente, quando un utente esegue un comando, quel comando viene eseguito con quell'utente
permessi. In altre parole, se eseguo il comando vi come chris, quell'istanza del comando vi lo farebbe
avere i permessi per leggere e scrivere file che l'utente chris potrebbe leggere e scrivere.

I comandi con l'UID impostato o i bit GID impostati sono diversi. È il proprietario e il gruppo a cui è stato assegnato
il comando, rispettivamente, che determina i permessi che il comando ha per accedere alle risorse
sul computer. Quindi un comando set UID di proprietà di root verrebbe eseguito con i permessi di root; un GID impostato
il comando di proprietà di apache avrebbe i permessi del gruppo apache.

Esempi di applicazioni che hanno impostato i bit UID attivati ​sono i comandi su e newgrp. In entrambi
in questi casi, i comandi devono essere in grado di agire come utente root per svolgere il proprio lavoro. Tuttavia, in realtà
ottenere i permessi di root, un utente deve fornire una password. Puoi dire che su è un comando di bit UID impostato perché
degli s dove solitamente va il primo bit di esecuzione (x):

$ ls / bin / su
-rwsr-xr-x. 1 radice radice 30092 30 gennaio 07:11 su

4. Assegna le vendite di gruppo alla directory:


# chgrp sales / mnt / salestools

5. Modificare l'autorizzazione della directory in 2775. Questo attiva il bit ID gruppo impostato (2), pieno
rwx per l'utente (7), rwx per il gruppo (7) e rx (5) per altri:
# chmod 2775 / mnt / salestools

6. Diventa mary (corri su - mary). Come Mary, crea un file nella directory condivisa e
guarda le autorizzazioni. Quando elenchi le autorizzazioni, puoi vedere che la directory
è una directory GID impostata perché appare una s minuscola dove il gruppo viene eseguito per-
la missione dovrebbe essere (rwxrw s r-x):
# su - maria
[mary] $ touch /mnt/salestools/test.txt
[mary] $ ls -ld / mnt / salestools / /mnt/salestools/test.txt
drwxrw s r-x. 2 root sales 4096 22 gennaio 14:32 / mnt / salestools /
-rw-rw-r--. 1 mary sales 0 gen 22 14:32 /mnt/salestools/test.txt

In genere, a un file creato da mary viene assegnato il gruppo mary. Ma perché


test.txt è stato creato in una directory di bit dell'ID di gruppo impostato, il file viene assegnato alle vendite

277

Pagina 318

Parte III: diventare un amministratore di sistema Linux

gruppo. Ora, chiunque appartenga al gruppo di vendita può leggere o scrivere quel file, in base a
autorizzazioni di gruppo.

Creazione di directory di eliminazione limitate (sticky bit)


Una directory di eliminazione limitata viene creata attivando il bit sticky di una directory. Cosa rende un file
directory di cancellazione limitata diversa da altre directory? Normalmente, se il permesso di scrittura
è aperto a un utente su un file o directory, quell'utente può eliminare quel file o directory. Tuttavia,
in una directory di eliminazione limitata, a meno che tu non sia l'utente root o il proprietario del file
directory, non puoi mai eliminare i file di un altro utente.

In genere, una directory di eliminazione limitata viene utilizzata come luogo in cui possono farlo molti utenti diversi
creare file. Ad esempio, la directory / tmp è una directory di eliminazione limitata:

$ ls -ld / tmp
drwxrwxrw t . 116 root root 36864 22 gennaio 14:18 / tmp

Puoi vedere che i permessi sono completamente aperti, ma invece di una x per il bit di esecuzione per
altro, la t indica che lo sticky bit è impostato. Quello che segue è un esempio di creazione di un file
directory di eliminazione limitata con un file che è completamente aperto per la scrittura da parte di chiunque:

[mary] $ mkdir / tmp / mystuff


[mary] $ chmod 1777 / tmp / mystuff
[mary] $ cp / etc / services / tmp / mystuff /
[mary] $ chmod 666 / tmp / mystuff / services
[mary] $ ls -ld / tmp / mystuff / tmp / mystuff / services
drwxrwxrwt. 2 mary mary 4096 22 gennaio 15:28 / tmp / mystuff /
-rw-rw-rw-. 1 mary mary 640999 22 gennaio 15:28 / tmp / mystuff / services

Con i permessi impostati su 1777 nella directory / tmp / mystuff, puoi vedere tutto
i permessi sono completamente aperti, ma appare invece dell'ultimo bit di esecuzione. Con il / tmp /
file mystuff / services aperto per la scrittura, qualsiasi utente può aprirlo e modificarne il contenuto.
Tuttavia, poiché il file si trova in una directory di bit appiccicoso, solo root e mary possono eliminare quel file.

Centralizzazione degli account utente


Sebbene il modo predefinito per autenticare gli utenti in Linux sia controllare le informazioni dell'utente
contro il file / etc / passwd e le password dal file / etc / shadow, puoi farlo
autenticare anche in altri modi. Nella maggior parte delle grandi aziende, le informazioni sull'account utente sono
archiviato in un server di autenticazione centralizzato, quindi ogni volta che installi un nuovo sistema Linux,
invece di aggiungere account utente a quel sistema, il sistema Linux interroga il file
server di autenticazione quando qualcuno tenta di accedere.

Come con l'autenticazione passwd / shadow locale, configurazione dell'autenticazione centralizzata


richiede che tu fornisca due tipi di informazioni: informazioni sull'account (nome utente, utente /
ID gruppo, home directory, shell predefinita e così via) e metodo di autenticazione (diverso

278

Pagina 319

Capitolo 11: Gestione degli account utente

tipi di password crittografate, smart card, scansioni retiniche e così via). Linux fornisce modi
di configurare questi tipi di informazioni.

Perché spero che un giorno utilizzerai le tue abilità Linux per lavorare in una grande installazione Linux,
Voglio introdurre il concetto di autenticazione centralizzata. Per ora discuto solo di come
11
per connettersi ai server di autenticazione esistenti (piuttosto che configurare questi server stessi)
e fare in modo che gli utenti di un sistema Linux che configuri si autenticino su questi tipi di server.

Utilizzando la finestra Utenti


Se aggiungi un nuovo utente al tuo sistema con la finestra Utenti (descritta in precedenza in questo
capitolo), hai la possibilità di selezionare il pulsante Enterprise Login invece di aggiungere un file
password per quell'utente. In quella finestra è possibile identificare la posizione (Dominio) di una centrale
server di autenticazione. Quando l'utente che aggiungi prova ad accedere al tuo sistema Linux, il file
Il dominio di autenticazione, e non il file / etc / passwd locale, viene interrogato per autenticare il file
account utente.

Per configurazioni di autenticazione più complesse di quelle disponibili nella finestra Utenti,
dovresti esaminare il comando authconfig. Con authconfig, puoi abilitare
diversi tipi di meccanismi di autenticazione (come Smart Card, lettori di impronte digitali e
Autenticazione Kerberos).

I domini di autenticazione supportati tramite la finestra Utenti includono LDAP, NIS e


Windows Active Directory. La sezione successiva descrive questi domini di autenticazione.

Utilizzando la finestra Configurazione autenticazione


Le versioni precedenti di Fedora e Red Hat Enterprise Linux utilizzano una finestra grafica, chiamata
Finestra Configurazione autenticazione, per configurare l'autenticazione centralizzata. Attraverso
quella finestra, puoi configurare dove il tuo sistema ottiene le informazioni sull'account e di che tipo
del metodo di autenticazione viene utilizzato per verificare gli utenti. Tipi di database centralizzati supportati
includi questi:

■ LDAP : il Lightweight Directory Access Protocol è un protocollo popolare per


fornitura di servizi di directory (come rubriche telefoniche, indirizzi e account utente). It
è uno standard aperto configurato in molti tipi di ambienti informatici.
■ NIS : il servizio di informazioni di rete è stato originariamente creato da Sun Microsystems
per propagare informazioni come account utente, configurazione host e altro
tipi di informazioni di sistema su molti sistemi UNIX. Perché NIS passa
informazioni in testo chiaro, la maggior parte delle aziende ora utilizza LDAP o
Protocolli Winbind per l'autenticazione centralizzata.
■ Winbind: selezione di Winbind dalla finestra Configurazione autenticazione
ti consente di autenticare i tuoi utenti rispetto a Microsoft Active Directory (AD)
server. Molte grandi aziende estendono la configurazione dell'autenticazione desktop
configurazione del server e l'utilizzo di un server AD.

279

Pagina 320

Parte III: diventare un amministratore di sistema Linux

Per questa introduzione alla configurazione dei server di autenticazione centralizzati, configurerai
un sistema Linux per autenticarsi su un server LDAP, utilizzando l'autenticazione
Finestra di configurazione in Red Hat Enterprise Linux.

Per iniziare, è necessario raccogliere informazioni sul servizio LDAP nella propria posizione. Quella
include informazioni sul database degli account e sul metodo di autenticazione:

■ DN base di ricerca LDAP: questo è il nome distinto del database LDAP utilizzato
per identificare la posizione dei record dell'account utente. Spesso il nome è costruito
dal nome di dominio DNS dell'azienda. Ad esempio, dc = example, dc = com.
■ Server LDAP: questo è il nome host del server LDAP, ad esempio ldap: //
ldap.example.com.
■ UsaTLS per crittografare le connessioni: con questa opzione selezionata, è necessario selezionare anche
per identificare la posizione di un certificato dell'autorità di certificazione (CA) che sarà
scaricati nel sistema locale da utilizzare per convalidare e crittografare le comunicazioni
con il server LDAP. Certificati Transport Layer Security (TLS) per un file
organizzazione sono ottenuti da autorità di certificazione come Verisign. O tu
potrebbe creare certificati autofirmati.
■ Metodo di autenticazione: invece di utilizzare normali password MD5, scegli una delle due
Password LDAP o Kerberos come metodo di autenticazione con LDAP. Per Kerberos,
è inoltre necessario fornire informazioni sul server Kerberos, che include l'estensione
Kerberos Realm, KDC e server di amministrazione. Tutte queste informazioni dovrebbero essere fornite
dagli amministratori che gestiscono i server Kerberos della tua azienda.

Per avviare la finestra Configurazione autenticazione da Red Hat Enterprise Linux 6


desktop, selezionare Sistema ➪ Amministrazione ➪ Autenticazione. Per un sistema predefinito solo quello
esegue l'autenticazione locale (passwd / shadow), viene visualizzata la finestra.

Per aggiungere l'autenticazione LDAP, selezionare la casella Database account utente e selezionare LDAP. Poi
compilare le informazioni descritte nei punti precedenti dell'elenco.

Se il nuovo metodo di autenticazione è configurato correttamente, dovresti essere in grado di accedere a una shell
e convalidalo. Se conosci un account utente disponibile dal server LDAP, utilizza il
seguendo il comando getent per verificare che l'account sia disponibile:

# getent passwd jsmith


jsmith: x: 13599: 13600: John Smith: / home / jsmith: / bin / bash

Se vedi le informazioni sull'account, sai che il tuo sistema è stato in grado di recuperarle dal file
Server LDAP. La prossima cosa da controllare è che anche il metodo di autenticazione funzioni.
Per questo, potresti provare ad accedere come utente dalla console o usando il comando ssh.
Per esempio:

$ ssh jsmith @ localhost

Quando richiesto, inserisci il nome utente e la password. Se ha successo, sai che sia il file
le informazioni sull'account e l'autenticazione immesse per il server LDAP erano corrette.

280

Pagina 321
Capitolo 11: Gestione degli account utente

Con la tua autenticazione centralizzata, valuta la possibilità di centralizzare le home directory degli utenti
anche. Utilizzando l'automounter di Linux (servizio autofs), è possibile impostare le directory home
che vengono montati automaticamente quando ogni utente accede, indipendentemente dalla macchina in cui si trova
stanno accedendo a. (Vedere il Capitolo 20, "Configurazione di un file server NFS", per informazioni su
impostazione di un server NFS e configurazione dei client per il montaggio automatico da quel server.) 11

Sommario
Avere account utente separati è il metodo principale per impostare confini sicuri tra
le persone che usano il tuo sistema Linux. Gli utenti regolari in genere possono controllare i file e
directory all'interno delle proprie directory home, ma molto poco al di fuori di tali directory.

In questo capitolo si è appreso come aggiungere account utente e di gruppo, come modificarli e
anche come estendere gli account utente e di gruppo oltre i confini del locale / etc /
file di password. Hai anche imparato che l'autenticazione può essere eseguita accedendo centralizzato
Server LDAP.

Il prossimo capitolo introduce un altro argomento di base necessario agli amministratori di sistema Linux:
come gestire i dischi. In quel capitolo, imparerai come partizionare dischi, aggiungere filesystem e
montarli, in modo che il contenuto delle partizioni del disco sia accessibile a coloro che utilizzano il sistema.

Esercizi
Usa questi esercizi per verificare la tua conoscenza dell'aggiunta e della gestione di utenti e gruppi
account in Linux. Queste attività presuppongono che tu stia eseguendo Fedora o Red Hat Enterprise
Sistema Linux (sebbene alcune attività funzionino anche su altri sistemi Linux). Se sei bloccato,
le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, spesso si abbiano più
modi per completare un'attività).

1. Aggiungi un account utente locale al tuo sistema Linux con un nome utente di jbaxter e
un nome completo di John Baxter e utilizza / bin / sh come shell predefinita. Lascia che sia l'UID
assegnato per impostazione predefinita. Imposta la password per jbaxter su: My1N1te0ut!

2. Creare un account di gruppo denominato testing che utilizza l'ID gruppo 315.

3. Aggiungere jbaxter al gruppo di test e al gruppo bin.

4. Aprire una shell come jbaxter (una nuova sessione di accesso o utilizzando una shell corrente) e
imposta temporaneamente il gruppo di test come gruppo predefinito in modo che quando digiti
toccare /home/jbaxter/file.txt, il gruppo di test viene assegnato come file
gruppo.
5. Annotare quale ID utente è stato assegnato a jbaxter ed eliminare l'account utente
senza eliminare la home directory assegnata a jbaxter.

281

Pagina 322

Parte III: diventare un amministratore di sistema Linux

6. Trova tutti i file nella directory / home (e qualsiasi sottodirectory) a cui sono assegnati
l'ID utente che apparteneva di recente all'utente denominato jbaxter.

7. Copiare il file / etc / services nella directory skeleton predefinita in modo che venga visualizzato
nella home directory di ogni nuovo utente. Quindi aggiungi un nuovo utente al sistema
chiamato mjones, con un nome completo di Mary Jones e una home directory di / home /
maryjones.
8. Trova tutti i file nella directory / home che appartengono a mjones. Sono presenti file
di proprietà di mjones che non ti aspettavi di vedere?

9. Accedi come mjones e crea un file chiamato /tmp/maryfile.txt. Utilizzando ACL,


assegnare l'autorizzazione di lettura / scrittura dell'utente bin a quel file. Quindi assegnare il gruppo lp
autorizzazione di lettura / scrittura per quel file.
10. Sempre come mjones, creare una directory chiamata / tmp / mydir. Utilizzando gli ACL, assegna valore predefinito
autorizzazioni per quella directory in modo che l'utente adm abbia il permesso di lettura / scrittura / esecuzione
a quella directory e qualsiasi file o directory creato in essa. Crea il / tmp / mydir /
testing / directory e /tmp/mydir/newfile.txt e assicurati che il file
All'utente adm sono state assegnate anche autorizzazioni di lettura / scrittura / esecuzione complete. (Nota che nonostante
assegnando il permesso rwx all'utente adm, il permesso effettivo su newfile.txt
è solo rw. Cosa potresti fare per assicurarti che anche l'annuncio ottenga il permesso di esecuzione? )

282

Pagina 323

CAPITOLO

12
Gestione di dischi e file system
IN QUESTO CAPITOLO
Creazione di partizioni del disco

Creazione di volumi logici con LVM

Aggiunta di filesystem

Montaggio dei filesystem

Smontaggio dei filesystem

Il memoria nent in modo che quando si spegne il computer, è ancora tutto lì quando il computer
si riaccende. Tradizionalmente, tale spazio di archiviazione è stato fornito da un disco rigido nel tuo file
nostro sistema operativo, le applicazioni e i dati devono essere tutti conservati su una sorta di
computer. Per organizzare le informazioni su quel disco, il disco è solitamente diviso in partizioni,
con la maggior parte delle partizioni data una struttura denominata filesystem .

Questo capitolo descrive come lavorare con i dischi rigidi. Le attività del disco rigido includono il partizionamento, l'aggiunta
filesystem e gestirli in vari modi. Dispositivi di archiviazione collegati a
i sistemi da dispositivi rimovibili e dispositivi di rete possono essere partizionati e gestiti in
stessi modi.

Dopo aver coperto le partizioni di base, descrivo come utilizzare la gestione del volume logico (LVM)
rendere più facile la crescita, la riduzione e la gestione dei filesystem in altro modo in modo più efficiente.

Capire l'archiviazione su disco


Le basi del funzionamento dell'archiviazione dei dati sono le stesse nella maggior parte dei sistemi operativi moderni. Quando tu
installare il sistema operativo, il disco è diviso in una o più partizioni. Ogni partizione è
formattato con un filesystem. Nel caso di Linux, alcune delle partizioni possono essere formattate in modo speciale
per elementi come un'area di scambio o volumi fisici LVM. I dischi vengono utilizzati per l'archiviazione permanente;
la memoria ad accesso casuale (RAM) e lo swap vengono utilizzati per l'archiviazione temporanea. Ad esempio, quando corri
un comando, quel comando viene copiato dal disco rigido nella RAM in modo che il processore del computer
(CPU) può accedervi più rapidamente.
283

Pagina 324

Parte III: diventare un amministratore di sistema Linux

La tua CPU può accedere ai dati molto più velocemente dalla RAM che dal disco rigido. Tuttavia, un disco
di solito è molto più grande della RAM, la RAM è molto più costosa e la RAM viene cancellata quando
il computer si riavvia. Pensa al tuo ufficio come a una metafora di RAM e disco. Un disco è come
un archivio in cui archiviare le cartelle di informazioni necessarie. La RAM è come la parte superiore del tuo
scrivania, dove metti la cartella dei fogli mentre la usi, ma la rimetti nel file
schedario quando non lo sei.

Se la RAM si riempie, eseguendo troppi processi o un processo con una perdita di memoria, nuovo
i processi falliscono se il sistema non dispone di un modo per estendere la memoria di sistema. Ecco dove un file
entra in gioco l'area di scambio. Uno spazio di scambio è una partizione di scambio del disco rigido o un file di scambio in cui si trova il file
il computer può "scambiare" i dati dalla RAM che non viene utilizzata al momento e quindi
"Scambiare" i dati di nuovo nella RAM quando è nuovamente necessario. Anche se è meglio non mai
superare la tua RAM (le prestazioni subiscono un calo quando si scambia), lo scambio è meglio di
avere processi appena falliscono.

Un'altra partizione speciale è un volume fisico LVM (Logic Volume Management). LVM
i volumi fisici consentono di creare pool di spazio di archiviazione chiamati gruppi di volumi . A partire dal
quei gruppi di volumi, hai molta più flessibilità per la crescita e la riduzione logica
volumi rispetto al ridimensionamento diretto delle partizioni del disco.

Per Linux, è richiesta almeno una partizione del disco, assegnata alla radice (/) dell'intero
File system Linux. Tuttavia, è più comune avere partizioni separate assegnate
a directory particolari, come / home, / var e / o / tmp. Ciascuna delle partizioni è
connesso al filesystem Linux più grande montandolo in un punto del filesystem dove
si desidera che venga utilizzata quella partizione. Qualsiasi file aggiunto alla directory del punto di montaggio di un file
partizione, o una sottodirectory, è memorizzata su quella partizione.

La parola mount si riferisce all'azione di collegare un filesystem da un disco rigido, un'unità USB o un dispositivo di archiviazione di rete
in un punto particolare nel filesystem. Questa azione viene eseguita utilizzando il comando mount, insieme alle opzioni per dire al file
comando dove si trova il dispositivo di archiviazione e quale directory nel filesystem a cui collegarlo.

L'attività di connessione delle partizioni del disco al filesystem Linux viene eseguita automaticamente
e invisibilmente all'utente finale. Come avviene questo? Ogni partizione del disco regolare creata
quando installi Linux è associato a un nome di dispositivo. Una voce in / etc / fstab
file dice a Linux il nome del dispositivo di ciascuna partizione e dove montarlo (così come altri bit
di informazione). Il montaggio viene eseguito all'avvio del sistema.

La maggior parte di questo capitolo si concentra sulla comprensione della modalità di partizionamento del disco del computer
e connesso per formare il tuo filesystem Linux, così come come partizionare i dischi, formattare
filesystem e spazio di swap, e fare in modo che questi elementi vengano utilizzati all'avvio del sistema. Il capitolo
poi spiega come eseguire manualmente il partizionamento e la creazione del filesystem.

284

Pagina 325

Capitolo 12: Gestione di dischi e file system


Proveniente da Windows
I filesystem sono organizzati in modo diverso in Linux rispetto ai sistemi operativi Microsoft Windows.
Invece delle lettere di unità (ad esempio, A :, B :, C :) per ogni disco locale, file system di rete, CD-ROM o
altro tipo di supporto di memorizzazione, tutto si adatta perfettamente alla struttura delle directory di Linux.

Alcune unità sono collegate (montate) automaticamente nel filesystem quando si inserisce rimovibile
media. Ad esempio, un CD potrebbe essere montato su / media / cdrom. Se l'unità non è montata automaticamente
In definitiva, spetta a un amministratore creare un punto di montaggio nel filesystem e quindi collegare il disco
a quel punto.

Linux può comprendere i filesystem VFAT, che sono spesso il formato predefinito quando si acquista un flash USB
guidare. Un'unità flash USB VFAT fornisce un buon modo per condividere i dati tra i sistemi Linux e Windows.
Il supporto del kernel Linux è disponibile per i file system NTFS, che di solito vengono usati con Windows oggigiorno.
Tuttavia, NTFS spesso richiede l'installazione di driver del kernel aggiuntivi in ​Linux. 12
I file system VFAT vengono spesso utilizzati quando i file devono essere scambiati tra diversi tipi di operazioni
sistemi. Poiché VFAT è stato utilizzato in MS-DOS e nei primi sistemi operativi Windows, offre un buon file
minimo comune denominatore per la condivisione di file con molti tipi di sistemi (incluso Linux). NTFS è
il tipo di file system più comunemente utilizzato con i moderni sistemi Microsoft Windows.

Partizionamento dei dischi rigidi


Linux fornisce diversi strumenti per la gestione delle partizioni del disco rigido. Devi sapere come
per partizionare il disco se si desidera aggiungere un disco al sistema o modificare il disco esistente
configurazione.

Questa sezione mostra il partizionamento del disco utilizzando un'unità flash USB rimovibile da 8 GB e un file
disco rigido fisso. Per sicurezza, utilizzo un'unità flash USB che non contiene i dati che desidero
continuare a fare pratica con il partizionamento.

La modifica del partizionamento può creare un sistema


non avviabile!
Non consiglio di usare il disco rigido principale del tuo sistema per esercitarti a cambiare il partizionamento perché
un errore può rendere il sistema non avviabile. Anche se utilizzi un'unità flash USB separata per esercitarti,
una cattiva voce in / etc / fstab può bloccare il sistema al riavvio. Se dopo aver cambiato le partizioni il tuo sistema
non si avvia, fare riferimento al Capitolo 21, "Risoluzione dei problemi di Linux", per informazioni su come risolvere il problema.

285

Pagina 326

Parte III: diventare un amministratore di sistema Linux

Comprensione delle tabelle delle partizioni


I computer con architettura PC utilizzano tradizionalmente la partizione Master Boot Record (MBR)
tabelle per memorizzare le informazioni sulle dimensioni e sui layout delle partizioni del disco rigido. Là
sono molti strumenti per la gestione delle partizioni MBR che sono abbastanza stabili e ben conosciuti. Nel
Negli ultimi anni, tuttavia, è stato introdotto un nuovo standard chiamato partizione GUID (Global Unique Identifiers)
le tabelle hanno iniziato a essere utilizzate sui sistemi come parte dell'architettura del computer UEFI da sostituire
il vecchio metodo BIOS per avviare il sistema.

Alcuni strumenti di partizionamento Linux sono stati aggiornati per gestire le tabelle delle partizioni GUID. Altro
sono stati aggiunti strumenti per la gestione delle tabelle delle partizioni GUID. Se ti capita di avere un sistema
che usa le tabelle delle partizioni GUID, puoi usare uno strumento chiamato gdisk invece di fdisk
comando descritto in questo capitolo.

Le limitazioni imposte dalla specifica MBR hanno determinato la necessità di partizioni GUID.
In particolare, le partizioni MBR hanno dimensioni limitate a 2 TB. Le partizioni GUID possono creare
partizioni fino a 9,4ZB (zettabyte). Mentre il comando gdisk ti consente di gestire le partizioni
potenzialmente molto più grandi dei sottocomandi per la creazione, l'eliminazione e la modifica
le partizioni del disco sono essenzialmente le stesse di quelle disponibili con fdisk.

Visualizzazione delle partizioni del disco


Per visualizzare le partizioni del disco, utilizzare il comando fdisk con l'opzione -l. Il seguente
è un esempio di partizionamento su un disco rigido fisso da 160 GB su Red Hat Enterprise
Sistema Linux 7:
# fdisk -l / dev / sda
Disco / dev / sda: 160,0 GB, 160000000000 byte, 312500000 settori
Unità = settori di 1 * 512 = 512 byte
Dimensione del settore (logico / fisico): 512 byte / 512 byte
Dimensione I / O (minima / ottimale): 512 byte / 512 byte
Tipo di etichetta del disco: dos
Identificatore del disco: 0x0008870c
Avvio avvio dispositivo End Blocks Id System
/ dev / sda1 * 2048 1026047 512000 83 Linux
/ dev / sda2 1026048 304281599 151627776 8e Linux LVM

Quando viene inserita un'unità flash USB, viene assegnata al successivo dispositivo sd disponibile. Il
di seguito viene mostrato il partizionamento su un'unità USB da un sistema RHEL, dove si trova / dev / sdc
assegnato come nome del dispositivo (il terzo disco sul sistema). Usa l'opzione -c con fdisk
per disattivare la modalità di compatibilità DOS e -u per mostrare la dimensione in settori invece che in cilindri,
perché le partizioni potrebbero non cadere sui limiti del cilindro (le opzioni predefinite sono state modificate di recente, quindi
le opzioni -c e -u non sono più necessarie nelle ultime versioni di RHEL o Fedora):

# fdisk -cul / dev / sdc


Disco / dev / sdc: 8059 MB, 8059355136 byte
248 teste, 62 settori / traccia, 1023 cilindri, totale 15740928 settori

286

Pagina 327

Capitolo 12: Gestione di dischi e file system

Unità = settori di 1 * 512 = 512 byte


Dimensione del settore (logico / fisico): 512 byte / 512 byte
Dimensione I / O (minima / ottimale): 512 byte / 512 byte
Identificatore del disco: 0x0007a9f4
Sistema di identificazione blocchi avvio fine avvio dispositivo
/ dev / sdc1 * 2048 194559 96256 83 Linux
/ dev / sdc2 194560 2148351 976896 82 Linux swap / Solaris
/ dev / sdc3 2150398 15738879 6794241 5 Esteso
/ dev / sdc5 2150400 15738879 6794240 83 Linux

L'esempio appena mostrato è per un'unità USB su cui è installato un sistema Linux avviabile.
La prima partizione (/ dev / sdc1) è una piccola partizione / boot. Il secondo (/ dev / sdc2)
viene assegnato come area di scambio. Il resto del disco viene assegnato come partizione estesa
(/ dev / sdc3), che consente a qualsiasi ulteriore partizione di occupare spazio da quella partizione. Il
la partizione finale (/ dev / sdc5) è assegnata al filesystem root (/) e consuma tutto il file
12
spazio su disco rimanente.

L'unità potrebbe essere assegnata a un nome di dispositivo diverso. Ecco alcune cose da cercare:

■ Un dispositivo di archiviazione SCSI o USB, rappresentato da un sd? dispositivo (come sda, sdb,
sdc e così via), può avere fino a 16 dispositivi secondari (come il file principale / dev / sdc
dispositivo e da / dev / sdc1 a / dev / sdc15). Quindi ci possono essere 15 partizioni
totale.
■ Per i computer x86, i dischi possono avere fino a quattro partizioni primarie. Quindi, per avere di più
di quattro partizioni totali, almeno una deve essere una partizione estesa. Notare che
/ dev / sdc3 è una partizione estesa che consuma tutto lo spazio su disco rimanente no
utilizzato dalle prime due partizioni. Qualsiasi partizione oltre le quattro partizioni primarie
sono partizioni logiche che utilizzano lo spazio dalla partizione estesa.
■ Il campo id indica il tipo di partizione. Si noti che esiste una combinazione di
Partizioni Linux e di swap in entrambi gli esempi e partizioni Linux LVM in
primo esempio.

Il tuo primo disco rigido principale di solito appare come / dev / sda. Con RHEL e Fedora installa-
di solito c'è almeno una partizione LVM creata dall'installatore, di cui un'altra
le partizioni possono essere assegnate. Quindi l'output di fdisk potrebbe essere semplice come il seguente:

# fdisk -cul / dev / sda


Disco / dev / sda: 500,1 GB, 500107862016 byte
255 testine, 63 settori / traccia, 60801 cilindri, totale 976773168 settori
Unità = settori di 1 * 512 = 512 byte
Dimensione del settore (logico / fisico): 512 byte / 512 byte
Dimensione I / O (minima / ottimale): 512 byte / 512 byte
Identificatore del disco: 0x000ebb20
Avvio avvio dispositivo End Blocks Id System
/ dev / sda1 * 2048 411647 204800 83 Linux
/ dev / sda2 411648 976773119 488180736 8e Linux LVM
287

Pagina 328

Parte III: diventare un amministratore di sistema Linux

La prima partizione è di circa 200 MB ed è montata nella directory / boot. L'asterisco


(*) sotto la colonna Boot indica che la partizione è avviabile (è lì che il file
kernel e altri componenti necessari per avviare il sistema vengono memorizzati). Il resto del disco è
consumato dalla partizione LVM, che viene infine utilizzata per creare volumi logici. Puoi
scopri di più su LVM nella sezione "Utilizzo delle partizioni per la gestione dei volumi logici" più avanti in
questo capitolo.

Per il momento, ti consiglio di lasciare il disco rigido e trovare una chiavetta USB che
non ti dispiace cancellare. Puoi provare i comandi che ho dimostrato su quell'unità.

Creazione di un disco a partizione singola


Per aggiungere un nuovo supporto di archiviazione (disco rigido, unità flash USB o dispositivo simile) al tuo file
computer in modo che possa essere utilizzato da Linux, è necessario prima collegare il dispositivo disco a
il computer e quindi partizionare il disco. Ecco la procedura generale:

1. Installare il nuovo disco rigido o inserire la nuova unità flash USB.

2. Partizionare il nuovo disco.

3. Creare i filesystem sul nuovo disco.

4. Montare i filesystem.

Il modo più semplice per aggiungere un disco o un'unità flash a Linux è avere l'intero disco dedicato a un file
singola partizione Linux. Tuttavia, puoi avere più partizioni e assegnarle a ciascuna di esse
diversi tipi di filesystem e diversi punti di montaggio, se lo desideri.

Il seguente processo ti guida attraverso il partizionamento di un'unità flash USB da utilizzare


Linux che ha una sola partizione. Se hai un'unità flash USB (di qualsiasi dimensione) che non ne hai
cancellando la mente, puoi seguire questa procedura mentre leggi. La sezione seguente
descrive come partizionare un disco con più partizioni.

Se si commette un errore nel partizionare il disco con fdisk, è sufficiente digitare q per uscire senza salvare le modifiche. Se sei
bloccato nel mezzo di un'operazione, come l'aggiunta di una partizione, basta completare l'operazione, quindi digitare q dopo
vedi il prompt dei comandi.

1. Per un'unità flash USB, collegala a una porta USB disponibile. Andando avanti, io uso
un'unità flash USB da 8 GB, ma è possibile ottenere un'unità flash USB di qualsiasi dimensione.
2. Determinare il nome del dispositivo per l'unità USB. Come utente root da una shell, digita
seguendo il comando tail, quindi inserire l'unità flash USB. Vengono visualizzati i messaggi,
indicando il nome del dispositivo dell'unità appena collegata (premere Ctrl + C per uscire
il comando tail quando hai finito):

288

Pagina 329

Capitolo 12: Gestione di dischi e file system

# tail -f / var / log / messages


kernel: usb 3-2: nuovo dispositivo USB ad alta velocità numero 69 che utilizza xhci_hcd
kernel: usb 3-2: nuovo dispositivo USB trovato, idVendor = 0930,
idProduct = 6545
kernel: usb 3-2: Nuove stringhe del dispositivo USB:
Mfr = 1, Prodotto = 2, SerialNumber = 3
kernel: usb 3-2: Prodotto: memoria flash USB
kernel: usb 3-2: produttore:
kernel: usb 3-2: SerialNumber: 001D92AD6ADAB98043230329
kernel: usb 3-2: configurazione n. 1 scelta da 1 scelta
kernel: scsi8: emulazione SCSI per dispositivi di archiviazione di massa USB
kernel: sd 8: 0: 0: 0: allegato scsi generico sg2 tipo 0
kernel: sd 8: 0: 0: 0: [sdc] 15740928 512 byte
blocchi logici: (8,05 GB / 7,50 GiB)
kernel: sd 8: 0: 0: 0: [sdc] Write Protect è disattivato
kernel: sd 8: 0: 0: 0: [sdc] Supponendo drive cache: write through
12
kernel: sd 8: 0: 0: 0: [sdc] Supponendo drive cache: write through
kernel: sdc: sdc1 sdc2 sdc3 <sdc5>

3. Dall'output, è possibile vedere che l'unità flash USB è stata trovata e assegnata
in / dev / sdc. (Il nome del tuo dispositivo potrebbe essere diverso!) Contiene anche più
partizioni: sdc1, sdc2, sdc3 e sdc5. Assicurati di identificare il disco corretto,
oppure potresti perdere tutti i dati dai dischi che potresti voler conservare!
4. Se l'unità flash USB viene montata automaticamente, smontarla. Da un desktop GNOME 2,
fare clic con il pulsante destro del mouse sull'icona del file system da 8.0 GB che appare e selezionare Smonta. Da un
Desktop GNOME 3, sposta il mouse per selezionare il vassoio inferiore, fai clic su rimovibile
icona di archiviazione e fare clic sul pulsante di espulsione. Oppure, in questo caso, come root potresti invece
digita umount / dev / sdc1 .
5. Utilizzare il comando fdisk per creare partizioni sull'unità USB. Ad esempio, se tu
stanno formattando il terzo disco USB, SATA o SCSI (sdc), è possibile digitare quanto segue:
# fdisk / dev / sdc
Comando (m per aiuto):

Ora sei in modalità comando fdisk, dove puoi usare la singola lettera fdisk
set di comandi per lavorare con le tue partizioni. (Per RHEL 6, aggiungendo -c e -u
opzioni consente di selezionare la dimensione di ciascuna partizione in base ai settori anziché
cilindri. Queste opzioni non sono necessarie per RHEL 7.)

6. Se si inizia con una nuova unità flash USB, potrebbe essere presente una partizione interamente
dedicato a un filesystem compatibile con Windows (come VFAT). Usa p per visualizzare tutto
partizioni ed per eliminare la partizione. Ecco come appariva quando l'ho fatto:
Comando (m per aiuto): p
...
Avvio avvio dispositivo End Blocks Id System
/ dev / sdc1 2048 15667199 7832576 c W95 FAT32 (LBA)
Comando (m per aiuto): d
Partizione selezionata 1

289

Pagina 330

Parte III: diventare un amministratore di sistema Linux

7. Per creare una nuova partizione, digitare la lettera n . Viene richiesto il tipo di file
partizione.

8. Scegliere una partizione estesa (e) o primaria (p). Digita la lettera p per scegliere
primario.

9. Digitare il numero di partizione. Se stai creando la prima partizione (o solo una


partizione), digitare il numero 1 . Viene richiesto che il primo settore inizi il file
partizione.
10. Seleziona il primo numero di settore disponibile (puoi semplicemente premere Invio per sceglierlo).
Viene richiesto l'ultimo settore.

11. Immettere la dimensione della partizione. Perché stai solo creando una partizione in
consuma tutto il disco, scegli l'ultimo settore disponibile. Per farlo puoi semplicemente
premere Invio per accettare l'impostazione predefinita.
12. Controllare due volte che l'unità sia partizionata nel modo desiderato premendo p . (Il tuo
l'output sarà diverso, a seconda delle dimensioni dell'unità.)
Comando (m per aiuto): p
...
Avvio avvio dispositivo End Blocks Id System
/ dev / sdc1 2048 15667199 7832576 83 Linux

13. Per rendere permanenti le modifiche alla tabella delle partizioni, digitare w . Questo scrive i cambiamenti,
prova a sincronizzare queste modifiche con il kernel Linux e chiude fdisk. Se vedi un file
messaggio come il seguente, non preoccuparti; puoi risolverlo nel passaggio successivo:
ATTENZIONE: la rilettura della tabella delle partizioni non è riuscita con errore 16:
Dispositivo o risorsa occupata.

14. Se fdisk non può sincronizzare la tabella delle partizioni sul disco con il kernel, la maggior parte
la ragione probabile è che una partizione dal disco è ancora montata. Smonta il file
partizione e provare a eseguire il seguente comando per sincronizzare la tabella delle partizioni del disco
con il kernel:
# partprobe / dev / sdc

Se partprobe non funziona, riavviare il computer assicurerà che il disco e


kernel sono sincronizzati.
15. Sebbene il partizionamento sia terminato, la nuova partizione non è ancora pronta per l'uso. Per
quindi, devi creare un filesystem sulla nuova partizione. Per creare un filesystem su
la nuova partizione del disco, utilizzare il comando mkfs. Per impostazione predefinita, questo comando crea
un filesystem ext2, utilizzabile da Linux. Tuttavia, nella maggior parte dei casi lo desideri
usa un filesystem con journaling (come ext3 o ext4). Per creare un filesystem ext4
nella prima partizione del terzo disco rigido, digitare quanto segue:
# mkfs -t ext4 / dev / sdc1

290

Pagina 331

Capitolo 12: Gestione di dischi e file system

È possibile utilizzare altri comandi o opzioni per questo comando per creare altri tipi di file system. Ad esempio, usa mkfs.
vfat per creare un filesystem VFAT, mkfs.msdos per DOS o mkfs.reiserfs per il tipo di filesystem Reiser. voi
potrebbe volere un filesystem VFAT se si desidera condividere file tra sistemi Linux, Windows e Mac.

16. Per poter utilizzare il nuovo filesystem, è necessario creare un punto di montaggio e montare
nella partizione. Ecco un esempio di come farlo. Quindi controlli per fare
sicuro che il montaggio è riuscito.
# mkdir / mnt / test
# montare / dev / sdc1 / mnt / test
# df -h / mnt / test
Filesystem Dimensioni utilizzate Utilizzo disponibile% montato su
/ dev / sdc1 7.4G 17M 7.0G 1% / mnt / test
12
# mount | grep sdc1
/ dev / sdc1 su / mnt / test tipo ext4 (rw)

Il comando df mostra che / dev / sdc1 è montato su / mnt / test e così via
offre circa 7,4 GB di spazio su disco. Il comando mount mostra tutto montato
filesystem, ma qui ho usato grep per mostrare che sdc1 è montato ed è un file
tipo di file system ext4.
Qualsiasi file o directory che crei in seguito nella directory / mnt / test e in uno dei suoi file
le sottodirectory sono archiviate nel dispositivo / dev / sdc1.

17. Una volta terminato di utilizzare l'unità, è possibile smontarla con umount
, dopodiché è possibile rimuovere in sicurezza l'unità (vedere la descrizione del file
umount comando in seguito se questo comando fallisce):
# umount / dev / sdc1

18. Di solito non si imposta un'unità flash USB per il montaggio automatico ogni volta che il file
il sistema si avvia perché si monta automaticamente quando lo colleghi. Ma se tu
decidi di farlo, modifica / etc / fstab e aggiungi una riga che descrive cosa e
dove montare. Ecco un esempio di una riga che potresti aggiungere:
/ dev / sdc1 / mnt / test ext4 il valore predefinito è 0 1

In questo esempio, la partizione (/ dev / sdc1) è montata su / mnt / test


come un filesystem ext4. La parola chiave defaults fa sì che la partizione sia
montato al momento dell'avvio. Il numero 0 indica al sistema di non eseguire il backup dei file da questo
filesystem con il comando dump (dump è usato raramente, ma il campo lo è
Qui). L'1 nell'ultima colonna indica al sistema di verificare la presenza di errori nella partizione
dopo un certo numero di montaggi.
A questo punto, hai una partizione del disco montata in modo permanente. La prossima sezione
descrive come partizionare un disco con più partizioni.

291
Pagina 332

Parte III: diventare un amministratore di sistema Linux

Creazione di un disco con più partizioni


Ora che hai compreso il processo di base del partizionamento di un disco, l'aggiunta di un filesystem e
rendendo quel filesystem disponibile (temporaneamente e permanentemente), è tempo di provare un altro file
esempio complesso. Prendendo la stessa unità flash USB da 8 GB, ho eseguito la procedura descritta più avanti
in questa sezione per creare più partizioni su un disco.

In questa procedura creo una partizione di 500MB (sdc1 e sdc2), 300MB (sdc3), 350MB
(sdc5) e 400 MB (sdc6). Il dispositivo sdc4 è una partizione estesa, che consuma file
tutto lo spazio su disco rimanente. Lo spazio dalle partizioni sdc5 e sdc6 viene preso dal file
partizione estesa.

Come prima, inserisci l'unità flash USB e determina il nome del dispositivo (nel mio caso, / dev /
sdc). Inoltre, assicurati di smontare tutte le partizioni che vengono montate automaticamente quando inserisci
l'unità flash USB.

Quando indichi la dimensione di ciascuna partizione, digita il segno più e il numero di megabyte o gigabyte che desideri
da assegnare alla partizione. Ad esempio, + 1024 M per creare una partizione da 1024 megabyte o + 10 G per 10 gigabyte
partizione. Assicurati di ricordare il segno più (+) e la M o la G! Se dimentichi la M o la G, fdisk pensa che tu intenda
settori e ottieni risultati inaspettati.

1. Per iniziare, apri il dispositivo / dev / sdc con fdisk, elimina la prima (unica) partizione,
e quindi aggiungi sei nuove partizioni.
# fdisk / dev / sdc
Comando (m per aiuto): d
Partizione selezionata 1
Comando (m per aiuto): n
Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 1
Primo settore (2048-15667199, predefinito 2048):
< Invio >
Utilizzando il valore predefinito 2048
Ultimo settore, + settori o + dimensione {K, M, G} (... predefinito 15667199): + 500M
Comando (m per aiuto): n
Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 2
Primo settore (1026048-15667199, predefinito 1026048):
< Invio >

292

Pagina 333

Capitolo 12: Gestione di dischi e file system

Utilizzo del valore predefinito 1026048


Ultimo settore, + settori o + dimensione
{K, M, G} (predefinito 15667199): + 500M
Comando (m per aiuto): n
Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 3
Primo settore (2050048-15667199, predefinito 2050048):
< Invio >
Utilizzo del valore predefinito 2050048
Ultimo settore, + settori o + dimensione {K, M, G} (... predefinito 15667199): + 300M
Comando (m per aiuto): n
Azione di comando
e esteso
12
p partizione primaria (1-4)
e
Partizione selezionata 4
Primo settore (2664448-15667199, predefinito 2664448):
< Invio >
Utilizzo del valore predefinito 2664448
Ultimo settore, + settori o + dimensione {K, M, G} (... predefinito 15667199):
< Invio >
Utilizzando il valore predefinito 15667199
Comando (m per aiuto): n
Primo settore (2666496-15667199, predefinito 2666496):
< Invio >
Utilizzo del valore predefinito 2666496
Ultimo settore, + settori o + dimensione {K, M, G} (... predefinito 15667199): + 350M
Comando (m per aiuto): n
Primo settore (... default 3385344):
< Invio >
Utilizzo del valore predefinito 3385344
Ultimo settore, + settori o + dimensione {K, M, G} (... predefinito 15667199): + 400M

2. Verificare il partizionamento prima di salvare digitando p . Notare che ci sono cinque utilizzabili
partizioni (sdc1, sdc2, sdc3, sdc5 e sdc6) e che i settori tra le
Inizio e Fine per sdc4 vengono consumati da sdc5 e sdc6.
Comando (m per aiuto): p
...
Avvio avvio dispositivo End Blocks Id System
/ dev / sdc1 2048 1026047 512000 83 Linux
/ dev / sdc2 1026048 2050047 512000 83 Linux
/ dev / sdc3 2050048 2664447 307200 83 Linux
/ dev / sdc4 2664448 15667199 6501376 5 Esteso
/ dev / sdc5 2666496 3383295 358400 83 Linux
/ dev / sdc6 3385344 4204543 409600 83 Linux

293

Pagina 334

Parte III: diventare un amministratore di sistema Linux

3. Il tipo di partizione predefinito è Linux. Ho deciso di utilizzare alcune delle partizioni


per lo spazio di swap (tipo 82), FAT32 (tipo x) e Linux LVM (tipo 8e). Fare quello,
Digito t e indico quale tipo di partizione utilizzare. Digita L per visualizzare un elenco di partizioni
tipi.
Comando (m per aiuto): t
Numero di partizione (1-6): 2
Codice esadecimale (digitare L per elencare i codici): 82
Cambiato il tipo di sistema della partizione da 2 a 82 (Linux swap / Solaris)
Comando (m per aiuto): t
Numero di partizione (1-6): 5
Codice esadecimale (digitare L per elencare i codici): c
Tipo di sistema modificato della partizione 5 in c (W95 FAT32 (LBA))
Comando (m per aiuto): t
Numero di partizione (1-6): 6
Codice esadecimale (digitare L per elencare i codici): 8e
Tipo di sistema modificato della partizione da 6 a 8e (Linux LVM)

4. Controllo che la tabella delle partizioni sia come voglio e poi scrivo le modifiche:
Comando (m per aiuto): p
...
Sistema di identificazione blocchi avvio fine avvio dispositivo
/ dev / sdc1 2048 1026047 512000 83 Linux
/ dev / sdc2 1026048 2050047 512000 82 scambio Linux /
Solaris
/ dev / sdc3 2050048 2664447 307200 83 Linux
/ dev / sdc4 2664448 15667199 6501376 5 Esteso
/ dev / sdc5 2666496 3383295 358400 c W95 FAT32 (LBA)
/ dev / sdc6 3385344 4204543 409600 8e Linux LVM
Comando (m per aiuto): w
La tabella delle partizioni è stata modificata!
Chiamare ioctl () per rileggere la tabella delle partizioni.
...

5. Una volta completata la scrittura, verificare che il kernel sia a conoscenza delle modifiche a
la tabella delle partizioni. Per farlo, cerca sdc in / proc / partitions. Se il nuovo file
dispositivi non sono presenti, eseguire il comando partprobe / dev / sdc sull'unità o
riavvia il computer.
# grep sdc / proc / partitions
8 32 7833600 sdc
8 33 512000 sdc1
8 34 512000 sdc2
8 35 307200 sdc3
8 36 1 sdc4
8 37 358400 sdc5
8 38 409600 sdc6

294

Pagina 335

Capitolo 12: Gestione di dischi e file system

6. Mentre le partizioni sono ora impostate per diversi tipi di contenuto, altri comandi lo sono
necessario per strutturare le partizioni in filesystem o aree di swap. Ecco come fare
quello per le partizioni appena create:
■ sdc1: per trasformarlo in un normale filesystem Linux ext4, digitare quanto segue:
# mkfs -t ext4 / dev / sdc1

■ sdc2: per formattarlo come area di scambio, digitare quanto segue:


# mkswap / dev / sdc2

■ sdc3: per trasformarlo in un filesystem ext2 (predefinito), digitare quanto segue:


# mkfs / dev / sdc3

■ sdc5: per trasformarlo in un file system VFAT (predefinito), digitare quanto segue:
# mkfs -t vfat / dev / sdc5 12
■ sdc6: per trasformarlo in un volume fisico LVM, digitare quanto segue:
# pvcreate / dev / sdc6

Queste partizioni sono ora pronte per essere montate, usate come area di scambio o aggiunte a un LVM
gruppo di volumi. Vedere la sezione successiva, "Utilizzo delle partizioni di gestione del volume logico", a
vedere come i volumi fisici LVM vengono utilizzati per creare infine i volumi logici LVM da
gruppi di volumi. Vedere la sezione "Montaggio dei filesystem" per le descrizioni di come eseguire il montaggio
filesystem e abilitare le aree di scambio.

Utilizzo delle partizioni di gestione del volume logico


Il partizionamento del disco di base in Linux ha i suoi difetti. Cosa succede se esaurisci il disco
spazio? Ai vecchi tempi, una soluzione comune era copiare i dati su un disco più grande, riavviare il
sistema con il nuovo disco e spero di non aver esaurito lo spazio di nuovo presto.
Questo processo significava tempi di inattività e inefficienza.

La gestione del volume logico (LVM) offre molta flessibilità ed efficienza nella gestione
esigenze di archiviazione in continua evoluzione. Con LVM, le partizioni del disco fisico vengono aggiunte ai pool
di spazio chiamato gruppi di volumi . Ai volumi logici viene assegnato lo spazio dai gruppi di volumi come file
necessario. Questo ti dà queste abilità:

■ Aggiungere più spazio a un volume logico dal gruppo di volumi mentre il volume è
ancora in uso.
■ Aggiungere più volumi fisici a un gruppo di volumi se il gruppo di volumi inizia a esaurirsi
di spazio. I volumi fisici possono provenire da dischi.
■ Spostare i dati da un volume fisico a un altro, in modo da poter rimuovere dischi più piccoli
e sostituirli con altri più grandi mentre i filesystem sono ancora in uso, di nuovo,
senza tempi di inattività.

295

Pagina 336
Parte III: diventare un amministratore di sistema Linux

Con LVM è anche più facile ridurre i filesystem per recuperare spazio su disco, sebbene
richiede di smontare il volume logico (ma non è necessario riavviare). Anche LVM
supporta funzionalità avanzate, come il mirroring e il lavoro in cluster.

Verifica di un LVM esistente


Iniziamo esaminando un esempio LVM esistente su un sistema Red Hat Enterprise Linux.
Il seguente comando mostra le partizioni sul mio primo disco rigido:

# fdisk -l / dev / sda | grep / dev / sda


Disco / dev / sda: 160,0 GB, 160000000000 byte
/ dev / sda1 * 2048 1026047 512000 83 Linux
/ dev / sda2 * 1026048 312498175 155736064 8e Linux LVM

Su questo sistema RHEL, il disco rigido da 160 GB è diviso in una partizione Linux da 500 MB
(sda1) e una seconda partizione (Linux LVM) che consuma il resto del disco (sda2). Il prossimo,
Uso il comando pvdisplay per vedere se quella partizione viene utilizzata in un gruppo LVM:

# pvdisplay / dev / sda2


--- Volume fisico ---
Nome PV / dev / sda2
Nome VG vg_abc
Dimensioni PV 148.52 GiB / non utilizzabile 2.00 MiB
Allocabile si (ma pieno)
Dimensione PE 4.00 MiB
PE totale 38021
PE gratuito 0
PE allocato 38021
PV UUID wlvuIv-UiI2-pNND-f39j-oH0X-9too-AOII7R

Puoi vedere che il volume fisico LVM rappresentato da / dev / sda2 ha 148.52GiB
di spazio, che è stato totalmente allocato a un gruppo di volumi denominato vg_abc. Il
la più piccola unità di archiviazione che può essere utilizzata da questo volume fisico è 4,0 MiB, ovvero
indicato come estensione fisica (PE).

Si noti che gli strumenti LVM mostrano lo spazio su disco in MiB e GiB. Un MB è 1.000.000 di byte (10∧6), mentre un MiB è 1.048.576
byte (2∧20). Un MiB è un modo più accurato per riflettere il modo in cui i dati vengono archiviati su un computer. Ma gli addetti al marketing tendono a farlo
usa MB perché fa sembrare che i dischi rigidi, i CD ei DVD che vendono abbiano più capacità di quella che hanno. Mantenere
tenere presente che la maggior parte degli strumenti in Linux visualizza i dati di archiviazione in MiB e GiB, sebbene alcuni possano visualizzare anche MB e GB.

Successivamente, desideri visualizzare le informazioni sul gruppo di volumi:

# vgdisplay vg_abc
--- Gruppo di volumi ---
Nome VG vg_abc
ID di sistema

296

Pagina 337

Capitolo 12: Gestione di dischi e file system

Formato lvm2
Aree di metadati 1
Sequenza di metadati n. 4
Accesso VG leggere scrivere
Stato VG ridimensionabile
MAX LV 0
Cur LV 3
Apri LV 3
Max PV 0
Cur PV 1
Atto PV 1
Dimensione VG 148.52 GiB
Dimensione PE 4.00 MiB
PE totale 38021
Alloc PE / Taglia 38021 / 148,52 GiB
PE gratuito / Taglia 0/0
12
VG UUID c2SGHM-KU9H-wbXM-sgca-EtBr-UXAq-UnnSTh
Puoi vedere che tutti i 38.021 PE sono stati assegnati. Utilizzando lvdisplay come segue,
puoi vedere dove sono stati allocati (ho tagliato parte dell'output):

# lvdisplay vg_abc
--- Volume logico ---
Nome LV / dev / vg_abc / lv_root
Nome VG vg_abc
LV UUID 33VeDc-jd0l-hlCc-RMuB-tkcw-QvFi-cKCZqa
Accesso in scrittura LV leggere scrivere
Stato LV a disposizione
# Aperto 1
Taglia LV 50,00 GiB
Attuale LE 12800
Segmenti 1
Allocazione ereditare
Leggi avanti settori auto
- attualmente impostato su 256
Blocca dispositivo 253: 0
--- Volume logico ---
Nome LV / dev / vg_abc / lv_home
Nome VG vg_abc
...
Taglia LV 92.64 GiB
--- Volume logico ---
Nome LV / dev / vg_abc / lv_swap
Nome VG vg_abc
...
Taglia LV 5,88 GiB

Ci sono tre volumi logici che disegnano spazio da vg_abc. Ogni volume logico è
associato a un nome dispositivo che include il nome del gruppo di volumi e il file logico
nome volume: / dev / vg_abc / lv_root (50 GB), / dev / vg_abc / lv_home (92,64 GB) e

297

Pagina 338

Parte III: diventare un amministratore di sistema Linux

/ dev / vg_abc / lv_swap (5,88 GB). Altri dispositivi collegati a questi nomi si trovano nel file
Directory / dev / mapper: vg_abc-lv_home, vg_abc-lv_root e vg_abc-lv_swap.
Entrambi i gruppi di nomi possono essere utilizzati per fare riferimento a questi volumi logici.

I volumi logici root e home sono formattati come filesystem ext4, mentre il file swap
il volume logico è formattato come spazio di swap. Diamo un'occhiata al file / etc / fstab per vedere come
vengono utilizzati questi volumi logici:

# grep vg_ / etc / fstab


/ dev / mapper / vg_abc-lv_root / ext4 predefinito 1 1
/ dev / mapper / vg_abc-lv_home / home ext4 predefinito 1 2
/ dev / mapper / vg_abc-lv_swap swap swap default 0 0

La Figura 12.1 illustra come le diverse partizioni, gruppi di volumi e volumi logici
si riferiscono al filesystem Linux completo. Il dispositivo sda1 è formattato come filesystem e
montato nella directory / boot. Il dispositivo sda2 fornisce spazio per il volume vg_abc
gruppo. Quindi i volumi logici lv-home e lv-root vengono montati su / home e /
directory, rispettivamente.

FIGURA 12.1

I volumi logici LVM possono essere montati come normali partizioni su un filesystem Linux.

/ bin / boot / etc / home ...

Logico / dev / mapper / vg_abc-lv_root


volumi / dev / mapper / vg_abc-lv_home
(lv) / dev / mapper / vg_abc-lv_swap

Gruppo di volumi
vg_abc
(vg)

/ dev / sda1 Fisico / dev / sda2


volume
(pv)
Se si esaurisce lo spazio su uno qualsiasi dei volumi logici, è possibile assegnare più spazio da
il gruppo di volumi. Se il gruppo di volumi ha esaurito lo spazio, è possibile aggiungere un altro disco rigido
o unità di archiviazione di rete e aggiungi spazio da tale unità al gruppo di volumi, così di più
è disponibile.

298

Pagina 339

Capitolo 12: Gestione di dischi e file system

Ora che sai come funziona LVM, la sezione successiva mostra come creare logico LVM
volumi da zero.

Creazione di volumi logici LVM


I volumi logici LVM vengono utilizzati dall'alto verso il basso, ma vengono creati dal basso verso l'alto.
Come illustrato nella Figura 12.1, prima crei uno o più volumi fisici (pv), usa il file
volumi fisici per creare gruppi di volumi (vg), quindi creare volumi logici da
gruppi di volumi (lv).

I comandi per lavorare con ogni componente LVM iniziano con le lettere pv, vg e lv.
Ad esempio, pvdisplay mostra i volumi fisici, vgdisplay mostra i gruppi di volumi e
lvdisplay mostra i volumi logici.

La seguente procedura ti guida attraverso i passaggi della creazione di volumi LVM da zero.
12
Per eseguire questa procedura, è possibile utilizzare l'unità flash USB e le partizioni descritte in precedenza in
questo capitolo. Usa questi passaggi:

1. Procurarsi un disco con un po 'di spazio libero su di esso e creare una partizione del disco su di esso di
Tipo LVM (8e). Quindi utilizzare il comando pvcreate per identificare questa partizione come file
Volume fisico LVM. Il processo per eseguire questa operazione è descritto nella sezione "Creazione
un disco con più partizioni ”utilizzando il dispositivo / dev / sdc6 in quell'esempio.

2. Per aggiungere quel volume fisico a un nuovo gruppo di volumi, utilizzare il comando vgcreate.
Il comando seguente mostra come creare un gruppo di volumi chiamato myvg0
utilizzando il dispositivo / dev / sdc6:
# vgcreate myvg0 / dev / sdc6
Gruppo di volumi "myvg0" creato correttamente

3. Per vedere il nuovo gruppo di volumi, digita quanto segue:


# vgdisplay myvg0
--- Gruppo di volumi ---
Nome VG myvg0
...
Dimensione VG 396.00 MiB
Dimensione PE 4.00 MiB
PE totale 99
Alloc PE / Taglia 0/0
PE gratuito / Taglia 99 / 396,00 MiB

4. Su una partizione da 400 MiB, 396MiB di spazio possono essere utilizzati in blocchi di 4MiB. Ecco come
per creare un volume logico da parte dello spazio in quel gruppo di volumi e poi
verificare che il dispositivo per quel volume logico esista:
# lvcreate -n music -L 100M myvg0
Volume logico "musica" creato
# ls / dev / mapper / myvg0 *
/ dev / mapper / myvg0-music

299

Pagina 340
Parte III: diventare un amministratore di sistema Linux

5. La procedura ha creato un dispositivo chiamato / dev / mapper / myvg0-music. Quel dispositivo


ora può essere usato per mettere un filesystem e montarlo, proprio come hai fatto con regular
partizioni nella prima parte di questo capitolo. Per esempio:
# mkfs -t ext4 / dev / mapper / myvg0-music
# mkdir / mnt / mymusic
# mount / dev / mapper / myvg0-music / mnt / mymusic
# df -h / mnt / mymusic
Filesystem Dimensioni utilizzate Utilizzo disponibile% montato su
/ dev / mapper / myvg0-music 97M 5.6M 87M 7% / mnt / mymusic

6. Come con le partizioni normali, i volumi logici possono essere montati permanentemente aggiungendo
una voce nel file / etc / fstab, come ad esempio:
/ dev / mapper / myvg0-music / mnt / mymusic ext4 predefinito 1 2

Al successivo riavvio, il volume logico viene automaticamente montato su / mnt / mymusic.


(Assicurati di smontare il volume logico e rimuovere questa linea se vuoi rimuovere l'USB
flash drive dal tuo computer.)

Volumi logici LVM in crescita


Se esaurisci lo spazio su un volume logico, puoi aggiungerlo senza nemmeno smontarlo.
ing it. Per fare ciò, devi avere spazio disponibile nel gruppo di volumi, aumentare la logica
volume e far crescere il filesystem per riempirlo. Basandosi sulla procedura del precedente
sezione, ecco come aumentare un volume logico:

1. Annotare la quantità di spazio attualmente presente sul volume logico, quindi controllare tale spazio
è disponibile nel gruppo di volumi del volume logico:
# vgdisplay myvg0
...
Dimensione VG 396.00 MiB
Dimensione PE 4.00 MiB
PE totale 99
Alloc PE / Taglia 25 / 100.00 MiB
Gratuito PE / Taglia 74 / 296.00 MiB
# df -h / mnt / mymusic /
Filesystem Dimensioni utilizzate Utilizzo disponibile% montato su
/ dev / mapper / myvg0-music 97M 5.6M 87M 7% / mnt / mymusic

2. Espandere il volume logico utilizzando il comando lvextend:


# lvextend -L + 100M / dev / mapper / myvg0-music
Estensione del volume logico della musica a 200,00 MiB
Volume logico della musica ridimensionato correttamente

3. Ridimensiona il filesystem per adattarlo alla nuova dimensione del volume logico:
# resize2fs -p / dev / mapper / myvg0-music

4. Verificare che il filesystem sia ora ridimensionato per includere l'ulteriore


spazio sul disco.

300

Pagina 341

Capitolo 12: Gestione di dischi e file system

# df -h / mnt / mymusic /
Filesystem Dimensioni utilizzate Utilizzo disponibile% montato su
/ dev / mapper / myvg0-music 194M 5.6M 179M 3% / mnt / mymusic

Puoi vedere che il filesystem ora è più grande di circa 100 MB.

Montaggio dei filesystem


Ora che hai avuto la possibilità di giocare con il partizionamento del disco e i filesystem, vado
per fare un passo indietro e parlare di come i filesystem sono impostati per connettersi in modo permanente al tuo
Sistema Linux.

La maggior parte delle partizioni del disco rigido create durante l'installazione di Linux vengono montate automaticamente
per te quando il sistema si avvia. Quando installi Fedora, Ubuntu, Red Hat Enterprise
12
Linux e altri sistemi Linux, hai la possibilità di lasciare automaticamente il programma di installazione
configurare il disco rigido o creare partizioni da soli e indicare i punti di montaggio per
quelle partizioni.

Quando si avvia Linux, di solito tutte le partizioni Linux sul disco rigido sono elencate nel file
/ etc / fstab e vengono montati. Per questo motivo, questa sezione descrive cosa potresti fare
aspettarsi di trovare in quel file. Descrive anche come montare altre partizioni in questo modo
diventano parte del tuo filesystem Linux.

Il comando mount viene utilizzato non solo per montare i dispositivi di archiviazione locali, ma anche per il montaggio
altri tipi di filesystem sul tuo sistema Linux. Ad esempio, mount può essere utilizzato per montare
directory (cartelle) sulla rete da server NFS o Samba. Può essere usato per montare
filesystem da un nuovo disco rigido o unità flash USB che non è configurato per il montaggio automatico.
Può anche montare file di immagine del filesystem utilizzando dispositivi loop.

Con l'aggiunta di funzioni di montaggio automatico e modifiche al modo in cui i supporti rimovibili vengono identificati con Linux
2.6 kernel (utilizzando funzionalità come Udev e Hardware Abstraction Layer), non è più necessario montare manualmente
supporto rimovibile per molti sistemi desktop Linux. Capire come montare e smontare manualmente i filesystem
su un server Linux, tuttavia, può essere un'abilità molto utile se vuoi montare filesystem remoti o montarli temporaneamente
partizioni in posizioni particolari.

File system supportati


Per vedere i tipi di filesystem caricati nel kernel, digita cat / proc / filesystems.
L'elenco che segue mostra un esempio di tipi di file system attualmente supportati in
Linux, sebbene potrebbero non essere in uso al momento o addirittura disponibili su Linux
distribuzione che stai utilizzando.

301

Pagina 342

Parte III: diventare un amministratore di sistema Linux

■ befs: sistema di file utilizzato dal sistema operativo BeOS.

■ btrfs: un filesystem copy-on-write che implementa caratteristiche avanzate del filesystem.


Offre tolleranza agli errori e facile amministrazione. Il file system btrfs ha recentemente
è cresciuta in popolarità per le applicazioni aziendali.
■ cifs:Common Internet Filesystem (CIFS), il file system virtuale utilizzato per l'accesso
server conformi alla specifica SNIA CIFS. CIFS è un tentativo di perfezionare
e standardizzare il protocollo SMB utilizzato dalla condivisione di file Samba e Windows.
■ ext4: successore del popolare filesystem ext3. Include molti miglioramenti
su ext3, come il supporto per volumi fino a 1 exbibyte e dimensioni di file fino a 16
tebibytes. (Questo ha sostituito ext3 come file system predefinito utilizzato in Fedora e RHEL.
Da allora è stato soppiantato da xfs come impostazione predefinita per RHEL.)
■ ext3 : i file system Ext sono i più comuni nella maggior parte dei sistemi Linux. Il ext3
filesystem, chiamato anche il terzo filesystem esteso, include funzionalità di journaling
che, rispetto a ext2, migliora la capacità di un filesystem di recuperare dai crash.
■ ext2: il tipo di file system predefinito per i sistemi Linux precedenti. Le caratteristiche sono le stesse
come ext3, tranne per il fatto che ext2 non include le funzioni di journaling.
■ ext: questa è la prima versione di ext3. Non è più usato molto spesso.
■ iso9660: sviluppato dal filesystem High Sierra (lo standard originale per
CD-ROM). Estensioni allo standard High Sierra (chiamate estensioni Rock Ridge)
consente ai file system iso9660 di supportare nomi di file lunghi e informazioni in stile UNIX
(come i permessi dei file, la proprietà e i collegamenti). I CD-ROM di dati in genere lo utilizzano
tipo di file system.
■ kafs : file system del client AFS. Utilizzato in ambienti informatici distribuiti da condividere
file con client Linux, Windows e Macintosh.
■ minix : tipo di file system Minix, utilizzato originariamente con la versione Minix di UNIX.
Supporta nomi di file fino a soli 30 caratteri.
■ msdos : un filesystem MS-DOS. Puoi usare questo tipo per montare dischi floppy che
provengono dai sistemi operativi Microsoft.
■ vfat : filesystem Microsoft Extended FAT (VFAT).

■ umsdos : un filesystem MS-DOS con estensioni per consentire funzionalità simili


a UNIX (inclusi nomi di file lunghi).
■ proc: non un vero filesystem, ma piuttosto un'interfaccia per filesystem per il kernel Linux.
Probabilmente non farai niente di speciale per impostare un filesystem proc. comunque, il
Il punto di montaggio / proc dovrebbe essere un filesystem proc. Molte utilità si affidano a / proc per
accedere alle informazioni sul kernel Linux.
■ reiserfs : filesystem registrato su ReiserFS. ReiserFS era una volta un valore predefinito comune
tipo di file system per diverse distribuzioni Linux. Tuttavia, i filesystem ext e xfs
sono tipi di filesystem di gran lunga più comuni usati con Linux oggi.
302

Pagina 343

Capitolo 12: Gestione di dischi e file system

■ swap: utilizzato per le partizioni di swap. Le aree di scambio vengono utilizzate per conservare temporaneamente i dati quando
La RAM è esaurita. I dati vengono scambiati nell'area di scambio e quindi restituiti alla RAM quando
è necessario di nuovo.
■ squashfs: tipo di file system compresso di sola lettura. Squashfs è popolare sui CD live,
dove lo spazio è limitato e un supporto di sola lettura (come un CD o un DVD).
■ nfs: tipo di filesystem di rete (NFS). NFS viene utilizzato per montare i filesystem
su altri computer Linux o UNIX.
■ hpfs : il file system viene utilizzato per eseguire montaggi di sola lettura di un file system HPFS OS / 2.
■ ncpfs: file system utilizzato con Novell NetWare. È possibile montare i filesystem NetWare
su una rete.
■ ntfs: file system di Windows NT. A seconda della distribuzione che hai, potrebbe essere
supportato come filesystem di sola lettura (in modo da poter montare e copiare file da esso). 12
■ affs: sistema di file utilizzato con computer Amiga.

■ ufs:file system diffuso sui sistemi operativi Sun Microsystems (ovvero Solaris
e SunOS).
■ jfs : un file system con journaling a 64 bit di IBM relativamente leggero per
molte caratteristiche ha.
■ xfs:un filesystem ad alte prestazioni originariamente sviluppato da Silicon Graphics che
funziona molto bene con file di grandi dimensioni. Questo file system è il tipo predefinito per RHEL 7.
■ gfs2: un filesystem su disco condiviso che consente a più macchine di utilizzare tutte lo stesso
disco condiviso senza passare attraverso un livello di file system di rete come CIFS, NFS,
e così via.

Per vedere l'elenco dei filesystem forniti con il kernel che stai attualmente utilizzando, digita
ls / lib / modules / kernelversion / kernel / fs /. I moduli effettivi vengono memorizzati in
sottodirectory di quella directory. Il montaggio di un filesystem di un tipo supportato causa l'estensione
modulo del file system da caricare, se non è già caricato.

Digita man fs per vedere le descrizioni dei filesystem Linux.

Abilitazione delle aree di scambio


Un'area di scambio è un'area del disco che viene resa disponibile a Linux se il sistema si esaurisce
memoria (RAM). Se la tua RAM è piena e provi ad avviare un'altra applicazione senza uno scambio
area, l'applicazione non funzionerà.

Con un'area di scambio, Linux può scambiare temporaneamente i dati dalla RAM all'area di scambio e quindi ottenere
quando necessario. Si subisce un calo delle prestazioni, ma è meglio che i processi falliscano.

Per creare un'area di scambio da una partizione o un file, utilizzare il comando mkswap. Per temporaneamente
abilitare quell'area di scambio, puoi usare il comando swapon. Ad esempio, ecco come controllare

303

Pagina 344

Parte III: diventare un amministratore di sistema Linux

lo spazio di scambio disponibile, creare un file di scambio, abilitare il file di scambio e quindi verificare che il file
lo spazio è disponibile sul tuo sistema:

# free -m
buffer condivisi gratuiti utilizzati totali memorizzati nella cache
Mem: 1955663 1291 0 42 283
- / + buffer / cache: 337 1617
Scambio: 819 0 819
# dd if = / dev / zero of = / var / tmp / myswap bs = 1M count = 1024
# mkswap / var / opt / myswap
# swapon / var / opt / myswap
# free -m
buffer condivisi gratuiti utilizzati totali memorizzati nella cache
Mem: 1955 1720235 0 42 1310
- / + buffer / cache: 367 1588
Scambio: 1843 0 1843

Il comando gratuito mostra la quantità di swap prima e dopo la creazione, la creazione e


abilitare l'area di scambio con il comando swapon. Quella quantità di swap è disponibile
immediatamente e temporaneamente al tuo sistema. Per rendere permanente quell'area di scambio, tu
è necessario aggiungerlo al file / etc / fstab. Ecco un esempio:

/ var / opt / myswap swap swap il valore predefinito è 0 0

Questa voce indica che il file di scambio denominato / var / opt / myswap deve essere abilitato in
tempo di avvio. Poiché non esiste un punto di montaggio per un'area di scambio, il secondo campo è impostato su
swap, così come il tipo di partizione. Per verificare che il file di scambio funzioni prima del riavvio, puoi farlo
abilitalo immediatamente (swapon -a) e controlla che appaia l'area di swap aggiuntiva:

# swapon -a

Disattivazione di un'area di scambio


Se in qualsiasi momento si desidera disabilitare un'area di scambio, è possibile farlo utilizzando il comando swapoff.
Potresti farlo, in particolare, se l'area di scambio non è più necessaria e desideri reclamare
lo spazio occupato da un file di scambio o rimuovere un'unità USB che fornisce uno scambio
partizione.

Innanzitutto, assicurati che non venga utilizzato spazio sul dispositivo di scambio (utilizzando il comando gratuito),
e poi usa lo swapoff per disattivare l'area di swap in modo da poter riutilizzare lo spazio. Ecco un file
esempio:

# free -m
buffer condivisi gratuiti utilizzati totali memorizzati nella cache
Mem: 1955 1720 235 0 42 1310
- / + buffer / cache: 367 1588
Scambio: 1843 0 1843
# swapoff / var / opt / myswap

304

Pagina 345

Capitolo 12: Gestione di dischi e file system

# free -m
Mem: 1955 1720 235 0 42 1310
- / + buffer / cache: 367 1588
Scambio: 819 0 819

Utilizzo del file fstab per definire i file system montabili


Le partizioni del disco rigido sul computer locale e i file system remoti che usi ogni
day sono probabilmente impostati per essere montati automaticamente all'avvio di Linux. Il file / etc / fstab
contiene definizioni per ogni partizione, insieme a opzioni che descrivono com'è la partizione
montato. Ecco un esempio di un file / etc / fstab:

# / etc / fstab
/ dev / mapper / vg_abc-lv_root / ext4 impostazioni predefinite 1 1
UUID = 78bdae46-9389-438d-bfee-06dd934fae28 / boot ext4 predefinito 1 2 12
/ dev / mapper / vg_abc-lv_home / home ext4 predefinito 1 2
/ dev / mapper / vg_abc-lv_swap swap swap default 0 0
# Voci di montaggio aggiunte in seguito
/ dev / sdb1 / win vfat ro 12
192.168.0.27:/nfsstuff / utenti nfs remoti, _netdev 0 0
//192.168.0.28/myshare / share cifs guest, _netdev 0 0
# filesystem Linux speciali
tmpfs / dev / shm tmpfs il valore predefinito è 0 0
devpts / dev / pts devpts gid = 5, modalità = 620 0 0
sysfs / sys sysfs il valore predefinito è 0 0
proc / proc proc predefinito 0 0
Il file / etc / fstab appena mostrato proviene da un'installazione del server Red Hat Enterprise Linux 6 predefinita,
con poche righe aggiunte.

Per ora, puoi ignorare le voci tmpfs, devpts, sysfs e proc. Quelle sono speciali
dispositivi associati a memoria condivisa, finestre del terminale, informazioni sul dispositivo e kernel
parametri, rispettivamente.

In generale, la prima colonna di / etc / fstab mostra il dispositivo o la condivisione (cosa è montato),
mentre la seconda colonna mostra il punto di mount (dove è montato). Questo è seguito da
il tipo di filesystem, eventuali opzioni di montaggio (o valori predefiniti) e due numeri (usati per indicare a
comandi come dump e fsck cosa fare con il filesystem).

Le prime tre voci rappresentano le partizioni del disco assegnate alla radice del filesystem (/),
la directory / boot e la directory / home. Tutti e tre sono filesystem ext4. La quarta
line è un dispositivo di scambio (utilizzato per memorizzare i dati quando la RAM va in overflow). Notare che i nomi dei dispositivi
for /, / home e swap iniziano con / dev / mapper. Questo perché sono logici LVM
volumi a cui è assegnato spazio da un pool di spazio chiamato gruppo di volumi LVM (ulteriori informazioni
LVM nella sezione "Utilizzo delle partizioni di gestione dei volumi logici" più avanti in questo capitolo).

La partizione / boot si trova sulla propria partizione fisica, / dev / sda1. Invece di / dev / sda1,
tuttavia, un identificatore univoco (UUID) identifica il dispositivo. Perché utilizzare un UUID invece di

305

Pagina 346

Parte III: diventare un amministratore di sistema Linux

/ dev / sda1 per identificare il dispositivo? Supponiamo di aver collegato un altro disco al computer
e avviato. Probabilmente non accadrà, ma è possibile che lo sia il nuovo disco
identificato come / dev / sda, facendo in modo che il sistema cerchi il contenuto di / boot al primo
partizione di quel disco.

Per vedere tutti gli UUID assegnati ai dispositivi di archiviazione sul tuo sistema, digita il comando blkid,
come segue:

# blkid
/ dev / sda1:
UUID = "78bdae46-9389-438d-bfee-06dd934fae28" TYPE = "ext4"
/ dev / sda2:
UUID = "wlvuIv-UiI2-pNND-f39j-oH0X-9too-AOII7R" TYPE = "LVM2_member"
/ dev / mapper / vg_abc-lv_root:
UUID = "3e6f49a6-8fec-45e1-90a9-38431284b689" TYPE = "ext4"
/ dev / mapper / vg_abc-lv_swap:
UUID = "77662950-2cc2-4bd9-a860-34669535619d" TYPE = "swap"
/ dev / mapper / vg_abc-lv_home:
UUID = "7ffbcff3-36b9-4cbb-871d-091efb179790" TYPE = "ext4"
/ dev / sdb1:
SEC_TYPE = "msdos" UUID = "75E0-96AA" TYPE = "vfat"

Qualsiasi nome di dispositivo può essere sostituito dalla designazione UUID nella colonna di sinistra di un file
voce / etc / fstab.

Ho aggiunto le tre voci successive in / etc / fstab per illustrare alcuni diversi tipi di voci.
Ho collegato un disco rigido da un vecchio sistema Microsoft Windows e l'ho montato
la directory / win. Ho aggiunto l'opzione ro in modo che monti in sola lettura.

Le due voci successive rappresentano i file system remoti. Nella directory / remote, il file
La directory / nfsstuff è montata in lettura / scrittura (rw) dall'host all'indirizzo 192.168.0.27 come
una condivisione NFS. Nella directory / share, viene montata la condivisione di Windows denominata myshare
dall'host al 192.168.0.28. In entrambi i casi, ho aggiunto l'opzione _netdev, che dice a Linux
attendere che la rete si attivi prima di provare a montare le condivisioni. (Per maggiori informazioni
Per informazioni sul montaggio di condivisioni CIFS e NFS, fare riferimento ai Capitoli 19, "Configurazione di un file Windows
Server di condivisione (Samba) "e 20," Configurazione di un file server NFS ", rispettivamente.)

Proveniente da Windows
La sezione "Utilizzo del file fstab per definire i file system montabili" mostra il montaggio di un disco rigido
partizione da un vecchio filesystem VFAT utilizzato in Windows. La maggior parte dei sistemi Windows oggi utilizza l'estensione
File system NTFS. Il supporto per questo sistema, tuttavia, non viene fornito con tutti i sistemi Linux. NTFS è
disponibile da Fedora nel pacchetto ntfs-3g.

306
Pagina 347

Capitolo 12: Gestione di dischi e file system

Per aiutarti a capire il contenuto del file / etc / fstab, ecco cosa c'è in ogni campo
di quel file:

■ Campo 1 : il nome del dispositivo che rappresenta il filesystem. Questo campo può
includere l'opzione ETICHETTA o UUID, con la quale è possibile indicare un'etichetta di volume
o identificatore univoco universale (UUID) invece del nome del dispositivo. Il vantaggio
a questo approccio è che poiché la partizione è identificata dal nome del volume, tu
può spostare un volume su un nome di dispositivo diverso e non è necessario modificare fstab
file. (Vedere la descrizione del comando mkfs nella sezione "Utilizzo del comando mkfs
Comando per creare un file system "per informazioni sulla creazione e l'utilizzo di etichette.)
■ Campo 2 : il punto di montaggio nel filesystem. Il filesystem contiene tutti i dati da
il punto di montaggio in basso nella struttura ad albero delle directory a meno che non sia un altro filesystem
montato a un certo punto sotto di esso.
■ Campo 3 : il tipo di file system. I tipi di filesystem validi sono descritti nella sezione 12
"File system supportati" all'inizio di questo capitolo (sebbene sia possibile utilizzare solo filesys-
tipi di elementi per i quali sono inclusi i driver per il kernel).
■ Campo 4: utilizzare i valori predefiniti o un elenco di opzioni separate da virgole (senza spazi) desiderate
da utilizzare quando la voce è montata. Vedere la pagina del manuale del comando di montaggio (sotto
l'opzione -o) per informazioni su altre opzioni supportate.

Tipicamente, solo l'utente root può montare un filesystem usando il comando mount. Tuttavia, per consentire a qualsiasi utente
per montare un filesystem (come un filesystem su un CD), potresti aggiungere l'opzione utente al campo 4 di / etc / fstab.

■ Campo 5 : il numero in questo campo indica se il filesystem deve essere


dump (ovvero, eseguire il backup dei dati). Un 1 significa che il filesystem deve farlo
essere scaricato e uno 0 significa che non lo fa. (Questo campo non è più particolarmente utilizzato-
ful perché la maggior parte degli amministratori Linux utilizza opzioni di backup più sofisticate rispetto a
il comando dump. Molto spesso viene utilizzato uno 0.)
■ Campo 6 : il numero in questo campo indica se il file system indicato deve
essere controllato con fsck quando arriva il momento di controllarlo: 1 significa che è necessario
da controllare per primo, 2 significa controllare dopo che tutti quelli indicati da 1 sono già stati
stato controllato e 0 significa non controllarlo.

Se vuoi saperne di più sulle opzioni di montaggio e su altre funzionalità di


/ etc / fstab, ci sono diverse pagine man a cui puoi fare riferimento, incluso man 5 nfs
e man 8 mount.

Utilizzo del comando mount per montare i file system


I sistemi Linux eseguono automaticamente mount -a (monta tutti i filesystem dal file / etc / fstab
file) ogni volta che si avvia. Per questo motivo, generalmente usi il comando mount solo per

307

Pagina 348

Parte III: diventare un amministratore di sistema Linux

situazioni speciali. In particolare, l'utente o l'amministratore medio utilizza mount in


due strade:

■ Per visualizzare i dischi, le partizioni e i filesystem remoti attualmente montati

■ Per montare temporaneamente un filesystem


Qualsiasi utente può digitare mount (senza opzioni) per vedere quali filesystem sono attualmente montati
sul sistema Linux locale. Quello che segue è un esempio del comando mount. Mostra a
singola partizione del disco rigido (/ dev / sda1) contenente il filesystem root (/) e proc e
devpts tipi di filesystem montati su / proc e / dev, rispettivamente.

$ mount
/ dev / sda3 su / tipo ext4 (rw)
/ dev / sda2 su / boot tipo ext4 (rw)
/ dev / sda1 su / mnt / win tipo vfat (rw)
/ dev / proc su / proc tipo proc (rw)
/ dev / sys su / sys tipo sysfs (rw)
/ dev / devpts su / dev / pts digita devpts (rw, gid = 5, mode = 620)
/ dev / shm su / dev / shm tipo tmpfs (rw)
nessuno su / proc / sys / fs / binfmt_misc tipo binfmt_misc (rw)
/ dev / cdrom su / media / MyOwnDVD tipo iso9660 (ro, nosuid, nodev)

Tradizionalmente, i dispositivi più comuni da montare a mano sono i supporti rimovibili, come
DVD o CD. Tuttavia, a seconda del tipo di desktop in uso, CD e DVD potrebbero
essere montati automaticamente quando li inserisci. (In alcuni casi, le applicazioni sono
avviato anche quando viene inserito il supporto. Ad esempio, un lettore musicale CD o un editor di foto
può essere avviato quando il supporto inserito contiene musica o immagini digitali.)

Occasionalmente, tuttavia, potresti trovare utile montare manualmente un filesystem. Per esempio,
vuoi guardare il contenuto di un vecchio disco rigido, quindi lo installi come secondo disco su
il tuo computer. Se le partizioni sul disco non si montano automaticamente, è possibile montare le partizioni
da quel disco manualmente. Ad esempio, per montare in sola lettura una partizione del disco sdb1 con estensione
un vecchio filesystem ext3, puoi digitare questo:

# mkdir / mnt / temp


# mount -t ext3 -o ro / dev / sdb1 / mnt / tmp

Un altro motivo per utilizzare il comando mount è rimontare una partizione per cambiarne il montaggio
opzioni. Supponi di voler rimontare / dev / sdb1 in lettura / scrittura, ma non lo vuoi
smontalo (forse qualcuno lo sta usando). È possibile utilizzare l'opzione rimonta come segue:

# mount -t ext3 -o rimontare, rw / dev / sdb1

Montare un'immagine disco in loopback


Un altro modo prezioso per utilizzare il comando mount ha a che fare con le immagini del disco. Se tu
scarica un'immagine di CD o floppy da Internet e vuoi vedere cosa contiene,

308

Pagina 349

Capitolo 12: Gestione di dischi e file system

puoi farlo senza masterizzarlo su CD o floppy. Con l'immagine sul tuo disco rigido, crea
un punto di montaggio e utilizzare l'opzione -o loop per montarlo localmente. Ecco un esempio:

# mkdir / mnt / mycdimage


# mount -o loop any-i686-disc1.iso / mnt / mycdimage

In questo esempio, viene creata la directory / mnt / mycdimage e quindi il file di immagine del disco
(Qualunque-i686-disc1.iso) residente nella directory corrente viene montato su di esso. Puoi
ora eseguire il cd in quella directory, visualizzarne il contenuto e copiare o utilizzare uno qualsiasi dei suoi contenuti. Questo
è utile per le immagini dei CD scaricate da cui si desidera installare il software senza
dover masterizzare l'immagine su CD. Potresti anche condividere quel punto di montaggio su NFS, quindi
potresti installare il software da un altro computer. Quando hai finito, digita semplicemente
umount / mnt / mycdimage per smontarlo.

Altre opzioni per il montaggio sono disponibili solo per tipi di filesystem specifici. Vedi il monte 12
pagina di manuale per quelle e altre utili opzioni.

Utilizzando il comando umount


Quando hai finito di usare un filesystem temporaneo, o vuoi smontare un file permanente
filesystem temporaneamente, usa il comando umount. Questo comando scollega il filesystem
dal suo punto di montaggio nel tuo filesystem Linux. Per usare umount, puoi dargli un
nome della directory o un nome del dispositivo. Per esempio:

# umount / mnt / test

Questo smonta il dispositivo dal punto di montaggio / mnt / test. Puoi anche smontare usando
questa forma:

# umount / dev / sdb1

In generale, è meglio usare il nome della directory (/ mnt / test) perché il file umount
il comando
iniziare con fallirà
/ dev.)se il dispositivo è montato in più di una posizione. (Il dispositivo nomina tutti

Se ricevi il messaggio che il dispositivo è occupato, la richiesta di umount non è riuscita perché uno dei due
l'applicazione ha un file aperto sul dispositivo o hai una shell aperta con una directory in
dispositivo come directory corrente. Interrompi i processi o passa a una directory esterna al dispositivo
stai tentando di smontare la richiesta di umount per avere successo.

Un'alternativa per smontare un dispositivo occupato è l'opzione -l. Con umount -l (un pigro
unmount), lo smontaggio avviene non appena il dispositivo non è più occupato. Per smontare un file
filesystem NFS remoto che non è più disponibile (ad esempio, il server è andato inattivo), tu
può usare l'opzione umount -f per smontare forzatamente il filesystem NFS.

309

Pagina 350

Parte III: diventare un amministratore di sistema Linux

Uno strumento utile per scoprire cosa tiene aperto un dispositivo che vuoi smontare è il comando lsof. Digita lsof con
il nome della partizione che vuoi smontare (come lsof / mnt / test). L'output mostra quali comandi
stanno tenendo i file aperti su quella partizione. Il comando fuser-v / mnt / test può essere utilizzato allo stesso modo.

Utilizzo del comando mkfs per creare un filesystem


È possibile creare un file system per qualsiasi tipo di file system supportato su un disco o una partizione che
Tu scegli. Lo fai con il comando mkfs. Sebbene questo sia molto utile per creare
filesystem su partizioni del disco rigido, è possibile creare filesystem su unità flash USB, floppy
dischi o anche CD riscrivibili.

Prima di creare un nuovo filesystem, assicurati di quanto segue:

■ Il disco è stato partizionato come desiderato (utilizzando il comando fdisk).


■ Si ottiene il nome del dispositivo corretto o si rischia di sovrascrivere il disco rigido con
sbaglio. Ad esempio, la prima partizione sulla seconda unità flash SCSI o USB
il tuo sistema è / dev / sdb1 e il terzo disco è / dev / sdc1.
■ Per smontare la partizione se è montata prima di creare il filesystem.

I seguenti sono due esempi di utilizzo di mkfs per creare un filesystem su due partizioni
su un'unità flash USB situata come prima e seconda partizione sul terzo disco SCSI
(/ dev / sdc1 e / dev / sdc2). Il primo crea una partizione xfs, mentre il secondo crea
una partizione ext4.

# mkfs -t ext4 / dev / sdc1


meta-dati = / dev / sda3 isize = 256 agcount = 4, agsize = 256825 blks
= sectsz = 512 attr = 2, projid32bit = 1
= crc = 0
dati = bsize = 4096 blocchi = 1027300, imaxpct = 25
= sunit = 0 swidth = 0 blks
naming = versione 2 bsize = 4096 ascii-ci = 0 ftype = 0
log = log interno bsize = 4096 blocchi = 2560, versione = 2
= sectsz = 512 sunit = 0 blks, conteggio pigro = 1
realtime = nessuno extsz = 4096 blocchi = 0, rtextents = 0
# mkfs -t ext4 / dev / sdc2
mke2fs 1.42.9 (28-dicembre-2013)
Etichetta del file system =
Tipo di sistema operativo: Linux
Dimensione blocco = 4096 (log = 2)
Dimensione del frammento = 4096 (log = 2)
Passo = 0 blocchi, larghezza della striscia = 0 blocchi

310
Pagina 351

Capitolo 12: Gestione di dischi e file system

257024 inode, 1027300 blocchi


51365 blocchi (5,00%) riservati al super user
Primo blocco dati = 0
Numero massimo di blocchi del file system = 1052770304
32 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
8032 inode per gruppo
Backup Superblock archiviati su blocchi:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Assegnazione di tabelle di gruppo: fatto
Scrittura di tabelle inode: fatto
Creazione giornale (16384 blocchi): fatto
Scrittura di superblocchi e informazioni sull'account del filesystem: fatto

Puoi vedere le statistiche che vengono emesse con la formattazione eseguita dal comando mkfs.
Viene emesso il numero di inode e blocchi creati, così come il numero di blocchi per gruppo 12
e frammenti per gruppo. Un inode, che contiene metadati come proprietà e timestamp
per ogni file, viene utilizzato per ogni file e directory nel filesystem. Quindi il numero di
gli inode mostrati qui limitano il numero totale di file che puoi creare in quel filesystem.

Ora monta questo filesystem (mkdir / mnt / myusb; mount / dev / sdc1 / mnt / myusb),
cambia in / mnt / myusb come directory corrente (cd / mnt / myusb) e crea file su di essa
come tu desideri.

Sommario
La gestione dei file system è una parte fondamentale dell'amministrazione di un sistema Linux. Utilizzando comp
mands come fdisk, è possibile visualizzare e modificare le partizioni del disco. È possibile aggiungere filesystem
alle partizioni utilizzando il comando mkfs. Una volta creati, i filesystem possono essere montati e
smontato usando rispettivamente i comandi mount e umount.

Logical Volume Management (LVM) offre un modo più potente e flessibile di gestione
partizioni del disco. Con LVM, crei pool di archiviazione, chiamati volumi, che ti consentono
per aumentare e ridurre i volumi logici, nonché estendere la dimensione dei gruppi di volumi di
aggiungendo più volumi fisici.

Con la maggior parte delle nozioni di base necessarie per diventare un amministratore di sistema, trattate a questo punto in
il libro, il Capitolo 13 introduce concetti per estendere queste capacità per gestire i server di rete.
Gli argomenti di quel capitolo includono informazioni su come installare, gestire e proteggere i server.

Esercizi
Usa questi esercizi per testare la tua conoscenza della creazione di partizioni del disco, volume logico
gestione e lavorare con i filesystem. Hai bisogno di un'unità flash USB che sia almeno
1 GB che puoi cancellare per questi esercizi.

311

Pagina 352

Parte III: diventare un amministratore di sistema Linux

Queste attività presumono che tu stia utilizzando un sistema Fedora o Red Hat Enterprise Linux
(sebbene alcune attività funzionino anche su altri sistemi Linux). Se sei bloccato, soluzioni
alle attività sono mostrate nell'Appendice B (sebbene in Linux, ci siano spesso più modi
per completare un'attività).

1. Eseguire un comando come root per controllare il file / var / log / messages e inserire il proprio
Chiavetta USB. Determina il nome del dispositivo dell'unità flash USB.

2. Eseguire un comando per elencare la tabella delle partizioni per l'unità flash USB.

3. Elimina tutte le partizioni sull'unità flash USB, salva le modifiche e assicurati


le modifiche sono state apportate sia sulla tabella delle partizioni del disco che nel kernel Linux.
4. Aggiungere tre partizioni all'unità flash USB: partizione Linux da 100 MB, scambio da 200 MB
partizione e partizione LVM da 500 MB. Salva le modifiche.

5. Metti un filesystem ext3 sulla partizione Linux.

6. Creare un punto di montaggio chiamato / mnt / mypart e montare la partizione Linux su di esso.

7. Abilitare la partizione di swap e accenderla in modo che lo spazio di swap aggiuntivo sia immediatamente
a disposizione.

8. Creare un gruppo di volumi chiamato abc dalla partizione LVM, creare una logica da 200 MB
volume da quel gruppo chiamato dati, aggiungere una partizione VFAT e quindi temporaneamente
montare il volume logico su una nuova directory denominata / mnt / test. Controlla che lo fosse
montato con successo.

9. Aumentare il volume logico da 200 MB a 300 MB.

10. Fai quello che devi fare per rimuovere in sicurezza l'unità flash USB dal computer:
smontare la partizione Linux, disattivare la partizione di swap, smontare la logica
volume ed eliminare il gruppo di volumi dall'unità flash USB.

312

Pagina 353

Parte IV
Diventare un Linux
Amministratore del server

IN QUESTA PARTE Capitolo 18


Configurazione di un server FTP
Capitolo 13
Capitolo 19
Capire l'amministrazione del server
Configurazione di una condivisione file di Windows (Samba)
Capitolo 14 server
Amministrazione della rete
Capitolo 20
Capitolo 15 Configurazione di un file server NFS
Avvio e arresto dei servizi
Capitolo 21
Capitolo 16 Risoluzione dei problemi di Linux
Configurazione di un server di stampa

Capitolo 17
Configurazione di un server Web
Pagina 355
354

CAPITOLO

Capire il server
13
Amministrazione
IN QUESTO CAPITOLO
Amministrazione di server Linux

Comunicazione con i server sulle reti

Configurazione della registrazione in locale e in remoto

Monitoraggio dei sistemi server

Gestire i server nell'azienda

A software, configurazione delle stampanti e così via), quando si configura un Linux vengono visualizzate molte nuove attività
sistema per agire come un server. Ciò è particolarmente vero se il server che configuri è reso pubblico
nche se qualche sistema le attività di amministrazione sono necessari anche su un sistema desktop (l'installazione
chiunque su Internet, dove puoi essere sovraccaricato di richieste da bravi ragazzi, mentre ne hai bisogno
per essere costantemente in guardia dagli attacchi dei cattivi.

Sono disponibili dozzine di diversi tipi di server per i sistemi Linux. La maggior parte dei server serve i dati a
client remoti, ma altri servono il sistema locale (come quelli che raccolgono i messaggi di registrazione o
avviare le attività di manutenzione a orari prestabiliti utilizzando la funzione cron). Molti server sono rappresentati da
processi che vengono eseguiti continuamente in background e rispondono alle richieste che pervengono.
Questi processi sono indicati come processi daemon .

Come suggerisce il nome, i server esistono per servire. I dati che servono possono includere pagine web, file, dati
informazioni di base, posta elettronica e molti altri tipi di contenuto. In qualità di amministratore del server, alcuni dei file
ulteriori sfide per le tue capacità di amministrazione del sistema includono quanto segue:

■ Accesso remoto: per utilizzare un sistema desktop, in genere ci si siede alla sua console. Sistemi server,
al contrario, tendono ad essere alloggiati in rack in ambienti climatizzati sotto serratura e
chiave. Il più delle volte, una volta installati i computer fisici, la maggior parte dell'amministrazione
di queste macchine viene eseguita utilizzando strumenti di accesso remoto. Spesso, nessuna interfaccia grafica lo è
disponibile, quindi è necessario fare affidamento sugli strumenti della riga di comando per eseguire operazioni come l'accesso remoto,
copia remota ed esecuzione remota. I più comuni di questi strumenti si basano su
Funzione Secure Shell (SSH).

315

Pagina 356
Parte IV: diventare un amministratore di server Linux

■ Protezione diligente: per essere utile, un server deve essere in grado di accettare richieste di
contenuto da utenti e sistemi remoti. A differenza dei sistemi desktop, che possono semplicemente
chiudere tutte le porte di rete che consentono le richieste di accesso in arrivo, un server
deve rendersi vulnerabile consentendo un certo accesso ai suoi porti. Ecco perché lo è
importante come amministratore del server per aprire le porte ai servizi che sono necessari e
bloccare le porte che non sono necessarie. È possibile proteggere i servizi utilizzando strumenti come
iptables e firewalld (strumenti firewall), wrapper TCP (per consentire e negare il servizio
access) e Security Enhanced Linux (per limitare le risorse a cui un servizio può accedere
dal sistema locale).
■ Monitoraggio continuo: anche se in genere spegni il laptop o il desktop
sistema quando non lo si utilizza, i server di solito rimangono attivi 24 ore su 24, 7 giorni su 7, 365 giorni all'anno.
Perché non vuoi sederti accanto a ciascun server e monitorarlo continuamente per-
dal punto di vista sonoro, è possibile configurare strumenti per monitorare ogni server, raccogliere messaggi di registro e
anche inoltrare messaggi sospetti a un account di posta elettronica di tua scelta. Puoi
consentire ai giornalisti dell'attività di sistema di raccogliere dati 24 ore su 24 sull'utilizzo della CPU,
utilizzo della memoria, attività di rete e accesso al disco.

In questo capitolo, esporrò alcuni degli strumenti e delle tecniche di base che è necessario conoscere
amministrare server Linux remoti. Impari a utilizzare gli strumenti SSH per accedere in modo sicuro al tuo server,
trasferire i dati avanti e indietro e persino avviare desktop remoti o applicazioni grafiche
e farli apparire sul tuo sistema locale. Impari a usare la registrazione e il sistema remoti
rapporti di attività per monitorare continuamente le attività del sistema.

A partire dall'amministrazione del server


Sia che tu stia installando un file server, un server web o una qualsiasi delle altre funzionalità del server disponibili
compatibile con i sistemi Linux, molti dei passaggi necessari per far funzionare il server
sono gli stessi. Dove la configurazione del server diverge è nelle aree di configurazione e messa a punto.

Nei capitoli successivi, descriverò server specifici e come differiscono. In ciascuno dei server correlati
capitoli che seguono questo capitolo, seguirai gli stessi passaggi di base per ottenere quel server
avviato e disponibile per essere utilizzato dai tuoi clienti.

Passaggio 1: installa il server


Sebbene la maggior parte del software server non sia preinstallata sul tipico sistema Linux, qualsiasi
scopo Il sistema Linux offre i pacchetti software necessari per fornire tutti i principali tipi di
server disponibile.

A volte, più pacchetti software associati a un particolare tipo di server lo sono


riuniti in gruppi di pacchetti (a volte chiamati raccolte di pacchetti). Altri tempi,
devi solo installare i pacchetti server che desideri individualmente. Ecco alcuni server
categorie di pacchetti in Fedora e alcuni dei pacchetti disponibili in ogni categoria:

316

Pagina 357

Capitolo 13: Comprensione dell'amministrazione del server

■ Server di registrazione del sistema : il servizio rsyslog consente la raccolta del sistema locale
messaggi di registro forniti da una varietà di componenti del sistema. Può anche agire
come server di registrazione remoto, raccogliendo i messaggi di registrazione inviati da altre registrazioni
server. (Il servizio rsyslog è descritto più avanti in questo capitolo.) Nella recente Ubuntu,
I sistemi Fedora e RHEL, i messaggi di log sono raccolti nel diario di systemd,
che può essere rilevato e reindirizzato dal servizio rsyslog o visualizzato localmente
dal comando journalctl.
■ Server di stampa: il servizio di stampa Common UNIX (pacchetto cups) è quello maggiormente utilizzato
spesso per fornire funzionalità del server di stampa su sistemi Linux. Pacchetti che forniscono
amministrazione grafica di CUPS (system-config-printer) e driver di stampa
(foomatic, hpijs e altri) sono disponibili anche quando installi CUPS. (Vedere
Capitolo 16, "Configurazione di un server di stampa.")
■ Server Web: il server Web Apache (pacchetto httpd) è il software più utilizzato
spesso per servire pagine web (contenuto HTTP). I pacchetti correlati includono i moduli per
aiutano a servire particolari tipi di contenuto (connessioni Perl, Python, PHP e SSL).
Allo stesso modo, ci sono pacchetti di documentazione correlata (httpd-manual), strumenti
per il monitoraggio dei dati web (webalizer) e strumenti per fornire servizi proxy web
(calamaro). (Vedere il Capitolo 17, "Configurazione di un server Web".)
■ Server FTP: il daemon FTP molto sicuro (pacchetto vsftpd) è l'FTP predefinito
server utilizzato in Fedora e RHEL. Altri pacchetti di server FTP includono proftpd e
pure-ftpd. (Vedere il Capitolo 18, "Configurazione di un server FTP".)
■ File server Windows: Samba (pacchetto samba) consente a un sistema Linux di agire come file 13
File di Windows e server di stampa. (Vedere il Capitolo 19, "Configurazione di una condivisione file di Windows
(Samba) Server. ")
■ NFS: Network File System (NFS) è la funzionalità standard di Linux e UNIX per
fornire directory condivise ad altri sistemi su una rete. Il file nfs-utils
pacchetto fornisce servizi NFS e comandi correlati. (Vedere il Capitolo 20, "Configurazione
un file server NFS. ")
■ Server di posta: questi tipi di pacchetti consentono di configurare server di posta elettronica,
a volte indicato come server Mail Transport Agent (MTA). Ne hai diversi
scelte di server di posta, incluso sendmail (predefinito in Fedora), postfix
(predefinito in RHEL) ed exim. Pacchetti correlati, come dovecot, consentono la posta
server per recapitare la posta elettronica ai client.
■ Directory Server: i pacchetti di questa categoria forniscono l'autenticazione locale e remota
Servizi. Questi includono Kerberos (krb5-server), LDAP (openldap-servers) e
NIS (ypserv).
■ Server DNS : il servizio Berkeley Internet Name Domain (bind) fornisce l'estensione
software necessario per configurare un server per risolvere i nomi host in indirizzi IP.
■ Network Time Protocol Server : il pacchetto ntpd fornisce un servizio che puoi
abilitare per sincronizzare l'orologio di sistema con orologi da server NTP pubblici o privati.

317

Pagina 358

Parte IV: diventare un amministratore di server Linux

■ SQL Server : PostgreSQL (pacchetti postgresql e postgresql-server)


service è un sistema di gestione di database relazionali a oggetti. Pacchetti correlati
fornire la documentazione PostgreSQL e gli strumenti correlati. Il MySQL (mysql e
mysql-server packages) è un altro popolare database SQL open source
server. Recentemente, ha sviluppato un nuovo ramo di MySQL sviluppato dalla comunità chiamato MariaDB
ha soppiantato MySQL su molte distribuzioni Linux.

Passaggio 2: configurare il server


La maggior parte dei pacchetti software del server viene installata con una configurazione predefinita che si appoggia di più
verso la sicurezza rispetto al pieno utilizzo immediato. Ecco alcune cose a cui pensare quando imposti
per configurare un server.

Utilizzo dei file di configurazione


La maggior parte dei server Linux sono configurati utilizzando file di testo normale nella directory / etc (o
sottodirectory). Spesso è presente un file di configurazione principale; a volte, c'è un correlato
directory di configurazione in cui i file che terminano con .conf possono essere inseriti nel file main
file di configurazione.

Il pacchetto httpd (server web Apache) è un esempio di un pacchetto server con estensione
file di configurazione principale e una directory in cui è possibile inserire altri file di configurazione
ed essere incluso nel servizio. Il file di configurazione principale in Fedora e RHEL è
/etc/httpd/conf/httpd.conf. La directory di configurazione è /etc/httpd/conf.d/.

Dopo aver installato httpd, vedrai i file nella directory /etc/httpd/conf.d/ che
sono stati posizionati lì da diversi pacchetti: mod_ssl, mod_perl e così via. Questo è un modo
che i pacchetti aggiuntivi di un servizio possono avere le loro informazioni di configurazione abilitate in
il server httpd, senza che il pacchetto cerchi di eseguire uno script per modificare il file main
file httpd.conf.

L'unico svantaggio dei file di configurazione in testo semplice è che non ottieni il tipo di file
controllo immediato degli errori che si ottiene quando si utilizzano strumenti di amministrazione grafica. Neanche tu
eseguire un comando di prova (se il servizio ne include uno) o provare effettivamente ad avviare il servizio
per vedere se c'è qualche problema con il tuo file di configurazione.

Invece di usare vi per modificare i file di configurazione, usa invece vim. L'uso del comando vim può aiutarti a catturare
errori del file di configurazione durante la modifica.
Il comando vim conosce i formati di molti file di configurazione (passwd, httpd.conf, fstab e
altri). Se si commette un errore e si digita un termine o un'opzione non validi in uno di quei file, o si interrompe il formato in qualche modo,
il colore del testo cambia. Ad esempio, in / etc / fstab, se si modifica l'impostazione predefinita dell'opzione predefinita, il file
il colore della parola cambia da verde a nero.

318

Pagina 359

Capitolo 13: Comprensione dell'amministrazione del server

Verifica della configurazione predefinita


La maggior parte dei pacchetti software server in Fedora e RHEL vengono installati con una configurazione minima
e propendi più per essere sicuro che totalmente utile fuori dagli schemi. Alcune distribuzioni Linux
mentre installate un pacchetto software, vi chiedono cose come la directory che desiderate
per installarlo o nell'account utente in cui desideri gestirlo.

Poiché i pacchetti RPM sono progettati per essere installati non assistiti, la persona che installa il
pacchetto non ha scelta su come è installato. I file vengono installati in posizioni stabilite, specifiche
gli account utente sono abilitati per gestirlo e quando avvii il servizio, potrebbe funzionare bene
offrono accessibilità limitata. Dovresti configurare il software dopo che il pacchetto è
installato per rendere il server completamente funzionale.

Due esempi di server installati con funzionalità limitate sono i server di posta
(pacchetti sendmail o postfix) e server DNS (pacchetto bind). Entrambi questi server
vengono installati con le configurazioni predefinite e si avviano al riavvio. Tuttavia, entrambi anche solo
ascolta le richieste sul tuo localhost. Quindi, finché non configuri quei server, le persone che
non sei connesso al tuo server locale non puoi inviare posta a quel server o usare il tuo computer
come server DNS pubblico, rispettivamente.

Passaggio 3: avvia il server


La maggior parte dei servizi che installi in Linux sono configurati per avviarsi all'avvio del sistema, quindi
eseguito continuamente, in ascolto delle richieste del suo servizio, fino a quando il sistema non viene arrestato. Là 13
sono due strutture principali per la gestione dei servizi: systemd (utilizzato ora da RHEL 7, Ubuntu e
Fedora) e gli script SystemVinit (utilizzati da Red Hat Enterprise Linux tramite RHEL 6. x ).

Indipendentemente da quale funzione viene utilizzata sul sistema Linux, è compito tuo fare queste cose
come impostare se si desidera che il servizio venga attivato all'avvio del sistema e che avvii, arresti,
e ricaricare il servizio secondo necessità (possibilmente per caricare nuovi file di configurazione o temporaneamente
interrompere l'accesso al servizio). I comandi per eseguire queste attività sono descritti nel Capitolo 15,
"Avvio e arresto dei servizi".

La maggior parte, ma non tutti, i servizi sono implementati come processi daemon. Ecco alcune cose che tu
dovrebbe conoscere questi processi:

■ Autorizzazioni utente e gruppo : i processi Daemon spesso vengono eseguiti come utenti e gruppi
diverso da root. Ad esempio, httpd viene eseguito come apache e ntpd viene eseguito come utente ntp.
La ragione di ciò è che se qualcuno rompesse questi demoni, non l'avrebbero fatto
autorizzazioni per accedere ai file oltre a ciò a cui il servizio può accedere.
■ File di configurazione del daemon: spesso un servizio dispone di un file di configurazione per
demone memorizzato nella directory / etc / sysconfig. Questo è diverso dal
file di configurazione del servizio in quanto il suo compito è spesso solo quello di passare argomenti al file
processo del server stesso, piuttosto che configurare il servizio. Ad esempio, le opzioni tu
impostati nel file / etc / sysconfig / rsyslogd vengono passati al demone rsyslogd
quando si avvia. Puoi dire al demone, ad esempio, di produrre in più

319

Pagina 360

Parte IV: diventare un amministratore di server Linux


informazioni di debug o accettare messaggi di registrazione remota. Vedere la pagina man per
il servizio (ad esempio, man rsyslogd) per vedere quali opzioni sono supportate.
■ Numeri di porta: i pacchetti di dati vanno e vengono dal sistema tramite interfacce di rete
attraverso le porte per ogni protocollo supportato (solitamente UDP o TCP). Più standard
i servizi hanno numeri di porta specifici a cui i daemon ascoltano e a cui si connettono i client.
A meno che tu non stia cercando di nascondere la posizione di un servizio, in genere non modifichi il file
porte su cui è in ascolto un processo daemon. Quando vai per assicurarti un servizio, devi
assicurarsi che la porta del servizio sia aperta sul firewall (consultare il Capitolo 25, "Protezione
Linux su una rete ", per informazioni su iptables e firewall firewalld).
Inoltre, se si modifica una porta su cui il servizio è in ascolto, e SELinux è in fase di applicazione
modalità, SELinux potrebbe impedire al demone di ascoltare quella porta (vedere Capitolo 24,
"Migliorare la sicurezza di Linux con SELinux," per ulteriori informazioni su SELinux).

Uno dei motivi per modificare i numeri di porta su un servizio è "sicurezza per oscurità". Ad esempio, il servizio sshd è un file
obiettivo ben noto per le persone che tentano di entrare in un sistema indovinando login e password sulla porta TCP 22.

Ho sentito di persone che cambiano il loro servizio sshd con connessione a Internet per ascoltare un altro numero di porta (forse
alcuni inutilizzati, numero di porta molto alto). Quindi dicono ai loro amici o colleghi di accedere alla loro macchina da ssh by
indicando quest'altra porta. L'idea è che i port scanner che cercano di entrare in un sistema potrebbero avere meno probabilità di eseguire la scansione
la porta normalmente inutilizzata.

Non tutti i servizi vengono eseguiti continuamente come processi daemon. Alcuni servizi vengono eseguiti su richiesta utilizzando
il super server xinetd. Altri servizi vengono eseguiti una sola volta all'avvio e all'uscita. Altri ancora corrono
solo un determinato numero di volte, essendo avviato quando il demone crond vede che il servizio
è stato configurato per essere eseguito in un determinato momento.

Tra i servizi appena menzionati, i servizi su richiesta sono il modo principale di esecuzione
servizi sempre disponibili (se non sempre in esecuzione). I servizi su richiesta non vengono eseguiti continuamente
ascoltando le richieste. Invece, i loro servizi sono registrati con il demone xinetd. quando
le richieste arrivano al demone xinetd per un servizio, in quel momento xinetd lancia il
ha richiesto il servizio e passa la richiesta a quel servizio.

Il vantaggio del demone xinetd è che puoi avere meno processi daemon
esecuzione e consumo di memoria e slot di processo. Il super server xinetd (originariamente
chiamato inetd quando è stato creato nei primi giorni di UNIX) è nato in un momento in cui
la memoria era molto costosa, quindi liberare spazio avviando solo servizi usati raramente
su richiesta aveva un senso. Perché la quantità di memoria consumata da un processo daemon
non è più un grosso problema, potresti notare che la maggior parte dei servizi xinetd sono più vecchi
servizi (come telnet e tftp).

Per ulteriori informazioni sull'avvio dei servizi come servizi regolari o su richiesta (xinetd)
servizi, fare riferimento al Capitolo 15, "Avvio e arresto dei servizi").

320

Pagina 361

Capitolo 13: Comprensione dell'amministrazione del server

Passaggio 4: proteggere il server


L'apertura del sistema per consentire agli utenti remoti di accedervi tramite la rete non è una decisione
dovresti prendere alla leggera. Ci sono cracker in tutto il mondo che eseguono programmi da scansionare
per i server vulnerabili possono subentrare ai loro dati o alla loro potenza di elaborazione. Fortunatamente,
ci sono misure che puoi mettere in atto sui sistemi Linux per proteggere i tuoi server e
servizi da attacchi e abusi.

Alcune tecniche di protezione comuni sono descritte nelle sezioni seguenti. Questi e altri
gli argomenti sono trattati in modo più approfondito nella Parte V, "Apprendimento delle tecniche di sicurezza in Linux".

Protezione della password


Buone password e criteri per le password sono la prima linea di difesa nella protezione di Linux
sistema. Se qualcuno può accedere al tuo server tramite ssh come utente root con una password di
foobar, aspettati di essere rotto. Una buona tecnica consiste nel non consentire l'accesso diretto da parte di root e
richiedere a ogni utente di accedere come utente normale e quindi utilizzare su o sudo per diventare root.

È inoltre possibile utilizzare la funzione Pluggable Authentication Module (PAM) per modificare il numero
di volte qualcuno può aver fallito i tentativi di accesso prima di bloccare l'accesso a quella persona. PAM
include anche altre funzionalità per bloccare l'autenticazione sul tuo server Linux. Per un
descrizione di PAM, vedere il Capitolo 23, "Informazioni sulla sicurezza avanzata di Linux".
Naturalmente, puoi bypassare del tutto le password richiedendo l'autenticazione con chiave pubblica. Per
usa quel tipo di autenticazione, qualsiasi utente che desideri abbia accesso al tuo server deve avere 13
la loro chiave pubblica copiata sul server (ad esempio tramite ssh-copy-id). Quindi possono usare
ssh, scp o comandi correlati per accedere a quel server senza digitare la password dell'utente.
Vedere la sezione "Utilizzo dell'autenticazione basata su chiave (senza password)" più avanti in questo capitolo per
ulteriori informazioni.

Firewall
Il servizio firewall iptables può tracciare e rispondere a ogni pacchetto proveniente da e
andando alle interfacce di rete sul tuo computer. Utilizzando iptables, puoi eliminare o rifiutare
ogni pacchetto che effettua richieste di servizi sul tuo sistema, tranne quei pochi che tu
hanno abilitato. Inoltre, puoi dire a iptables di consentire solo le richieste di servizio da alcuni
Indirizzi IP (bravi ragazzi) o non consentire richieste da altri indirizzi (cattivi ragazzi).

In RHEL 7 e Fedora, la relativamente nuova funzionalità firewalld aggiunge un livello di funzionalità


alle regole del firewall Linux. Firewalld non solo ti consente di inserire le regole del firewall iptables in
il kernel, può anche aiutare a organizzare le regole del firewall dividendole in zone e can
cambiare le regole del firewall al volo per reagire a diversi eventi.

In ciascuno dei capitoli del server in arrivo, descrivo quali porte devono essere aperte per consentire
accesso ai servizi. Le descrizioni di come funzionano iptables e firewalld sono incluse in
Capitolo 25, "Protezione di Linux su una rete".

321

Pagina 362

Parte IV: diventare un amministratore di server Linux

TCP Wrapper
Utilizzando i file /etc/hosts.allow e /etc/hosts.deny, è possibile consentire o negare l'accesso
a quei servizi che hanno le funzionalità TCP Wrappers abilitate (libwrap). L'accesso può
essere consentito o negato in base all'indirizzo IP o al nome host. Le descrizioni dei wrapper TCP sono
contenuto nel capitolo 25.

SELinux
Fedora, Red Hat Enterprise Linux e altre distribuzioni Linux vengono fornite con la sicurezza
Funzionalità Enhanced Linux (SELinux) inclusa e in modalità Enforcing. Sebbene l'impostazione predefinita
la modalità mirata non ha molto impatto sulla maggior parte delle applicazioni eseguite in Linux, ha un file
grande impatto sulla maggior parte dei servizi principali.

Una delle principali funzioni di SELinux è proteggere i contenuti del proprio sistema Linux da
processi in esecuzione sul sistema. In altre parole, SELinux si assicura che un server web,
Il server FTP, il server Samba o il server DNS possono accedere solo a un set limitato di file su
system (come definito dai contesti di file) e consentire solo un insieme limitato di funzionalità (come definito da
Booleani e accesso limitato alle porte).

I dettagli su come usare SELinux sono contenuti nel Capitolo 24, “Migliorare la sicurezza di Linux
con SELinux. "

Impostazioni di sicurezza nei file di configurazione


All'interno dei file di configurazione della maggior parte dei servizi sono presenti valori che è possibile impostare per proteggere ulteriormente il file
servizio. Ad esempio, per file server e server Web, è possibile limitare l'accesso a determinati file
o dati basati su nome utente, nome host, indirizzo IP del client o altri attributi.

Passaggio 5: monitorare il server


Perché non puoi essere lì per monitorare ogni servizio ogni minuto, devi mettere
strumenti di monitoraggio in atto per controllare i tuoi server per te e renderti facile scoprirlo
quando qualcosa ha bisogno di attenzione. Alcuni degli strumenti che puoi utilizzare per monitorare i tuoi server sono
descritto nelle sezioni che seguono.

Configura la registrazione
Utilizzando il servizio rsyslog (daemon rsyslogd), è possibile raccogliere informazioni critiche
e le condizioni di errore nei file di registro di molti servizi diversi. Per impostazione predefinita in RHEL, log
i messaggi dalle applicazioni vengono indirizzati ai file di registro nella directory / var / log. Per
maggiore sicurezza e praticità, i messaggi di registro possono anche essere indirizzati a un server centralizzato,
fornire un'unica posizione per visualizzare e gestire la registrazione per un gruppo di sistemi.

Sono disponibili diversi pacchetti software per lavorare con rsyslog e gestire
messaggi di registro. La funzione logwatch esegue la scansione dei file di registro ogni notte e invia critici
informazioni raccolte da quei file a un account di posta elettronica di tua scelta. Il logrotate
322

Pagina 363

Capitolo 13: Comprensione dell'amministrazione del server

funzione esegue il backup dei file di registro in archivi compressi quando i registri raggiungono una certa dimensione o
passare un determinato periodo di tempo dal backup precedente.

Le funzionalità per la configurazione e la gestione della registrazione del sistema sono descritte in
Sezione "Configurazione della registrazione del sistema" più avanti in questo capitolo.

Esegui rapporti sull'attività del sistema


La funzione sar (abilitata dal pacchetto sysstat) può essere configurata per guardare
attività sul sistema, come utilizzo della memoria, utilizzo della CPU, latenza del disco, attività di rete,
e altri drenaggi di risorse. Per impostazione predefinita, la struttura sar avvia il programma sadc ogni pochi
minuti, giorno e notte, per raccogliere dati. La visualizzazione di tali dati in un secondo momento può aiutarti a tornare indietro e
capire dove e quando la domanda sta aumentando nel tuo sistema. La struttura sar è descritta in
la sezione "Controllo delle risorse di sistema con sar" più avanti in questo capitolo.

Mantieni aggiornato il software di sistema


Man mano che le falle di sicurezza vengono scoperte e corrette, è necessario assicurarsi che il software aggiornato
i pacchetti contenenti queste patch vengono installati sui server. Di nuovo, con mission-critical
server, il modo più sicuro ed efficiente è usare Red Hat Enterprise Linux sottoscritto
sistemi per i server, quindi distribuire gli aggiornamenti dei pacchetti relativi alla sicurezza nel sistema
non appena vengono rilasciati e testati.

Per mantenere aggiornati i vostri server personali e sistemi desktop, sono disponibili vari strumenti grafici
per aggiungere software e per controllare gli aggiornamenti. Puoi anche usare il comando yum per controllare e 13
installa tutti i pacchetti disponibili per i tuoi sistemi RHEL o Fedora (digita yum update ).

Controlla il filesystem per segni di cracker


Per controllare il tuo filesystem per possibili intrusioni, puoi eseguire comandi come rpm -V
per verificare se eventuali comandi, file di documenti o file di configurazione sono stati manomessi
sul tuo sistema. Per maggiori informazioni su rpm -V, fare riferimento alla descrizione di rpm -V in
Capitolo 10, "Recupero e gestione del software".

Ora che hai una panoramica di come viene eseguita la configurazione del server Linux, il prossimo
le sezioni di questo capitolo si concentrano sugli strumenti necessari per accedere, proteggere e mantenere il proprio
Sistemi server Linux.

Gestione dell'accesso remoto con il servizio Secure Shell


Gli strumenti Secure Shell sono un insieme di applicazioni client e server che consentono di eseguire operazioni di base
comunicazioni tra i computer client e il server Linux. Gli strumenti includono ssh,
scp, sftp e molti altri. Poiché la comunicazione è crittografata tra il server e
i client, questi strumenti sono più sicuri di strumenti simili e precedenti. Ad esempio, invece di
usando vecchi comandi di login remoto come telnet o rlogin, potresti usare ssh. Il

323

Pagina 364

Parte IV: diventare un amministratore di server Linux

Il comando ssh può anche sostituire i vecchi comandi di esecuzione remota, come rsh. A distanza
i comandi di copia, come rcp, possono essere sostituiti con comandi sicuri come scp e
rsync.

Con gli strumenti Secure Shell, sia il processo di autenticazione che tutte le comunicazioni che
follow sono crittografati. Le comunicazioni da telnet e i vecchi comandi "r" sono esposti
password e tutti i dati a qualcuno che annusa la rete. Oggi, telnet e simili
i comandi dovrebbero essere usati solo per testare l'accesso alle porte remote, fornendo servizi pubblici
come l'avvio PXE o altre attività che non espongono i tuoi dati privati.

Per una discussione più approfondita sulle tecniche di crittografia, fare riferimento al Capitolo 23, "Comprensione della sicurezza avanzata di Linux".

La maggior parte dei sistemi Linux include client shell sicure e molti includono il server shell sicuro
anche. Se stai usando la distribuzione Fedora o RHEL, ad esempio, il client e il server
i pacchetti software che contengono gli strumenti ssh sono openssh, openssh-clients e
pacchetti openssh-server, come segue:

# yum list installato | grep ssh


...
openssh.x86_64 6.4p1-5.fc20 @updates
openssh-clients.x86_64 6.4p1-5.fc20 @updates
openssh-server.x86_64 6.4p1-5.fc20 @updates

Su Ubuntu, è installato solo il pacchetto openssh-clients. Include la funzionalità


del pacchetto openssh. Se hai bisogno del server installato, usa sudo apt-get install
comando openssh-server.

$ sudo dpkg --list | grep openssh


ii openssh-client 1: 6.6p1-2ubuntu2 amd64
client secure shell (SSH), per un accesso sicuro a macchine remote
ii openssh-server 1: 6.6p1-2ubuntu2 amd64
server secure shell (SSH), per un accesso sicuro da macchine remote
ii openssh-sftp-server 1: 6.6p1-2ubuntu2 amd64
modulo server sftp secure shell (SSH), per accesso SFTP
$ sudo apt-get install openssh-server

Avvio del servizio openssh-server


I sistemi Linux forniti con il pacchetto openssh-server già installato a volte
non sono configurati per l'avvio automatico. Gestione dei servizi Linux (vedere il Capitolo
15, "Avvio e arresto dei servizi") possono essere molto diversi a seconda dei diversi
distribuzioni. La Tabella 13.1 mostra i comandi da utilizzare per garantire il server ssh
daemon, sshd, è attivo e in esecuzione su un sistema Linux.

324

Pagina 365

Capitolo 13: Comprensione dell'amministrazione del server

TABELLA 13.1 Comandi per determinare lo stato di sshd

Distribuzione Comando per determinare lo stato di sshd

RHEL 6 chkconfig --list sshd

Fedora e RHEL 7 stato systemctl sshd.service

Ubuntu status ssh

Se sshd non è attualmente in esecuzione, puoi avviarlo immettendo uno dei comandi elencati in
Tabella 13.2. Questi comandi richiedono i privilegi di root per funzionare.

TABELLA 13.2 Comandi per avviare sshd

Distribuzione Comando per avviare sshd

RHEL 6 avvio del servizio sshd

Fedora e RHEL 7 systemctl avvia sshd.service

Ubuntu servizio ssh start

I comandi nella Tabella 13.2 avviano solo il servizio ssh o sshd. Non lo configurano per
si avvia automaticamente all'avvio. Per assicurarti che il servizio server sia impostato per l'avvio automatico,
13
è necessario utilizzare uno dei comandi nella Tabella 13.3 utilizzando i privilegi di root.
TABELLA 13.3 Comandi per avviare sshd all'avvio

Distribuzione Comando per avviare sshd all'avvio

RHEL 6 chkconfig sshd su

Fedora e RHEL 7 systemctl abilita sshd.service

Ubuntu update-rc.d ssh predefiniti

Quando installi openssh-server su Ubuntu, il demone sshd è configurato per l'avvio


automaticamente all'avvio. Pertanto, potrebbe non essere necessario eseguire il comando nella Tabella 13.3 per
il tuo server Ubuntu.

Per gestire i servizi su una vecchia distribuzione Fedora, usa il comando chkconfig sia per avviare ssh
servizio e per assicurarsi che venga avviato all'avvio.

325

Pagina 366

Parte IV: diventare un amministratore di server Linux

Modifica le impostazioni del firewall di netfilter / iptables per consentire al client openssh di
porta di accesso 22 (i firewall sono trattati nel Capitolo 25, "Protezione di Linux su una rete"). Dopo
il servizio è attivo e funzionante e il firewall è configurato correttamente, dovresti essere in grado di farlo
usa i comandi del client ssh per accedere al tuo sistema tramite il server ssh.

Qualsiasi ulteriore configurazione per ciò che il demone sshd può fare è gestita nel file
/ etc / ssh / sshd_config file. Come minimo, modificare l'impostazione PermitRootLogin da
si a no. Ciò impedisce a chiunque di accedere in remoto come root.

# grep PermitRootLogin / etc / ssh / sshd_config


PermitRootLogin no

Dopo aver modificato il file sshd_config, riavviare il servizio sshd. Dopo quel punto,
se usi ssh per accedere a quel sistema da un client remoto, devi farlo normalmente
user, quindi usa su o sudo per diventare l'utente root.

Utilizzo degli strumenti client SSH


Sono stati creati molti strumenti per accedere a sistemi Linux remoti per utilizzare SSH
servizio. Il più utilizzato di questi strumenti è il comando ssh, che può essere utilizzato
per accesso remoto, esecuzione remota e altre attività. Comandi come scp e rsync possono
copiare uno o più file alla volta tra client SSH e sistemi server. Il comando sftp
fornisce un'interfaccia simile a FTP per attraversare un filesystem remoto e ottenere e mettere
file tra i sistemi in modo interattivo.

Per impostazione predefinita, tutti gli strumenti relativi a SSH eseguono l'autenticazione utilizzando nomi utente e password Linux standard
parole, tutto fatto su connessioni crittografate. Tuttavia, SSH supporta anche l'autenticazione basata su chiavi
cation, che può essere utilizzato per configurare l'autenticazione senza password tra i client e SSH
server (come descritto nella sezione "Utilizzo dell'autenticazione basata su chiave (senza password)" più avanti in
questo capitolo).

Utilizzo di ssh per l'accesso remoto


Usa il comando ssh da un altro computer Linux per verificare che puoi accedere a
Sistema Linux che esegue il servizio sshd. Il comando ssh è quello che userai spesso
accedi a una shell sui server che stai configurando.

Prova ad accedere al tuo server Linux da un altro sistema Linux utilizzando il comando ssh. (Se
non hai un altro sistema Linux, puoi simularlo digitando localhost invece
dell'indirizzo IP e l'accesso come utente locale.) Quello che segue è un esempio di in remoto
accesso all'account di johndoe il 10.140.67.23:

$ ssh johndoe@10.140.67.23
L'autenticità dell'host "10 .140.67.23 (10.140.67.23) "
non può essere stabilito.

326
Pagina 367

Capitolo 13: Comprensione dell'amministrazione del server

L'impronta digitale della chiave RSA è


a4: 28: 03: 85: 89: 6d: 08: fa: 99: 15: ed: fb: b0: 67: 55: 89.
Sei sicuro di voler continuare a connetterti (sì / no)? sì
Avvertenza: aggiunto in modo permanente '10 .140.67.23 '(RSA) al file
elenco di host conosciuti.
password di johndoe@10.140.67.23 : *********

Se è la prima volta che accedi a quel sistema remoto usando ssh


comando, il sistema ti chiede di confermare che desideri connetterti. Digita sì e premi
Accedere. Quando richiesto, digita la password dell'utente.

Quando si digita sì per continuare, si accetta la chiave pubblica dell'host remoto. A quel punto, il file
la chiave pubblica dell'host remoto viene scaricata sul client in ~ / .ssh / known_hosts del client
file. Ora, i dati scambiati tra questi due sistemi possono essere crittografati e decrittografati
utilizzando la crittografia asimmetrica RSA (vedere il Capitolo 23, "Informazioni su Advanced Linux
Sicurezza").

Dopo aver effettuato l'accesso al sistema remoto, è possibile iniziare a digitare i comandi della shell. Il
la connessione funziona come un normale login. L'unica differenza è che i dati sono crittografati
mentre viaggia sulla rete.

Quando hai finito, digita exit per terminare la connessione remota. La connessione è chiusa,
e si ritorna al prompt dei comandi sul sistema locale. (Se il file shell
non ritorna dopo essere usciti dalla shell remota, digitando ~ . di solito chiude la connessione.)
13
$ exit
disconnettersi
Connessione a 10.140.67.23 chiusa.

Dopo essersi connessi in remoto a un sistema, un file nella sottodirectory del sistema locale,
~ .ssh / known_hosts, esisterà. Questo file contiene la chiave pubblica dell'host remoto
insieme al suo indirizzo IP. Le chiavi pubbliche e private del tuo server sono archiviate in / etc / ssh
directory.

$ ls .ssh
known_hosts
$ cat .ssh / known_hosts
10.140.67.23 ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAoyfJK1YwZhNmpHE4yLPZAZ9ZNEdRE7I159f3I
yGiH21IjfqsNYFR10ZlBLlYyTQi06r / 9O19GwCaJ753InQ8FWHW + OOYOG5pQmghhn
/ x0LD2uUb6egOu6zim1NECJwZf5DWkKdy4euCUEMSqADh / WYeuOSoZ0pp2IAVCdh6
con PIHMF1HVR069cvdv + OTL4vD0X8llSpw0ozqRptz2UQgQBBbBjK1RakD7fY1TrWv
NQhYG / ugt gPaY4JDYeY6OBzcadpxZmf7EYUw0ucXGVQ1aNP / erIDOQ9rA0YNzCRv
y2LYCm2 / 9adpAxc + UYi5UsxTw4ewSBjmsXYq // Ahaw4mjw ==

327

Pagina 368

Parte IV: diventare un amministratore di server Linux

Eventuali tentativi successivi da parte di questo utente di contattare il server in 10.140.67.23 vengono autenticati utilizzando questa chiave memorizzata. Se la
il server dovrebbe cambiare la sua chiave (cosa che accade se il sistema operativo viene reinstallato), tenta di ssh su quel sistema
risultato in una connessione rifiutata e terribili avvertimenti che potresti essere sotto attacco. Se la chiave è davvero cambiata, essere
in grado di eseguire nuovamente ssh a quell'indirizzo, rimuovi semplicemente la chiave dell'host (l'intera riga) dal tuo file know_hosts e tu
può copiare sulla nuova chiave.
Utilizzo di ssh per l'esecuzione remota
Oltre ad accedere a una shell remota, il comando ssh può essere utilizzato per eseguire un comando su
il sistema remoto e restituire l'output al sistema locale. Ecco un esempio:

$ ssh johndoe@10.140.67.23 nome host


password di johndoe@10.140.67.23 : **********
host01.example.com

Nell'esempio appena mostrato, il comando hostname viene eseguito come l'utente johndoe su Linux
sistema situato all'indirizzo IP 10.140.67.23. L'output del comando è il nome del file
host remoto (in questo caso, host01.example.com), che appare sullo schermo locale.

Se esegui un comando di esecuzione remota con ssh che include opzioni o argomenti, be
assicurati di racchiudere l'intera riga di comando remota tra virgolette. Tieni presente che se fai riferimento
a file o directory nei comandi remoti, i percorsi relativi vengono interpretati in relazione a
la directory home dell'utente. Per esempio:

$ ssh johndoe@10.140.67.23 " cat myfile"


password di johndoe@10.140.67.23 : **********
Contenuto del file myfile situato nella directory home di johndoe.

Il comando ssh appena mostrato va all'host remoto situato in 10.140.67.23 ed esegue il file
cat myfile comando come l'utente johndoe. Ciò causa il contenuto del file myfile
da quel sistema per essere visualizzato sullo schermo locale.

Un altro tipo di esecuzione remota che puoi fare con ssh è l'inoltro X11. Se l'inoltro X11 è
abilitato sul server (X11Forwarding yes è impostato nel file / etc / sshd / sshd_config), tu
può eseguire applicazioni grafiche dal server in modo sicuro tramite la connessione SSH utilizzando ssh -X.
Per un nuovo amministratore del server, ciò significa che se sono presenti strumenti di amministrazione grafici
installato su un server, è possibile eseguire questi strumenti senza doversi sedere alla console. Per esempio:

$ ssh -X johndoe@10.140.67.23 data-configurazione-sistema


password di johndoe@10.140.67.23 : **********

Dopo aver eseguito questo comando, viene richiesta la password di root. Successivamente, la data /
Viene visualizzata la finestra Time Properties, pronta per modificare la data e l'ora correnti. Appena
chiudi la finestra quando hai finito e il prompt locale ritorna. Puoi farlo per
qualsiasi strumento di amministrazione grafico o solo normali applicazioni X (come gedit graphi-
cal editor, quindi non devi usare vi).

328

Pagina 369

Capitolo 13: Comprensione dell'amministrazione del server

Se vuoi eseguire diversi comandi X e non vuoi riconnetterti ogni volta, puoi farlo
usa anche l'inoltro X11 direttamente da una shell remota. Mettili in secondo piano e tu
può avere diverse applicazioni X remote in esecuzione sul desktop locale contemporaneamente. Per esempio:

$ ssh -X johndoe@10.140.67.23
password di johndoe@10.140.67.23 : **********
$ system-config-network &
$ gedit &
$ exit

Dopo aver terminato di utilizzare le applicazioni grafiche, chiuderle normalmente.


Quindi digita exit , come mostrato nel codice precedente, per lasciare la shell remota e tornare a
la tua shell locale.

Copia di file tra sistemi con scp e rsync


Il comando scp è simile al vecchio comando UNIX rcp per copiare i file da e verso
I sistemi Linux, ad eccezione di tutte le comunicazioni, sono crittografati. I file possono essere copiati da
sistema remoto al sistema locale o locale al remoto. Puoi anche copiare i file in modo ricorsivo
attraverso un'intera struttura di directory, se lo desideri.

Quello che segue è un esempio dell'utilizzo del comando scp per copiare un file chiamato memo da
la directory home dell'utente chris nella directory / tmp su un computer remoto come
utente johndoe:
13
$ scp / home / chris / memo johndoe@10.140.67.23: / tmp
password di johndoe@10.140.67.23 : ***************
memo 100% | **************** | 153 0:00

Devi inserire la password per johndoe. Dopo che la password è stata accettata, il file viene copiato
al sistema remoto con successo.

Puoi fare copie ricorsive con scp usando l'opzione -r. Invece di un file, passa una directory
nome al comando scp e tutti i file e le directory sotto quel punto nel filesystem
vengono copiati sull'altro sistema.
$ scp johndoe@10.140.67.23: / usr / share / man / man1 / / tmp /
password di johndoe@10.140.67.23 : ***************
volname.1.gz 100% 543 0,5 KB / s 00:00
mtools.1.gz 100% 6788 6,6 KB / s 00:00
roqet.1.gz 100% 2496 2,4 KB / s 00:00
...

Finché l'utente johndoe ha accesso ai file e alle directory sul sistema remoto
e l'utente locale può scrivere nella directory di destinazione (entrambi sono veri in questo caso), la directory
la struttura da / usr / share / man / man1 in basso viene copiata nella directory / tmp locale.

Il comando scp può essere utilizzato per eseguire il backup di file e directory su una rete. Tuttavia, se
si confronta scp con il comando rsync, si vede che rsync (che funziona anche su SSH

329

Pagina 370

Parte IV: diventare un amministratore di server Linux

connessioni) è uno strumento di backup migliore. Prova a eseguire il comando scp mostrato in precedenza a
copia la directory man1 (puoi simulare il comando usando localhost invece di
Indirizzo IP, se disponi di un solo sistema Linux accessibile). Ora digita quanto segue nel file
sistema in cui hai copiato i file:

$ ls -l / usr / share / man / man1 / batch * / tmp / man1 / batch *


-rw-r - r -. 1 johndoe johndoe 2628 15 aprile 15:32 /tmp/man1/batch.1.gz
lrwxrwxrwx.1 root root 7 febbraio 14 17:49 /usr/share/man/man1/batch.1.gz
-> at.1.gz

Quindi, esegui nuovamente il comando scp ed elenca nuovamente i file:

$ scp johndoe@10.140.67.23: / usr / share / man / man1 / / tmp /


password di johndoe@10.140.67.23 : ***************
$ ls -l / usr / share / man / man1 / batch * / tmp / man1 / batch *
-rw-r - r -. 1 johndoe johndoe 2628 15 aprile 15:40 /tmp/man1/batch.1.gz
lrwxrwxrwx.1 root root 7 febbraio 14 17:49 /usr/share/man/man1/batch.1.gz
-> at.1.gz

L'output di questi comandi ti dice alcune cose su come funziona scp:

■ Attributi persi: le autorizzazioni o gli attributi di data / ora non sono stati mantenuti
quando i file sono stati copiati. Se stessi usando scp come strumento di backup, probabilmente
abilmente desidera mantenere autorizzazioni e timestamp sui file se è necessario ripristinarli
i file in seguito.
■ Collegamenti simbolici persi : il file batch.1.gz è in realtà un collegamento simbolico al file
at.1.gz file. Invece di copiare il collegamento, scp segue il collegamento e in realtà
copia il file. Di nuovo, se dovessi ripristinare questa directory, batch.1.gz sarebbe
sostituito dal file at.1.gz effettivo invece di un collegamento ad esso.
■ Copia ripetuta inutilmente: se guardavi il secondo output di scp, lo faresti
notare che tutti i file sono stati copiati di nuovo, anche se i file esatti sono stati copiati
erano già sul bersaglio. La data di modifica aggiornata lo conferma. Per contro
Tuttavia, rsync può determinare che un file è già stato copiato e non copiato
di nuovo il file.

Il comando rsync è uno strumento di backup di rete migliore perché può superare alcuni dei
carenze di SCP appena elencate. Prova a eseguire un comando rsync per eseguire la stessa azione
scp lo ha appena fatto, ma con alcune opzioni aggiuntive:

$ rm -rf / tmp / man1 /


$ rsync -avl johndoe@10.140.67.23: / usr / share / man / man1 / / tmp /
password di johndoe@10.140.67.23 : ***************
invio di un elenco di file incrementali
uomo1 /
man1 / HEAD.1.gz
man1 / Mail.1.gz -> mailx.1.gz
...
$ rsync -avl johndoe@10.140.67.23: / usr / share / man / man1 / / tmp /

330
Pagina 371

Capitolo 13: Comprensione dell'amministrazione del server

password di johndoe@10.140.67.23 : ***************


invio di un elenco di file incrementali
inviati 42362 byte ricevuti 13 byte 9416,67 byte / sec
la dimensione totale è 7322223, la velocità è 172,80
$ ls -l / usr / share / man / man1 / batch * / tmp / man1 / batch *
lrwxrwxrwx.1 johndoe johndoe 7 febbraio 14 17:49 /tmp/man1/batch.1.gz
-> at.1.gz
lrwxrwxrwx.1 root root 7 febbraio 14 17:49 /usr/share/man/man1/batch.1.gz
-> at.1.gz

Dopo aver rimosso la directory / tmp / man1, esegui un comando rsync per copiare tutti i file
file nella directory / tmp / man1, usando -a (archivio ricorsivo), -v (dettagliato) e -l (copia
collegamenti simbolici). Quindi eseguire nuovamente il comando immediatamente e notare che non lo è
copiato. Il comando rsync sa che tutti i file sono già presenti, quindi non copia
di nuovo. Questo può essere un enorme risparmio di larghezza di banda di rete per le directory con
gigabyte di file in cui cambiano solo pochi megabyte.

Notare anche dall'output di ls -l che i collegamenti simbolici sono stati conservati in


batch.1.gz e così anche l'indicatore di data / ora sul file. Se hai bisogno di ripristinarli
file in un secondo momento, puoi rimetterli esattamente come erano.

Questo uso di rsync è utile per i backup. Ma se volessi eseguire il mirroring di due directory,
rendere il contenuto di due strutture di directory esattamente lo stesso su due macchine? Il
i seguenti comandi illustrano come creare un mirror esatto della struttura della directory su
entrambe le macchine, utilizzando le directory mostrate con i precedenti comandi rsync. 13
Innanzitutto, sul sistema remoto, copia un nuovo file nella directory da copiare:

# cp / etc / services / usr / share / man / man1

Successivamente, sul sistema locale, esegui rsync per copiare qualsiasi nuovo file (in questo caso, solo il file
directory e il nuovo file, services):

$ rsync -avl johndoe@10.140.67.23: / usr / share / man / man1 / tmp


password di johndoe@10.140.67.23 :
***************
invio di un elenco di file incrementali
uomo1 /
man1 / services

Dopodiché, torna al sistema remoto e rimuovi il nuovo file:

$ sudo rm / usr / share / man / man1 / services

Ora, sul sistema locale, esegui nuovamente rsync e nota che non succede nulla. A questo punto,
le directory remote e locali sono diverse perché il sistema locale ha il file services
e il telecomando no. Questo è il comportamento corretto per una directory di backup (che vuoi avere
file sul backup nel caso in cui qualcosa sia stato rimosso per errore). Tuttavia, se vuoi il file
directory remote e locali di cui eseguire il mirroring, dovresti aggiungere l'opzione --delete.

331

Pagina 372

Parte IV: diventare un amministratore di server Linux

Il risultato è che il file dei servizi viene eliminato sul sistema locale, rendendo il file remoto e
strutture di directory locali sincronizzate.

$ rsync -avl / usr / share / man / man1 localhost: / tmp


password di johndoe@10.140.67.23 : ***************
invio di un elenco di file incrementali
uomo1 /
$ rsync -avl --delete johndoe@10.140.67.23: / usr / share / man / man1 / tmp
password di johndoe@10.140.67.23 : ***************
invio di un elenco di file incrementali
l'eliminazione di man1 / services

Copia interattiva con sftp


Se non sai esattamente cosa vuoi copiare su o da un sistema remoto, puoi usare il file
comando sftp per creare una sessione interattiva in stile FTP sul servizio SSH. Utilizzando sftp,
puoi connetterti a un sistema remoto tramite SSH, cambiare directory, elencare i contenuti delle directory e
quindi (dato il permesso appropriato) ottenere i file da e mettere i file sul server. Tieni presente che,
nonostante il nome, sftp non ha nulla a che fare con il protocollo FTP e non utilizza server FTP.
Utilizza semplicemente uno stile di interazione FTP tra un client e un server sshd.

L'esempio seguente mostra l'utente johndoe che si connette a jd.example.com:

$ sftp johndoe@jd.example.com
Connessione a jd.example.com
password di johndoe@jd.example.com : ***************
sftp>

A questo punto, puoi iniziare una sessione FTP interattiva. Puoi usare get e put
comandi sui file come faresti con qualsiasi client FTP, ma con la comodità di saperlo
stai lavorando su una connessione crittografata e sicura. Perché il protocollo FTP passa
nomi utente, password e dati in chiaro, usando sftp su SSH, se possibile, è molto
alternativa migliore per consentire agli utenti di copiare in modo interattivo i file dal sistema.

Utilizzo dell'autenticazione basata su chiave (senza password)


Se utilizzi strumenti SSH per connetterti agli stessi sistemi durante il giorno, potresti farlo
trovo scomodo digitare la tua password più e più volte. Invece di usare
autenticazione basata su password, SSH consente di impostare l'autenticazione basata su chiave da utilizzare
anziché. Ecco come funziona:

■ Si creano una chiave pubblica e una chiave privata.

■ Proteggi la chiave privata, ma copi la chiave pubblica nell'account utente su


l'host remoto su cui si desidera eseguire l'autenticazione basata su chiave.
■ Dopo aver copiato le chiavi nelle posizioni corrette, utilizzare qualsiasi strumento SSH per connettersi
all'account utente sull'host remoto, ma invece di chiederti una password,
il servizio SSH remoto confronta la chiave pubblica e la chiave privata e te lo consente
accedere se le due chiavi corrispondono.

332

Pagina 373

Capitolo 13: Comprensione dell'amministrazione del server

Quando crei le chiavi, hai la possibilità di aggiungere una passphrase al tuo privato
chiave. Se decidi di aggiungere una passphrase, anche se non è necessario inserire una password per
autenticati sul sistema remoto, devi comunque inserire la tua passphrase per sbloccare il tuo
chiave privata. Se non aggiungi una passphrase, puoi comunicare utilizzando il tuo privato / pubblico
coppie di chiavi in ​modo completamente privo di password. Tuttavia, se qualcuno dovesse entrare in contatto con
la tua chiave privata, potrebbero agire come te in qualsiasi comunicazione che richieda quella chiave.

La procedura seguente mostra come un utente locale denominato chris può configurare basato su chiave
autenticazione a un utente remoto denominato johndoe all'indirizzo IP 10.140.67.23. Se non lo fai
se hai due sistemi Linux, puoi simularlo utilizzando due account utente sul tuo locale
sistema. Inizio accedendo come utente locale chiamato chris e digitando quanto segue a
genera la mia coppia di chiavi pubblica / privata locale:

$ ssh-keygen
Generazione della coppia di chiavi RSA pubblica / privata.
Immettere il file in cui salvare la chiave (/home/chris/.ssh/id_rsa): INVIO
Immettere la passphrase (vuota per nessuna passphrase): INVIO
Immettere di nuovo la stessa passphrase: INVIO
La tua identificazione è stata salvata in /home/chris/.ssh/id_rsa.
La tua chiave pubblica è stata salvata in /home/chris/.ssh/id_rsa.pub.
L'impronta digitale chiave è:
bf: 06: f8: 12: 7f: f4: c3: 0a: 3a: 01: 7f: df: 25: 71: ec: 1d chris@abc.example.com
L'immagine randomart della chiave è:
...
13
Ho accettato la chiave RSA predefinita (sono consentite anche le chiavi DSA) e ho premuto due volte Invio per
avere una passphrase vuota associata alla chiave. Di conseguenza, la mia chiave privata (id_rsa) e
la chiave pubblica (id_rsa.pub) viene copiata nella directory .ssh nella mia directory home locale. Il
il passaggio successivo è copiare quella chiave su un utente remoto, in modo da poter utilizzare l'autenticazione basata su chiave
ogni volta che mi collego a quell'account utente con gli strumenti ssh:

$ ssh-copy-id -i ~ / .ssh / id_rsa.pub johndoe@10.140.67.23


password di johndoe@10.140.67.23 :
***************
Ora prova ad accedere alla macchina, con "ssh ' johndoe@10.140.67.23 '",
e il check-in:
.ssh / authorized_keys
per assicurarci di non aver aggiunto chiavi extra che non ti aspettavi.
Quando richiesto, ho inserito la password di johndoe. Con quello accettato, la chiave pubblica
appartenente a chris viene copiato nel file authorized_keys nella directory .ssh di johndoe
sul sistema remoto. Ora, la prossima volta che Chris tenta di connettersi all'account di johndoe,
la connessione SSH viene autenticata utilizzando queste chiavi. Perché nessuna passphrase viene inserita nel file
chiave privata, non è richiesta alcuna passphrase per sbloccare quella chiave quando viene utilizzata.

[chris] $ ssh johndoe@10.140.67.23


Ultimo accesso: dom 17 apr 10:12:22 2016 da 10.140.67.22
[johndoe] $

333

Pagina 374

Parte IV: diventare un amministratore di server Linux

Con le chiavi in ​posizione, chris ora può usare ssh, scp, rsync o qualsiasi altro abilitato per SSH
comando per eseguire l'autenticazione basata su chiave. Usando questi tasti, ad esempio, un comando rsync
potrebbe entrare in uno script cron ed eseguire automaticamente il backup della directory home di johndoe ogni notte.

Vuoi proteggere ulteriormente il tuo sistema remoto? Dopo aver sistemato le chiavi sul tuo file
sistema remoto per chiunque desideri consentire l'accesso a quel sistema, puoi impostare il
servizio sshd sul sistema remoto per non consentire l'autenticazione della password modificando il
L'impostazione PasswordAuthentication nel file / etc / ssh / sshd_config su no così appare
come segue:

Password Autenticazione n

Quindi riavvia il servizio sshd (systemctl riavvia sshd). Dopo di che, chiunque abbia un
la chiave valida è ancora accettata. Chiunque tenti di accedere senza una chiave ottiene quanto segue
messaggio di errore e non ha nemmeno la possibilità di inserire un nome utente e una password:

Autorizzazione negata (publickey, gssapi-keyex, gssapi-with-mic).

Configurazione della registrazione del sistema


Con la conoscenza di come accedere al tuo server remoto utilizzando gli strumenti SSH, puoi effettuare il login
al server e configurare alcuni dei servizi necessari per assicurarsi che funzioni senza problemi.
La registrazione del sistema è uno dei servizi di base configurati per Linux per tenere traccia di ciò che è
accadendo sul sistema.

Il servizio rsyslog (daemon rsyslogd) fornisce le funzioni per raccogliere i messaggi di registro
dal software in esecuzione sul sistema Linux e indirizza quei messaggi ai file di registro locali,
dispositivi o host di registrazione remoti. La configurazione di rsyslog è simile alla configurazione
del suo predecessore, syslog. Tuttavia, rsyslog ti consente di aggiungere moduli ad altri
gestire e dirigere specificamente i messaggi di log.

In Red Hat Enterprise Linux 7 e nelle recenti versioni di Fedora, la funzione rsyslog sfrutta
messaggi che vengono raccolti e archiviati nel journal di systemd. Per visualizzare il registro del giornale
messaggi direttamente dal diario di systemd, invece di visualizzarli dai file in
/ var / log, utilizzare il comando journalctl.

Abilitazione della registrazione del sistema con rsyslog


La maggior parte dei file nella directory / var / log sono popolati con messaggi di log diretti a
loro dal servizio rsyslog. Il demone rsyslogd è il demone di registrazione del sistema. It
accetta messaggi di registro da una varietà di altri programmi e li scrive nel file appropriato
log files. È meglio che avere ogni programma che scrive direttamente nel proprio file di registro perché
consente di gestire centralmente come vengono gestiti i file di registro.

È possibile configurare rsyslogd per registrare diversi livelli di dettaglio nei file di registro. Può
gli si dice di ignorare tutti i messaggi tranne i più critici, oppure può registrare ogni dettaglio.

334

Pagina 375
Capitolo 13: Comprensione dell'amministrazione del server

Il demone rsyslogd può persino accettare messaggi da altri computer sulla rete.
Questa funzionalità di registrazione remota è particolarmente utile perché consente di centralizzare il file
gestione e revisione dei file di registro da molti sistemi sulla rete. C'è anche un
grande vantaggio per la sicurezza di questa pratica.

Con la registrazione remota, se un sistema sulla tua rete viene violato, il cracker non può eliminarlo
o modificare i file di registro perché questi file sono archiviati su un computer separato. È importante
per ricordare, tuttavia, che quei messaggi di log non sono, per impostazione predefinita, crittografati (sebbene
la crittografia può essere abilitata). Chiunque acceda alla tua rete locale può origliare
quei messaggi mentre passano da una macchina all'altra. Inoltre, sebbene il cracker possa
non essere in grado di modificare le vecchie voci di registro, può influenzare il sistema in modo tale che qualsiasi nuovo registro
i messaggi non dovrebbero essere considerati attendibili.

Esecuzione di un loghost dedicato, un computer che non ha altro scopo che registrare il log
messaggi da altri computer in rete, non è raro. Perché questo sistema
non esegue altri servizi, è improbabile che venga violato. Questo lo fa quasi
impossibile per i cracker cancellare completamente le proprie tracce.

Comprensione del file rsyslog.conf


Il file /etc/rsyslog.conf è il file di configurazione principale per il servizio rsyslog. Se
hai usato la vecchia funzionalità syslog, noterai che la sezione delle regole è la stessa
in entrambi i file. Quindi il modo in cui definisci quale tipo di messaggi vengono registrati e dove si trovano
loggato a è esattamente lo stesso; tuttavia, i file di configurazione sono diversi rispetto a 13
uso dei moduli in rsyslog.conf.

Nel file /etc/rsyslog.conf, una sezione Modules consente di includere o non includere specifiche
caratteristiche nel tuo servizio rsyslog. Quello che segue è un esempio della sezione moduli di
/etc/rsyslog.conf in RHEL 7:

$ ModLoad imuxsock
# fornisce supporto per la registrazione del sistema locale (comando logger)
$ ModLoad imjournal # fornisce l'accesso al journal di systemd
$ ModLoad imklog
# legge i messaggi del kernel (gli stessi vengono letti da journald)
# $ ModLoad immark # fornisce la capacità di messaggio --MARK--
# Fornisce la ricezione del syslog UDP
# $ ModLoad imudp
# $ UDPServerRun 514
# Fornisce la ricezione del syslog TCP
# $ ModLoad imtcp
# $ InputTCPServerRun 514

Le voci che iniziano con $ ModLoad caricano i moduli che seguono. Moduli che sono attualmente
disabilitati sono preceduti da un segno di cancelletto (#). Il modulo imjournal consente l'accesso a rlogind
il giornale di sistema. Il modulo imuxsock è necessario per accettare messaggi dal locale
sistema (non dovrebbe essere commentato, preceduto da un cancelletto, a meno che tu non abbia un
motivo specifico per farlo). Il modulo imklog registra i messaggi del kernel.

335

Pagina 376

Parte IV: diventare un amministratore di server Linux

I moduli non abilitati per impostazione predefinita includono il modulo immark, che consente --MARK--
messaggi da registrare (utilizzato per indicare che un servizio è attivo). I file imudp e imtcp
moduli e le relative voci del numero di porta vengono utilizzati per consentire al servizio rsyslog di accettare
messaggi di registrazione remota e sono discussi in modo più dettagliato nella sezione "Impostazione e utilizzo di un file
loghost con rsyslogd ”sezione.

La maggior parte del lavoro svolto nel file di configurazione /etc/rsyslog.conf implica la modifica
la sezione REGOLE. Quello che segue è un esempio di alcune delle regole nella sezione REGOLE
del file /etc/rsyslog.conf (nota che in Ubuntu, devi guardare nel file
/etc/rsyslog.d per queste informazioni di configurazione):

#### REGOLE ####


# Registra tutti i messaggi del kernel sulla console.
# La registrazione di molte altre cose ingombra lo schermo.
# kern. * / dev / console
# Registra qualsiasi cosa (eccetto la posta) di informazioni di livello o superiore.
# Non registrare i messaggi di autenticazione privati!
* .info; mail.none; authpriv.none; cron.none / var / log / messages
# Il file authpriv ha un accesso limitato.
authpriv. * / var / log / secure
# Registra tutti i messaggi di posta in un unico posto.
posta. * - / var / log / maillog
# Registra le cose di cron
cron. * / var / log / cron

Le voci delle regole sono disponibili in due colonne. Nella colonna di sinistra ci sono le designazioni di quali messaggi
sono abbinati; la colonna di destra mostra dove vanno i messaggi abbinati. I messaggi vengono abbinati
in base alla struttura (mail, cron, kern e così via) e alla priorità (a partire da debug, info,
notice e fino a crit, alert ed emerg), separati da un punto (.). Quindi mail.info
corrisponde a tutti i messaggi dal servizio di posta che sono a livello di informazioni e superiore.

Per quanto riguarda la posizione dei messaggi, la maggior parte dei messaggi viene indirizzata ai file nella directory / var / log.
Tuttavia, puoi indirizzare i messaggi a un dispositivo (come / dev / console) oa un host di log remoto
(come @ loghost.example.com). Il segno (@) indica che il nome che segue è
il nome del loghost.

Per impostazione predefinita, la registrazione viene eseguita solo sui file locali nella directory / var / log. Tuttavia, se tu
decommenta la voce kern. *, puoi facilmente indirizzare i messaggi del kernel di tutti i livelli al tuo file
schermo della console del computer.

La prima voce di lavoro nell'esempio precedente mostra che i messaggi a livello di informazioni da tutti
servizi (*) corrispondono a tale regola, ad eccezione dei messaggi di posta,
priv e cron services (esclusi con la parola none). Tutti i messaggi abbinati
sages vengono indirizzati al file / var / log / messages.

I servizi mail, authpriv (messaggi di autenticazione) e cron (messaggi di cron facility)


ognuno ha i propri file di registro, come elencato nelle colonne alla loro destra. Per capire il formato
di questi e altri file di registro, il formato del file / var / log / messages è descritto di seguito.

336

Pagina 377

Capitolo 13: Comprensione dell'amministrazione del server

Comprensione del file di registro dei messaggi


A causa dei numerosi programmi e servizi che registrano le informazioni nel registro dei messaggi
file, capire il formato di questo file è importante. Puoi ricevere un buon preavviso di
problemi che si sviluppano sul sistema esaminando questo file. Ogni riga del file è una singola
messaggio registrato da qualche programma o servizio. Di seguito è riportato un frammento di un file di registro dei messaggi effettivo:

25 febbraio 11:04:32 rete di giocattoli: lancio di loopback: riuscito


25 febbraio 11:04:35 rete di giocattoli: visualizzazione dell'interfaccia eth0: riuscita
25 febbraio 13:01:14 toys vsftpd (pam_unix) [10565]: autenticazione fallita;
logname = uid = 0 euid = 0 tty = ruser = rhost = 10.0.0.5 user = chris
Feb 25 14:44:24 toys su (pam_unix) [11439]: sessione aperta per
root utente di chris (uid = 500)

Il formato di messaggio predefinito nel file / var / log / messages è diviso in cinque principali
parti. Questo formato è determinato dalla seguente voce nel file /etc/rsyslog.conf:

$ ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

Quando si visualizzano i messaggi nei file dalla directory / var / log, da sinistra a destra, message
le parti includono:

■ La data e l'ora in cui il messaggio è stato registrato


■ Il nome del computer da cui proviene il messaggio
■ Il nome del programma o del servizio a cui si riferisce il messaggio
13
■ Il numero di processo (racchiuso tra parentesi quadre) del programma che invia il file
Messaggio
■ Il messaggio di testo effettivo

Dai un'altra occhiata allo snippet di file precedente. Nelle prime due righe puoi vedere che il file
la rete è stata riavviata. La riga successiva mostra che l'utente chiamato chris ha provato e fallito
per accedere al server FTP su questo sistema da un computer all'indirizzo 10.0.0.5 (ha digitato
password errata e autenticazione fallita). L'ultima riga mostra chris usando il su
comando per diventare utente root.

Riesaminando di tanto in tanto i messaggi e i file protetti, potresti notare un crack


tentativo prima che abbia successo. Se vedi un numero eccessivo di tentativi di connessione per un file
servizio particolare, soprattutto se provengono da sistemi su Internet, potresti esserlo
sotto attacco.

Configurazione e utilizzo di un loghost con rsyslogd


Per reindirizzare i file di registro del tuo computer al rsyslogd di un altro computer, devi fare
modifiche al file di configurazione rsyslog locale e remoto, /etc/rsyslog.conf.
Diventa root usando il comando su, quindi apri il file /etc/rsyslog.conf in un file
editor di testo (come vi).

337

Pagina 378

Parte IV: diventare un amministratore di server Linux

Sul lato client


Per inviare i messaggi a un altro computer (loghost) invece che a un file, inizia sostituendo
il nome del file di registro con il carattere @ seguito dal nome dell'host di registro. Ad esempio, a
dirigere l'output dei messaggi che vengono inviati a messages, secure e maillog
log anche a un loghost, aggiungi le linee in grassetto al file dei messaggi:

# Registra qualsiasi cosa (eccetto la posta) di informazioni di livello o superiore.


# Non registrare i messaggi di autenticazione privati!
* .info; mail.none; news.none; authpriv.none; cron.none / var / log / messages
* .info; mail.none; news.none; authpriv.none; cron.none @loghost
# Il file authpriv ha un accesso limitato.
authpriv. * / var / log / secure
authpriv. * @loghost
# Registra tutti i messaggi di posta in un unico posto.
posta. * - / var / log / maillog
posta. * @loghost

I messaggi vengono ora inviati a rsyslogd in esecuzione sul computer denominato loghost. Il
il nome "loghost" non è stata una scelta arbitraria. Creare un tale nome host e renderlo un file
alias al sistema effettivo che agisce come loghost è consuetudine. In questo modo, se mai ne avrai bisogno
cambiare i compiti di loghost su una macchina diversa, è necessario cambiare solo l'alias loghost;
non è necessario modificare nuovamente il file syslog.conf su ogni computer.

Sul lato loghost


L'host di log impostato per accettare i messaggi deve essere in ascolto di quei messaggi su standard
porte (514 UDP, sebbene possa essere configurato per accettare messaggi anche su 514 TCP). Qui
è il modo in cui configureresti l'host di log di Linux che esegue anche il servizio rsyslog:

■ Modificare il file /etc/rsyslog.conf sul sistema loghost e rimuovere il commento dalle righe
che consentono al daemon rsyslogd di ascoltare i messaggi di registro remoto. Rimuovi il commento da
prime due righe per abilitare i messaggi di registro UDP in entrata sulla porta 514 (impostazione predefinita); rimuovere il commento
le due righe successive per consentire i messaggi che utilizzano il protocollo TCP (anche la porta 514):

$ ModLoad imudp.so
$ UDPServerRun 514
$ ModLoad imtcp.so
$ InputTCPServerRun 514

■ Aprire il firewall (iptables o firewalld) per consentire l'indirizzamento di nuovi messaggi


al tuo loghost. (Vedere il Capitolo 25, "Protezione di Linux su una rete", per una descrizione
di come aprire porte specifiche per consentire l'accesso al sistema.)
■ Riavviare il servizio rsyslog (service rsyslog restart o systemctl
riavviare rsyslog.service).
■ Se il servizio è in esecuzione, dovresti essere in grado di vedere che il servizio è in ascolto
le porte abilitate (porte UDP e / o TCP 514). Esegui il comando netstat come
segue per vedere che il demone rsyslogd è in ascolto sulle porte IPv4 e IPv6 514
sia per i servizi UDP che TCP:

338

Pagina 379

Capitolo 13: Comprensione dell'amministrazione del server


# netstat -tupln | grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 25341 / rsyslogd
tcp 0 0 ::: 514 ::: * LISTEN 25341 / rsyslogd
udp 0 0 0.0.0.0:514 0.0.0.0:* 25341 / rsyslogd
udp 0 0 ::: 514 ::: * 25341 / rsyslogd

Guardare i registri con logwatch


Il servizio logwatch viene eseguito nella maggior parte dei sistemi Linux che eseguono la registrazione del sistema con rsyslog.
Poiché i registri su sistemi occupati possono diventare molto grandi nel tempo, non ci vuole molto
ci devono essere troppi messaggi perché un amministratore di sistema possa guardare ogni messaggio in ognuno
log. Per installare la funzione logwatch, digita quanto segue:

# yum installa logwatch

Quello che fa logwatch è raccogliere messaggi una volta ogni notte che sembrano rappresentare
un problema, inseriscili in un messaggio di posta elettronica e invialo a qualsiasi indirizzo di posta elettronica
tor sceglie. Per abilitare logwatch tutto ciò che devi fare è installare il pacchetto logwatch.

Il servizio logwatch viene eseguito da un cron job (01logwatch) inserito in /etc/cron.daily.


Il file /etc/logwatch/conf/logwatch.conf contiene le impostazioni locali. Le opzioni predefinite
utilizzati per raccogliere i messaggi di registro sono impostati in /usr/share/logwatch/default.conf/
file logwatch.conf.

Alcune delle impostazioni predefinite definiscono la posizione dei file di registro (/ var / log), la posizione del file 13
directory temporanea (/ var / cache / logwatch) e il destinatario del logwatch giornaliero
e-mail (l'utente root locale). A meno che non ti aspetti di accedere al server per leggere logwatch
messaggi, probabilmente vorrai cambiare l'impostazione MailTo in / etc / logwatch / conf /
file logwatch.conf:

MailTo = chris@example.com

Cerca in /usr/share/logwatch/default.conf/logwatch.conf altre impostazioni per


cambiamento (come il livello di dettaglio o l'intervallo di tempo per ogni rapporto). Quindi fai le tue aggiunte a
/etc/logwatch/conf/logwatch.conf come menzionato.

Quando il servizio è abilitato (che è solo installando il pacchetto logwatch), lo farai


vedere un messaggio ogni notte nella casella di posta dell'utente root. Quando sei loggato come root, tu
può utilizzare il vecchio comando di posta per visualizzare la casella di posta dell'utente root:

# posta
Heirloom Mail versione 12.5 7/5/10. Genere ? per un aiuto.
"/ var / spool / mail / root": 2 messaggi 2 nuovi
> N 1 logwatch@abc.ex Sun Feb 15 04:02 45/664 "Logwatch for abc"
2 logwatch@abc.ex lun 16 feb 04:02 45/664 "Logwatch per abc"
&1
&x

339

Pagina 380

Parte IV: diventare un amministratore di server Linux

Nella posta, dovresti vedere i messaggi di posta elettronica di logwatch eseguiti ogni giorno (qui alle 4:02).
Digita il numero del messaggio che desideri visualizzare e sfoglialo con la barra spaziatrice o
riga per riga premendo Invio. Digita x per uscire quando hai finito.

Il tipo di informazioni che vedi include errori del kernel, pacchetti installati, autenticazione
guasti e servizi malfunzionanti. Viene segnalato l'utilizzo dello spazio su disco, così puoi vedere se il tuo
lo spazio di archiviazione si sta riempiendo. Semplicemente dando un'occhiata a questo messaggio di logwatch, dovresti ottenere un file
idea se sono in corso attacchi prolungati o se si verificano ripetuti fallimenti.

Controllo delle risorse di sistema con sar


Il System Activity Reporter (sar) è una delle strutture di monitoraggio del sistema più vecchie create
per i primi sistemi UNIX, precedenti a Linux di alcuni decenni. Lo stesso comando sar può
visualizzare l'attività del sistema continuamente, a intervalli prestabiliti (ogni secondo o due), e visualizzarla
sullo schermo. Può anche visualizzare i dati sull'attività del sistema raccolti in precedenza.

Il comando sar fa parte del pacchetto sysstat. Installando sysstat e abilitando


il servizio sysstat, il sistema inizia immediatamente a raccogliere i dati sull'attività del sistema
che può essere rivisto in seguito utilizzando determinate opzioni del comando sar. La raccolta dei dati
è fatto da un file di configurazione crontab (/etc/cron.d/sysstat) che viene lanciato in
intervalli regolari. Guarda cosa contiene quel file:
# cat /etc/cron.d/sysstat
# Esegui lo strumento di contabilità delle attività di sistema ogni 10 minuti
* / 10 * * * * root / usr / lib64 / sa / sa1 1 1
# 0 * * * * root / usr / lib64 / sa / sa1 600 6 &
# Genera un riepilogo giornaliero della contabilità di processo alle 23:53
53 23 * * * root / usr / lib64 / sa / sa2 -A

La prima riga non commentata esegue il comando sa1 1 1 ogni 10 minuti. Questo sa1
Il comando raccoglie una serie di informazioni sull'attività del sistema solo una volta (una volta dopo aver atteso
1 secondo) e lo copia in / var / log / sa / sa?? file, dove ?? è sostituito dalla corrente
giorno. Il comando sa2 -A raccoglie tutti i dati raccolti fino a questo punto della giornata (alle 23:23)
e lo colloca in / var / log / sa / sar ?? file, dove ?? è sostituito dal giorno corrente.

Per leggere i dati in sa ?? e sar ?? file, è possibile utilizzare alcuni dei seguenti file sar
comandi:

# sar -u | Di meno
Linux 3.10.0-123.el7.x86_64 (rhel7-01) 16/04/2017 _x86_64_ (4 CPU)
12:00:01 AM CPU% user% nice% system% iowait% steal% idle
00:10:01 tutti 6.48 0.00 0.82 0.59 0.00 92.12
00:20:01 tutti 6,50 0,00 0,78 0,82 0,00 91,91

L'opzione -u mostra l'utilizzo della CPU. Per impostazione predefinita, l'uscita inizia a mezzanotte sulla corrente
day e quindi mostra quanto tempo di elaborazione viene consumato dalle diverse parti di

340

Pagina 381

Capitolo 13: Comprensione dell'amministrazione del server

il sistema. L'output continua a mostrare l'attività ogni 10 minuti fino alla corrente
il tempo è raggiunto.

Per vedere l'output dell'attività del disco, eseguire il comando sar -d. Anche in questo caso, l'output arriva in 10 minuti
intervalli che iniziano a mezzanotte.

# sar -d | Di meno
Linux 3.10.0-123.el7.x86_64 (rhel7-01) 16/04/2017 _x86_64_ (4 CPU)
12:00:01 AM DEV tps rd_sec / s wr_sec / s avgrq-sz avgqu-sz ...
00:10:01 AM dev8-0 1,39 0,24 18,49 13,44 0,04 ...
12:10:01 AM dev253- 02.59 0.24 18.49 7.24 0.04 ...

Se desideri eseguire i rapporti sull'attività di sar in tempo reale, puoi farlo aggiungendo i conteggi e il tempo
intervalli alla riga di comando. Per esempio:

# sar -n DEV 5 2
Linux 3.10.0-123.el7.x86_64 (rhel7-01) 16/04/2017 _x86_64_ (4 CPU)
11:19:36 PM IFACE rxpck / s txpck / s rxkB / s txkB / s rxcmp / s txcmp / s ...
11:19:41 PM lo 5.42 5.42 1.06 1.06 0.00 0.00 ...
11:19:41 PM eth0 0,00 0,00 0,00 0,00 0,00 0,00 ...
11:19:41 PM wlan0 1.00 1.00 0.10 0.12 0.00 0.00 ...
11:19:41 PM pan0 0,00 0,00 0,00 0,00 0,00 0,00 ...
11:19:41 PM tun0 0.00 0.00 0.00 0.00 0.00 0.00 ...
...
Media: IFACE rxpck / s txpck / s rxkB / s txkB / rxcmp / s txcmp / s rxmcst / s
Media: lo 7,21 7,21 1,42 1,42 0,00 0,00 0,00
13
Media: eth0 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Media: wlan0 4,70 4,00 4,81 0,63 0,00 0,00 0,00
Media: pan0 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Media: tun0 3,70 2,90 4,42 0,19 0,00 0,00 0,00

Con l'esempio -n Dev appena mostrato, puoi vedere quanta attività si è verificata nel dif-
interfacce di rete ferenti sul tuo sistema. Puoi vedere quanti pacchetti sono stati trasmessi
e ricevuti e quanti KB di dati sono stati trasmessi e ricevuti. In quell'esempio,
campionamenti di dati sono stati effettuati ogni 5 secondi e ripetuti due volte.

Fare riferimento alle pagine man di sar, sadc, sa1 e sa2 per maggiori informazioni su come i dati sar
possono essere raccolti e visualizzati.

Controllo dello spazio di sistema


Sebbene logwatch possa darti un'istantanea quotidiana del consumo di spazio sul tuo sistema
disks, i comandi df e du possono aiutarti a vedere immediatamente quanto spazio su disco è
a disposizione. Le sezioni seguenti mostrano esempi di questi comandi.
341

Pagina 382

Parte IV: diventare un amministratore di server Linux

Visualizzazione dello spazio di sistema con df


Puoi visualizzare lo spazio disponibile nei tuoi filesystem usando il comando df. Per vedere il
quantità di spazio disponibile su tutti i filesystem montati sul tuo computer Linux, digita df
senza opzioni:

$ df
Filesystem 1k-blocks Usato Disponibile Usa% Montato su
/ dev / sda3 30645460 2958356 26130408 ​11% /
/ dev / sda2 46668 8340 35919 19% / boot
...

Questo output di esempio mostra lo spazio disponibile sulla partizione del disco rigido montata su
directory / (root) (/ dev / sda1) e / partizione di avvio (/ dev / sda2).Lo spazio su disco è mostrato in
Blocchi da 1 KB. Per produrre output in una forma più leggibile dall'uomo, usa l'opzione -h:

$ df -h
Filesystem Dimensioni utilizzate Utilizzo disponibile% montato su
/ dev / sda3 29G 2.9G 24G 11% /
/ dev / sda2 46M 8.2M 25M 19% / avvio
...

Con l'opzione df -h, l'output viene visualizzato in un elenco di megabyte o gigabyte più amichevole. Altro
le opzioni con df ti consentono di fare quanto segue:

■ Stampa solo filesystem di un tipo particolare (tipo -t).


■ Escludere file system di un tipo particolare (tipo -x). Ad esempio, digita df -x
tmpfs -x devtmpfs per escludere tipi di filesystem temporanei (limitando l'output a
filesystem che rappresentano aree di archiviazione reali).
■ Includere filesystem che non hanno spazio, come / proc e / dev / pts (-a).
■ Elenca solo gli inode disponibili e utilizzati (-i).
■ Visualizza lo spazio su disco in determinate dimensioni di blocco (--block-size = #).

Controllo dell'utilizzo del disco con du


Per scoprire quanto spazio viene consumato da una particolare directory (e dalla sua sottodirectory
ries), usa il comando du. Senza opzioni, du elenca tutte le directory sotto la directory corrente
tory, insieme allo spazio occupato da ciascuna directory. Alla fine, du produce il disco totale
spazio utilizzato all'interno di quella struttura di directory.

Il comando du è un buon modo per controllare quanto spazio viene utilizzato da un particolare utente
(du / home / jake) o in una particolare partizione del filesystem (du / var). Per impostazione predefinita, spazio su disco
viene visualizzato in blocchi da 1 KB. Per rendere l'output più amichevole (in kilobyte, megabyte e
gigabyte), utilizzare l'opzione -h come segue:

342

Pagina 383

Capitolo 13: Comprensione dell'amministrazione del server

$ du -h / home / jake
114k / home / jake / httpd / stuff
234k / home / jake / httpd
137k / home / jake / uucp / data
701k / home / jake / uucp
1.0M / home / jake

L'output mostra lo spazio su disco utilizzato in ciascuna directory nella directory home di
l'utente chiamato jake (/ home / jake). Lo spazio su disco consumato è mostrato in kilobyte (k) e
megabyte (M). Lo spazio totale consumato da / home / jake è mostrato nell'ultima riga. Inserisci
l'opzione –s per vedere lo spazio su disco totale utilizzato per una directory e le sue sottodirectory.

Trovare il consumo del disco con find


Il comando find è un ottimo modo per trovare il consumo di file del tuo disco rigido utilizzando un file
varietà di criteri. Puoi avere una buona idea di dove lo spazio su disco può essere recuperato trovando
file che superano una certa dimensione o sono stati creati da una persona in particolare.

Devi essere l'utente root per eseguire questo comando in modo efficace, a meno che tu non stia solo controllando i tuoi file personali. Se sei
non l'utente root, ci sono molti posti nel filesystem che non hai il permesso di controllare. Utenti regolari
di solito possono controllare le proprie directory home ma non quelle degli altri.
13
Nell'esempio seguente, il comando find cerca nel file system radice (/) qualsiasi file
file di proprietà dell'utente denominato jake (-user jake) e stampa i nomi dei file. L'output di
il comando find è organizzato in un lungo elenco in ordine di dimensione (ls -ldS). Infine, quello
l'output viene inviato al file / tmp / jake. Quando visualizzi il file / tmp / jake (ad esempio,
less / tmp / jake), troverai tutti i file di proprietà dell'utente jake elencati per dimensione
ordine. Ecco la riga di comando:

# trova / -xdev -user jake -print | xargs ls -ldS> / tmp / jake

L'opzione -xdev impedisce la ricerca in filesystem diversi dal filesystem selezionato. Questo è un bene
modo per eliminare un sacco di spazzatura che potrebbe essere emessa dal filesystem / proc. Può anche mantenere grande montato a distanza
filesystem dalla ricerca.

Ecco un altro esempio, tranne per il fatto che invece di cercare i file di un utente, stiamo cercando
file più grandi di 100 kilobyte (-size + 100M):

# trova / -xdev -size + 100M | xargs ls -ldS> / tmp / size

Puoi risparmiare un sacco di spazio su disco semplicemente rimuovendo alcuni dei file più grandi che sono
non è più necessario. In questo esempio, puoi vedere che i file di grandi dimensioni sono ordinati per dimensione nel file
/ tmp / size file.

343

Pagina 384

Parte IV: diventare un amministratore di server Linux

Gestione dei server nell'azienda


Mentre ti dai una pacca sulla spalla per padroneggiare gli strumenti per la gestione dei server Linux, continua
Ricorda che queste abilità sono solo la base per ciò di cui hai bisogno per gestirne centinaia
o migliaia di sistemi Linux in una grande azienda. Gestire grandi gruppi di imprese
computer è diverso dalla gestione di uno o due sistemi in alcuni dei seguenti modi:

■ Distribuzione : anziché configurare manualmente un singolo sistema, server aziendali


sono in genere preconfigurati, testati e quindi distribuiti più e più volte. UN
una singola installazione Linux automatizzata può essere eseguita da un server PXE utilizzando un kickstart
file. Tuttavia, per gestire l'installazione e la configurazione di set di computer,
strumenti di provisioning e gestione della configurazione come Chef (www.getchef.
com) e Puppet (www.puppetlabs.com) sono ora disponibili. Altri strumenti, come
Ansible (www.ansible.com) e Vagrant (www.vagrantup.com) possono essere utilizzati
iniziare a pianificare le distribuzioni del sistema come parte dello sviluppo delle applicazioni.
■ Monitoraggio : perché sono presenti troppi sistemi per consentire a un amministratore di sistema
controllare individualmente, sono necessari strumenti di monitoraggio a livello aziendale. Nagios (www.
nagios.com) è forse la struttura più popolare per il monitoraggio delle infrastrutture IT.
Man mano che gli ambienti cloud diventano più popolari, cerca gli strumenti di monitoraggio che vanno con
OpenStack, Red Hat Enterprise Virtualization e altre piattaforme cloud da migliorare
monitoraggio centralizzato di hypervisor, macchine virtuali, container e
servizi di archiviazione, rete e autenticazione sottostanti che li supportano.

Sebbene la copertura approfondita della distribuzione e degli strumenti di monitoraggio aziendali sia al di fuori di
scopo di questo libro, fare riferimento al Capitolo 26, "Utilizzo di Linux per il cloud computing", per ulteriori informazioni
informazioni su come le diverse piattaforme cloud basate su Linux gestiscono questi problemi.
Sommario
Sebbene siano disponibili molti tipi diversi di server con i sistemi Linux, il file basic
la procedura per l'installazione e la configurazione di un server è essenzialmente la stessa. Il corso normale
di eventi è installare, configurare, avviare, proteggere e monitorare i tuoi server. Attività di base che
si applicano a tutti i server includono l'utilizzo di strumenti di rete (in particolare strumenti SSH) per accedere, copiare
file o eseguire comandi remoti.

Poiché un amministratore non può essere connesso a guardare i server tutto il tempo, gli strumenti per
la raccolta dei dati e la successiva revisione dei dati di registro sono molto importanti durante l'amministrazione
Server Linux. La funzionalità rsyslog può essere utilizzata per la registrazione locale e remota. Il sar
la struttura raccoglie dati in tempo reale o riproduce i dati raccolti in precedenza a intervalli di 10 minuti. Per
guarda lo spazio su disco, puoi eseguire i comandi df e du.

Le abilità descritte in questo capitolo sono progettate per aiutarti a costruire le basi per fare
amministrazione del sistema di qualità aziendale in futuro. Sebbene queste abilità siano utili,

344

Pagina 385

Capitolo 13: Comprensione dell'amministrazione del server

per gestire molti sistemi Linux contemporaneamente, è necessario ampliare le proprie capacità utilizzando
automatizzare la distribuzione e gli strumenti di monitoraggio come Puppet e Nagios.

Sebbene sia facile configurare la rete per raggiungere i tuoi server in casi semplici, predefiniti, altro ancora
una configurazione di rete complessa richiede una conoscenza dei file di configurazione di rete e
strumenti correlati. Il capitolo successivo descrive come configurare e amministrare la rete in Linux.

Esercizi
Gli esercizi in questa sezione coprono alcuni degli strumenti di base per connettersi e guardare
sui tuoi server Linux. Come al solito, puoi svolgere le attività qui in diversi modi. Così
non preoccuparti se non svolgi gli esercizi nello stesso modo mostrato nelle risposte,
a patto di ottenere gli stessi risultati. Se sei bloccato, vengono mostrate le soluzioni alle attività
Appendice B.

Alcuni esercizi presumono che tu abbia un secondo sistema Linux disponibile che puoi registrare
in e provare diversi comandi. Su quel secondo sistema, devi assicurarti che il file
Il servizio sshd è in esecuzione, che il firewall è aperto e che ssh è consentito per l'utente
account a cui stai tentando di accedere (root è spesso bloccato da sshd).

Se hai un solo sistema Linux, puoi creare un account utente aggiuntivo e semplicemente
simulare comunicazioni con un altro sistema collegandosi al nome localhost 13
anziché. Per esempio:

# useradd joe
# passwd joe
# ssh joe @ localhost

1. Utilizzando il comando ssh, accedere a un altro computer (o al computer locale) utilizzando


qualsiasi account a cui hai accesso. Immettere la password quando richiesto.
2. Utilizzando l'esecuzione remota con il comando ssh, visualizzare il contenuto di un telecomando
/ etc / system-release file e visualizzarne il contenuto sul sistema locale.

3. Usa il comando ssh per usare l'inoltro X11 per visualizzare una finestra gedit sul tuo
sistema locale; quindi salvare un file nella directory home dell'utente remoto.
4. Copiare ricorsivamente tutti i file dalla directory / usr / share / selinux su un file
sistema remoto nella directory / tmp sul sistema locale in modo tale che tutti i file
gli orari di modifica sui file vengono aggiornati all'ora sul sistema locale
quando vengono copiati.

5. Copiare ricorsivamente tutti i file dalla directory / usr / share / logwatch su un file
sistema remoto nella directory / tmp sul sistema locale in modo tale che tutti i file
i tempi di modifica sui file dal sistema remoto vengono mantenuti sul file
sistema locale.

345
Pagina 386

Parte IV: diventare un amministratore di server Linux

6. Creare una coppia di chiavi pubblica / privata da utilizzare per le comunicazioni SSH (nessuna passphrase attiva
la chiave), copia il file della chiave pubblica nell'account di un utente remoto con ssh-copy-id,
e utilizzare l'autenticazione basata su chiave per accedere a quell'account utente senza doverlo fare
Inserisci una password.

7. Creare una voce in /etc/rsyslog.conf che memorizzi tutti i messaggi di autenticazione


(authpriv) livello di informazioni e superiore in un file denominato / var / log / myauth. da una
terminale, guarda il file mentre i dati entrano in esso, e in un altro terminale, prova a ssh
nel computer locale come qualsiasi utente valido, con una password errata.
8. Utilizzare il comando du per determinare le strutture di directory più grandi in / usr /
condividerle, ordinarle dalla più grande alla più piccola ed elencare le prime dieci di queste directory
in termini di dimensioni.
9. Utilizzare il comando df per mostrare lo spazio utilizzato e disponibile da tutti i file
filesystem attualmente collegati al sistema locale, ma esclude qualsiasi tmpfs o
filesystem devtmpfs.

10. Trova tutti i file nella directory / usr di dimensioni superiori a 10 MB.

346

Pagina 387

CAPITOLO

Amministrazione della rete


14
IN QUESTO CAPITOLO
Connessione automatica di Linux a una rete

Utilizzo di NetworkManager per una semplice connettività di rete

Configurazione della rete dalla riga di comando

Lavorare con i file di configurazione di rete

Configurazione di routing, DHCP, DNS e altre funzionalità dell'infrastruttura di rete per l'azienda

C Internet, è diventato così facile che ho sentito di poter rimandare un intero capitolo sulle reti Linux
fino ad ora. Se stai tentando di connettere Fedora, RHEL, Ubuntu o un altro desktop Linux
ollegamento di un singolo sistema desktop o laptop a una rete, in particolare a una a cui si connette
sistema a Internet, ecco cosa puoi provare, data una rete cablata o wireless disponibile
interfaccia:

■ Rete cablata: se la casa o l'ufficio dispone di una porta Ethernet cablata che fornisce un percorso
Internet e il computer dispone di una porta Ethernet, utilizzare un cavo Ethernet per connettersi
le due porte. Dopo aver acceso il computer, avviare Linux e accedere. Fare clic su
L'icona di NetworkManager sul desktop dovrebbe mostrare che sei connesso a
Internet o consentono di connettersi con un solo clic.
■ Rete wireless: per un computer wireless che esegue Linux, accedere e fare clic su
Icona di NetworkManager sul desktop. Dall'elenco delle reti wireless visualizzate, seleziona
quello che desideri e, quando richiesto, inserisci la password richiesta. Ogni volta che accedi da
quel computer dalla stessa posizione, si connette automaticamente a quella rete wireless.

Se uno di questi tipi di connessioni di rete funziona per te, non sei altrimenti curioso
su come funziona la rete in Linux, potrebbe essere tutto ciò che devi sapere. Tuttavia, cosa succede se il tuo
Il sistema Linux non si connette automaticamente a Internet? E se volessi configurare il tuo
desktop per parlare con una rete privata al lavoro (VPN)? E se volessi bloccare la rete
impostazioni sul tuo server o configurare il tuo sistema Linux per funzionare come un router?

In questo capitolo, gli argomenti relativi alla rete sono suddivisi in reti per desktop, server e
informatica aziendale. L'approccio generale alla configurazione della rete in questi tre tipi di
I sistemi Linux sono i seguenti:

347

Pagina 388

Parte IV: diventare un amministratore di server Linux

■ Rete desktop / laptop: sui sistemi desktop, NetworkManager viene eseguito da


predefinito per gestire le interfacce di rete. Con NetworkManager puoi automatizzare
accettare calamente l'indirizzo e le informazioni sul server necessarie per connettersi a Internet.
Tuttavia, è anche possibile impostare manualmente le informazioni sull'indirizzo. Puoi configurare tale
cose come server proxy o connessioni di rete privata virtuale per consentire il tuo
desktop per lavorare da dietro il firewall di un'organizzazione o per connettersi tramite un file
firewall, rispettivamente.
■ Rete di server: sebbene NetworkManager sia un servizio eccellente per desktop
e la configurazione della rete del laptop, fino a poco tempo fa non funzionava altrettanto bene sui server.
In Red Hat Enterprise Linux 7 e nelle recenti versioni di Fedora, tuttavia, presenta questo
sono utili per la configurazione di server, come il bonding del canale Ethernet e la configurazione
gli alias possono ora essere eseguiti in NetworkManager.
■ Reteaziendale: la configurazione della rete in una grande impresa può farlo
riempire diversi volumi. Tuttavia, per darti un vantaggio, inizia a usare Linux in un file
ambiente aziendale, discuto le tecnologie di rete di base, come DHCP
e DNS, che consentono ai sistemi desktop di connettersi a Internet
automaticamente.

Configurazione della rete per desktop


Sia che ti connetti a Internet da Linux, Windows, uno smartphone o qualsiasi altro
tipo di dispositivo abilitato alla rete, alcune cose devono essere a posto per quella connessione a
lavoro. Il computer deve disporre di un'interfaccia di rete (cablata o wireless), un indirizzo IP, un file
server DNS assegnato e un percorso verso Internet (identificato da un dispositivo gateway).

Prima di discutere su come modificare la configurazione di rete in Linux, diamo un'occhiata al file
attività generali che si verificano quando Linux è impostato per connettersi automaticamente a Internet
con NetworkManager:

■ Attiva le interfacce di rete: NetworkManager cerca di vedere quale rete


le interfacce (cablate o wireless) sono impostate per l'avvio. Per impostazione predefinita, le interfacce esterne sono
impostato per l'avvio automatico utilizzando DHCP.
■ Richiedi servizio DHCP : il sistema Linux funge da client DHCP per inviare un file
richiesta di servizio DHCP su ciascuna interfaccia abilitata. Utilizza l'indirizzo MAC di
interfaccia di rete per identificarsi nella richiesta.
■ Ottienirisposta dal server DHCP: un server DHCP, possibilmente in esecuzione sul DSL
modem, modem via cavo o altro dispositivo che fornisce un percorso a Internet dal tuo
posizione, risponde alla richiesta DHCP. Può fornire molti tipi diversi di file
informazioni al client DHCP. Quelle informazioni probabilmente contengono almeno il file
a seguire:
■ Indirizzo IP : il server DHCP ha in genere un intervallo di IP (Internet Protocol)
indirizzi che può fornire a qualsiasi sistema in rete che richieda un

348

Pagina 389

Capitolo 14: Amministrazione della rete

indirizzo. In ambienti più sicuri o in cui vuoi esserne sicuro


macchine specifiche ottengono indirizzi specifici, il server DHCP fornisce un IP specifico
indirizzo alle richieste provenienti da specifici indirizzi MAC. (Gli indirizzi MAC sono fatti per essere
uniche tra tutte le schede di interfaccia di rete e sono assegnate dal produttore
di ogni carta.)
■ Subnet mask: quando al client DHCP viene assegnato un indirizzo IP,
panying subnet mask indica a quel client quale parte dell'indirizzo IP identifica
la sottorete e che identifica l'host. Ad esempio, un indirizzo IP di
192.168.0.100 e la subnet mask 255.255.255.0 comunicano al client che la rete
è 192.168.0 e la parte host è 100.
■ Tempo di lease: quando un indirizzo IP viene allocato dinamicamente al client DHCP
(Sistema Linux), a quel client viene assegnato un periodo di lease. Il cliente non lo possiede
indirizzo, ma deve affittarlo nuovamente allo scadere del tempo e richiederlo nuovamente
al riavvio dell'interfaccia di rete. Di solito, il server DHCP ricorda il file
client e assegna lo stesso indirizzo quando il sistema si riavvia o lo richiede
rinnovare il contratto di locazione. Il tempo di lease predefinito è 86.400 secondi (24 ore).
■ Server dei nomi di dominio: poiché ai computer piace pensare in numeri (come
Indirizzi IP come 192.168.0.100) e le persone tendono a pensare in nomi (come il
hostname www.example.com), i computer hanno bisogno di un modo per tradurre i nomi host
negli indirizzi IP e talvolta anche il contrario. Il sistema dei nomi di dominio
(DNS) è stato progettato per gestire questo problema fornendo una gerarchia di server
per eseguire la mappatura nome-indirizzo su Internet. La posizione di uno o più DNS
server (di solito due o tre) vengono solitamente assegnati al client DHCP dal file
Host DHCP.
■ Gateway predefinito: sebbene Internet disponga di uno spazio dei nomi univoco, lo è
effettivamente organizzato come una serie di sottoreti interconnesse. Affinché a
richiesta di rete per lasciare la tua rete locale, deve sapere quale nodo sul tuo
rete fornisce un percorso verso indirizzi al di fuori della rete locale. Il DHCP
il server di solito fornisce l'indirizzo IP del "gateway predefinito". Avendo rete
interfacce sia sulla tua sottorete che sulla rete successiva sulla strada per il
destinazione finale della tua comunicazione, un gateway può instradare i tuoi pacchetti
14
alla loro destinazione.
■ Altre informazioni: è possibile configurare un server DHCP per fornire tutti i tipi di
informazioni per aiutare il client DHCP. Ad esempio, può fornire la posizione di
un server NTP (per sincronizzare l'ora tra i client), un server di caratteri (per ottenere i caratteri per i tuoi file
X display), server IRC (per chat online) o server di stampa (per designare disponibile
stampanti).
■ Aggiorna impostazioni di rete locale: dopo aver ricevuto le impostazioni dal DHCP
server, vengono implementati in modo appropriato sul sistema Linux locale. Per esempio,
l'indirizzo IP viene impostato sull'interfaccia di rete, vengono aggiunte le voci del server DNS
al file /etc/resolv.conf locale (da NetworkManager) e il tempo di lease è
memorizzato dal sistema locale, quindi sa quando richiedere il rinnovo del contratto di locazione.

349
Pagina 390

Parte IV: diventare un amministratore di server Linux

Tutti i passaggi appena descritti in genere avvengono senza che tu debba fare altro che girare
sul tuo sistema Linux e accedi. Supponi di voler essere in grado di verificare la tua rete
interfacce o modificare alcune di queste impostazioni. Puoi farlo utilizzando gli strumenti descritti in
sezioni successive.

Verifica delle interfacce di rete


Sono disponibili strumenti grafici e da riga di comando per visualizzare le informazioni sul tuo
interfacce di rete in Linux. Dal desktop, gli strumenti di NetworkManager sono un buon posto
iniziare.

Controllo della rete da NetworkManager


Il modo più semplice per controllare le impostazioni di base per un'interfaccia di rete avviata da
NetworkManager deve aprire l'icona di NetworkManager sul desktop. La Figura 14.1 mostra
un esempio dell'icona NetworkManager nel pannello superiore di un desktop GNOME 3 in Fedora,
insieme alla finestra che appare quando apri l'icona.

FIGURA 14.1

Verifica delle interfacce di rete con NetworkManager.

350

Pagina 391

Capitolo 14: Amministrazione della rete

Come puoi vedere dalla Figura 14.1, la connessione di rete cablata è attiva. La rete inter-
La scheda frontale ha un indirizzo MAC (Media Access Control) di 00: 1B: 21: 0A: E8: 5E. L'interfaccia era
assegnato un indirizzo IP 192.168.0.101 e una subnet mask 255.255.255.0.

Qualsiasi pacchetto non destinato alla rete locale viene inviato al router situato all'indirizzo
192.168.0.1 (sebbene altre rotte possano essere definite secondo necessità). Tre server DNS sono
disponibile (205.152.128.23, 192.168.1.254 e 192.168.0.1), quindi se uno non è disponibile,
le richieste per il servizio DNS possono essere indirizzate all'indirizzo del server DNS successivo nell'elenco.

Per vedere di più su come è configurato il tuo sistema Linux, fai clic sul pulsante Aggiungi profilo nel file
Finestra NetworkManager. La Figura 14.2 mostra un esempio della finestra che appare.
FIGURA 14.2
Visualizzazione delle impostazioni di rete con NetworkManager.

14

La Figura 14.2 mostra la scheda Impostazioni IPv4, perché quella scheda contiene le informazioni che sei
molto probabilmente vorrà cambiare. L'impostazione Automatico (DHCP) è ciò che dice questa interfaccia
per connettersi a DHCP all'avvio, quindi potresti volerlo cambiare per impostare manualmente IPv4
informazione. La scheda IPv6 imposta come vengono effettuate le connessioni alle reti IPv6 da questo
Interfaccia (anche automatica, per impostazione predefinita). Più avanti in questo capitolo, imparerai come eseguire manualmente
configurare le interfacce di rete IPv4.

La scheda Protezione consente di configurare connessioni protette a sistemi remoti utilizzando 802.1x
specifiche da IEEE. Per impostazione predefinita, questa funzione è disattivata, ma puoi attivarla e poi

351

Pagina 392

Parte IV: diventare un amministratore di server Linux

identificare gli host remoti a cui si desidera connettersi utilizzando protocolli sicuri. L'ultima scheda su
la finestra è Identità. Questa scheda consente di selezionare l'indirizzo MAC dell'interfaccia di rete
scheda (NIC) che ti interessa e imposta un indirizzo con alias per quell'interfaccia.

Controllo della rete dalla riga di comando


Per ottenere informazioni più dettagliate sulle interfacce di rete, prova a eseguirne alcune
comandi. Ci sono comandi che possono mostrarti informazioni sulla tua rete
interfacce, percorsi, host e traffico sulla rete.

Visualizzazione delle interfacce di rete


Per visualizzare le informazioni su ciascuna interfaccia di rete sul sistema Linux locale, digitare
a seguire:

# ip addr show
1: lo: <LOOPBACK, UP, LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
collegamento / loopback 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
inet 127.0.0.1/8 ambito host lo
inet6 :: host dell'ambito 1/128
valid_lft per sempre preferito_lft per sempre
2: eth0: <NO-CARRIER, BROADCAST, MULTICAST, UP> mtu 1500
qdisc pfifo_fast stato DOWN qlen 1000
link / etere f0: de: f1: 28: 46: d9 brd ff: ff: ff: ff: ff: ff
3: wlan0: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500
qdisc mq state UP qlen 1000
link / etere 00: 24: d7: 69: 5b: 2c brd ff: ff: ff: ff: ff: ff
inet 192.168.0.105/24 brd 192.168.0.255 ambito globale wlan0
inet6 fe80 :: 224: d7ff: fe69: 5b2c / 64 scope link
valid_lft per sempre preferito_lft per sempre

L'output di ip addr show mostra le informazioni sulle interfacce di rete, in questo file
caso da un laptop che esegue RHEL 6. I nomi delle interfacce di rete sono diversi in
Fedora e RHEL 6 (ne parleremo più avanti), ma per il resto dovrebbero essere simili. L'entrata in
la prima riga dell'output mostra l'interfaccia di loopback, che viene utilizzata per consentire la rete
comandi eseguiti sul sistema locale per connettersi al sistema locale. L'indirizzo IP per
localhost è 127.0.0.1/8 (/ 8 è la notazione CIDR, a indicare che 127.0 è la rete
numero e 0.1 è il numero dell'host).

In questo caso, l'interfaccia Ethernet cablata (eth0) è inattiva (nessun cavo), ma il wireless
l'interfaccia è attiva (wlan). L'indirizzo MAC sull'interfaccia wireless (wlan0) è 00: 24: d7: 69: 5b: 2c
e l'indirizzo Internet (IPv4) è 192.168.0.105. È abilitato anche un indirizzo IPv6.

In Fedora e RHEL 7, invece di assegnare nomi di interfaccia di rete come eth0 e


wlan0, le interfacce sono denominate in base alla loro posizione sul bus del computer. Ad esempio, il file
prende il nome la prima porta sulla scheda di rete inserita nel terzo bus PCI per un sistema Fedora
p3p1. La prima porta Ethernet incorporata sarebbe em1. A volte interfacce wireless
vengono visualizzati utilizzando il nome della rete wireless come nome del dispositivo.

352

Pagina 393

Capitolo 14: Amministrazione della rete

Un altro comando popolare per visualizzare le informazioni sull'interfaccia di rete è il comando ifconfig.
Per impostazione predefinita, ifconfig mostra informazioni simili a quelle di ip addr, ma anche ifconfig
mostra il numero di pacchetti ricevuti (RX) e trasmessi (TX), nonché la quantità di
dati ed eventuali errori o pacchetti persi:

# ifconfig wlan0
wlan0 Link encap: Ethernet HWaddr 00: 24: D7: 69: 5B: 2C
inet addr: 192.168.0.105 Bcast: 192.168.0.255 Mask: 255.255.255.0
inet6 addr: fe80 :: 224: d7ff: fe69: 5b2c / 64 Ambito: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Sistema metrico: 1
Pacchetti RX: 22482 errori: 0 eliminati: 0 overruns: 0 frame: 0
Pacchetti TX: 9699 errori: 0 eliminati: 0 overruns: 0 carrier: 0
collisioni: 0 txqueuelen: 1000
Byte RX: 9456897 (9,0 MiB) Byte TX: 1232234 (1,1 MiB)

Verifica della connettività ai sistemi remoti


Per assicurarti di poter raggiungere i sistemi disponibili sulla rete, puoi utilizzare il ping
comando. Finché il computer risponde alle richieste di ping (non tutti lo fanno), puoi utilizzare il ping
per inviare pacchetti a quel sistema in un modo che chiede loro di rispondere. Ecco un esempio:

$ ping host1
PING host1 (192.168.0.15) 56 (84) byte di dati.
64 byte da host1 (192.168.0.15): icmp_seq = 1 ttl = 64 time = 0,062 ms
64 byte da host1 (192.168.0.15): icmp_seq = 2 ttl = 64 time = 0,044 ms
^C
--- statistiche ping host1 ---
2 pacchetti trasmessi, 2 ricevuti, 0% di perdita di pacchetti, tempo 1822 ms
rtt min / avg / max / mdev = 0,044 / 0,053 / 0,062 / 0,009 ms

Il comando ping mostrato qui esegue continuamente il ping dell'host denominato host1. Dopo un po
ping, premere Ctrl + C per terminare i ping e le ultime righe mostrano quanti ping
richieste riuscite.

Avresti potuto usare l'indirizzo IP (192.168.0.15, in questo caso) per vedere che potresti raggiungere
il sistema. Tuttavia, l'utilizzo del nome host ti offre il vantaggio aggiuntivo di saperlo
14
che la traduzione del nome in indirizzo IP (eseguita dal server DNS o dagli host locali
file) funziona correttamente. In questo caso, tuttavia, host1 è apparso nel local
/ etc / hosts file.

Controllo delle informazioni di instradamento


L'instradamento è la prossima cosa che puoi controllare rispetto alle tue interfacce di rete.
Di seguito viene mostrato come utilizzare il comando route per farlo:

# percorso
Tabella di routing IP del kernel
Destination Gateway Genmask Flag Metrico Ref Usa Iface
predefinito 192.168.0.1 0.0.0.0 UG 0 0 0 p4p1
192.168.0.0 * 255.255.255.0 U 1 0 0 p4p1

353

Pagina 394
Parte IV: diventare un amministratore di server Linux

L'output dalla tabella di routing del kernel proviene da un sistema Fedora con una singola rete
scheda di interfaccia. La scheda di interfaccia di rete si trova sullo slot PCI 4, porta 1 (p4p1). Eventuali pacchetti
destinato alla rete 192.168.0 utilizza la NIC p4p1. Pacchetti destinati a qualsiasi altro
posizione vengono inoltrate al sistema gateway in 192.168.0.1. Quel sistema rappresenta il mio
router a Internet. Ecco una tabella di instradamento più complessa:

# percorso
Tabella di routing IP del kernel
Destination Gateway Genmask Flag Metrico Ref Usa Iface
vpn.example. 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0
192.168.0.0 * 255.255.255.0 U 2 0 0 wlan0
10.99.8.0 * 255.255.255.0 U 0 0 0 tun0
172.1.0.0 * 255.255.0.0 U 0 0 0 tun0
10.0.0.0 * 255.0.0.0 U 0 0 0 tun0
192.168.99.0 192.168.0.2 255.255.255.0 UG 0 0 0 wlan0
predefinito 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0

Nell'esempio di percorso appena mostrato, è presente un'interfaccia wireless (wlan0) e un file


interfaccia che rappresenta un tunnel di rete privata virtuale (VPN). Una VPN fornisce un modo per
disporre di comunicazioni private crittografate tra un client e una rete remota su un file
rete non sicura (come Internet). Qui, il tunnel va dal sistema locale oltre
l'interfaccia wlan0 a un host denominato vpn.example.com (parte del nome viene troncato).

Tutte le comunicazioni con la rete 192.168.0.0/24 continuano ancora direttamente sulla LAN wireless.
Tuttavia, i pacchetti destinati alle reti 10.99.8.0/24, 172.1.0.0/16 e 10.0.0.0/8 sono
indirizzati direttamente a vpn-a.example.com per la comunicazione con gli host sull'altro lato
della connessione VPN tramite l'interfaccia con tunnel (tun0).

Un percorso speciale alla rete 192.168.99.0/24 è accessibile tramite il nodo (presumibilmente un router)
all'indirizzo IP 192.168.0.2. Tutti gli altri pacchetti passano al percorso predefinito tramite l'indirizzo 192.168.0.1.
Per quanto riguarda i flag mostrati nell'output, una U dice che il percorso è attivo, una G identifica l'interfaccia come a
gateway e una H indica che l'obiettivo è un host (come nel caso della connessione VPN).

Finora ti ho mostrato i percorsi per uscire dal sistema locale. Se vuoi seguire il file
l'intero percorso verso un host dall'inizio alla fine, è possibile utilizzare il comando traceroute. Per
ad esempio, per tracciare il percorso intrapreso da un pacchetto dal tuo sistema locale al sito google.com,
digita il seguente comando traceroute:

# traceroute google.com
traceroute su google.com (74.125.235.136), massimo 30 hop, pacchetti da 60 byte
...
7 rrcs-70-62-95-197.midsouth.biz.rr.com (70.62.95.197) ...
8 ge-2-1-0.rlghncpop-rtr1.southeast.rr.com (24.93.73.62) ...
9 ae-3-0.cr0.dca10.tbone.rr.com (66.109.6.80) ...
10107.14.19.133 (107.14.19.133) 13.662 ms ...
11 74.125.49.181 (74.125.49.181) 13,912 ms ...
12209.85.252.80 (209.85.252.80) 61.265 ms ...
13 66.249.95.149 (66.249.95.149) 18.308 ms ...

354

Pagina 395

Capitolo 14: Amministrazione della rete

14 66.249.94.22 (66.249.94.22) 18.344 ms ...


15 72.14.239.83 (72.14.239.83) 85.342 ms ...
16 64.233.174.177 (64.233.174.177) 167.827 ms ...
17209.85.255.35 (209.85.255.35) 169.995 ms ...
18209.85.241.129 (209.85.241.129) 170.322 ms ...
19 nrt19s11-in-f8.1e100.net (74.125.235.136) 169.360 ms ...

Ho troncato parte dell'output per eliminare alcuni percorsi iniziali e la quantità di tempo
(in millisecondi) che i pacchetti stavano impiegando per attraversare ogni percorso. Usando traceroute, tu
può vedere dove si trovano i colli di bottiglia lungo il percorso se la comunicazione di rete è in stallo.

Visualizzazione dell'host e dei nomi di dominio


Per vedere il nome host assegnato al sistema locale, digita nome host. Per vedere solo il dominio
parte di quel nome, usa il comando dnsdomainname.

# hostname
spike.example.com
# dnsdomainname
example.com
Configurazione delle interfacce di rete
Se non vuoi che le tue interfacce di rete vengano assegnate automaticamente da un DHCP
server (o se non è presente un server DHCP), è possibile configurare manualmente le interfacce di rete. Questo
può includere l'assegnazione di indirizzi IP, le posizioni dei server DNS e delle macchine gateway e
itinerari. Queste informazioni di base possono essere impostate utilizzando NetworkManager.

Impostazione manuale degli indirizzi IP


Per modificare la configurazione di rete per l'interfaccia di rete cablata tramite
NetworkManager, procedi come segue:

1. Selezionare l'icona Impostazioni nell'angolo in alto a destra del desktop e aprire il file
Icona di rete. 14
2. Selezionare Cablato e fare clic sul pulsante delle impostazioni (piccola icona a forma di ingranaggio) accanto all'interfaccia
vuoi cambiare.

3. Scegliere IPv4 e modificare la casella che dice Automatico (DHCP) in Manuale.

4. Compila le seguenti informazioni (sono richiesti solo Indirizzo e Netmask):


■ Indirizzo : l'indirizzo IP che si desidera assegnare all'interfaccia di rete locale. Per
esempio, 192.168.0.40.
■ Netmask : la maschera di sottorete che definisce quale parte dell'indirizzo IP rappresenta
invia la rete e quale l'host. Ad esempio, una netmask di 255.255.255.0
identificherebbe la porzione di rete dell'indirizzo precedente come 192.168.0 e il file
porzione host come 40.

355

Pagina 396

Parte IV: diventare un amministratore di server Linux

■ Gateway : l'indirizzo IP del computer o del dispositivo sulla rete che funge da
percorso predefinito. La route predefinita instraderà i pacchetti dalla rete locale a any
indirizzo che non è disponibile sulla rete locale o tramite un altro percorso personalizzato.
■ Server DNS: inserire gli indirizzi IP dei sistemi che forniscono il servizio DNS
il tuo computer. Fare clic sul pulsante più per aggiungere un secondo server DNS (è comune a
avere due o tre, nel caso il primo non sia disponibile). Fare clic sul pulsante di spegnimento automatico ma
ton per sovrascrivere qualsiasi informazione del server DNS che potresti ottenere automaticamente tramite DHCP.
5. Fare clic sul pulsante Applica. Le nuove informazioni vengono salvate e la rete viene riavviata
utilizzando le nuove informazioni. La Figura 14.3 mostra un esempio di queste impostazioni di rete.

FIGURA 14.3

Modifica delle impostazioni di rete con NetworkManager.

Impostazione degli alias degli indirizzi IP


È possibile collegare più indirizzi IP a una singola interfaccia di rete. Nello stesso
Schermata NetworkManager, questa operazione viene eseguita semplicemente facendo clic sul segno più (+) nella parte inferiore di
nella casella Indirizzi e aggiungendo le nuove informazioni sull'indirizzo IP. Ecco alcune cose che tu
dovrebbe sapere come aggiungere alias indirizzo:

■È richiesta una maschera di rete per ogni indirizzo, ma non è richiesto un gateway.
■ Il pulsante Applica rimane disattivato finché non si includono informazioni valide nei campi.
■ Non è necessario che il nuovo indirizzo si trovi sulla stessa sottorete dell'originale
indirizzo, anche se ascolta il traffico sulla stessa rete fisica.

356

Pagina 397

Capitolo 14: Amministrazione della rete

Dopo aver aggiunto l'indirizzo 192.168.99.1 alla mia interfaccia cablata, eseguire ip addr show
p4p1 mostra la seguente indicazione dei due indirizzi IP sull'interfaccia:

2: p4p1: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500


qdisc pfifo_fast stato UP gruppo predefinito qlen 1000
link / etere 00: 1b: 21: 0a: e8: 5e brd ff: ff: ff: ff: ff: ff
inet 192.168.0.187/24 brd 192.168.0.255 ambito globale p4p1
valid_lft per sempre preferito_lft per sempre
inet 192.168.99.1/24 brd 192.168.99.255 scope globale p4p1
valid_lft per sempre preferito_lft per sempre

Per informazioni sulla configurazione degli alias direttamente nei file di configurazione, fare riferimento alla sezione
"Impostazione delle interfacce di rete alias" più avanti in questo capitolo.

Impostazione dei percorsi


Quando richiedi una connessione a un indirizzo IP, il tuo sistema controlla il tuo routing
tabella per determinare il percorso su cui connettersi a quell'indirizzo. Le informazioni vengono inviate nel file
forma di pacchetti. I pacchetti vengono instradati come segue:

■ Un pacchetto destinato al sistema locale viene inviato all'interfaccia lo.


■ Un pacchetto destinato a un sistema sulla rete locale viene indirizzato attraverso la scheda NIC
direttamente al NIC del sistema destinatario previsto.
■ Un pacchetto destinato a qualsiasi altro sistema viene inviato al gateway (router) che lo dirige
il pacchetto all'indirizzo previsto su Internet.

Ovviamente quello che ho descritto qui è uno dei casi più semplici. Potresti, infatti, averlo
più NIC con più interfacce a reti diverse. Potresti anche avere più file
router sulla rete locale che forniscono percorsi a particolari reti private.

Ad esempio, supponi di avere un router (o un altro sistema che funge da router) sul tuo
rete locale; puoi aggiungere un percorso personalizzato a quel router tramite NetworkManager. Usando il
Nell'esempio di NetworkManager mostrato in precedenza, scorrere la pagina verso il basso per visualizzare la casella Percorsi.
Quindi aggiungi le seguenti informazioni: 14
■ Indirizzo : l'indirizzo di rete della sottorete a cui si viene instradati. Ad esempio, se il file
router (gateway) fornirà l'accesso a tutti i sistemi sulla rete 192.168.100,
aggiungere l'indirizzo 192.168.100.0.
■ Netmask: aggiungere la netmask necessaria per identificare la sottorete. Ad esempio, se
il router fornisce l'accesso all'indirizzo di classe C 192.168.100, è possibile utilizzare l'estensione
maschera di rete 255.255.255.0.
■ Gateway: aggiungere l'indirizzo IP del router (gateway) che fornisce l'accesso a
nuova rotta. Ad esempio, se il router ha un indirizzo IP sulla rete 192.168.0
di 192.168.0.199, aggiungi tale indirizzo in questo campo.

357

Pagina 398

Parte IV: diventare un amministratore di server Linux


Fare clic su Applica per applicare le nuove informazioni di instradamento. Potrebbe essere necessario riavviare l'interfaccia
affinché ciò abbia effetto (ad esempio, ifup p4p1). Digita route -n per assicurarti che il nuovo file
le informazioni di instradamento sono state applicate.

# route -n
Tabella di routing IP del kernel
Flag di Genmask del gateway di destinazione Rif. Metrica Usa Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 1024 0 0 p4p1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 p4p1
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 p4p1
192.168.100.0 192.168.0.199 255.255.255.0 UG 1 0 0 p4p1

Nell'esempio appena mostrato, il gateway predefinito è 192.168.0.1. Tuttavia, tutti i pacchetti


destinati alla rete 192.168.100 vengono instradati attraverso il gateway host all'indirizzo IP
192.168.0.199. Presumibilmente, quell'host ha un'interfaccia di rete che affronta 192.168.100
rete ed è impostato per consentire ad altri host di instradarsi attraverso di essa a quella rete.

Vedere la sezione "Impostazione di percorsi personalizzati" più avanti in questo capitolo per informazioni su come eseguire l'impostazione
instrada direttamente nei file di configurazione.

Configurazione di una connessione proxy di rete


Se il tuo sistema desktop è in esecuzione dietro un firewall aziendale, potresti non avere direct
accesso a Internet. Invece, potresti dover raggiungere Internet tramite un server proxy.
Invece di consentire l'accesso completo a Internet, un server proxy ti consente di effettuare richieste
solo per alcuni servizi al di fuori della rete locale. Il server proxy quindi li passa
richieste su Internet o altra rete.

I server proxy in genere forniscono l'accesso ai server Web (http: // e https: // ) e FTP
server (ftp: //). Tuttavia, un server proxy che supporta SOCKS può fornire un servizio proxy
per diversi protocolli al di fuori della rete locale. (SOCKS è un protocollo di rete creato per
consentire ai computer client di accedere a Internet tramite un firewall. È possibile identificare un proxy
server in NetworkManager e far passare le comunicazioni per i protocolli selezionati
server (selezionare Proxy di rete nella finestra Impostazioni di rete).

Invece di identificare un server proxy per le interfacce di rete (tramite NetworkManager), tu


puoi configurare il tuo browser per utilizzare un server proxy direttamente modificando le tue preferenze di Firefox-
impone di utilizzare un server proxy. Ecco come definire un server proxy dalla finestra di Firefox:

1. Da Firefox, seleziona Modifica preferenze. Viene visualizzata la finestra Preferenze di Firefox.

2. Nella finestra Preferenze di Firefox, fare clic sul pulsante Avanzate.

3. Scegliere la scheda Rete e scegliere il pulsante Impostazioni sotto Connessione


intestazione. Viene visualizzata la finestra Configura proxy.

4. Puoi provare a rilevare automaticamente le impostazioni del proxy o, se imposti il ​proxy in


NetworkManager, puoi scegliere di utilizzare le impostazioni del proxy di sistema. Puoi anche selezionare
Configurazione proxy manuale, inserire le seguenti informazioni e fare clic su OK.

358

Pagina 399

Capitolo 14: Amministrazione della rete

■ Proxy HTTP : l'indirizzo IP del computer che fornisce il servizio proxy. Questo
fa in modo che tutte le richieste di pagine Web (protocollo http: //) vengano inoltrate a
server proxy.
■ Porta : la porta associata al servizio proxy. Per impostazione predefinita, il numero di porta è
3128, ma può differire.
■ Usa questo server proxy per tutti i protocolli: selezionare questa casella per utilizzare lo stesso proxy
server e porta associati al proxy HTTP per tutte le altre richieste di servizio.
Ciò fa sì che le altre impostazioni del proxy siano disattivate. (Invece di selezionare questa casella,
puoi impostare questi servizi proxy separatamente.)
■ Nessun proxy per: lasciando localhost e l'indirizzo IP locale (127.0.0.1) in questo
box, qualsiasi richiesta al sistema locale che altrimenti verrebbe indirizzata al
il server proxy va direttamente al sistema locale.

La Figura 14.4 mostra un esempio della finestra Configura proxy compilata per configurare un file
connessione a un server proxy situato all'indirizzo IP 10.0.100.254 per tutti i protocolli. Dopo di te
fare clic su OK, tutte le richieste dal browser Firefox a posizioni esterne al sistema locale sono
diretto al server proxy, che inoltra tali richieste al server appropriato.

FIGURA 14.4

Configurazione di Firefox per l'utilizzo di un server proxy.


14

359

Pagina 400

Parte IV: diventare un amministratore di server Linux

Configurazione della rete dalla riga di comando


Mentre NetworkManager fa un ottimo lavoro di rilevamento automatico delle reti cablate o di presentazioni
te con elenchi di reti wireless a cui connettersi per il tuo laptop, è stato aggiunto solo di recente
caratteristiche per configurazioni di rete più complesse sui server. Pertanto, a volte tu
è necessario abbandonare la GUI di NetworkManager e andare direttamente ai comandi e alla configurazione
file per ottenere le funzionalità di rete desiderate. Queste sono alcune delle funzionalità di rete in
RHEL e Fedora descritti nelle prossime sezioni:

■ Configurazione di base: vedere come utilizzare nmtui o system-config-network


comandi per configurare la rete di base con un'interfaccia basata su menu da una shell.
Questi strumenti forniscono un'interfaccia intuitiva per la configurazione della rete sui server
che non hanno un'interfaccia grafica per l'esecuzione di strumenti basati su GUI.
■ File
di configurazione: consente di comprendere i file di configurazione associati a Linux
networking e come configurarli direttamente.
■ Collegamento del canale Ethernet: consente di configurare il collegamento del canale Ethernet (rete multipla
schede in ascolto sullo stesso indirizzo IP).
■ Comandi di configurazione di rete: utilizzare comandi come nmcli per la configurazione
networking dalla shell.

Molti server non dispongono di interfacce grafiche disponibili. Quindi, se vuoi configurare
networking, devi essere in grado di farlo dalla shell. Un modo per farlo è modificare
file di configurazione di rete direttamente. Un altro è usare i comandi basati su menu che consentono
premi i tasti freccia e Tab per navigare e i moduli che compili per configurare la tua rete
interfaccia.

Prima che esistesse NetworkManager, il comando system-config-network lanciava un file


interfaccia grafica che era il modo principale per configurare la rete nella precedente Fedora
versioni e Red Hat Enterprise Linux fino a RHEL 6. La rete di configurazione del sistema
command è stato sostituito dal comando nmtui (o NetworkManager Text User
Interface) in RHEL 7. Fornisce un'interfaccia basata su menu che viene eseguita nella shell. Come root,
digitate nmtui per visualizzare una schermata simile a quella presentata nella Figura 14.5.

Utilizzare i tasti freccia e il tasto Tab per spostarsi nell'interfaccia. Con l'oggetto che desideri
selezionare evidenziato, premere Invio per selezionarlo. L'interfaccia è limitata alla modifica del seguente
tipi di informazioni: Modifica o Attiva una connessione (schede di interfaccia di rete) e Imposta
nome host del sistema (nome host e configurazione DNS).

Modifica di una connessione


Dalla schermata NetworkManager TUI visualizzata, ecco come modificare un file
connessione.
360

Pagina 401

Capitolo 14: Amministrazione della rete

FIGURA 14.5

Configurazione della rete con NetworkManager TUI.

1. Modifica una connessione: con Modifica una connessione evidenziato, premere Invio. Una lista di
vengono visualizzati i dispositivi di rete (generalmente schede Ethernet cablate o wireless), insieme a
qualsiasi rete wireless a cui ti sei connesso in passato.
2. Dispositivi di rete: evidenzia uno dei dispositivi di rete (nel mio caso, ho scelto un file
interfaccia Ethernet cablata enp0s25) e premere Invio.

3. Configurazione IPv4: passare al pulsante di presentazione Configurazione IPv4 e premere Invio.


La finestra Modifica connessione che appare consente di modificare le informazioni relative a
il dispositivo di rete selezionato.
4. Passare a Manuale: è possibile lasciare i campi Nome profilo e Dispositivo così come sono.
Per impostazione predefinita, Automatico è abilitato. Automatico è ciò che consente l'interfaccia di rete
per accedere automaticamente alla rete se è disponibile un servizio DHCP. Per entrare 14
indirizzo e altre informazioni da soli, utilizzare il tasto Tab per evidenziare l'Automatico
campo e premere la barra spaziatrice; quindi utilizzare i tasti freccia per evidenziare Manuale e
premere Invio.

5. Indirizzi: inserire ora le informazioni sull'indirizzo (indirizzo IP e maschera di rete). Per


esempio, 192.168.0.150/24 (dove 24 è l'equivalente CIDR per 255.255.255.0
maschera di rete).

6. Gateway: digitare l'indirizzo IP del computer o router che fornisce il


rotta verso Internet.

7. Server DNS: digitare gli indirizzi IP di uno o due server DNS per indicare a
sistema dove andare per tradurre i nomi host richiesti in indirizzi IP.

361

Pagina 402

Parte IV: diventare un amministratore di server Linux

8. Cerca domini : le voci Cerca domini vengono utilizzate quando richiedi un host
da un'applicazione senza utilizzare un nome di dominio completo. Ad esempio, se
digiti ping host1 con un percorso di ricerca example.com, il comando proverebbe
per inviare pacchetti ping a host1.example.com.
9. Routing: è possibile impostare percorsi personalizzati evidenziando Modifica nel campo Routing e
premendo Invio. Compilare Destinazione / Prefisso e Hop successivo e selezionare OK per salvare
il nuovo percorso personalizzato.
10. Altre selezioni : considerare l'impostazione delle altre selezioni sullo schermo
"Connetti automaticamente" evidenziando la casella e utilizzando la barra spaziatrice per aggiungere un file
X alla scatola. Ciò garantisce che l'interfaccia si attivi automaticamente ogni volta che il file
avvia il sistema.

La Figura 14.6 mostra la schermata dopo che è stato selezionato Manuale e le informazioni sull'indirizzo
è stato compilato.

FIGURA 14.6

Impostare gli indirizzi IP statici selezionando Manuale dalla schermata Modifica connessioni.

Tab per il pulsante OK e premere la barra spaziatrice. Quindi fare clic su Esci per uscire.

Comprensione dei file di configurazione di rete


Sia che tu modifichi la configurazione di rete utilizzando NetworkManager o nmtui, la maggior parte dei file
gli stessi file di configurazione vengono aggiornati. In Fedora e RHEL, interfacce di rete e custom

362

Pagina 403

Capitolo 14: Amministrazione della rete

le rotte sono impostate in file nella directory / etc / sysconfig / network-scripts. Altre reti
le impostazioni di lavoro sono memorizzate in altri file nella directory / etc.

Invece di usare alcuni degli strumenti appena descritti, puoi configurare la rete in Linux con
modificando direttamente i file di configurazione. Se modifichi questi file direttamente, dovresti considerare
disattivando il servizio NetworkManager e attivando il servizio di rete. La ragione
per fare ciò, NetworkManager a volte sovrascrive i file configurati manualmente
(dalle informazioni raccolte da DHCP o quando si utilizza la GUI di NetworkManager).

Per disattivare NetworkManager (immediatamente e permanentemente) su una Fedora RHEL 6 o precedente


sistema, digita quanto segue come root (fallo su una console perché questa procedura interrompe il tuo
networking se si è connessi tramite la rete):

# servizio NetworkManager stop


# riavvio della rete di servizio
# chkconfig NetworkManager disattivato
# chkconfig rete attiva

Per RHEL 7 e sistemi Fedora più recenti che utilizzano il comando systemctl per avviare, arrestare,
abilitare e disabilitare i servizi, è possibile digitare quanto segue:

# systemctl arresta NetworkManager.service


# systemctl disabilita NetworkManager.service
# systemctl riavvia network.service
# systemctl abilita network.service

A questo punto, puoi tranquillamente utilizzare le seguenti sezioni per aiutarti a modificare direttamente la rete
file di configurazione del lavoro. Trova le descrizioni di questi file in / usr / share / doc /
initscripts * / sysconfig.txt.
File dell'interfaccia di rete
File di configurazione per ogni interfaccia di rete cablata, wireless, ISDN, dialup o altro
sono rappresentati da file nella directory / etc / sysconfig / network-scripts che iniziano
con interfaccia ifcfg . L' interfaccia è sostituita dal nome dell'interfaccia di rete. 14
In Red Hat Enterprise Linux 6 e nei sistemi Fedora precedenti, le interfacce di rete hanno nomi
come eth0, eth1, eth2 (per ciascuna interfaccia di rete cablata), wlan0 (per il primo file wireless
interface) e ppp0 (per la prima interfaccia dial-up point-to-point). In RHEL 6, il
il file di configurazione per la prima interfaccia Ethernet sarebbe ifcfg-eth0. Ecco un esempio
di un file ifcfg-eth0 per una connessione DHCP cablata:

DISPOSITIVO = eth0
HWADDR = F0: DE: F1: 28: 46: D9
TIPO = Ethernet
BOOTPROTO = dhcp
ONBOOT = sì
USERCTL = no

363

Pagina 404

Parte IV: diventare un amministratore di server Linux

In questo esempio ifcfg-eth0, le prime tre righe impostano il nome del dispositivo, l'indirizzo MAC e
il tipo di interfaccia a Ethernet. La variabile BOOTPROTO è impostata su dhcp, che lo causa
per richiedere informazioni sull'indirizzo da un server DHCP. Con ONBOOT = sì, l'interfaccia si avvia
automaticamente all'avvio del sistema. Mantiene un'altra impostazione nell'esempio ifcfg-eth0
gli utenti regolari non possono avviare e arrestare l'interfaccia (USERCTL = no).

Ecco come potrebbe apparire un file ifcfg-eth1 per un'interfaccia Ethernet cablata che utilizza
indirizzi IP statici:

DISPOSITIVO = eth1
HWADDR = 00: 1B: 21: 0A: E8: 5E
TIPO = Ethernet
BOOTPROTO = nessuno
ONBOOT = sì
USERCTL = no
IPADDR = 192.168.0.140
NETMASK = 255.255.255.0
GATEWAY = 192.168.0.1

In questo esempio ifcfg-eth1, perché si tratta di impostare l'indirizzo e altre informazioni


staticamente, BOOTPROTO è impostato su nessuno. Sono necessarie altre differenze per impostare l'indirizzo
informazioni che vengono normalmente raccolte da un server DHCP. In questo caso, l'indirizzo IP è
impostato su 192.168.0.140, con una maschera di rete di 255.255.255.0. Il GATEWAY = 192.168.0.1
identifica l'indirizzo del router su Internet.

Ecco un paio di altre impostazioni che potrebbero interessarti:

■ PEERDNS: l' impostazione di PEERDNS = no impedisce a DHCP di sovrascrivere il file / etc /


file resolv.conf. Ciò consente di impostare i server DNS utilizzati dal sistema
senza timore che tali informazioni vengano cancellate dai dati forniti dal DHCP
server.
■ DNS ? —Se un file ifcfg è gestito da NetworkManager, imposta l'indirizzo
dei server DNS che utilizzano DNS ? inserimenti. Ad esempio, DNS1 = 192.168.0.2 causa
quell'indirizzo IP da scrivere in /etc/resolv.conf come primo server DNS
in uso nel sistema. Puoi avere più DNS ? voci (DNS2 =, DNS3 =,
e così via).

Dopo aver creato un file ifcfg- *, puoi spostare l'interfaccia su e giù individualmente
utilizzando i comandi ifup e ifdown, invece di attivare o disattivare tutte le interfacce
insieme. Ad esempio, puoi portare l'interfaccia localhost lo (ifcfg-lo) su e giù
utilizzando i seguenti comandi:

# ifdown lo
# ifconfig
# ifup lo
# ifconfig

364
Pagina 405

Capitolo 14: Amministrazione della rete

I comandi appena mostrati disattivano l'interfaccia di rete di loopback (ifdown lo) e poi
ti fa vedere che non è attivo (ifconfig). Dopodiché, lo riaccendi (ifup
lo) e ricontrolla per vedere che è acceso (ifconfig).

Oltre a configurare le interfacce di rete primarie, è anche possibile creare file in


/ etc / sysconfig / network-scripts directory che può essere utilizzata per impostare alias (multiple
Indirizzi IP per la stessa interfaccia), interfacce legate (più NIC in ascolto sullo stesso
indirizzo) e percorsi personalizzati. Questi sono descritti più avanti in questa sezione.

Altri file di rete


Oltre ai file dell'interfaccia di rete, ci sono altri file di configurazione di rete che
puoi modificare direttamente per configurare la rete Linux. Ecco alcuni di questi file.

/ etc / sysconfig / file di rete


Le impostazioni a livello di sistema associate alla rete locale possono essere incluse nel file
/ etc / sysconfig / file di rete. Il nome host del sistema era comunemente impostato in questo file
a RHEL 6, ma è possibile aggiungere anche altre impostazioni a questo file. Ecco un esempio di
contenuto di un file / etc / sysconfig / network:

GATEWAY = 192.168.0.1

Nell'esempio precedente il GATEWAY predefinito è impostato su 192.168.0.1. Diverse interfacce possono


utilizzare indirizzi GATEWAY diversi. Per altre impostazioni che possono essere visualizzate nei file di rete,
controlla il file sysconfig.txt nella directory / usr / share / doc / initscripts- *.

/ etc / hostname file


In RHEL 7 e nelle ultime versioni di Fedora, il nome host del sistema è memorizzato nel file
/ etc / hostname file. Ad esempio, se il file includeva il nome host host1.example.
com, quel nome host verrà impostato ogni volta che il sistema viene avviato. Puoi controllare come il file
il nome host corrente viene impostato in qualsiasi momento digitando il comando hostname.

/ etc / hosts file 14


Prima della creazione del DNS, la traduzione dei nomi host in indirizzi IP veniva eseguita tramite trasferimento
un singolo file hosts. Mentre c'erano solo poche dozzine e poi poche centinaia di host
Internet, questo approccio ha funzionato abbastanza bene. Ma con la crescita di Internet, i singoli host
il file è diventato non scalabile e il DNS è stato inventato.

Il file / etc / hosts esiste ancora sui sistemi Linux. Può ancora essere utilizzato per mappare gli indirizzi IP
ai nomi host. Il file / etc / hosts è un modo per impostare nomi e indirizzi per un piccolo locale
rete o semplicemente creare alias, per rendere più facile l'accesso ai sistemi che usi sempre.

Ecco un esempio di un file / etc / hosts:

127.0.0.1 localhost localhost.localdomain


:: 1 localhost localhost.localdomain

365

Pagina 406

Parte IV: diventare un amministratore di server Linux

192.168.0.201 node1.example.com node1 joe


192.168.0.202 node2.example.com node2 sally

Le prime due righe (127.0.0.1 e :: 1) impostano gli indirizzi per il sistema locale. Il IPv4
l'indirizzo per l'host locale è 127.0.0.1; l'indirizzo IPv6 per l'host locale è :: 1. Là
sono anche voci per due indirizzi IP. È possibile raggiungere il primo indirizzo IP (192.168.0.201) tramite
i nomi node1.example.com, node1 o joe. Ad esempio, digitando ping joe si ottiene
pacchetti inviati a 192.168.0.201.

/etc/resolv.conf file
I server DNS e i domini di ricerca sono impostati nel file /etc/resolv.conf. Se NetworkManager
è abilitato e in esecuzione, non modificare direttamente questo file. Usi il DNS ? = voci da
ifcfg- *, NetworkManager sovrascrive il file /etc/resolv.conf in modo da perdere
tutte le voci che aggiungi a quel file. Ecco un esempio del file /etc/resolv.conf che era
modificato da NetworkManager.

# Generato da NetworkManager
server dei nomi 192.168.0.2
server dei nomi 192.168.0.3

Ogni voce del server dei nomi identifica l'indirizzo IP di un server DNS. L'ordine è l'ordine in
quali i server DNS vengono controllati. È normale avere due o tre voci del server dei nomi, in
caso il primo non è disponibile. Più di questo e può richiedere troppo tempo per un irrisolvibile
hostname da controllare per ogni server.

Un altro tipo di voce che puoi aggiungere a questo file è una voce di ricerca. Una voce di ricerca te lo consente
indicano i domini in cui eseguire la ricerca quando un nome host viene richiesto dal nome di base anziché
il suo intero nome di dominio completo. Puoi avere più voci di ricerca identificando
uno o più nomi di dominio dopo la parola chiave di ricerca. Per esempio:

cerca example.com example.org example.net

Le opzioni di ricerca sono separate da spazi o tabulazioni.

/etc/nsswitch.conf
Le impostazioni nel file /etc/nsswitch.conf determinano che la risoluzione del nome host viene eseguita
cercando prima il file locale / etc / hosts (file) e poi i server DNS elencati in
/etc/resolv.conf file (dns). Questo è il modo in cui la voce hosts nel file /etc/resolv.conf
appare in Red Hat Enterprise Linux:

host: file dns

Puoi aggiungere altre posizioni, come Network Information Service (nis o nisplus)
database, per interrogare il nome host per la risoluzione dell'indirizzo IP. Puoi anche modificare l'ordine in
cui vengono interrogati i diversi servizi. È possibile controllare la risoluzione dell'host-indirizzo IP
funziona correttamente utilizzando diversi comandi.

366

Pagina 407

Capitolo 14: Amministrazione della rete

Se vuoi controllare che i tuoi server DNS vengano interrogati correttamente, puoi usare il
comandi host o dig. Per esempio:

$ host redhat.com
redhat.com ha l'indirizzo 209.132.183.181
La posta di redhat.com è gestita da 5 mx1.redhat.com.
La posta di redhat.com è gestita da 10 mx2.redhat.com.
$ dig redhat.com
; << >> DiG 9.9.6-RedHat-9.9.6-4.fc21 << >> redhat.com
;; opzioni globali: + cmd
;; Ho la risposta:
;; - >> HEADER << - codice operativo: QUERY, stato: NOERROR, id: 54399
;; flag: qr rd ra; DOMANDA: 1, RISPOSTA: 1, AUTORITÀ: 0, ULTERIORI: 0
;; SEZIONE DOMANDA:
; redhat.com. IN UN
;; SEZIONE RISPOSTA:
redhat.com. 60 IN A 209.132.183.181
;; Tempo di query: 105 msec
;; SERVER: 8.8.128.23 # 53 (8.8.128.23)
;; QUANDO: domenica 24 aprile 08:32:32 2016
;; DIMENSIONE MSG rcvd: 44

Per impostazione predefinita, il comando host produce un output più semplice per le query DNS. Mostra il file
Indirizzo IP per redhat.com e nomi dei server di posta (record MX) che servono
redhat.com. Il comando dig mostra informazioni simili a quelle che appaiono nei file
che contengono record DNS. La sezione QUESTION dell'output mostra che l'indirizzo sec-
zione ha chiesto l'indirizzo di redhat.com e la sezione RISPOSTA ha mostrato la risposta
(209.132.183.181). È inoltre possibile visualizzare l'indirizzo del server DNS su cui è stata eseguita la query.

I comandi host e dig vengono utilizzati solo per interrogare i server DNS. Non controllano il file
nsswitch.conf per trovare altri posti in cui interrogare, come il file hosts locale. Per questo, tu
dovrebbe usare il comando getent. Per esempio:

# getent ospita node1


192.168.0.201 node1 14
Questo esempio getent trova un host denominato node1 che è stato inserito nel mio locale
/ etc / hosts file. (Il comando getent può essere utilizzato per interrogare qualsiasi impostazione di informazioni in
il file nsswitch.conf. Ad esempio, digitando getent passwd root viene visualizzata la voce per
l'account utente root nel file locale, ma può anche interrogare un database LDAP remoto per l'utente
informazioni se è stata configurata tale funzione, come descritto nel Capitolo 11, "Gestione
Profili utente.")

Impostazione delle interfacce di rete alias


A volte potresti volere che la tua scheda di interfaccia di rete ascolti su più indirizzi IP.
Ad esempio, se stavi configurando un server web che serviva contenuto protetto (https)
per più domini (example.com, example.org e così via), ogni dominio lo farebbe

367

Pagina 408

Parte IV: diventare un amministratore di server Linux

richiedono un indirizzo IP separato (associato a un certificato separato). In quel caso, invece


di aggiungere più schede di interfaccia di rete al computer, potresti semplicemente creare
più alias su una singola scheda NIC.

Per creare un'interfaccia di rete alias in RHEL 6 e versioni precedenti di Fedora, devi solo farlo
creare un altro file ifcfg. Seguendo l'esempio di un'interfaccia eth0 su un sistema RHEL,
è possibile creare un'interfaccia eth0: 0 associata alla stessa scheda di interfaccia di rete. Per
fai questo, crea un file nella directory / etc / sysconfig / network-scripts chiamato
ifcfg-eth0: 0 che contiene informazioni come le seguenti:

DISPOSITIVO = eth0: 0
ONPARENT = sì
IPADDR = 192.168.0.141
NETMASK = 255.255.255.0

Il codice di esempio crea un alias per l'interfaccia di rete eth0 chiamato eth0: 0. Anziché
di ONBOOT, la voce ONPARENT dice di aprire questa interfaccia se il genitore (eth0) è
avviato e ascolta all'indirizzo 192.168.0.141. Puoi richiamare quell'interfaccia digitando ifup
eth0: 0. Puoi quindi verificare che l'interfaccia sia stata visualizzata utilizzando il comando ip:

$ ip addr mostra eth0


2: eth0: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link / etere f0: de: f1: 28: 46: d9 brd ff: ff: ff: ff: ff: ff
inet 192.168.0.140/24 brd 192.168.0.255 scope eth0 globale
inet 192.168.0.141/24 brd 192.168.0.255 scope globale secondario eth0: 0
inet6 fe80 :: f2de: f1ff: fe28: 46d9 / 64 scope link
valid_lft per sempre preferito_lft per sempre

Puoi vedere che la scheda di interfaccia di rete rappresentata da eth0 è in ascolto su due indirizzi:
192.168.0.140 (eth0) e 192.168.0.141 (eth0: 0). Quindi questo sistema risponderà ai pacchetti des-
per uno di questi due indirizzi. Puoi aggiungere più indirizzi IP a quell'interfaccia tramite
creando più ifcfg-eth0 :? file (ifcfg-eth0: 1, ifcfg-eth0: 2 e così via).

In RHEL 7 e Fedora 21, puoi creare alias direttamente nel file ifcfg principale per
un alias. Ad esempio, un indirizzo principale (192.168.0.187) e uno alias (192.168.99.1) per un file
L'interfaccia NIC denominata p4p1 potrebbe essere rappresentata dalle seguenti impostazioni dell'indirizzo nel file
file ifcfg-p4p1:

IPADDR = 192.168.0.187
PREFISSO = 24
IPADDR1 = 192.168.99.1
PREFISSO1 = 24

Configurazione del collegamento del canale Ethernet


Il channel bonding Ethernet consente di avere più di una scheda di interfaccia di rete su un file
computer associato a un unico indirizzo IP. Ci sono diversi motivi che potresti desiderare
per farlo:

368

Pagina 409
Capitolo 14: Amministrazione della rete

■ Alta disponibilità: più schede NIC sullo stesso indirizzo IP possono garantire che, se ce ne sono una
subnet si interrompe o si interrompe una NIC, l'indirizzo può ancora essere raggiunto su una connessione NIC
collegato a un'altra sottorete.
■ Prestazioni:se c'è troppo traffico di rete per essere gestito da una scheda NIC, tu
può diffondere il traffico su più NIC.

In Red Hat Enterprise Linux e Fedora su un computer con più NIC, puoi eseguire la configurazione
Collegamento del canale Ethernet creando alcuni file ifcfg e caricando il modulo necessario.
Puoi iniziare con un file di unione (ad esempio, ifcfg-bond0), quindi puntare più file
ifcfg-eth ? file su quell'interfaccia di legame. Quindi puoi caricare il modulo bond.

A seconda del tipo di incollaggio che desideri eseguire, puoi impostare la tua interfaccia di incollaggio
a diverse modalità. Utilizzando la variabile BONDING_OPTS, si definisce la modalità e altro
opzioni di incollaggio (che vengono tutte passate al modulo di incollaggio). Puoi leggere di
modulo bonding digitando modinfo bonding o installando il pacchetto kernel-docs-
age e leggendo il file bonding.txt da / usr / share / doc / kernel-doc * /
Documentazione / networking / directory.

Ecco un esempio del file che definisce un'interfaccia vincolata. Il file in questo esempio è
/ etc / sysconfig / network-scripts / ifcfg-bond0:

DISPOSITIVO = bond0
ONBOOT = sì
IPADDR = 192.168.0.50
NETMASK = 255.255.255.0
BOOTPROTO = nessuno
BONDING_OPTS = "mode = active-backup"

L'interfaccia bond0 in questo esempio utilizza l'indirizzo IP 192.168.0.50. Si avvia


avvio. BONDING_OPTS imposta la modalità bonding su active-backup. Ciò significa che
solo una NIC è attiva alla volta e la NIC successiva prende il sopravvento solo quando la precedente
uno fallisce (failover). Nessuna scheda di interfaccia di rete è associata all'interfaccia bond0
ancora. Per questo, è necessario creare opzioni file ifcfg separate. Ad esempio, crea un file
/ etc / sysconfig / network-scripts / ifcfg-eth0 simile al seguente
14
(quindi creare eth1, eth2, eth3 e così via per ogni NIC che si desidera utilizzare nel collegamento
interfaccia):

DISPOSITIVO = eth0
MASTER = bond0
SLAVE = sì
BOOTPROTO = nessuno
ONBOOT = sì

Con l'interfaccia eth0 utilizzata come parte dell'interfaccia bond0, non esiste alcun indirizzo IP
assegnato. Questo perché l'interfaccia eth0 utilizza l'indirizzo IP dell'interfaccia bond0
definendosi come slave (SLAVE = yes) di bond0 (MASTER = bond0).

369

Pagina 410

Parte IV: diventare un amministratore di server Linux

L'ultima cosa che vuoi fare è assicurarti che l'interfaccia bond0 sia impostata per usare il legame
modulo. Per farlo, crea un file /etc/modprobe.d/bonding.conf che contiene il file
seguente voce:

legame alias bond0

Poiché tutte le interfacce sono impostate su ONBOOT = yes, l'interfaccia bond0 si avvia e tutti i file
eth? le interfacce sono disponibili quando sono necessarie.

Impostazione di percorsi personalizzati


In una semplice configurazione di rete, comunicazioni destinate alla rete locale
vengono indirizzate all'interfaccia appropriata sulla LAN, mentre le comunicazioni per gli host
lato la tua LAN va a un gateway predefinito da inviare agli host remoti. In alternativa, tu
può impostare percorsi personalizzati per fornire percorsi alternativi a reti specifiche.
Per impostare una rotta personalizzata in Fedora e RHEL, creare un file di configurazione in
directory / etc / sysconfig / network-scripts. In quel percorso, definisci:

■ GATEWAY? : L'indirizzo IP del nodo sulla rete locale che fornisce l'estensione
route alla sottorete rappresentata dalla route statica.
■ INDIRIZZO? - L'indirizzo IP che rappresenta la rete che può essere raggiunta da
percorso statico.
■ NETMASK? —La netmask che determina quale parte dell'INDIRIZZO? rappresenta
la rete e che rappresenta gli host che possono essere raggiunti su quella rete.

Il nome di ogni file di route personalizzato è route-interface . Quindi, ad esempio, un percorso personalizzato
che può essere raggiunto tramite la tua interfaccia eth0 si chiamerebbe route-eth0. Potresti
avere più percorsi personalizzati in quel file, con ogni voce di percorso che sostituisce ? con il
numero di interfaccia. Per esempio:

INDIRIZZO 0 = 192.168.99.0
NETMASK0 = 255.255.255.0
GATEWAY0 = 192.168.0.5

In questo esempio, qualsiasi pacchetto destinato a un host sulla rete 192.168.99 sarebbe
inviato tramite l'interfaccia eth0 locale e diretto al nodo gateway in 192.168.0.5.
Presumibilmente, quel nodo fornirebbe un percorso verso un'altra rete contenente host in
Intervallo di indirizzi 192.168.99. Questo percorso avrebbe effetto quando l'interfaccia di rete eth0
è stato riavviato.

Per verificare che il percorso funzioni dopo aver riavviato l'interfaccia di rete, è possibile digitare
il seguente:

# percorso
Tabella di routing IP del kernel
Destination Gateway Genmask Flag Metrico Ref Usa Iface

370

Pagina 411

Capitolo 14: Amministrazione della rete

predefinito 192.168.0.1 0.0.0.0 UG 0 0 0 eth0


192.168.0.0 * 255.255.255.0 U 1 0 0 eth0
192.168.99.0 192.168.0.5 255.255.255.0 UG 0 0 0 eth0

L'output del comando route -n mostra che la route predefinita (qualsiasi cosa non
destinato alla rete locale 192.168.0 o alla rete 192.168.99) avviene tramite 192.168.0.1
indirizzo. Tutti i pacchetti destinati alla rete 192.168.99 vengono indirizzati tramite l'indirizzo
192.168.0.5.

Se si desidera aggiungere più percorsi personalizzati, è possibile aggiungerli a questo stesso route-eth0
file. La prossima serie di informazioni sarebbe denominata ADDRESS1, NETMASK1, GATEWAY1,
e così via.

Configurazione della rete nell'azienda


Finora, la configurazione di rete descritta in questo capitolo è stata incentrata sulla configurazione
sistemi singoli per connettersi a una rete. Le funzionalità disponibili in Linux possono andare ben oltre
che fornendo software che supporti l'effettiva infrastruttura di rete necessaria da
computer host per comunicare.

Questa sezione presenta alcuni dei tipi di servizi di infrastruttura di rete disponibili
in grado in Linux. La piena implementazione di queste caratteristiche va oltre lo scopo di questo libro, ma
sappi che se ti trovi a dover gestire le funzionalità dell'infrastruttura di rete, questo
la sezione ti darà un'idea di come queste funzionalità sono implementate in Linux.

Configurazione di Linux come router


Se si dispone di più di un'interfaccia di rete su un computer (in genere due o più NIC),
puoi configurare Linux come router. Per far sì che ciò accada, tutto ciò che serve è un cambiamento in
un parametro del kernel che consente l'inoltro dei pacchetti. Per attivare il parametro ip_forward
eter immediatamente e temporaneamente, digita quanto segue come root:
14
# cat / proc / sys / net / ipv4 / ip_forward
0
# echo 1> / proc / sys / net / ipv4 / ip_forward
# cat / proc / sys / net / ipv4 / ip_forward
1

L'inoltro dei pacchetti (instradamento) è disabilitato per impostazione predefinita, con il valore di ip_forward impostato su 0.
Impostandolo a 1, l'inoltro dei pacchetti viene immediatamente abilitato. Per fare questo cambiamento perma-
nent, è necessario aggiungere quel valore al file /etc/sysctl.conf, in modo che appaia come segue:

net.ipv4.ip_forward = 1

Con quel file modificato come mostrato, ogni volta che il sistema si riavvia, il valore per ip_for-
ward viene reimpostato su 1. (Si noti che net.ipv4.ip_forward riflette la posizione effettiva del file

371

Pagina 412

Parte IV: diventare un amministratore di server Linux

ip_forward, meno / proc / sys e con punti che sostituiscono le barre. Si può cambiare
qualsiasi parametro del kernel impostato nella struttura della directory / proc / sys in questo modo.)

Quando un sistema Linux viene utilizzato come router, viene spesso utilizzato come firewall tra un privato
rete e una rete pubblica, come Internet. Se è così, potresti
desidera anche utilizzare lo stesso sistema come firewall che esegue la traduzione degli indirizzi di rete (NAT)
e fornisce il servizio DHCP, in modo che i sistemi sulla rete privata possano instradare attraverso
Sistema Linux che utilizza indirizzi IP privati. (Vedere il Capitolo 25, "Protezione di Linux su una rete",
per informazioni su come lavorare con le regole del firewall Linux utilizzando la funzione iptables.)

Configurazione di Linux come server DHCP


Non solo un sistema Linux può utilizzare un server DHCP per ottenere il suo indirizzo IP e altre informazioni, esso
può anche essere configurato per agire come un server DHCP stesso. Nella sua forma più semplice, un server DHCP può
distribuire indirizzi IP da un pool di indirizzi a qualsiasi sistema che lo richieda. Di solito, come
mai, il server DHCP distribuisce anche le posizioni dei server DNS e il gateway predefinito.

La configurazione di un server DHCP non è qualcosa che dovrebbe essere fatto senza pensarci due volte.
Non aggiungere un server DHCP su una rete che non è sotto il tuo controllo e che lo ha già
un server DHCP funzionante. Molti client sono configurati per ottenere informazioni sull'indirizzo da qualsiasi DHCP
server che lo distribuirà.

Il servizio DHCP è fornito dal pacchetto dhcp in Fedora e RHEL. Il servizio è denominato
dhcpd in RHEL 6 e dhcpd.service in RHEL 7 e l'ultima versione di Fedora.Il primario
il file di configurazione è /etc/dhcp/dhcpd.conf per le reti IPv4 (c'è un dhcpd6.conf
file nella stessa directory per fornire il servizio DHCP per le reti IPv6). Per impostazione predefinita, il file dhcpd
daemon è in ascolto sulla porta UDP 67, quindi ricordati di mantenere quella porta aperta sul tuo firewall.

Per configurare un server DHCP, è possibile copiare il file dhcpd.conf.sample da


/ usr / share / doc / dhcp-4 * e sostituire il file /etc/dhcp/dhcpd.conf. Poi
modificalo come preferisci. Prima di utilizzare quel file, si desidera modificare le opzioni del nome di dominio
per riflettere il tuo dominio e gli intervalli di indirizzi IP per adattarsi a quelli che stai utilizzando. I commenti in
il file ti aiuterà a farlo.

Quando installi alcuni servizi di virtualizzazione e cloud su un sistema Linux, per impostazione predefinita un file
Il server DHCP è configurato per te all'interno di quel sistema. Ad esempio, quando installi KVM e
avvia il servizio libvirtd in RHEL o Fedora, configura automaticamente un privato predefinito
rete nell'intervallo di indirizzi 192.168.122.0/24. Quando avvii macchine virtuali, lo sono
dati indirizzi IP in quell'intervallo. Quando installi e avvii il servizio Docker su quelli
Distribuzioni Linux, imposta allo stesso modo una rete privata e distribuisce indirizzi IP a
Contenitori Docker lanciati su quel sistema.

Configurazione di Linux come server DNS


In Linux, la maggior parte dei server DNS (Domain Name System) professionali vengono implementati utilizzando l'estensione
Servizio Berkeley Internet Name Domain (BIND). Questo è implementato in Fedora e RHEL

372

Pagina 413
Capitolo 14: Amministrazione della rete

installando i pacchetti bind, bind-utils e bind-libs. Per una maggiore sicurezza, alcuni
le persone installano il pacchetto bind-chroot.

Per impostazione predefinita, il bind viene configurato modificando il file /etc/named.conf. Da nome host a IP
la mappatura degli indirizzi viene eseguita nei file di zona situati nella directory / var / named. Se installi
il pacchetto bind-chroot, i file di configurazione di bind vengono spostati in / var / named /
directory chroot, che tenta di replicare i file da / etc e / var che sono
necessario per configurare bind, in modo che il demone denominato (che fornisce il servizio) sia
multato alla struttura della directory / etc / named / chroot.

Se sei interessato a provare bind, ti consiglio di provarlo prima configurando


DNS per una piccola rete domestica dietro un firewall come un modo per rendere più facile per le persone in
la tua famiglia per comunicare tra loro. È possibile bloccare gli indirizzi IP di
macchine di casa allegando gli indirizzi MAC dell'interfaccia di rete di ciascun computer
scheda a indirizzi IP specifici su un server DHCP, quindi mappare quei nomi agli indirizzi
in un server DNS.

Prima di creare un server DNS pubblico, tieni presente che è molto importante proteggere adeguatamente il tuo server DNS.
Un server DNS pubblico crackato può essere utilizzato per reindirizzare il traffico a qualsiasi server scelto dai malintenzionati. Quindi, se stai usando
quel server, sei in pericolo di essere presentato con siti che non sono i siti che pensi che siano.

Configurazione di Linux come server proxy


Un server proxy fornisce un mezzo per limitare il traffico di rete da una rete privata a
uno pubblico, come Internet. Tali server forniscono un modo eccellente per bloccare un file
laboratorio informatico presso una scuola o limitare i siti Web che i dipendenti possono visitare dal lavoro.

Impostando fisicamente Linux come router, ma configurandolo come server proxy, tutti i file
i sistemi sulla rete domestica o aziendale possono essere configurati per accedere a Internet utilizzando
solo alcuni protocolli e solo dopo aver filtrato il traffico. 14
Utilizzando Squid Proxy Server, fornito con la maggior parte dei sistemi Linux (pacchetto squid in formato
Fedora e RHEL), è possibile abilitare il sistema ad accettare richieste ai server web (HTTP e
HTTPS), file server (FTP) e altri protocolli. È possibile limitare i sistemi che possono essere utilizzati
il tuo server proxy (per nome host o indirizzo IP) e limita persino i siti che possono visitare
(per indirizzo specifico, intervallo di indirizzi, nome host o nomi di dominio).

Configurare un server proxy squid può essere semplice come installare il pacchetto squid, modificarlo
il file /etc/squid/squid.conf e l'avvio del servizio squid. Il file viene fornito con un file
configurazione minima consigliata. Tuttavia, potresti voler definire gli host (basati
su indirizzo IP o nome) a cui si desidera consentire l'utilizzo del servizio. Sono disponibili blacklist
con squid che ti consentono di negare l'accesso a interi gruppi di siti che potrebbero essere inappropriati
per i bambini da visitare.

373

Pagina 414

Parte IV: diventare un amministratore di server Linux

Sommario
La maggior parte delle connessioni di rete da un sistema desktop o laptop Linux può essere eseguita con poco o
nessun intervento da parte dell'utente. Se si utilizza NetworkManager su una connessione Ethernet cablata o wireless
da cui è possibile ottenere automaticamente informazioni, indirizzo e server necessari per l'avvio
un server DHCP.

Con l'interfaccia grafica di NetworkManager, puoi eseguire alcune configurazioni di rete, se


ti piace. È possibile impostare indirizzi IP statici e selezionare il server dei nomi e il computer del gateway
ers da usare. Per eseguire una configurazione di rete più manuale e complessa, prendere in considerazione la disattivazione
NetworkManager e lavorare più direttamente con i file di configurazione di rete.

I file di configurazione di rete in Linux possono essere utilizzati per impostare funzionalità più avanzate come
Collegamento del canale Ethernet. Per utilizzare questi servizi più avanzati, puoi abilitare la rete
servizio di lavoro.

Oltre alle basi della connettività di rete in Linux, sono disponibili funzionalità che ti consentono
fornire tipi di servizi di infrastruttura di rete. Questo capitolo ha introdotto servizi e
caratteristiche come routing, DHCP e DNS che devi conoscere quando lavori con più
funzionalità di rete avanzate in Linux.
Con la rete configurata, ora puoi iniziare a configurare i servizi da eseguire sul tuo
reti. Il Capitolo 15 descrive gli strumenti necessari per abilitare, disabilitare, avviare, arrestare e controllare
lo stato dei servizi configurati per il tuo sistema Linux.

Esercizi
Gli esercizi in questa sezione ti aiutano a esaminare e modificare le interfacce di rete
il tuo sistema Linux, oltre a capire come configurare reti più avanzate
Caratteristiche. Inizia questi esercizi su un sistema Linux che abbia una connessione di rete attiva,
ma non è nel mezzo di un'attività di rete critica.

Ti consiglio di fare questi esercizi direttamente dalla console del tuo computer (in altre parole,
non eseguire ssh nel computer per eseguirli). Alcuni dei comandi che esegui potrebbero interrompersi
la connettività di rete e alcune delle configurazioni che esegui, in caso di errore,
può causare la temporanea indisponibilità del computer dalla rete.

Esistono spesso diversi modi per completare le attività descritte in questi esercizi. Se sei
bloccato, fare riferimento alle soluzioni delle attività mostrate nell'Appendice B.

1. Utilizza il desktop per verificare che NetworkManager abbia avviato correttamente il tuo file
interfaccia di rete (cablata o wireless) alla rete. In caso contrario, prova a farlo
avvia la tua interfaccia di rete.
2. Eseguire un comando per controllare le interfacce di rete attive disponibili sul computer.

374

Pagina 415

Capitolo 14: Amministrazione della rete

3. Prova a contattare google.com dalla riga di comando in modo da garantire tale DNS
funziona correttamente.

4. Eseguire un comando per controllare le rotte utilizzate per comunicare al di fuori del proprio locale
Rete.

5. Traccia il percorso che stai percorrendo per connetterti a google.com.

6. Disattivare e disabilitare NetworkManager e avviare il servizio di rete.

7. Creare una voce host che consenta di comunicare con il sistema host locale
utilizzando il nome myownhost.

8. Aggiungi il server DNS pubblico di Google (indirizzo IP 8.8.8.8) come ultimo nell'elenco di
Server DNS.

9. Creare un percorso personalizzato che diriga il traffico destinato a


192.168.99.0/255.255.255.0 ad un indirizzo IP sulla rete locale, come
come 192.168.0.5 (assicurandoti prima che la rete 10.0.99 non venga utilizzata nel tuo
Posizione).

10. Verificare se il sistema è stato configurato per consentire l'instradamento dei pacchetti IPv4
tra le interfacce di rete del sistema.

14
375

Pagina 417
416

CAPITOLO

Avvio e arresto dei servizi


15
IN QUESTO CAPITOLO
Comprensione dei vari servizi di inizializzazione di Linux

Auditing dei servizi Linux controllati da demoni

Arresto e avvio dei servizi

Modifica del runlevel predefinito del server Linux

Rimozione dei servizi

Il può fornire accesso a pagine Web, file, informazioni di database, musica in streaming o altri tipi
di contenuto. I server dei nomi possono fornire l'accesso a elenchi di computer host o nomi utente. Centinaia
compito principale di un sistema server Linux è offrire servizi a utenti locali o remoti. Un server
di questi e altri tipi di servizi possono essere configurati sui sistemi Linux.

Servizi in corso offerti da un sistema Linux, come l'accesso a un servizio di stampa o un servizio di accesso,
sono tipicamente implementati da quello che viene definito un processo daemon . La maggior parte dei sistemi Linux ha un file
metodo di gestione di ciascun processo daemon come servizio utilizzando una delle numerose inizializzazioni più diffuse
sistemi (noti anche come sistemi di inizializzazione). I vantaggi dell'utilizzo dei sistemi init includono l'abilità
per fare quanto segue:

■ Identifica i runlevel: raggruppa set di servizi in quelli che vengono chiamati runlevel o
obiettivi
■ Stabilisci dipendenze: imposta le dipendenze del servizio in modo, ad esempio, un servizio che richiede
le interfacce di rete non verranno avviate fino a quando tutti i servizi di avvio della rete non saranno stati avviati correttamente
■ Imposta il runlevel predefinito: seleziona il runlevel o la destinazione da avviare all'avvio del sistema

■ Gestisci servizi: esegui comandi che indicano ai singoli servizi di avviare, arrestare, mettere in
riavviare o anche ricaricare i file di configurazione

Oggi con i sistemi Linux vengono utilizzati diversi sistemi di inizializzazione. Quello che usi dipende
sulla distribuzione e versione Linux che stai utilizzando. In questo capitolo, tratterò il seguente init
sistemi che sono stati utilizzati in Fedora, Red Hat Enterprise Linux, Ubuntu e molti altri Linux
distribuzioni:

377

Pagina 418

Parte IV: diventare un amministratore di server Linux


■ SysVinit: questo sistema init tradizionale è stato creato per i sistemi UNIX System V in formato
all'inizio degli anni '80. Offre un metodo di avvio e arresto di facile comprensione
servizi basati su runlevel. La maggior parte dei sistemi UNIX e Linux fino a pochi anni fa
usato SysVinit.
■ Upstart —Popolarizzato in Ubuntu e utilizzato brevemente in Fedora e RHEL, questo init
sistema ha migliorato la gestione delle dipendenze tra i servizi e potrebbe subire
migliorare sostanzialmente il tempo di avvio del sistema. Solo di recente è stato soppiantato da
systemd in Fedora e RHEL, e presto lo farà in Ubuntu.
■ Systemd : le ultime versioni di Fedora e RHEL utilizzano il sistema di inizializzazione systemd.
È il più complesso dei sistemi init, ma offre anche molta più flessibilità.
Systemd non offre solo funzionalità per avviare e lavorare con i servizi, ma anche
consente di gestire prese, dispositivi, punti di montaggio, aree di scambio e altri tipi di unità.

Questo capitolo descrive questi tre principali sistemi di inizializzazione. Nel processo di utilizzo di init
sistema che corrisponde alla tua distribuzione Linux, impari come funziona il processo di avvio
avviare i servizi, come avviare e arrestare i servizi individualmente e come abilitare e
disabilitare i servizi.

Comprensione del demone di inizializzazione


(init o systemd)
Per comprendere la gestione del servizio, è necessario comprendere l'inizializzazione
demone. Il daemon di inizializzazione può essere considerato come la "madre di tutti i processi".
Questo daemon è il primo processo avviato dal kernel sul server Linux. Per Linux
distribuzioni che utilizzano SysvInit o Upstart, il demone init è letteralmente chiamato init. Per
systemd, il demone di inizializzazione è denominato systemd.

Il kernel Linux ha un ID di processo (PID) 0. Pertanto, il processo di inizializzazione (init o


systemd) ha un ID processo genitore (PPID) di 0 e un PID di 1. Una volta avviato, init
è responsabile dello spawn (avvio) dei processi configurati per essere avviati dal server
tempo di avvio, come la shell di login (processo getty o mingetty). È anche responsabile di
servizi di gestione.

Il daemon init di Linux era basato sul daemon init di UNIX System V. Quindi, si chiama
il demone SysVinit. Tuttavia, non era l'unico demone init classico. L'init dae-
mon non fa parte del kernel Linux. Pertanto, può essere disponibile in diversi gusti e Linux
le distribuzioni possono scegliere quale gusto usare. Un altro classico demone init era basato su
Berkeley UNIX, chiamato anche BSD. Pertanto, i due demoni di inizializzazione Linux originali erano BSD
init e SysVinit.

I classici demoni init hanno funzionato senza problemi per molti anni. Tuttavia, questi dae-
mons sono stati creati per funzionare in un ambiente statico. Come nuovo hardware, come USB

378

Pagina 419

Capitolo 15: Avvio e arresto dei servizi

dispositivi, arrivarono, i classici demoni init avevano problemi a gestire questi e altri
dispositivi hot-plug. L'hardware del computer era passato da statico a basato su eventi. Nuovo init
i demoni erano necessari per affrontare questi ambienti fluidi.

Inoltre, quando sono arrivati ​nuovi servizi, i classici demoni init hanno dovuto fare i conti con
avviando sempre più servizi. Pertanto, l'intero processo di inizializzazione del sistema è stato inferiore
efficiente e in definitiva più lento.

I moderni demoni di inizializzazione hanno cercato di risolvere i problemi di un sistema inefficiente


stivali e ambienti non statici. Due di questi demoni init sono gli init e i
demoni di systemd. Recentemente, le distribuzioni Ubuntu, RHEL e Fedora hanno fatto la mossa
al demone systemd più recente mantenendo la compatibilità con le versioni precedenti del classico
Demoni di inizializzazione SysVinit, Upstart o BSD.

Upstart, disponibile su http://upstart.ubuntu.com, è stato originariamente sviluppato da


Canonical, il genitore della distribuzione Ubuntu. Versioni precedenti di altre distribuzioni
lo ha adottato per un breve periodo prima di passare a systemd, tra cui:

■ RHEL versione 6
■ Fedora versioni dalla 9 alla 14
■ Versioni Ubuntu 6–14.10

■ openSUSE versioni 11.3–12.1

Un nuovo demone, systemd, disponibile su http://fedoraproject.org/wiki/Systemd ,


è stato scritto principalmente da Lennart Poettering, uno sviluppatore di Red Hat. Attualmente è utilizzato
da Fedora 15, Red Hat Enterprise Linux 7, OpenSUSE 12.2 e versioni successive ed è in corso
implementato per Ubuntu 15.04.

Per gestire correttamente i tuoi servizi, devi sapere quale demone di inizializzazione
il tuo server ha. Capirlo può essere un po 'complicato. Il processo di inizializzazione in esecuzione
su un SysVinit o Upstart si chiama init. Per i primi sistemi systemd, veniva anche chiamato
init, ma ora si chiama systemd. L'esecuzione di ps -e può dirti immediatamente se il tuo è un file
Sistema Systemd:

# ps -e | testa
PID TTY TIME CMD
1? 00:04:36 systemd
2? 00:00:03 kthreadd
3? 00:00:15 ksoftirqd / 0

Se il tuo processo di inizializzazione è init, controlla quanto segue per determinare il tuo
Sistema di inizializzazione del server Linux: 15
■ La distribuzione e la versione di Linux vengono visualizzate nell'elenco precedente di Upstart
adottanti? In tal caso, il demone init di Linux è il demone init di Upstart.

379

Pagina 420

Parte IV: diventare un amministratore di server Linux

■ Prova a cercare indizi nel daemon init della tua distribuzione Linux, usando le stringhe
e i comandi grep. Il seguente esempio di codice mostra il daemon init su
una distribuzione Linux Mint che viene ricercata per systemd e il demone init Upstart
Riferimenti. La ricerca di systemd non produce nulla. Tuttavia, la ricerca di Upstart
produce risultati. Pertanto, nel secondo esempio, la distribuzione Linux Mint utilizza l'estensione
Upstart init daemon.
$ sudo stringhe / sbin / init | grep -i systemd
$ sudo stringhe / sbin / init | grep -i upstart
upstart- devel@lists.ubuntu.com
UPSTART_CONFDIR
UPSTART_NO_SESSIONS
...

Su un vecchio server Fedora, la ricerca di Upstart non produce nulla. Tuttavia, puoi
vedere che la ricerca di systemd restituisce l'esistenza del demone systemd.
# stringhe / sbin / init | grep -i upstart
# stringhe / sbin / init | grep -i systemd
systemd.unit =
systemd.log_target =
systemd.log_level =
...

Se non hai il comando strings sul tuo sistema Linux, puoi installarlo tramite il pacchetto binutils. Su
RHEL e Fedora, usate il comando yum install binutils. Su Ubuntu, usa il comando sudo apt-get
installa binutils.

■ Seancora non riesci a capire quale demone di inizializzazione ha il tuo server, prova a cercare nel file
init pagina Wikipedia (http://wikipedia.org/wiki/Init) sotto
"Sostituzioni per init?"

Tieni presente che alcune distribuzioni Linux non sono state spostate sui daemon più recenti. Maggior parte
di quelli che si sono spostati mantengono la compatibilità con le versioni precedenti di SysVinit e BSD
daemon init.

Comprensione dei classici demoni init


Vale la pena capire i classici demoni init, SysVinit e BSD init, anche se il tuo
Il server Linux ha un demone di inizializzazione diverso. Non solo è compatibile con le versioni precedenti della classe
sics spesso usati nei nuovi demoni init, ma molti sono basati su di essi. Comprensione
i classici demoni init ti aiuteranno a capire i moderni demoni init.

I classici daemon SysVinit e BSD init funzionano in modo molto simile. Sebbene
all'inizio potrebbero essere stati piuttosto diversi, nel tempo, pochissimi significativi

380
Pagina 421

Capitolo 15: Avvio e arresto dei servizi

le differenze sono rimaste. Ad esempio, il vecchio demone di inizializzazione BSD otterrebbe la configurazione
informazioni sul file / etc / ttytab. Ora, come il demone SysVinit, il BSD init
Le informazioni di configurazione del daemon vengono prese al momento dell'avvio dal file / etc / inittab. Il
il seguente è un classico file SysVinit / etc / inittab:

# cat / etc / inittab


# inittab Questo file descrive come dovrebbe essere impostato il processo INIT
# Runlevel predefinito. I runlevel utilizzati da RHS sono:
# 0 - halt (NON impostare initdefault su questo)
# 1 - Modalità utente singolo
# 2 - Multiutente, no NFS (come 3, se non si dispone di rete)
# 3 - Modalità multiutente completa
# 4 - inutilizzato
# 5 - X11
# 6 - riavvio (NON impostare initdefault su questo)
#
id: 5: initdefault:

# Inizializzazione del sistema.


si :: sysinit: /etc/rc.d/rc.sysinit

l0: 0: wait: /etc/rc.d/rc 0


l1: 1: aspetta: /etc/rc.d/rc 1
l2: 2: aspetta: /etc/rc.d/rc 2
l3: 3: aspetta: /etc/rc.d/rc 3
l4: 4: aspetta: /etc/rc.d/rc 4
l5: 5: aspetta: /etc/rc.d/rc 5
l6: 6: aspetta: /etc/rc.d/rc 6

# Trap CTRL-ALT-CANC
ca :: ctrlaltdel: / sbin / shutdown -t3 -r ora
pf :: powerfail: / sbin / shutdown -f -h +2
"Interruzione di corrente; arresto del sistema"

# Se l'alimentazione è stata ripristinata prima dell'inizio dell'arresto, annullarla.


pr: 12345: powerokwait: / sbin / shutdown -c
"Alimentazione ripristinata; spegnimento annullato"

# Esegui gettys nei runlevel standard


1:2345: respawn: / sbin / mingetty tty1
2: 2345: respawn: / sbin / mingetty tty2
3: 2345: respawn: / sbin / mingetty tty3
4: 2345: respawn: / sbin / mingetty tty4
5: 2345: respawn: / sbin / mingetty tty5
6: 2345: respawn: / sbin / mingetty tty6
15
# Esegui xdm nel runlevel 5
x: 5: respawn: / etc / X11 / prefdm -nodaemon

381

Pagina 422

Parte IV: diventare un amministratore di server Linux

Il file / etc / inittab dice al demone init quale runlevel è il runlevel predefinito.
Un runlevel è un numero di categorizzazione che determina quali servizi vengono avviati e quali
i servizi vengono interrotti. Nell'esempio precedente, un runlevel predefinito di 5 è impostato con la riga
id: 5: initdefault :. La Tabella 15.1 mostra i sette runlevel Linux standard.
TABELLA 15.1 Runlevel Linux standard

Runlevel # Nome Descrizione

0 Ferma Tutti i servizi vengono chiusi e il server viene arrestato.

1oS Singolo utente L'account root viene automaticamente connesso al server. Altro
Modalità gli utenti non possono accedere al server. Solo l'interfaccia della riga di comando
è disponibile. I servizi di rete non vengono avviati.

2 Multiutente Gli utenti possono accedere al server, ma solo dalla riga di comando
Modalità l'interfaccia è disponibile. Su alcuni sistemi, le interfacce di rete e
i servizi vengono avviati; su altri non lo sono. In origine, questo
runlevel è stato utilizzato per avviare dispositivi terminali stupidi in modo che gli utenti potessero farlo
accedere (ma non sono stati avviati servizi di rete).

3 Esteso Gli utenti possono accedere al server, ma solo dalla riga di comando
Multiutente l'interfaccia è disponibile. Vengono avviati i servizi e le interfacce di rete.
Modalità Questo è un runlevel comune per i server.

4 Definito dall'utente Gli utenti possono personalizzare questo runlevel.

5 Grafica Gli utenti possono accedere al server. Riga di comando e grafica


Modalità sono disponibili interfacce. I servizi di rete vengono avviati. Questo è un
runlevel comune per sistemi desktop.

6 Riavvia Il server viene riavviato.

Le distribuzioni Linux possono differire leggermente sulla definizione di ciascun runlevel e anche su quale
vengono offerti runlevel. La distribuzione Ubuntu, ad esempio, offre runlevel 0–6, ma
I runlevel 2–5 avviano gli stessi servizi del runlevel 5 standard elencato nella Tabella 15.1.

Gli unici runlevel che dovrebbero essere usati nel file / etc / inittab sono da 2 a 5. Gli altri runlevel potrebbero causare
i problemi. Ad esempio, se inserisci il runlevel 6 nel file / etc / inittab come predefinito, quando il server si riavvia,
andrebbe in un ciclo e continuerebbe a riavviarsi più e più volte.

I runlevel non sono usati solo come runlevel di default nel file / etc / inittab.
Possono anche essere chiamati direttamente usando il demone init stesso. Quindi, se vuoi
fermare immediatamente il server, si digita init 0 nella riga di comando:

# init 0
...
Sistema inattivo per arresto del sistema ORA!

382

Pagina 423

Capitolo 15: Avvio e arresto dei servizi

Il comando init accetta qualsiasi numero di runlevel nella Tabella 15.1, permettendoti di farlo
cambia rapidamente il tuo server da una categoria di runlevel a un'altra. Ad esempio, se hai bisogno di
per eseguire la risoluzione dei problemi che richiede che l'interfaccia grafica sia inattiva, è possibile digitare
init 3 dalla riga di comando:

# init 3
INIT: l'invio elabora il segnale TERM
bilanciamento iniziale: [ OK ]
Avvio di setroubleshootd:
Avvio del fusibile: fusibile del filesystem già disponibile.
...
Avvio dei servizi del mouse della console: [ OK ]

Per vedere il runlevel corrente del tuo server Linux, digita semplicemente il comando runlevel . Il primo
l'elemento visualizzato è il runlevel precedente del server, che nell'esempio seguente è 5. Il file
il secondo elemento visualizzato mostra il runlevel corrente del server, che in questo esempio è 3.

$ runlevel
53

Oltre al comando init, puoi anche usare il comando telinit, che è


funzionalmente lo stesso. Nell'esempio che segue, viene utilizzato il comando telinit
riavviare il server portandolo al runlevel 6:

# telinit 6
INIT: l'invio elabora il segnale TERM
Spegnimento di smartd: [ OK ]
Arresto del demone Avahi: [ OK ]
Arresto di dhcdbd: [ OK ]
Arresto del demone HAL: [ OK ]
...
Avvio di killall:
Invio aa tutti
Invio tutti ii processi
processi del
del segnale
segnale KILL
TERM......[OK]
[OK]
...
Smontaggio dei filesystem [ OK ]
Si prega di attendere durante il riavvio del sistema
...

Su un server Linux appena avviato, il numero di runlevel corrente dovrebbe essere lo stesso di
numero di runlevel predefinito nel file / etc / inittab. Tuttavia, nota che il precedente
runlevel nell'esempio che segue è N. La N sta per "Inesistente" e indica il
il server è stato appena avviato al runlevel corrente.

$ runlevel
15
N5

Come fa il server a sapere quali servizi interrompere e quali avviare quando un determinato file
runlevel è scelto? Quando viene scelto un runlevel, gli script si trovano in /etc/rc.d/rc # .d
directory (dove # è il runlevel scelto) vengono eseguiti. Questi script vengono eseguiti se il run-
level viene scelto tramite un avvio del server e l'impostazione / etc / inittab initdefault, o quando il

383

Pagina 424

Parte IV: diventare un amministratore di server Linux

Viene utilizzato il comando init o telinit. Ad esempio, se viene scelto il runlevel 5, tutti gli script
nella directory /etc/rc.d/rc5.d vengono eseguiti; la tua lista sarà diversa, a seconda di cosa
servizi installati e abilitati.

# ls /etc/rc.d/rc5.d
K01smolt K88wpa_supplicant S22messagebus
K02avahi-dnsconfd K89dund S25bluetooth
K02NetworkManager K89netplugd Fusibile S25
K02NetworkManagerDispatcher K89pand S25netfs
K05saslauthd K89rdisc S25pcscd
K10dc_server K91capi S26hidd
K10psacct S00microcode_ctl S26udev-post
K12dc_client S04readahead_early S28autofs
K15gpm S05kudzu S50hplip
K15httpd S06cpuspeed S55cups
K20nfs S08ip6tables S55sshd
K24irda S08iptables S80sendmail
K25squid S09isdn S90ConsoleKit
K30spamassassin S10network S90crond
K35vncserver S11auditd S90xfs
K50netconsole S12restorecond S95anacron
K50tux S12syslog S95atd
K69rpcsvcgssd S13irqbalance S96readahead_later
K73winbind S13mcstrans S97dhcdbd
K73ypbind S13rpcbind S97yum-updatesd
K74nscd S13setroubleshoot S98avahi-daemon
K74ntpd S14nfslock S98haldaemon
K84btseed S15mdmonitor S99firstboot
K84bttrack S18rpcidmapd S99local
K87multipathd S19rpcgssd S99smartd

Si noti che alcuni degli script all'interno della directory /etc/rc.d/rc5.d iniziano con una K e
alcuni iniziano con una S. La K si riferisce a uno script che ucciderà (fermerà) un processo. La S si riferisce
uno script che avvierà un processo. Inoltre, ogni script K e S ha un numero prima del nome di
il servizio o il daemon che controllano. Ciò consente di arrestare o avviare i servizi in un file
particolare ordine controllato. Non vorresti che fossero i servizi di rete del tuo server Linux
avviato prima dell'avvio della rete stessa.

Esiste una directory /etc/rc.d/rc # .d per tutti i runlevel Linux standard. Ognuno
contiene script per avviare e interrompere i servizi per il suo particolare runlevel.

# ls -d /etc/rc.d/rc?.d
/etc/rc.d/rc0.d /etc/rc.d/rc2.d /etc/rc.d/rc4.d /etc/rc.d/rc6.d
/etc/rc.d/rc1.d /etc/rc.d/rc3.d /etc/rc.d/rc5.d

In realtà, i file nelle directory /etc/rc.d/rc # .d non sono script, ma invece


collegamenti simbolici agli script nella directory /etc/rc.d/init.d. Quindi, non è necessario
avere più copie di particolari script.

384
Pagina 425

Capitolo 15: Avvio e arresto dei servizi

# ls -l /etc/rc.d/rc5.d/K15httpd
lrwxrwxrwx 1 radice radice 15 ottobre 10 08:15
/etc/rc.d/rc5.d/K15httpd -> ../init.d/httpd
# ls /etc/rc.d/init.d
anacron funzioni multipathd rpcidmapd
atd fusibile netconsole rpcsvcgssd
auditd gpm netfs saslauthd
autofs haldaemon netplugd inviare una mail
avahi-daemon arrestare la rete setroubleshoot
avahi-dnsconfd hidd NetworkManager single
Bluetooth hplip NetworkManagerDispatcher smartd
btseed hsqldb nfs smolt
bttrack httpd nfslock spamassassin
capi ip6tables nscd calamaro
ConsoleKit iptables ntpd sshd
cpuspeed irda pand syslog
crond irqbalance pcscd tux
tazze isdn psacct udev-post
cups-config-daemon killall rdisc vncserver
dc_client kudzu readahead_early winbind
dc_server mcstrans readahead_later wpa_supplicant
dhcdbd mdmonitor restorecond xfs
dund messagebus rpcbind ypbind
firstboot microcodice rpcgssd yum-updatesd

Notare che ogni servizio ha un singolo script in /etc/rc.d/init.d. Non sono separati
script per arrestare e avviare un servizio. Questi script interromperanno o avvieranno un servizio
a seconda di quale parametro viene passato loro dal demone init.

Ogni script in /etc/rc.d/init.d si prende cura di tutto ciò che è necessario per l'avvio o l'arresto
un particolare servizio sul server. Quello che segue è un esempio parziale dello script httpd
su un sistema Linux che utilizza il daemon SysVinit. Contiene un'istruzione case per la gestione
il parametro ($ 1) che gli è stato passato, ad esempio start, stop, status e così via.

# cat /etc/rc.d/init.d/httpd
#! / bin / bash
#
# httpd Script di avvio per Apache HTTP Server
#
# chkconfig: - 85 15
# descrizione: Apache è un server World Wide Web.
# È usato per servire \
# File HTML e CGI.
# nomeprocesso: httpd
# config: /etc/httpd/conf/httpd.conf 15
# config: / etc / sysconfig / httpd
# pidfile: /var/run/httpd.pid

# Libreria di funzioni sorgente.

385

Pagina 426

Parte IV: diventare un amministratore di server Linux

. /etc/rc.d/init.d/functions
...
# Guarda come siamo stati chiamati.
caso "$ 1" in
inizio)
inizio
;;
fermare)
fermare
;;
stato)
stato $ httpd
RETVAL = $?
;;
...
esac

esci da $ RETVAL

Dopo gli script runlevel collegati dalla directory /etc/rc.d/rc # .d appropriata sono
eseguito, il processo di spawn del demone SysVinit è completo. Il passaggio finale è l'init
il processo richiede a questo punto è fare qualsiasi altra cosa indicata nel file / etc / inittab
(come generare processi mingetty per console virtuali e avviare l'interfaccia desktop,
se sei nel runlevel 5).

Comprensione del demone di inizializzazione di Upstart


Come accennato in precedenza, molte distribuzioni Linux sono passate per un po 'dal classico init
daemon al daemon di inizializzazione di Upstart. In quella lista di distribuzione sono inclusi RHEL 6
e Ubuntu (precedenti alla 15.04).

Apprendimento delle basi del demone di inizializzazione di Upstart


La differenza principale tra i classici e Upstart è la gestione dell'arresto
e servizi di avviamento. Il demone SysVinit è stato creato per funzionare in un ambiente statico
ment. Il demone di inizializzazione Upstart è stato creato per funzionare in modo flessibile e in continua evoluzione
ambiente.

Con SysVinit, i servizi vengono arrestati e avviati in base ai runlevel. Il Upstart init
daemon non si occupa dei runlevel ma degli eventi di sistema. Gli eventi sono ciò che determina
quando i servizi vengono arrestati e / o avviati.

Un evento è un'occorrenza del server Linux che attiva una modifica dello stato del sistema necessaria, ovvero
comunicato al demone di inizializzazione di Upstart. Di seguito sono riportati esempi di eventi di sistema:

■ Il server si avvia.
■ Viene utilizzato il comando init.
■ Un dispositivo USB è collegato al server.

386

Pagina 427

Capitolo 15: Avvio e arresto dei servizi

I classici demoni init potevano gestire i primi due esempi di eventi, ma non potevano
affrontare bene il terzo.

Upstart gestisce i servizi attraverso lavori definiti. Un lavoro Upstart può essere un'attività o un file
servizio. Un'attività svolge un compito limitato, completa il suo lavoro e quindi ritorna in attesa
stato. Un servizio , d'altra parte, è un programma di lunga durata che non finisce mai il suo
funziona o termina da solo, ma rimane invece in uno stato di esecuzione. Un daemon è un esempio di un file
Upstart lavoro di servizio.

L'esempio che segue mostra diversi lavori Upstart che includono sia attività che servizio
lavori. I lavori dell'attività sono in uno stato di interruzione / attesa, come l'attività rc. I lavori di servizio sono in arrivo
uno stato di avvio / esecuzione, come il demone cups.

$ initctl list
avvio / esecuzione di avahi-daemon, processo 456
mountall-net stop / attesa
rc stop / attesa
avvio / esecuzione di rsyslog, processo 411
...
ssh avvio / esecuzione, processo 405
udev-fallback-graphics stop / attesa
control-alt-cancella stop / attesa
hwclock stop / attesa
mount-proc stop / attesa
avvio / esecuzione di network-manager, processo 458
...
rc-sysinit stop / attesa
le tazze si avviano / funzionano, processo 1066
...
tty6 avvio / esecuzione, processo 833
fermarsi / aspettare

Questi vari lavori vengono definiti tramite un file di definizione dei lavori. Tutti i file di definizione del lavoro sono
situato nella directory / etc / init come mostrato qui:

$ ls / etc / init
acpid.conf networking.conf
alsa-restore.conf
alsa-store.conf network-interface.conf
network-interface-security.conf
anacron.conf network-manager.conf
control-alt-delete.conf procps.conf
cron.conf rc.conf
cups.conf rcS.conf
dbus.conf rc-sysinit.conf
dmesg.conf rsyslog.conf 15
failsafe.conf setvtrgb.conf
friendly-recovery.conf ssh.conf
hostname.conf tty1.conf

387

Pagina 428

Parte IV: diventare un amministratore di server Linux

hwclock.conf tty2.conf
hwclock-save.conf tty3.conf
irqbalance.conf tty4.conf
lightdm.conf tty5.conf
...

Il demone di inizializzazione di Upstart dipende dagli eventi per attivare determinati servizi per l'avvio, l'arresto,
riavviare e così via. Gli eventi vengono comunicati al daemon di inizializzazione Upstart o creati
dal demone Upstart. Questo è chiamato evento emesso . Le azioni intraprese quando un file
l'evento viene emesso dipendono dalle impostazioni nel file di configurazione del lavoro. Considera il
seguente file di configurazione del demone di Network Manager:

$ cat /etc/init/network-manager.conf
# network-manager - gestore della connessione di rete
#
# Il daemon NetworkManager gestisce le connessioni di rete del sistema
# passaggio automatico tra i migliori disponibili.

descrizione "network connection manager"

avvia su (filesystem locali e avviato dbus)


stop alla fermata dbus

aspettarsi la forcella
respawn

exec NetworkManager
$

Dall'esempio, puoi vedere che ci sono due eventi che devono aver luogo per farlo
attivare il demone di inizializzazione Upstart per avviare il demone NetworkManager:

■ L' evento local-filesystems : il demone di inizializzazione Upstart emette questo evento


quando tutti i filesystem locali nel file di configurazione / etc / fstab sono stati
montato.
■ Il dbus daemon iniziato evento -Il Upstart init daemon emette questo
avviato l'evento quando il daemon dbus ha raggiunto lo stato di avvio / esecuzione.

Pertanto, quando si verificano questi due eventi, il demone di inizializzazione Upstart viene informato e avvia il file
Demone di NetworkManager.

Poiché il demone di inizializzazione Upstart può gestire questi eventi e traccia lo stato (stato)
dei processi, viene spesso definita "macchina a stati". Lo è anche il demone di inizializzazione di Upstart
indicato come un "motore di eventi" perché emette gli eventi stesso.

Apprendimento della retrocompatibilità di Upstart con SysVinit


Upstart fornisce la retrocompatibilità con il demone SysVinit. Questo ha permesso a
È ora che le distribuzioni Linux migrino lentamente a Upstart.

388

Pagina 429
Capitolo 15: Avvio e arresto dei servizi

Il file / etc / inittab è ancora su alcune distribuzioni. RHEL 6 e le distribuzioni Fedora


ancora usando Upstart usa / etc / inittab per avviare il runlevel predefinito elencato. L'esempio
del file / etc / inittab che segue proviene da un server che esegue una versione di Fedora,
che utilizza il demone di inizializzazione Upstart.

$ cat / etc / inittab


# inittab viene utilizzato solo da upstart per il runlevel predefinito.
#
# L'AGGIUNTA DI ALTRE CONFIGURAZIONE QUI NON AVRÀ ALCUN EFFETTO SUL TUO SISTEMA.
#
...
#
id: 5: initdefault:

Come puoi vedere dalle righe di commento nel file / etc / inittab, l'unica cosa questa
viene utilizzato per le distribuzioni Linux che lo mantengono per modificare il runlevel predefinito in
tempo di avvio del server.

Per modificare il runlevel predefinito su una distribuzione Ubuntu che utilizza Upstart, modifica /etc/init/rc-sysinit.conf
e cambia la riga env DEFAULT_RUNLEVEL = # dove # è da 2 a 5. Tuttavia, ricorda che i runlevel 2–5 su
Ubuntu sono equivalenti al runlevel SysVinit 5. Pertanto, questa attività è piuttosto inutile.

La compatibilità dell'inizializzazione del sistema con SysVinit è mantenuta su alcune distribuzioni,


come Ubuntu, tramite il file di configurazione /etc/init/rc-sysinit.conf. Questo è uno
dei file di configurazione utilizzati all'avvio del sistema. Nell'esempio che segue, Upstart cerca
un file / etc / inittab ed esegue anche tutti gli script che potrebbero essere ancora in /etc/init.d/rcS
directory:

$ cat /etc/init/rc-sysinit.conf
# rc-sysinit - Compatibilità con l'inizializzazione di System V.
#
# Questa attività esegue i vecchi script di inizializzazione del sistema in stile System V,
# e al termine entra nel runlevel predefinito.
...
start on (filesystem e static-network-up) o fail-safe-boot
stop su runlevel

# Runlevel predefinito, può essere sovrascritto dalla riga di comando del kernel
# o simulando una vecchia voce / etc / inittab
env DEFAULT_RUNLEVEL = 2

emette runlevel
15
...
compito

389

Pagina 430

Parte IV: diventare un amministratore di server Linux

script
# Controlla il runlevel predefinito in / etc / inittab
se [-r / etc / inittab]
poi
eval "$ (sed -nre's / ^ [^ #] [^:] *: ([0-6sS]): initdefault:
. * / DEFAULT_RUNLEVEL = "\ 1"; / p '/ etc / inittab || vero)"
fi

# Controlla la riga di comando del kernel per gli argomenti tipici


per ARG in $ (cat / proc / cmdline)
fare
caso "$ {ARG}" in
-b | emergenza)
# Guscio di emergenza
[-n "$ {FROM_SINGLE_USER_MODE}"] || sulogin
;;
[0123456sS])
# Ignora runlevel
DEFAULT_RUNLEVEL = "$ {ARG}"
;;
-s | singolo)
# Modalità utente singolo
[-n "$ {FROM_SINGLE_USER_MODE}"] || DEFAULT_RUNLEVEL = S
;;
esac
fatto

# Esegue gli script di inizializzazione del sistema


[-n "$ {FROM_SINGLE_USER_MODE}"] || /etc/init.d/rcS

# Passa al runlevel predefinito


telinit "$ {DEFAULT_RUNLEVEL}"
fine script

Come puoi vedere dall'esempio precedente, il concetto di runlevel è mantenuto in


Upstart init daemon. In effetti, c'è anche un segnale runlevel che Upstart può emettere.

# man -k "segnale evento"


control-alt-delete (7) - ... pressione della console di Control-Alt-Canc
keyboard-request (7) - ... premere la console di Alt-UpArrow
power-status-changed (7) - ... modifica dello stato di alimentazione
runlevel (7) - ... modifica del runlevel del sistema
iniziato (7) - ... un lavoro è in esecuzione
di partenza (7) - ... sta iniziando un lavoro
avviare (7) - ... avvio del sistema
fermato (7) - ... un lavoro è stato interrotto
fermandosi (7) - ... un lavoro si ferma

Il passaggio a un runlevel diverso è ancora consentito tramite i comandi init o telinit.


Qualsiasi evento runlevel viene gestito dall'attività rc.

390

Pagina 431

Capitolo 15: Avvio e arresto dei servizi

$ initctl status rc
rc stop / attesa

Di seguito viene mostrato il file di configurazione del lavoro dell'attività rc. Quando viene emesso un evento runlevel, il file rc
il file di configurazione chiama lo script /etc/rc.d/rc. Quando viene chiamato, lo script /etc/rc.d/rc
esegue gli script che si trovano in /etc/rc.d/rc # .d, dove # è il runlevel scelto. Questo
fornisce la retrocompatibilità runlevel con SysVinit.

$ cat /etc/init/rc.conf
# rc - Compatibilità runlevel System V.
#
# Questa attività esegue i vecchi script runlevel sysv-rc. It
# di solito viene avviato dal wrapper di compatibilità telinit.

inizia su runlevel [0123456]

fermati al runlevel [! $ RUNLEVEL]

compito

esporta RUNLEVEL
output della console
exec /etc/rc.d/rc $ RUNLEVEL

Se guardi indietro a / etc / inittab nella sezione classica del demone SysVinit, lo farai
notare che / etc / inittab gestisce anche lo spawn dei processi getty o mingetty.
Il demone di inizializzazione Upstart gestisce questo tramite l'attività start-ttys.

# initctl status start-ttys


start-ttys stop / attesa

Di seguito viene mostrato il file di configurazione del lavoro dell'attività start-ttys. Quando viene emesso un evento runlevel
ted, il file di configurazione start-ttys genera il processo getty o mingetty.

$ cat /etc/init/start-ttys.conf
# Questo servizio avvia il numero configurato di Gettys.

inizia su rc interrotto RUNLEVEL = [2345]

env ACTIVE_CONSOLES = / dev / tty [1-6]


env X_TTY = / dev / tty1
compito
script
. / etc / sysconfig / init
per tty in $ (echo $ ACTIVE_CONSOLES); fare
["$ RUNLEVEL" = "5" -a "$ tty" = "$ X_TTY"] && continua 15
initctl start tty TTY = $ tty
fatto
fine script

391

Pagina 432

Parte IV: diventare un amministratore di server Linux

Sebbene il demone di inizializzazione Upstart fornisca la retrocompatibilità con il classico SysVinit


daemon, è una macchina a stati e può gestire eventi in continua evoluzione su un server, non è il
solo il demone init moderno disponibile per il server Linux. Un altro init ancora più moderno
daemon è systemd.

Comprensione dell'inizializzazione di systemd


Il daemon di inizializzazione di systemd è il sostituto più recente di SysVinit e di
Upstart init demons. Questo moderno demone di inizializzazione viene attualmente eseguito su Fedora 15
e versioni successive e RHEL 7 e versioni successive ed è retrocompatibile con SysVinit e
Upstart. Il tempo di inizializzazione del sistema è ridotto da systemd perché può avviare i servizi
in modo parallelo.

Apprendimento delle basi del sistema


Con il daemon SysVinit, i servizi vengono arrestati e avviati in base ai runlevel. Il
systemd si occupa anche dei runlevel, ma sono chiamati unità di destinazione . Sebbene
il compito principale di systemd è avviare i servizi, può gestire altri tipi di cose chiamate
unità . Un'unità è un gruppo costituito da un nome, un tipo e un file di configurazione ed è focalizzato
su un particolare servizio o azione. Sono disponibili otto tipi di unità di sistema:

■ automount

■ dispositivo

■ mount

■ percorso

■ servizio

■ istantanea

■ presa

■ obiettivo

Le due unità di sistema primarie di cui ti devi occupare per gestire i servizi
sono unità di servizio e unità di destinazione. Un'unità di servizio serve per la gestione dei daemon sul tuo
Server Linux. Un'unità bersaglio è semplicemente un gruppo di altre unità.

L'esempio che segue mostra diverse unità di servizio di systemd e unità di destinazione. Il
le unità di servizio hanno nomi daemon familiari, come cups e sshd. Nota che ogni servizio
il nome dell'unità vice termina con .service. Le unità di destinazione mostrate hanno nomi come sysinit.
(sysinit viene utilizzato per avviare i servizi durante l'inizializzazione del sistema.) I nomi delle unità di destinazione
terminare con .target.

# systemctl list-units | grep .service


...
cups.service caricato attivo in esecuzione CUPS Printing Service
dbus.service caricato attivo in esecuzione D-Bus Message Bus

392

Pagina 433
Capitolo 15: Avvio e arresto dei servizi

...
NetworkManager.service caricato attivo in esecuzione Network Manager
prefdm.service caricato Display Manager attivo in esecuzione
remount-rootfs.service caricato attivo uscito Remount Root FS
rsyslog.service caricato attivo in esecuzione System Logging
...
sshd.service caricato attivo in esecuzione il demone del server OpenSSH
systemd-logind.service caricato servizio di accesso attivo in esecuzione
...
# systemctl list-units | grep .target
basic.target Sistema di base attivo attivo caricato
cryptsetup.target ha caricato volumi crittografati attivi attivi
getty.target caricati prompt di accesso attivi attivi
graphical.target ha caricato l'interfaccia grafica attiva attiva
local-fs-pre.target caricato file system locali attivi attivi (Pre)
local-fs.target caricato file system locali attivi attivi
multi-user.target caricato attivo multiutente attivo
network.target Rete attiva attiva caricata
remote-fs.target ha caricato file system remoti attivi attivi
sockets.target Socket attivi attivi caricati
sound.target scheda audio attiva attiva caricata
swap.target caricato attivo attivo Swap
sysinit.target caricato attivo attivo inizializzazione del sistema
syslog.target caricato Syslog attivo attivo

I file di configurazione dell'unità di sistema Linux si trovano in / lib / systemd / system e


/ etc / systemd / directory di sistema. Potresti usare il comando ls per guardarli
directory, ma il metodo preferito è usare un'opzione sul comando systemctl come
segue:

# systemctl list-unit-files --type = service


UNIT FILE STATO
...
cups.service abilitato
...
dbus.service statico
...
NetworkManager.service abilitato
...
poweroff.service statico
...
sshd.service abilitato
sssd.service Disabilitato
...
134 file di unità elencati. 15
I file di configurazione dell'unità mostrati nel codice precedente sono tutti associati a un servizio
unità. I file di configurazione per le unità di destinazione possono essere visualizzati tramite il seguente metodo.

393

Pagina 434

Parte IV: diventare un amministratore di server Linux

# systemctl list-unit-files --type = target


UNIT FILE STATO
anaconda.target statico
basic.target statico
bluetooth.target statico
cryptsetup.target statico
ctrl-alt-del.target Disabilitato
default.target abilitato
...
shutdown.target statico
sigpwr.target statico
smartcard.target statico
sockets.target statico
sound.target statico
swap.target statico
sysinit.target statico
syslog.target statico
time-sync.target statico
umount.target statico
43 file di unità elencati.

Si noti che entrambi gli esempi di file delle unità di configurazione mostrano unità di visualizzazione con uno stato
di statico,Lo
abilitato. abilitato o disabilitato.
stato disabilitato Lo stato
significa cheabilitato
l'unità èsignifica che disabilitata.
attualmente l'unità è attualmente
Lo stato successivo,
statico, è leggermente confuso. Sta per "abilitato staticamente" e significa che l'unità è
abilitato per impostazione predefinita e non può essere disabilitato, nemmeno da root.

I file di configurazione dell'unità di servizio contengono molte informazioni, ad esempio quali altri servizi
deve essere avviato, quando questo servizio può essere avviato, quale file ambientale utilizzare e così via
su. L'esempio seguente mostra il file di configurazione dell'unità sshd:

# cat /lib/systemd/system/sshd.service
[Unità]
Descrizione = Demone del server OpenSSH
Dopo = syslog.target network.target auditd.service

[Servizio]
EnvironmentFile = / etc / sysconfig / sshd
ExecStartPre = / usr / sbin / sshd-keygen
ExecStart = / usr / sbin / sshd -D $ OPZIONI
ExecReload = / bin / kill -HUP $ MAINPID
KillMode = processo
Restart = in caso di guasto
RestartSec = 42s

[Installare]
WantedBy = multi-user.target

Questo file di configurazione dell'unità di servizio di base ha le seguenti opzioni:

394

Pagina 435

Capitolo 15: Avvio e arresto dei servizi

■ Descrizione: una descrizione in formato libero (riga di commento) del servizio.

■ Dopo: configura l'ordine. In altre parole, elenca quali unità dovrebbero essere
attivato prima dell'avvio di questo servizio.
■ File ambiente: il file di configurazione del servizio.
■ ExecStart: il comando utilizzato per avviare questo servizio.

■ ExecReload: il comando utilizzato per ricaricare questo servizio.


■ WantedBy: l'unità di destinazione a cui appartiene questo servizio.

Si noti che l'unità di destinazione, multi-user.target, viene utilizzata nella configurazione dell'unità di servizio sshd
file di razione. L'unità di servizio sshd è richiesta da multi-user.target. In altre parole,
quando l'unità multi-user.target è attivata, viene avviata l'unità di servizio sshd.

È possibile visualizzare le varie unità che un'unità target attiverà utilizzando quanto segue
comando:

# systemctl show --property "Wants" multi-user.target


Vuole = multipathd.service avahi-daemon.service sshd-keygen.se
(FINE) q

Sfortunatamente, il comando systemctl non formatta bene l'output per questo. Letteralmente
alleato scappa dal bordo destro dello schermo in modo da non poter vedere i risultati completi. E tu devi
immettere q per tornare al prompt dei comandi. Per risolvere questo problema, convogliare l'output
alcuni comandi di formattazione per produrre una bella visualizzazione in ordine alfabetico, come mostrato nel file
esempio che segue.

# systemctl show --property "Wants" multi-user.target \


| fmt -10 | sed 's / Wants = // g' | ordinare
abrt-ccpp.service
abrtd.service
abrt-oops.service
abrt-vmcore.service
atd.service
auditd.service
avahi-daemon.service
crond.service
cups.path
dbus.service
fcoe.service
getty.target
irqbalance.service
iscsid.service
iscsi.service 15
livesys-late.service
livesys.service
lldpad.service
mcelog.service
395

Pagina 436

Parte IV: diventare un amministratore di server Linux

mdmonitor.service
multipathd.service
netfs.service
NetworkManager.service
plymouth-quit.service
plymouth-quit-wait.service
remote-fs.target
rsyslog.service
sendmail.service
sm-client.service
sshd-keygen.service
sshd.service ...

Questo display mostra tutti i servizi e le altre unità che verranno attivate (avviate),
compreso sshd, quando l'unità multi-user.target è attivata. Ricorda che un bersaglio
unit è semplicemente un raggruppamento di altre unità, come mostrato nell'esempio precedente. Notare anche
che le unità in questo gruppo non sono tutte unità di servizio. Ci sono unità di percorso e altri obiettivi
unità pure.

Un'unità target ha sia desideri che requisiti, chiamati richiede. A Wants significa che tutto
le unità elencate vengono attivate per l'attivazione (avvio). Se falliscono o non possono essere avviati, no
problema: l'unità bersaglio continua per il suo buon cammino. L'esempio precedente è un display
solo di desideri.

Un Richiede è molto più rigoroso e potenzialmente catastrofico di un Desidera. A Richiede


significa che tutte le unità elencate vengono attivate per l'attivazione (avvio). Se falliscono o non possono essere
avviata, l'intera unità (gruppo di unità) viene disattivata.

È possibile visualizzare le varie unità richieste da un'unità target (deve essere attivata o l'unità fallirà),
utilizzando il comando nell'esempio che segue. Notare che l'output di richiesta è molto
più corto dei desideri per il target multiutente. Pertanto, nessuna formattazione speciale del file
è necessario l'output.

# systemctl show --property "Richiede" multi-user.target


Richiede = basic.target

Le unità di destinazione hanno anche file di configurazione, così come le unità di servizio. Il seguente
l'esempio mostra il contenuto del file di configurazione multi-user.target.

# cat /lib/systemd/system/multi-user.target
# Questo file fa parte di systemd.
#
...

[Unità]
Descrizione = Multiutente
Richiede = basic.target
Conflitti = rescue.service rescue.target

396

Pagina 437

Capitolo 15: Avvio e arresto dei servizi

Dopo = basic.target rescue.service rescue.target


AllowIsolate = sì
[Installare]
Alias ​= default.target

Questo file di configurazione dell'unità di destinazione di base ha le seguenti opzioni:

■ Descrizione: questa è solo una descrizione in formato libero della destinazione.


■ Richiede: se questo multi-user.target viene attivato, l'unità di destinazione elencata è
anche attivato. Se l'unità di destinazione elencata è disattivata o fallisce, allora multiutente.
il target è disattivato. Se non sono presenti le opzioni Dopo e Prima, entrambe le
user.target e l'unità target elencata si attivano contemporaneamente.
■ Conflitti: questa impostazione evita conflitti nei servizi. Avvio multiutente.
target arresta i target e i servizi elencati e viceversa.
■ Dopo: questa impostazione configura l'ordinamento. In altre parole, determina quali unità
deve essere attivato prima di avviare questo servizio.
■ AllowIsolate: questa opzione è un'impostazione booleana di sì o no. Se impostato su sì, allora
questa unità di destinazione, multi-user.target, viene attivata insieme alle sue dipendenze
e tutti gli altri vengono disattivati.
■ ExecStart: questo comando avvia il servizio.
■ ExecReload: questo comando ricarica il servizio.
■ Alias:
con questo comando, systemd crea un collegamento simbolico dall'unità di destinazione
nomi elencati per questa unità, multi-user.target.

Per ottenere maggiori informazioni su questi file di configurazione e sulle loro opzioni, immettere man systemd
.service, man systemd.target e man systemd.unit dalla riga di comando.

Per il server Linux che utilizza systemd, il processo di avvio è più facile da seguire ora che tu
comprendere le unità di destinazione di systemd. All'avvio, systemd attiva l'unità default.target.
Questa unità è dotata di alias per multi-user.target o graphical.target. Quindi, dipende
In base all'alias impostato, vengono avviati i servizi targetizzati dall'unità di destinazione.

Se hai bisogno di ulteriore aiuto per capire il demone systemd, puoi inserire man -k systemd
nella riga di comando per ottenere un elenco della documentazione delle varie utilità di systemd nel file
pagine man.

Apprendimento della retrocompatibilità di systemd con SysVinit


Il daemon systemd ha mantenuto la compatibilità con le versioni precedenti del daemon SysVinit.
Ciò consente alle distribuzioni Linux di migrare lentamente a systemd. 15
Sebbene i runlevel non facciano veramente parte di systemd, l'infrastruttura di systemd lo è stata
creato per fornire compatibilità con il concetto di runlevel. Ci sono sette obiettivi
file di configurazione dell'unità creati appositamente per la retrocompatibilità con SysVinit:

397

Pagina 438

Parte IV: diventare un amministratore di server Linux

■ runlevel0.target

■ runlevel1.target

■ runlevel2.target

■ runlevel3.target

■ runlevel4.target

■ runlevel5.target

■ runlevel6.target

Come probabilmente avrai già capito, c'è un file di configurazione dell'unità di destinazione per ciascuno
dei sette runlevel classici di SysVinit. Questi file di configurazione dell'unità di destinazione sono simboli
collegato in modo chiaro ai file di configurazione dell'unità di destinazione che più si avvicinano all'idea di
runlevel originale. Nell'esempio che segue, vengono mostrati i collegamenti simbolici per il runlevel
unità target. Notare che le unità target del runlevel per i runlevel 2, 3 e 4 sono tutte simboli
collegato calmente a multi-user.target. L'unità multi-user.target è simile a
modalità multiutente estesa legacy.

# ls -l /lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 radice radice 15 marzo 27 15:39
/ lib / systemd / system / runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 radice radice 13 marzo 27 15:39
/ lib / systemd / system / runlevel1.target -> rescue.target
lrwxrwxrwx. 1 radice radice 17 marzo 27 15:39
/ lib / systemd / system / runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 radice radice 17 marzo 27 15:39
/ lib / systemd / system / runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 radice radice 17 marzo 27 15:39
/ lib / systemd / system / runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 radice radice 16 marzo 27 15:39
/ lib / systemd / system / runlevel5.target -> graphical.target
lrwxrwxrwx. 1 radice radice 13 marzo 27 15:39
/ lib / systemd / system / runlevel6.target -> reboot.target

Il file / etc / inittab esiste ancora, ma contiene solo commenti che indicano questa configurazione
Il file tion non viene utilizzato e fornisce alcune informazioni di base su systemd. Il file / etc / inittab n
ha più un vero uso funzionale. Quello che segue è un esempio di un file / etc / inittab su
un server Linux che utilizza systemd.

# cat / etc / inittab


# inittab non viene più utilizzato quando si utilizza systemd.
#
# L'AGGIUNTA DELLA CONFIGURAZIONE QUI NON AVRÀ ALCUN EFFETTO SUL SISTEMA.
#
# Ctrl-Alt-Canc è gestito da
# /etc/systemd/system/ctrl-alt-del.target
#

398

Pagina 439

Capitolo 15: Avvio e arresto dei servizi

# systemd usa "target" invece dei runlevel.


# Per impostazione predefinita, ci sono due obiettivi principali:
#
# multi-user.target: analogo al runlevel 3
# graphical.target: analogo al runlevel 5
#
# Per impostare un obiettivo predefinito, eseguire:
#
# ln -s / lib / systemd / system / <nome destinazione> .target
# /etc/systemd/system/default.target

Il file / etc / inittab spiega che se vuoi qualcosa di simile a un classico runlevel 3 o 5
come runlevel predefinito, è necessario creare un collegamento simbolico da quello predefinito. bersaglio
unità all'unità target del runlevel di tua scelta. Per verificare cos'è default.target
attualmente collegato simbolicamente a (o in termini legacy, per controllare il runlevel predefinito), utilizzare il
comando mostrato qui. Puoi vedere che su questo server Linux, l'impostazione predefinita è l'avvio da
runlevel precedente 3.

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 radice radice 36 Mar 13 17:27
/etc/systemd/system/default.target ->
/lib/systemd/system/runlevel3.target

La capacità di cambiare runlevel utilizzando il comando init o telinit è ancora disponibile.


Quando viene emesso, uno dei comandi viene tradotto in un'unità target di sistema attiva
richiesta. Pertanto, digitando init 3 sulla riga di comando viene emesso davvero il comando
systemctl isola multi-user.target. Inoltre, puoi ancora usare il runlevel
comando per determinare il runlevel legacy corrente, ma è fortemente sconsigliato.

Il classico SysVinit / etc / inittab gestiva la generazione dei processi getty o mingetty.
L'init systemd gestisce questo tramite l'unità getty.target. Il getty.target è attivo
vated dall'unità multi-user.target. Puoi vedere come queste due unità target sono collegate
dal seguente comando:

# systemctl show --property "WantedBy" getty.target


WantedBy = multi-user.target

Ora che hai una conoscenza di base dei daemon init classici e moderni, è il momento di farlo
eseguire alcune azioni pratiche da amministratore del server che coinvolgono il demone init.

Verifica dello stato dei servizi


In qualità di amministratore Linux, devi controllare lo stato dei servizi offerti sul tuo 15
server. Per motivi di sicurezza, disabilitare e rimuovere tutti i servizi di sistema inutilizzati
scoperto attraverso il processo. Ancora più importante per la risoluzione dei problemi, è necessario
essere in grado di sapere rapidamente cosa dovrebbe e cosa non dovrebbe essere in esecuzione sul tuo server Linux.

399
Pagina 440

Parte IV: diventare un amministratore di server Linux

Ovviamente, sapere quale servizio di inizializzazione viene utilizzato dal tuo server Linux
è la prima informazione da ottenere. Come determinarlo è stato trattato in
Sezione "Comprensione del daemon di inizializzazione" di questo capitolo. Il resto di questa sezione
è organizzato in sottosezioni sui vari daemon di inizializzazione.

Verifica dei servizi per i sistemi SysVinit


Per vedere tutti i servizi che vengono offerti da un server Linux utilizzando il classico SysVinit
demone, usa il comando chkconfig. L'esempio che segue mostra i servizi
disponibile su un classico server Linux SysVinit. Notare che ogni runlevel (0–6) è mostrato per ciascuno
servizio con uno stato di acceso o spento. Lo stato indica se un particolare servizio è stato avviato
(on) o no (off) per quel runlevel.

# chkconfig --list
ConsoleKit 0: spento 1: spento 2: spento 3: acceso 4: acceso 5: acceso 6: spento
NetworkManager 0: spento 1: spento 2: spento 3: spento 4: spento 5: spento 6: spento
...
crond 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
tazze 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
...
sshd 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
syslog 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
tux 0: spento 1: spento 2: spento 3: spento 4: spento 5: spento 6: spento
udev-post 0: spento 1: spento 2: spento 3: acceso 4: acceso 5: acceso 6: spento
vncserver 0: off 1: off 2: off 3: off 4: off 5: off 6: off
winbind 0: spento 1: spento 2: spento 3: spento 4: spento 5: spento 6: spento
wpa_supplicant 0: off 1: off 2: off 3: off 4: off 5: off 6: off
xfs 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
ypbind 0: spento 1: spento 2: spento 3: spento 4: spento 5: spento 6: spento
yum-updatesd 0: off 1: off 2: off 3: on 4: on 5: on 6: off

Alcuni servizi nell'esempio non vengono mai avviati, come vncserver. Altri servizi, come
il demone cups, vengono avviati dai runlevel da 2 a 5.

Utilizzando il comando chkconfig, non è possibile sapere se un servizio è attualmente in esecuzione. Fare
che, è necessario utilizzare il comando di servizio. Per aiutare a isolare solo quei servizi che
sono attualmente in esecuzione, il comando di servizio viene reindirizzato al comando grep e quindi
ordinati, come segue.

# service --status-all | grep in esecuzione ... | ordinare


anacron (pid 2162) è in esecuzione ...
atd (pid 2172) è in esecuzione ...
auditd (pid 1653) è in esecuzione ...
automount (pid 1952) è in esecuzione ...
console-kit-daemon (pid 2046) è in esecuzione ...
crond (pid 2118) è in esecuzione ...
cupsd (pid 1988) è in esecuzione ...
...

400

Pagina 441

Capitolo 15: Avvio e arresto dei servizi

sshd (pid 2002) è in esecuzione ...


syslogd (pid 1681) è in esecuzione ...
xfs (pid 2151) è in esecuzione ...
yum-updatesd (pid 2205) è in esecuzione ...

Puoi anche usare sia chkconfig che i comandi di servizio per visualizzare un individuo
le impostazioni del servizio. Utilizzando entrambi i comandi nell'esempio che segue, è possibile visualizzare il file
impostazioni del demone di cups.
# chkconfig --list tazze
tazze 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
# stato delle tazze di servizio
cupsd (pid 1988) è in esecuzione ...

Puoi vedere che il demone cupsd è impostato per essere avviato su ogni runlevel tranne 0, 1 e 6 e
dal comando del servizio, puoi vedere che è attualmente in esecuzione. Inoltre, l'ID del processo
Il numero (PID) viene fornito per il daemon.

Verifica dei servizi per i sistemi Upstart


Per vedere tutti i servizi in esecuzione su un server Linux utilizzando il demone di inizializzazione Upstart, utilizzare il
seguente comando:

# initctl list | avvio / esecuzione di grep


tty (/ dev / tty3) avvio / esecuzione, processo 1163
...
avvio / esecuzione della tastiera di configurazione del sistema, processo 656
prefdm avvio / esecuzione, processo 1154

Tieni presente che potrebbero esserci ancora servizi che non sono stati portati su Upstart
demone init. Pertanto, è necessario utilizzare anche il classico comando SysVinit, service, per
verificare la presenza di eventuali servizi SysVinit rimanenti. Nota che su alcune distribuzioni potresti vederne alcuni
services sia nell'initctl che nell'output del comando di servizio.

# service --status-all | grep in esecuzione


abrtd (pid 1118) è in esecuzione ...
acpid (pid 996) è in esecuzione ...
atd (pid 1146) è in esecuzione ...
...
rsyslogd (pid 752) è in esecuzione ...
sendmail (pid 1099) è in esecuzione ...
...

Solo perché un servizio non è in esecuzione non significa che non sia disponibile. Il servizio potrebbe essere in un file
15
stato arrestato / in attesa, in attesa di un evento sul sistema. Per vedere tutti i servizi, indipendentemente dal loro stato, rimuovi
la parte grep della precedente lista initctl e dei comandi service --status-all.

401

Pagina 442

Parte IV: diventare un amministratore di server Linux

Per mostrare lo stato di un singolo servizio, usa initctl se il servizio è stato portato a
Upstart e il comando di servizio se non è stato ancora portato. Il seguente esempio
mostra due stati del servizio: uno che è stato portato su Upstart e uno che non lo è.

# initctl status vpnc-cleanup


vpnc-cleanup stop / attesa
# stato del servizio ssh
sshd (pid 970) è in esecuzione ...

In questo esempio, il daemon ssh non era ancora stato portato su Upstart. Pertanto, ssh ha bisogno di
il comando di servizio con l'opzione status da utilizzare per verificarne lo stato. Il vpnc-
il servizio di pulizia è un servizio Upstart. Quindi, aveva bisogno del comando initctl status per
essere usato. In alcune distribuzioni, come Ubuntu, puoi anche usare lo stato initctl
comando per i servizi che non sono stati ancora migrati a Upstart.

Verifica dei servizi per i sistemi systemd


Per vedere tutti i servizi offerti da un server Linux utilizzando systemd, utilizzare il
seguente comando:

# systemctl list-unit-files --type = service | grep -v disabilitato


UNIT FILE STATO
abrt-ccpp.service abilitato
abrt-oops.service abilitato
abrt-vmcore.service abilitato
abrtd.service abilitato
alsa-restore.service statico
alsa-store.service statico
anaconda-shell @ .service statico
arp-ethers.service abilitato
atd.service abilitato
auditd.service abilitato
avahi-daemon.service abilitato
bluetooth.service abilitato
console-kit-log-system-restart.service statico
console-kit-log-system-start.service statico
console-kit-log-system-stop.service statico
crond.service abilitato
cups.service abilitato
...
sshd-keygen.service abilitato
sshd.service abilitato
system-setup-keyboard.service abilitato
...
134 file di unità elencati.

Ricorda che le tre possibilità di stato per un servizio systemd sono abilitate, disabilitate,
o statico. Non è necessario includere disabilitato per vedere quali servizi sono impostati per essere attivi,

402

Pagina 443

Capitolo 15: Avvio e arresto dei servizi

che viene effettivamente ottenuto utilizzando l'opzione -v sul comando grep, come
mostrato nell'esempio precedente. Lo stato di statica è essenzialmente abilitato, e quindi
dovrebbe essere incluso.

Per vedere se un particolare servizio è in esecuzione, usa il seguente comando:

# systemctl status cups.service


cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: attivo (in esecuzione) da Lun, 30 Apr 12:36:31 -0400; 13 ore fa
PID principale : 1315 (cupsd)
CGroup: nome = systemd: /system/cups.service
└ 1315 / usr / sbin / cupsd -f

Il comando systemctl può essere utilizzato per mostrare lo stato di un singolo servizio. Nel precedente
Ad esempio, è stato scelto il servizio di stampa. Notare che il nome del servizio è tazze.
servizio. Qui vengono fornite molte informazioni utili sul servizio, ad esempio
fatto che è abilitato e attivo, la sua ora di inizio e anche il suo ID di processo (PID).

Ora che puoi controllare lo stato dei servizi e determinare alcune informazioni su di essi,
devi sapere come eseguire l'avvio, l'arresto e il ricaricamento dei servizi sul tuo
Server Linux.

Arresto e avvio dei servizi


Le attività di avvio, arresto e riavvio dei servizi si riferiscono in genere a esigenze immediate:
in altre parole, gestire i servizi senza riavviare il server. Ad esempio, se vuoi
interrompere temporaneamente un servizio, allora sei nella sezione giusta. Tuttavia, se vuoi interrompere un file
servizio e non consentire il riavvio al riavvio del server, quindi è necessario disabilitare effettivamente il
servizio, che è trattato nella sezione "Abilitazione dei servizi persistenti" più avanti in questo capitolo.

Arresto e avvio dei servizi SysVinit


Il comando principale per arrestare e avviare i servizi SysVinit è il servizio
mand. Con il comando di servizio, arriva il nome del servizio che vuoi controllare
secondo nella riga di comando. L'ultima opzione è quello che vuoi fare al servizio, fermati,
avviare, riavviare e così via. L'esempio seguente mostra come arrestare il servizio cups.
Nota che viene dato un OK, che ti informa che cupsd è stato fermato con successo.

# stato delle tazze di servizio


cupsd (pid 5857) è in esecuzione ...
# stop bicchieri di servizio
15
Fermare le tazze: [ OK ]
# stato delle tazze di servizio
cupsd viene interrotto

403
Pagina 444

Parte IV: diventare un amministratore di server Linux

Per avviare un servizio, è sufficiente utilizzare un'opzione di avvio invece di un'opzione di arresto alla fine di
il comando di servizio come segue.

# iniziano le tazze di servizio


Tazze iniziali: [ OK ]
# stato delle tazze di servizio
cupsd (pid 6860) è in esecuzione ...

Per riavviare un servizio SysVinit, viene utilizzata l'opzione di riavvio. Questa opzione interrompe il servizio e
quindi lo riavvia immediatamente.

# riavvio delle tazze di servizio


Fermare le tazze: [ OK ]
Tazze iniziali: [ OK ]
# stato delle tazze di servizio
cupsd (pid 7955) è in esecuzione ...

Quando un servizio è già interrotto, un riavvio genera uno stato FAILED al tentativo di farlo
smettila. Tuttavia, come mostrato nell'esempio che segue, il servizio viene avviato correttamente
quando si tenta un riavvio.

# stop bicchieri di servizio


Fermare le tazze: [ OK ]
# riavvio delle tazze di servizio
Fermare le tazze: [FAILED]
Tazze iniziali: [ OK ]
# stato delle tazze di servizio
cupsd (pid 8236) è in esecuzione ...

Ricaricare un servizio è diverso dal riavviare un servizio. Quando ricarichi un servizio, il file
il servizio stesso non viene interrotto. Vengono caricati nuovamente solo i file di configurazione del servizio. Il
Il seguente esempio mostra come ricaricare il demone cups.

# stato delle tazze di servizio


cupsd (pid 8236) è in esecuzione ...
# ricariche dei bicchieri di servizio
Ricarica tazze: [ OK ]
# stato delle tazze di servizio
cupsd (pid 8236) è in esecuzione ...

Se un servizio SysVinit viene interrotto quando si tenta di ricaricarlo, viene visualizzato lo stato FAILED.
Questo è mostrato nel seguente esempio:

# stato delle tazze di servizio


cupsd viene interrotto
# ricariche dei bicchieri di servizio
Ricarica tazze: [FAILED]

404

Pagina 445

Capitolo 15: Avvio e arresto dei servizi

Arresto e avvio dei servizi Upstart


Il comando principale per arrestare e avviare i servizi di inizializzazione di Upstart è initctl
comando. Le opzioni sono molto simili al comando di servizio di SysVinit:

■ Arresto di un servizio con Upstart: nell'esempio seguente, lo stato di


Il demone di cups viene controllato e quindi interrotto utilizzando l'initctl stop cups
comando.
# initctl status cups
le tazze si avviano / funzionano, processo 2390
# initctl stop tazze
le tazze si fermano / aspettano
# initctl status cups
le tazze si fermano / aspettano

■ Avvio di un servizio con Upstart: nel seguente esempio, il daemon cups è


iniziato utilizzando il comando initctl start cups.
# initctl avvia tazze
le tazze iniziano / funzionano, processo 2408
# initctl status cups
le tazze iniziano / funzionano, processo 2408

■ Riavvio di un servizio con Upstart: il riavvio di un servizio con Upstart interrompe e


quindi avvia il servizio. Tuttavia, il file di configurazione non viene ricaricato.
# initctl riavvia tazze
avvio / funzionamento delle tazze, processo 2430
# initctl status cups
le tazze iniziano / funzionano, processo 2490

■ Ricaricamento di un servizio con Upstart: il ricaricamento non interrompe e avvia il servizio.


Carica di nuovo solo il file di configurazione. Questa è l'opzione da usare quando hai
ha apportato modifiche al file di configurazione.

Il seguente esempio illustra come ricaricare il daemon cups con initctl.


Si noti che l'ID del processo (PID) è ancora 2490, che è lo stesso che era nel file
esempio per riavviare il daemon cups perché il processo non è stato arrestato e
avviato nel processo di ricarica.
# initctl ricarica le tazze
# initctl status cups
le tazze iniziano / funzionano, processo 2490

Sono necessari i privilegi di root per arrestare e avviare i servizi. Tuttavia, non sono necessari i privilegi di root per controllare un file 15
lo stato del servizio.

405

Pagina 446

Parte IV: diventare un amministratore di server Linux

Arresto e avvio dei servizi di systemd


Per il demone systemd, il comando systemctl funziona per arrestare, avviare,
ricaricare e riavviare i servizi. Le opzioni per il comando systemctl dovrebbero
sembra familiare.

Arresto di un servizio con systemd


Nell'esempio che segue, lo stato del daemon cups viene verificato e quindi arrestato
utilizzando il comando systemctl stop cups.service:

# systemctl status cups.service


cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: attivo (in esecuzione) da lunedì, 30 aprile 2018 12:36: 3 ...
PID principale: 1315 (cupsd)
CGroup: nome = systemd: /system/cups.service
1315 / usr / sbin / cupsd -f
# systemctl stop cups.service
# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: inattivo (morto) da Tue, 01 May 2018 04:43: 4 ...
Processo: 1315 ExecStart = / usr / sbin / cupsd -f
(codice = uscito, stato = 0 / SUCCESSO)
CGroup: nome = systemd: /system/cups.service

Si noti che quando viene acquisito lo stato, dopo aver arrestato il daemon cups, il servizio è
inattivo (morto) ma ancora considerato abilitato. Ciò significa che il demone cups è fermo
avviato all'avvio del server.

Avvio di un servizio con systemd


Avviare il demone di cups è facile quanto arrestarlo. L'esempio che segue
dimostra questa facilità.

# systemctl avvia cups.service


# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato
Attivo: attivo (in (/lib/systemd/system/cups.service;
esecuzione) da Mar, 01 Maggio 2018 abilitato)
04:43: 5 ...
PID principale: 17003 (cupsd)
CGroup: nome = systemd: /system/cups.service
└ 17003 / usr / sbin / cupsd -f

Dopo l'avvio del daemon cups, l'utilizzo di systemctl con l'opzione status mostra che il file
il servizio è attivo (in esecuzione). Inoltre, viene mostrato il suo numero ID di processo (PID), 17003.

406

Pagina 447

Capitolo 15: Avvio e arresto dei servizi

Riavvio di un servizio con systemd


Il riavvio di un servizio significa che un servizio viene arrestato e quindi riavviato. Se il servizio
non era attualmente in esecuzione, riavviandolo semplicemente si avvia il servizio.

# systemctl riavvia cups.service


# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: attivo (in esecuzione) da Tue, 01 May 2018 04:45: 2 ...
PID principale: 17015 (cupsd)
CGroup: nome = systemd: /system/cups.service
└ 17015 / usr / sbin / cupsd -f

È inoltre possibile eseguire un riavvio condizionale di un servizio utilizzando systemctl. Un condizionale


riavvio riavvia solo un servizio se è attualmente in esecuzione. Qualsiasi servizio in uno stato inattivo
non è avviato.

# systemctl status cups.service


cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: inattivo (morto) da Tue, 01 May 2015 06:03:32 ...
Processo: 17108 ExecStart = / usr / sbin / cupsd -f
(codice = uscito, stato = 0 / SUCCESSO)
CGroup: nome = systemd: /system/cups.service
# systemctl condrestart cups.service
# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: inattivo (morto) da Tue, 01 May 2015 06:03:32 ...
Processo: 17108 ExecStart = / usr / sbin / cupsd -f
(codice = uscito, stato = 0 / SUCCESSO)
CGroup: nome = systemd: /system/cups.service

Notare nell'esempio che il daemon cups era in uno stato inattivo. Quando il
è stato emesso un riavvio condizionale, non sono stati generati messaggi di errore! Il demone delle tazze era
non avviato perché i riavvii condizionali influiscono sui servizi attivi. Quindi, è sempre un bene
pratica per controllare lo stato di un servizio, dopo l'arresto, l'avvio, il riavvio condizionato,
e così via.

Ricaricare un servizio con systemd


Ricaricare un servizio è diverso dal riavviare un servizio. Quando ricarichi un servizio, il file
il servizio stesso non viene interrotto. Vengono caricati nuovamente solo i file di configurazione del servizio.

# systemctl stato sshd.service 15


sshd.service - Demone del server OpenSSH
Loaded: caricato (/usr/lib/systemd/system/sshd.service; abilitato)

407

Pagina 448
Parte IV: diventare un amministratore di server Linux

Attivo: attivo (in esecuzione) da ven 2018-11-24 14:06:57 EST ...


PID principale: 1675 (sshd)
CGroup: /system.slice/sshd.service
└─1675 / usr / sbin / sshd -D
# systemctl ricarica sshd.service
# systemctl stato sshd.service
sshd.service - Demone del server OpenSSH
Loaded: caricato (/lib/systemd/system/sshd.service; abilitato)
Attivo: attivo (in esecuzione) da ven 2018-11-24 14:06:57 EST ...
Processo: 2149 ExecReload = / bin / kill -HUP $ MAINPID
(codice = uscito, stato = 0 / SUCCESSd)
PID principale: 1675 (sshd)
CGroup: /system.slice/sshd.service
└─1675 / usr / sbin / sshd -D

Fare un ricaricamento di un servizio, invece di un riavvio, impedisce qualsiasi servizio in sospeso


operazioni da interrompere. Un ricaricamento è un metodo migliore per un server Linux occupato.

Ora che sai come interrompere e avviare i servizi per la risoluzione dei problemi e le emergenze
scopi, puoi imparare come abilitare e disabilitare i servizi.

Abilitazione dei servizi persistenti


Utilizzi stop and start per esigenze immediate, non per servizi che devono essere persistenti.
Un servizio persistente è quello che viene avviato all'avvio del server o in un particolare runlevel.
I servizi che devono essere impostati come persistenti sono in genere nuovi servizi che il server Linux
sta offrendo.

Configurazione di servizi persistenti per SysVinit


Una delle caratteristiche più interessanti del classico demone SysVinit è quella di creare un servizio particolare
persistente o rimuovere la sua persistenza è molto facile da fare. Considera il seguente esempio:

# chkconfig --list tazze


tazze 0: spento 1: spento 2: spento 3: spento 4: spento 5: spento 6: spento

Su questo server Linux, il servizio cups non viene avviato a nessun runlevel, come mostrato con il
comando chkconfig. Puoi anche controllare e vedere se sono impostati collegamenti con il simbolo di inizio (S)
in ciascuna delle sette directory runlevel, /etc/rc.d/rc ? .d. Ricorda che SysVinit
mantiene qui collegamenti simbolici per l'avvio e l'arresto di vari servizi a determinati runlevel.
Ogni directory rappresenta un particolare runlevel; ad esempio, rc5.d è per il runlevel 5. Avviso
che sono elencati solo i file che iniziano con una K, quindi ci sono collegamenti per uccidere le tazze dae-
lun. Nessuno è elencato con S, che è coerente con chkconfig che il demone cups
non si avvia a nessun runlevel su questo server.

408

Pagina 449

Capitolo 15: Avvio e arresto dei servizi

# ls /etc/rc.d/rc?.d/*cups
/etc/rc.d/rc0.d/K10cups /etc/rc.d/rc3.d/K10cups
/etc/rc.d/rc1.d/K10cups /etc/rc.d/rc4.d/K10cups
/etc/rc.d/rc2.d/K10cups /etc/rc.d/rc5.d/K10cups
/etc/rc.d/rc6.d/K10cups

Per rendere un servizio persistente in un particolare runlevel, viene utilizzato il comando chkconfig
ancora. Invece dell'opzione --list, viene usata l'opzione --level, come mostrato nel file
codice seguente:

# chkconfig - livello 3 tazze attivato


# chkconfig --list tazze
tazze 0: spento 1: spento 2: spento 3: acceso 4: spento 5: spento 6: spento
# ls /etc/rc.d/rc3.d/S*cups
/etc/rc.d/rc3.d/ S56cups

La persistenza del servizio al runlevel 3 viene verificata da entrambi usando chkconfig --list
comando e cercando nella directory rc3.d tutti i file che iniziano con la lettera S.
Per rendere un servizio persistente su più di un runlevel, puoi fare quanto segue:

# chkconfig - livello 2345 tazze


# chkconfig --list tazze
tazze 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento
# ls /etc/rc.d/rc?.d/S*cups
/etc/rc.d/rc2.d/S56cups /etc/rc.d/rc4.d/S56cups
/etc/rc.d/rc3.d/S56cups /etc/rc.d/rc5.d/S56cups

Disattivare un servizio è facile quanto attivarne uno con SysVinit. Hai solo bisogno di cambiare
l'attivazione nel comando chkconfig su off. L'esempio seguente mostra l'utilizzo di
comando chkconfig per disabilitare il servizio cups al runlevel 5.

# chkconfig - livello 5 tazze di sconto


# chkconfig --list tazze
tazze 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: spento 6: spento
# ls /etc/rc.d/rc5.d/S*cups
ls: impossibile accedere a /etc/rc.d/rc5.d/S*cups: nessun file o directory di questo tipo

Come previsto, ora non esiste alcun collegamento simbolico, a partire dalla lettera S, per il servizio di tazze
nella directory /etc/rc.d/rc5.d.

Configurazione di servizi persistenti per Upstart


Il demone di inizializzazione Upstart emette il segnale di avvio che attiva l'avvio dei lavori di servizio.
Al momento dell'avvio del server, vari lavori possono emettere segnali. Questi segnali emettevano quindi
causare l'avvio di altri lavori. Pertanto, la chiave per rendere persistente un servizio è garantire il
15
il file di definizione del servizio viene attivato da uno dei segnali emessi all'avvio del server.

409

Pagina 450

Parte IV: diventare un amministratore di server Linux

Ricordare che i file di definizione del lavoro del demone di inizializzazione Upstart si trovano in / etc / init
directory. Considerare il seguente file di definizione del lavoro per il daemon ssh:

# cat /etc/init/ssh.conf
# ssh - Server OpenBSD Secure Shell
# Il server OpenSSH fornisce un accesso shell sicuro al sistema.
descrizione "server OpenSSH"
avvia su filesystem o runlevel [2345]
stop al runlevel [! 2345]
respawn

Per determinare quali eventi emessi attivano un servizio, cerca start on nella configurazione
file. Il demone ssh viene attivato da diversi possibili eventi emessi, filesystem, runlevel 2,
runlevel 3, runlevel 4 o runlevel 5. Fondamentalmente, il demone ssh si avvia all'avvio del server e
è impostato come persistente. La sintassi per gli eventi runlevel, runlevel [2345], è usata in molti di
i file di lavoro e denota che il nome "runlevel" può terminare con 2, 3, 4 o 5.

Per rendere persistente un lavoro (avvia all'avvio), è necessario modificare l' avvio in linea nel relativo file
file di configurazione in modo che venga avviato su determinati eventi emessi all'avvio del server. Per disabilitare un lavoro in
boot, commenta l' inizio in linea con un cancelletto (#). Vedere "Aggiunta di nuovo o
Sezione Servizi personalizzati "per Upstart per una spiegazione più completa di queste configurazioni
file di razione.

Configurazione di servizi persistenti per systemd


Per il demone systemd, di nuovo viene utilizzato il comando systemctl. Con esso, puoi disabilitare
e abilitare i servizi sul server Linux.

Abilitazione di un servizio con systemd


L'utilizzo dell'opzione enable sul comando systemctl imposta un servizio da cui iniziare sempre
boot (essere persistente). Di seguito viene mostrato esattamente come eseguire questa operazione:

# systemctl status cups.service


cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; disabilitato )
Attivo: inattivo (morto) da martedì, 01 maggio 2018 06:42:38 ...
PID principale: 17172 (codice = uscito, stato = 0 / SUCCESSO)
CGroup: nome = systemd: /system/cups.service
# systemctl abilita cups.service
ln -s '/lib/systemd/system/cups.service'
"/etc/systemd/system/printer.target.wants/cups.service
ln -s '/lib/systemd/system/cups.socket'
"/etc/systemd/system/sockets.target.wants/cups.socket"
ln -s '/lib/systemd/system/cups.path' '
/etc/systemd/system/multi-user.target.wants/cups.path "

410

Pagina 451

Capitolo 15: Avvio e arresto dei servizi

# systemctl status cups.service


cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: inattivo (morto) da martedì, 01 maggio 2018 06:42:38 ...
PID principale: 17172 (codice = uscito, stato = 0 / SUCCESSO)
CGroup: nome = systemd: /system/cups.service

Notare che lo stato di cups.service cambia da disabilitato ad abilitato dopo l'uso


l'opzione enable su systemctl. Inoltre, nota che l'opzione di abilitazione crea semplicemente un file
pochi collegamenti simbolici. Potresti essere tentato di creare questi collegamenti da solo. Tuttavia, il pre-
Il metodo ferred consiste nell'usare il comando systemctl per eseguire questa operazione.

Disabilitare un servizio con systemd


È possibile utilizzare l'opzione disable sul comando systemctl per mantenere un servizio dall'inizio-
in fase di avvio. Tuttavia, non interrompe immediatamente il servizio. Devi usare lo stop
opzione discussa nella sezione "Arresto di un servizio con systemd". Il seguente esempio
mostra come disabilitare un servizio attualmente abilitato.

# systemctl disabilita cups.service


rm "/etc/systemd/system/printer.target.wants/cups.service"
rm "/etc/systemd/system/sockets.target.wants/cups.socket"
rm "/etc/systemd/system/multi-user.target.wants/cups.path"
# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; disabilitato )
Attivo: attivo (in esecuzione) da martedì, 01 maggio 2018 06:06:41 ...
PID principale: 17172 (cupsd)
CGroup: nome = systemd: /system/cups.service
17172 / usr / sbin / cupsd -f

L'opzione disable rimuove semplicemente alcuni file tramite il metodo preferito di systemctl
comando. Si noti anche nell'esempio precedente che sebbene il servizio cups sia ora disattivato
abilitato, il demone cups è ancora attivo (in esecuzione). Con systemd, alcuni servizi non possono essere
Disabilitato. Questi servizi sono servizi statici. Considera il seguente servizio, dbus.service:

# systemctl stato dbus.service


dbus.service - Bus messaggi di sistema D-Bus
Loaded: caricato (/lib/systemd/system/dbus.service; statico)
Attivo: attivo (in esecuzione) da lunedì, 30 aprile 2018 12:35: ...
PID principale: 707 (dbus-daemon)
...
# systemctl disabilita dbus.service
# systemctl stato dbus.service
dbus.service - Bus messaggi di sistema D-Bus 15
Loaded: caricato (/lib/systemd/system/dbus.service; statico)
Attivo: attivo (in esecuzione) da lunedì, 30 aprile 2018 12:35: ...
PID principale: 707 (dbus-daemon)
...

411

Pagina 452

Parte IV: diventare un amministratore di server Linux


Quando il comando systemctl disable viene emesso su dbus.service, è semplicemente
ignorato. Ricorda che statico significa che il servizio è abilitato per impostazione predefinita e non può esserlo
disabilitato, anche da root.

A volte, disabilitare un servizio non è sufficiente per assicurarsi che non venga eseguito. Per
Ad esempio, potresti volere che network.service sostituisca NetworkManager.service per
avvio delle interfacce di rete sul sistema. La disabilitazione di NetworkManager manterrebbe il file
servizio dall'inizio da solo. Tuttavia, se qualche altro servizio elenca NetworkManager come
una dipendenza, quel servizio tenterà di avviare NetworkManager all'avvio.

Puoi disabilitare un servizio in modo da impedirne l'esecuzione sul tuo sistema


usa l'opzione maschera. Ad esempio, per impostare il servizio NetworkManager in modo che non venga mai eseguito,
digitare quanto segue:

# systemctl mask NetworkManager.service


ln -s '/ dev / null' '/etc/systemd/system/NetworkManager.service'

Come mostra l'output, il file NetworkManager.service in / etc è collegato a / dev /


nullo. Quindi, anche se qualcuno cercasse di eseguire quel servizio, non succederebbe nulla. Poter
utilizzare di nuovo il servizio, è possibile digitare systemctl unmask NetworkManager.service.

Ora che hai capito come abilitare i singoli servizi a essere persistenti (e come
disabilitare o mascherare i singoli servizi), è necessario esaminare i gruppi di servizi nel loro insieme. Il
la sezione successiva spiega come avviare gruppi di servizi all'avvio.

Configurazione di un runlevel predefinito o di un'unità target


Mentre un servizio persistente è uno che viene avviato all'avvio del server, un servizio persistente (predefinito)
runlevel o unità di destinazione è un gruppo di servizi che vengono avviati al momento dell'avvio. Entrambi classici
SysVinit e Upstart definiscono questi gruppi di servizi come runlevel , mentre systemd li chiama
unità target .

Configurazione del runlevel predefinito di SysVinit


Impostare il runlevel persistente per un server Linux utilizzando SysVinit in / etc / inittab
file. Una parte di questo file è mostrata qui:

# cat / etc / inittab


#
# inittab Questo file descrive come dovrebbe il processo INIT
# impostare il sistema in un determinato livello di esecuzione.
...
id: 5: initdefault:
...

412

Pagina 453

Capitolo 15: Avvio e arresto dei servizi

La riga initdefault nell'esempio mostra che il runlevel predefinito corrente è il runlevel 5. To


cambialo, modifica semplicemente il file / etc / inittab usando il tuo editor preferito e cambia il file
5 ad uno dei seguenti runlevel: 2, 3, o 4. non utilizzare i runlevel 0 o 6 in questo file!
Ciò causerebbe l'arresto o il riavvio del server quando viene avviato.

Configurazione del runlevel predefinito in Upstart


Alcune distribuzioni usano ancora il file / etc / inittab per impostare il runlevel predefinito, mentre
altri usano il file /etc/init/rc-sysinit.conf.

In precedenza Fedora e il demone di inizializzazione Upstart di RHEL usano ancora il file / etc / inittab.
Pertanto, è sufficiente modificare il runlevel predefinito come si farebbe su un sistema SysVinit.

Il demone di inizializzazione Upstart di Ubuntu utilizza il file /etc/init/rc-sysinit.conf per impostare il


runlevel predefinito, una parte del quale è mostrato nel codice che segue. La riga di codice per
la modifica è env DEFAULT_RUNLEVEL =. Modifica semplicemente questo file e cambia quel numero in
runlevel che desideri. Tuttavia, ricorda che il runlevel 2 di Ubuntu è equivalente ai runlevel
3, 4 e 5.

$ cat /etc/init/rc-sysinit.conf
# rc-sysinit - Compatibilità con l'inizializzazione di System V.
...
# Runlevel predefinito, può essere sovrascritto dalla riga di comando del kernel
# o simulando una vecchia voce / etc / inittab
env DEFAULT_RUNLEVEL = 2

Configurazione dell'unità di destinazione predefinita per systemd


Per systemd, il termine unità di destinazione si riferisce a gruppi di servizi da avviare. Il
di seguito vengono mostrate le varie unità di destinazione che è possibile configurare per essere persistenti e le loro
unità target equivalenti compatibili con le versioni precedenti e specifiche per runlevel.

■ multi-user.target =

■ runlevel2.target

■ runlevel3.target

■ runlevel4.target

■ graphical.target = runlevel5.target

L'unità di destinazione persistente viene impostata tramite un collegamento simbolico al file di unità default.target.
Considera quanto segue:

# ls -l /etc/systemd/system/default.target
15
lrwxrwxrwx. 1 radice radice 36 Mar 13 17:27
/etc/systemd/system/default.target ->
/lib/systemd/system/runlevel5.target

413

Pagina 454

Parte IV: diventare un amministratore di server Linux

# ls -l /lib/systemd/system/runlevel5.target
lrwxrwxrwx. 1 radice radice 16 marzo 27 15:39
/lib/systemd/system/runlevel5.target ->
graphical.target

L'esempio mostra che l'attuale unità di destinazione persistente su questo server è runlevel5.
target perché default.target è un collegamento simbolico al file unit runlevel5.target.
Tuttavia, si noti che runlevel5.target è anche un collegamento simbolico e punta a grafici
cal.target. Pertanto, l'attuale unità di destinazione persistente di questo server è graphical.target.

Per impostare una diversa unità di destinazione in modo che sia persistente, è sufficiente modificare il collegamento simbolico
per default.target. Per essere coerenti, attenersi alle unità target del runlevel, se lo sono
utilizzato sul tuo server.

L'esempio seguente cambia l'unità di destinazione persistente del server da grafica.


target a multi-user.target modificando il collegamento simbolico default.target
da runlevel5.target a runlevel3.target. L'opzione -f è usata su ls -s
comando per forzare l'interruzione di qualsiasi collegamento simbolico corrente e il nuovo simbolico designato
collegamento da applicare.

# ls -l /lib/systemd/system/runlevel3.target
lrwxrwxrwx. 1 radice radice 17 marzo 27 15:39
/lib/systemd/system/runlevel3.target ->
multi-user.target
# ln -sf /lib/systemd/system/runlevel3.target \
/etc/systemd/system/default.target
# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 radice radice 36 1 maggio 10:06
/etc/systemd/system/default.target ->
/lib/systemd/system/runlevel3.target

Quando il server viene riavviato, multi-user.target è l'unità di destinazione persistente. Qualunque


i servizi nell'unità multi-user.target vengono avviati (attivati) in quel momento.

Aggiunta di servizi nuovi o personalizzati


Occasionalmente, è necessario aggiungere un nuovo servizio al server Linux. Inoltre, potresti doverlo fare
personalizzare un particolare servizio. Quando si presentano queste esigenze, è necessario seguire passaggi specifici
affinché il demone di inizializzazione del server Linux assuma la gestione del file
servizio o riconoscere la personalizzazione di esso.

Aggiunta di nuovi servizi a SysVinit


Quando si aggiunge un servizio nuovo o personalizzato a un server SysVinit Linux, è necessario completare
tre passaggi per avere il servizio gestito da SysVinit.
414

Pagina 455

Capitolo 15: Avvio e arresto dei servizi

1. Creare un file di script di servizio nuovo o personalizzato.

2. Spostare lo script di servizio nuovo o personalizzato nella posizione corretta per SysVinit
gestione.
3. Aggiungere il servizio a un runlevel specifico.

Passaggio 1: creare un file di script di servizio nuovo o personalizzato


Se stai personalizzando uno script di servizio, fai semplicemente una copia del file unit originale da
/etc/rc.d/init.d e aggiungere le personalizzazioni desiderate.

Se stai creando un nuovo script, devi assicurarti di gestire tutte le varie opzioni
vuoi che il comando di servizio accetti per il tuo servizio, come avvio, arresto,
riavviare e così via.

Per un nuovo script, soprattutto se non hai mai creato uno script di servizio prima, lo sarebbe
saggio fare una copia di uno script di servizio corrente da /etc/rc.d/init.d e modificarlo
per soddisfare le esigenze del tuo nuovo servizio. Considera il seguente esempio parziale di cupsd
script del servizio:

# cat /etc/rc.d/init.d/cups
#! / bin / sh
...
# chkconfig: 2345 25 10
...
inizio () {
echo -n $ "Avvio di $ prog:"
# avvia il demone
demone $ DAEMON
RETVAL = $?
eco
[$ RETVAL = 0] && tocca / var / lock / subsys / cups
restituire $ RETVAL
}

fermare () {
# ferma demone
echo -n $ "Sto fermando $ prog:"
killproc $ DAEMON
RETVAL = $?
eco [$ RETVAL = 0] && rm -f / var / lock / subsys / cups
}

ricomincia() {
fermare 15
inizio
}

415

Pagina 456

Parte IV: diventare un amministratore di server Linux

caso $ 1 in
...
Lo script del servizio cups inizia creando funzioni per ciascuno dei file start, stop e
opzioni di riavvio. Se ti senti a disagio con la scrittura di script di shell, rivedi il Capitolo 7,
"Scrivere semplici script di shell", per migliorare le tue capacità.

Una riga che dovresti assicurarti di controllare ed eventualmente modificare nel tuo nuovo script è il file
chkconfig che è commentata. Per esempio:

# chkconfig: 2345 25 10

Quando si aggiunge lo script del servizio in un passaggio successivo, il comando chkconfig legge quella riga in
imposta i runlevel in cui il servizio si avvia (2, 3, 4 e 5), il suo ordine di esecuzione quando lo script è impostato
per iniziare (25) e il suo ordine di uccisione quando è impostato per fermarsi (10).

Controlla l'ordine di avvio nel runlevel predefinito prima di aggiungere il tuo script. Per esempio:

# ls /etc/rc5.d
...
/etc/rc5.d/S22messagebus
/etc/rc5.d/S23NetworkManager
/etc/rc5.d/S24nfslock
/etc/rc5.d/S24openct
/etc/rc5.d/S24rpcgssd
/etc/rc5.d/S25blk-availability
/etc/rc5.d/S25cups
/etc/rc5.d/S25netfs
/etc/rc5.d/S26acpid
/etc/rc5.d/S26haldaemon
/etc/rc5.d/S26hypervkvpd
/etc/rc5.d/S26udev-post

...

In questo caso, la riga chkconfig nello script S25My_New_Service farà sì che lo script
da aggiungere dopo S25cups e prima di S25netfs nell'ordine di avvio. Puoi modificare il file
chkconfig nello script del servizio se si desidera che il servizio venga avviato prima (utilizzare un file
numero) o successivo (utilizzare un numero maggiore) nell'elenco degli script di servizio.

Passaggio 2: aggiungere lo script del servizio a /etc/rc.d/init.d


Dopo aver modificato o creato e testato il file di script del servizio, è possibile spostarlo in
la posizione corretta: /etc/rc.d/init.d:

# cp My_New_Service /etc/rc.d/init.d
# ls /etc/rc.d/init.d/My_New_Service
/etc/rc.d/init.d/My_New_Service

416

Pagina 457

Capitolo 15: Avvio e arresto dei servizi

Passaggio 3: aggiungere il servizio alle directory dei runlevel


Questo passaggio finale imposta lo script di servizio per l'avvio e l'arresto a runlevel e controlli diversi
che lo script del servizio funzioni.

1. Per aggiungere lo script in base alla riga chkconfig nello script del servizio, digitare il
a seguire:
# chkconfig --add My_New_Service
# ls /etc/rc?.d/*My_New_Service
/etc/rc0.d/K10My_New_Service /etc/rc4.d/S25My_New_Service
/etc/rc1.d/K10My_New_Service /etc/rc5.d/S25My_New_Service
/etc/rc2.d/S25My_New_Service /etc/rc6.d/K10My_New_Service
/etc/rc3.d/S25My_New_Service

In base all'esempio precedente (chkconfig: 2345 25 10), collegamenti simbolici allo script
impostare il servizio in modo che inizi nella posizione 25 (S25) per i runlevel 2, 3, 4 e 5. Inoltre, i collegamenti sono
impostato per arrestare (o non avviare) ai runlevel 0, 1 e 6.

2. Dopo aver creato i collegamenti simbolici, verificare che il servizio nuovo o modificato
funziona come previsto prima di eseguire un riavvio del server.
# service My_New_Service start
Avvio di My_New_Service: [OK]
# service My_New_Service stop
Arresto di My_New_Service: [OK]

Dopo che tutto è a posto, il servizio nuovo o modificato inizia a ogni runlevel
hai selezionato sul tuo sistema. Inoltre, puoi avviarlo o interromperlo manualmente utilizzando il
comando sservice.
Aggiunta di nuovi servizi a Upstart
È necessario completare solo un passaggio per aggiungere un nuovo servizio o personalizzare un servizio esistente
con Upstart. Basta aggiungere un nuovo file di configurazione del lavoro o modificarne uno esistente. Tuttavia, questo
un passaggio può essere piuttosto complicato.

I file di configurazione del lavoro del servizio Upstart si trovano tutti nella directory / etc / init.
Questi file sono solo testo normale. Usano una sintassi speciale per dirigere Upstart su come
trattare un particolare servizio. Il seguente esempio di un file di configurazione ha alcuni file
sintassi semplice:

# cat ck-log-system-restart.conf
# Evento Upstart
# ck-log-system-restart - scrivi il riavvio del sistema nel log
inizia al runlevel 6 15
compito
eseguire / usr / sbin / ck-log-system-restart

417

Pagina 458

Parte IV: diventare un amministratore di server Linux

Qualsiasi segno di cancelletto (#) denota una riga di commento e viene ignorato da Upstart. Le altre linee sono
chiamate stanze e hanno una sintassi speciale per il controllo dei lavori Upstart. Le strofe di
file precedenti sono i seguenti:

■ starton: questa stanza definisce quale evento emesso avvia il servizio o l'attività.
In questo caso particolare, quando viene emesso l'evento runlevel 6, il ck-log-
si avvia il riavvio del sistema.
■ task:la stanza qui definisce che questo particolare lavoro è un lavoro di attività anziché un
servizio.
■ exec: questa stanza definisce quale programma viene eseguito per avviare l'attività. Invece del file
exec, è possibile incorporare un vero script della riga di comando da eseguire qui utilizzando
la stanza script prima del codice effettivo e lo script finale dopo di esso.

Di seguito viene mostrato un file di configurazione del lavoro leggermente più complicato, per il demone cron.
Ci sono alcune stanze aggiuntive che non erano nell'esempio precedente. Si noti che il file
la stanza task non è presente nel file. Ciò indica che questo particolare lavoro è un lavoro di servizio
invece di un compito.

# cat cron.conf
# cron - regolare demone di elaborazione del programma in background
# cron è un programma UNIX standard che viene eseguito specificato dall'utente
# programmi a orari programmati periodici
descrizione "demone di elaborazione del programma in background regolare"
inizia su runlevel [2345]
stop al runlevel [! 2345]
aspettarsi la forcella
respawn
exec cron

Le stanze aggiuntive in questo esempio sono le seguenti:

■ descrizione: questa stanza è facoltativa e descrive semplicemente il servizio.


■ inizia con: sebbene l'inizio di parte di questa strofa sia stato precedentemente trattato,
la sintassi [2345] non lo era. L'uso delle parentesi significa che la stanza è valida per qualsiasi
di quei numeri. Pertanto, il servizio viene avviato al runlevel 2, 3, 4 o 5.
■ stop on: la stanza qui definisce gli eventi emessi su cui il servizio si interrompe. Il
[! 2345] in questa strofa significa non runlevel 2 o 3 o 4 o 5. In altre parole, esso
si ferma solo al runlevel 0, runlevel 1 o runlevel 6.
■ Aspettatevi: questa particolare strofa è piuttosto importante e un po 'complicata. L'aspettativa
la sintassi fork consente a Upstart di tenere traccia di questo demone e di qualsiasi suo processo figlio
(forchette).
■ respawn: la stanza qui dice a Upstart di riavviare questo servizio se viene mai
con un mezzo al di fuori del suo normale arresto.

418
Pagina 459

Capitolo 15: Avvio e arresto dei servizi

Per testare i file di configurazione del lavoro nuovi o modificati, è possibile impostare la stanza start on su un evento non standard.
In altre parole, puoi creare il nome del tuo evento. Ad esempio, utilizza il nome dell'evento MyTest. Per testare il nuovo
file di configurazione, digiti initctl emit MyTest nella riga di comando. Se il tuo file di configurazione funziona correttamente
rettamente, quindi modificare la stanza start on nell'evento Upstart corretto.

Ogni file di configurazione del lavoro deve seguire almeno tre regole. Il file di configurazione del lavoro deve:

■ Non essere vuoto

■ Sii sintatticamente corretto


■ Contenere almeno una stanza legale

Sebbene esistano solo tre regole, creare o modificare un file di configurazione del lavoro di servizio
correttamente può essere un compito piuttosto difficile . Vedi http://upstart.ubuntu.com/cookbook
per assistenza sulla sintassi necessaria per questi file. Inoltre, puoi saperne di più sugli eventi che
emette digitando man upstart-events nella riga di comando.

Aggiunta di nuovi servizi a systemd


Quando si aggiunge un servizio nuovo o personalizzato a un server systemd Linux, è necessario completare
tre passaggi per avere il servizio gestito da systemd:

1. Creare un file di unità di configurazione del servizio nuovo o personalizzato per il nuovo o personalizzato
servizio mirato.

2. Spostare il file dell'unità di configurazione del servizio nuovo o personalizzato nella posizione corretta
per la gestione di systemd.
3. Aggiungere il servizio a un'unità di destinazione specifica Vuole avere il nuovo o personalizzato
il servizio si avvia automaticamente con altri servizi.

Passaggio 1: creare un file di unità di configurazione del servizio nuovo o personalizzato


Se stai personalizzando un file di unità di configurazione del servizio, fai semplicemente una copia dell'originale
unit da / lib / systemd / system e aggiungere le personalizzazioni desiderate.

Per i nuovi file, ovviamente, stai creando un file di configurazione dell'unità di servizio da zero.
Considera il seguente modello di file di unità di servizio di base. Come minimo, hai bisogno
Descrizione e opzioni ExecStart per un file di configurazione dell'unità di servizio.

# cat My_New_Service.service
[Unità] 15
Description = Il mio nuovo servizio
[Servizio]
ExecStart = / usr / bin / My_New_Service

419

Pagina 460

Parte IV: diventare un amministratore di server Linux

Per ulteriore assistenza sulla personalizzazione o la creazione di un nuovo file di unità di configurazione e le varie
opzioni necessarie, puoi usare le pagine man. Nella riga di comando, digita man systemd.ser-
vice per saperne di più sulle varie opzioni di file delle unità di servizio.

Passaggio 2: spostare il file dell'unità di configurazione del servizio


Prima di spostare il file dell'unità di configurazione del servizio nuovo o personalizzato, è necessario farlo
consapevole del fatto che esistono due posizioni potenziali per archiviare i file delle unità di configurazione del servizio. Il
quello che scegli determina se le personalizzazioni hanno effetto e se rimangono
costante attraverso gli aggiornamenti del software.

È possibile inserire il file dell'unità di configurazione del servizio di sistema in uno dei due seguenti
località:

■/ etc / systemd / system


■ Questa posizione viene utilizzata per memorizzare i file dell'unità di configurazione del servizio locale personalizzati.
■I file in questa posizione non vengono sovrascritti da installazioni o aggiornamenti software.

I file qui sono usati dal sistema anche se c'è un file con lo stesso nome in / lib /
directory systemd / system.

■/ lib / systemd / system

■ Questa posizione viene utilizzata per archiviare i file dell'unità di configurazione del servizio di sistema.
■I file in questa posizione vengono sovrascritti dalle installazioni e dagli aggiornamenti del software.

I file possono essere usati dal sistema solo se c'è non è un file con lo stesso nome nel file / etc /
directory systemd / system.

Pertanto, il posto migliore in cui memorizzare il file dell'unità di configurazione del servizio nuovo o personalizzato è
/ etc / systemd / system.

Quando crei un servizio nuovo o personalizzato, affinché la modifica abbia effetto senza il riavvio del server, è necessario
emettere un comando speciale. Nella riga di comando, digita systemctl daemon-reload.

Passaggio 3: aggiungere il servizio alla directory Wants


Questo passaggio finale è facoltativo. Deve essere fatto solo se si desidera avviare il nuovo servizio
con una particolare unità di destinazione del sistema. Affinché un servizio venga attivato (avviato) da un particolare
lar target unit, deve trovarsi nella directory Wants di tale unità target.

Innanzitutto, aggiungi la riga WantedBy = wanted.target in fondo alla configurazione del servizio
file di unità di misura. Il seguente esempio mostra che l'unità di destinazione desiderata per questo nuovo servizio
è multi-user.target.

420

Pagina 461

Capitolo 15: Avvio e arresto dei servizi

# cat /etc/systemd/system/My_New_Service.service
[Unità]
Description = Il mio nuovo servizio falso
[Servizio]
ExecStart = / usr / bin / My_New_Service
[Installare]
WantedBy = multi-user.target

Per aggiungere una nuova unità di servizio a un'unità di destinazione, è necessario creare un collegamento simbolico. Il seguente-
L'esempio mostra i file che si trovano nella directory Wants dell'unità multi-user.target.
In precedenza, nella sezione "Informazioni su systemd init", il comando systemctl era
utilizzato per elencare i desideri, ed è ancora il metodo preferito. Si noti che in questa directory, il file
i file sono collegamenti simbolici che puntano ai file di configurazione dell'unità di servizio in / lib / systemd /
directory di sistema.

# ls /etc/systemd/system/multi-user.target.wants
abrt-ccpp.service cups.path remote-fs.target
abrtd.service fcoe.service rsyslog.service
abrt-oops.service irqbalance.service sendmail.service
abrt-vmcore.service lldpad.service sm-client.service
atd.service mcelog.service sshd-keygen.service
auditd.service mdmonitor.service sshd.service
...
# ls -l /etc/systemd/system/multi-user.target.wants
totale 0
lrwxrwxrwx. 1 radice radice 37 Nov 2 22:29 abrt-ccpp.service ->
/lib/systemd/system/abrt-ccpp.service
lrwxrwxrwx. 1 root root 33 Nov 2 22:29 abrtd.service ->
/lib/systemd/system/abrtd.service
...
lrwxrwxrwx. 1 root root 32 Apr 26 20:05 sshd.service ->
/lib/systemd/system/sshd.service

Di seguito viene illustrato il processo di aggiunta di un file di collegamento simbolico per My_New_Service:
# ln -s /etc/systemd/system/My_New_Service.service
/etc/systemd/system/multi-user.target.wants/My_New_Service.service

Viene creato un collegamento simbolico nella directory multi-user.target.wants. Ora, il nuovo


servizio, My_New_Service, viene attivato (avviato) quando l'unità multi-user.target
è attivato.

15
Se si desidera modificare l'unità di destinazione di sistema per un servizio, è necessario modificare il collegamento del simbolo in modo che punti a un nuovo
destinazione Vuole la posizione della directory. Utilizzare il comando ls -sf per forzare l'interruzione di qualsiasi collegamento simbolico corrente e il file
nuovo collegamento simbolico designato da applicare.

421

Pagina 462

Parte IV: diventare un amministratore di server Linux

Insieme, i tre passaggi consentono di aggiungere il servizio nuovo o personalizzato a un sistema Linux
server. Ricorda che a questo punto, un nuovo servizio non è in esecuzione fino al riavvio del server. Per
avviare il nuovo servizio prima del riavvio, rivedere i comandi nella sezione "Arresto e avvio
Sezione Servizi ”.

Sommario
Il modo in cui avviare e arrestare i servizi dipende da quale demone di inizializzazione viene utilizzato
il tuo server Linux: SysVinit, Upstart o Systemd. Prima di eseguire qualsiasi gestione del servizio,
assicurati di usare gli esempi in questo capitolo per aiutarti a determinare l'iniziale del tuo server Linux
demone di tializzazione.

I concetti di avvio e arresto dei servizi vanno di pari passo con altri servizi di gestione
concetti, come rendere persistente un servizio, avviare determinati servizi all'avvio del server,
ricaricare un servizio e riavviare un servizio. Questi concetti sono molto utili mentre impari
sulla configurazione e la gestione di un server di stampa Linux nel prossimo capitolo.

Esercizi
Fare riferimento al materiale in questo capitolo per completare le attività che seguono. Se sei bloccato,
le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, ci siano spesso più
modi per completare un'attività). Prova ciascuno degli esercizi prima di fare riferimento alle risposte. Questi
task presuppongono che tu stia eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcuni
le attività funzionano anche su altri sistemi Linux).

1. Determinare quale daemon di inizializzazione sta attualmente utilizzando il server.

2. Quale comando puoi usare per controllare lo stato del demone sshd, a seconda di
il demone di inizializzazione in uso sul tuo server Linux?

3. Determina il runlevel precedente e corrente del tuo server.

4. Come puoi cambiare il runlevel predefinito o l'unità di destinazione sul tuo server Linux?

5. Per ogni daemon di inizializzazione, quali comandi elencano i servizi in esecuzione (o attivi)
il tuo server?

6. Elenca i servizi in esecuzione (o attivi) sul tuo server Linux.

7. Per ogni demone di inizializzazione, quali comandi mostrano un particolare servizio


stato attuale?
8. Mostra lo stato del daemon cups sul tuo server Linux.

9. Tentare di riavviare il daemon cups sul server Linux.

10. Tentare di ricaricare il daemon cups sul server Linux.

422
Pagina 463

CAPITOLO

16
Configurazione di un server di stampa
IN QUESTO CAPITOLO
Capire la stampa in Linux

Configurazione delle stampanti

Utilizzo dei comandi di stampa

Gestione della stampa dei documenti

Condivisione di stampanti

È USB o porta parallela) o che sono disponibili per la stampa in rete. Allo stesso modo, qualsiasi stampante
che configuri sul tuo sistema locale può essere condiviso con utenti su altri Linux, Windows o Mac
possibile configurare il proprio sistema Linux per utilizzare stampanti che sono collegate direttamente ad esso (tramite un file
aprendo la stampante come server di stampa.

Si configura una stampante come stampante Linux nativa in Fedora, RHEL, Ubuntu e altri sistemi Linux
con il Common UNIX Printing System (CUPS). Per configurare una stampante in modo che funzioni come Microsoft
In stile Windows del server di stampa, è possibile utilizzare il servizio Samba in Linux.

Questo capitolo si concentra su CUPS. In particolare, ti mostra il front-end grafico di CUPS, chiamato
la finestra Impostazioni di stampa, fornita con Fedora, Red Hat Enterprise Linux e altri Linux
distribuzioni. Utilizzando le impostazioni di stampa, puoi anche configurare le tue stampanti come server di stampa così le persone
possono stampare sulla stampante dai propri computer.

Se non si dispone di un desktop o si desidera stampare da uno script di shell, questo capitolo mostra come
utilizzare i comandi di stampa. Dalla riga di comando, sono disponibili comandi di stampa come lpr per
eseguire la stampa. Esistono anche comandi per interrogare le code di stampa (lpq), manipolare la stampa
code (lpc) e rimozione delle code di stampa (lprm).

Sistema di stampa UNIX comune


CUPS è diventato lo standard per la stampa da Linux e altri sistemi operativi simili a UNIX.
È stato progettato per soddisfare le esigenze odierne di definizioni e condivisione di stampanti standardizzate su Internet
Reti basate su protocollo (come lo sono oggi la maggior parte delle reti di computer). Quasi tutte le distribuzioni Linux
oggi arriva con CUPS come servizio di stampa. Ecco alcune delle caratteristiche del servizio:

423

Pagina 464

Parte IV: diventare un amministratore di server Linux

■ IPP: il protocollo UPS è basato sul protocollo di stampa Internet (http://www.pwg.org/ipp),


uno standard creato per semplificare il modo in cui le stampanti possono essere condivise su reti IP.
Nel modello IPP, i server di stampa e i client che desiderano stampare possono scambiarsi informazioni
informazioni sul modello e le caratteristiche di una stampante che utilizza HTTP (ovvero contenuto web)
protocollo. Un server può anche trasmettere la disponibilità di una stampante quindi un client di stampa
può facilmente trovare un elenco di stampanti disponibili localmente senza configurazione.
■ Driver: UPS ha anche standardizzato la modalità di creazione dei driver di stampa. L'idea era di
hanno un formato comune che potrebbe essere utilizzato dai produttori di stampanti in modo che un driver
potrebbe funzionare su tutti i diversi tipi di sistemi UNIX. In questo modo, un produttore
ha dovuto creare il driver solo una volta per funzionare con Linux, Mac OS X e una varietà di
Derivati ​di UNIX.
■ Classi stampante: è possibile utilizzare le classi stampante per creare più voci del server di stampa
quel punto alla stessa stampante o una voce del server di stampa che punta a più
stampanti. Nel primo caso, più voci possono consentire ciascuna diverse opzioni
(come il puntamento a un particolare vassoio della carta o la stampa con determinate dimensioni dei caratteri
o margini). Nel secondo caso, puoi avere un pool di stampanti in modo che la stampa sia
distribuito. In questo caso, una stampante malfunzionante o una stampante che sta trattando
con documenti molto grandi non si interrompe la stampa. CUPS supporta anche
classi implicite , che sono classi di stampa che si formano unendo reti identiche
stampanti automaticamente.
■ Esplorazione della stampante: con la navigazione della stampante, i computer client possono vedere qualsiasi CUPS
stampanti sulla rete locale con navigazione abilitata. Di conseguenza, i clienti possono
selezionare semplicemente le stampanti che desiderano utilizzare dai nomi delle stampanti trasmessi
rete, senza bisogno di sapere in anticipo come si chiamano le stampanti
e dove sono collegati. È possibile disattivare la funzione per impedire ad altri di accenderla
la rete locale dal vedere una stampante.
■ Comandi di stampa UNIX: per l' integrazione in Linux e altri ambienti UNIX,
CUPS offre versioni di comandi standard per la stampa e la gestione delle stampanti
che sono stati tradizionalmente offerti con i sistemi UNIX.

Invece di usare la finestra Impostazioni di stampa, puoi configurare la stampa CUPS in altri
modi anche:

■ Configurazione di CUPS da un browser : il progetto CUPS stesso offre un web-based


interfaccia per l'aggiunta e la gestione delle stampanti. Con il servizio cupsd in esecuzione, digitare
localhost: 631 da un browser web sul computer che esegue il servizio CUPS a
gestire la stampa. (Vedere la sezione "Utilizzo dell'amministrazione CUPS basata sul Web" più avanti in
questo capitolo.)
■ Configurazione manuale di CUPS: è anche possibile configurare CUPS manualmente (ovvero,
modificare i file di configurazione e avviare il demone cupsd dal comando
linea). I file di configurazione per CUPS sono contenuti nella directory / etc / cups.
In particolare, potresti essere interessato al file cupsd.conf, che identifica
autorizzazione, autenticazione e altre informazioni per il daemon della stampante e

424

Pagina 465

Capitolo 16: Configurazione di un server di stampa

printers.conf, che identifica gli indirizzi e le opzioni per le stampanti configurate.


Utilizzare il file classes.conf per definire le classi di stampanti locali.

Proveniente da Windows 16
Puoi stampare su CUPS anche da sistemi non UNIX. Ad esempio, puoi utilizzare una stampante PostScript
driver per stampare direttamente da un sistema Windows al server CUPS. Puoi usare CUPS senza modificare
configurando il computer Windows con un driver PostScript che utilizza http: // pr intserver-
nome : 631 / printers / targetPrinter come porta di stampa.

Potrebbe anche essere possibile utilizzare i driver della stampante Windows nativi per la stampante invece del PostScript
conducente. Se il driver Windows nativo non funziona immediatamente nella coda di stampa CUPS, tu
può creare una coda di stampa non elaborata in CUPS e utilizzarla invece. La coda di stampa non elaborata passa direttamente
attraverso i dati dal driver di stampa nativo di Windows alla stampante.

Per usare CUPS, devi avere il pacchetto cups installato in Fedora o RHEL. La maggior parte dei desktop
Le distribuzioni Linux includono CUPS durante l'installazione iniziale del sistema. Se non è installato in
un'installazione Fedora o RHEL, installala digitando quanto segue:

# yum installa tazze

Configurazione delle stampanti


Sebbene utilizzi gli strumenti di amministrazione della stampante creati appositamente per la tua distribuzione
di solito è il migliore, molti sistemi Linux si affidano semplicemente agli strumenti forniti con CUPS
pacchetto software.

Questa sezione esplora come utilizzare gli strumenti di amministrazione basati sul Web di CUPS forniti con
ogni distribuzione Linux e quindi esamina lo strumento Impostazioni di stampa system-config-
stampante, disponibile con i sistemi Fedora e Red Hat Enterprise Linux da abilitare
per configurare le stampanti. In alcuni casi non è necessaria alcuna configurazione, perché connesso
le stampanti possono essere rilevate e configurate automaticamente. Per installare lo strumento Impostazioni di stampa,
come tipo di radice:
# yum install system-config-printer

Aggiunta automatica di una stampante


Le stampanti CUPS possono essere configurate per trasmettere automaticamente la loro disponibilità in rete
funzionano in modo che un sistema client possa rilevarli e utilizzarli senza configurazione. Collega un USB
stampante al computer e la stampante può essere rilevata automaticamente e resa disponibile
in grado. Infatti, se colleghi una stampante locale in Fedora e il driver di stampa non è ancora installato,
viene richiesto di installare i pacchetti software necessari per utilizzare la stampante.

425

Pagina 466

Parte IV: diventare un amministratore di server Linux

La prima volta che si stampa un documento o si visualizza lo strumento Impostazioni di stampa, le stampanti lo sono
pronto all'uso. È possibile eseguire un'ulteriore configurazione utilizzando l'amministrazione CUPS basata sul web
strumento o la finestra Impostazioni di stampa.

Utilizzo dell'amministrazione CUPS basata sul web


CUPS offre il proprio strumento amministrativo basato sul Web per l'aggiunta, l'eliminazione e la modifica
configurazioni della stampante sul computer. Il servizio di stampa CUPS (utilizzando il demone cupsd)
ascolta sulla porta 631 per fornire l'accesso all'interfaccia amministrativa basata sul Web di CUPS e
condividere stampanti.

Se CUPS è già in esecuzione sul tuo computer, puoi utilizzare immediatamente CUPS basato sul web
amministrazione dal tuo browser web. Per vedere se CUPS è in esecuzione e per avviare le impostazioni
le stampanti, aprire un browser Web sul computer locale e digitare quanto segue nel suo
casella di posizione: http: // localhost: 631 / .

Quando si richiedono funzioni che richiedono, potrebbe essere visualizzato un prompt per un nome di accesso e una password validi
richiederlo. In tal caso, digitare il nome di accesso root e la password dell'utente root e fare clic su OK. UN
appare una schermata simile a quella mostrata nella Figura 16.1.

FIGURA 16.1

CUPS fornisce uno strumento di amministrazione basato sul web.

426

Pagina 467
Capitolo 16: Configurazione di un server di stampa

Per impostazione predefinita, l'amministrazione CUPS basata sul Web è disponibile solo dall'host locale. Accedere
amministrazione di CUPS basata sul web da un altro computer, dalla pagina principale di CUPS, selezionare
nella scheda Amministrazione, seleziona la casella di controllo accanto a Consenti amministrazione remota e
selezionare il pulsante Modifica impostazioni. Quindi, da un browser remoto, puoi accedere a CUPS
Pagina di amministrazione accedendo alla porta 631 sul server CUPS (ad esempio , http: // host. 16
example.com:631).

Potrebbe essere necessario riavviare i CUP affinché la modifica abbia effetto: systemctl riavvia cups.
servizio. Se non stai già eseguendo il browser come utente root, devi anche entrare
il nome utente e la password root.

Per configurare una stampante che non viene rilevata automaticamente, è possibile aggiungere una stampante dal file
Schermata di amministrazione. Quando è visualizzata la schermata Amministrazione, è possibile aggiungere una stampante come
segue:

1. Fare clic sul pulsante Aggiungi stampante. Viene visualizzata la schermata Aggiungi nuova stampante.

2. Selezionare il dispositivo a cui è collegata la stampante. La stampante può essere


collegato localmente a una porta parallela, SCSI, seriale o USB direttamente sul computer
puter. In alternativa, puoi selezionare un tipo di connessione di rete per le stampanti Apple
(appSocket / HP JetDirect), protocollo di stampa Internet (http o ipp) o Windows
stampante (utilizzando Samba o SMB).
3. Se vengono richieste ulteriori informazioni, potrebbe essere necessario descrivere ulteriormente il file
collegamento alla stampante. Ad esempio, potrebbe essere necessario immettere la velocità di trasmissione e
parità per una porta seriale, oppure potrebbe essere richiesto l'indirizzo di rete per un IPP
o stampante Samba.

4. Digitare un nome, una posizione e una descrizione per la stampante; seleziona se lo desideri
condividi questa stampante e fai clic su Continua .
5. Selezionare la marca del driver di stampa. Se non vedi il produttore del tuo file
stampante elencata, scegliere PostScript per una stampante PostScript o HP per una stampante PCL.
Per il produttore che scegli, puoi selezionare un modello specifico.
6. Impostare le opzioni. Se ti viene chiesto di impostare le opzioni per la tua stampante, puoi farlo. Poi
selezionare Imposta opzioni stampante per continuare.
7. La stampante dovrebbe essere disponibile. Se la stampante viene aggiunta correttamente, fare clic su
nome della stampante per visualizzare la nuova pagina della stampante; dalla pagina della stampante,
è possibile selezionare Manutenzione o Amministrazione per stampare una pagina di prova o modificare il file
configurazione della stampante.

Una volta completata la configurazione di base della stampante, ora puoi lavorare ulteriormente con le tue stampanti.
Ecco alcuni esempi di ciò che puoi fare:

■ Elenca i lavori di stampa. Fare clic su Mostra tutti i lavori per vedere da quali lavori di stampa sono attualmente attivi
una delle stampanti configurate per questo server. Fare clic su Mostra lavori completati per vedere
informazioni sui lavori già stampati.

427

Pagina 468

Parte IV: diventare un amministratore di server Linux

■ Creare una classe di stampanti. Fare clic sulla scheda Amministrazione, scegliere Aggiungi classe e identificare
tificare un nome, una descrizione e una posizione per una classe di stampanti. Dall'elenco delle stampanti
(Membri) configurati sul tuo server, seleziona quelli per entrare in questa classe.
■ Annullare o spostare un lavoro di stampa. Se si stampa un lavoro di 100 pagine per errore o se la stampante
sta vomitando spazzatura, la funzione Annulla può essere molto utile. Allo stesso modo, se hai inviato
un lavoro di stampa sulla stampante sbagliata, la selezione Sposta lavoro può essere utile. Dal
Scheda Amministrazione, fare clic su Gestisci lavori; quindi fare clic su Mostra lavori attivi per vedere cosa
i lavori di stampa sono attualmente in coda per la stampante. Seleziona il pulsante Annulla lavoro
accanto al lavoro di stampa che si desidera annullare oppure selezionare Sposta lavoro per spostare il lavoro di stampa
su una stampante diversa.
■ Visualizza stampanti. È possibile fare clic sulla scheda Stampanti nella parte superiore di qualsiasi CUPS
pagine di amministrazione basate sul Web per visualizzare le stampanti configurate. Per
ogni stampante visualizzata, è possibile selezionare Attività di manutenzione o amministrative.
In Manutenzione, fare clic su Pausa stampante (per interrompere la stampa ma ancora
accetta lavori di stampa per la coda), Rifiuta lavori (per non accettare ulteriori lavori di stampa
per il momento), Sposta tutti i lavori (per spostarli su un'altra stampante), Annulla tutti i lavori
(per eliminare tutti i lavori di stampa) o Stampa pagina di prova (per stampare una pagina). La Figura 16.2 mostra il file
informazioni sulla scheda Stampanti per una stampante specifica.

FIGURA 16.2

È possibile eseguire attività di amministrazione dalla scheda Stampanti.

Utilizzando la finestra Impostazioni di stampa


Se stai usando Fedora, RHEL o altri sistemi basati su Red Hat, puoi usare Print
Finestra delle impostazioni per configurare le stampanti. In effetti, ti consiglio di usarlo al posto di
Amministrazione Web di CUPS perché i file di configurazione della stampante risultanti sono personalizzati
lavorare con il modo in cui il servizio CUPS viene avviato su quei sistemi.

428

Pagina 469

Capitolo 16: Configurazione di un server di stampa

Dopo aver installato il pacchetto (yum install system-config-printer), per installare


una stampante dal desktop GNOME, avvia la finestra Impostazioni di stampa digitando Stampa
Impostazioni dalla schermata Attività o come utente root digitando system-config-
stampante . Questo strumento consente di aggiungere ed eliminare stampanti e modificare le proprietà della stampante.
Consente inoltre di inviare pagine di prova a tali stampanti per assicurarsi che lo siano 16
funziona correttamente.

La chiave qui è che stai configurando le stampanti gestite dal tuo demone di stampa
(cupsd per il servizio CUPS). Dopo che una stampante è stata configurata, gli utenti del sistema locale possono farlo
usalo. È possibile fare riferimento alla sezione "Configurazione dei server di stampa" per apprendere come creare il file
server disponibile per gli utenti da altri computer sulla rete.

Le stampanti che hai configurato possono essere collegate direttamente al tuo computer (come su una porta USB)
o su un altro computer sulla rete (ad esempio, da un altro sistema UNIX o
Sistema Windows).

Configurazione delle stampanti locali con la finestra Impostazioni di stampa


Aggiungi una stampante locale (in altre parole, una stampante collegata direttamente al tuo computer) con l'estensione
Finestra Impostazioni di stampa utilizzando la procedura che segue.

Aggiunta di una stampante locale


Per aggiungere una stampante locale da un desktop GNOME in Fedora 21, segui questi passaggi:

1. Selezionare Impostazioni di stampa dalla schermata Attività o digitare quanto segue come root
utente da una finestra di Terminale:
# system-config-printer &

Viene visualizzata la finestra di stampa.

2. Fare clic su Aggiungi. (Se richiesto, selezionare il pulsante per regolare il firewall per consentire l'accesso al file
porta stampante 631.) Viene visualizzata la finestra Nuova stampante.

3. Se viene rilevata la stampante che si desidera configurare, selezionarla e fare clic su


Inoltrare. Se non viene rilevato, scegliere il dispositivo a cui è collegata la stampante
(LPT # 1 e Serial Port # 1 sono le prime porte parallele e seriali, rispettivamente)
e fare clic su Avanti. (Digita / usr / sbin / lpinfo -v | less in una shell per vedere printer
tipi di connessione.) Viene chiesto di identificare il driver della stampante.
4. Per utilizzare un driver installato per la stampante, selezionare Seleziona stampante da
Database, quindi scegli il produttore della stampante. Come alternativa,
puoi selezionare Fornisci file PPD e fornire il tuo file PPD (ad esempio, se
hai una stampante che non è supportata in Linux e hai un driver che lo era
fornito con la stampante). PPD è l'acronimo di PostScript Printer Description. Selezionare
Avanti per visualizzare un elenco di modelli di stampante tra cui è possibile scegliere.
429

Pagina 470

Parte IV: diventare un amministratore di server Linux

Se la tua stampante non compare nell'elenco ma supporta PCL (HP's Printer Control Language), prova a selezionare uno dei file
Stampanti HP (come HP LaserJet). Se la stampante supporta PostScript, seleziona la stampante PostScript dall'elenco.
La selezione di Raw Print Queue consente di inviare documenti già formattati per un particolare tipo di stampante
a una stampante specifica.

5. Con il modello di stampante selezionato, fare clic sul driver che si desidera utilizzare con quello
stampante, quindi fare clic su Avanti per continuare.
6. Aggiungere le seguenti informazioni e fare clic su Avanti:
■ Nome stampante: aggiungere il nome che si desidera assegnare per identificare la stampante. Il
il nome deve iniziare con una lettera, ma dopo la lettera iniziale può contenere un
combinazione di lettere, numeri, trattini (-) e trattini bassi (_). Per esempio,
una stampante HP su un computer chiamato maple potrebbe essere chiamata hp-maple.
■ Descrizione:aggiungere alcune parole per descrivere la stampante, ad esempio le sue caratteristiche
(ad esempio, una HP LaserJet 2100M con supporto PCL e PS).
■ Posizione: aggiungere alcune parole che descrivono la posizione della stampante (ad esempio,
"Nella stanza 205 sotto la caffettiera").

7. Quando la stampante viene aggiunta, fare clic su No o Sì se viene richiesto di stampare un test
pagina. La nuova voce della stampante viene visualizzata nella finestra Impostazioni di stampa. Fare doppio clic sul file
stampante per vedere la finestra Proprietà per quella stampante, come mostrato nella Figura 16.3.

FIGURA 16.3

La finestra delle proprietà della stampante dopo aver aggiunto una stampante.

430

Pagina 471

Capitolo 16: Configurazione di un server di stampa


8. Se si desidera che la stampante sia la stampante predefinita, fare clic con il pulsante destro del mouse sulla stampante e
selezionare Imposta come predefinito. Man mano che aggiungi altre stampanti, puoi modificare l'impostazione predefinita
stampante selezionando quella desiderata e nuovamente Imposta come predefinita.
9. Verificare che la stampa funzioni. Apri una finestra di Terminale e usa lpr com
mand per stampare un file (come lpr / etc / hosts). (Se vuoi condividere questa stampante 16
con altri computer sulla rete, fare riferimento alla sezione "Configurazione della stampa
Server ", più avanti in questo capitolo).

Modifica di una stampante locale


Dopo aver fatto doppio clic sulla stampante che si desidera configurare, scegliere dal menu seguente
opzioni per modificarne la configurazione:

■ Impostazioni : descrizione, posizione, URI del dispositivo e informazioni su marca e modello


creati in precedenza vengono visualizzati in questa finestra di dialogo.
■ Criteri: fare clic su Criteri per impostare i seguenti elementi:
■ Stato: selezionare le caselle di controllo per indicare se la stampante stamperà tali processi
sono in coda (Abilitato), accettano nuovi lavori per la stampa (Accettazione lavori) o essere
disponibile per essere condiviso con altri computer che possono comunicare con il tuo
computer (condiviso). È inoltre necessario selezionare Impostazioni server e fare clic su Condividi
Stampanti pubblicate collegate a questo sistema casella di controllo prima che lo farà la stampante
accettare lavori di stampa da altri computer.
■ Criteri: in caso di errore, la selezione di arresto della stampante fa sì che tutta la stampa a
quella stampante per fermare. Puoi anche scegliere di scartare il lavoro (lavoro interrotto)
o riprovato (retry-job) in caso di una condizione di errore.
■ Banner: per impostazione predefinita non sono presenti pagine banner iniziali o finali per
stampante. Scegli l'inizio o la fine delle pagine banner che includono testo come
Classificato, Riservato, Segreto e così via.
■ Controllo dell'accesso: se la stampante è una stampante condivisa, è possibile selezionare questa finestra per
creare un elenco che consenta agli utenti di accedere alla stampante (con tutti gli altri negati) o
nega agli utenti l'accesso alla stampante (con tutti gli altri consentiti).
■ Opzioni stampante: fare clic su Opzioni stampante per impostare i valori predefiniti per le opzioni correlate a
driver della stampante. Le opzioni disponibili sono diverse per le diverse stampanti. Molti di
queste opzioni possono essere sovrascritte quando qualcuno stampa un documento. Ecco l'esame-
alcune delle opzioni che potresti (o non potresti) avere a disposizione:
■ Filigrana : sono disponibili diverse impostazioni di filigrana per consentire di aggiungere e
cambiare le filigrane sulle pagine stampate. Per impostazione predefinita, Filigrana e Sovrapposizione
sono disattivati ​(Nessuno). Selezionando Filigrana (dietro il testo) o Sovrapposizione (sopra il file
testo), è possibile configurare le altre impostazioni della filigrana per determinare come le filigrane
e le sovrapposizioni sono fatte. Le filigrane possono comparire su ogni pagina (All) o solo sulla prima
pagina (solo la prima). Seleziona Testo filigrana per scegliere quali parole utilizzare per il file
filigrana o sovrapposizione (Bozza, Copia, Riservato, Finale e così via). Allora puoi
selezionare il tipo di carattere, la dimensione, lo stile e l'intensità della filigrana o della sovrapposizione.

431

Pagina 472

Parte IV: diventare un amministratore di server Linux

■ Miglioramento della risoluzione: è possibile utilizzare le impostazioni correnti della stampante o scegliere
per attivare o disattivare il miglioramento della risoluzione.
■ Formato pagina : l'impostazione predefinita è il formato lettera USA, ma è anche possibile chiedere alla stampante di farlo
stampare in formato legale, buste, standard ISO A4 o diversi altri formati di pagina.
■ Originesupporto: consente di scegliere il vassoio da cui stampare. Selezionare il vassoio 1 per inserire le pagine
manualmente.
■ Livelli di grigio: scegliere di utilizzare i livelli di grigio correnti della stampante o avere
livelli di grigio avanzato o standard attivati.
■ Risoluzione: selezionare la risoluzione di stampa predefinita (ad esempio 300, 600 o 1.200
punti per pollice). Risoluzioni più elevate producono una qualità migliore ma richiedono più tempo
per stampare.
■ EconoMode: utilizza l'impostazione corrente della stampante o scegli una modalità in cui
risparmi toner o uno in cui hai la massima qualità possibile.
■ Opzioni processo: fare clic su Opzioni processo per impostare le opzioni predefinite comuni che verranno utilizzate
per questa stampante se l'applicazione che stampa il lavoro non li ha già impostati. Questi
include Opzioni comuni (numero di copie, orientamento, scala per adattare e pagine
per lato), Opzioni immagine (ridimensionamento, saturazione, tonalità e gamma) e Opzioni testo
(caratteri / pollice, linee / pollice e impostazioni dei margini).
■ Livelli inchiostro / toner: fare clic su Livelli inchiostro / toner per visualizzare le informazioni sulla quantità di inchiostro o
toner rimasto nella stampante. (Non tutte le stampanti riportano questi valori.)
Fare clic su Applica quando si è soddisfatti delle modifiche apportate alla stampante locale.

Configurazione di stampanti remote


Per utilizzare una stampante disponibile sulla rete, è necessario identificare quella stampante a
il tuo sistema Linux. Le connessioni della stampante remota supportate includono Networked CUPS (IPP)
stampanti, stampanti Networked UNIX (LPD), stampanti Networked Windows (Samba) e
Stampanti JetDirect. (Ovviamente, sia i server di stampa CUPS che UNIX possono essere eseguiti da Linux
sistemi così come altri sistemi UNIX.)

In ogni caso, è necessaria una connessione di rete dal sistema Linux ai server a
a cui sono collegate quelle stampanti. Per utilizzare una stampante remota è necessario che qualcuno lo configuri
quella stampante sul computer del server remoto. Vedere la sezione "Configurazione dei server di stampa"
più avanti in questo capitolo per informazioni su come farlo sul proprio server Linux.

Utilizzare la finestra Impostazioni di stampa (system-config-printer) per configurare ciascuno dei file
tipi di stampante remota. Ecco come viene fatto in Fedora 21:

1. Nella schermata Attività di GNOME 3, digitare Impostazioni di stampa e premere Invio.

2. Fare clic su Aggiungi. Viene visualizzata la finestra Nuova stampante.

3. A seconda del tipo di porte che hai sul tuo computer, seleziona una delle
il seguente:

432

Pagina 473

Capitolo 16: Configurazione di un server di stampa

■ LPT # 1: utilizzare questo per una stampante collegata alla porta parallela.

■ Porta seriale n. 1: utilizzare questa porta per una stampante collegata alla porta seriale.
■ Stampante di rete: sotto questa intestazione è possibile cercare stampanti di rete (per
nome host o indirizzo IP) o digitare l'URI per diversi tipi di stampante:
16
■ Trova stampante di rete: invece di inserire l'URI di una stampante, puoi farlo
fornire un nome host o un indirizzo IP per il sistema su cui è installata la stampante
desidera stampare. Tutte le stampanti trovate su quell'host vengono visualizzate nella finestra,
pronto per essere aggiunto.
■ AppleSocket / HP JetDirect: utilizzare questa opzione per una stampante JetDirect.

■ IPP (Internet Printing Protocol): utilizzare questo per un CUPS o un altro IPP
stampante. La maggior parte delle stampanti Linux e Mac OS X rientrano in questa categoria.
■ Protocollo di stampa Internet (HTTPS): utilizzare questo per un CUPS o altro
Stampante IPP condivisa tramite una connessione protetta (certificati validi
necessario).
■ Host o stampante LPD / LPR: utilizzare questa opzione per una stampante UNIX.
■ Stampante Windows tramite SAMBA: utilizzare questa opzione per una stampante di sistema Windows.

Continua con i passaggi in qualsiasi delle seguenti sezioni sia appropriato.

Aggiunta di una stampante CUPS remota


Se scegli di aggiungere una stampante CUPS (IPP) accessibile tramite la tua rete locale da
nella finestra Impostazioni di stampa, è necessario aggiungere le seguenti informazioni alla finestra
che appare:

■ Host: questo è il nome host del computer a cui è collegata la stampante


(o altrimenti accessibile). Può essere un indirizzo IP o un nome host TCP / IP per
computer. Il nome TCP / IP è accessibile dal file / etc / hosts o tramite un file
Server dei nomi DNS.
■ Coda: questo è il nome della stampante sul server di stampa CUPS remoto. Supporta CUPS
istanze della stampante, che consente a ciascuna stampante di avere diversi set di opzioni. Se la
La stampante CUPS remota è configurata in questo modo, puoi scegliere un percorso particolare per
una stampante, come hp / 300dpi o hp / 1200dpi. Un carattere barra separa la stampa
nome della coda dall'istanza della stampante.

Completare il resto della procedura come si farebbe per una stampante locale (vedere la sezione "Aggiunta di file
una stampante locale ”precedentemente in questo capitolo).

Aggiunta di una stampante UNIX remota (LDP / LPR)


Se si sceglie di aggiungere una stampante UNIX (LPD / LPR) dalla finestra Impostazioni di stampa, è necessario aggiungere
le seguenti informazioni nella finestra che appare:
433

Pagina 474

Parte IV: diventare un amministratore di server Linux

■ Host: questo è l'indirizzo IP o il nome host del computer su cui è installata la stampante
è allegato (o altrimenti accessibile). Il nome host è accessibile dal tuo
/ etc / hosts o tramite un server dei nomi DNS. Seleziona il pulsante Sonda per cercare
per l'host.
■ Coda: questo è il nome della stampante sul computer UNIX remoto.

Completare il resto della procedura come si farebbe per una stampante locale (vedere la sezione "Aggiunta di file
una stampante locale ”precedentemente in questo capitolo).

Se il lavoro di stampa inviato per provare la stampante viene rifiutato, è possibile che il computer del server di stampa non abbia consentito l'accesso
alla stampante. Chiedi all'amministratore del computer remoto di aggiungere il tuo nome host al file /etc/lpd.perms.
(Digitare lpq -P printer per vedere lo stato del lavoro di stampa.)

Aggiunta di una stampante Windows (SMB)


Abilitare il computer ad accedere a una stampante SMB (il servizio di stampa Windows) implica
aggiungendo una voce per la stampante nella finestra Seleziona connessione.

Quando scegli di aggiungere una stampante Windows alla finestra Impostazioni di stampa (Windows Printer
tramite Samba), seleziona Sfoglia per vedere un elenco di computer sulla tua rete che sono stati
rilevato come offerta di servizi SMB (file e / o servizio di stampa). Puoi configurare il file
stampante da questa finestra come segue:

1. Digitare l'URI della stampante, escluso smb: // iniziale . Ad esempio, tu


potrebbe digitare / host1 / myprinter o / mygroup / host1 / myprinter .

2. Selezionare Richiedi all'utente se è richiesta l'autenticazione o Imposta autenticazione


dettagli ora.
3. Se hai scelto di impostare i dettagli di autenticazione adesso, inserisci il nome utente e
password necessaria per accedere alla stampante SMB; quindi fare clic su Verifica per verificarlo
puoi autenticarti sul server.

4. Fare clic su Avanti per continuare.

In alternativa, è possibile identificare un server che non appare nell'elenco dei server. Digitare il
informazioni necessarie per creare un URI SMB che contenga le seguenti informazioni:

■ Gruppo di lavoro: questo è il nome del gruppo di lavoro assegnato al server SMB. Usando il
il nome del gruppo di lavoro non è necessario in tutti i casi.
■ Server: questo è il nome NetBIOS o l'indirizzo IP del computer, che può o
potrebbe non essere lo stesso del nome TCP / IP. Per tradurre questo nome nell'indirizzo
necessario per raggiungere l'host SMB, Samba controlla diversi punti in cui potrebbe essere il nome
assegnato a un indirizzo IP. Samba controlla quanto segue (nell'ordine mostrato) fino a
trova una corrispondenza: il file / etc / hosts locale, il file / etc / lmhosts locale, un WINS

434

Pagina 475

Capitolo 16: Configurazione di un server di stampa

server sulla rete e risposte alle trasmissioni su ciascuna interfaccia di rete locale
per risolvere il nome.
■ Condividi: questo è il nome con cui la stampante è condivisa con il telecomando
computer. Potrebbe essere diverso dal nome con cui gli utenti locali di SMB
la stampante conosce la stampante. 16
■ Utente: il sistema del server SMB richiede un nome utente per consentire l'accesso a
Stampante SMB. Un nome utente non è necessario se si autentica la stampante
basato sul controllo dell'accesso a livello di condivisione piuttosto che a livello di utente. Con l'accesso a livello di condivisione,
è possibile aggiungere una password per ogni stampante o file system condiviso.
■ Password: utilizzare la password associata al nome utente SMB o condiviso
risorsa, a seconda del tipo di controllo di accesso utilizzato.

Quando inserisci un utente e una password per SMB, le informazioni vengono memorizzate non crittografate in / etc / cups /
file printers.conf. Assicurati che il file rimanga leggibile solo da root.

Di seguito è riportato un esempio dell'URI SMB che potresti aggiungere alla casella SMB: //:

jjones: my9passswd @ FSTREET / NS1 / hp

L'URI mostrato qui identifica il nome utente (jjones), la password dell'utente (my9passswd),
il gruppo di lavoro (FSTREET), il server (NS1) e il nome della coda della stampante (hp).

Completare il resto della procedura come si farebbe per una stampante locale (vedere la sezione "Aggiunta di file
una stampante locale ”precedentemente in questo capitolo).

Se tutto è impostato correttamente, è possibile utilizzare il comando lpr standard per stampare il file
la stampante. Utilizzando questo esempio, utilizzare il seguente modulo per la stampa:

$ cat file1.ps | lpr -P NS1-PS

Se ricevi messaggi di errore, assicurati che il computer su cui stai stampando sia accessibile. Per la stampante
Ad esempio NS1 hp, puoi digitare smbclient -L NS1 -U jjones . Quindi digita la password (my9passswd, in
questo caso). –L chiede informazioni sul server; -U jjones dice di accedere all'utente jjones. Se ottieni un file
risposta positiva alla query sul nome dopo aver immesso una password, dovresti vedere un elenco di stampanti e file condivisi da quella
server. Verificare i nomi e riprovare a stampare.

Lavorare con CUPS Printing


Strumenti come l'amministrazione basata sul Web di CUPS e la finestra Impostazioni di stampa in modo efficace
nasconde la struttura CUPS sottostante. A volte, tuttavia, vuoi lavorare direttamente con il

435

Pagina 476

Parte IV: diventare un amministratore di server Linux

strumenti e file di configurazione forniti con CUPS. Le sezioni seguenti descrivono come
utilizzare alcune caratteristiche speciali di CUPS.

Configurazione del server CUPS (cupsd.conf)


Il processo del demone cupsd ascolta le richieste al server di stampa CUPS e risponde a
quelle richieste in base alle impostazioni nel file /etc/cups/cupsd.conf. La configurazione
le variabili nel file cupsd.conf hanno la stessa forma di quelle nella configurazione di Apache
file di zione (httpd.conf o apache2.conf). Digita man cupsd.conf per vedere i dettagli su qualsiasi file
delle impostazioni.

La finestra Impostazioni di stampa aggiunge le informazioni di accesso al file cupsd.conf. Per altro
Sistemi Linux, o se non hai un desktop sul tuo server, potresti dover configurare il file
manualmente il file cupsd.conf. Puoi scorrere il file cupsd.conf per ottimizzare ulteriormente il tuo
Server CUPS. La maggior parte delle impostazioni sono opzionali o possono essere lasciate come predefinite. Guardiamo
alcune delle impostazioni che puoi usare nel file cupsd.conf.

Nessuna classificazione è impostata per impostazione predefinita. Con la classificazione impostata su topsecret, puoi avere
Top Secret visualizzato su tutte le pagine che passano attraverso il server di stampa:

Classificazione topsecret

Altre classificazioni che puoi sostituire per topsecret includono classificate,


confidenziale, segreto e non classificato.

Le righe ServerCertificate e ServerKey (non impostate di default) possono essere impostate su


indicare dove sono conservati rispettivamente il certificato e la chiave:

ServerCertificate /etc/cups/ssl/server.crt
ServerKey /etc/cups/ssl/server.key
Attiva queste due linee se vuoi eseguire connessioni crittografate. Questi file sono
generato automaticamente per il tuo sistema quando avvii per la prima volta il servizio cupsd. Quindi tu
puoi semplicemente usare quei file, oppure puoi generare il tuo certificato e la tua chiave e impostare il percorso
alle voci ServerCertificate e ServerKey. L'utilizzo di un certificato e di una chiave ti consente di condividere i tuoi file
stampante come stampante IPP HTTPS.

Il termine navigazione si riferisce all'atto di trasmettere informazioni sulla stampante sul tuo
rete locale e ascolto delle informazioni di altri server di stampa. La navigazione è attiva per impostazione predefinita
solo per l'host locale (@LOCAL). Puoi consentire le informazioni del browser CUPS (BrowseAllow)
per ulteriori indirizzi selezionati. Le informazioni di navigazione vengono trasmesse, per impostazione predefinita, all'indirizzo
255.255.255.255. Di seguito sono riportati alcuni esempi di diverse impostazioni di navigazione:

Navigando
BrowseProtocols tazze
BrowseOrder Nega, Consenti
BrowseAllow da @LOCAL

436

Pagina 477

Capitolo 16: Configurazione di un server di stampa

BrowseAddress 255.255.255.255
Ascolta *: 631

Per abilitare l'amministrazione CUPS basata sul Web e condividere le stampanti con altri sulla rete,
il demone cupsd può essere impostato per ascoltare sulla porta 631 tutte le interfacce di rete sul tuo
computer basato su questa voce: Listen *: 631. Per impostazione predefinita, ascolta sull'interfaccia locale 16
solo su molti sistemi Linux (Listen localhost: 631). Per Fedora, CUPS ascolta tutti
interfacce per impostazione predefinita.

Attivando BrowseRelay (è disattivato per impostazione predefinita), puoi consentire a CUPS di sfogliare le informazioni
da passare tra due o più reti. L'indirizzo di origine e la destinazione
l'indirizzo può essere indirizzi IP individuali o può rappresentare numeri di rete:

BrowseRelay indirizzo di origine indirizzo di destinazione

Questo è un buon modo per consentire agli utenti su diverse LAN connesse di rilevare e utilizzare le stampanti
su altre LAN vicine.

È possibile consentire o negare l'accesso a diverse funzionalità del server CUPS. Una definizione di accesso
per una stampante CUPS (creata dalla finestra Impostazioni di stampa) potrebbe apparire come segue:

<Ubicazione / printers / ns1-hp1>


Order Deny, Allow
Rifiutato da tutti
Consenti da 127.0.0.1
AuthType Nessuno
</Location>

Qui, la stampa sulla stampante ns1-hp1 è consentita solo per gli utenti sull'host locale
(127.0.0.1). Non è necessaria alcuna password (AuthType Nessuno). Per consentire l'accesso all'amministratore
strumento di controllo, CUPS deve essere configurato per richiedere una password (AuthType Basic).

Avvio del server CUPS


Per i sistemi Linux che utilizzano script di avvio in stile SystemV (come le versioni precedenti di Fedora
e RHEL), l'avvio e la chiusura del servizio di stampa CUPS è piuttosto semplice. Usa il
chkconfig per attivare CUPS in modo che venga avviato ad ogni riavvio. Esegui l'avvio delle tazze
script per avviare immediatamente il servizio CUPS. In RHEL 6.xo versioni precedenti, digitare quanto segue
come utente root:

# chkconfig coppe attive


# iniziano le tazze di servizio

Se il servizio CUPS era già in esecuzione, dovresti usare il riavvio invece di avviare. Utilizzando
l'opzione di riavvio è anche un buon modo per rileggere tutte le opzioni di configurazione che potresti avere
modificato nel file cupsd.conf (sebbene, se CUPS è già in esecuzione, il servizio cups
reload rilegge i file di configurazione senza riavviare).

437
Pagina 478

Parte IV: diventare un amministratore di server Linux

In Fedora 21 e RHEL 7, si utilizza il comando systemctl invece del servizio per l'avvio
e fermare i servizi:

# systemctl status cups.service


* cups.service - Servizio di stampa CUPS
Loaded: caricato (/usr/lib/systemd/system/cups.service; abilitato)
Attivo: attivo (in esecuzione) da sab 2016-07-23 22:41:05 EDT; 18h
fa
PID principale: 20483 (cupsd)
Stato: "Scheduler is running ..."
CGroup: /system.slice/cups.service
├─20483 / usr / sbin / cupsd -f

Puoi dire che il servizio CUPS è in esecuzione perché lo stato mostra il demone cupsd
attivo con PID 20483. Se quel servizio non fosse in esecuzione, potresti avviare il servizio CUPS
come segue:

# systemctl avvia cups.service

Consultare il Capitolo 15, "Avvio e arresto dei servizi", per ulteriori informazioni su systemctl
e comandi di servizio per lavorare con i servizi.

Configurazione manuale delle opzioni della stampante CUPS


Se la tua distribuzione Linux non ha un mezzo grafico per configurare CUPS, puoi farlo
modificare direttamente i file di configurazione. Ad esempio, quando viene creata una nuova stampante da Print
Finestra delle impostazioni, è definito nel file /etc/cups/printers.conf. Questo è ciò che a
la voce della stampante ha questo aspetto:

<Stampante stampante predefinita>


Informazioni HP LaserJet 2100M
Posizione HP LaserJet 2100M nell'armadio del corridoio
DeviceURI parallelo: / dev / lp0
Stato inattivo
Accettando Sì
Condiviso n
JobSheets nessuno nessuno
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>

Questo è un esempio di una stampante locale che funge da stampante predefinita per il locale
sistema. Il valore Shared No è ​impostato perché la stampante è attualmente disponibile solo su
sistema locale. Le informazioni più interessanti si riferiscono a DeviceURI, che lo dimostra
la stampante è collegata alla porta parallela / dev / lp0. Lo stato è Idle (pronto ad accettare

438

Pagina 479

Capitolo 16: Configurazione di un server di stampa

lavori di stampa) e il valore di accettazione è Sì (la stampante accetta lavori di stampa


per impostazione predefinita).

DeviceURI ha diversi modi per identificare il nome del dispositivo di una stampante, riflettendo dove
la stampante è collegata. Di seguito sono riportati alcuni esempi elencati nel file printers.conf:
16
DeviceURI parallelo: / dev / plp
Seriale DeviceURI: / dev / ttyd1? Baud = 38400 + size = 8 + parità = nessuna + flusso = soft
DeviceURI scsi: / dev / scsi / sc1d6l0
DeviceURI socket: // hostname: port
DeviceURI tftp: // hostname / path
DeviceURI ftp: // hostname / path
DeviceURI http: // hostname [: port] / path
DeviceURI ipp: // hostname / path
DeviceURI smb: // hostname / printer

I primi tre esempi mostrano il modulo per le stampanti locali (parallela, seriale e scsi).
Gli altri esempi sono per host remoti. In ogni caso, hostname può essere il nome dell'host
o indirizzo IP. I numeri di porta oi percorsi identificano le posizioni di ciascuna stampante sull'host.

Se scopri che non puoi stampare perché un particolare driver della stampante non è supportato in CUPS, puoi impostare il tuo
stampante per accettare i lavori in modalità raw. Questo può funzionare bene se si stampa da client Windows che hanno il file
driver di stampa installati. Per abilitare la stampa raw in CUPS, decommenta la riga seguente in / etc / cups / mime.
tipi di file in Linux:
application / octet-stream

e decommenta la seguente riga nel file /etc/cups/mime.convs:


applicazione / octet-stream applicazione / vnd.cups-raw 0 -

Dopodiché, puoi stampare i file come dati grezzi sulle tue stampanti senza usare l'opzione -oraw per stampare i comandi.

Utilizzo dei comandi di stampa


Per rimanere retrocompatibile con i vecchi servizi di stampa UNIX e Linux, CUPS
supporta molti dei vecchi comandi per lavorare con la stampa. La maggior parte della stampa da riga di comando
L'ing con CUPS può essere eseguito con il comando lpr. Applicazioni di elaborazione testi come
poiché LibreOffice, OpenOffice e AbiWord sono impostati per utilizzare questa funzione per la stampa.

È possibile utilizzare la finestra Impostazioni di stampa per definire i filtri necessari per ciascuna stampante in modo che
il testo può essere formattato correttamente. Le opzioni del comando lpr possono aggiungere filtri a correttamente
elaborare il testo. Altri comandi per la gestione dei documenti stampati includono lpq (per la visualizzazione
ing il contenuto delle code di stampa), lprm (per rimuovere i lavori di stampa dalla coda) e lpc
(per il controllo delle stampanti).

439

Pagina 480

Parte IV: diventare un amministratore di server Linux

Stampa con lpr


È possibile utilizzare il comando lpr per stampare documenti su stampanti locali e remote
(a condizione che le stampanti siano configurate localmente). I file di documento possono essere aggiunti al file
fine della riga di comando lpr o indirizzato al comando lpr utilizzando una barra verticale (|). Ecco un file
esempio di un semplice comando lpr:

$ lpr doc1.ps

Quando si specifica solo un file di documento con lpr, l'output viene indirizzato alla stampante predefinita.
Come singolo utente, è possibile modificare la stampante predefinita impostando il valore di
Variabile PRINTER. In genere, aggiungi la variabile PRINTER a uno dei tuoi file di avvio,
come $ HOME / .bashrc. Aggiungendo la seguente riga al file .bashrc, ad esempio, sets
la tua stampante predefinita su lp3:

export PRINTER = lp3

Per sovrascrivere la stampante predefinita, specificare una stampante particolare sulla riga di comando lpr.
L'esempio seguente utilizza l'opzione -P per selezionare una stampante diversa:

$ lpr -P canyonps doc1.ps

Il comando lpr ha una varietà di opzioni che consentono a lpr di interpretarne e formattarne diverse
diversi tipi di documenti. Questi includono - # num , dove num è sostituito dal numero
di copie da stampare (da 1 a 100) e -l (che fa sì che un documento venga inviato in modalità raw,
presumendo che il documento sia già stato formattato). Per saperne di più sulle opzioni di lpr,
tipo man lpr .

Stato dell'elenco con lpc


Usa il comando lpc per elencare lo stato delle tue stampanti. Ecco un esempio:

$ / usr / sbin / lpc status


hp:
la stampante è sul dispositivo velocità 'usb' -1
l'accodamento è abilitato
la stampa è disabilitata
nessuna voce
demone presente
deskjet_5550:
la stampante è sul dispositivo '/ dev / null' velocità -1
l'accodamento è abilitato
la stampa è disabilitata
nessuna voce
demone presente

Questo output mostra due stampanti attive. Il primo (hp) è connesso a una porta USB locale. Il
la seconda (deskjet_5550) è una stampante di rete (mostrata come / dev / null). La stampante hp è

440

Pagina 481

Capitolo 16: Configurazione di un server di stampa

attualmente disabilitato (offline), sebbene la coda sia abilitata in modo che le persone possano continuare a inviare
lavori alla stampante.

Rimozione dei lavori di stampa con lprm 16


Gli utenti possono rimuovere i propri lavori di stampa dalla coda con il comando lprm. Usato da solo
sulla riga di comando, lprm rimuove tutti i lavori di stampa dell'utente dalla stampante predefinita. Per
rimuovere i lavori da una stampante specifica, utilizzare l'opzione -P, come segue:

$ lprm -P lp0

Per rimuovere tutti i lavori di stampa per l'utente corrente, digitare quanto segue:

$ lprm -

L'utente root può rimuovere tutti i lavori di stampa per un utente specifico indicando tale utente nel file
riga di comando lprm. Ad esempio, per rimuovere tutti i lavori di stampa per l'utente denominato mike, il file
l'utente root digita quanto segue:

# lprm –U mike

Per rimuovere un singolo lavoro di stampa dalla coda, indicare il suo numero di lavoro sull'lprm
riga di comando. Per trovare il numero del lavoro, digita il comando lpq. Ecco qual è l'output di
quel comando potrebbe assomigliare a:

# lpq
la stampante è pronta e sta stampando
Proprietario di rango File di lavoro Tempo di dimensione totale
radice attiva 133 / home / jake / pr1 467
2 radice 197 / home / jake / mydoc 23948

L'output mostra due lavori stampabili in attesa nella coda. (La stampante è pronta e
stampa il lavoro elencato come attivo.) Sotto la colonna Lavoro, è possibile vedere il numero del lavoro
associato a ogni documento. Per rimuovere il primo lavoro di stampa, digitare quanto segue:

# lprm 133

Configurazione dei server di stampa


Hai configurato una stampante in modo che tu e gli altri utenti del tuo computer possiate stampare
esso. Ora vuoi condividere quella stampante con altre persone a casa, a scuola o in ufficio.
Fondamentalmente, ciò significa configurare la stampante come server di stampa.

Le stampanti configurate sul tuo sistema Linux possono essere condivise in diversi modi con altri
computer sulla rete. Non solo il tuo computer può agire come un server di stampa Linux
(configurando CUPS), ma può anche apparire come un server di stampa SMB (Windows) al client
computer. Dopo che una stampante locale è collegata al tuo sistema Linux e il tuo computer è

441
Pagina 482

Parte IV: diventare un amministratore di server Linux

connesso alla rete locale, è possibile utilizzare le procedure in questa sezione per condividere il file
stampante con computer client che utilizzano un'interfaccia Linux (UNIX) o SMB.

Configurazione di una stampante CUPS condivisa


Rendere la stampante locale aggiunta al tuo computer Linux disponibile ad altri computer su
la tua rete è abbastanza semplice. Se esiste una connessione di rete TCP / IP tra i computer
condividendo la stampante, si concede semplicemente l'autorizzazione a tutti gli host, singoli host o utenti
da host remoti per accedere al servizio di stampa del computer.

Per configurare manualmente una voce di stampante nel file /etc/cups/printers.conf da accettare
stampare i lavori da tutti gli altri computer, assicurarsi che la riga Sì condiviso sia impostata. Il seguente
esempio da una voce printers.conf all'inizio di questo capitolo dimostra cosa c'è di nuovo
la voce sarebbe simile a:

<Stampante stampante predefinita>


Informazioni HP LaserJet 2100M
Posizione HP LaserJet 2100M nell'armadio del corridoio
DeviceURI parallelo: / dev / lp0
Stato inattivo
Accettando Sì
Condiviso Sì
JobSheets nessuno nessuno
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>

Sui sistemi Linux che utilizzano la finestra Impostazioni di stampa descritta in precedenza in questo capitolo,
è meglio impostare la stampante come stampante condivisa utilizzando quella finestra. Ecco come,
usando Fedora 21:

1. Dalla schermata Attività su un desktop GNOME 3 in Fedora, digitare Impostazioni di stampa


e premere Invio. Viene visualizzata la finestra Impostazioni di stampa.
2. Per consentire la condivisione di tutte le stampanti, selezionare Server ➪ Impostazioni. Se tu non sei
l'utente root, viene richiesta la password di root. Le impostazioni del server di base
appare il pop-up.

3. Selezionare la casella di controllo accanto a Pubblica stampanti condivise connesse a questo sistema,
e fare clic su OK. È possibile che venga chiesto di modificare il firewall per aprire il file necessario
porte per i sistemi remoti per accedere alle stampanti.

4. Per consentire o limitare ulteriormente la stampa per una particolare stampante, fare doppio clic su
nome della stampante che desideri condividere. (Se la stampante non è ancora configurata, fare riferimento
alla sezione "Configurazione delle stampanti" precedentemente in questo capitolo.)

5. Scegliere l'intestazione Criteri e selezionare Condiviso in modo che nella casella venga visualizzato un segno di spunta.

442

Pagina 483

Capitolo 16: Configurazione di un server di stampa

6. Se si desidera limitare l'accesso alla stampante a utenti selezionati, selezionare Accesso


Controlla l'intestazione e scegli una delle seguenti opzioni:
■ Consenti la stampa a tutti tranne questi utenti: con questa opzione selezionata, tutti gli utenti
è consentito l'accesso alla stampante. Digitando i nomi utente nella casella Utenti e
facendo clic su Aggiungi, si escludono gli utenti selezionati. 16
■ Nega stampa a tutti tranne questi utenti: con questa opzione selezionata, tutti gli utenti
sono esclusi dall'utilizzo della stampante. Digita i nomi utente nella casella Utenti e
fare clic su Aggiungi per consentire l'accesso alla stampante solo per i nomi immessi.

Ora puoi configurare altri computer per utilizzare la tua stampante, come descritto nella sezione
"Configurazione delle stampanti" in questo capitolo. Se provi a stampare da un altro computer e il file
non funziona, prova questi suggerimenti per la risoluzione dei problemi:
■ Apri il tuo firewall. Se si dispone di un firewall restrittivo, potrebbe non consentire la stampa.
È necessario abilitare l'accesso alla porta TCP 631 per consentire l'accesso alla stampa sul proprio
computer. La finestra di stampa potrebbe richiedere a un certo punto di aprire questa porta.
(Controlla il file / etc / sysconfig / iptables per vedere se è impostata una regola del firewall
accetta la stampa dalla porta TCP 631 o, se stai utilizzando firewalld, esegui firewall-
config e apri il servizio ipp.)
■ Verificare nomi e indirizzi. Assicurati di aver inserito il nome del tuo computer e
coda di stampa correttamente quando è stata configurata sull'altro computer. Prova a usare
l'indirizzo IP invece del nome host. (Se funziona, indica un nome DNS
problema di risoluzione.) L'esecuzione di uno strumento come tcpdump consente di vedere dove si trova il file
la transazione fallisce.
■ Verificare su quali indirizzi cupsd è in ascolto. Il daemon cupsd deve essere
ascoltando al di fuori dell'host locale che i sistemi remoti stampino su di esso. Usa il netstat
comando (come utente root) come segue per verificarlo. Il primo esempio mostra cupsd
ascolto solo su host locale (127.0.0.1:631); il secondo mostra cupsd in ascolto su tutti
interfacce di rete (0 0.0.0.0:631):
# netstat -tupln | grep 631
tcp 0 0127.0.0.1:631 0.0.0.0:* LISTEN 6492 / cupsd
# netstat -tupln | grep 631
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 6492 / cupsd

Le modifiche all'accesso alla stampante condivisa vengono apportate in cupsd.conf e printers.conf


file nella directory / etc / cups.

Configurazione di una stampante Samba condivisa


Le tue stampanti Linux possono essere configurate come stampanti SMB condivise in modo che sembrino disponibili
dai sistemi Windows. Per condividere la tua stampante come se fosse una stampante Samba (SMB), semplicemente
configurare le impostazioni di base del server Samba come descritto nel Capitolo 19, "Configurazione di un file Windows
Server di condivisione file (Samba). " Tutte le tue stampanti dovrebbero essere condivise sulla tua rete locale da

443

Pagina 484

Parte IV: diventare un amministratore di server Linux

predefinito. La sezione successiva mostra l'aspetto delle impostazioni risultanti e come potresti farlo
voglio cambiarli.

Comprendere smb.conf per la stampa


Quando si configura Samba, il file /etc/samba/smb.conf viene creato per abilitare tutti
le stampanti configurate da condividere. Ecco alcune righe dal file smb.conf that
riguardano la condivisione della stampante:

[globale]
...
caricare stampanti = sì
opzioni tazze = crudo
; nome printcap = / etc / printcap
; stampa = tazze
...
[stampanti]
comment = Tutte le stampanti
percorso = / var / spool / samba
sfogliabile = sì
scrivibile = no
stampabile = sì

Queste impostazioni di esempio sono il risultato della configurazione di Samba dal server Samba
Finestra di configurazione (system-config-samba) in Fedora. Puoi leggere le righe di commento a
saperne di più sul contenuto del file. Le righe che iniziano con un punto e virgola (;) indicano il valore predefinito
impostazione per l'opzione su una riga di commento. Rimuovere il punto e virgola per modificare l'impostazione.

Le righe selezionate mostrano che le stampanti da / etc / printcap sono state caricate e che il file CUPS
il servizio è in uso. Con le opzioni di cups impostate su raw, Samba presume che i file di stampa abbiano
sono già stati formattati nel momento in cui raggiungono il server di stampa. Ciò consente a Linux o
Client Windows per fornire i propri driver di stampa.

Le ultime righe sono la definizione delle stampanti effettive. Modificando l'opzione sfogliabile
da no a sì, gli utenti possono stampare su tutte le stampanti (stampabile = sì).

È inoltre possibile memorizzare i driver di stampa nativi di Windows sul server Samba. Quando un file Windows
il client utilizza la stampante, il driver diventa automaticamente disponibile. Non hai bisogno di
scaricare un driver dal sito Web del fornitore. Per abilitare la condivisione del driver della stampante, aggiungere un file
Condivisione di Samba chiamata print $ che assomiglia alla seguente:
[stampa $]
comment = Driver della stampante
percorso = / var / lib / samba / drivers
sfogliabile = sì
ospite ok = no

444

Pagina 485

Capitolo 16: Configurazione di un server di stampa

sola lettura = sì
lista di scrittura = chris, dduffey

Dopo aver reso disponibile la condivisione, è possibile iniziare a copiare i driver di stampa di Windows nel file
/ var / lib / samba / drivers, come descritto nel Samba HOWTO:
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/ 16
classicprinting.html # id2626941

Configurazione dei client SMB


Ci sono buone probabilità che se stai configurando una stampante Samba sul tuo computer Linux, tu
desidera condividerlo con i client Windows. Se Samba è configurato correttamente sul tuo computer e
i computer client possono raggiungerti sulla rete, gli utenti non dovrebbero avere problemi a trovarli
e utilizzando la stampante.

Per molti sistemi Windows, fare clic su Start ➪ Dispositivi e stampanti e selezionare la stampante
dall'elenco per configurarlo. In alcuni sistemi Windows meno recenti, cerca il tuo Samba condiviso
stampante in Risorse di rete (o Risorse di rete). Dal desktop di Windows 9x,
fare doppio clic sull'icona Risorse di rete. (Da Windows 2000 o XP, fare doppio clic su
Icona Risorse di rete.)

Con Windows Vista, apri l'icona Rete. Il nome del tuo computer host
(il nome NetBIOS, che probabilmente è anche il nome TCP / IP) viene visualizzato sullo schermo o
all'interno di una cartella del gruppo di lavoro sullo schermo. Apri l'icona che rappresenta il tuo computer.
La finestra che si apre mostra le tue stampanti e cartelle condivise.

Se l'icona del tuo computer non viene visualizzata in Risorse di rete o Risorse di rete, prova a utilizzare la finestra di ricerca.
Da Windows XP, scegliere Start ➪ Cerca ➪ Computer o Persone ➪ Un computer in rete. Digita il tuo computer
er il nome nella casella Nome computer e fare clic su Cerca. Fare doppio clic sul computer nei risultati della finestra di ricerca
pannello. Viene visualizzata una finestra che mostra le stampanti e le cartelle condivise dal computer.

Dopo che la stampante condivisa viene visualizzata nella finestra, configurare un puntatore a quella stampante tramite
aprendo (doppio clic) l'icona della stampante. Un messaggio ti dice che devi configurare il file
stampante prima di poterla utilizzare. Fare clic su Sì per procedere alla configurazione della stampante per l'uso locale.
Viene visualizzata l'Installazione guidata stampante. Rispondi alle domande che ti chiedono come intendi utilizzare
la stampante e aggiungere i driver appropriati. Al termine, la stampante viene visualizzata in
la finestra della stampante.

Un altro modo per configurare una stampante SMB da un sistema operativo Windows XP è andare a
Start ➪ Stampanti e fax. Nella finestra Stampanti e fax visualizzata, fare clic su Aggiungi a
Icona della stampante nella parte in alto a sinistra della finestra e selezionare Stampante di rete dal file
prima finestra. Da lì puoi sfogliare e / o configurare la tua stampante SMB.

445

Pagina 486
Parte IV: diventare un amministratore di server Linux

Sommario
Fornire servizi di stampa in rete è essenziale nelle reti aziendali odierne. Con
l'uso di pochi dispositivi collegati alla rete, puoi concentrare la spesa della stampante su alcuni
dispositivi di alta qualità che più utenti possono condividere invece di numerosi dispositivi a basso costo.
Inoltre, una stampante in posizione centrale può semplificare la manutenzione della stampante, mentre
consentendo comunque a tutti di portare a termine i propri lavori di stampa.

Il servizio di stampa predefinito in quasi tutte le principali distribuzioni Linux oggi è il


Common UNIX Printing System (CUPS). Qualsiasi sistema Linux che include CUPS offre l'estensione
Interfaccia amministrativa CUPS basata sul web per la configurazione della stampa CUPS. Offre anche
file di configurazione nella directory / etc / cups per configurare le stampanti e CUPS
servizio (demone cupsd).

In RHEL, Fedora, Ubuntu e altri sistemi Linux, puoi configurare la tua stampante con l'estensione
finestre di configurazione della stampa disponibili nei desktop KDE e GNOME. Una varietà di
driver rende possibile stampare su diversi tipi di stampanti, oltre che su quelle
sono collegati ai computer in rete.

Puoi configurare il tuo computer come server di stampa Linux e puoi anche avere il tuo computer
emulare un server di stampa SMB (Windows). Dopo che la tua rete è configurata correttamente e un file
la stampante locale è installata, condividendo quella stampante sulla rete come una stampa UNIX o SMB
il server non è molto complicato.

Esercizi
Usa questi esercizi per verificare la tua conoscenza della configurazione delle stampanti in Linux. Questi compiti
presumi di eseguire un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività
funziona anche su altri sistemi Linux). Se sei bloccato, vengono mostrate le soluzioni alle attività
Appendice B (sebbene in Linux, spesso è possibile completare un'attività in più modi).

1. Utilizzare la finestra Impostazioni di stampa (pacchetto system-config-printer) per aggiungere una nuova stampante
chiamato myprinter al sistema (la stampante non deve essere collegata a
impostare una coda di stampa per la nuova stampante). Rendilo una stampante PostScript generica
collegato a una porta seriale locale, LPT o altra porta.

2. Utilizzare il comando lpc per vedere lo stato di tutte le stampanti.

3. Utilizzare il comando lpr per stampare il file / etc / hosts su quella stampante.

4. Controllare la coda di stampa di quella stampante per verificare che il lavoro di stampa sia presente.

5. Rimuovere il lavoro di stampa dalla coda (annullarlo).

6. Utilizzando la finestra di stampa, configurare l'impostazione del server di base che pubblica le stampanti
in modo che altri sistemi sulla rete locale possano stampare sulle stampanti.

446

Pagina 487

Capitolo 16: Configurazione di un server di stampa

7. Consentire l'amministrazione remota del sistema da un browser web.

8. Dimostrare che è possibile eseguire l'amministrazione remota del sistema aprendo un file
browser web alla porta 631 da un altro sistema al sistema Linux che esegue il tuo
server di stampa.
16
9. Utilizzare il comando netstat per vedere quali indirizzi il daemon cupsd è in ascolto
acceso (la porta di stampa è 631).

10. Eliminare la voce della stampante myprin ter dal proprio sistema.
447

Pagina 489
488

CAPITOLO

17
Configurazione di un server Web
IN QUESTO CAPITOLO
Installazione di un server Web Apache

Configurazione di Apache

Protezione di Apache con iptables e SELinux

Creazione di host virtuali

Creazione di un sito Web sicuro (HTTPS)

Controllo di errori in Apache

I Di gran lunga, il server web più popolare è il server web Apache (HTTPD), che è sponsorizzato
dalla Apache Software Foundation (http://apache.org). Perché Apache è un file
server Web sono responsabili della fornitura del contenuto visualizzato su Internet ogni giorno.
progetto open source, è disponibile con tutte le principali distribuzioni Linux, inclusi Fedora, RHEL,
e Ubuntu.

È possibile configurare un server Web di base da eseguire in Linux in pochi minuti. Tuttavia, puoi
configurare il tuo server web Apache in moltissimi modi. Puoi configurare un Apache
server web per servire contenuti per più domini (hosting virtuale), fornire comunicazioni crittografate
(HTTPS) e proteggere alcuni o tutti i siti Web utilizzando diversi tipi di autenticazione.

Questo capitolo illustra i passaggi per installare e configurare un server web Apache. Questi
i passaggi includono procedure per proteggere il server, nonché utilizzare una varietà di moduli in modo da poterlo fare
incorporare diversi metodi di autenticazione e linguaggi di scripting nel tuo server web. Quindi io
descrivere come generare certificati per creare un sito Web HTTPS Secure Sockets Layer (SSL).

Comprensione del server Web Apache


Apache HTTPD (noto anche come Apache HTTPD Server) fornisce il servizio con cui il client
i browser web comunicano. Il processo daemon (httpd) viene eseguito in background sul server
e attende le richieste dai client web. I browser Web forniscono queste connessioni a HTTP
demone e inviare richieste, che il demone interpreta, rimandando indietro i dati appropriati
(come una pagina web o altri contenuti).

449

Pagina 490

Parte IV: diventare un amministratore di server Linux

Apache HTTPD include un'interfaccia che consente ai moduli di collegarsi al processo da gestire
porzioni specifiche di una richiesta. Tra le altre cose, sono disponibili moduli per gestire il file
elaborazione di linguaggi di scripting, come Perl o PHP, all'interno di documenti web e da aggiungere
crittografia alle connessioni tra client e server.

Apache è nato come una raccolta di patch e miglioramenti dal National Center for
Applicazioni di supercalcolo (NCSA), Università dell'Illinois, Urbana-Champaign, all'HTTP
demone. Il daemon HTTP NCSA era il server HTTP più popolare all'epoca, ma lo aveva
ha iniziato a mostrare la sua età dopo che il suo autore, Rob McCool, lasciò l'NCSA a metà del 1994.

Un altro progetto che è venuto da NCSA è Mosaic. La maggior parte dei browser Web moderni può far risalire le proprie origini a Mosaic.

All'inizio del 1995, un gruppo di sviluppatori ha formato il gruppo Apache e ha iniziato a fare grandi progetti
modifiche alla base del codice HTTPD NCSA. Apache presto sostituì NCSA HTTPD come il più
popolare server web, un titolo che detiene ancora oggi.

Il gruppo Apache ha successivamente costituito la Apache Software Foundation (ASF) per promuovere il
sviluppo di Apache e altri software gratuiti. Con l'inizio di nuovi progetti in ASF,
il server Apache divenne noto come Apache HTTPD, sebbene i due termini siano ancora utilizzati
intercambiabile. Attualmente, ASF ha più di 100 progetti di primo livello, incluso TomCat
(che include le tecnologie Java Servlet e JavaServer Pages open source), Hadoop
(un progetto che fornisce elaborazione distribuita e altamente disponibile) e SpamAssassin
(un programma di filtraggio della posta elettronica).

Ottenere e installare il server Web


Sebbene Apache sia disponibile con tutte le principali distribuzioni Linux, è spesso confezionato
in diversi modi. Nella maggior parte dei casi, tutto ciò che serve per avviare un semplice server web Apache è il file
pacchetto contenente il demone Apache stesso (/ usr / sbin / httpd) ei suoi file correlati.
In Fedora, RHEL e altri, il server web Apache è incluso nel pacchetto httpd.

Capire il pacchetto httpd


Per esaminare il pacchetto httpd in Fedora o RHEL prima di installarlo, scarica il file
pacchetto utilizzando il comando yumdownloader ed eseguire alcuni comandi rpm su di esso per visualizzare
il suo contenuto:

# yumdownloader httpd
# rpm -qpi httpd- * rpm
Nome : httpd
Versione: 2.4.10
Versione: 1.fc20

450

Pagina 491

Capitolo 17: Configurazione di un server Web


Architettura: x86_64
Data di installazione: (non installato)
Gruppo: System Environment / Daemons
Taglia : 3950241
Licenza: ASL 2.0
Firma: RSA / SHA256, mercoledì 23 luglio 2014 09:23:23 AM EDT, chiave
ID 2eb161fa246110c1
RPM di origine: httpd-2.4.10-1.fc20.src.rpm
Data di costruzione: mercoledì 23 luglio 2014 06:32:07 AM EDT
Host di compilazione: buildvm-22.phx2.fedoraproject.org
Trasferimenti: (non trasferibile)
Packager: Fedora Project
Fornitore: Fedora Project
URL : http://httpd.apache.org/
Riepilogo: Apache HTTP Server
17
Descrizione:
L'Apache HTTP Server è un potente, efficiente ed estensibile
server web.

Il comando yumdownloader scarica l'ultima versione del pacchetto httpd in


la directory corrente. Il comando rpm -qpi interroga il pacchetto RPM httpd che hai appena
scaricato per informazioni. Puoi vedere che il pacchetto è stato creato da Fedora
progetto, che sia firmato e che sia effettivamente il pacchetto Apache HTTP Server. Il prossimo,
guarda all'interno del pacchetto per vedere i file di configurazione:

# rpm -qpc httpd- * rpm


/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
...
/etc/httpd/conf/httpd.conf
/ etc / httpd / conf / magic
/etc/logrotate.d/httpd
/ etc / sysconfig / htcacheclean
/ etc / sysconfig / httpd
...

Il file di configurazione principale è /etc/httpd/conf/httpd.conf per Apache. L'accoglienza.


conf definisce la home page predefinita del tuo sito web, finché non aggiungi del contenuto.
Il magic file definisce le regole che il server può usare per capire il tipo di file quando il server
prova ad aprirlo. Le opzioni della riga di comando utilizzate con il daemon httpd sono definite nel file
/ etc / sysconfig / httpd file.

Il file /etc/logrotate.d/httpd definisce come vengono ruotati i file di registro prodotti da Apache.
Il file /etc/tmpfiles.d/httpd.conf definisce una directory che contiene temporanei
file di runtime (non è necessario modificare quel file). Le ultime voci del file di configurazione si trovano in

451

Pagina 492

Parte IV: diventare un amministratore di server Linux

/ var / www / directory degli errori. I file in quella directory definiscono le risposte che un utente vede
quando si verifica un errore, come un file non trovato o un messaggio di autorizzazione negata.

Alcuni moduli Apache rilasciano file di configurazione (* .conf) in / etc / httpd / conf.
directory moduli.d /. Qualsiasi file in quella directory che termina con .conf viene inserito nel file
file httpd.conf principale e utilizzato per configurare Apache. La maggior parte dei pacchetti di moduli forniti con
i file di configurazione mettono quei file di configurazione nella directory /etc/httpd/conf.d.
Ad esempio, mod_ssl (per server web sicuri) e mod_python (per interpret-
ing python code) hanno i relativi file di configurazione in /etc/httpd/conf.d
directory denominate rispettivamente ssl.conf e python.conf.

Puoi semplicemente installare il pacchetto httpd per iniziare a configurare il tuo server web. Tuttavia, tu
potrebbe preferire aggiungere altri pacchetti che sono spesso associati al pacchetto httpd.
Un modo per farlo è installare l'intero gruppo di server Web come segue:

# yum groupinstall "Server web"

Ecco i pacchetti, insieme al pacchetto httpd, nel gruppo Server Web in Fedora
che ottieni per impostazione predefinita:

■ httpd-manual: riempie la directory / var / www / manual con Apache


manuali di documentazione. Dopo aver avviato il servizio httpd (come mostrato in seguito
passaggi), è possibile accedere a questo set di manuali da un browser Web in locale
macchina digitando http: // localhost / manual nella casella della posizione.
■ Esternamente, invece di localhost, è possibile utilizzare il nome di dominio completo
o indirizzo IP del sistema. Viene visualizzata la schermata della documentazione di Apache come mostrato
nella Figura 17.1.
■ mod_ssl: contiene il modulo e il file di configurazione necessari per il server Web
per fornire connessioni sicure ai client utilizzando Secure Sockets Layer (SSL) e
Protocolli Transport Layer Security (TLS). Queste funzionalità sono necessarie se necessario
comunicazioni crittografate per acquisti online o altri dati che desideri conservare
privato. Il file di configurazione si trova in /etc/httpd/conf.d/ssl.conf.
■ crypto-utils: contiene i comandi per la generazione di chiavi e certificati necessari
rendere sicure le comunicazioni con il server web Apache.
■ mod_perl: contiene il modulo Perl (mod_perl), il file di configurazione e
file associati necessari per consentire l'esecuzione diretta del server Web Apache
qualsiasi codice Perl.
■ php: contiene il modulo PHP e il file di configurazione necessari per eseguire gli script PHP
direttamente in Apache. I pacchetti correlati includono php-ldap (per eseguire codice PHP che
deve accedere ai database LDAP) e php-mysql (per aggiungere il supporto del database al file
Server Apache).
■ php-ldap: aggiunge il supporto per LDAP (Lightweight Directory Access Protocol) a
Modulo PHP, che consente l'accesso al servizio di directory sulle reti.

452

Pagina 493

Capitolo 17: Configurazione di un server Web

FIGURA 17.1

Accedi alla documentazione di Apache direttamente dal server Apache locale.

17

■ squid: fornisce servizi proxy per protocolli specifici (come HTTP), come accennato
nel Capitolo 14, "Amministrazione della rete". Sebbene non fornisca HTTP
contenuto stesso, un server proxy Squid in genere inoltra le richieste dai client proxy
a Internet o altra rete che fornisce contenuti web. Questo fornisce un mezzo per
controllare o filtrare i contenuti che i clienti possono raggiungere da casa, scuola o luogo
di affari.
■ webalizer: contiene strumenti per analizzare i dati del server web.

I pacchetti opzionali nel gruppo Server Web provengono dal sottogruppo server Web. Corri yum
server web groupinfo per visualizzare quei pacchetti. Alcuni di questi pacchetti offrono speciali
modi di fornire contenuti, come wiki (moin), sistemi di gestione dei contenuti (drupal7),
e blog (wordpress). Altri includono strumenti per rappresentare graficamente le statistiche web (awstats) o l'offerta
alternative di server web leggere ad Apache (lighttpd e cherokee).

Installazione di Apache
Anche se hai solo bisogno di httpd per iniziare con un server web Apache, se lo sei solo
imparando a conoscere Apache, dovresti installare anche i manuali (httpd-manual). Se sei
pensando di creare un sito sicuro (SSL) ed eventualmente generare alcune statistiche sul tuo
sito web, puoi semplicemente installare l'intero gruppo:
453

Pagina 494

Parte IV: diventare un amministratore di server Linux

# yum groupinstall "Server web"

Supponendo che tu abbia una connessione Internet al repository Fedora (o al repository RHEL,
se stai usando RHEL), tutti i pacchetti obbligatori e predefiniti di quel gruppo sono
installato. Hai tutto il software necessario per eseguire le procedure e gli esercizi descritti
in questo capitolo.

Avvio di Apache
Per avviare il server Web Apache, è necessario abilitare il servizio per l'avvio a ogni riavvio
e vuoi avviarlo immediatamente. In Red Hat Enterprise Linux (fino a RHEL 6) e in
vecchie distribuzioni Fedora, è possibile digitare quanto segue come root:

# chkconfig httpd attivo


# servizio httpd start
Avvio di httpd: [ OK ]

Nei recenti sistemi Fedora e RHEL 7, si abilita e si avvia httpd utilizzando systemctl
comando:

# systemctl abilita httpd.service


# systemctl avvia httpd.service
# systemctl stato httpd.service
httpd.service - Il server HTTP Apache
Loaded: caricato (/usr/lib/systemd/system/httpd.service; abilitato)
Attivo: attivo (in esecuzione) da Thu 2014-08-28 08:49:54 EDT; 11h
fa
PID principale: 14575 (/ usr / sbin / httpd)
Stato: "Richieste totali: 17; Richieste correnti / sec: 0; Richieste correnti
traffico: 0 B / sec "
CGroup: /system.slice/httpd.service
├─14575 / usr / sbin / httpd -DFOREGROUND
├─14582 / usr / sbin / httpd -DFOREGROUND
├─14583 / usr / sbin / httpd -DFOREGROUND
├─14584 / usr / sbin / httpd -DFOREGROUND
...

Quando il servizio httpd viene avviato, per impostazione predefinita vengono avviati sei processi daemon httpd su
rispondere alle richieste del web server. È possibile configurare più o meno demoni httpd in modo che siano
avviato in base alle impostazioni nel file httpd.conf (descritto nella sezione "Capire
i file di configurazione di Apache ”). Per modificare il comportamento del demone httpd, puoi aggiungere
opzioni alla variabile OPTIONS = nel file / etc / sysconfig / httpd.

Poiché ci sono diverse versioni di httpd in giro, controlla la pagina man (man httpd) su
vedere quali opzioni possono essere passate al demone httpd. Ad esempio, impostando OPZIONI = "- e
debug "aumenta il livello di log in modo che venga inviato il numero massimo di messaggi Apache

454

Pagina 495

Capitolo 17: Configurazione di un server Web

log files. Riavvia il servizio httpd affinché le modifiche abbiano effetto. Digita il comando ps su
assicurati che le opzioni abbiano effetto:

$ ps -ef | grep httpd


radice 14575 1 0 08:49? 00:00:01 / usr / sbin / httpd -DFOREGROUND -X
apache 14582 14575 0 08:49? 00:00:00 / usr / sbin / httpd -DFOREGROUND -X

Se hai aggiunto un'opzione di debug (-X), ricorda di rimuovere tale opzione da / etc / sysconfig /
httpd al termine del debug di Apache e riavvia il servizio. Lasciando attivo il debug
riempie rapidamente i file di registro.

Protezione di Apache
Per proteggere Apache, è necessario conoscere le funzionalità di sicurezza standard di Linux (autorizzazioni,
proprietà, firewall e Security Enhanced Linux), nonché funzionalità di sicurezza che lo sono 17
specifico per Apache. Le sezioni seguenti descrivono le funzionalità di sicurezza relative ad Apache.

Autorizzazioni e proprietà dei file Apache


Il processo daemon httpd viene eseguito come apache utente e apache di gruppo. Per impostazione predefinita,
Il contenuto HTML è memorizzato nella directory / var / www / html (come determinato dal valore di
DocumentRoot nel file httpd.conf).

Affinché il demone httpd sia in grado di accedere a quel contenuto, si applicano le autorizzazioni Linux standard:
Se il permesso di lettura non è attivo per "altri" utenti, deve essere attivo per l'utente o il gruppo apache
affinché i file vengano letti e forniti ai client. Allo stesso modo, qualsiasi directory del demone httpd
deve attraversare per accedere al contenuto deve avere il permesso di esecuzione per l'utente apache,
gruppo apache o altro utente.

Sebbene non sia possibile accedere come utente apache (/ sbin / nologin è la shell predefinita),
puoi creare contenuti come root e cambiarne la proprietà (comando chown) o i permessi
(comando chmod). Spesso, tuttavia, per creare vengono aggiunti account utente o di gruppo separati
contenuto leggibile da tutti (altri) ma scrivibile solo da quell'utente o gruppo speciale.

Apache e iptables
Se hai bloccato il tuo firewall iptables in Linux, devi aprire diverse porte
per consentire ai client di comunicare con Apache attraverso il firewall. Servizio web standard (HTTP)
è accessibile tramite la porta TCP 80; il servizio Web sicuro (HTTPS) è accessibile tramite la porta TCP 443.
Per verificare quali porte vengono utilizzate dal server httpd, utilizzare il comando netstat:

# netstat -tupln | grep httpd


tcp6 0 0 ::: 80 ::: * ASCOLTA 29169 / httpd
tcp6 0 0 ::: 443 ::: * ASCOLTA 29169 / httpd

L'output mostra che il demone httpd (ID processo 29169) è in ascolto su tutti gli indirizzi
per la porta 80 (::: 80) e la porta 443 (::: 443). Entrambe le porte sono associate al TCP

455

Pagina 496

Parte IV: diventare un amministratore di server Linux

protocollo (tcp6). Per aprire queste porte in Fedora o Red Hat Enterprise Linux, è necessario
aggiungere alcune regole del firewall.

Su un sistema Fedora o RHEL 7 corrente, apri la finestra Firewall (digita Firewall e premi
Accedi dalla schermata Attività sul desktop GNOME 3). Da lì, seleziona Permanente come
la configurazione. Quindi, con la zona pubblica selezionata, fare clic sulle caselle di controllo accanto a
caselle di servizio http e https. Quelle porte diventano immediatamente aperte.

Per RHEL 6 o versioni precedenti di Fedora, aggiungi regole al file / etc / sysconfig / iptables
(da qualche parte prima di un DROP o REJECT finale) come il seguente:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT


-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

Riavvia iptables (servizio iptables restart) affinché le nuove regole abbiano effetto.

Apache e SELinux
Se Security Enhanced Linux (SELinux) è impostato su Enforcing (come è di default in Fedora e
Red Hat Enterprise Linux), SELinux aggiunge un altro livello di sicurezza al tuo servizio httpd.
In sostanza, SELinux si propone di proteggere il sistema dal danneggiamento di qualcuno
chi potrebbe aver violato il demone httpd. SELinux lo fa creando politiche che lo fanno
il seguente:

■ Negare l'accesso ai file che non sono impostati nei contesti file corretti. Per httpd in
SELinux, ci sono diversi contesti di file per contenuto, file di configurazione, file di registro,
script e altri file correlati a httpd. Qualsiasi file che non è impostato nel contesto corretto
non è accessibile al demone httpd.
■ Impedire l'utilizzo di funzioni non sicure, come il caricamento di file e il testo in chiaro
autenticazione, impostando i valori booleani per tali funzionalità sulla posizione off. Puoi selezionare
attivare tempestivamente i booleani quando sono necessari, se soddisfano i requisiti di sicurezza.
■ Impedire al daemon httpd di accedere a funzioni non standard, come una porta
al di fuori delle porte predefinite che il servizio si aspetterebbe di utilizzare.

Una descrizione completa di SELinux è contenuta nel Capitolo 24, “Migliorare la sicurezza di Linux con
SELinux. " Tuttavia, ecco alcune specifiche che dovresti sapere sull'uso di SELinux con
Servizio httpd Apache:

■ Spegnere SELinux. Non devi usare SELinux. Puoi impostare SELinux su


Modalità permissiva se ritieni che sia troppo difficile e non necessario creare SELinux
criteri necessari per far funzionare il tuo server web con SELinux in modalità Enforcing.
È possibile cambiare la modalità in Permissive modificando / etc / sysconfig / selinux
file in modo che il valore SELINUX sia impostato come segue. Con questo set, al prossimo riavvio
il sistema, è in modalità Permissiva. Ciò significa che se rompi le politiche di SELinux,
quell'evento viene registrato, ma non prevenuto (come sarebbe in modalità Enforcing).
SELINUX = permissivo

456

Pagina 497

Capitolo 17: Configurazione di un server Web

■ Leggere la pagina man httpd_selinux. Digita man httpd_selinux dalla shell.


Questa pagina man mostra i contesti di file corretti e i booleani disponibili.
■ Utilizza percorsi standard per i file. Quando crei nuovi file, quei file ereditano l'estensione
contesti di file delle directory in cui si trovano. Perché / etc / httpd è impostato a destra
contesto di file per i file di configurazione, / var / www / html è giusto per i file di contenuto e
così via, la semplice copia di file o la creazione di nuovi file in quelle posizioni causa il file
contesti da impostare correttamente.
■ Modificare SELinux per consentire funzionalità non standard. Potresti voler servire web
contenuto dalla directory / mystuff o inserire i file di configurazione in / etc /
qualunque directory. Allo stesso modo, potresti voler consentire agli utenti del tuo server di
caricare file, eseguire script o abilitare altre funzionalità disabilitate da SELinux da
predefinito. In questi casi, puoi usare i comandi SELinux per impostare i contesti dei file e
Il valore booleano è necessario per far funzionare SELinux nel modo desiderato. 17
Assicurati di leggere il Capitolo 24 per saperne di più su SELinux.

Comprensione dei file di configurazione di Apache


I file di configurazione per Apache HTTPD sono incredibilmente flessibili, il che significa che puoi farlo
configurare il server in modo che si comporti in quasi tutti i modi desiderati. Questa flessibilità arriva a
il costo di una maggiore complessità sotto forma di un gran numero di opzioni di configurazione
(chiamate direttive ). Ma in pratica, devi conoscere solo alcune direttive in
la maggior parte dei casi.

Vedi http://httpd.apache.org/docs/current/mod/directives.html per un elenco completo di


direttive supportate da Apache. Se hai installato httpd-manual, puoi accedere alle descrizioni di questi
direttive e altre funzionalità di Apache aprendo il manuale dal server su cui è in esecuzione Apache:
http: // localhost / manual /.

In Fedora e RHEL, il file di configurazione principale del server Apache di base si trova in
/etc/httpd/conf/httpd.conf. Oltre a questo file, qualsiasi file che termina con .conf in
La directory /etc/httpd/conf.d viene utilizzata anche per la configurazione di Apache (basata su un file
Includere una riga nel file httpd.conf). In Ubuntu, la configurazione di Apache è archiviata in
file di testo letti dal server Apache, che iniziano con /etc/apache2/apache2.conf.
La configurazione viene letta dall'inizio alla fine, con la maggior parte delle direttive in fase di elaborazione nel file
ordine in cui vengono letti.

Utilizzo delle direttive


L'ambito di molte direttive di configurazione può essere modificato in base al contesto. In altre parole,
alcuni parametri possono essere impostati a livello globale e quindi modificati per un file, una directory,

457
Pagina 498

Parte IV: diventare un amministratore di server Linux

o host virtuale. Altre direttive sono sempre di natura globale, come quelle specificanti
su quali indirizzi IP il server ascolta. Altri ancora sono validi solo se applicati a un file
posto specifico.

Le posizioni vengono configurate sotto forma di un tag iniziale contenente il tipo di posizione e un file
posizione della risorsa, seguita dalle opzioni di configurazione per quella posizione e finitura
con un tag di fine. Questo modulo è spesso chiamato blocco di configurazione e sembra molto simile a
Codice HTML. Un tipo speciale di blocco di configurazione, noto come blocco di posizione , viene utilizzato per limitare
l'ambito delle direttive a file o directory specifici. Questi blocchi assumono la seguente forma:

<locationtag specificatore>
(le opzioni specifiche degli oggetti che corrispondono allo specificatore vanno all'interno di this
bloccare)
</locationtag>

Esistono diversi tipi di tag di posizione e vengono selezionati in base al tipo di risorsa
posizione che viene specificata. Lo specificatore incluso nel tag di inizio viene gestito in base a
il tipo di tag di posizione. I tag di posizione che generalmente utilizzi e incontri sono Directory,
File e percorso, che limitano l'ambito delle direttive a directory, file,
o posizioni, rispettivamente.

■I tag di directory vengono utilizzati per specificare un percorso in base alla posizione sul file
tem. Ad esempio, <Directory /> fa riferimento alla directory principale del computer.
Le directory ereditano le impostazioni dalle directory sopra di esse, con le più specifiche
Il blocco delle directory sovrascrive quelli meno specifici, indipendentemente dall'ordine in cui
appaiono nei file di configurazione.
■I tag dei file vengono utilizzati per specificare i file in base al nome. I tag dei file possono essere contenuti all'interno di
Blocchi di directory per limitarli ai file in quella directory. Impostazioni all'interno di un file
I blocchi dei file sovrascrivono quelli nei blocchi delle directory.
■I tag di posizione vengono utilizzati per specificare l'URI utilizzato per accedere a un file o una directory. Questo
è diverso da Directory in quanto si riferisce all'indirizzo contenuto nel file
richiesta e non alla posizione reale del file sull'unità. I tag di posizione sono
elaborati per ultimi e sovrascrivono le impostazioni nei blocchi Directory e File.

Abbina le versioni di questi tag: DirectoryMatch, FilesMatch e LocationMatch—


hanno la stessa funzione ma possono contenere espressioni regolari nella specifica della risorsa.
I blocchi FilesMatch e LocationMatch vengono elaborati contemporaneamente a Files e
Posizione, rispettivamente. I blocchi DirectoryMatch vengono elaborati dopo i blocchi Directory.

Apache può anche essere configurato per elaborare le opzioni di configurazione contenute nei file
con il nome specificato nella direttiva AccessFileName (che generalmente è impostata su
.htaccess). Le direttive nei file di configurazione dell'accesso vengono applicate a tutti gli oggetti in
directory che contengono, comprese le sottodirectory e il loro contenuto. Configurazione di accesso
i file vengono elaborati contemporaneamente ai blocchi Directory, utilizzando un simile "più specifico
match ".

458

Pagina 499

Capitolo 17: Configurazione di un server Web

I file di controllo dell'accesso sono utili per consentire agli utenti di modificare impostazioni specifiche senza avere accesso al server
file di configurazione. Le direttive di configurazione consentite all'interno di un file di configurazione di accesso sono determinate dal
Impostazione AllowOverride nella directory in cui sono contenuti. Alcune direttive non hanno senso in questo
livello e generalmente genera un messaggio di "errore interno del server" quando si tenta di accedere all'URI. Il metodo AllowOverride
l'opzione è trattata in dettaglio su http://httpd.apache.org/docs/mod/core.html#allowoverride.

Sono tre le direttive che si trovano comunemente nei blocchi di posizione e nei file di controllo degli accessi
DirectoryIndex, Opzioni e ErrorDocument:

■ DirectoryIndex indica ad Apache quale file caricare quando l'URI contiene un file
directory ma non un nome di file. Questa direttiva non funziona nei blocchi di file.
17
■ Opzioni viene utilizzato per regolare il modo in cui Apache gestisce i file all'interno di una directory. Il
L'opzione ExecCGI dice ad Apache che i file in quella directory possono essere eseguiti come script CGI,
e l'opzione Include dice ad Apache che le inclusioni lato server (SSI) sono
mitted. Un'altra opzione comune è l'opzione Indexes, che dice ad Apache di farlo
generare un elenco di file se uno dei nomi di file si trova nel DirectoryIndex
l'impostazione è mancante. È possibile specificare un elenco assoluto di opzioni o l'elenco di
le opzioni possono essere modificate aggiungendo + o - davanti al nome di un'opzione. Vedi http: //
httpd.apache.org/docs/mod/core.html#options per ulteriori informazioni.
■ Le direttive ErrorDocument possono essere utilizzate per specificare un file contenente messaggi
da inviare ai client Web quando si verifica un errore particolare. La posizione del file è
relativo alla directory / var / www. La direttiva deve specificare un codice di errore
e l'URI completo per il documento di errore. I possibili codici di errore includono 403 (access
negato), 404 (file non trovato) e 500 (errore interno del server). Puoi trovare di più
informazioni sulla direttiva ErrorDocument su http: //httpd.apache.
org / docs / mod / core.html # errordocument. Ad esempio, quando un client
richiede un URL dal server che non viene trovato, la seguente riga ErrorDocument
fa sì che il codice di errore 404 invii al client un messaggio di errore elencato nel file
/var/www/error/HTTP_NOT_FOUND.html.var file.

ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

Un altro uso comune dei blocchi di posizione e dei file di controllo degli accessi è limitare o espandere l'accesso
a una risorsa. La direttiva Allow può essere utilizzata per consentire l'accesso agli host corrispondenti e il
La direttiva Nega può essere utilizzata per proibirla. Entrambe queste opzioni possono verificarsi più di una volta
all'interno di un blocco e vengono gestiti in base all'impostazione Ordine. Impostazione dell'ordine per negare, consentire
consente l'accesso a qualsiasi host non elencato in una direttiva Nega. Un'impostazione di Consenti, nega
nega l'accesso a qualsiasi host non consentito in una direttiva Allow.

Come con la maggior parte delle altre opzioni, viene utilizzata l'opzione Consenti o Nega più specifica per un host,
significa che è possibile negare l'accesso a un intervallo e consentire l'accesso a sottoinsiemi di tale intervallo.
Aggiungendo l'opzione Satisfy e alcuni parametri aggiuntivi, puoi aggiungere la password

459

Pagina 500

Parte IV: diventare un amministratore di server Linux

autenticazione. Per ulteriori informazioni su Allow or Deny, Satisfy o altre direttive, fare riferimento
all'indice della direttiva Apache : http://httpd.apache.org/docs/current/
mod / directives.html.

Comprensione delle impostazioni predefinite


Il motivo per cui puoi iniziare a utilizzare il tuo server web Apache non appena lo installi è che il file
Il file httpd.conf include impostazioni predefinite che indicano al server cose come dove trovare
contenuto Web, script, file di registro e altri elementi necessari per il funzionamento del server. Include anche
impostazioni che indicano al server quanti processi server eseguire contemporaneamente e come directory
vengono visualizzati i contenuti.

Se desideri ospitare un singolo sito Web (ad esempio per il dominio example.com), puoi semplicemente
aggiungi contenuto alla directory / var / www / html e aggiungi l'indirizzo del tuo sito web a un DNS
server in modo che altri possano accedervi. È quindi possibile modificare le direttive, come quelle descritte
nella sezione precedente, se necessario.

Per aiutarti a capire le impostazioni fornite nel file httpd.conf predefinito, ho


visualizzato alcune di queste impostazioni con le descrizioni di seguito. Ho rimosso commenti e
ha riorganizzato alcune delle impostazioni per maggiore chiarezza.

Le seguenti impostazioni mostrano le posizioni in cui il server httpd sta ottenendo e mettendo
contenuto per impostazione predefinita:

ServerRoot "/ etc / httpd"


Includi conf.d / *. Conf
Log degli errori / log_errore
CustomLog "log / access_log" combinato
DocumentRoot "/ var / www / html"
ScriptAlias ​/ cgi-bin / "/ var / www / cgi-bin /"

La direttiva ServerRoot identifica / etc / httpd come posizione in cui la configurazione


i file vengono memorizzati.

Nel punto del file in cui appare la riga Includi, qualsiasi file che termina con .conf da
la directory /etc/httpd/conf.d è inclusa nel file httpd.conf. Configurazione
i file sono spesso associati ai moduli Apache (che sono spesso inclusi nel software
pacchetto con un modulo) o con blocchi host virtuali (a cui potresti aggiungerti
configurazioni host virtuali in file separati). Vedere la sezione "Aggiunta di un host virtuale
ad Apache. "

Man mano che si verificano errori e il contenuto viene servito, vengono inseriti messaggi su tali attività
nei file indicati dalle voci ErrorLog e CustomLog. In questo esempio, quei log
vengono memorizzati in / etc / httpd / logs / error_log e / etc / httpd / logs / access_log
directory, rispettivamente. Questi log sono anche collegati in modo fisso alla directory / var / log / httpd-
tory, in modo da poter accedere allo stesso file anche da lì.

460

Pagina 501

Capitolo 17: Configurazione di un server Web

Le direttive DocumentRoot e ScriptAlias ​determinano dove viene offerto il contenuto


dal tuo server httpd viene memorizzato. Tradizionalmente, inseriresti un file index.html nel file
Directory DocumentRoot (/ var / www / html, per impostazione predefinita) come homepage e aggiungere altro
contenuto secondo necessità. La direttiva ScriptAlias ​dice al demone httpd che qualsiasi script
richiesto dalla directory cgi-bin dovrebbe essere trovato nella directory / var / www / cgi-bin
tory. Ad esempio, un client potrebbe accedere a uno script situato in / var / www / cgi-bin / script.
cgi inserendo un URL come http://example.com/cgi-bin/script.cgi.

Oltre alle posizioni dei file, è possibile trovare altre informazioni nel file httpd.conf. Qui
sono alcuni esempi:

Ascolta 80
Apache dell'utente
Apache di gruppo
ServerAdmin root @ localhost 17
DirectoryIndex index.html index.php
AccessFileName .htaccess

La direttiva Listen 80 dice a httpd di ascoltare le richieste in arrivo sulla porta 80


(la porta predefinita per il protocollo del server Web HTTP). Per impostazione predefinita, ascolta su tutta la rete
interfacce, sebbene sia possibile limitarlo a interfacce selezionate in base all'indirizzo IP (ad esempio,
Ascolta 192.168.0.1:80).

Le direttive User e Group dicono a httpd di essere eseguito come apache sia per l'utente che per il gruppo.
Il valore di ServerAdmin (root @ localhost, per impostazione predefinita) è pubblicato su alcune pagine web
per dire agli utenti dove inviare e-mail se hanno problemi con il server.

DirectoryIndex elenca i file che httpd servirà se viene richiesta una directory. Per
ad esempio, se un browser web richiede http: // host / qualunque / , httpd vedrebbe se
/var/www/html/wwhat/index.html esisteva e lo pubblica se il file esisteva. Se è
non esisteva, in questo esempio, httpd avrebbe cercato index.php. Se quel file non poteva essere
trovato, verrà visualizzato il contenuto della directory.

È possibile aggiungere una direttiva AccessFileName per indicare a httpd di utilizzare il contenuto del file
.htaccess se esiste in una directory per leggere le impostazioni che si applicano per accedervi
directory. Ad esempio, il file potrebbe essere utilizzato per richiedere la protezione con password per
directory o per indicare che il contenuto della directory deve essere visualizzato in determinati file
modi. Affinché questo file funzioni, tuttavia, un contenitore Directory (descritto di seguito) avrebbe
per avere AllowOverride aperto. (Per impostazione predefinita, l'impostazione AllowOverride Nessuno impedisce
il file .htaccess venga utilizzato per eventuali direttive.)

I seguenti contenitori di directory definiscono il comportamento quando la directory root (/), / var /
Si accede alle directory www e / var / www / html:

<Directory />
AllowOverride nessuno
Richiedi tutto negato

461

Pagina 502
Parte IV: diventare un amministratore di server Linux

</Directory>
<Directory "/ var / www">
AllowOverride Nessuno
# Consenti accesso aperto:
Richiedi tutto concesso
</Directory>
<Directory "/ var / www / html">
Indici delle opzioni FollowSymLinks
AllowOverride Nessuno
Richiedi tutto concesso
</Directory>

Il primo contenitore di directory (/) indica che se httpd tenta di accedere a qualsiasi file in
File system Linux, accesso negato. La direttiva AllowOverride none impedisce
.htaccess dalle impostazioni di sovrascrittura per quella directory. Queste impostazioni si applicano a qualsiasi file
sottodirectory non definite in altri contenitori di directory.

L'accesso al contenuto è rilassato all'interno della directory / var / www. L'accesso è concesso al contenuto
aggiunto in quella directory, ma l'override delle impostazioni non è consentito.

Il contenitore della directory / var / www / html segue i collegamenti simbolici e non lo consente
sostituisce. Con l'opzione Richiedi tutto concesso, httpd non impedisce l'accesso al server.

Se tutte le impostazioni appena descritte funzionano per te, puoi iniziare ad aggiungere il contenuto che desideri
nelle directory var / www / html e var / www / cgi-bin. Un motivo per cui potresti non esserlo
soddisfatto dell'impostazione predefinita è che potresti voler offrire contenuti per più
domini (come example.com, example.org e example.net). Per farlo, hai bisogno
per configurare host virtuali. Host virtuali, descritti in maggior dettaglio nel seguito
sezione, sono uno strumento comodo (e quasi essenziale) per fornire contenuti diversi ai clienti
in base all'indirizzo o al nome del server a cui è diretta una richiesta. Configurazione più globale
le opzioni di zione vengono applicate agli host virtuali ma possono essere sovrascritte dalle direttive all'interno del
Blocco VirtualHost.

Aggiunta di un host virtuale ad Apache


Apache supporta la creazione di siti Web separati all'interno di un singolo server per mantenere i contenuti
separato. I singoli siti sono configurati sullo stesso server in quello che viene chiamato
host virtuali.

Gli host virtuali sono davvero solo un modo per avere a disposizione il contenuto per più nomi di dominio
dallo stesso server Apache. Invece di dover avere un sistema fisico per servire
contenuto per ogni dominio, puoi offrire contenuto per più domini dallo stesso
sistema operativo.

Un server Apache che esegue l'hosting virtuale può avere più nomi di dominio che
risolvere all'indirizzo IP del server. Il contenuto che viene offerto a un client Web è basato
sul nome utilizzato per accedere al server.

462

Pagina 503

Capitolo 17: Configurazione di un server Web

Ad esempio, se un client è arrivato al server richiedendo il nome www.example.com ,


il client verrebbe indirizzato a un contenitore host virtuale su cui è stato impostato ServerName
rispondi a www.example.com. Il contenitore fornirebbe la posizione del contenuto
ed eventualmente diversi registri degli errori o direttive Directory dalle impostazioni globali. Questo
In questo modo, ogni host virtuale potrebbe essere gestito come se fosse su una macchina separata.

Per utilizzare l'hosting virtuale basato sul nome, attiva la direttiva NameVirtualHost. Quindi aggiungi come
molti contenitori VirtualHost come preferisci. Ecco come configurare un host virtuale:

Dopo aver abilitato NameVirtualHost, il DocumentRoot predefinito (/ var / www / html) non viene più utilizzato se
si accede al server tramite l'indirizzo IP o un nome che non è impostato in un contenitore VirtualHost. Invece il primo
17
Il contenitore VirtualHost viene utilizzato come posizione predefinita per il server.
1. In Fedora o RHEL, creare un file chiamato /etc/httpd/conf.d/example.org.
conf utilizzando questo modello :
NameVirtualHost *: 80
<VirtualHost *: 80>
ServerAdmin webmaster@example.org
ServerName www.example.org
ServerAlias web.example.org
DocumentRoot /var/www/html/example.org/
DirectoryIndex index.php index.html index.htm
</VirtualHost>

Questo esempio include le seguenti impostazioni:


■ La riga NameVirtualHost indica ad Apache di determinare a quale host virtuale
servire i documenti in base al nome host fornito dal client HTTP.
*: 80 significa che verranno trattate le richieste alla porta 80 su qualsiasi indirizzo IP
in questo modo.
■ Allo stesso modo, la specifica *: 80 nel blocco VirtualHost indica cosa
indirizzo e porta a cui si applica questo host virtuale. Con più indirizzi IP associati
atato con il tuo sistema Linux, il * può essere sostituito da un indirizzo IP specifico.
La porta è opzionale sia per la specifica NameVirtualHost che per quella VirtualHost
ma dovrebbero essere sempre usati per prevenire interferenze con gli host virtuali SSL
(che utilizzano la porta 443 per impostazione predefinita).
■ Le righe ServerName e ServerAlias ​indicano ad Apache quale nome viene assegnato
l'host virtuale dovrebbe essere riconosciuto come, quindi sostituiscili con nomi appropriati
al tuo sito. Puoi tralasciare la riga ServerAlias ​se non ne hai
nomi alternativi per il server ed è possibile specificare più di un nome per
Linea ServerAlias ​o avere più linee ServerAlias ​se ne hai diverse
nomi alternativi.

463

Pagina 504

Parte IV: diventare un amministratore di server Linux

■ DocumentRoot specifica dove si trovano i documenti Web (contenuto servito per questo
site) vengono memorizzati. Sebbene mostrato come una sottodirectory creata sotto il file
default DocumentRoot (/ var / www / html), spesso i siti sono allegati alla home
directory di utenti specifici (come / home / chris / public_html) in modo che ciascuno
il sito può essere gestito da un utente diverso.

2. Con l'host abilitato, utilizzare apachectl per controllare la configurazione, quindi eseguire
un grazioso riavvio:
# apachectl configtest
Sintassi OK
# apachectl grazioso

A condizione che tu abbia registrato il sistema con un server DNS, un browser web dovrebbe essere in grado di farlo
accedere a questo sito Web utilizzando www.example.org o web.example.org. Se funziona,
puoi anche iniziare ad aggiungere altri host virtuali al sistema.

Un altro modo per estendere l'utilizzo del tuo sito web è consentire a più utenti di condividere il proprio
contenuto sul tuo server. Puoi consentire agli utenti di aggiungere contenuti che desiderano condividere tramite il tuo
web server in una sottodirectory delle loro directory home, come descritto nella sezione successiva.

Tenere singoli host virtuali in file separati è un modo conveniente per gestire gli host virtuali. Tuttavia, dovresti
fai attenzione a mantenere il tuo host virtuale principale in un file che verrà letto prima degli altri perché il primo host virtuale
riceve richieste di nomi di sito che non corrispondono a nessuno nella tua configurazione. In un ambiente di web hosting commerciale
ment, è comune creare uno speciale host virtuale predefinito che contiene un messaggio di errore che indica che nessun sito di
quel nome è stato configurato.

Consentire agli utenti di pubblicare i propri contenuti web


In situazioni in cui non hai la possibilità di configurare un host virtuale per ogni file
utente per il quale si desidera fornire spazio web, è possibile utilizzare facilmente il file
modulo mod_userdir in Apache. Con questo modulo abilitato (che non è di default),
la directory public_html nella directory home di ogni utente è disponibile per il web all'indirizzo
http: // servername / ~ nomeutente /.

Ad esempio, un utente di nome wtucker su www.example.org archivia i contenuti web in formato


/ home / wtucker / public_html. Tale contenuto sarebbe disponibile da http: // www
.example.org / ~ wtucker.
Apporta queste modifiche al file /etc/httpd/conf/httpd.conf per consentire agli utenti di pubblicare
contenuto web dalle proprie directory home. Non tutte le versioni di Apache hanno questi blocchi
nel loro file httpd.conf, quindi potresti doverli creare da zero:

464

Pagina 505

Capitolo 17: Configurazione di un server Web

1. Creare un blocco <IfModule mod_userdir.c> . Cambia chris con qualsiasi nome utente
desidera consentire la creazione della propria directory public_html. Puoi aggiungere più file
nomi utente.
<IfModule mod_userdir.c>
UserDir ha abilitato chris
UserDir public_html
</IfModule>

2. Creare un blocco direttiva <Directory / home / * / public_html> e modificare qualsiasi


impostazioni che ti piacciono . Ecco come apparirà il blocco:
</IfModule>
<Directory "/ home / * / public_html">
Gli indici delle opzioni includono FollowSymLinks
Richiedi tutto concesso
</Directory>
17
3. Chiedi ai tuoi utenti di creare le proprie directory public_html nella propria casa
directory.
$ mkdir $ HOME / public_html

4. Impostare l'autorizzazione di esecuzione (come utente root) per consentire al daemon httpd di accedere
la home directory:
# chmod + x / home / home / *

5. Se SELinux è in modalità Enforcing (che è di default in Fedora e RHEL),


impostare correttamente il contesto del file SELinux sul contenuto in modo che SELinux consenta l'estensione
demone httpd per accedere al contenuto:
# chcon -R --reference = / var / www / html / / home / * / public_html

6. Impostare il booleano SELinux per consentire agli utenti di condividere il contenuto HTML dalla propria casa
directory:
# setsebool –P httpd_enable_homedirs true

7. Riavviare o ricaricare il servizio httpd.

A questo punto, dovresti essere in grado di accedere ai contenuti inseriti in public_html dell'utente
directory puntando un browser web a http: // hostname / ~ user .

Protezione del traffico web con SSL / TLS


Tutti i dati che condividi dal tuo sito web utilizzando il protocollo HTTP standard vengono inviati in testo non crittografato.
Ciò significa che chiunque può guardare il traffico su una rete tra il tuo server
e il tuo cliente può visualizzare i tuoi dati non protetti. Per proteggere queste informazioni, puoi aggiungere
certificati al tuo sito (in modo che un client possa convalidare chi sei) e crittografare i tuoi dati (quindi
nessuno può annusare la tua rete e vedere i tuoi dati).

Le applicazioni di commercio elettronico come acquisti in linea e servizi bancari lo sono generalmente
crittografato utilizzando Secure Sockets Layer (SSL) o Transport Layer Security (TLS)

465

Pagina 506
Parte IV: diventare un amministratore di server Linux

specifiche. TLS è basato sulla versione 3.0 delle specifiche SSL, quindi sono molto simili
in natura. A causa di questa somiglianza e poiché SSL è più vecchio, l'acronimo SSL è spesso
usato per riferirsi a entrambe le varietà. Per le connessioni Web, viene stabilita prima la connessione SSL,
e quindi la normale comunicazione HTTP viene "canalizzata" attraverso di essa.

Poiché la negoziazione SSL avviene prima di qualsiasi comunicazione HTTP, l'hosting virtuale basato sul nome (che si verifica in
il livello HTTP) non funziona facilmente con SSL. Di conseguenza, ogni host virtuale SSL che configuri dovrebbe avere
un indirizzo IP univoco. (Vedere il sito Apache per ulteriori informazioni: httpd.apache.org/docs/vhosts/name-
based.html.)

Mentre si stabilisce una connessione tra un client SSL e un server SSL, asimmetria
La crittografia ric (chiave pubblica) viene utilizzata per verificare le identità e stabilire i parametri di sessione
eters e la chiave di sessione. È quindi un algoritmo di crittografia simmetrica come DES o RC4
utilizzato con la chiave negoziata per crittografare i dati trasmessi durante la sessione.
L'utilizzo della crittografia asimmetrica durante la fase di handshaking consente una comunicazione sicura
zione senza l'uso di una chiave già condivisa e la crittografia simmetrica è più veloce e più
pratico per l'uso sui dati di sessione.

Affinché il client possa verificare l'identità del server, il server deve disporre di un file
chiave privata generata, nonché un certificato contenente la chiave pubblica e le informazioni
sul server. Questo certificato deve essere verificabile utilizzando una chiave pubblica nota
il cliente.

I certificati sono generalmente firmati digitalmente da un'autorità di certificazione (CA) di terze parti
ha verificato l'identità del richiedente e la validità della richiesta di avere il
certificato firmato. Nella maggior parte dei casi, la CA è una società con cui ha stipulato accordi
il fornitore del browser Web deve disporre del proprio certificato installato e ritenuto attendibile dal client predefinito
installazioni. La CA addebita quindi all'operatore del server i suoi servizi.

Le autorità di certificazione commerciali variano in termini di prezzo, funzionalità e supporto del browser, ma ricorda
ma quel prezzo non è sempre un'indicazione di qualità. Alcune CA popolari includono InstantSSL
( http://www.instantssl.com), Thawte (http://www.thawte.com) e Symantec
( http://www.symantec.com/ssl-certificates#).

Hai anche la possibilità di creare certificati autofirmati, anche se dovrebbero esserlo


utilizzato solo per il test o quando un numero molto limitato di persone accederà al tuo server
e non si prevede di avere certificati su più macchine. Istruzioni per la generazione di un file
certificati autofirmati sono inclusi nella sezione "Generazione di una chiave SSL e autofirmati
certificato."

L'ultima opzione è eseguire la tua autorità di certificazione. Questo è probabilmente pratico solo se
hai un numero limitato di utenti previsti e i mezzi per distribuire il tuo certificato CA.

466

Pagina 507

Capitolo 17: Configurazione di un server Web

a loro (inclusa l'assistenza per l'installazione nei loro browser). Il processo per la creazione
la creazione di una CA è troppo elaborata per essere trattata in questo libro, ma è una valida alternativa
attingendo certificati autofirmati.

Le sezioni seguenti descrivono come le comunicazioni HTTPS sono configurate per impostazione predefinita in
Fedora e RHEL quando installi il pacchetto mod_ssl. Dopodiché, descrivo come farlo
configurare meglio le comunicazioni SSL generando le proprie chiavi e certificati SSL per
utilizzare con il server web (in esecuzione su un sistema Fedora o RHEL) configurato in questo capitolo.

Capire come è configurato SSL


Se hai installato il pacchetto mod_ssl in Fedora o RHEL (che è fatto di default se
hai installato il gruppo Web Server), vengono creati un certificato autofirmato e una chiave privata
quando il pacchetto è installato. Ciò consente di utilizzare immediatamente il protocollo HTTPS per
comunicare con il server web. 17
Sebbene la configurazione predefinita di mod_ssl consenta di avere comunicazioni crittografate
tra il server Web e i client, poiché il certificato è autofirmato, un client
l'accesso al tuo sito viene avvisato che il certificato non è attendibile. Per iniziare a esplorare SSL
configurazione per il tuo server web Apache, assicurati che il pacchetto mod_ssl sia installato su
il server che esegue il servizio Apache (httpd):
# yum installa mod_ssl

Il pacchetto mod_ssl include il modulo necessario per implementare SSL sul tuo server web
(mod_ssl.so) e un file di configurazione per i tuoi host SSL: /etc/httpd/conf.d/ssl.conf.
Ci sono molti commenti in questo file, per aiutarti a capire cosa cambiare. Quelle righe
che non sono commentati definiscono alcune impostazioni iniziali e un host virtuale predefinito. Ecco
alcune di quelle righe:

Ascolta 443 https


...
<VirtualHost _default_: 443>
Log di ErrorLog / ssl_error_log
Log di TransferLog / ssl_access_log
LogLevel warn
SSLEngine acceso
...
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
...
</VirtualHost> Il servizio SSL è impostato per l'ascolto sulla porta SSL standard
443 su tutte le interfacce di rete del sistema.

Viene creato un blocco VirtualHost che causa messaggi di errore e messaggi di accesso
registrati in file di registro separati dai registri standard utilizzati dal server (ssl_
error_log e ssl_access_log nella directory / var / log / httpd /). Il livello di registro
messages è impostato per avvisare e SSLEngine è attivato.

467

Pagina 508

Parte IV: diventare un amministratore di server Linux

Nel codice di esempio precedente, due voci associate ai certificati SSL nel file
Il blocco VirtualHost identifica la chiave e le informazioni sul certificato. Una chiave viene generata quando
mod_ssl viene installato e inserito nel file /etc/pki/tls/private/localhost.key.
Un certificato autofirmato, /etc/pki/tls/certs/localhost.crt, viene creato usando quello
chiave. Quando crei la tua chiave e il tuo certificato in un secondo momento, devi sostituire i valori di
SSLCertificateFile e SSLCertificateKeyFile in questo file.

Dopo aver installato il pacchetto mod_ssl e ricaricato il file di configurazione, puoi provare
che il certificato predefinito funzioni seguendo questi passaggi:

1. Aprire una connessione al sito Web da un browser Web, utilizzando HTTPS


protocollo. Ad esempio, se stai eseguendo Firefox sul sistema in cui il file web
server è in esecuzione, digitare https: // localhost nella casella della posizione e premere
Accedere. La Figura 17.2 mostra un esempio della pagina che appare.

FIGURA 17.2

Accesso a un sito Web SSL con un certificato predefinito

Questa pagina ti avverte che non c'è modo di verificare chi ha creato il certificato che stai accettando.
468

Pagina 509

Capitolo 17: Configurazione di un server Web

2. Poiché si accede al sito tramite un browser sull'host locale, fare clic su Aggiungi
Eccezione per consentire le connessioni a questo sito . Sei avvisato che sei sovrascritto
in Firefox per accettare questo certificato.
3. Selezionare Visualizza per vedere il certificato che è stato generato. Include il tuo nome host,
informazioni su quando è stato emesso il certificato e quando scade e molti
altre informazioni sull'organizzazione.

4. Chiudere quella finestra, quindi selezionare Conferma eccezione di protezione per accettare il file
connessione. Ora dovresti vedere la tua pagina web predefinita utilizzando il protocollo HTTPS. A partire dal
ora in poi, il tuo browser accetterà connessioni HTTPS al server web che lo utilizzano
certificato e crittografa tutte le comunicazioni tra il server e il browser.

Poiché non vuoi che il tuo sito web spaventi gli utenti, la cosa migliore da fare è ottenere un file
certificato valido da utilizzare con il tuo sito. La prossima cosa migliore da fare è creare un file autofirmato
certificato che includa almeno informazioni migliori sul tuo sito e sulla tua organizzazione.
17
La sezione seguente descrive come farlo.

Generazione di una chiave SSL e di un certificato autofirmato


Per iniziare a configurare SSL, usa il comando openssl, che fa parte del pacchetto openssl-
età, per generare la tua chiave pubblica e privata. Dopodiché, puoi generare il tuo sé
certificato firmato per testare il sito o da utilizzare internamente.

1. Se il pacchetto openssl non è già installato, installalo come segue:


# yum install openssl

2. Genera una chiave privata RSA a 1024 bit e salvala in un file:


# cd / etc / pki / tls / private
# openssl genrsa -out server.key 1024
# chmod 600 server.key

Puoi usare un nome file diverso da server.key e dovresti farlo se prevedi di avere più di un host SSL su
la tua macchina (che richiede più di un indirizzo IP). Assicurati solo di specificare il nome file corretto nel file
Configurazione di Apache in un secondo momento.

Oppure, in ambienti con maggiore sicurezza, crittografando la chiave aggiungendo il -des3


l'argomento dopo l'argomento genrsa sulla riga di comando di openssl è utile
idea. Quando viene richiesta una passphrase, premere Invio:
# openssl genrsa -des3 -out server.key 1024

3. Se non si prevede di firmare il certificato o se si desidera testare il file


configurazione, generare un certificato autofirmato e salvarlo in un file denominato
server.crt nella directory / etc / pki / tls / certs :

469

Pagina 510

Parte IV: diventare un amministratore di server Linux

# cd / etc / pki / tls / certs


# openssl req -new -x509 -nodes -sha1 -days 365 \
-key /etc/pki/tls/private/server.key \
-out server.crt
Nome paese (codice di 2 lettere) [AU]: USA
Nome dello stato o della provincia (nome completo) [Some-State]: NJ
Nome località (ad es. Città) [Città predefinita]: Princeton
Nome dell'organizzazione (ad es. Azienda) [Default Company Ltd
Ltd]: SOLO PER USO DI PROVA
Nome unità organizzativa (ad esempio, sezione) []: SOLO PER USO DI PROVA
Nome comune (ad esempio, il TUO nome) []: secure.example.org
Indirizzo e-mail []: dom@example.org

4. Modificare il file /etc/httpd/conf.d/ssl.conf per cambiare la chiave e il certificato


posizioni per utilizzare quelle che hai appena creato. Per esempio:
SSLCertificateFile / etc / pki / tls / certs / server.crt
SSLCertificateKeyFile / etc / pki / tls / private / server.key

5. Riavviare o ricaricare il server httpd.

6. Aprire nuovamente https: // localhost da un browser locale, ripetere la procedura per


rivedere e accettare il nuovo certificato.

Per uso interno o test, un certificato autofirmato potrebbe funzionare per te. Tuttavia, per il pubblico
siti Web, è necessario utilizzare un certificato convalidato da un'autorità di certificazione (CA). Il
la procedura per farlo è descritta di seguito.

Generazione di una richiesta di firma del certificato


Se prevedi di far firmare il tuo certificato da una CA (inclusa una che gestisci tu stesso),
puoi utilizzare la tua chiave privata per generare una richiesta di firma del certificato (CSR):

1. Creare una directory per archiviare la CSR.


# mkdir /etc/pki/tls/ssl.csr
# cd /etc/pki/tls/ssl.csr/

2. Utilizzare il comando openssl per generare la CSR. Il risultato è un file CSR in


directory corrente denominata server.csr. Quando inserisci le informazioni, il file
Il nome comune deve corrispondere al nome che i client utilizzeranno per accedere al server.
Assicurati di ottenere gli altri dettagli corretti in modo che possa essere convalidato da una CA di terze parti.
Inoltre, se hai inserito una passphrase per la tua chiave, ti viene chiesto di inserirla
qui per usare la chiave.
# openssl req -new -key ../private/server.key -out server.csr

Nome paese (codice di 2 lettere) [AU]: USA


Nome dello stato o della provincia (nome completo) [Some-State]: Washington

470

Pagina 511

Capitolo 17: Configurazione di un server Web

Nome località (ad es. Città) []: Bellingham


Nome dell'organizzazione (ad es. Azienda) [Internet Widgits Pty
Ltd]: società di esempio, LTD.
Nome unità organizzativa (ad esempio, sezione) []: Rete
Operazioni
Nome comune (ad esempio, il TUO nome) []: secure.example.org
Indirizzo email []:dom@example.org

Inserisci i seguenti attributi "extra"


da inviare con la richiesta del certificato
Una password di verifica []:
Un nome di azienda facoltativo []:

3. Visitare il sito Web dell'autorità di firma del certificato scelta e richiedere


un certificato firmato. Ad un certo punto, il sito CA probabilmente ti chiederà di copiare e
incolla il contenuto del tuo CSR (file server.csr in questo esempio) in un modulo
17
necessario per effettuare la richiesta.
4. Quando la CA ti invia il certificato (probabilmente tramite e-mail), salvalo nel file
/ etc / pki / tls / certs / directory utilizzando un nome basato sul sito in cui ti trovi
hosting, ad esempio example.org.crt .

5. Modificare il valore di SSLCertificateFile in /etc/httpd/conf.d/ssl.


conf in modo che punti al nuovo file CRT. Oppure, se hai più host SSL, tu
potrebbe voler creare una voce separata (possibilmente in un file .conf separato) che sembra
come il seguente:
Ascolta 192.168.0.56:443
<VirtualHost *: 443>
ServerName secure.example.org
ServerAlias web.example.org
DocumentRoot / home / nomeutente / public_html /
DirectoryIndex index.php index.html index.htm
SSLEngine On
SSLCertificateKeyFile /etc/pki/tls/private/server.key
SSLCertificateFile /etc/pki/tls/certs/example.org.crt
</VirtualHost>

L'indirizzo IP mostrato nella direttiva Listen dovrebbe essere sostituito dall'indirizzo IP pubblico
che rappresenta l'host SSL che stai servendo. Ricorda che ogni host SSL dovrebbe avere il suo
proprio indirizzo IP.

Risoluzione dei problemi del server Web


In qualsiasi ambiente complesso, occasionalmente si verificano problemi. Questa sezione include suggerimenti
per isolare e risolvere gli errori più comuni che potresti incontrare.

471

Pagina 512

Parte IV: diventare un amministratore di server Linux

Controllo degli errori di configurazione


Occasionalmente potresti incorrere in errori di configurazione o problemi di script che impediscono Apache
l'avvio o che impediscono l'accesso a file specifici. La maggior parte di questi problemi
può essere isolato e risolto utilizzando due strumenti forniti da Apache: il programma apachectl e
il registro degli errori di sistema.

Quando si verifica un problema, utilizzare prima il programma apachectl con il configtest


parametro per testare la configurazione. In effetti, è una buona idea sviluppare l'abitudine di correre
questo ogni volta che apporti una modifica alla configurazione:

# apachectl configtest
Sintassi OK
# apachectl grazioso
/ usr / sbin / apachectl grazioso: httpd riavviato con grazia

In caso di errore di sintassi, apachectl indica dove si verifica l'errore e lo fa


è meglio dare un suggerimento sulla natura del problema. Puoi quindi usare il grazioso
opzione di riavvio (apachectl graceful) per istruire Apache a ricaricare la sua configurazione
senza disconnettere alcun client attivo.

L'elegante opzione di riavvio in apachectl verifica automaticamente la configurazione prima di inviare il segnale di ricarica
ad apache, ma prendendo l'abitudine di eseguire il test di configurazione manuale dopo aver apportato modifiche alla configurazione
è ancora una buona idea.

Alcuni problemi di configurazione superano i test di sintassi eseguiti da apachectl ma causano l'estensione
Daemon HTTP per uscire immediatamente dopo aver ricaricato la sua configurazione. Se questo accade, usa
il comando tail per controllare il log degli errori di Apache per informazioni utili. Su Fedora e RHEL
systems, il log degli errori si trova in /var/log/httpd/error.log. Su altri sistemi, puoi trovare
la posizione cercando la direttiva ErrorLog nella configurazione di Apache.

Potresti incontrare un messaggio di errore simile a questo:

[crit] (98) Indirizzo già in uso: make_sock: impossibile collegarsi a


porta 80

Questo errore spesso indica che qualcos'altro è associato alla porta 80 (non molto comune a meno che
hai tentato di installare un altro server web), che un altro processo Apache è già
in esecuzione (apachectl di solito cattura questo), o che hai detto ad Apache di eseguire il bind
Combinazione di indirizzo IP e porta in più di un posto. Il mio amico Richard ha detto di sì
ho visto studenti che hanno installato Skype su Linux in un modo che fa sì che Skype utilizzi la porta TCP 80
durante l'esecuzione in background.

472
Pagina 513

Capitolo 17: Configurazione di un server Web

È possibile utilizzare il comando netstat per visualizzare l'elenco dei programmi (incluso Apache) con
Porte TCP nello stato LISTEN:

# netstat -nltp
Connessioni Internet attive (solo server)
Proto Indirizzo locale Indirizzo esterno Stato PID / Nome programma
tcp6 ::: 80 ::: * ASCOLTA 2105 / httpd

L'output di netstat (che è stato accorciato per adattarsi qui) indica che un'istanza di
il processo httpd con ID processo 2105 è in ascolto (come indicato dallo stato LISTEN)
per le connessioni a qualsiasi indirizzo IP locale (indicato da ::: 80) sulla porta 80 (lo standard HTTP
porta). Se un programma diverso è in ascolto sulla porta 80, viene visualizzato lì. Puoi usare l'uccisione
comando per terminare il processo, ma se è qualcosa di diverso da httpd, dovresti
scopri anche perché è in esecuzione.
17
Se non vedi altri processi in ascolto sulla porta 80, potrebbe essere che tu abbia
ha detto accidentalmente ad Apache di ascoltare lo stesso indirizzo IP e la stessa combinazione di porte in più
di un posto. Tre direttive di configurazione possono essere utilizzate per questo: BindAddress, Port,
e ascolta:

■ BindAddress consente di specificare un singolo indirizzo IP su cui ascoltare, oppure è possibile farlo
specificare tutti gli indirizzi IP utilizzando il carattere jolly *. Non dovresti mai averne più di uno
Istruzione BindAddress nel file di configurazione.
■ Porta specifica su quale porta TCP ascoltare ma non consente di specificare il file
Indirizzo IP. La porta generalmente non viene utilizzata più di una volta nella configurazione.
■ Ascolta consente di specificare sia un indirizzo IP che una porta a cui collegarsi. Il
L'indirizzo IP può essere sotto forma di un carattere jolly e puoi avere più Listen
istruzioni nel file di configurazione.

Per evitare confusione, è generalmente una buona idea utilizzare solo uno di questi tipi di direttiva. Di
i tre, Listen è il più flessibile, quindi è probabilmente quello che desideri utilizzare di più.
Un errore comune quando si utilizza Ascolta è anche specificare una porta su tutti gli indirizzi IP (*: 80)
come quella stessa porta su un indirizzo IP specifico (1.2.3.4:80), che genera l'errore da
make_sock.

Gli errori di configurazione relativi a SSL generalmente provocano l'avvio improprio di Apache. Rendere
assicurati che tutti i file di chiavi e certificati esistano e che siano nel formato corretto (usa openssl
esaminarli).

Per altri messaggi di errore, prova a fare una ricerca sul web per vedere se qualcun altro ha incontrato-
ha risolto il problema. Nella maggior parte dei casi, puoi trovare una soluzione nelle prime partite.

Se non si ottengono informazioni sufficienti in ErrorLog, è possibile configurarlo per il log


ulteriori informazioni utilizzando la direttiva LogLevel. Le opzioni disponibili per questa direttiva, in
ordine crescente di verbosità, sono emerg, alert, crit, error, warn, notice, info e
debug. Seleziona solo uno di questi.

473

Pagina 514

Parte IV: diventare un amministratore di server Linux

Qualsiasi messaggio importante almeno quanto il LogLevel selezionato viene archiviato nel file
ErrorLog. Su un server tipico, LogLevel è impostato per avvisare. Non dovresti impostarlo su alcun valore
inferiore a crit e dovresti evitare di lasciarlo impostato per il debug perché ciò può rallentare il
server e il risultato è un ErrorLog molto grande.

Come ultima risorsa, puoi anche provare a eseguire httpd -X manualmente per verificare la presenza di arresti anomali o altro
messaggio di errore. -X esegue httpd in modo da visualizzare sullo schermo i messaggi di debug e superiori.

Accesso vietato e errori interni al server


I due tipi comuni di errori che potresti incontrare durante il tentativo di visualizzare specifiche
le pagine sul tuo server sono errori di autorizzazione ed errori interni del server. Entrambi i tipi di errore
di solito può essere isolato utilizzando le informazioni nel registro degli errori. Dopo aver creato uno qualsiasi dei file
modifiche descritte nell'elenco seguente per tentare di risolvere uno di questi problemi, provare il
richiedi nuovamente e controlla il registro degli errori per vedere se il messaggio è cambiato
(ad esempio, per dimostrare che l'operazione è stata completata con successo).

Gli errori "File non trovato" possono essere controllati allo stesso modo di "Accesso vietato" e "Errori interni al server".
a volte scopri che Apache non sta cercando dove pensi che sia un file specifico. In genere, l'intero percorso del file
compare nel registro degli errori. Assicurati di accedere all'host virtuale corretto e controlla le impostazioni di Alias
questo potrebbe indirizzare la tua posizione verso un luogo che non ti aspetti.

■ Autorizzazioni file: un errore "Autorizzazioni file impediscono l'accesso" indica che il file
Il processo apache è in esecuzione come utente che non è in grado di aprire il file richiesto.
Per impostazione predefinita, httpd viene eseguito dall'utente e dal gruppo di apache. Assicurati che l'account
ha i permessi di esecuzione sulla directory e su ogni directory sopra di essa, così come
leggere i permessi sui file stessi. Anche le autorizzazioni di lettura su una directory sono
necessario se si desidera che Apache generi un indice di file. Vedere la pagina del manuale
per chmod per ulteriori informazioni su come visualizzare e modificare i permessi.

Le autorizzazioni di lettura non sono necessarie per i file binari compilati, come quelli scritti in C o C ++, ma possono essere tranquillamente
aggiunto a meno che non esista la necessità di mantenere segreto il contenuto del programma.

■ Accessonegato: un errore "Client negato dalla configurazione del server" lo indica


Apache è stato configurato per negare l'accesso all'oggetto. Controlla i file di configurazione
per le sezioni Posizione e Directory che potrebbero influire sul file che stai provando
accedere. Ricorda che le impostazioni applicate a un percorso vengono applicate anche a qualsiasi percorso
sotto di esso. Puoi sovrascriverli modificando le autorizzazioni solo per more
percorso specifico a cui si desidera consentire l'accesso.

474

Pagina 515

Capitolo 17: Configurazione di un server Web

■ Indice non trovato : l'errore "Indice di directory vietato dalla regola" lo indica
Apache non è riuscito a trovare un file di indice con un nome specificato in DirectoryIndex
direttiva ed è stato configurato per non creare un indice contenente un elenco di file in un file
directory. Assicurati che la tua pagina indice, se ne hai una, abbia uno dei nomi specificati
specificato nella direttiva DirectoryIndex pertinente o aggiungere una riga degli indici delle opzioni
nella sezione Directory o Posizione appropriata per quell'oggetto.
■ Script arrestato in modo anomalo : gli errori di "fine prematura delle intestazioni di script" possono indicare che uno script
si blocca prima che finisca. A volte vengono visualizzati anche gli errori che hanno causato ciò
nel registro degli errori. Quando si utilizza suexec o suPHP, potrebbe essere causato anche questo errore
da un errore di proprietà del file o autorizzazioni. Questi errori vengono visualizzati nei file di registro in
/ var / log / httpd directory.
■ Errori SELinux: se i permessi dei file sono aperti, ma vengono visualizzati i messaggi che negano l'autorizzazione
nei file di registro, SELinux potrebbe essere la causa del problema. Imposta SELinux in modalità permissiva 17
temporaneamente (setenforce 0) e riprova ad accedere al file. Se il file è ora accessibile
ble, impostare nuovamente SELinux in modalità Enforcing (setenforce 1) e controllare i contesti dei file e
Booleani. I contesti dei file devono essere corretti affinché httpd possa accedere a un file. Un booleano
potrebbe impedire che un file venga servito da una directory montata in remoto o impedire una pagina
dall'invio di un'e-mail o dal caricamento di un file. Digita man httpd_selinux per i dettagli
sulle impostazioni di configurazione di SELinux associate ai servizi httpd. (Installa il
pacchetto selinux-policy-devel per avere quella pagina man aggiunta al tuo sistema.)

Sommario
Il progetto open source Apache è il server web più popolare al mondo. Sebbene Apache
offre un'enorme flessibilità, sicurezza e complessità, come può essere un server Web Apache di base
configurato in pochi minuti in Fedora, RHEL e nella maggior parte delle altre distribuzioni Linux.

Il capitolo ha descritto i passaggi per l'installazione, la configurazione, la protezione e la risoluzione dei problemi
un server web Apache di base. Hai imparato come configurare l'hosting virtuale e proteggere SSL
host. Hai anche imparato a configurare Apache per consentire a qualsiasi account utente sul sistema di
pubblicare contenuti dalla propria directory public_html.

Continuando sull'argomento della configurazione del server, nel Capitolo 18, imparerai come impostare
un server FTP in Linux. Gli esempi illustrano come configurare un server FTP utilizzando il
pacchetto vsftpd.

Esercizi
Gli esercizi in questa sezione trattano argomenti relativi all'installazione e alla configurazione di Apache
server web. Come al solito, ti consiglio di utilizzare Fedora o Red Hat Enterprise Linux di riserva
sistema per fare gli esercizi. Non fare questi esercizi su una macchina di produzione perché questi

475

Pagina 516

Parte IV: diventare un amministratore di server Linux

gli esercizi modificano i file di configurazione e il servizio di Apache e potrebbero danneggiare i servizi
hanno attualmente configurato. Prova a trovare un computer dove interromperlo non farà male
servizi sul sistema.

Questi esercizi presuppongono che tu stia iniziando con un'installazione Fedora o RHEL su cui
il server Apache (pacchetto httpd) non è ancora installato.

Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B. Queste te ne mostrano una
approccio a ciascuna attività, sebbene Linux possa offrire diversi modi per completare un'attività.

1. Da un sistema Fedora, installare tutti i pacchetti associati al gruppo Web Server.

2. Creare un file chiamato index.html nella directory assegnata a DocumentRoot in


il file di configurazione principale di Apache. Il file dovrebbe contenere le parole "My Own Web
Server ”all'interno.

3. Avviare il server Web Apache e impostarlo per l'avvio automatico all'avvio.


Verifica che sia disponibile da un browser web sul tuo host locale. (Tu dovresti vedere
le parole "My Own Web Server" visualizzate se funziona correttamente.)

4. Utilizzare il comando netstat per vedere su quali porte è in ascolto il server httpd.

5. Prova a connetterti al tuo server web Apache da un browser web esterno a


sistema locale. Se fallisce, correggi eventuali problemi riscontrati esaminando il file
firewall, SELinux e altre funzionalità di sicurezza.

6. Utilizzando il comando openssl o simile, creare la propria chiave RSA privata e


certificato SSL autofirmato.

7. Configurare il server Web Apache per utilizzare la chiave e il certificato autofirmato


offrire contenuti protetti (HTTPS).

8. Utilizzare un browser Web per creare una connessione HTTPS al server Web e visualizzare il file
contenuto del certificato che hai creato.

9. Crea un file chiamato /etc/httpd/conf.d/example.org.conf, che si attiva


hosting virtuale basato sul nome e crea un host virtuale che fa queste cose:
■ Ascolta sulla porta 80 su tutte le interfacce

■ Ha un amministratore del server di joe@example.org


■ Ha un nome server di joe.example.org
■ Ha una DocumentRoot di /var/www/html/example.org
■ Dispone di un DirectoryIndex che include almeno index.html

Crea un file index.html in DocumentRoot che contenga le parole "Benvenuto in


la Casa di Joe ”all'interno.

10. Aggiungi il testo joe.example.org alla fine della voce localhost nel tuo / etc /
ospita il file sulla macchina che esegue il server web. Quindi digitahttp: //
joe.example.org nella casella della posizione del tuo browser web. Tu dovresti vedere
"Benvenuto nella casa di Joe" quando viene visualizzata la pagina.

476
Pagina 517

CAPITOLO

18
Configurazione di un server FTP
IN QUESTO CAPITOLO
Imparare come funziona FTP

Ottenere un server vsftpd installato

Scelta delle impostazioni di sicurezza per vsftpd

Impostazione dei file di configurazione di vsftpd

Esecuzione di client FTP

Il reti. Sebbene esistano protocolli più sicuri per la condivisione di file in rete, viene comunque utilizzato FTP
abbastanza spesso per rendere i file liberamente disponibili su Internet.
File Transfer Protocol (FTP) è uno dei più vecchi protocolli esistenti per la condivisione di file
Diversi progetti di server FTP sono oggi disponibili con Linux. Tuttavia, quello spesso utilizzato con
Fedora, Red Hat Enterprise Linux, Ubuntu e altre distribuzioni Linux sono Very Secure FTP
Daemon (pacchetto vsftpd). Questo capitolo descrive come installare, configurare, utilizzare e proteggere un FTP
server utilizzando il pacchetto vsftpd.

Capire FTP
FTP opera in un modello client / server. Un demone del server FTP ascolta le richieste in arrivo (su TCP
porta 21) dai client FTP. Il client presenta un login e una password. Se il server accetta il login
informazioni, il client può attraversare in modo interattivo il filesystem, elencare file e directory, e poi
scaricare (e talvolta caricare) file.

Ciò che rende FTP insicuro è che tutto ciò che viene inviato tra il client FTP e il server viene eseguito in formato
testo chiaro. Il protocollo FTP è stato creato in un momento in cui veniva eseguita la maggior parte delle comunicazioni con il computer
linee private o tramite dial-up, dove la crittografia non era considerata critica. Se usi FTP su
una rete pubblica, qualcuno che fiutasse la linea ovunque tra il client e il server sarebbe in grado
per vedere non solo i dati trasferiti, ma anche il processo di autenticazione (login e password
informazione).

477

Pagina 518

Parte IV: diventare un amministratore di server Linux

Quindi FTP non è adatto per condividere file in privato (usa comandi SSH come sftp, scp o
rsync se hai bisogno di trasferimenti di file privati ​e crittografati). Tuttavia, se condividi file public
documenti, repository software open source o altri dati disponibili apertamente, FTP è un bene
scelta. Indipendentemente dal sistema operativo utilizzato dalle persone, sicuramente hanno un trasferimento di file FTP
disponibile per ottenere i file che offri dal tuo server FTP.

Quando gli utenti si autenticano su un server FTP in Linux, i loro nomi utente e password lo sono
autenticato con gli account utente e le password Linux standard. C'è anche uno speciale,
account non autenticato utilizzato dal server FTP denominato anonimo . L'account anonimo
è accessibile da chiunque perché non richiede una password valida. In effetti, il termine
Il server FTP anonimo viene spesso utilizzato per descrivere un server FTP pubblico che non richiede (o
consentire anche) l'autenticazione di un account utente legittimo.

Sebbene la possibilità di accedere al server vsftpd utilizzando un normale account utente Linux sia abilitata per impostazione predefinita in Fedora
e Red Hat Enterprise Linux, se SELinux è impostato sulla modalità Enforcing, impedisce gli accessi ei trasferimenti di file da
riuscendo. Se vuoi mantenere SELinux in modalità Enforcing, ma consentire comunque gli accessi a Linux, puoi cambiare un booleano
(vedere la sezione "Configurazione di SELinux per il proprio server FTP") per consentire il successo degli accessi agli utenti regolari.

Dopo la fase di autenticazione (sulla porta di controllo, porta TCP 21), una seconda connessione è
effettuato tra il client e il server. FTP supporta i tipi di connessione attiva e passiva .
Con una connessione FTP attiva, il server invia i dati dalla sua porta TCP 20 ad alcuni casuali
la porta scelta dal server sopra la porta 1023 sul client. Con FTP passivo, il client richiede
la connessione passiva e richiede una porta casuale dal server.

Molti browser supportano la modalità FTP passiva in modo che, se il client ha un firewall, non si blocchi
la porta dati che il server FTP potrebbe utilizzare in modalità attiva. Il supporto della modalità passiva richiede
alcuni lavori extra sul firewall del server per consentire connessioni casuali alle porte superiori a 1023
il server. La sezione "Apertura del firewall per FTP" più avanti in questo capitolo descrive cosa
devi fare al tuo firewall Linux per far funzionare sia le connessioni FTP passive che attive.

Dopo che la connessione è stata stabilita tra il client e il server, il client corrente
viene stabilita la directory. Per l'utente anonimo, la directory / var / ftp è la home di quell'utente
directory. L'utente anonimo non può uscire dalla struttura della directory / var / ftp. Se un
utente normale, diciamo joe, accede al server FTP, / home / joe è la directory corrente di joe,
ma joe può cambiare in qualsiasi parte del filesystem per cui joe ha il permesso.

I client FTP orientati ai comandi (come i comandi lftp e ftp) entrano in un file interattivo
modalità dopo la connessione al server. Dal prompt che vedi, puoi eseguirne molti
comandi simili a quelli che useresti dalla shell. Potresti usare pwd per vedere
la directory corrente, ls per elencare il contenuto della directory e cd per cambiare directory. quando
vedi un file che desideri, usi i comandi get e put per scaricare i file da o
caricarli sul server, rispettivamente.

478

Pagina 519

Capitolo 18: Configurazione di un server FTP

Con gli strumenti grafici per l'accesso ai server FTP (come un browser web), digiti l'URL di
il sito che desideri visitare (come ftp://docs.example.com ) nella casella della posizione del file
browser. Se non aggiungi nome utente o password, viene stabilita una connessione anonima e il file
vengono visualizzati i contenuti della home directory del sito. Fare clic sui collegamenti alle directory in cui passare
quelle directory. Fare clic sui collegamenti ai file per visualizzare o scaricare tali file nel sistema locale.

Armato di una certa comprensione di come funziona FTP, ora sei pronto per installare un FTP
server (pacchetto vsftpd) sul tuo sistema Linux.

Installazione del server FTP vsftpd


L'impostazione del server FTP molto sicuro richiede un solo pacchetto in Fedora, RHEL e altri
Distribuzioni Linux: vsftpd. Supponendo che tu abbia una connessione al tuo repository software,
per installare vsftpd, digita quanto segue come root per Fedora o RHEL:

# yum installa vsftpd

Se stai usando Ubuntu (o un'altra distribuzione Linux basata su pacchetti Debian), digita il
seguente per installare vsftpd:

$ sudo apt-get install vsftpd

Dopo aver installato il pacchetto vsftpd, ecco alcuni comandi che puoi eseguire per familiarizzare
te stesso con il contenuto di quel pacchetto. Da Fedora o RHEL, esegui questo comando per ottenere 18
alcune informazioni generali sul pacchetto:

# rpm -qi vsftpd


...
Packager: Fedora Project
Fornitore: Fedora Project
URL : https://security.appspot.com/vsftpd.html
Riepilogo: Daemon Ftp molto sicuro
Descrizione: vsftpd è un demone FTP molto sicuro. È stato scritto
completamente da zero.

Se vuoi avere maggiori informazioni su vsftpd, segui l'URL elencato al relativo


sito web (https://security.appspot.com/vsftpd.html). Puoi ottenere ulteriori
documentazione e informazioni sulle ultime revisioni di vsftpd.

È possibile visualizzare l'intero contenuto del pacchetto vsftpd (rpm -ql vsftpd). Oppure puoi visualizzare
solo la documentazione (-qd) o i file di configurazione (-qc). Per vedere i file di documentazione in
il pacchetto vsftpd, utilizza quanto segue:

# rpm -qd vsftpd


/usr/share/doc/vsftpd-3.0.2-6/EXAMPLE/INTERNET_SITE/README
...
/usr/share/doc/vsftpd-3.0.2-6/EXAMPLE/PER_IP_CONFIG/README
...

479

Pagina 520

Parte IV: diventare un amministratore di server Linux

/usr/share/doc/vsftpd-3.0.2-6/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-3.0.2-6/EXAMPLE/VIRTUAL_USERS/README
...
/usr/share/doc/vsftpd-3.0.2-6/FAQ
...
/usr/share/doc/vsftpd-3.0.2-6/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz

Nella struttura della directory / usr / share / doc / vsftpd - * / EXAMPLE, ci sono esempi
file di configurazione inclusi per aiutarti a configurare vsftpd nei modi appropriati per
un sito Internet, un sito con più indirizzi IP e host virtuali. Il principale / usr / share / doc /
La directory vsftpd * contiene una FAQ (domande frequenti), suggerimenti per l'installazione e
informazioni sulla versione.

Le pagine man potrebbero contenere le informazioni più utili quando si decide di configurare
il server vsftpd. Digita man vsftpd.conf per leggere il file di configurazione e man
vsftpd per leggere informazioni sul processo daemon.

Per elencare i file di configurazione, digitare quanto segue:

# rpm -qc vsftpd


/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/ etc / vsftpd / ftpusers
/ etc / vsftpd / user_list
/etc/vsftpd/vsftpd.conf

Il file di configurazione principale è /etc/vsftpd/vsftpd.conf. Gli utenti ftp e l'utente_


list file nella stessa directory memorizzano le informazioni sugli account utente che sono limitati
dall'accesso al server. Il file /etc/pam.d/vsftpd imposta la modalità di autenticazione
al server FTP. Il file /etc/logrotate.d/vsftpd configura come sono i file di registro
ruotato nel tempo.

Ora hai vsftpd installato e hai dato una rapida occhiata al suo contenuto. Il prossimo passo
è avviare e testare il servizio vsftpd.

Avvio del servizio vsftpd


Non è richiesta alcuna configurazione per avviare il servizio vsftpd se si desidera utilizzare solo l'estensione
impostazioni predefinite. Se avvii vsftpd come viene fornito con Fedora, questo è ciò che ottieni:

■ Il servizio vsftpd avvia il daemon vsftpd, che viene eseguito in background.


■ La porta standard su cui è in ascolto il daemon vsftpd è la porta TCP 21. Per impostazione predefinita,
i dati vengono trasferiti all'utente, dopo aver stabilito la connessione, sulla porta TCP 20. TCP
la porta 21 deve essere aperta nel firewall per consentire a nuove connessioni di accedere al servizio.

480

Pagina 521
Capitolo 18: Configurazione di un server FTP

(Vedere la sezione "Protezione del server FTP" per i dettagli sull'apertura delle porte, l'abilitazione
monitoraggio della connessione necessario per FTP passivo e impostazione di altre regole del firewall
relativo a FTP.)
■ Il daemon vsftpd legge vsftpd.conf per determinare quali sono le funzionalità di
il servizio lo consente.
■ Account utente Linux (esclusi gli utenti amministrativi) e l'utente anonimo
account (nessuna password richiesta) può accedere al server FTP. (Se SELinux è in
Per applicare la modalità, è necessario impostare un valore booleano per consentire agli utenti regolari di accedere a
Server FTP. Vedere la sezione "Protezione del server FTP" per i dettagli.)
■ L'utente anonimo ha accesso solo alla directory / var / ftp e alla sua sottodirectory
tories. Un utente normale inizia con la sua directory home come directory corrente
tory ma può accedere a qualsiasi directory a cui l'utente sarebbe in grado tramite un normale login o
Sessione SSH. Elenchi di utenti in / etc / vsftpd / user_list e / etc / vsftpd /
I file ftpusers definiscono alcuni utenti amministrativi e speciali che non hanno
accesso al server FTP (root, bin, daemon e altri).
■ L'utente anonimo può scaricare file dal server ma non caricarli,
per impostazione predefinita. Un utente normale può caricare o scaricare file, basato su Linux normale
permessi.
■I messaggi di registro che descrivono i caricamenti o i download dei file sono scritti nella directory / var / log /
xferlogs file. Questi messaggi di registro vengono memorizzati in un formato xferlog standard.

Se sei pronto per avviare il tuo server utilizzando le impostazioni predefinite appena descritte, procedi come segue
18
gli esempi mostrano come farlo. Se desideri prima modificare alcune impostazioni, vai su
sezione "Configurazione del server FTP", finalizza le tue impostazioni, quindi torna qui per
istruzioni su come abilitare e avviare il server.

Prima di avviare il servizio vsftpd, puoi verificare se è già in esecuzione. Nel


Fedora o Red Hat Enterprise Linux 7, procedi come segue:

# systemctl status vsftpd.service


vsftpd.service - Demone ftp Vsftpd
Loaded: caricato (/lib/systemd/system/vsftpd.service; disabilitato)
Attivo: inattivo (morto)

In Red Hat Enterprise Linux 6, sono necessari due comandi per visualizzare le stesse informazioni:

# stato del servizio vsftpd


vsftpd viene interrotto
# chkconfig --list vsftpd
vsftpd 0: spento 1: spento 2: spento 3: spento 4: spento
5: spento 6: spento

In entrambi gli esempi Fedora e RHEL sopra, il servizio, chkconfig e systemctl


i comandi mostrano lo stato come arrestato. Puoi anche vedere che è disabilitato in Fedora e

481

Pagina 522

Parte IV: diventare un amministratore di server Linux

RHEL 7 e disattivato a ogni runlevel per RHEL 6. Disattivato (disattivato) significa che il servizio non lo farà
si accendono automaticamente quando si avvia il sistema.

Per avviare e abilitare vsftpd in Fedora o RHEL 7 (quindi controllare lo stato), digitare quanto segue:

# systemctl avvia vsftpd.service


# systemctl abilita vsftpd.service
ln -s '/lib/systemd/system/vsftpd.service'
"/etc/systemd/system/multi-user.target.wants/vsftpd.service"
# systemctl status vsftpd.service
vsftpd.service - Demone ftp Vsftpd
Loaded: caricato (/lib/systemd/system/vsftpd.service; abilitato)
Attivo: attivo (in esecuzione) da mercoledì, 2014-08-27 00:09:54 EDT;
22s fa
PID principale: 4229 (vsftpd)
CGroup: nome = systemd: /system/vsftpd.service
└4229 / usr / sbin / vsftpd /etc/vsftpd/vsftpd.conf
In Red Hat Enterprise Linux 6, avvia e attiva (abilita) vsftpd (quindi controlla lo stato),
come segue:

# avvio del servizio vsftpd


Avvio di vsftpd per vsftpd: [ OK ]
# chkconfig vsftpd su; chkconfig --list vsftpd
vsftpd 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso
6: spento

Ora, su entrambi i sistemi, puoi verificare che il servizio sia in esecuzione utilizzando netstat
comando:

# netstat -tupln | grep vsftpd


tcp 0 0 0.0.0.0:21 0.0.0.0:* ASCOLTA 4229 /
vsftpd

Dall'output di netstat, puoi vedere che il processo vsftpd (ID processo 4229) è
in ascolto (LISTEN) su tutti gli indirizzi IP per le connessioni in entrata sulla porta 21 (0.0.0.0:21) per
il protocollo TCP (tcp). Un modo rapido per verificare che vsftpd funzioni è inserire un file in
/ var / ftp e prova ad aprirlo dal tuo browser web sull'host locale:

# echo "Ciao dal tuo nuovo server FTP"> /var/ftp/hello.txt

Da un browser web sul sistema locale, digita quanto segue nella casella della posizione di Firefox
o altro browser:

ftp: //localhost/hello.txt

482

Pagina 523

Capitolo 18: Configurazione di un server FTP

Se nel browser Web viene visualizzato il testo Hello From Your New FTP Server, il file
Il server vsftpd funziona ed è accessibile dal tuo sistema locale. Quindi, riprova, sostituendo
localhost con l'indirizzo IP del tuo host o il nome host completo, da un browser web in poi
un altro sistema. Se funziona, il server vsftpd è accessibile pubblicamente. In caso contrario, quale
è molto probabile che non lo sia, vedere la sezione successiva, "Protezione del server FTP". Quella sezione
spiega come aprire i firewall e modificare altre funzionalità di sicurezza per consentire l'accesso e
altrimenti proteggi il tuo server FTP.

Protezione del server FTP


Anche se è facile avviare un server FTP vsftpd, ciò non significa che lo sia immediatamente
completamente accessibile. Se hai installato un firewall sul tuo sistema Linux, probabilmente si sta bloccando
accesso a tutti i servizi sul tuo sistema eccetto quelli che hai esplicitamente consentito.

Se decidi che la configurazione predefinita di vsftpd funziona per te come descritto nel file
sezione precedente, è possibile impostare il lavoro consentendo l'accesso e la fornitura appropriati
sicurezza per il tuo servizio vsftpd. Quindi puoi proteggere il tuo server vsftpd, nelle prossime sezioni
descrivere come configurare il firewall (iptables), i wrapper TCP (hosts.allow e
hosts.deny) e SELinux (booleani e contesti di file).

Apertura del firewall per FTP 18


Se hai un firewall implementato sul tuo sistema, devi aggiungere le regole del firewall
consenti le richieste in arrivo al tuo sito FTP e consenti ai pacchetti di tornare al tuo sistema
connessioni stabilite. I firewall vengono implementati utilizzando le regole di iptables e gestiti
con il servizio iptables o firewalld (vedere Capitolo 25, "Protezione di Linux su un file
Rete ", per i dettagli sui servizi firewall).

In Fedora e Red Hat Enterprise Linux, le regole del firewall sono state tradizionalmente archiviate in
il file / etc / sysconfig / iptables e il servizio sottostante era iptables (RHEL)
o iptables.service (Fedora). I moduli vengono caricati nel firewall dal file
/ etc / sysconfig / iptables-config. In RHEL 7 e Fedora 21, il nuovo firewalld
il servizio gestisce queste regole e le regole sono memorizzate in / etc / firewalld / zone
directory.

È meglio lavorare sul firewall direttamente da una console di sistema, se possibile, invece che tramite un accesso remoto (come
ssh) perché un piccolo errore può bloccarti immediatamente fuori dal tuo server. Dopodiché, devi andare alla console
per tornare nel server e risolvere il problema.

483

Pagina 524

Parte IV: diventare un amministratore di server Linux

È necessario aggiungere alcune cose al firewall per consentire l'accesso al server FTP senza
aprire l'accesso ad altri servizi. Innanzitutto, è necessario consentire al sistema di accettare le richieste
sulla porta TCP 21; quindi è necessario assicurarsi che il modulo di monitoraggio della connessione sia caricato.

In RHEL 7 e Fedora 20, puoi utilizzare la nuova finestra di configurazione del firewall per abilitare il tuo
firewall e accesso aperto al servizio FTP. Dalla schermata delle attività desktop di GNOME 3,
seleziona l'icona Firewall. Immettere la password di root quando richiesto. La configurazione del firewall
dovrebbe apparire la finestra, come mostrato nella Figura 18.1.

FIGURA 18.1

Apri l'accesso al tuo servizio FTP dalla finestra Configurazione firewall.

Quindi, per aprire in modo permanente l'accesso al servizio FTP, fare clic sulla casella Configurazione
e seleziona Permanente. Quindi aggiungi una casella di controllo accanto a ftp nella scheda Servizi. Questo
apre automaticamente la porta TCP 21 (FTP) sul firewall e carica i moduli del kernel necessari per
consentire l'accesso al servizio FTP passivo.

Per RHEL 6 e sistemi precedenti, è possibile aggiungere regole direttamente a / etc / sysconfig /
file iptables. Se stai usando un firewall predefinito, le regole all'inizio aprono l'accesso a
richieste per qualsiasi servizio proveniente dall'host locale e consentire ai pacchetti di entrare che sono

484

Pagina 525
Capitolo 18: Configurazione di un server FTP

associati o correlati a connessioni stabilite. In mezzo ci sono regole che si aprono


porte per le richieste di servizio che hai già consentito, come il servizio secure shell (sshd
sulla porta TCP 22). Alla fine delle regole, una regola finale di solito DROP o RIFIUTA qualsiasi richiesta
ciò non è stato esplicitamente consentito.

Per consentire l'accesso pubblico a qualcuno che richiede il tuo server FTP, devi consentire a new
richieste alla porta TCP 21. In genere si desidera aggiungere la regola da qualche parte prima del DROP finale
o REJECT regola. Il seguente output mostra il contenuto parziale di / etc / sysconfig /
iptables con la regola che consente l'accesso al tuo server FTP in grassetto:

*filtro
: INPUT ACCETTA [0: 0]
: INOLTRO ACCETTA [0: 0]
: OUTPUT ACCETTA [0: 0]
-A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
-A INPUT -i lo -j ACCETTA
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
...
-A INPUT -j REJECT --reject-with icmp-host-vietato
COMMETTERE

Questo esempio mostra che, per la tabella dei filtri, il firewall accetta i pacchetti da quelli stabiliti
connessioni, connessioni da host locali e qualsiasi nuova richiesta sulla porta TCP 22 (SSH
servizio). La riga che abbiamo appena aggiunto (--dport 21) consente a qualsiasi pacchetto su nuove connessioni di 18
La porta TCP 21 deve essere accettata.

È importante avere la riga ESTABLISHED, RELATED nelle regole del firewall di iptables. Senza quella linea, gli utenti
sarebbe in grado di connettersi ai servizi SSH (porta 22) e FTP (porta 21), ma non sarebbe in grado di comunicare
dopo di che. Quindi, un utente potrebbe essere autenticato, ma non essere in grado di trasferire i dati.

La prossima cosa che devi fare su RHEL 6 e sistemi precedenti è configurare la connessione FTP
modulo di monitoraggio da caricare ogni volta che si avvia il firewall. Modifica questa riga all'inizio
del file / etc / sysconfig / iptables-config per apparire come segue:

IPTABLES_MODULES = "nf_conntrack_ftp"

A questo punto, puoi riavviare il firewall (tenendo presente che un errore potrebbe bloccarti
se sei loggato in remoto). Usa uno dei seguenti due comandi per riavviare il tuo
firewall, a seconda che il tuo sistema utilizzi il vecchio servizio iptables o il
servizio firewalld più recente:

# riavviare iptables del servizio


o

# systemctl riavvia firewalld.service

485

Pagina 526

Parte IV: diventare un amministratore di server Linux

Prova di nuovo ad accedere al tuo server FTP da un sistema remoto (utilizzando un browser web o alcuni
altro client FTP).

Consentire l'accesso FTP nei wrapper TCP


La funzionalità wrapper TCP in Linux consente di aggiungere informazioni a /etc/hosts.allow
e /etc/hosts.deny per indicare chi può o non può accedere ai servizi selezionati. Non tutto
services implementano wrapper TCP, ma vsftpd lo fa.

Per impostazione predefinita, i file hosts.allow e hosts.deny sono vuoti, il che non pone restrizioni
su chi può accedere ai servizi protetti da wrapper TCP. Tuttavia, se stai bloccando l'accesso
nel file hosts.deny a tutti i servizi che non sono stati esplicitamente consentiti (aggiungendo un file
ALL: ALL a hosts.deny), aggiungendo una riga come la seguente all'inizio del file
Il file /etc/hosts.allow consente l'accesso al server vsftpd:

vsftpd: TUTTI: CONSENTI

Per ulteriori informazioni su come utilizzare i wrapper TCP, fare riferimento al Capitolo 25, "Protezione di Linux su un file
Network "o la pagina man hosts.allow (digitare man hosts.allow ).

Configurazione di SELinux per il tuo server FTP


Se SELinux è impostato su Permissive o Disabled, non blocca l'accesso al servizio vsftpd
in ogni modo. Tuttavia, se SELinux è in modalità Enforcing, potrebbero causare alcuni problemi di SELinux
il tuo server vsftpd non si comporti come vorresti. Usa i seguenti comandi per controllare
lo stato di SELinux sul tuo sistema:

# getenforce
Far rispettare
# grep ^ SELINUX = / etc / sysconfig / selinux
SELINUX = imporre

Il comando getenforce mostra come SELinux è attualmente impostato (qui, è in Enforcing


modalità). La variabile SELINUX = in / etc / sysconfig / selinux mostra com'è SELinux
impostato quando il sistema si avvia. Se è in modalità Enforcing, come qui, controlla l'ftpd_
pagina man di selinux per informazioni sulle impostazioni di SELinux che possono influire sull'operazione
del tuo servizio vsftpd. Di seguito sono riportati alcuni esempi di contesti di file per i quali è necessario impostare
SELinux per consentire l'accesso a file e directory da vsftpd:

■ Per condividere il contenuto in modo che possa essere scaricato su client FTP, quel contenuto deve essere
contrassegnato con un contesto di file public_content_t. File creati in / var / ftp
directory o le sue sottodirectory ereditano automaticamente il contesto del file public_content_t.
(Assicurati di creare nuovo contenuto o di copiare il contenuto esistente nelle directory / var / ftp.
Lo spostamento dei file potrebbe non modificare correttamente il contesto del file.)
■ Per consentire il caricamento dei file da parte di utenti anonimi, il contesto del file nella directory
in cui carichi deve essere impostato su public_content_rw_t. (Altri permessi, SELinux
Le impostazioni booleane e vsftpd.conf devono essere presenti affinché funzioni anche.)

486

Pagina 527

Capitolo 18: Configurazione di un server FTP

Se nella struttura della directory / var / ftp sono presenti file con contesti di file errati
(cosa che può accadere se sposti file lì da altre directory invece di copiarli),
è possibile modificare o ripristinare il contesto del file su quei file in modo che possano essere condivisi. Per esempio,
per modificare in modo ricorsivo il contesto del file della directory / var / ftp / pub / stuff in modo che il file
il contenuto può essere letto dal server FTP tramite SELinux, digitare quanto segue:

# semanage fcontext -a -t public_content_t "/var/ftp/pub/stuff(/.*)?"


# restorecon -F -R -v / var / ftp / pub / stuff

Se vuoi consentire agli utenti di scrivere anche su una directory e di leggere da essa, devi farlo
assegna il contesto del file public_content_rw_t alla directory in cui desideri
consenti caricamenti. Questo esempio dice a SELinux di consentire il caricamento di file su / var / ftp /
directory pub / uploads:

# semanage fcontext -a -t public_content_rw_t "/var/ftp/pub/uploads(/.*)?"


# restorecon -F -R -v / var / ftp / pub / uploads

Le funzionalità del server FTP considerate non sicure da SELinux hanno booleani che te lo consentono
consentire o disabilitare tali funzionalità. Ecco alcuni esempi:

■ Per consentire agli utenti regolari di essere in grado di autenticare, leggere e scrivere file e
directory tramite il server FTP, il booleano ftp_home_dir deve essere attivo. Questo è uno
dei più comuni FTP booleani da attivare (è disattivato per impostazione predefinita). Accenderlo
in modo permanente, digita questo:
# setsebool -P ftp_home_dir attivo 18
■ Affinché SELinux consenta ad utenti anonimi di leggere e scrivere file e directory, tu
è necessario attivare il booleano allow_ftpd_anon_write:
# setsebool -P allow_ftpd_anon_write on

■ Essere in grado di montare e condividere file system condivisi NFS o CIFS (Windows) remoti
dal tuo server vsftpd, devi attivare i seguenti due booleani,
rispettivamente:
# setsebool -P allow_ftpd_use_nfs attivo
# setsebool -P allow_ftpd_use_cifs attivo

Se ti accorgi di non poter accedere a file o directory dal tuo server FTP che tu
credi dovrebbe essere accessibile, prova a disattivare temporaneamente SELinux:

# setenforce 0

Se puoi accedere ai file o alle directory con SELinux ora in modalità Permissive, metti il
il sistema torna in modalità Enforcing (setenforce 1). Ora sai che devi tornare indietro
attraverso le impostazioni di SELinux e scopri cosa impedisce l'accesso. (Vedere il capitolo 24,
"Enhancing Linux Security with SELinux," per ulteriori informazioni su SELinux.)
487

Pagina 528

Parte IV: diventare un amministratore di server Linux

Correlare i permessi dei file Linux a vsftpd


Il server vsftpd si basa sui permessi dei file Linux standard per consentire o negare l'accesso ai file
e directory. Come ci si aspetterebbe, per un utente anonimo per visualizzare o scaricare un file, all'indirizzo
l'autorizzazione minima di lettura deve essere aperta ad altri (------ r--). Almeno per accedere a una directory
il permesso di esecuzione deve essere attivo per altri (-------- x).

Per gli account utente normali, la regola generale è che se un utente può accedere a un file dalla shell,
quell'utente può accedere allo stesso file da un server FTP. Quindi, in genere, gli utenti regolari dovrebbero
almeno essere in grado di ottenere (scaricare) e caricare (caricare) file da e verso la propria casa
directory, rispettivamente. Dopo che le autorizzazioni e altre disposizioni di sicurezza sono state applicate per
il tuo server FTP, potresti prendere in considerazione altre impostazioni di configurazione per il tuo server FTP.

Configurazione del server FTP


La maggior parte della configurazione per il servizio vsftpd viene eseguita in / etc / vsftpd / vsftpd.
conf file. Esempi di vsftpd.conf per diversi tipi di siti sono inclusi nel file
directory / usr / share / doc / vsftpd- *. A seconda di come desideri utilizzare il tuo sito FTP,
le sezioni seguenti illustrano alcuni modi per configurare il server FTP.

Ricordarsi di riavviare il servizio vsftpd dopo aver apportato modifiche alla configurazione.

Configurazione dell'accesso utente


Il server vsftpd viene fornito con l'utente anonimo e tutti gli utenti Linux locali (quelli
elencato nel file / etc / passwd) configurato per accedere al server. Questo è basato su
seguenti impostazioni di vsftpd.conf:

anonymous_enable = SÌ
local_enable = YES

Come notato in precedenza, nonostante l'impostazione local_enable, SELinux impedisce effettivamente vsftpd
utenti dall'accesso e dal trasferimento dei dati. O cambiando SELinux fuori dalla modalità Enforcing
o l'impostazione del valore booleano corretto consente agli account locali di accedere e trasferire i dati.

Alcune società di server Web consentono agli utenti di utilizzare FTP per caricare il contenuto utilizzato nel file
server web degli utenti. In alcuni casi, gli utenti hanno account solo FTP, il che significa che
non possono accedere a una shell, ma possono accedere tramite FTP per gestire il loro contenuto.
Creare un account utente che non ha una shell predefinita (in realtà, / sbin / nologin) è il modo
puoi impedire a un utente di accedere a una shell, ma consentire comunque l'accesso FTP. Per esempio,
la voce / etc / passwd per la fattura dell'account utente solo FTP potrebbe avere un aspetto simile
il seguente:

bill: x: 1000: 1000: Bill Jones: / home / bill: / sbin / nologin

488

Pagina 529

Capitolo 18: Configurazione di un server FTP

Con l'account utente impostato con / sbin / nologin come shell predefinita, qualsiasi tentativo di accesso
in da una console o tramite ssh poiché la fattura dell'utente viene negata. Tuttavia, fintanto che il conto ha un'estensione
la password e l'accesso all'account locale al server FTP sono abilitati, bill dovrebbe essere in grado di accedere
nel server FTP tramite un client FTP.

Non tutti gli utenti con un account sul sistema Linux hanno accesso al server FTP. Il
setting userlist_enable = YES in vsftpd.conf dice di negare l'accesso al server FTP a
tutti gli account elencati nel file / etc / vsftpd / user_list. Quell'elenco include l'amministrazione
utenti root, bin, daemon, adm, lp e altri. Puoi aggiungere altri utenti a quell'elenco a
a cui desideri negare l'accesso.

Se si modifica userlist_enable su NO, il file user_list diventa un elenco di solo quelli


utenti che hanno accesso al server. In altre parole, impostando userlist_enable = NO,
rimuovendo tutti i nomi utente dal file user_list e aggiungendo i nomi utente chris, joe,
e mary a quel file fanno sì che il server consenta solo a quei tre utenti di accedere al server.

Non importa come sia impostato il valore di userlist_enable, il file / etc / vsftpd / ftpusers
include sempre gli utenti a cui viene negato l'accesso al server. Come il file userlist_enable,
il file ftpusers include un elenco di utenti amministrativi. Puoi aggiungere più utenti a quello
file se desideri che venga loro negato l'accesso FTP.

Un modo per limitare l'accesso agli utenti con account utente regolari sul sistema è utilizzare
impostazioni chroot. Ecco alcuni esempi di alcune impostazioni di chroot:
18
chroot_local_user = SÌ
chroot_list_enable = SÌ
chroot_list_file = / etc / vsftpd / chroot_list

Con le impostazioni appena mostrate non commentate, puoi creare un elenco di utenti locali e aggiungere
nel file / etc / vsftpd / chroot_list. Dopo che uno di quegli utenti ha effettuato l'accesso, quello
all'utente verrebbe impedito di accedere a punti del sistema che si trovano all'esterno di tale utente
struttura della directory home.

Se i caricamenti sul tuo server FTP sono consentiti, le directory in cui un utente tenta di caricare devono essere
scrivibile da quell'utente. Tuttavia, i caricamenti possono essere archiviati con un nome utente diverso da quello di
l'utente che ha caricato il file. Questa è una delle funzionalità discusse in seguito, nella sezione "Consentire
sezione caricamento ".

Consentire il caricamento
Per consentire qualsiasi forma di scrittura sul server vsftpd, è necessario che write_enable = YES
impostato nel file vsftpd.conf (che è, per impostazione predefinita). Per questo motivo, se conti locali
sono abilitati, gli utenti possono accedere e iniziare immediatamente a caricare i file nella propria casa
directory. Tuttavia, agli utenti anonimi viene negata la possibilità di caricare file per impostazione predefinita.

489

Pagina 530

Parte IV: diventare un amministratore di server Linux

Per consentire caricamenti anonimi con vsftpd, devi avere la prima opzione di seguito
esempio di codice e potresti volere anche la seconda riga di codice (entrambi possono essere abilitati da
rimuovendoli dal file vsftpd.conf). Il primo consente agli utenti anonimi di
caricare files; il secondo permette loro di creare directory:

anon_upload_enable = SÌ
anon_mkdir_write_enable = SÌ

Il passaggio successivo consiste nel creare una directory in cui gli utenti anonimi possono scrivere. Qualsiasi directory
nella directory / var / ftp che dispone dei permessi di scrittura per l'utente ftp, il gruppo ftp,
o altro può essere scritto da un utente anonimo. Una cosa comune è creare un file upload
directory con autorizzazione aperta per la scrittura. I seguenti sono esempi di comandi da eseguire
sul server:

# mkdir / var / ftp / uploads


# chown ftp: ftp / var / ftp / uploads
# chmod 775 / var / ftp / uploads

Finché il firewall è aperto e SELinux Booleans sono impostati correttamente, un utente anonimo
può cd nella directory dei caricamenti e inserire un file dal sistema locale dell'utente nei caricamenti
directory. Sul server, il file sarebbe di proprietà dell'utente ftp e del gruppo ftp. Il
i permessi impostati sulla directory (775) ti permetterebbero di vedere i file che sono stati caricati,
ma non modificarli o sovrascriverli.

Uno dei motivi per consentire l'FTP anonimo e quindi abilitarlo per caricamenti anonimi è quello di
Consenti alle persone che non conosci di rilasciare file nella cartella dei caricamenti. Perché chiunque può
trova che il server possa scrivere in questa directory, è necessario che sia in atto una qualche forma di sicurezza. voi
desidera impedire a un utente anonimo di vedere i file caricati da altri utenti, prendere file,
o eliminare i file caricati da altri utenti FTP anonimi. Una forma di sicurezza è il chown
caratteristica di FTP.

Impostando i seguenti due valori, puoi consentire caricamenti anonimi. Il risultato di questi
è che quando un utente anonimo carica un file, quel file viene assegnato immediatamente
proprietà di un altro utente. Quello che segue è un esempio di alcune impostazioni di chown
potrebbe mettere nel tuo file vsftpd.conf da usare con la tua directory di caricamento anonimo:

chown_uploads = SÌ
chown_username = joe

Se un utente anonimo dovesse caricare un file dopo che vsftpd è stato riavviato con queste impostazioni,
il file caricato sarebbe di proprietà dell'utente joe e del gruppo ftp. Le autorizzazioni sarebbero
lettura / scrittura per il proprietario e niente per nessun altro (rw -------).

Finora, hai visto le opzioni di configurazione per le singole funzionalità sul tuo server vsftpd.
Alcuni set di variabili vsftp.conf possono lavorare insieme in modi che sono appropriati per
alcuni tipi di siti FTP. La sezione successiva contiene uno di questi esempi, rappresentato da
un file di configurazione vsftpd.conf di esempio fornito con il pacchetto vsftpd. Quel file

490

Pagina 531

Capitolo 18: Configurazione di un server FTP

può essere copiato da una directory di file di esempio nel file /etc/vsftpd/vsftpd.conf, in
utilizzare per un server FTP disponibile su Internet.

Configurazione di vsftpd per Internet


Per condividere in sicurezza i file dal tuo server FTP a Internet, puoi bloccare il tuo server
limitandolo a consentire solo download e solo da utenti anonimi. Per iniziare con a
configurazione progettata per consentire a vsftpd di condividere file in modo sicuro su Internet, eseguire il backup del file
attuale file /etc/vsftpd/vsftpd.conf e copia questo file per sovrascrivere il tuo vsftpd.conf:

/usr/share/doc/vsftpd-*/EXAMPLE/INTERNET_SITE/vsftpd.conf

I seguenti paragrafi descrivono il contenuto di quel vsftpd.conf. Impostazioni nel primo


sezione impostare i diritti di accesso per il server:

# Diritti di accesso
anonymous_enable = SÌ
local_enable = NO
write_enable = NO
anon_upload_enable = NO
anon_mkdir_write_enable = NO
anon_other_write_enable = NO

L'attivazione di anonymous_enable (YES) e la disattivazione di local_enable (NO) lo garantisce


nessuno può accedere al server FTP utilizzando un normale account utente Linux. Tutti devono venire 18
tramite l'account anonimo. Nessuno può caricare file (write_enable = NO). Poi,
l'utente anonimo non può caricare file (anon_upload_enable = NO), creare directory
(anon_mkdir_write_enable = NO), o altrimenti scrivere sul server (anon_other_
write_enable = NO). Ecco le impostazioni di sicurezza:

# Sicurezza
anon_world_readable_only = SÌ
connect_from_port_20 = SÌ
hide_ids = YES
pasv_min_port = 50000
pasv_max_port = 60000

Poiché il daemon vsftpd può leggere i file assegnati all'utente e al gruppo ftp, l'impostazione
anon_world_readable_only = YES assicura che gli utenti anonimi possano vedere i file dove
il bit di autorizzazione di lettura è attivato per altri (------ r--), ma non per scrivere file. Il
connect_from_port_20 = L'impostazione YES fornisce al demone vsftpd un po 'più di autorizzazione
per inviare dati nel modo in cui un client potrebbe richiedere consentendo comunicazioni di dati in stile PORT.

L'uso di hide_ids = YES nasconde i permessi reali impostati sui file così, all'utente che accede al file
Sito FTP, tutto sembra essere di proprietà dell'utente ftp. Le due impostazioni pasv limitano
la gamma di porte che possono essere utilizzate con FTP passivo (dove il server sceglie un file
numero di porta su cui inviare i dati) tra 50000 e 60000.

491
Pagina 532

Parte IV: diventare un amministratore di server Linux

La sezione successiva contiene le funzionalità del server vsftpd:

# Caratteristiche
xferlog_enable = SÌ
ls_recurse_enable = NO
ascii_download_enable = NO
async_abor_enable = SÌ

Con xferlog_enable = YES, tutti i trasferimenti di file da e verso il server vengono registrati nel file
/ var / log / xferlog file. L'impostazione di ls_recurse_enable = NO impedisce agli utenti di
elencando ricorsivamente il contenuto di una directory FTP (in altre parole, impedisce il tipo di file
list che potresti ottenere con il comando ls -R) perché su un sito di grandi dimensioni, potrebbe svuotarsi
risorse. La disabilitazione dei download ASCII impone che tutti i download siano in modalità binaria
(impedisce la traduzione dei file in ASCII, che non è appropriato per i file binari).
L'impostazione async_abor_enable = YES garantisce che alcuni client FTP che potrebbero bloccarsi
quando si interrompe un trasferimento non si bloccherà.

Le seguenti impostazioni hanno un impatto sulle prestazioni:

# Prestazione
one_process_model = SÌ
idle_session_timeout = 120
data_connection_timeout = 300
accept_timeout = 60
connect_timeout = 60
anon_max_rate = 50000

Con one_process_model = YES impostato, le prestazioni possono migliorare perché vsftpd viene avviato
un processo per connessione. Riduzione di idle_session_timeout dal valore predefinito
Da 300 secondi a 120 secondi i client FTP restano inattivi per più di 2 minuti
disconnesso. Quindi viene speso meno tempo nella gestione delle sessioni FTP che non sono più in uso. Se
un trasferimento di dati si blocca per più di data_connection_timeout secondi (300 secondi
qui), la connessione al client viene interrotta.

L'impostazione di accept_timeout di 60 secondi consente 1 minuto per una connessione PASV


accettato dal client remoto. Connect_timeout imposta quanto tempo deve durare un client remoto
rispondere a una richiesta per stabilire una connessione dati in stile PORT. Limitazione della velocità di trasferimento
a 50000 (byte al secondo) con anon_max_rate può migliorare le prestazioni complessive di
server limitando la quantità di larghezza di banda che ogni client può consumare.

Utilizzo di client FTP per connettersi al server


Molti programmi client vengono forniti con Linux che puoi utilizzare per connetterti al tuo server FTP.
Se vuoi semplicemente eseguire un download anonimo di alcuni file da un server FTP, il tuo
Il browser Web Firefox fornisce un'interfaccia semplice per farlo. Per interazioni più complesse

492

Pagina 533

Capitolo 18: Configurazione di un server FTP

tra il client e il server FTP, è possibile utilizzare client FTP da riga di comando. Il seguente
la sezione descrive alcuni di questi strumenti.

Accesso a un server FTP da Firefox


Il browser web Firefox fornisce un modo semplice e veloce per testare l'accesso al tuo server FTP oa
accedere a qualsiasi server FTP pubblico. Sul tuo sistema, digita ftp: // localhost nella casella della posizione. Se
il tuo server è accessibile, dovresti vedere qualcosa di simile all'esempio mostrato nella Figura 18.2.

FIGURA 18.2

Accesso a un server FTP da Firefox

18

Per accedere a un server FTP come un determinato utente da Firefox, è possibile anteporre il nome host
con un nome utente: password @ notation. Per esempio:

ftp: // chris: MypassWd5 @ localhost

Se fornisci il nome utente e la password corretti, dovresti vedere immediatamente il contenuto


della tua home directory. Fare clic su una cartella per aprirla. Fare clic su un file per scaricare o visualizzare il file.

Accesso a un server FTP con il comando lftp


Per testare il tuo server FTP dalla riga di comando, puoi utilizzare il comando lftp. Installare
il comando lftp in Fedora o RHEL, digita quanto segue dalla riga di comando:

# yum installa lftp

493

Pagina 534

Parte IV: diventare un amministratore di server Linux

Se usi il comando lftp solo con il nome del server FTP che stai cercando
access, il comando tenta di connettersi al server FTP come utente anonimo. Aggiungendo
il nome utente -u, è possibile digitare la password dell'utente quando richiesto e ottenere l'accesso al file
Server FTP come utente con cui hai effettuato l'accesso.

Dopo aver aggiunto le informazioni su utente e password, viene visualizzato un prompt lftp, pronto
per iniziare a digitare i comandi. La connessione viene stabilita al server durante la digitazione
il tuo primo comando. È possibile utilizzare i comandi per spostarsi nel server FTP, quindi
utilizzare i comandi get e put per scaricare e caricare i file.

L'esempio seguente mostra come utilizzare i comandi come appena descritto. Si presume che il file
Il server FTP (e le misure di sicurezza associate) è stato configurato per consentire agli utenti locali di
connettersi e leggere e scrivere file:

# lftp -u chris localhost


Parola d'ordine:
********
lftp chris @ localhost: ~> pwd
ftp: // chris @ localhost /% 2Fhome / chris
lftp chris @ localhost: ~> roba cd / stato /
lftp chris @ localhost: ~ / stuff / state> ls
-rw-r - r-- 1 13597 13597 1394 23 ottobre 2014 iscritti
20141012
-rw-r - r-- 1 13597 13597 514 23 ottobre 2014 iscritti-
20141013
lftp chris @ localhost: ~ / stuff / state> ! pwd
/radice
lftp chris @ localhost: ~ / stuff / state> get survey-20141023.txt
3108 byte trasferiti
lftp chris @ localhost: ~ / stuff / state> put / etc / hosts
201 byte trasferiti
lftp chris @ localhost: ~ / stuff / state> ls
-rw-r - r-- 1 13597 13597 1394 23 ottobre 2014 iscritti
20141012
-rw-r - r-- 1 13597 13597 514 23 ottobre 2014 iscritti-
20141013
-rw-r - r-- 1 0 0 201 maggio 03 20:22 host
lftp chris @ localhost: ~ / stuff / state> ! ls
anaconda-ks.cfg bidone install.log
cane Immagini inviate
Download Pubblico survey-20141023.txt
lftp chris @ localhost: ~ / stuff / state> quit

Dopo aver fornito il nome utente (-u chris), lftp richiede la password dell'utente Linux di chris.
Digitare pwd mostra che chris è connesso all'host locale e che / home / chris è il file
directory corrente. Proprio come faresti da una normale shell a riga di comando di Linux, puoi usare
cd per passare a un'altra directory e ls per elencare i contenuti di quella directory.

494

Pagina 535

Capitolo 18: Configurazione di un server FTP

Affinché i comandi che esegui siano interpretati dal sistema client, puoi semplicemente inserire un file
punto esclamativo (!) davanti a un comando. Ad esempio, l'esecuzione di! Pwd mostra che il file
la directory corrente sul sistema che ha avviato lftp è / root. Buono a sapersi
perché se ottieni un file dal server senza specificarne la destinazione, va al
directory corrente del client (in questo caso / root). Altri comandi che potresti eseguire così sono
interpretati dal sistema client includono! cd (per cambiare directory) o! ls (per elencare i file).

Supponendo che tu abbia il permesso di lettura di un file sul server e il permesso di scrittura dal
directory corrente sul sistema di avvio, è possibile utilizzare il comando get per eseguire il download
un file dal server (ottenere survey-20141023.txt). Se hai scritto e carica
permesso sulla directory corrente sul server, puoi usare put per copiare un file in
server (inserire / etc / hosts).

L'esecuzione di un comando ls mostra che il file / etc / hosts è stato caricato sul server.
L'esecuzione del comando! Ls ti consente di vedere che il file survey-20141023.txt era
scaricato dal server al sistema di avvio.

Utilizzando il client gFTP


Molti altri client FTP sono disponibili anche con Linux. Un altro client FTP che potresti provare
è gFTP. Il client gFTP fornisce un'interfaccia che ti consente di vedere sia il locale che il remoto
lati della tua sessione FTP. Per installare gFTP in Fedora e Red Hat Enterprise Linux, esegui il
seguente comando per installare il pacchetto gftp:
18
# yum installa gftp

Per avviare gFTP, avvialo dal menu delle applicazioni o esegui gftp & dalla shell. Per usarlo,
digita l'URL del server FTP a cui desideri connetterti, inserisci il nome utente che desideri utilizzare
(come anonimo) e premere Invio. La Figura 18.3 mostra un esempio di gFTP utilizzato
connettersi a una directory di documentazione sul sito ftp://kernel.org.

Per attraversare il sito FTP da gFTP, fai doppio clic sulle cartelle (proprio come faresti da un file
finestra del manager). I percorsi completi della directory locale (a sinistra) e della directory remota
(a destra) sono mostrati sopra gli elenchi di file e cartelle di seguito.

Per trasferire un file dal lato remoto al lato locale, seleziona il file desiderato dal file
destra e fare clic sulla freccia al centro dello schermo che punta a sinistra. Guarda il programma
remere del trasferimento di file dai messaggi nella parte inferiore dello schermo. Quando il trasferimento è stato
pletes, il file viene visualizzato nel riquadro di sinistra.

È possibile aggiungere ai segnalibri le informazioni sull'indirizzo necessarie per connettersi a un sito FTP. Quell'indirizzo
viene aggiunto a una serie di segnalibri già memorizzati nel menu Segnalibri. Puoi selezionare
siti dall'elenco per provare gFTP. La maggior parte dei siti sono per distribuzioni Linux e
altri siti di software open source.

495
Pagina 536

Parte IV: diventare un amministratore di server Linux

FIGURA 18.3

Il client FTP gFTP ti consente di vedere entrambi i lati di una sessione FTP.

Sommario
La configurazione di un server FTP è un modo semplice per condividere file su una rete TCP. Il molto sicuro
FTP Daemon (pacchetto vsftpd) è disponibile per Fedora, Red Hat Enterprise Linux, Ubuntu,
e altri sistemi Linux.

Un server vsftpd predefinito consente agli utenti anonimi di scaricare file dal server e
utenti Linux regolari per caricare o scaricare file (a condizione che alcune impostazioni di sicurezza siano
cambiato). Spostarsi su un server FTP è simile allo spostamento su un file system Linux.
Ti sposti su e giù nella struttura della directory per trovare il contenuto che desideri.

Esistono client FTP grafici e basati su testo. Un popolare client basato su testo per Linux
è lftp. Per quanto riguarda i client FTP grafici, è possibile utilizzare un normale browser Web, come Firefox o
client FTP dedicati, come gFTP.

I server FTP non sono l'unico modo per condividere file su una rete da Linux. Il Samba
service fornisce un modo per condividere file su una rete in modo che la directory Linux condivisa abbia l'aspetto
una directory condivisa da un sistema Windows. Il Capitolo 19 descrive come usare Samba per offrire
Condivisione di file in stile Windows.

496

Pagina 537

Capitolo 18: Configurazione di un server FTP

Esercizi
Gli esercizi in questa sezione descrivono le attività relative alla configurazione di un server FTP in RHEL o
Fedora e connettersi a quel server utilizzando un client FTP. Potresti eseguire questa procedura
un sistema Ubuntu, ma richiederebbe una configurazione aggiuntiva perché Ubuntu non supporta
FTP anonimo per impostazione predefinita. Se sei bloccato, le soluzioni alle attività sono mostrate in Appendice
B. Tieni presente che le soluzioni mostrate nell'Appendice B sono solitamente solo una delle molteplici
modi per completare un'attività.

Non fare questi esercizi su un sistema Linux che esegue un server FTP pubblico perché quasi
certamente interferire con quel server.
1. Determinare quale pacchetto fornisce il servizio Very Secure FTP Daemon.
2. Installa il pacchetto Very Secure FTP Daemon sul tuo sistema e cerca il file
file di configurazione in quel pacchetto.

3. Avviare il servizio Very Secure FTP Daemon e impostarlo in modo che venga avviato quando il file
avvia il sistema.
4. Sul sistema che esegue il server FTP, creare un file denominato test nell'anonimato
Directory FTP che contiene le parole "Benvenuto nel tuo server vsftpd".

5. Da un browser web sul sistema che esegue il server FTP, aprire il file di prova
dalla home directory dell'FTP anonimo. Assicurati di poter vedere il contenuto di quel file.
6. Da un browser web esterno al sistema che esegue il server FTP, provare ad accedere
18
il file di prova nella home directory dell'FTP anonimo. Se non riesci ad accedere al file,
controlla che il tuo firewall, SELinux e wrapper TCP siano configurati per consentire l'accesso
a quel file.
7. Configura il tuo server vsftpd per consentire il caricamento di file da parte di utenti anonimi su un file
directory denominata in.

8. Installa il client FTP lftp (se non hai un secondo sistema Linux, installa lftp
sullo stesso host che esegue il server FTP). Se non puoi caricare file nel file in
directory, controlla che il tuo firewall, SELinux e wrapper TCP siano configurati per
consentire l'accesso a quel file.

9. Utilizzando qualsiasi client FTP scelto, visitare le pagine / pub / linux / docs / man
directory sul sito ftp://kernel.org ed elenca i contenuti di quella directory.
10. Utilizzando qualsiasi client FTP scelto, scarica il file man-pages-3.41.tar.gz
dalla directory kernel.org che hai appena visitato alla directory / tmp sul tuo
sistema locale.

497

Pagina 539
538

CAPITOLO

19
Configurazione di un file Windows
Server di condivisione (Samba)
IN QUESTO CAPITOLO
Ottenere e installare Samba

Utilizzo delle funzionalità di sicurezza di Samba

Modifica del file di configurazione smb.conf

Accesso a Samba da client Linux e Windows

Utilizzo di Samba in azienda

S stampanti, nonché autenticare gli utenti e limitare gli host, tra i sistemi Windows. Samba
offre una serie di modi per condividere file tra i sistemi Windows, Linux e Mac OS / X che sono
amba è il progetto che implementa versioni open source dei protocolli utilizzati per condividere file e
ben noto e facilmente disponibile per gli utenti di tali sistemi.

Questo capitolo ti guida attraverso il processo di installazione e configurazione di un server Samba.


Descrive le funzionalità di sicurezza che devi conoscere per condividere i tuoi file e le risorse della stampante e
descrive come accedere a tali risorse da sistemi Linux e Windows.

Capire Samba
Samba ( www.samba.org) è una suite di programmi che consente a Linux, UNIX e altri sistemi
interoperare con i protocolli di condivisione di file e stampanti di Microsoft Windows. Windows, DOS, OS / 2, Mac
OS / X e altri sistemi client possono accedere ai server Samba per condividere file e stampanti nello stesso
modi in cui lo farebbero da file Windows e server di stampa.

Con Samba, puoi usare la rete TCP / IP standard per comunicare con i client. Per nome
servizio, Samba supporta i normali nomi host TCP / IP, nonché i nomi NetBIOS. Per tale motivo,
Samba non richiede il protocollo NetBEUI (Microsoft Raw NetBIOS frame). La condivisione dei file è terminata
utilizzando il Common Internet File System (CIFS), che è un'implementazione aperta del server
Protocollo Message Block (SMB).

499

Pagina 540

Parte IV: diventare un amministratore di server Linux

Il progetto Samba ha fatto di tutto per rendere il suo software sicuro e robusto.
In effetti, molte persone preferiscono utilizzare i server Samba su file server Windows a causa del
maggiore sicurezza inerente all'esecuzione di servizi di condivisione file in stile Windows su Linux o
altri sistemi operativi simili a UNIX.

Al di là di tutto il mumbo-jumbo tecnico, tuttavia, il risultato finale è che Samba ce la fa


facile condividere file e stampanti tra server Linux e sistemi desktop Windows.
Per il server, sono necessari solo pochi file di configurazione e strumenti per gestire Samba. Per il
client, le risorse condivise vengono visualizzate sotto la selezione Rete nel gestore delle finestre
o nelle Risorse di rete sui sistemi Windows precedenti.

Le interfacce per la gestione di Samba su un server Linux includono la configurazione del server Samba
finestra (system-config-samba) e Samba SWAT (Samba Web Administration Tool)
interfaccia basata sul web. In alternativa, puoi modificare direttamente i file di configurazione di Samba
(in particolare smb.conf) ed eseguire alcuni comandi per configurare Samba.

Lavorare con Samba SWAT


Non tratterò questo argomento in questo capitolo, ma molte persone preferiscono l'interfaccia Samba SWAT direttamente
modifica dei file di configurazione. Su alcune distribuzioni Linux, Samba SWAT può essere l'unico punta e clicca
interfaccia disponibile. Altri, come Fedora, non lo includono più.

Ecco una guida rapida per far funzionare Samba SWAT sul tuo sistema RHEL 6:

1. Installa i pacchetti samba-swat e xinetd.

2. Modificare il file /etc/xinetd.d/swat e cambiare la riga di disabilitazione in leggere disable = no.


3. Riavvia xinetd: avvio del servizio xinetd; chkconfig xinetd su.

4. Aprire il browser Web locale a questo indirizzo : http: // localhost: 901.

La schermata dello strumento di amministrazione Web Samba che si apre nel browser (dopo aver inserito il nome utente root
e password) fornisce un'interfaccia diversa per configurare il server Samba, le directory condivise,
e le stampanti descritte nel resto di questo capitolo. Cliccando intorno, dovresti essere in grado di farlo
scopri come inserire queste informazioni nell'interfaccia SWAT.

Per iniziare a utilizzare Samba sul tuo sistema Linux, devi installare alcuni pacchetti software,
come descritto nella sezione successiva.

Installazione di Samba
In Red Hat Enterprise Linux e Fedora, per configurare un file Samba e un server di stampa, l'unico
i pacchetti richiesti sono i pacchetti samba e samba-common. Tra gli altri componenti,
il pacchetto samba include il demone del servizio Samba (/ usr / sbin / smbd) e NetBIOS

500

Pagina 541
Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

demone del server dei nomi (/ usr / sbin / nmbd). Il pacchetto samba-common contiene server
file di configurazione (smb.conf, lmhosts e altri) e comandi per l'aggiunta di password
e testare i file di configurazione, insieme ad altre funzionalità di Samba.

In questo capitolo si fa riferimento alle funzionalità di altri pacchetti, quindi descrivo come installarle
anche quei pacchetti. Questi pacchetti includono quanto segue:

■ Pacchetto samba-client: contiene strumenti della riga di comando come smbclient


(per connettersi a condivisioni Samba o Windows), nmblookup (per cercare host
indirizzi) e findmb (per trovare host SMB sulla rete).
■ pacchetto system-config-samba: contiene un'interfaccia grafica per
gestire Samba.
■ pacchetto system-config-samba-docs: contiene la documentazione associata al file
interfaccia grafica system-config-samba.
■ Pacchetto samba-swat: contiene un'interfaccia basata sul web per configurare un Samba
server. (Non più in Fedora.)
■ Pacchetto samba-winbind: include componenti che consentono il server Samba
in Linux per diventare un membro completo di un dominio Windows, incluso l'utilizzo di
Account utente e di gruppo Windows in Linux.

Per installare tutti i pacchetti appena menzionati (samba-common è installato come dipendenza
di samba, quindi non è necessario annotarlo specificamente), digitare quanto segue come root dal file
riga di comando in Fedora:

# yum installa samba samba-client samba-winbind \


system-config-samba system-config-samba-docs
...
Dipendenze risolte
================================================== ================
Pacchetto Versione ad arco Dimensioni del repository
================================================== ================
Installazione: 19
samba x86_64 2: 4.1.15-1.fc21 aggiorna 555 k
client samba x86_64 2: 4.1.15-1.fc21 aggiorna 513 k
samba-winbind x86_64 2: 4.1.15-1.fc21 aggiorna 445 k
system-config-samba noarch 1.2.100-3.fc21 fedora 282 k
system-config-samba-docs noarch 1.0.9-7.fc21 fedora 274 k
Installazione per dipendenze:
libsmbclient x86_64 2: 4.1.15-1.fc21 aggiornamenti 112 k
samba-comune x86_64 2: 4.1.15-1.fc21 aggiorna 685 k
samba-libs x86_64 2: 4.1.15-1.fc21 aggiorna 4.2 M
samba-winbind-modules x86_64 2: 4.1.15-1.fc21 aggiorna 93 k
Riepilogo delle transazioni
================================================== ==================
Installa 5 pacchetti (+4 pacchetti dipendenti)
Dimensione totale del download: 7,1 M.

501

Pagina 542

Parte IV: diventare un amministratore di server Linux

Dimensioni installate: 25 M.
Va bene [y / d / N]: y

Dopo aver installato i pacchetti Samba, guarda i file di configurazione in


pacchetto samba-common:

# rpm -qc samba-common


/etc/logrotate.d/samba
/ etc / sysconfig / samba
/ etc / samba / lmhosts
/etc/samba/smb.conf

I file /etc/logrotate.d/samba e / etc / sysconfig / samba di solito non lo sono


modificato. Il primo imposta il modo in cui i file in / var / log / samba vengono ruotati (copiati in
altri file e rimossi) nel tempo. Il secondo è un file in cui puoi mettere le opzioni che
vengono passati ai daemon smbd, nmbd o winbindd, quindi è possibile disattivare funzionalità come
come debug.

La maggior parte dei file di configurazione che modificheresti per Samba si trovano nella directory / etc / samba.
Il file smb.conf è il file di configurazione principale, in cui inserisci le impostazioni globali per
Il server Samba e le informazioni sulla condivisione di file e stampanti individuali (ne parleremo più avanti).
Il file lmhosts consente al nome host Samba NetBIOS di essere mappato in indirizzi IP.

Sebbene non esista di default, puoi creare un file chiamato / etc / samba / smbusers
per mappare i nomi utente Linux in nomi utente Windows. Mentre configuri il tuo server Samba,
è possibile fare riferimento alla pagina man smb.conf (man smb.conf). Ci sono anche pagine man per
Comandi Samba, come smbpasswd (per cambiare le password), smbclient (per connettersi a
un server Samba) e nmblookup (per cercare informazioni su NetBIOS).

Dopo aver installato i pacchetti Samba e completato un rapido sondaggio di ciò che contengono
contenere, provare ad avviare il servizio Samba e vedere cosa si ottiene in una configurazione predefinita.

Avvio e arresto di Samba


Con samba e samba-common installati, puoi avviare il server e indagare su come
funziona nella configurazione predefinita. Due servizi principali sono associati a un server Samba,
ognuno dei quali ha il proprio demone di servizio. Tali servizi includono quanto segue:

■ smb: questo servizio controlla il processo daemon smbd, che fornisce il file e
servizi di condivisione della stampa a cui possono accedere i client Windows.
■ nmb: questo servizio controlla il daemon nmbd. Fornendo il servizio di nomi NetBIOS
mapping nome-indirizzo, nmbd può mappare le richieste dai client Windows per
Nomi NetBIOS in modo che possano essere risolti in indirizzi IP.

Per condividere file e stampanti con altri sistemi Linux con Samba, è disponibile solo il servizio smb
necessario. La sezione successiva descrive come avviare e abilitare il servizio smb.

502

Pagina 543

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

Avvio del servizio Samba (smb)


Il servizio smb è ciò che avvia il server smbd e rende disponibili file e stampanti
il tuo sistema locale ad altri computer sulla rete. Come al solito, i servizi sono abilitati e
avviato in modo diverso su diversi sistemi Linux. Per diversi sistemi Linux, è necessario
trova il nome del servizio e lo strumento corretto per avviare il demone smbd.

In Fedora e RHEL 7, per abilitare l'avvio di Samba all'avvio del sistema e l'avvio di Samba
immediatamente, digita quanto segue dalla riga di comando come root:

# systemctl abilita smb.service


# systemctl avvia smb.service
# systemctl status smb.service
smb.service - Daemon Samba SMB
Loaded: caricato (/usr/lib/systemd/system/smb.service; abilitato)
Attivo: attivo (in esecuzione) da Sun 2014-08-31 07:23:37 EDT; 6s fa
PID principale: 4838 (smbd)
CGroup: /system.slice/smb.service
├ 4838 / usr / sbin / smbd
└ 4840 / usr / sbin / smbd

Il primo comando systemctl abilita il servizio, il secondo lo avvia immediatamente e


il terzo mostra lo stato. Per approfondire, notare che il file di servizio si trova in
/usr/lib/systemd/system/smb.service. Guarda il contenuto di quel file:

# cat /usr/lib/systemd/system/smb.service
[Unità]
Descrizione = Samba SMB Daemon
Dopo = syslog.target network.target nmb.service winbind.service
[Servizio]
Tipo = notifica
NotifyAccess = all
PIDFile = / run / smbd.pid
LimitNOFILE = 16384
EnvironmentFile = - / etc / sysconfig / samba 19
ExecStart = / usr / sbin / smbd $ SMBDOPTIONS
ExecReload = / usr / bin / kill -HUP $ MAINPID
[Installare]
WantedBy = multi-user.target

Il processo del demone Samba (smbd) viene avviato dopo syslog, network, nmb e
servizi winbind. Il file / etc / sysconfig / samba contiene le variabili che vengono passate
come argomenti del demone / usr / sbin / smbd all'avvio. Nessuna opzione è impostata per impostazione predefinita
per il demone smbd (nessuno è impostato neanche per i demoni nmbd o winbindd, che possono anche
avere opzioni inserite in quel file). La riga WantedBy indica che smb.service dovrebbe
inizia quando il sistema si avvia in modalità multiutente (multi-user.target), che esso
fa per impostazione predefinita.

503

Pagina 544

Parte IV: diventare un amministratore di server Linux

In RHEL 6 e versioni precedenti, puoi avviare il servizio Samba come segue:

# service smb start


Avvio dei servizi SMB: [ OK ]
# chkconfig smb su
# stato del servizio smb
smbd (pid 28056) è in esecuzione ...
# chkconfig --list smb
smb 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento

Sia che tu stia eseguendo il tuo server Samba su RHEL, Fedora o un altro sistema Linux,
puoi controllare l'accesso al server Samba usando il comando smbclient (dal
pacchetto samba-client). È possibile ottenere informazioni di base da un server Samba utilizzando il
seguente comando:

# smbclient -L localhost
Immettere la password di root: < INVIO >
Accesso anonimo riuscito
Dominio = [MYGROUP] OS = [Unix] Server = [Samba 4.1.15]
Nome condivisione Tipo Commento
--------- ---- -------
IPC $ Servizio IPC IPC
(Samba Server versione 4.1.15)
Stampante DeskJet DeskJet
Jeeves Stampante HP Deskjet 3050 J610 series
deskjet-5550 Stampante hp deskjet 5550
Accesso anonimo riuscito
Dominio = [MYGROUP] OS = [Unix] Server = [Samba 4.1.15]
server Commento
--------- -------
Gruppo di lavoro Maestro
--------- -------

L'output di smbclient consente di vedere quali servizi sono disponibili dal server.
Per impostazione predefinita, l'accesso anonimo è consentito quando si interroga il server (quindi ho appena premuto Invio
quando viene richiesta una password).

Puoi discernere una serie di cose sulla configurazione del server Samba predefinito da questo output:

■ Il dominio predefinito (questo è un dominio Windows e non un dominio DNS) è impostato su


IL MIO GRUPPO.
■ Il nome del server predefinito è impostato sulla versione corrente di Samba, in questo caso Samba
4.1.15.
■ Tutte le stampanti condivise tramite il server CUPS sul sistema Linux sono, da
predefinito, reso disponibile anche dal server Samba in esecuzione sullo stesso sistema.
■ Nessuna directory è ancora condivisa dal server.
■ Non è ancora in esecuzione alcun servizio di nomi NetBIOS dal server Samba.

504

Pagina 545

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)


Successivamente, puoi decidere se desideri eseguire il servizio di nomi NetBIOS sul tuo
Server Samba.

Avvio del server dei nomi NetBIOS (nmbd)


Se nessun server di dominio Windows è in esecuzione sulla rete, come nel caso qui, puoi iniziare
il servizio nmb sull'host Samba per fornire quel servizio. Per avviare il servizio nmb
(demone nmbd) in Fedora o RHEL 7, digitare quanto segue:

# systemctl abilita nmb.service


# systemctl avvia nmb.service
# systemctl status nmb.service

In RHEL 6 e versioni precedenti, digitare quanto segue per avviare il servizio nmb:

# avvio del servizio nmb


# stato del servizio nmb
# chkconfig nmb attivato
# chkconfig --list nmb

Indipendentemente da come è stato avviato il servizio NetBIOS, il demone nmbd dovrebbe ora essere
in esecuzione e pronto a servire la mappatura nome-indirizzo NetBIOS. Esegui smbclient -L
di nuovo, seguito dall'indirizzo IP del server. Questa volta, le ultime righe di
l'output dovrebbe mostrare le informazioni ottenute dal server NetBIOS ora in esecuzione su
server. In questo caso, le ultime righe erano così:

# smbclient -L localhost
...
server Commento
--------- -------
FEDORA21 Samba Server versione 4.1.15
Master del gruppo di lavoro
--------- -------
IL MIO GRUPPO FEDORA21
19
Puoi vedere che il nome del nuovo server NetBIOS è FEDORA21 e che è il master
server per il gruppo di lavoro. Per interrogare il server nmbd per l'indirizzo IP di FEDORA21, tu
digiterà quanto segue:

# nmblookup -U localhost FEDORA21


interrogando FEDORA21 su 127.0.0.1
192.168.0.101 FEDORA21 <00>

Ora dovresti essere in grado di vedere il tuo server Samba in esecuzione dal sistema locale. Il
Il nome host assegnato al sistema (in questo caso FEDORA21) è assegnato di default.

Tuttavia, se hai un firewall configurato o SELinux abilitato, potresti non essere in grado di farlo completamente
accedere al server Samba ancora da un sistema remoto. La sezione successiva dovrebbe aiutarti ad aprire

505

Pagina 546

Parte IV: diventare un amministratore di server Linux

Samba su sistemi esterni al sistema locale, oltre a consentire alcune funzionalità di Samba che potrebbero
essere disattivato da SELinux.

Arresto dei servizi Samba (smb) e NetBIOS (nmb)


Per fermare i servizi smb e nmb in Fedora o RHEL 7, puoi usare lo stesso systemctl
comando che hai usato per avviarli. È possibile utilizzare lo stesso comando per disabilitare i servizi
allo stesso modo, in modo che non si riavviino all'avvio del sistema. Ecco alcuni esempi di come
interrompere immediatamente i servizi smb e nmb:

# systemctl ferma smb.service


# systemctl ferma nmb.service

In RHEL 6 e versioni precedenti, digitare quanto segue per arrestare i servizi smb e nmb:

# servizio smb stop


# servizio nmb stop

Per impedire l'avvio dei servizi smb e nmb al successivo riavvio del sistema, digitare
i seguenti comandi in Fedora o RHEL 7:

# systemctl disabilita smb.service


# systemctl disabilita nmb.service
In Red nmb:
servizi Hat Enterprise Linux 6, digitate i seguenti comandi per disabilitare smb e

# chkconfig smb off


# chkconfig nmb disattivato

Ovviamente, vuoi solo interrompere o disabilitare i servizi smb e nmb se non lo desideri più
per utilizzare il servizio Samba. Se sei pronto per continuare a configurare il tuo servizio Samba, tu
può continuare e iniziare a configurare le funzionalità di sicurezza di Linux per consentire il Samba
servizio per renderlo disponibile ad altri sulla tua rete.

Protezione di Samba
Se non puoi accedere al tuo server Samba subito dopo averlo avviato, probabilmente lo hai fatto
alcuni lavori di sicurezza da fare. Perché molte installazioni predefinite di Linux impediscono, invece di
consentire, l'accesso al sistema, occuparsi della sicurezza per un servizio come Samba di solito ha
ha più a che fare con il renderlo disponibile che con il renderlo sicuro.

Ecco le caratteristiche di sicurezza di cui dovresti essere a conoscenza quando configuri il tuo sistema Samba:

■ Firewall : il firewall predefinito per Fedora, RHEL e altri sistemi Linux impedisce
qualsiasi accesso ai servizi locali da sistemi esterni. Quindi, per consentire agli utenti di altri file
computer per accedere al servizio Samba, è necessario creare regole firewall che si aprano
una o più porte per i protocolli selezionati (TCP in particolare).

506

Pagina 547

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

■ SELinux: molte funzionalità di Samba sono designate come potenzialmente non sicure da
SELinux. Perché il predefinito SELinux Booleans (on / off attiva per certi
caratteristiche) sono impostati per fornire l'accesso minimo richiesto, è necessario attivare booleani
attivato per funzionalità come consentire agli utenti di accedere alle proprie directory home con
Samba. In altre parole, puoi configurare Samba per condividere le directory home degli utenti,
ma SELinux proibisce a qualcuno di provare a usare quella caratteristica a meno che tu non sia esplicitamente
configurare SELinux per consentire quella caratteristica.
■ Limitazioni per host e utenti: all'interno dei file di configurazione di Samba, tu
può indicare quali host e utenti possono avere accesso al server Samba nel suo complesso
oa particolari directory condivise.

Le sezioni successive descrivono come impostare le funzionalità di sicurezza appena menzionate per Samba.

Configurazione dei firewall per Samba


Se un iptables o un firewall firewalld è configurato per il tuo sistema la prima volta
installarlo, il firewall in genere consente qualsiasi richiesta di servizi da parte degli utenti locali, ma nessuna
da utenti esterni. Ecco perché, alla fine della sezione di installazione di questo capitolo, tu
avrebbe dovuto essere in grado di verificare che Samba funzionasse utilizzando il comando smbclient
dal sistema locale. Tuttavia, se la richiesta provenisse da un altro sistema, lo sarebbe
sono stati rifiutati.

La configurazione delle regole del firewall per Samba consiste principalmente nell'apertura delle porte in entrata che il
I demoni smbd e nmbd sono in ascolto. Queste sono le porte che dovresti aprire per ottenere un file
servizio Samba funzionante sul tuo sistema Linux:

■ Porta TCP 445: questa è la porta principale su cui ascolta il demone Samba smbd. Il tuo
il firewall deve supportare le richieste di pacchetti in entrata su questa porta affinché Samba funzioni.
■ Porta TCP 139 : il daemon smbd è in ascolto anche sulla porta TCP 139, per gestire le sessioni
associati ai nomi host NetBIOS. È possibile utilizzare Samba su TCP senza
aprire questa porta, ma non è consigliabile.
■ Porte UDP 137 e 138 : il daemon nmbd utilizza queste due porte per l'ingresso
19
Richieste NetBIOS. Se stai usando il demone nmbd, queste due porte devono essere
aperto per nuove richieste di pacchetti per la risoluzione dei nomi NetBIOS.

Per Fedora e RHEL 7, consentire l'accesso in entrata a queste quattro porte è facile. Semplicemente aperto
nella finestra Configurazione firewall e selezionare le caselle di controllo accanto a samba e
voci del client samba nella zona pubblica, scheda Servizi. Quelle porte diventano immediatamente
accessibile (non è richiesto il riavvio del servizio firewalld).

Per i sistemi Fedora e RHEL precedenti che utilizzano iptables direttamente invece del firewalld
servizio, l'apertura del firewall è un processo più manuale. Considera un firewall predefinito da
Fedora che consente i pacchetti in arrivo dall'host locale, dalle connessioni stabilite e
relativo alle connessioni stabilite, ma nega tutti gli altri pacchetti in arrivo. Il seguente
507

Pagina 548

Parte IV: diventare un amministratore di server Linux

esempio rappresenta un insieme di regole del firewall nel file / etc / sysconfig / iptables, con
quattro nuove regole (evidenziate nell'esempio che segue) aggiunte per aprire le porte per Samba:

*filtro
: INPUT ACCETTA [0: 0]
: INOLTRO ACCETTA [0: 0]
: OUTPUT ACCETTA [0: 0]
-A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
-A INPUT -p icmp -j ACCETTA
-A INPUT -i lo -j ACCETTA
-I INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCETTA
-I INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCETTA
-I INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-I INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-vietato
-A FORWARD -j REJECT --reject-with icmp-host-disabled
COMMETTERE

Il firewall può includere regole aggiuntive per consentire richieste di pacchetti in arrivo per altri
servizi, come Secure Shell (sshd) o servizi web (httpd). Puoi lasciarli dentro
posto. Il punto principale è che le tue regole di Samba siano posizionate da qualche parte prima della finale
REJECT regole.

Se il tuo firewall iptables è abilitato, puoi riavviarlo per rendere effettive le nuove regole.
Per farlo, digita systemctl restart iptables.service (nei vecchi sistemi Fedora) o
il servizio riavvia iptables (in RHEL 6 o versioni precedenti). Prova a connetterti al servizio Samba
utilizzando di nuovo il comando smbclient o utilizzando altre tecniche descritte in
sezione "Accesso alle condivisioni Samba" più avanti in questo capitolo.

Vedere il Capitolo 25, "Protezione di Linux su una rete", per ulteriori informazioni sull'uso di iptables.

Configurazione di SELinux per Samba


Esistono considerazioni sul contesto del file e booleane relative all'uso di Samba con
SELinux in modalità Enforcing. I contesti dei file devono essere impostati correttamente su una directory che sia
condiviso da Samba. I booleani consentono di ignorare l'approccio secure-by-default a
alcune caratteristiche di Samba.

Puoi trovare informazioni su come SELinux confina Samba su samba_selinux man


pagina (man samba_selinux). Devi installare il pacchetto selinux-policy-devel su
ottenere quella pagina man. Per una comprensione più approfondita di SELinux, fare riferimento al Capitolo 24, "Miglioramento
Linux Security con SELinux. "

Impostazione dei booleani SELinux per Samba


Esistono diversi modi per vedere i booleani associati a Samba. In Fedora
e RHEL, è possibile installare il pacchetto policycore-utils-gui ed eseguire il

508

Pagina 549

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

comando system-config-selinux. Nella finestra di amministrazione di SELinux quello


appare, selezionare Booleani dalla colonna di sinistra e cercare i valori booleani elencati con
modulo samba.
Un altro modo per elencare i booleani per Samba è usare il comando semanage, come segue:

# semanage booleano -l | egrep "smb | samba"

Di seguito è riportato un elenco di booleani SELinux che si applicano a Samba e le loro descrizioni. Il
first Boolean ti permette di lasciare SELinux in modalità Enforcing, ma impedisce a SELinux di farlo
limitare gli script che il server Samba può eseguire. Tutti gli altri impostano quali file e directory il file
Il server Samba può leggere e scrivere per conto degli utenti Samba:

■ samba_run_unconfined: consente a samba di eseguire script non confinati.


■ smbd_anon_write: consente a Samba di consentire agli utenti anonimi di modificare i file pubblici
utilizzato per i servizi di trasferimento di file pubblici. I file e le directory devono essere etichettati
public_content_rw_t.
■ samba_enable_home_dirs: consente a Samba di condividere le directory home degli utenti.
■ samba_export_all_ro: consente a Samba di condividere qualsiasi file e directory in sola lettura.
■ use_samba_home_dirs: consente a un server Samba remoto di accedere alle directory home
sulla macchina locale.
■ samba_create_home_dirs: consente a Samba di creare nuove directory home (per
esempio, tramite PAM).
■ samba_export_all_rw: consente a Samba di condividere qualsiasi file o directory in lettura / scrittura.

I seguenti valori booleani influenzano la capacità di Samba di condividere directory che sono essi stessi
montato da altri servizi remoti (come NFS) o per agire come controller di dominio Windows:

■ samba_share_fusefs: consente a Samba di esportare volumi ntfs / fusefs.


■ samba_share_nfs: consente a Samba di esportare volumi NFS.
■ samba_domain_controller: consente a Samba di agire come controller di dominio, aggiungi 19
utenti e gruppi e modificare le password.

Il comando setsebool è usato per attivare o disattivare i booleani SELinux. Usato con
l'opzione -P, setsebool imposta il booleano che indichi in modo permanente. Ad esempio, a
consenti a Samba di condividere qualsiasi file o directory con il permesso di sola lettura dal server, tu
potrebbe digitare quanto segue da una shell come utente root:

# setsebool -P samba_export_all_ro on
# getsebool samba_export_all_ro
samba_export_all_ro -> su

Il comando setsebool imposta il booleano, in questo caso su on. Il getsebool te lo permette


vedere il valore del booleano.

509

Pagina 550

Parte IV: diventare un amministratore di server Linux

Impostazione dei contesti di file SELinux per Samba


SELinux confina i file a cui può accedere il servizio Samba. Invece di consentire qualsiasi file
con il permesso di lettura e scrittura appropriato per essere condiviso dal server Samba, SELinux
(quando in modalità Enforcing) richiede che i file e le directory abbiano i contesti di file corretti
impostato su di essi prima che il servizio Samba possa persino vedere che i file esistono.

Affinché il servizio Samba funzioni immediatamente con SELinux, alcuni file e directory
vengono preimpostati con i contesti di file appropriati. Ad esempio, i file di configurazione di Samba (/ etc /
samba / *), i file di registro (/ var / log / samba / *) e le librerie (/ var / lib / samba / *) hanno regole
assegnato per garantire che ottengano i contesti di file appropriati. Per trovare file e directory associati
con il servizio Samba e il demone smbd che hanno contesti di file preimpostati, eseguire quanto segue:

# semanage fcontext -l | grep -i samba


# semanage fcontext -l | grep -i smb

La parte del contesto del file che ti interessa termina con _t: ad esempio,
samba_etc_t, samba_log_t e smbd_var_t, per / etc / samba, / var / log / samba,
e / var / lib / samba, rispettivamente.

Potresti scoprire di dover modificare i contesti dei file, ad esempio quando inserisci i file
posizioni non standard (come spostare il file smb.conf in /root/smb.conf) o quando
vuoi condividere una directory (diversa dalle directory home, che possono essere attivate da
impostazione di un valore booleano). A differenza dei server vsftpd (FTP) e httpd (web) forniti con
Linux, Samba non ha directory di contenuto condiviso predefinite (quelle appena menzionate sono usate
/ var / ftp e / var / www / html).

È possibile modificare un contesto di file in modo permanente creando una nuova regola del contesto di file e quindi
applicare quella regola al file o alla directory per cui è destinata. Puoi farlo con il
comando semanage (per creare la regola) e restorecon (per applicare la regola). Per
Ad esempio, se volessi condividere una directory, / mystuff, dovresti creare quella directory
con le autorizzazioni appropriate ed eseguire il seguente comando per renderlo disponibile per la lettura /
accesso in scrittura da Samba:

# semanage fcontext -a -t samba_share_t "/mystuff(/.*)?"


# restorecon -v / mystuff

Dopo che questi comandi sono stati eseguiti, la directory / mystuff, insieme a tutti i file e le directory
sotto quel punto, avere il contesto del file di samba_share_t. Spetta quindi a te assegnare
la proprietà Linux corretta e le autorizzazioni sui file per consentire l'accesso agli utenti scelti.
La sezione "Configurazione di Samba" fornisce un esempio di creazione di una condivisione e mostra come
per aggiungere autorizzazioni e proprietà a una directory condivisa utilizzando i comandi Linux standard.

Configurazione delle autorizzazioni host / utente di Samba


All'interno del file smb.conf stesso, è possibile consentire o limitare l'accesso all'intero server Samba
o a condivisioni specifiche in base agli host o all'utente che tenta di ottenere l'accesso. Puoi anche limitare
accesso al server Samba fornendo il servizio solo su particolari interfacce.

510

Pagina 551

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

Ad esempio, se una scheda di interfaccia di rete è collegata a Internet e un'altra


connesso alla rete locale, puoi dire a Samba di servire le richieste solo sulla rete locale-
interfaccia di lavoro. La sezione successiva descrive come configurare Samba, incluso come identificare
Specifica quali host, utenti o interfacce di rete possono accedere al tuo server Samba.

Configurazione di Samba
La maggior parte della configurazione di Samba viene eseguita nel file /etc/samba/smb.conf. Durante la configurazione
il tuo server Samba, puoi anche aggiungere informazioni sull'host al file lmhosts.

Per configurare smb.conf, puoi usare un editor di testo semplice. Tuttavia, Fedora ha una grafica
interfaccia per configurare Samba (system-config-samba). Passano le sezioni successive
come usare le interfacce grafiche per configurare Samba. Dopodiché, guardi il risultato-
ing file smb.conf.

Utilizzando system-config-samba
Sui sistemi Fedora, puoi installare il pacchetto system-config-samba per usare Samba
Finestra di configurazione del server per configurare Samba. Da quella finestra puoi configurare
impostazioni del server di base, aggiungere condivisioni e configurare account utente in modo che le persone possano accedervi
azioni. Se non hai già installato system-config-samba, digita quanto segue come
root nella riga di comando:

# yum install system-config-samba *

Con i pacchetti system-config-samba e system-config-samba-docs installati, tu


può avviarlo da Fedora dalla pagina Applicazioni facendo doppio clic sull'icona Samba. O
potresti semplicemente digitare quanto segue dalla shell:

# system-config-samba &

La finestra di configurazione del server Samba dovrebbe apparire sul desktop. Tu puoi ora 19
configura il tuo server Samba di base e inizia ad aggiungere directory condivise.

Scegliere le impostazioni del server Samba


Dalla finestra di configurazione del server Samba, è necessario prima impostare le impostazioni di base e
il tipo di autenticazione che stai utilizzando. Inizia selezionando Preferenze ➪ Impostazioni server.
Viene visualizzata la finestra a comparsa Impostazioni server, come mostrato nella Figura 19.1.

In questo esempio, il nome del gruppo di lavoro viene modificato in gruppo dati e vengono impostati i dati di vendita
come la descrizione. Quindi, seleziona la scheda Sicurezza. La modalità di autenticazione predefinita è Utente,
il che significa che i nomi utente Samba (Windows) sono mappati in account utente reali sul file
Sistema Linux. Nessun sistema esterno viene contattato per autenticare gli utenti.

511
Pagina 552

Parte IV: diventare un amministratore di server Linux

FIGURA 19.1

Scegli le impostazioni di base del server Samba.

FIGURA 19.2

Scegli le impostazioni di sicurezza del server Samba.

Le password crittografate vengono utilizzate per impostazione predefinita. Inoltre, per impostazione predefinita, non esiste un account ospite. Se
vorresti avere un account ospite non autenticato che possa accedere al tuo Samba
server, fai clic sulla casella che dice Nessun account ospite e scegli quale utente Linux è assegnato
all'utente ospite. Ad esempio, se hai assegnato Joe all'account ospite, l'account utente
joe dovrebbe avere accesso a una directory oa un file condivisi per consentire a un utente ospite di accedervi.
La Figura 19.2 mostra un esempio delle impostazioni di sicurezza.

Configurazione degli account utente di Samba


Se stai utilizzando il tipo di autenticazione Utente predefinito, come sono qui, puoi configurare l'utente
account per accedere al tuo sistema Fedora selezionando Preferenze ➪ Utenti Samba. All'inizio, lì
non sono elencati utenti Samba. Per aggiungere un utente Samba, selezionare Aggiungi utente dalla finestra Utenti Samba.

Dalla schermata Crea nuovo utente Samba che si apre, seleziona l'account utente Linux locale
(Nome utente UNIX) dalla casella a discesa. Puoi usare lo stesso nome o uno diverso

512

Pagina 553

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

per il nome utente di Windows. Quindi inserisci la password Samba per quell'utente e seleziona OK.
La Figura 19.3 mostra come creare un nuovo utente Samba chiamato chris che ha lo stesso
l'autorizzazione che l'utente Linux ha chris per accedere al sistema.

FIGURA 19.3

Aggiungi account utente al tuo server Samba.


Puoi configurare tutti gli utenti che desideri dai tuoi account utente Linux per concederli
accesso a file e directory tramite il server Samba. Con il sistema di base e il set utente
in posizione, puoi iniziare a creare directory condivise.

Creazione di una cartella condivisa di Samba


Prima di poter creare una cartella condivisa, quella cartella (directory) deve esistere e avere il file
autorizzazioni impostate. In questo esempio, la directory / var / salesdata è condivisa. Vuoi il file
i dati devono essere scrivibili dall'utente denominato chris ma visibili a chiunque sulla rete. Per
creare quella directory e impostare i permessi appropriati e i contesti di file SELinux, digitare il 19
seguendo come utente root:

# mkdir / var / salesdata


# chmod 775 / var / salesdata
# chown chris: chris / var / salesdata
# semanage fcontext -a -t samba_share_t / var / salesdata
# restorecon -v / var / salesdata

Quindi, dalla finestra Configurazione del server Samba, selezionare File ➪ Aggiungi condivisione. Il Crea
Viene visualizzata la finestra Samba Share. Inizia inserendo il nome della cartella (seleziona Scegli per sfogliare
per esso), un nome per rappresentare la condivisione e una descrizione. Quindi vuoi scegliere se
vuoi che qualcuno ci scriva e se vuoi che esista la condivisione
visibile a chiunque. La Figura 19.4 mostra un esempio di questa finestra.

513

Pagina 554

Parte IV: diventare un amministratore di server Linux

FIGURA 19.4

Scegli la cartella e il nome della nuova condivisione.

Dopo aver compilato le informazioni di base, seleziona la scheda Accesso. Qualsiasi utente Samba che hai
creato a questo punto appare nella scheda Accesso. Metti un segno di spunta accanto a qualsiasi utente tu
desidera consentire l'accesso a questa directory condivisa. Perché ho assegnato la proprietà a Chris
e lasciato i permessi di lettura / scrittura aperti a chris, l'utente chris può leggere e scrivere
a quella directory tramite Samba. La Figura 19.5 mostra un esempio delle impostazioni di accesso per
la quota.

FIGURA 19.5

Imposta l'accesso alla nuova condivisione.


Seleziona OK al termine della configurazione della condivisione. Successivamente si desidera verificare che la condivisione
è disponibile.

Controllo della condivisione Samba


Affinché le modifiche alla configurazione di Samba abbiano effetto, è necessario riavviare smb
servizio. Dopodiché, controlla che la condivisione Samba che hai creato sia disponibile e quella

514

Pagina 555

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

qualsiasi utente assegnato alla condivisione può accedervi. Per fare queste cose, digita quanto segue come
utente root da una shell sul server Samba:

# systemctl riavvia smb.service


# smbclient -L localhost
Immettere la password di root: < INVIO >
Accesso anonimo riuscito
Dominio = [DATAGROUP] OS = [Unix] Server = [Samba 4.1.15]
Nome condivisione Tipo Commento
--------- ---- -------
salesdata Dati sulle vendite del disco per l'anno in corso
IPC $ IPC IPC Service (Samba Server versione 4.1.15))
Accesso anonimo riuscito
Dominio = [DATAGROUP] OS = [Unix] Server = [Samba 4.1.15]
...

Qui puoi vedere il nome della condivisione (salesdata), il dominio impostato sul nome del gruppo di lavoro
DATAGROUP e la descrizione inserita in precedenza (dati di vendita per l'anno in corso). Il prossimo,
un modo rapido per testare l'accesso alla condivisione è utilizzare il comando smbclient. Puoi usare il file
nome host o indirizzo IP con smbclient per accedere alla condivisione. Perché sono sul posto
system in questo esempio, uso solo il nome localhost e l'utente che ho aggiunto (chris):

# smbclient -U chris // localhost / salesdata


Inserisci la password di chris: ********
Dominio = [DATAGROUP] OS = [Unix] Server = [Samba 4.1.15]
smb: \> lcd / ecc
smb: \> put hosts
mettere host di file come \ hosts (43,5 kb / s) (media 43,5 kb / s)
smb: \> ls
. D 0 Dom 23 ottobre 09:52:51 2014
.. D 0 Dom 23 ottobre 09:11:50 2014
host A 89 Sun Oct 23 09:52:51 2014
39941 blocchi di dimensione 524288. 28197 blocchi disponibili
smb: \> esci
19
Una condivisione Samba è nella forma // host / share o \\ host \ share . Tuttavia, quando identifichi un file
Condivisione Samba da una shell Linux in quest'ultimo caso, i backslash devono essere sottoposti a escape. Così come
un argomento, il primo esempio della condivisione dovrebbe apparire come \\\\ localhost \\
salesdata. Quindi la prima forma è più facile da usare.

Per sfuggire a un carattere digitato dalla shell si inserisce una barra rovesciata (\) davanti a quel carattere. Racconta il file
shell per usare letteralmente il carattere che segue il backslash, invece di dare al carattere un significato speciale alla shell.
(I caratteri * e? Sono esempi di caratteri con un significato speciale.) Perché la barra rovesciata stessa ha speciale
significato per la shell, se vuoi usare letteralmente un backslash, devi farlo precedere da un backslash. Ecco perché, quando
se vuoi digitare un indirizzo Samba che include due backslash, devi effettivamente inserire quattro backslash.

515
Pagina 556

Parte IV: diventare un amministratore di server Linux

Quando richiesto, inserisci la password Samba per quell'utente (potrebbe essere diversa dal file
Password dell'utente Linux). Vedrai il prompt smb: \> dopo.

A questo punto, hai una sessione aperta sull'host Samba simile a una sessione lftp
per attraversare un server FTP. Il comando lcd / etc rende / etc la directory corrente
sul sistema locale. Il comando put hosts carica il file hosts dal sistema locale
nella directory condivisa. L'inserimento di ls mostra che il file esiste sul server. Il quit
il comando termina la sessione.

Invece di configurare il server, gli utenti e le condivisioni con system-config-samba


, in alcuni sistemi Linux è possibile utilizzare l'interfaccia basata su web samba-swat o
modificare direttamente il file smb.conf. La sezione successiva mostra come utilizzare smb.conf
file direttamente per configurare Samba.

Configurazione di Samba nel file smb.conf


All'interno del file /etc/samba/smb.conf ci sono le impostazioni per configurare il tuo server Samba,
definizione di stampanti condivise, configurazione della modalità di autenticazione e creazione di condivisioni
directory. Il file è costituito dalle seguenti sezioni predefinite:

■ [globale]: le impostazioni che si applicano al server Samba nel suo insieme vengono inserite in questo file
sezione. Qui è dove imposti la descrizione del server, il suo gruppo di lavoro (dominio), il file
posizione dei file di registro, tipo di protezione predefinito e altre impostazioni.
■ [homes]: questa sezione determina se gli utenti con account su Samba
il server può vedere le proprie directory home (sfogliabili) o scrivervi (scrivibili).
■ [stampanti]: in questa sezione, le impostazioni dicono a Samba se rendere disponibili le stampanti
tramite Samba configurati per la stampa Linux (CUPS).

All'interno del file smb.conf, molte sezioni sono commentate dalle righe che iniziano con semi-
due punti (;). La rimozione del punto e virgola consente di impostare rapidamente diversi tipi di condivisione
informazione. Le altre informazioni illustrate nel file smb.conf nelle sezioni successive
riflette la stessa configurazione di Samba che ho aggiunto durante la procedura system-config-samba.

Tieni presente che non devi utilizzare alcuna interfaccia grafica durante la configurazione
Samba. Puoi semplicemente modificare direttamente il file smb.conf, utilizzando le tecniche descritte in
questa sezione. Modificare direttamente smb.conf è il modo più comune per configurare Samba su un file
Server Red Hat Enterprise Linux che non dispone di un'interfaccia desktop grafica installata.

Configurazione della sezione [globale]


Se guardi la sezione [global] del file smb.conf, puoi vedere che alcune impostazioni
sono stati modificati e altri sono commentati, pronti per essere modificati come preferisci:

[globale]
gruppo di lavoro = gruppo di dati
stringa del server = Dati di vendita

516

Pagina 557

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

; nome netbios = MYSERVER


; interfacce = lo eth0 192.168.12.2/24 192.168.13.2/24
; gli host consentono = 127. 192.168.12. 192.168.13.
file di registro = /var/log/samba/log.%m
dimensione massima del registro = 50
sicurezza = utente
opzioni tazze = crudo

Il gruppo di lavoro (utilizzato anche come nome di dominio) è impostato su datagroup in questo esempio.
Quando un client comunica con il server Samba, questo nome dice al client quale
gruppo di lavoro in cui si trova il server Samba. Qualsiasi valore impostato per la stringa del server viene utilizzato successivamente
inserire i valori di commento presentati accanto alle righe IPC e nella casella di commento della stampante quando
tali informazioni vengono presentate alle applicazioni client.
Per impostazione predefinita, il nome host DNS del tuo server (digita hostname per vedere di cosa si tratta) viene utilizzato come tuo
Anche il nome NetBIOS del server Samba. È possibile sovrascriverlo e impostare un NetBIOS separato
name rimuovendo il commento dalla riga del nome di netbios e aggiungendo il nome del server desiderato. Per
esempio: netbios name = myownhost. localhost viene utilizzato come nome NetBIOS se esso
non è stato impostato diversamente.

Quando viene impostato il valore del file di registro, vengono scritti i registri associati all'attività di Samba
/var/log/samba/log.%m, dove% m rappresenta il nome o l'indirizzo IP del sistema
contattando il server Samba. Ciò semplifica il debug dei problemi associati a
richieste da un particolare sistema perché a ogni client viene assegnato il proprio file di registro.

La dimensione massima del registro limita la dimensione di ogni file di registro a un numero prestabilito di kilobyte (50 KB per
predefinito). Dopo che la dimensione è stata superata, Samba copia il file in un file di registro con lo stesso nome
con un .old aggiunto ad esso. Il tipo di sicurezza predefinito è impostato su utente (nomi utente Samba
e password) e le opzioni cups ti consentono di passare tutte le opzioni che ti piacciono alla stampa di CUPS-
ers serviti dal tuo server Samba. Per impostazione predefinita, è impostato solo raw, che consente i client Windows
utilizzare i propri driver di stampa. Le stampanti sul tuo server Samba stampano le pagine che sono
presentato in forma grezza.

Diverse opzioni sono commentate che puoi considerare di impostare. Impostazione di netbios 19
nome fa in modo che il nome impostato venga utilizzato come nome host per il servizio Samba. Se
questo non è impostato, la parte host del nome di dominio completo del sistema viene utilizzata come
Nome host.

Se desideri limitare l'accesso al server Samba in modo che risponda solo su determinate interfacce,
puoi rimuovere il commento dalla riga delle interfacce e aggiungere l'indirizzo IP o il nome (lo,
eth0, eth1 e così via) delle interfacce di rete desiderate.

Puoi limitare l'accesso al server Samba anche a host specifici. Rimuovi il commento dagli host
consentire la riga (rimuovere il punto e virgola) e inserire gli indirizzi IP degli host che si desidera
permettere. Per inserire un intervallo di indirizzi, terminare semplicemente la parte di sottorete dell'indirizzo,
seguito da un punto. Ad esempio, 127. è associato agli indirizzi IP che puntano al locale
ospite. Il 192.168.12. la voce corrisponde a tutti gli indirizzi IP da 192.168.12.1 a 192.168.12.254.

517

Pagina 558

Parte IV: diventare un amministratore di server Linux

Configurazione della sezione [homes]


La sezione [homes] è configurata, per impostazione predefinita, per consentire a qualsiasi account utente Samba di essere in grado
per accedere alla propria directory home tramite il server Samba. Il navigabile = nessuna impostazione
impedisce al server Samba di visualizzare la disponibilità delle directory home condivise.
Gli utenti che possono fornire i propri nomi utente e password Samba possono leggere e scrivere
le proprie directory home (scrivibile = sì). Ecco qual è la voce predefinita delle case
sembra:

[le case]
comment = Directory home
sfogliabile = no
scrivibile = sì
; utenti validi =% S
; utenti validi = MYDOMAIN \% S

Si noti che due esempi di voci di utenti validi vengono commentati. Con questo valore no
impostato (come è di default), qualsiasi utente valido può accedere a Samba. Impostarlo su% S sostituisce il file
nome del servizio corrente, che consente a qualsiasi utente valido del servizio. Puoi anche limitare l'utente
accesso indicando che solo un particolare nome del gruppo di lavoro (dominio) può essere utilizzato per la corrispondenza
utenti che richiedono questo servizio.

Se, dopo aver avviato il servizio smb, non riesci ad accedere utilizzando un account utente valido, puoi farlo
è necessario modificare alcune funzionalità di sicurezza del sistema. Sui sistemi Fedora e RHEL,
in particolare, le funzionalità di SELinux devono essere modificate per consentire agli utenti di accedere alla propria home
directory se sei in modalità SELinux Enforcing.

Ad esempio, se hai provato a usare smbclient per accedere alla tua home directory, il login
avrebbe avuto successo, ma quando hai provato a elencare il contenuto della directory home, potresti
vedere il seguente messaggio:

Elenco NT_STATUS_ACCESS_DENIED \ *

Per dire a SELinux di consentire agli utenti di Samba di accedere alle loro directory home come condivisioni di Samba, girare
sul booleano samba_enable_home_dirs digitando quanto segue come root da una shell:

# setsebool -P samba_enable_home_dirs on

Il comando setsebool attiva la capacità di Samba di condividere le directory home


(che è disattivato per impostazione predefinita). Il modulo per utilizzare il comando smbclient per controllare l'accesso a
la directory home dell'utente, sempre per l'utente chris, sarebbe la seguente (sostituendo
l'indirizzo IP con il nome o l'indirizzo del tuo server Samba):

$ smbclient -U chris //192.168.0.119/chris


Inserisci la password di chris:
Dominio = [DATAGROUP] OS = [Unix] Server = [Samba 4.1.15]
smb: \> ls file.txt
file.txt 149946368 domenica 7 dicembre 09:28:53 2014
39941 blocchi di dimensione 524288. 28191 blocchi disponibili

518

Pagina 559

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

Il punto principale da ricordare è che, anche se la condivisione non è sfogliabile, puoi farlo
richiederlo fornendo il nome host o l'indirizzo IP del server Samba, seguito dal nome dell'utente
(qui, chris), per accedere alla directory home dell'utente.

Configurazione della sezione [stampanti]


Qualsiasi stampante configurata per la stampa CUPS sul tuo sistema Linux viene automaticamente
condiviso con altri su Samba, in base alla sezione [stampanti] aggiunta di default.
Le opzioni globali di cups = impostazione raw rendono tutte le stampanti stampanti raw (il che significa che
il client Windows deve fornire il driver della stampante appropriato per ciascuna stampante condivisa).

Ecco come appare la sezione delle stampanti predefinite nel file smb.conf:

[stampanti]
comment = Tutte le stampanti
percorso = / var / spool / samba
sfogliabile = no
; ospite ok = no
; scrivibile = No
stampabile = sì

La riga stampabile = yes fa sì che tutte le stampanti CUPS sul sistema locale siano
condiviso da Samba. Le stampanti sono scrivibili e consentono la stampa guest per impostazione predefinita. Puoi
rimuovere il commento dall'ospite ok = nessuna riga e scrivibile = Nessuna riga, rispettivamente, a
modificare queste impostazioni.

Per vedere che quelle stampanti sono disponibili, è possibile eseguire il comando smbclient -L da
un sistema Linux, come mostrato in precedenza. Su un sistema Windows, puoi selezionare Rete dal file
Finestra del file manager di Windows Explorer e seleziona l'icona che rappresenta il tuo server Samba.
Tutte le stampanti e le cartelle condivise vengono visualizzate in quella finestra. (Vedere la sezione "Accesso a Samba
Condivisioni "più avanti in questo capitolo per i dettagli sulla visualizzazione e l'utilizzo di stampanti condivise).

Creazione di directory condivise personalizzate


Con la configurazione di base del tuo server Samba in atto, puoi iniziare a creare personalizzato 19
sezioni per condividere stampanti e cartelle specifiche e proteggerle come preferisci. Per la prima
esempio, ecco cosa ha creato la condivisione nella dimostrazione system-config-samba
all'inizio di questo capitolo (chiamato salesdata) appare come nel file smb.conf:

[dati di vendita]
commento = Dati di vendita per l'anno in corso
percorso = / var / salesdata
sola lettura = no
; sfogliabile = sì
utenti validi = chris

Prima di creare questa condivisione, è stata creata la directory / var / salesdata, con chris
assegnato come utente e gruppo e la directory è stata impostata per essere leggibile e scrivibile da
Chris. (Deve essere impostato anche il contesto del file SELinux, se SELinux è in modalità Enforcing.)

519

Pagina 560
Parte IV: diventare un amministratore di server Linux

Il nome utente di Samba chris deve essere presentato insieme alla password associata a
accedere alla condivisione. Dopo che chris è connesso alla condivisione, chris ha accesso in lettura e scrittura
ad esso (sola lettura = no).

Ora che hai visto le impostazioni predefinite per Samba e un esempio di semplice condivisione
directory (cartella), leggere le prossime sezioni per vedere come configurare ulteriormente le condivisioni. Nel
in particolare, gli esempi dimostrano come rendere disponibili le condivisioni a determinati utenti,
host e interfacce di rete.

Limitazione dell'accesso a Samba tramite l'interfaccia di rete


Per limitare l'accesso a tutte le tue condivisioni, puoi configurare l'impostazione delle interfacce globali nel file smb.
conf file. Samba è progettato più per la condivisione di file locali che per la condivisione su un'ampia area
reti. Se il tuo computer ha un'interfaccia di rete connessa a una rete locale e una
connesso a Internet, considerare di consentire l'accesso solo alla rete locale.

Per impostare le interfacce su cui Samba ascolta, rimuovere il commento dalla riga interfaces nel file
sezione [global] del file smb.conf. Quindi aggiungere i nomi dell'interfaccia o gli intervalli di indirizzi IP
di quei computer a cui vuoi consentire l'accesso al tuo computer. Ecco un esempio:

interfacce = lo 192.168.22.15/24

Questa voce delle interfacce consente l'accesso al servizio Samba a tutti gli utenti sul sistema locale
(lo). Consente inoltre l'accesso a qualsiasi sistema sulla rete 192.168.22. Vedi smb.conf
la descrizione della pagina man dei diversi modi di identificare host e interfacce di rete.

Limitazione dell'accesso a Samba da parte dell'host


L'accesso host al server Samba può essere impostato per l'intero servizio o per singole condivisioni. Il
la sintassi utilizzata è simile a quella dei file hosts.allow e hosts.deny nel wrap TCP-
funzione pers. Qui, tuttavia, gli host consentono e gli host negano le voci vengono aggiunti direttamente
il file smb.conf.

Di seguito sono riportati alcuni esempi di host che consentono e host negano le voci:

gli host consentono = 192.168.22. TRANNE 192.168.22.99


gli host consentono = 192.168.5.0/255.255.255.0
gli host consentono = .example.com market.example.net
host deny = evil.example.org 192.168.99.

Queste voci possono essere inserite nella sezione [globale] o in qualsiasi sezione di directory condivisa. Il
il primo esempio consente l'accesso a qualsiasi host nel 192.168.22. rete, ad eccezione di 192.168.22.99,
che è negato. Notare che è necessario un punto alla fine del numero di rete. Il
L'esempio 192.168.5.0/255.255.255.0 utilizza la notazione netmask per identificare 192.168.5 come set di
indirizzi consentiti.

Nella terza riga del codice di esempio, è consentito qualsiasi host dalla rete .example.com, come
è il singolo host market.example.net. L'esempio di negazione degli host mostra che puoi
utilizzare lo stesso modulo per identificare nomi e indirizzi IP per impedire l'accesso da determinati host.

520

Pagina 561

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

Limitazione dell'accesso a Samba da parte dell'utente


A determinati utenti e gruppi di Samba può essere consentito l'accesso a condivisioni Samba specifiche
fying quegli utenti e gruppi all'interno di una condivisione nel file smb.conf. A parte gli utenti ospiti,
che puoi o meno consentire, l'autenticazione utente predefinita per Samba richiede di farlo
aggiungere un account utente Samba (Windows) che mappa in un account utente Linux locale.

Per consentire a un utente di accedere al server Samba, è necessario creare una password per l'utente. Qui
è un esempio di come aggiungere una password Samba per l'utente jim:

# smbpasswd -a jim
Nuova password SMB: *******
Digita nuovamente la nuova password SMB: *******

Dopo aver eseguito il comando smbpasswd, jim può utilizzare quel nome utente e la password per
accedere al server Samba. Il file /var/lib/samba/private/passdb.tdb contiene l'estensione
password appena inserita per jim. Dopodiché, l'utente jim può cambiare la password semplicemente
digitando smbpasswd quando è loggato. L'utente root può cambiare la password rieseguendo
ning il comando mostrato nell'esempio, ma rilasciando l'opzione -a.
Se si desidera consentire a Jim l'accesso a una condivisione, è possibile aggiungere una riga di utenti valida a quella
blocco condiviso nel file smb.conf. Ad esempio, per fornire l'accesso sia a chris che a jim
una condivisione, potresti aggiungere la seguente riga:

utenti validi = jim, chris

Se l'opzione di sola lettura è impostata su no per la condivisione, entrambi gli utenti potrebbero potenzialmente scrivere file
alla condivisione (a seconda delle autorizzazioni del file). Se la sola lettura è impostata su sì, potresti ancora
consentire l'accesso a jim e chris per scrivere file aggiungendo una riga dell'elenco di scrittura come segue:

lista di scrittura = jim, chris

L'elenco di scrittura può contenere gruppi (ovvero, gruppi Linux contenuti nel file / etc / group)
per consentire l'autorizzazione di scrittura a qualsiasi utente Linux che appartiene a un particolare gruppo Linux. voi
può aggiungere il permesso di scrittura per un gruppo inserendo un carattere più (+) davanti a un nome. Per
esempio, quanto segue aggiunge l'accesso in scrittura per il gruppo di mercato alla quota con cui 19
questa linea è associata:

lista di scrittura = jim, chris, + market

Esistono molti modi per modificare ed estendere le funzionalità delle risorse Samba condivise.
Per ulteriori informazioni sulla configurazione di Samba, assicurati di esaminare il file smb.conf stesso
(che include molti commenti utili) e la pagina man smb.conf.

Accesso alle condivisioni Samba


Dopo aver creato alcune directory condivise in Samba, molti strumenti client sono disponibili in
sia Linux che Windows per accedere a tali condivisioni. Gli strumenti della riga di comando in Linux includono

521

Pagina 562

Parte IV: diventare un amministratore di server Linux

il comando smbclient, dimostrato in precedenza in questo capitolo. Per mezzi grafici


di accesso alle condivisioni, è possibile utilizzare i file manager disponibili sia in Windows (Windows
Explorer) e Linux (Nautilus, con il desktop GNOME).

Accesso alle condivisioni Samba in Linux


L'apertura di un file manager in Linux può fornire l'accesso alle directory condivise da
Linux (Samba) e Windows (SMB). Il modo in cui accedi al file manager è diverso a seconda
ent desktop Linux. In GNOME 3, puoi fare clic sull'icona File. In altri desktop, apri il file
Cartella Home.

Con il window manager Nautilus visualizzato, cerca una selezione Connect to Server nel file
riquadro sinistro o (in alcune versioni di Nautilus) selezionare File ➪ Connetti al server. In Fedora 21, il
La finestra Connetti al server dovrebbe apparire come mostrato nella Figura 19.6.

Inserisci l'indirizzo di una condivisione Samba a cui desideri accedere e fai clic su Connetti. Nell'esempio,
è stata scelta la quota di dati di vendita. Se richiesto, viene richiesto un nome utente, un dominio,
e password. Immettere tali informazioni e fare clic su Connetti.

FIGURA 19.6

Identifica una condivisione Samba dalla finestra di Nautilus Connect to Server.

Se l'utente e la password vengono accettati, dovresti vedere il contenuto della directory remota.
Se si dispone dell'accesso in scrittura alla condivisione, è possibile aprire un'altra finestra di Nautilus e trascinare e
rilascia i file tra i due sistemi. La Figura 19.7 mostra un esempio della finestra Nautilus
dopo essermi connesso alla condivisione dei dati di vendita.
522

Pagina 563

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

FIGURA 19.7

Apertura delle condivisioni Samba da Connect to Server in Nautilus.

Poiché una directory condivisa di Samba può essere visualizzata come un file system remoto, è possibile utilizzare
mon Strumenti Linux per connettere una condivisione Samba (temporaneamente o permanentemente) al tuo sistema Linux
tem. Utilizzando il comando mount standard, è possibile montare una condivisione Samba remota come CIFS
filesystem in Linux. Questo esempio monta la condivisione dei dati di vendita dall'host all'indirizzo IP
192.168.0.119 nella directory locale / mnt / sales:

# mkdir / mnt / sales


# mount -t cifs -o utente = chris, password = mypass \
//192.168.0.119/salesdata / mnt / sales
Password: *******
# ls / mnt / sales
servizi host

Quando richiesto, inserisci la password Samba per chris. Dato che l'utente chris in questo file
esempio ha il permesso di lettura-scrittura per la directory condivisa, gli utenti sul tuo sistema dovrebbero essere
19
in grado di leggere e scrivere nella directory montata. Indipendentemente da chi salva i file sul file shared
directory, sul server quei file sono di proprietà dell'utente chris. Questo supporto dura fino al
il sistema viene riavviato o si esegue il comando umount sulla directory. Se vuoi la condivisione
da montare in modo permanente (ovvero ogni volta che il sistema si avvia) nella stessa posizione,
puoi fare qualche configurazione aggiuntiva. Innanzitutto, apri il file / etc / fstab e aggiungi un file
voce simile alla seguente:

//192.168.0.119/salesdata / mnt / sales cifs credentials = / root /


cif.txt 0 0

523

Pagina 564

Parte IV: diventare un amministratore di server Linux


Successivamente, crea un file delle credenziali (in questo esempio, /root/cif.txt). In quel file, metti il ​file
nome dell'utente e password dell'utente che si desidera presentare quando il sistema tenta di farlo
montare il filesystem. Ecco un esempio del contenuto di quel file:

utente = chris
pass = mypass

Prima di riavviare per verificare che la voce sia corretta, prova a montarla dal comando
linea. Un comando mount -a prova a montare qualsiasi filesystem elencato nel file / etc / fstab
che non è già montato. Il comando df mostra le informazioni sullo spazio su disco per il file
directory montata. Per esempio:

# mount -a
# df -h / mnt / sales
Filesystem Dimensioni utilizzate Avail Ues% montato su
//192.168.0.119/salesdata 20G 5.7G 14G 30% / mnt / sales

Ora dovresti essere in grado di utilizzare la directory Samba condivisa come fai con qualsiasi directory sul file
sistema locale.

Accesso alle condivisioni Samba in Windows


Come con Linux, in questo caso puoi accedere alle condivisioni Samba dalla finestra del file manager
Windows Explorer. Per fare ciò, apri qualsiasi cartella in Windows e seleziona Rete da sinistra
pannello. Sullo schermo dovrebbe apparire un'icona che rappresenta il server Samba. Fare clic su quell'icona,
e immettere una password se richiesta. Dovresti vedere tutte le stampanti e le cartelle condivise
da quel server (vedere la Figura 19.8).

FIGURA 19.8

Accesso alle condivisioni Samba da Windows.

524

Pagina 565

Capitolo 19: Configurazione di un server Windows File Sharing (Samba)

Nella Figura 19.8, puoi vedere che ci sono due cartelle condivise (directory): chris e
salesdata. Ci sono anche diverse stampanti condivise. Per utilizzare le cartelle, fare doppio clic su di esse
e inserisci le informazioni di autenticazione richieste. Perché le stampanti sono configurate per utilizzare raw
driver per impostazione predefinita, è necessario ottenere i driver di Windows per utilizzare una qualsiasi delle stampanti Samba.

Usare Samba nell'azienda


Sebbene oltre lo scopo di questo libro, la condivisione di file e stampanti di Windows tramite Samba
server è un'applicazione molto popolare nelle grandi imprese. Nonostante il fatto che Linux abbia
ha fatto enormi passi avanti nel mercato dei server di qualità aziendale, i sistemi Microsoft Windows
sono ancora i sistemi predominanti utilizzati sul desktop.

Le caratteristiche principali necessarie per integrare i server Samba in una grande impresa con molti
I desktop Microsoft Windows sono correlati all'autenticazione. La maggior parte delle grandi aziende utilizza
Server Microsoft Active Directory Services (ADS) per l'autenticazione. Sul lato Linux,
ciò significa configurare Kerberos sul sistema Linux e utilizzare ADS (invece dell'utente) per
il tipo di sicurezza nel file smb.conf.

Il vantaggio dell'autenticazione centrale è che gli utenti devono ricordare solo un set di file
credenziali in tutta l'azienda e gli amministratori di sistema devono gestirne meno
account utente e password. Se sei interessato ad approfondire questo argomento, I.
ti consiglio di leggere la pagina Samba e Active Directory sul wiki su Samba.org:
http://wiki.samba.org/index.php/Samba_&_Active_Directory

Sommario
A causa della popolarità dei desktop Windows, i server Samba sono diventati popolari per
condivisione di file e stampanti tra i sistemi Windows e Linux. Samba fornisce un modo per 19
interoperare con i sistemi Windows implementando Server Message Block (SMB) o
Protocollo Common Internet File (CIFS) per la condivisione di risorse su una rete.

Questo capitolo ha illustrato il processo di installazione, avvio, protezione, configurazione e


accedere ai server Samba su un sistema Linux. Possono essere sia strumenti grafici che da riga di comando
utilizzato sia per configurare un server Samba che per accedervi da sistemi Linux e Windows.

Il capitolo successivo descrive la funzionalità NFS (Network File System). NFS è il nativo
Funzionalità Linux per la condivisione e il montaggio di file system su reti con altri Linux
e sistemi UNIX.

525

Pagina 566

Parte IV: diventare un amministratore di server Linux

Esercizi
Gli esercizi in questa sezione descrivono le attività relative alla configurazione di un server Samba in Linux
e l'accesso a quel server utilizzando un client Samba. Come al solito, ci sono spesso diversi modi per farlo
eseguire alcune delle attività qui. Quindi non preoccuparti se non esegui gli esercizi
esattamente allo stesso modo mostrato nelle risposte, purché si ottengano gli stessi risultati. Vedere
Appendice B per soluzioni suggerite.

Non fare questi esercizi su un sistema Linux che esegue un server Samba perché lo faranno
quasi certamente interferire con quel server. Questi esercizi sono stati testati su un sistema Fedora.
Alcuni passaggi potrebbero essere leggermente diversi su un altro sistema Linux.

1. Installa i pacchetti samba e samba-client.

2. Avviare e abilitare i servizi smb e nmb.

3. Impostare il gruppo di lavoro del server Samba su TESTGROUP, il nome netbios su MYTEST,
e la stringa del server a Samba Test System.

4. Aggiungere un utente Linux denominato phil al proprio sistema e aggiungere una password Linux e Samba
password per phil.

5. Impostare la sezione [homes] in modo che le directory home siano navigabili (sì) e
scrivibile (sì) e phil è l'unico utente valido.

6. Impostare qualsiasi booleano SELinux necessario per fare in modo che phil possa accedere alla sua casa
directory tramite un client Samba.

7. Dal sistema locale, utilizzare il comando smbclient per elencare le case condivise
è disponibile.

8. Da una finestra Nautilus (file manager) sul sistema locale, connettersi alle case
condividi per l'utente phil sul server Samba locale in un modo che ti consenta di trascinare
e rilascia i file in quella cartella.

9. Apri il firewall in modo che chiunque abbia accesso al server possa accedere a Samba
servizio (demoni smbd e nmbd).
10. Da un altro sistema sulla tua rete (Windows o Linux), prova ad aprire le case
condividi di nuovo come ph il utente e assicurati di nuovo di poter trascinare e rilasciare i file su it.
526

Pagina 567

CAPITOLO

20
Configurazione di un file server NFS
IN QUESTO CAPITOLO
Ottenere il software del server NFS

Abilitazione e avvio di NFS

Esportazione di directory NFS

Impostazione delle funzionalità di sicurezza per NFS

Montaggio di directory condivise NFS remote

I I sistemi operativi Microsoft, i sistemi Linux collegano in modo invisibile file system da più hard
dischi, floppy disk, CD-ROM e altri dispositivi locali per formare un singolo filesystem Linux.
nstead di rappresentare dispositivi di memorizzazione come lettere di unità (A, B, C, e così via), in quanto sono in
La funzione Network File System (NFS) consente di estendere il file system Linux per la connessione
filesystem su altri computer nella struttura della directory locale.

Un file server NFS fornisce un modo semplice per condividere grandi quantità di dati tra gli utenti e
computer in un'organizzazione. Un amministratore di un sistema Linux configurato per la condivisione
i suoi filesystem che utilizzano NFS devono eseguire le seguenti attività per configurare NFS:

1. Configurare la rete . NFS viene tipicamente utilizzato su LAN private rispetto alle reti pubbliche,
come Internet.
2. Avviare il servizio NFS . Diversi daemon di servizio devono essere avviati ed eseguiti per avere un file
servizio NFS operativo. In Fedora, puoi avviare il servizio nfs-server; in Red Hat
Enterprise Linux, avvia il servizio nfs.

3. Scegli cosa condividere dal server . Decidi quali filesystem sul tuo server Linux NFS
da mettere a disposizione di altri computer. Puoi scegliere qualsiasi punto nel filesystem e fare
tutti i file e le directory sotto quel punto sono accessibili ad altri computer.
4. Configurare la sicurezza sul server . È possibile utilizzare diverse funzionalità di protezione da applicare
il livello di sicurezza con cui ti senti a tuo agio. La sicurezza a livello di montaggio ti consente
per limitare i computer che possono montare una risorsa e, per quelli autorizzati a montarla,

527

Pagina 568

Parte IV: diventare un amministratore di server Linux

consente di specificare se può essere montato in lettura / scrittura o in sola lettura. Nel
NFS, la sicurezza a livello utente viene implementata mappando gli utenti dal sistema client
messaggi agli utenti sul server NFS (basato su UID e non nome utente) in modo che possano farlo
fare affidamento su autorizzazioni Linux standard di lettura / scrittura / esecuzione, proprietà dei file e gruppo
autorizzazioni per accedere e proteggere i file.
5. Montare il filesystem sul client . Ogni computer client a cui è consentito l'accesso
al filesystem condiviso NFS del server può montarlo ovunque il client lo desideri.
Ad esempio, puoi montare un filesystem da un computer chiamato maple su
/ mnt / maple nel tuo filesystem locale. Dopo che è stato montato, è possibile visualizzare
il contenuto di quella directory digitando ls / mnt / maple. Quindi puoi usare il file
comando cd sotto il punto di montaggio / mnt / maple per vedere i file e le directory
contiene.
La Figura 20.1 illustra un file server Linux che utilizza NFS per condividere (esportare) un filesystem e un file cli-
ent computer che monta il filesystem per renderlo disponibile ai suoi utenti locali.

FIGURA 20.1

NFS può rendere disponibili i filesystem selezionati ad altri computer.

/ etc / export file: # mount -t nfs oak: / apps / bin / oak / apps
/ apps / bin pins (rw) maple (rw) abete rosso (rw)

quercia pino

/ /

app / quercia/

bidone/ app /

file1 file2 file3

In questo esempio, un computer denominato oak rende disponibile ai client la propria directory / apps / bin
sulla rete (pino, acero e abete rosso) aggiungendo una voce al file / etc / export.
Il computer client (pine) vede che la risorsa è disponibile e monta la risorsa su di essa
file system locale nel punto di montaggio / oak / apps, dopodiché qualsiasi file, directory o sottodirectory
le directory di / apps / bin su oak sono disponibili per gli utenti su pine (con le autorizzazioni appropriate).

528

Pagina 569

Capitolo 20: Configurazione di un file server NFS

Sebbene sia spesso utilizzato come file server (o altro tipo di server), Linux è un file
sistema operativo generico, quindi qualsiasi sistema Linux può condividere file system (esportazione)
come server o utilizzare i filesystem di un altro computer (mount) come client.

Un filesystem è solitamente una struttura di file e directory che esiste su un singolo dispositivo (come una partizione del disco rigido
o CD-ROM). Il termine filesystem Linux si riferisce all'intera struttura di directory (che può includere filesystem da
diverse partizioni del disco, NFS o una varietà di risorse di rete), a partire da root (/) su un singolo computer.
Una directory condivisa in NFS può rappresentare tutto o parte del filesystem di un computer, che può essere allegato (dal file
directory condivisa lungo l'albero delle directory) al filesystem di un altro computer.

Installazione di un server NFS


Per eseguire un server NFS, è necessario un set di moduli del kernel (forniti con il kernel
stesso) più alcuni strumenti a livello utente per configurare il servizio, eseguire processi daemon ed eseguire query
il servizio in vari modi. Per Fedora e RHEL, i componenti di cui hai bisogno non lo sono
già nel kernel può essere aggiunto installando il pacchetto nfs-utils:

# yum installa nfs-utils

Oltre ad alcuni documenti nella directory / usr / share / doc / nfs-utils *, la maggior parte dei file
la documentazione nel pacchetto nfs-utils include le pagine man per i suoi vari componenti.
Per visualizzare l'elenco della documentazione, digitare quanto segue:

# rpm -qd nfs-utils | Di meno


Ci sono
altri) e ilstrumenti
lato cliente (per
pagine man sia perlocale
il montaggio il latodiserver NFS (perNFS
una directory condividere una configurare
remota). Per directory con
un file
server, puoi fare riferimento alla pagina man delle esportazioni (per impostare il file / etc / export da condividere
le tue directory). La pagina man del comando exportfs descrive come condividere e
visualizzare l'elenco delle directory che condividi dal file / etc / export. La pagina man di nfsd
descrive le opzioni che puoi passare al demone del server rpc.nfsd, che ti permette di farlo
cose come eseguire il server in modalità di debug.

Le pagine man sul lato client includono la pagina man mount.nfs (per vedere quali opzioni di mount
è possibile utilizzarlo durante il montaggio di directory NFS remote sul sistema locale). C'è anche
una pagina man nfsmount.conf, che descrive come usare /etc/nfsmount.conf
file per configurare il comportamento del sistema quando si montano risorse remote in locale. Il
La pagina man di showmount descrive come utilizzare il comando showmount per vedere cosa è condiviso
le directory sono disponibili dai server NFS. 20

529

Pagina 570

Parte IV: diventare un amministratore di server Linux

Per saperne di più sul pacchetto nfs-utils, puoi eseguire i seguenti comandi a
visualizzare rispettivamente le informazioni sul pacchetto, sui file di configurazione e sui comandi:

# rpm -qi nfs-utils


# rpm -qc nfs-utils
# rpm -ql nfs-utils | grep bin

Avvio del servizio NFS


L'avvio del server NFS implica l'avvio di diversi daemon di servizio. Il servizio viene avviato
in modi diversi per diverse distribuzioni Linux. Il servizio NFS di base in Fedora e
RHEL 7 si chiama nfs-server. Per avviare quel servizio, abilitalo (in modo che venga avviato ogni volta che il tuo
avvio del sistema) e controllare lo stato eseguendo i seguenti tre comandi:

# systemctl avvia nfs-server.service


# systemctl abilita nfs-server.service
# systemctl stato nfs-server.service
nfs-server.service - Server NFS
Loaded: caricato (/lib/systemd/system/nfs-server.service; abilitato)
Attivo: attivo (uscito) da Mon 2014-9-01 15:15:11 EDT; 24s
fa
PID principale: 7767 (codice = uscito, stato = 0 / SUCCESS)
CGroup: /system.slice/nfs-server.service

Puoi vedere dallo stato che il servizio nfs-server è abilitato e attivo. Il NFS
service richiede anche che il servizio RPC sia in esecuzione (rpcbind). Il servizio nfs-server
avvia automaticamente il servizio rpcbind, se non è già in esecuzione.

In Red Hat Enterprise Linux 6, sono necessari i comandi service e chkconfig per controllare,
avviare e abilitare il servizio NFS (nfs). I seguenti comandi mostrano che il servizio nfs no
attualmente in esecuzione e disabilitato:

# stato del servizio nfs


rpc.svcgssd viene arrestato
rpc.mountd viene arrestato
nfsd viene interrotto
# chkconfig --list nfs
nfs 0: off 1: off 2: off 3: off 4: off 5: off 6: off

Come accennato in precedenza, il servizio rpcbind deve essere in esecuzione affinché NFS funzioni. Potresti usare
i seguenti comandi per avviare e abilitare permanentemente sia rpcbind che
servizi nfs.

530
Pagina 571

Capitolo 20: Configurazione di un file server NFS

# avvio del servizio rcpbind


Avvio di rpcbind: [ OK ]
# avvio del servizio nfs
Avvio dei servizi NFS: [ OK ]
Avvio delle quote NFS: [ OK ]
Avvio del demone NFS: [ OK ]
Avvio del montaggio NFS: [ OK ]
# chkconfig rpcbind attivato
# chkconfig nfs attivato

Dopo che il servizio è in esecuzione, i comandi (mount, exportfs e così via) e file
(/ etc / export, / etc / fstab e così via) per la configurazione effettiva di NFS sono fondamentalmente i file
lo stesso su ogni sistema Linux. Quindi, dopo aver installato ed eseguito NFS, segui semplicemente il
istruzioni in questo capitolo per iniziare a usare NFS.

Condivisione di filesystem NFS


Per condividere un filesystem NFS dal tuo sistema Linux, devi esportarlo dal server
sistema. L'esportazione viene eseguita in Linux aggiungendo voci nel file / etc / export. Ogni
entry identifica una directory nel tuo filesystem locale che desideri condividere con altri
computer. La voce identifica anche gli altri computer che possono condividere la risorsa
(o lo apre su tutti i computer) e include altre opzioni che riflettono le autorizzazioni associate
con la directory.

Ricorda che quando condividi una directory, condividi tutti i file e le sottodirectory
anche sotto quella directory (per impostazione predefinita). Devi essere sicuro di voler condividere
tutto in quella struttura di directory. Puoi comunque limitare l'accesso all'interno di quella directory
struttura in molti modi; quelli sono discussi più avanti in questo capitolo.

In Fedora, c'è una finestra di configurazione del server NFS che puoi installare digitando yum install system-
config-nfs; il comando per avviare la finestra ha lo stesso nome del pacchetto. Sebbene questa finestra possa aiutare
configuri le condivisioni nel file / etc / export, può anche aiutarti a fare cose più complicate, come bloccare un servizio
a porte specifiche e configurare l'accesso utente.
Sebbene descriva come configurare NFS modificando direttamente il file di configurazione, è abbastanza ragionevole usarlo
strumento grafico invece. La Figura 20.2 mostra un esempio della finestra di configurazione del server NFS.

20

531

Pagina 572

Parte IV: diventare un amministratore di server Linux

FIGURA 20.2

La finestra di configurazione del server NFS (system-config-nfs) fornisce un modo grafico di


configurazione dei servizi NFS.
Configurazione del file / etc / export
Per rendere disponibile una directory dal tuo sistema Linux ad altri sistemi, devi esportare
quella directory. L'esportazione viene eseguita in modo permanente aggiungendo informazioni su un file
directory esportata nel file / etc / export.

Ecco il formato del file / etc / export:

Directory Host (Opzioni ...) Host (Opzioni ...) # Commenti

In questo esempio, Directory is the Host indica il computer client a cui la condivisione
L'ing di questa directory è limitato. Le opzioni possono includere una varietà di opzioni per definire il file
misure di sicurezza allegate alla directory condivisa per l'host. (Puoi ripetere Host /
Coppie di opzioni.) I commenti sono commenti facoltativi che desideri aggiungere
(seguendo il segno #).

La pagina man delle esportazioni (man export) contiene dettagli sulla sintassi di / etc /
esporta il file. In particolare, puoi vedere le opzioni che puoi utilizzare per limitare l'accesso e proteggere
ogni directory condivisa.

Come utente root, puoi utilizzare qualsiasi editor di testo per configurare / etc / export per modificare shared
voci della directory o aggiungerne di nuove. Ecco un esempio di un file / etc / export:

/ cal * .linuxtoys.net (rw) # Eventi aziendali


/ pub * (ro, insicuro, all_squash) # Public dir
/ home maple (rw, root_squash) abete rosso (rw, root_squash)

La voce / cal rappresenta una directory che contiene informazioni sugli eventi correlati a
l'azienda. Può essere montato qualsiasi computer nel dominio dell'azienda (* .linuxtoys.net)
quella condivisione NFS. Gli utenti possono scrivere file nella directory così come leggerli (indicato dal

532

Pagina 573

Capitolo 20: Configurazione di un file server NFS

opzione rw). Il commento (# Eventi aziendali) serve semplicemente a ricordarti cosa il file
directory contiene.

La voce / pub rappresenta una directory pubblica. Consente a qualsiasi computer e utente di leggere
file dalla directory (indicata dall'opzione ro) ma non per scrivere file. L'insicuro
opzione consente a qualsiasi computer, anche uno che non utilizza una porta NFS sicura, di accedere a
directory. L'opzione all_squash fa sì che tutti gli utenti (UID) e i gruppi (GID) vengano mappati
all'ID utente 65534 (che è l'utente nfsnobody in Fedora o RHEL e l'utente nessuno
in Ubuntu), dando loro un'autorizzazione minima per file e directory.

La voce / home consente a un insieme di utenti di avere la stessa directory / home su diversi
computer. Supponiamo, ad esempio, di condividere / home da un computer chiamato oak.
I computer chiamati acero e abete rosso potevano montare ciascuno quella directory da soli
/ home directory. Se hai dato a tutti gli utenti lo stesso nome utente / UID su tutte le macchine, potresti
avere la stessa directory / home / utente disponibile per ogni utente, indipendentemente dal computer
lui o lei ha effettuato l'accesso. Il root_squash viene utilizzato per escludere l'utente root da un altro
computer dall'avere privilegi di root nella directory condivisa.

Questi sono solo esempi; puoi condividere tutte le directory che scegli, incluso il file
intero filesystem (/). Naturalmente, la condivisione del tutto comporta implicazioni per la sicurezza
filesystem o parti sensibili di esso (come / etc). Opzioni di sicurezza a cui puoi aggiungere
il file / etc / export viene descritto nelle sezioni che seguono.

Nomi host in / etc / export


È possibile indicare nel file / etc / export a quali computer host possono avere accesso
la tua directory condivisa. Se desideri associare più nomi host o indirizzi IP a un file
particolare directory condivisa, assicurarsi di avere uno spazio prima di ogni nome host. Tuttavia, aggiungi no
spazi tra un nome host e le sue opzioni. Per esempio:

/ usr / local maple (rw) abete rosso (ro, root_squash)

Notare che c'è uno spazio dopo (rw) ma nessuno dopo maple. Puoi identificare gli host in
diversi modi:

■ Singolo host: immettere uno o più nomi host TCP / IP o indirizzi IP. Se l'host è
nel tuo dominio locale, puoi semplicemente indicare il nome host. Altrimenti, usa il full
formato host.domain. Questi sono modi validi per indicare i singoli computer host:
acero
maple.handsonhistory.com
10.0.0.11

■ Rete IP: consente l'accesso a tutti gli host da un particolare indirizzo di rete tramite
indica un numero di rete e la sua maschera di rete, separati da una barra (/). Qui 20
sono modi validi per designare i numeri di rete:
10.0.0.0/255.0.0.0 172.16.0.0/255.255.0.0
192.168.18.0/255.255.255.0
192.168.18.0/24

533

Pagina 574

Parte IV: diventare un amministratore di server Linux

■ Dominio TCP / IP: utilizzando i caratteri jolly, è possibile includere tutti o alcuni computer host da
un particolare livello di dominio. Di seguito sono riportati alcuni usi validi dell'asterisco e della domanda
contrassegnare i caratteri jolly:
* .handsonhistory.com
* craft.handsonhistory.com
???. handsonhistory.com

Il primo esempio corrisponde a tutti gli host nel dominio handsonhistory.com.


Il secondo esempio corrisponde a woodcraft, basketcraft o qualsiasi altro nome host
che termina con craft nel dominio handsonhistory.com. L'esempio finale
corrisponde a qualsiasi nome host di tre lettere nel dominio.
■ Gruppi NIS: è possibile consentire l'accesso agli host contenuti in un gruppo NIS. Indicare
un gruppo NIS, precedere il nome del gruppo con un segno (@) (ad esempio, @group).

Accedi alle opzioni in / etc / export


Non devi solo dare via i tuoi file e directory quando esporti una directory
con NFS. Nella parte delle opzioni di ogni voce in / etc / export, puoi aggiungere opzioni che
consentire o limitare l'accesso impostando l'autorizzazione di lettura / scrittura. Queste opzioni, che vengono passate a
NFS, sono i seguenti:

■ ro: il client può montare questo file system esportato in sola lettura. L'impostazione predefinita è mount
il filesystem di lettura / scrittura.
■ rw: richiede esplicitamente che una directory condivisa venga condivisa con autorizzazioni di lettura / scrittura.
(Se il client lo sceglie, può comunque montare la directory in sola lettura.)

Opzioni di mappatura utente in / etc / export


Oltre alle opzioni che definiscono il modo in cui le autorizzazioni vengono gestite in generale, è possibile utilizzare
opzioni per impostare i permessi che utenti specifici hanno sui filesystem condivisi NFS.

Un metodo che semplifica questo processo consiste nell'avere ogni utente con più account utente
hanno lo stesso nome utente e UID su ogni macchina. Ciò semplifica la mappatura degli utenti
hanno le stesse autorizzazioni su un filesystem montato che hanno sui file archiviati nel loro file
dischi rigidi locali. Se questo metodo non è conveniente, gli ID utente possono essere mappati in molti altri
modi. Di seguito sono riportati alcuni metodi per impostare i permessi dell'utente e l'opzione / etc / export
che usi per ogni metodo:

■ utente root : l'utente root del client viene mappato per impostazione predefinita in nfsnobody
nome utente (UID 65534). Ciò impedisce all'utente root di un computer client di essere in grado
per cambiare tutti i file e le directory nel filesystem condiviso. Se vuoi il client
utente root per avere i permessi di root sul server, usa l'opzione no_root_squash.

Tieni presente che anche se root è schiacciato, l'utente root dal client può comunque diventare qualsiasi altro account utente
e accedere ai file per quegli account utente sul server. Quindi assicurati di fidarti di root con tutti i tuoi dati utente prima
lo condividi in lettura / scrittura con un cliente.

534

Pagina 575
Capitolo 20: Configurazione di un file server NFS

■ nfsnobody o nessuno utente / gruppo: utilizzando l'ID utente 65534 e l'ID gruppo, tu
essenzialmente creare un utente / gruppo con autorizzazioni che non consentono l'accesso ai file
che appartengono a qualsiasi utente reale sul server, a meno che tali utenti non aprano l'autorizzazione
a tutti. Tuttavia, sono disponibili i file creati dall'utente o dal gruppo 65534
chiunque sia assegnato come utente o gruppo 65534. Per impostare tutti gli utenti remoti su 65534
utente / gruppo, usa l'opzione all_squash.

I 65534 UID e GID vengono utilizzati per impedire che l'ID venga eseguito in un utente valido
o ID gruppo. Utilizzando le opzioni anonuid o anongid, è possibile modificare l'utente 65534
o gruppo, rispettivamente. Ad esempio, anonuid = 175 imposta tutti gli utenti anonimi su UID
175 e anongid = 300 imposta il GID su 300. (Viene visualizzato solo il numero quando
elenchi i permessi sui file a meno che non aggiungi voci con nomi a / etc / password e
/ etc / group per i nuovi UID e GID.)
■ Mappatura utente: se un utente dispone di account di accesso per un insieme di computer (e dispone del
stesso ID), NFS, per impostazione predefinita, mappa quell'ID. Ciò significa che se l'utente ha chiamato mike
(UID 110) su maple ha un account su pine (mike, UID 110), può usare il suo
file montati in remoto su entrambi i computer da entrambi i computer.
Se un utente client che non è impostato sul server crea un file sull'NFS montato
directory, il file viene assegnato all'UID e al GID del client remoto. (Un ls -l su
server mostra l'UID del proprietario.) Utilizzare l'opzione map_static per identificare un file
che contiene le mappature degli utenti.

Esportare i filesystem condivisi


Dopo aver aggiunto le voci al file / etc / export, eseguire il comando exportfs
per esportare quelle directory (rese disponibili ad altri computer sulla rete).
Riavvia il computer o riavvia il servizio NFS e il comando exportfs viene eseguito
automaticamente per esportare le tue directory. Se vuoi esportarli immediatamente, esegui
exportfs dalla riga di comando (come root).

L'esecuzione del comando exportfs dopo aver modificato il file di esportazione è una buona idea. Se sono presenti errori nel file,
exportfs li identifica per te.

Ecco un esempio del comando exportfs:

# / usr / sbin / exportfs -a -r -v


esportazione di acero: / pub
esportazione di abete rosso: / pub
esportazione di acero: / home
esportazione di abete rosso: / home
20
esportazione *: / mnt / win

L'opzione -a indica che tutte le directory elencate in / etc / export devono essere esportate.
-R risincronizza tutte le esportazioni con il file / etc / export corrente (disabilitando quelle esportazioni

535

Pagina 576

Parte IV: diventare un amministratore di server Linux

non più elencato nel file). L'opzione -v dice di stampare un output dettagliato. In questo esempio,
le directory / pub e / home del server locale sono immediatamente disponibili per
montaggio da quei computer client che sono denominati (acero e abete rosso). Il file / mnt / win
è disponibile per tutti i computer client.

Protezione del server NFS


La struttura NFS è stata creata in un momento in cui lo erano la crittografia e altre misure di sicurezza
non integrato di routine nei servizi di rete (come login remoto, condivisione file e remote
esecuzione). Pertanto, NFS (anche fino alla versione 3) soffre di alcuni piuttosto evidenti
problemi di sicurezza.

I problemi di sicurezza di NFS lo rendevano una struttura inappropriata da utilizzare su reti pubbliche e persino
ha reso difficile un utilizzo sicuro all'interno di un'organizzazione. Questi sono alcuni dei problemi:

■ Utenti root remoti: anche con root_squash predefinito (che impedisce a root
utenti di avere accesso root alle condivisioni remote), l'utente root su qualsiasi macchina
a cui condividi le directory NFS puoi accedere a qualsiasi altro account utente.
Pertanto, se stai facendo qualcosa come condividere le directory home con lettura / scrittura
l'autorizzazione, l'utente root su qualsiasi box con cui stai condividendo ha accesso completo al file
contenuto di quelle home directory.
■ Comunicazioni non crittografate: perché il traffico NFS non è crittografato, chiunque
annusando la tua rete puoi vedere i dati che vengono trasferiti.
■ Mappatura utente: le autorizzazioni predefinite per le condivisioni NFS vengono mappate dall'ID utente. Così per
Ad esempio, un utente con UID 500 su un client NFS ha accesso ai file di proprietà dell'UID 500
sul server NFS. Questo indipendentemente dai nomi utente utilizzati.
■ Struttura del filesystem esposta: fino a NFSv3, se si condivideva una directory su NFS,
hai esposto la posizione di quella directory sul filesystem del server. (In altro
parole, se condividessi la directory / var / stuff, i client saprebbero che / var /
roba era la sua posizione esatta sul tuo server).

Questa è la cattiva notizia. La buona notizia è che la maggior parte di questi problemi vengono risolti in NFSv4 ma
richiedono una configurazione aggiuntiva. Integrando il supporto Kerberos, NFSv4 ti consente di configurare
uro accesso utente basato su ciascun utente che ottiene un ticket Kerberos. Per te, il lavoro extra è
configurazione di un server Kerberos. Per quanto riguarda l'esposizione delle posizioni delle condivisioni NFS, con NFSv4 puoi eseguire il binding
directory condivise in una directory / export, quindi quando sono condivise, la posizione esatta
di quelle directory non è esposto.

Visita https://help.ubuntu.com/community/NFSv4Howto per i dettagli su NFSv4


caratteristiche in Ubuntu.

Per quanto riguarda le funzionalità di sicurezza Linux standard associate a NFS, i firewall iptables, TCP
wrapper e SELinux possono tutti svolgere un ruolo nel proteggere e fornire l'accesso al tuo NFS

536

Pagina 577

Capitolo 20: Configurazione di un file server NFS

server da client remoti. In particolare, far funzionare le funzionalità del firewall di iptables con
NFS può essere particolarmente impegnativo. Queste funzionalità di sicurezza sono descritte nelle sezioni
che segue.

Apertura del firewall per NFS


Il servizio NFS si basa su diversi demoni di servizio per il normale funzionamento, con la maggior parte
di questi daemon in ascolto su porte diverse per l'accesso. Per l'NFSv4 predefinito utilizzato in
Le porte Fedora, TCP e UDP 2049 (nfs) e 111 (rpcbind) devono essere aperte affinché un server NFS possa
eseguire correttamente. Il server deve anche aprire le porte TCP e UDP 20048 per lo showmount
comando per poter interrogare le directory condivise NFS disponibili dal server.

Per RHEL 7, Fedora 21 e altri sistemi che utilizzano il servizio firewalld, è possibile utilizzare l'estensione
Finestra di configurazione del firewall (yum install firewall-config) per aprire il firewall
per il tuo servizio NFS. Digita firewall-config, quindi assicurati che nfs e rpc-bind siano
controllato nella finestra per aprire le porte appropriate per consentire l'accesso al tuo servizio NFS.
La Figura 20.3 mostra un esempio di questa finestra:

FIGURA 20.3

Apri il firewall per consentire l'accesso al servizio NFS utilizzando il firewall


Finestra di configurazione
20

537

Pagina 578

Parte IV: diventare un amministratore di server Linux

Per RHEL 6 e altri sistemi che utilizzano direttamente il servizio iptables (prima che firewalld fosse
aggiunto), per aprire le porte sul firewall del server NFS, assicurati che iptables sia abilitato e
avviato con regole firewall simili alle seguenti aggiunte a / etc / sysconfig /
file iptables:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT


-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20048 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 20048 -j ACCEPT

In Red Hat Enterprise Linux 6. xe versioni precedenti, il problema del firewall è un po 'più complesso. Il
Il problema, in quanto si riferisce ai firewall, è che diversi servizi diversi sono associati a NFS
che ascoltano su porte diverse e quelle porte vengono assegnate in modo casuale. Per aggirare questo
problema, è necessario bloccare i numeri di porta utilizzati da tali servizi e aprire il firewall
quindi quelle porte sono accessibili.

Per rendere più semplice il blocco delle porte del server NFS, inserire le voci nel file / etc / sysconfig / nfs
possono essere aggiunti per assegnare numeri di porta specifici ai servizi. I seguenti sono esempi di
opzioni nel file / etc / sysconfig / nfs con i numeri di porta statica impostati:

RQUOTAD_PORT = 49001
LOCKD_TCPPORT = 49002
LOCKD_UDPPORT = 49003
MOUNTD_PORT = 49004
STATD_PORT = 49005
STATD_OUTGOING_PORT = 49006
RDMA_PORT = 49007

Con queste porte impostate, ho riavviato il servizio nfs (servizio nfs riavvio). Usando il
netstat, puoi vedere i processi risultanti che sono in ascolto su quelli
porte assegnate:

tcp 0 0 0.0.0.0:49001 0.0.0.0:* LISTEN 4682 / rpc.rquotad


tcp 0 0 0.0.0.0:49002 0.0.0.0:* ASCOLTA -
tcp 0 0 0.0.0.0:49004 0.0.0.0:* LISTEN 4698 / rpc.mountd
tcp 0 0 ::: 49002 ::: * ASCOLTA -
tcp 0 0 ::: 49004 ::: * LISTEN 4698 / rpc.mountd
udp 0 0 0.0.0.0:49001 0.0.0.0:* 4682 / rpc.rquotad
udp 0 0 0.0.0.0:49003 0.0.0.0:* -
udp 0 0 0.0.0.0:49004 0.0.0.0:* 4698 / rpc.mountd
udp 0 0 ::: 49003 ::: * -
udp 0 0 ::: 49004 ::: * 4698 / rpc.mountd

Con quei numeri di porta impostati e utilizzati dai vari servizi, è ora possibile aggiungere
Le regole di iptables, come hai fatto con le porte 2049 e 111 per il servizio NFS di base.

538

Pagina 579
Capitolo 20: Configurazione di un file server NFS

Consentire l'accesso NFS nei wrapper TCP


Per servizi come vsftpd e sshd, i wrapper TCP in Linux consentono di aggiungere
informazioni nei file /etc/hosts.allow e /etc/hosts.deny per indicare quali host
può o non può accedere al servizio. Sebbene il daemon del server nfsd stesso non sia abilitato
per i wrapper TCP, il servizio rpcbind è.

Per NFSv3 e versioni precedenti, è sufficiente aggiungere una riga come la seguente al file
Il file /etc/hosts.deny negherebbe l'accesso al servizio rpcbind, ma lo negherebbe anche
accesso al tuo servizio NFS:

rpcbind: ALL

Per i server che eseguono NFSv4 per impostazione predefinita, tuttavia, la riga rpcbind: ALL è appena mostrata
impedisce agli host esterni di ottenere informazioni sui servizi RPC (come NFS) utilizzando
comandi come showmount. Tuttavia, non ti impedisce di montare un NFS
directory condivisa.

Configurazione di SELinux per il tuo server NFS


Con SELinux impostato su Permissive o Disabled, non blocca l'accesso al servizio NFS.
In modalità Enforcing, tuttavia, dovresti comprendere alcuni booleani SELinux. Controllare
lo stato di SELinux sul tuo sistema, digita quanto segue:

# getenforce
Far rispettare
# grep ^ SELINUX = / etc / sysconfig / selinux
SELINUX = imporre

Se il tuo sistema è in modalità Enforcing, come è qui, controlla la pagina man nfs_selinux
per informazioni sulle impostazioni di SELinux che possono influire sul funzionamento del tuo vsftpd
servizio. Ecco alcuni contesti di file SELinux associati a NFS di cui potresti aver bisogno
conoscere:

■ nfs_export_all_ro: con questo valore booleano attivato, SELinux ti consente di condividere


file con autorizzazione di sola lettura utilizzando NFS. È consentita la condivisione di file di sola lettura NFS
con questo attivo, indipendentemente dal contesto del file SELinux impostato sui file condivisi e
directory.
■ nfs_export_all_rw: con questo valore booleano attivato, SELinux consente di condividere
file con autorizzazione di lettura / scrittura utilizzando NFS. Come con il precedente booleano, this
funziona indipendentemente dal contesto del file impostato sui file e sulle directory condivisi.
■ use_nfs_home_dirs - Per consentire al server NFS di condividere le directory home
tramite NFS, impostare questo valore booleano su on. 20

539

Pagina 580

Parte IV: diventare un amministratore di server Linux

Dei booleani appena descritti, i primi due sono attivi per impostazione predefinita. Il file use_nfs_home_dirs
Boolean è disattivato. Per attivare la directory use_nfs_home_dirs, è possibile digitare
a seguire:

# setsebool -P use_nfs_home_dirs su

Puoi ignorare tutti i booleani relativi alla condivisione di file NFS, tuttavia, modificando il file
contesti sui file e le directory che si desidera condividere tramite NFS. Il public_content_t
e i contesti di file public_content_rw_t possono essere impostati su qualsiasi directory che desideri condividere
tramite NFS (o altri protocolli di condivisione file, come HTTP, FTP e altri, se è per questo). Per
esempio, per impostare la regola per consentire la directory / qualunque e le sue sottodirectory
lettura / scrittura condivisa tramite NFS, quindi applicare quella regola, digitare quanto segue:

# semanage fcontext -a -t public_content_rw_t "/wwhat(/.*)?"


# restorecon -F -R -v / qualunque

Se si desidera consentire agli utenti di leggere i file da una directory, ma non di scrivere in
esso, potresti invece assegnare il contesto del file public_content_t alla directory.
Utilizzo dei filesystem NFS
Dopo che un server esporta una directory sulla rete utilizzando NFS, un computer client si connette
quella directory sul proprio filesystem usando il comando mount. È lo stesso comando
utilizzato per montare filesystem da dischi rigidi locali, CD e unità USB, ma con un po '
diverse opzioni.

Il comando mount consente a un client di montare automaticamente le directory NFS aggiunte al file
/ etc / fstab, proprio come fa con i dischi locali. Le directory NFS possono anche essere aggiunte al file
/ etc / fstab in modo tale che non vengano montati automaticamente (quindi puoi montare
manualmente quando si sceglie). Con un'opzione noauto, una directory NFS elencata in
/ etc / fstab è inattivo fino a quando non viene utilizzato il comando mount, dopo che il sistema è attivo e
in esecuzione, per montare il filesystem.

Oltre al file / etc / fstab, puoi anche impostare le opzioni di montaggio usando il
/etc/nfsmount.conf file. All'interno di quel file, puoi impostare le opzioni di montaggio che si applicano a
qualsiasi directory NFS che monti o solo quelle associate a specifici punti di montaggio o NFS
server.

Prima di iniziare a montare le directory condivise NFS, tuttavia, probabilmente vorrai controllare
quali directory condivise sono disponibili tramite NFS utilizzando il comando showmount.

Visualizzazione delle condivisioni NFS


Da un sistema Linux client, puoi usare il comando showmount per vedere cosa è condiviso
le directory sono disponibili da un computer selezionato. Per esempio:

540

Pagina 581

Capitolo 20: Configurazione di un file server NFS

$ / usr / sbin / showmount -e server.example.com


/ export / myshare client.example.com
/ mnt / public *

L'output dello showmount mostra che la directory condivisa denominata / export / myshare è
disponibile solo per l'host client.example.com. La directory condivisa / mnt / public,
tuttavia, è disponibile per chiunque.

Montare manualmente un filesystem NFS


Dopo aver appreso che la directory da un computer sulla rete è stata esportata
(ovvero, reso disponibile per il montaggio), è possibile montare quella directory manualmente utilizzando il
comando mount. Questo è un buon modo per assicurarti che sia disponibile e funzionante prima di te
configurarlo per montare in modo permanente. Quello che segue è un esempio di montaggio di / stuff
directory da un computer chiamato maple sul tuo computer locale:

# mkdir / mnt / maple


# mount maple: / stuff / mnt / maple

Il primo comando (mkdir) crea la directory del punto di montaggio. (/ mnt è un luogo comune in cui
mettere dischi montati temporaneamente e file system NFS.) Il comando mount identifica il file
computer remoto e filesystem condiviso, separati da due punti (maple: / stuff) e il
segue la directory del punto di montaggio locale (/ mnt / maple).

Se il montaggio fallisce, assicurati che il servizio NFS sia in esecuzione sul server e che le regole del firewall del server non lo neghino
accesso al servizio. Dal server, digita ps ax | grep nfsd per visualizzare un elenco di processi del server nfsd. Se tu
non vedi l'elenco, prova ad avviare i tuoi demoni NFS come descritto in precedenza in questo capitolo. Per visualizzare le regole del firewall, digita
iptables -vnL . Per impostazione predefinita, il daemon nfsd ascolta le richieste NFS sulla porta numero 2049. Il firewall deve
accetta richieste udp sulle porte 2049 (nfs) e 111 (rpc). In Red Hat Enterprise Linux 6 e versioni precedenti di
Fedora, potresti dover impostare le porte statiche per i servizi correlati e quindi aprire le porte per quei servizi nel firewall.
Fare riferimento alla sezione "Protezione del server NFS" per esaminare come superare questi problemi di sicurezza.

Per assicurarti che il montaggio NFS sia avvenuto, digita mount -t nfs . Questo comando elenca tutti
filesystem NFS montati. Ecco un esempio del comando mount e del suo output
(con file system non pertinenti a questa discussione eliminati):

# mount -t nfs
maple: / stuff on / mnt / maple type nfs (rw, relatime, vers = 3, rsize = 65536,
wsize = 65536, namlen = 255, hard, proto = tcp, timeo = 600, retrans = 2, sec = sys,
mountaddr = 192.168.0.122, mountvers = 3, mountport = 892, mountproto = udp,
local_lock = nessuno, addr = 192.168.0.122) 20
L'output del comando mount -t nfs mostra solo quei filesystem montati
dai file server NFS. Il filesystem NFS appena montato è la directory / stuff da

541

Pagina 582

Parte IV: diventare un amministratore di server Linux

acero (acero: / roba). È montato su / mnt / maple e il suo tipo di montaggio è nfs. Il
il file system è stato montato in lettura / scrittura (rw) e l'indirizzo IP di maple è 192.168.0.122
(addr = 192.168.0.122). Vengono mostrate anche molte altre impostazioni relative alla montatura,
come le dimensioni di lettura e scrittura dei pacchetti e il numero di versione di NFS.

L'operazione di montaggio appena mostrata monta temporaneamente un filesystem NFS in locale


sistema. La sezione successiva descrive come rendere la montatura più permanente (usando l'estensione
/ etc / fstab file) e come selezionare varie opzioni per i montaggi NFS.

Montare un filesystem NFS al momento dell'avvio


Per impostare un filesystem NFS per il montaggio automatico su un punto di montaggio specificato ogni volta
quando avvii il tuo sistema Linux, devi aggiungere una voce per quel filesystem NFS al file
/ etc / fstab file. Quel file contiene informazioni su tutti i diversi tipi di montati
(e disponibili per essere montati) filesystem per il tuo sistema.

Ecco il formato per aggiungere un filesystem NFS al tuo sistema locale:

host: directory mountpoint nfs opzioni 0 0

Il primo elemento ( host: directory ) identifica il computer del server NFS e la directory condivisa.
mountpoint è il punto di montaggio locale su cui è montata la directory NFS. È seguito
dal tipo di filesystem (nfs). Tutte le opzioni relative alla montatura vengono visualizzate successivamente in una virgola-
elenco separato. (Gli ultimi due zeri configurano il sistema per non eseguire il dump del contenuto del file
filesystem e per non eseguire fsck sul filesystem.)

I seguenti sono esempi di voci NFS in / etc / fstab:

maple: / stuff / mnt / maple nfs bg, rsize = 8192, wsize = 8192 0 0
quercia: / apps / oak / apps nfs noauto, ro 00

Nel primo esempio, la directory / roba remota del computer denominata maple
(maple: / stuff) è montato sulla directory locale / mnt / maple (la directory locale deve
esistono già). Se il montaggio fallisce perché la condivisione non è disponibile, bg causa il montaggio
tentare di andare in background e riprovare più tardi.

Il tipo di filesystem è nfs e le dimensioni del buffer di lettura (rsize) e di scrittura (wsize) (discusse
nella sezione "Utilizzo delle opzioni di montaggio" più avanti in questo capitolo) sono impostati su 8192 per velocizzare i dati
trasferimento associato a questa connessione. Nel secondo esempio, la directory remota è
/ apps sul computer denominato oak. È impostato come un filesystem NFS (nfs) che può essere
montato nella directory / oak / apps localmente. Questo filesystem non viene montato automaticamente
(noauto), tuttavia, e può essere montato solo in sola lettura (ro) utilizzando il comando mount
dopo che il sistema è già in esecuzione.

542

Pagina 583

Capitolo 20: Configurazione di un file server NFS


L'impostazione predefinita è montare un filesystem NFS in lettura / scrittura. Tuttavia, l'impostazione predefinita per l'esportazione di un filesystem è di sola lettura.
Se non sei in grado di scrivere su un filesystem NFS, controlla che sia stato esportato come lettura / scrittura dal server.

Montaggio dei filesystem noauto


Il tuo file / etc / fstab può contenere anche dispositivi per altri filesystem che non sono montati
automaticamente. Ad esempio, potresti avere più partizioni del disco sul tuo disco rigido o un file
File system condiviso NFS che vuoi montare solo occasionalmente. Un filesystem noauto può
essere montato manualmente. Il vantaggio è che quando digiti il ​comando mount, puoi farlo
digitare meno informazioni e riempire il resto con il contenuto del file / etc / fstab.
Quindi, ad esempio, potresti digitare:

# mount / oak / apps

Con questo comando, mount sa di controllare il file / etc / fstab per ottenere il filesystem
mount (oak: / apps), il tipo di filesystem (nfs) e le opzioni da usare con mount
(in questo caso ro, per sola lettura). Invece di digitare il punto di montaggio locale (/ oak / apps),
avresti potuto digitare il nome del filesystem remoto (oak: / apps) e avere altre informazioni
riempito.

Quando si nominano i punti di montaggio, includere il nome del server NFS remoto in quel nome può aiutarti a ricordare dove
i file vengono effettivamente archiviati. Questo potrebbe non essere possibile se condividi directory home (/ home) o posta
directory (/ var / spool / mail). Ad esempio, potresti montare un filesystem da una macchina chiamata duck su
directory / mnt / duck.

Utilizzo delle opzioni di montaggio


È possibile aggiungere diverse opzioni di montaggio al file / etc / fstab (o alla riga di comando di montaggio
stesso) per influenzare il modo in cui il filesystem viene montato. Quando aggiungi opzioni a / etc / fstab,
devono essere separati da virgole. Ad esempio, qui, le opzioni noauto, ro e hard
vengono utilizzati quando oak: / apps è montato:

oak: / apps / oak / apps nfs noauto, ro, hard 0 0

Le seguenti sono alcune opzioni utili per montare i filesystem NFS. Puoi
leggi queste e altre opzioni di montaggio NFS che puoi inserire nel file / etc / fstab da
la pagina man nfs (man 5 nfs):

■ difficile: se si utilizza questa opzione e il server NFS si disconnette o si arresta mentre a


20
il processo è in attesa di accedervi, il processo si blocca finché il server non si riavvia.

543

Pagina 584

Parte IV: diventare un amministratore di server Linux

Ciò è utile se è fondamentale che i dati con cui stai lavorando rimangano sincronizzati
i programmi che vi accedono. (Questo è il comportamento predefinito.)
■ soft: se il server NFS si disconnette o si arresta, è un processo che tenta di accedere ai dati
dal server scade dopo un determinato periodo quando questa opzione è attiva. Un ingresso /
l'errore di output viene consegnato al processo che tenta di accedere al server NFS.
■ rsize: questa è la dimensione dei blocchi di dati (in byte) che il client NFS avrà
richiesta da utilizzare durante la lettura di dati da un server NFS. L'impostazione predefinita è 1024.
Utilizzando un numero maggiore (come 8192) si ottengono prestazioni migliori su una rete
che è veloce (come una LAN) ed è relativamente privo di errori (cioè, uno che non lo fa
hanno molto rumore o urti).
■ wsize: questa è la dimensione dei blocchi di dati (in byte) che il client NFS avrà
richiesta da utilizzare quando scrive dati su un server NFS. L'impostazione predefinita è 1024.
I problemi di prestazioni sono gli stessi dell'opzione rsize.
■ timeo = #: imposta il tempo dopo che si è verificato un timeout RPC che una seconda trasmissione
viene creata una sione, dove # rappresenta un numero in decimi di secondo. Il valore predefinito
è sette decimi di secondo. Ogni timeout successivo determina il valore di timeout
essere raddoppiato (fino a un massimo di 60 secondi). Aumenta questo valore se lo credi
i timeout si verificano a causa della risposta lenta dal server o di una rete lenta.
■ retrans = # - Questo imposta il numero di timeout minori e ritrasmissioni che
deve accadere prima che si verifichi un timeout importante.
■ retry= #: imposta per quanti minuti continuare a ritentare le richieste di montaggio non riuscite,
dove # è sostituito dal numero di minuti per riprovare. L'impostazione predefinita è 10.000
minuti (che è di circa una settimana).
■ bg: se il primo tentativo di montaggio scade, provare tutti i montaggi successivi nel file
sfondo. Questa opzione è molto utile se stai montando un file lento o sporadicamente
filesystem NFS disponibile. Inserendo le richieste di montaggio in background, il tuo file
il sistema può continuare a montare altri filesystem invece di aspettare l'attuale
uno da completare.

Se manca un punto di montaggio annidato, si verifica un timeout per consentire l'aggiunta del punto di montaggio necessario. Ad esempio, se
monti / usr / trip e / usr / trip / extra come filesystem NFS e / usr / trip non è ancora montato quando
/ usr / trip / extra prova a montare, / usr / trip / extra va in timeout. Se sei fortunato, viene fuori / usr / trip e
/ usr / trip / extra si monta al prossimo tentativo.

■ fg:se il primo tentativo di montaggio scade, prova i successivi montaggi in primo piano.
terra. Questo è il comportamento predefinito. Usa questa opzione se è imperativo che il file
mount avere successo prima di continuare (ad esempio, se stavi montando / usr).

Non tutte le opzioni di montaggio NFS devono essere inserite nel file / etc / fstab. Sul lato client, il
Il file /etc/nfsmount.conf può essere configurato per le sezioni Mount, Server e Global. Nel

544

Pagina 585

Capitolo 20: Configurazione di un file server NFS

Nella sezione Mount, è possibile indicare quali opzioni di montaggio vengono utilizzate quando è presente un file system NFS
montato su un particolare punto di montaggio. La sezione Server ti consente di aggiungere opzioni a qualsiasi NFS
filesystem montato da un particolare server NFS. Le opzioni globali si applicano a tutti i montaggi NFS
da questo cliente.

La seguente voce nel file /etc/nfsmount.conf imposta un blocco di lettura e scrittura di 32 KB


dimensione per qualsiasi directory NFS montata dal sistema denominato thunder.example.com:

[Server "thunder.example.com"]
rsize = 32k
wsize = 32k

Per impostare le opzioni predefinite per tutti i montaggi NFS per i tuoi sistemi, puoi rimuovere il commento dal file
Blocco NFSMount_Global_Options. In quel blocco, puoi impostare cose come i protocolli
e le versioni NFS, nonché le velocità di trasmissione e le impostazioni dei tentativi. Ecco un esempio di
un blocco NFSMount_Global_Options:

[NFSMount_Global_Options]
# Questo imposta la versione predefinita su NFS 4
Defaultvers = 4
# Imposta il numero di volte in cui una richiesta verrà ritentata prima
# generazione di un timeout
Retrans = 2
# Imposta il numero di minuti prima di ritentare un errore
# montare a 2 minuti
# Riprova = 2

Nell'esempio appena mostrato, la versione NFS predefinita è 4. I dati vengono ritrasmessi due volte (2)
prima di generare un timeout. Il tempo di attesa è di 2 minuti prima di ritentare una trasmissione fallita-
sion. È possibile sovrascrivere uno qualsiasi di questi valori predefiniti aggiungendo opzioni di montaggio al file
/ etc / fstab o alla riga di comando mount quando la directory NFS è montata.

Utilizzo di autofs per montare i filesystem NFS su richiesta


I recenti miglioramenti al rilevamento automatico e al montaggio di dispositivi rimovibili hanno significato
che puoi semplicemente inserire o collegare quei dispositivi per farli rilevare, montare e
visualizzato. Tuttavia, per rendere il processo di rilevamento e montaggio di file system NFS remoti
più automatico, è comunque necessario utilizzare una funzione come autofs (abbreviazione di automaticamente
filesystem montati).

La funzione autofs monta i filesystem di rete su richiesta quando qualcuno cerca di usarli
i filesystem. Con la funzione autofs configurata e attivata, puoi causare qualsiasi file
directory condivise NFS disponibili da montare su richiesta. Per utilizzare la funzione autofs, è necessario
per avere installato il pacchetto autofs. (Per Fedora e RHEL, puoi digitare yum install 20
autofs o per Ubuntu o Debian apt-get install autofs da cui installare il pacchetto
il network.)

545
Pagina 586

Parte IV: diventare un amministratore di server Linux

Automounting nella directory / net


Con autofs abilitato, se conosci il nome host e la directory condivisa da
un altro computer host, cambia semplicemente (cd) nella directory di montaggio autofs (/ net o
/ var / autofs per impostazione predefinita). Ciò causa il montaggio automatico della risorsa condivisa
e reso accessibile a te.

I seguenti passaggi spiegano come attivare la funzione autofs in Fedora o RHEL:

1. In Fedora o RHEL, come utente root da una finestra di Terminale, aprire / etc / auto.
master file e cerca la seguente riga:
/ net -hosts

Questo fa sì che la directory / net funga da punto di montaggio per l'NFS condiviso
directory a cui si desidera accedere sulla rete. (Se è presente un carattere di commento
all'inizio di quella riga, rimuoverlo.)

2. Per avviare il servizio autofs in Fedora o RHEL 7, digitare quanto segue come utente root:
# systemctl avvia autofs.service

3. Su un sistema Fedora o RHEL 7, configurare il servizio autofs per riavviarsi ogni volta
avvia il tuo sistema:
# systemctl abilita autofs

Che tu ci creda o no, è tutto quello che devi fare. Se disponi di una connessione di rete a NFS
server da cui si desidera condividere le directory, provare ad accedere a una directory NFS condivisa.
Ad esempio, se sai che la directory / usr / local / share viene condivisa da
computer sulla rete denominato shuttle, puoi eseguire le seguenti operazioni:

$ cd / rete / navetta /

Se quel computer dispone di directory condivise disponibili per te, puoi farlo correttamente
passare a quella directory.

Puoi anche digitare quanto segue:

$ ls
usr

Dovresti essere in grado di vedere che la directory usr fa parte del percorso di una directory condivisa.
Se c'erano directory condivise da altre directory di primo livello (come / var o / tmp),
vedresti anche quelli. Ovviamente, vedere una qualsiasi di queste directory dipende da come
la sicurezza è impostata sul server.

Prova anche ad andare direttamente alla directory condivisa. Per esempio:

$ cd / net / shuttle / usr / local / share


$ ls
info uomo musica televisione

546

Pagina 587

Capitolo 20: Configurazione di un file server NFS

A questo punto, ls dovrebbe rivelare il contenuto della directory / usr / local / share su
il computer chiamato shuttle. Quello che puoi fare con quel contenuto dipende da com'era
configurato per la condivisione dal server.

Questo può essere un po 'sconcertante perché non vedi alcun file o directory fino a te
provare effettivamente a usarli, ad esempio passando a una directory montata in rete. Il ls
il comando, ad esempio, non mostra nulla in una directory montata in rete fino a quando
la directory è montata, il che può portare a un a volte-è-lì-e-a-volte-è-
non impressione. Basta passare a una directory montata in rete o accedere a un file su tale
directory e autofs si occupa del resto.

Nell'esempio mostrato, viene utilizzato il nome host shuttle. Tuttavia, puoi usare qualsiasi nome o
Indirizzo IP che identifica la posizione del computer del server NFS. Ad esempio, invece
di shuttle, potresti aver utilizzato shuttle.example.com o un indirizzo IP come
192.168.0.122.

Home directory di montaggio automatico


Invece di montare semplicemente un filesystem NFS nella directory / net, potresti volerlo
per configurare autofs per montare una directory NFS specifica in una posizione specifica. Per l'esame-
ple, potresti configurare la directory home di un utente da un server centralizzato che potrebbe essere
montato automaticamente da una macchina diversa quando un utente accede. Allo stesso modo, potresti usare un file
meccanismo di autenticazione centrale, come LDAP (come descritto nel Capitolo 11, "Gestione
Account utente "), per offrire anche account utente centralizzati.

La procedura seguente illustra come impostare un account utente su un server NFS e condividerlo
la home directory di un utente chiamato joe da quel server in modo che possa essere montato automaticamente quando
Joe accede a un altro computer. In questo esempio, invece di utilizzare un'autentica centrale
server, gli account corrispondenti vengono creati su ciascun sistema.

1. Sul server NFS (mynfs.example.com) che fornisce un utente centralizzato


home directory per l'utente denominato joe , creare un account utente per joe con
una directory home di / home / shared / joe come nome . Trova anche l'ID utente di Joe
numero dal file / etc / passwd (terzo campo) in modo da poterlo abbinare quando si imposta
creare un account utente per Joe su un altro sistema.
# mkdir / home / shared
# useradd -c "Joe Smith" -d / home / shared / joe joe
# grep joe / etc / passwd
joe: x: 507: 507: Joe Smith: / home / shared / joe: / bin / bash

2. Sul server NFS, esporta la directory / home / shared / su qualsiasi sistema del tuo
rete locale (io uso 192.168.0. * qui), quindi puoi condividere la home directory per joe
e qualsiasi altro utente che crei, aggiungendo questa riga al file / etc / export : 20
# / etc / esporta il file per condividere le directory in / home / shared
# solo ad altri sistemi sulla rete 192.168.0.0/24:
/ home / shared 192.168.0. * (rw, non sicuro)

547

Pagina 588

Parte IV: diventare un amministratore di server Linux

Nell'esempio di file di esportazione sopra, l'opzione insicuro consente ai client di utilizzare le porte sopra la porta 1024 per effettuare il montaggio
richieste. Alcuni client NFS lo richiedono, perché non hanno accesso alle porte riservate a NFS.

3. Sul server NFS, riavviare il servizio nfs-server o, se è già in esecuzione,


puoi semplicemente esportare la directory condivisa come segue:
# exportfs -a -r -v

4. Sul server NFS, assicurarsi che le porte appropriate siano aperte sul firewall.
Vedere la sezione "Protezione del server NFS" per i dettagli.
5. Sul sistema client NFS, aggiungere una voce al file /etc/auto.master che
identifica il punto di montaggio in cui si desidera posizionare la directory NFS remota
montato e un file (di tua scelta) dove identificherai la posizione di
la directory NFS remota. Ho aggiunto questa voce al file auto.master:
/ home / remote /etc/auto.joe

6. Sul sistema client NFS, aggiungi una voce al file appena annotato (/ etc / auto.
joe è quello che abbiamo usato) che contiene una voce come la seguente:
joe -rw mynfs.example.com:/home/shared/joe

7. Sul sistema client NFS, riavviare il servizio autofs:


# systemctl riavvia autofs.service

8. Sul sistema client NFS, creare un utente denominato joe utilizzando useradd
comando. Per quella riga di comando, è necessario ottenere l'UID per Joe sul server
(507 in questo esempio), in modo che joe sul sistema client possieda i file da joe's
Directory principale di NFS. Quando esegui il seguente comando, l'account utente joe
viene creato, ma viene visualizzato un messaggio di errore che indica che la directory home è già
esiste (che è corretto):
# useradd -u 507 -c "Joe Smith" -d / home / remote / joe joe
# passwd joe
Modifica della password per l'utente joe.
Nuova password: ********
Digita nuovamente la nuova password: ********

9. Sul sistema client NFS, accedere come joe. Se tutto funziona correttamente,
quando joe effettua il login e cerca di accedere alla sua directory home (/ home / remote / joe),
la directory / home / share / joe dovrebbe essere montata da mynfs.example.
com server. La directory NFS è stata condivisa e montata in lettura / scrittura con
la proprietà dell'UID 507 (joe su entrambi i sistemi), quindi l'utente joe sul sistema locale
dovrebbe essere in grado di aggiungere, eliminare, modificare e visualizzare i file in quella directory.

Dopo che Joe si è disconnesso (in realtà, quando smette di accedere alla directory) per un periodo di timeout
(10 minuti, per impostazione predefinita), la directory è smontata.

548

Pagina 589

Capitolo 20: Configurazione di un file server NFS

Smontaggio dei filesystem NFS


Dopo che un filesystem NFS è stato montato, smontarlo è semplice. Usi il comando umount
con il punto di montaggio locale o il nome del file system remoto. Ad esempio, eccone due
modi per smontare maple: / stuff dalla directory locale / mnt / maple:

# umount maple: / stuff


# umount / mnt / maple

Entrambe le forme funzionano. Se maple: / stuff viene montato automaticamente (da un elenco in
/ etc / fstab), la directory verrà rimontata al successivo avvio di Linux. Se fosse un file
montaggio temporaneo (o elencato come noauto in / etc / fstab), non viene rimontato all'avvio.

Il comando è umount, non unmount. È facile sbagliare.

Se ricevi il messaggio che il dispositivo è occupato quando provi a smontare un filesystem, esso
significa che lo smontaggio non è riuscito perché si sta accedendo al filesystem. Molto probabilmente, uno di
le directory nel filesystem NFS sono la directory corrente per la tua shell (o la shell
di qualcun altro sul tuo sistema). L'altra possibilità è che un comando contenga un file
aprire nel filesystem NFS (come un editor di testo). Controlla le finestre del tuo terminale e altro
shell, quindi esci dalla directory se ci sei dentro, o chiudi semplicemente le finestre del Terminale.

Se un filesystem NFS non si smonta, puoi forzarlo (umount -f / mnt / maple) o


smonta e ripulisci in seguito (umount -l / mnt / maple). L'opzione -l è solitamente la
scelta migliore perché uno smontaggio forzato può interrompere una modifica del file in corso.
Un'altra alternativa è eseguire fuser -v mountpoint per vedere cosa hanno in mano gli utenti
condivisa NFS montata aperta, quindi fuser -k mountpoint per terminare tutti quei processi.

Sommario
Network File System (NFS) è uno dei più vecchi prodotti di condivisione di file per computer esistenti
oggi. È ancora il più popolare per la condivisione di directory di file tra UNIX e Linux
sistemi. NFS consente ai server di designare directory specifiche da rendere disponibili per
nated host e quindi consente ai sistemi client di connettersi a quelle directory montando
localmente.

NFS può essere protetto utilizzando regole firewall (iptables), wrapper TCP (per consentire e negare
accesso host) e SELinux (per limitare il modo in cui i protocolli di condivisione file possono condividere le risorse NFS). 20
Sebbene NFS fosse intrinsecamente insicuro quando è stato creato (i dati vengono condivisi non crittografati e
l'accesso degli utenti è abbastanza aperto), le nuove funzionalità di NFS versione 4 hanno contribuito a migliorare il complesso
sicurezza di NFS.

549
Pagina 590

Parte IV: diventare un amministratore di server Linux

Questo capitolo NFS è l'ultimo dei capitoli server del libro. Il capitolo 21 copre un'ampia gamma di
argomenti relativi al desktop e al server in quanto aiuta a comprendere le tecniche per la risoluzione dei problemi relativi a
Sistema Linux.

Esercizi
Gli esercizi in questa sezione illustrano le attività relative alla configurazione e all'utilizzo di un NFS
server in Linux. Se possibile, avere a disposizione due sistemi Linux collegati in locale
Rete. Uno di quei sistemi Linux agirà come un server NFS mentre l'altro sarà un file
Client NFS.

Per ottenere il massimo da questi esercizi, ti consiglio di non utilizzare un server Linux che
ha NFS già attivo e funzionante. Non puoi fare tutti gli esercizi qui senza interrompere un file
Servizio NFS già in esecuzione e che condivide le risorse.

Vedere l'Appendice B per le soluzioni suggerite.

1. Sul sistema Linux che si desidera utilizzare come server NFS, installare i pacchetti necessari
per configurare un servizio NFS.
2. Sul server NFS, elenca i file di documentazione forniti nel pacchetto che
fornisce il software del server NFS.

3. Sul server NFS, determinare il nome del servizio NFS e avviarlo.

4. Sul server NFS, controlla lo stato del servizio NFS appena avviato.

5. Sul server NFS, creare la directory / var / mystuff e condividerla dal proprio NFS
server con i seguenti attributi: disponibile per tutti, sola lettura e root
l'utente sul client dispone dell'accesso root alla condivisione.

6. Sul server NFS, assicurati che la condivisione che hai creato sia accessibile a tutti gli host
aprendo wrapper TCP, iptables e SELinux.

7. Su un secondo sistema Linux (client NFS), visualizzare le condivisioni disponibili da NFS


server. (Se non hai un secondo sistema, puoi farlo dallo stesso sistema.)
Se non vedi la directory NFS condivisa, torna alla domanda precedente e
riprova.

8. Sul client NFS, creare una directory chiamata / var / remote e montare temporaneamente
la directory / var / mystuff dal server NFS su quel punto di montaggio.

9. Sul client NFS, smontare / var / remote, aggiungere una voce in modo che lo stesso venga montato
viene eseguito automaticamente al riavvio (con un'opzione di montaggio bg) e verifica che il file
la voce che hai creato funziona correttamente.

10. Dal server NFS, copiare alcuni file nella directory / var / mystuff.Dall'NFS
client, assicurati di poter vedere i file appena aggiunti a quella directory e assicurati
non è possibile scrivere file in quella directory dal client.

550

Pagina 591

CAPITOLO

21
Risoluzione dei problemi di Linux
IN QUESTO CAPITOLO
Risoluzione dei problemi con i boot loader

Risoluzione dei problemi di inizializzazione del sistema

Risoluzione dei problemi di packaging del software

Verifica dei problemi dell'interfaccia di rete

Affrontare problemi di memoria

Utilizzo della modalità di salvataggio

In hai esaurito lo spazio su disco. Un'applicazione può bloccarsi perché il sistema ha esaurito la memoria.
Il sistema può non avviarsi correttamente per, beh, molti motivi diversi.
qualsiasi sistema operativo complesso, molte cose possono andare storte. Puoi non salvare un file perché
In Linux, la dedizione all'apertura e l'attenzione per far funzionare il software al massimo
l'efficienza ha portato a un numero incredibile di strumenti che puoi utilizzare per risolvere ogni immaginabile
problema. In effetti, se il software non funziona come vorresti, hai anche il massimo
possibilità di riscrivere il codice da soli (anche se non spieghiamo come farlo qui).

Questo capitolo affronta alcuni dei problemi più comuni che puoi incontrare su un sistema Linux e
descrive gli strumenti e le procedure che è possibile utilizzare per superare questi problemi. Gli argomenti sono suddivisi
per aree di risoluzione dei problemi, come il processo di avvio, i pacchetti software, la rete, la memoria
problemi e modalità di ripristino.

Risoluzione dei problemi di avvio


Prima di poter iniziare la risoluzione dei problemi di un sistema Linux in esecuzione, quel sistema deve essere avviato.
Perché un sistema Linux si avvii, devono accadere una serie di cose. Un sistema Linux installato direttamente
su un computer con architettura PC esegue i seguenti passaggi per l'avvio:

■ Accensione dell'alimentazione
■ Avvio dell'hardware (dal BIOS o dal firmware UEFI)

551

Pagina 592

Parte IV: diventare un amministratore di server Linux

■ Trovare la posizione del boot loader e avviarlo

■ Scelta di un sistema operativo dal boot loader


■ Avvio del kernel e del disco RAM iniziale per il sistema operativo selezionato
■ Avvio del processo di inizializzazione (init o systemd)
■ Avvio di tutti i servizi associati al livello di attività selezionato (runlevel o
target predefinito)

Le attività esatte che si verificano in ciascuno di questi punti hanno subito una trasformazione
in anni recenti. I boot loader stanno cambiando per adattarsi a nuovi tipi di hardware. Il
il processo di inizializzazione sta cambiando in modo che i servizi possano essere avviati in modo più efficiente, in base alla dipendenza
cies e in reazione allo stato del sistema (come quale hardware è collegato o cosa
esistono file) piuttosto che un ordine di avvio statico.

La risoluzione dei problemi del processo di avvio di Linux inizia quando si accende il computer e termina
quando tutti i servizi sono attivi e funzionanti. A quel punto, tipicamente un grafico o basato su testo
il prompt di login è disponibile dalla console, pronto per il login.

Dopo aver letto le brevi descrizioni dei metodi di avvio, vai a "Avvio dal firmware"
per capire cosa succede in ogni fase del processo di avvio e dove potrebbe essere necessario
per risolvere i problemi. Perché la struttura generale del processo di avvio di Linux è la stessa per
i tre sistemi Linux presenti qui (Fedora, RHEL e Ubuntu), eseguo l'avvio
processo solo una volta, ma descrivo le differenze tra loro mentre procedo.

Comprensione dei metodi di avvio


Spetta alla singola distribuzione Linux come i servizi associati all'esecuzione
Il sistema Linux viene avviato. Dopo che il boot loader avvia il kernel, come il resto del file
le attività (montare i filesystem, impostare le opzioni del kernel, eseguire i servizi e così via) sono
done è tutto gestito dal processo di inizializzazione.

Mentre descrivo il processo di avvio, mi concentro su due diversi tipi di inizializzazione: System V
init e systemd. Cito anche brevemente un terzo tipo chiamato Upstart, che è stato
distribuito fino a poco tempo fa su Debian e distribuzione Ubuntu, ma ora viene sostituito con
systemd. (Ubuntu 14.04, LTS utilizzato in questo libro utilizza ancora Upstart per impostazione predefinita.)
A partire dagli script di inizializzazione di System V.
La funzione di inizializzazione di System V consiste nel processo init (il primo processo da eseguire dopo il
kernel stesso), un file / etc / inittab che dirige tutte le attività di avvio e un set di shell
script che avvia ciascuno dei singoli servizi. Le prime versioni di Fedora e fino a RHEL
5 ha utilizzato il processo di inizializzazione di System V. RHEL 6 contiene una sorta di ibrido di System V init, con
il processo di inizializzazione stesso sostituito dal processo di inizializzazione Upstart.

System V init è stato sviluppato per UNIX System V presso AT&T a metà degli anni '80, quando i sistemi UNIX
prima ha incorporato l'avvio delle interfacce di rete e dei servizi ad esse connessi.

552

Pagina 593

Capitolo 21: Risoluzione dei problemi di Linux

È stato soppiantato solo negli ultimi anni da Upstart e systemd per adattarsi meglio
le esigenze dei moderni sistemi operativi.

In System V init, i set di servizi vengono assegnati a ciò che viene definito runlevel . Per
Ad esempio, il runlevel multiutente può avviare servizi di sistema di base, interfacce di rete e
21
servizi di rete. La modalità utente singolo avvia solo una quantità sufficiente del sistema Linux di base, quindi alcuni-
è possibile accedere dalla console di sistema, senza avviare interfacce o servizi di rete.
Dopo che un sistema di inizializzazione System V è attivo e in esecuzione, è possibile utilizzare comandi come riavvio,
shutdown e init per cambiare i runlevel. È possibile utilizzare comandi come service e
chkconfig per avviare / arrestare i singoli servizi o abilitare / disabilitare i servizi, rispettivamente.

Gli script di inizializzazione di System V sono impostati per essere eseguiti in un ordine specifico, con ogni script che deve farlo
completare prima che possa iniziare il prossimo. Se un servizio fallisce, non è previsto tale servizio
per riavviare automaticamente. Al contrario, systemd e Upstart sono stati progettati per affrontarli
e altre carenze di System V init.

A partire da systemd
La funzione systemd sta rapidamente diventando il presente e il futuro dell'inizializzazione
processo per molti sistemi Linux. È stato adottato in Fedora 15, in RHEL 7 ed è programmato per
sostituire Upstart in Debian e Ubuntu 15.04. Sebbene systemd sia più complicato di
System V init, offre anche molte altre funzionalità, come queste:

■ Obiettivi: invece dei runlevel, systemd si concentra sugli obiettivi. Un obiettivo può iniziare un set
di servizi, nonché creare o avviare altri tipi di unità (come montaggi di directory,
prese, aree di scambio e timer).
■ Compatibilità System V: esistono destinazioni che si allineano con i runlevel System V, se
sei abituato a gestire i runlevel. Ad esempio, graphical.target si allinea
con runlevel 5 mentre multi-user.target è essenzialmente runlevel 3. Tuttavia,
ci sono molti più obiettivi che runlevel, dandoti l'opportunità di più
gestire finemente insiemi di unità. Allo stesso modo, systemd supporta gli script di inizializzazione di System V.
e comandi come chkconfig e service per manipolare quei servizi.
■ Avvio basato sulle dipendenze: all'avvio del sistema, qualsiasi servizio nel file
target predefinito (graphical.target per desktop e multi-user.target per
la maggior parte dei server) che ha avuto le sue dipendenze soddisfatte può iniziare. Questa funzione può accelerare
il processo di avvio, assicurandosi che un singolo servizio bloccato non ne blocchi altri
servizi dall'inizio se non hanno bisogno del servizio bloccato.
■ Utilizzo delle risorse: con systemd, è possibile utilizzare cgroups per limitare la quantità di file
le risorse del sistema vengono consumate da un servizio. Ad esempio, puoi limitare l'importo
di memoria, CPU o altre risorse che un intero servizio può consumare, quindi un fuggitivo
processo o un servizio che scinde un numero irragionevole di processi figlio
non può consumare più di quanto l'intero servizio è consentito.

Quando si avvia un sistema Linux abilitato per systemd, il primo processo in esecuzione (PID 1) è il file
demone systemd (invece del demone init). Successivamente, il comando principale per la gestione

553

Pagina 594
Parte IV: diventare un amministratore di server Linux

systemd services è il comando systemctl. Gestione dei messaggi (log) del journal systemd
viene eseguito con il comando journalctl. Hai anche la possibilità di utilizzare il sistema vecchio stile
Comandi di V init, come init, poweroff, reboot, runlevel e shutdown to
gestire i servizi.

A partire da Upstart
Come notato in precedenza, le distribuzioni Debian e Ubuntu Linux hanno utilizzato il progetto Upstart per
un po 'di tempo per sostituire la vecchia funzione di inizializzazione di System V. Sebbene quelle distribuzioni prevedano di
passare presto a systemd, se si utilizza un sistema Debian o Ubuntu (precedente alla 14.10) recente,
è probabile che Upstart controlli l'avvio dei servizi di sistema.

Come systemd, Upstart consentiva ai servizi di avviarsi in parallelo, dopo il loro particolare
le dipendenze sono state soddisfatte. Un altro dei principali miglioramenti di Upstart rispetto a System V init è
che può avviare i servizi reagendo quando si verificano determinati eventi (come quando un pezzo di
l'hardware è collegato).

Se stai usando un sistema Linux che impiega Upstart, dovresti sapere alcune cose a riguardo
esso. Il primo processo che inizia su un sistema Upstart è ancora chiamato processo init, ma esso
è in realtà un demone Upstart. Dopo che è in esecuzione, i servizi in un registro di sistema Upstart
eventi con il demone Upstart. Quando si verifica un evento, Upstart può essere avviato, interrotto o modificato
un processo per reagire a quell'evento.

Perché Upstart è stato gradualmente eliminato dalle distribuzioni Linux trattate in questo libro
(Fedora, RHEL, Debian e Ubuntu), la nostra discussione sulla comprensione e la risoluzione dei problemi
il processo di avvio è focalizzato sul tradizionale processo di inizializzazione di System V e sul più recente
impianto systemd.

A partire dal firmware (BIOS o UEFI)


Quando si accende fisicamente un computer, viene caricato il firmware per inizializzare l'hardware e
trova un sistema operativo da avviare. Sulle architetture di PC, quel firmware è stato tradizionalmente
denominato BIOS (Basic Input Output System). Negli ultimi anni, un nuovo tipo di firmware
è diventato disponibile (per sostituire il BIOS su alcuni computer), chiamato UEFI (Unified Extensible
Interfaccia firmware). I due si escludono a vicenda.

UEFI è stato progettato per consentire una funzionalità di avvio sicuro, che può essere utilizzata solo per garantire che
i sistemi operativi i cui componenti sono stati firmati possono essere utilizzati durante l'avvio
processi. UEFI può ancora essere utilizzato con sistemi operativi non firmati disabilitando il secure
funzione di avvio.

Per Ubuntu, l'avvio protetto è stato supportato per la prima volta nella 12.04.2. Anche RHEL 7 supporta ufficialmente
avvio sicuro. Il compito principale del BIOS e del firmware UEFI è inizializzare l'hardware e poi
trasferire il controllo del processo di avvio a un boot loader. Il boot loader quindi trova e si avvia
il sistema operativo. Dopo aver installato un sistema operativo, in genere dovresti lasciare che il file
il firmware fa il suo lavoro e non lo interrompe.

554

Pagina 595

Capitolo 21: Risoluzione dei problemi di Linux

Ci sono, tuttavia, occasioni in cui si desidera interrompere il firmware. Per questa discussione,
ci concentriamo su come funziona generalmente il BIOS. Subito dopo aver acceso l'alimentazione, dovresti vedere
una schermata del BIOS che di solito include alcune parole che indicano come entrare in modalità Setup e
modificare l'ordine di avvio. Se si preme il tasto funzione annotato (spesso F1, F2 o F12) per scegliere
uno di questi due elementi, ecco cosa puoi fare: 21
■ Utilità di configurazione: l'utilità di configurazione consente di modificare le impostazioni nel BIOS. Questi set-
tings possono essere utilizzati per abilitare o disabilitare determinati componenti hardware o attivare o
disattivare le funzionalità hardware selezionate.
■ Ordine di avvio: i computer sono in grado di avviare un sistema operativo o più
in particolare, un boot loader che può avviare un sistema operativo, da diversi file
dispositivi collegati al computer. Questi dispositivi possono includere un'unità CD, un'unità DVD,
disco rigido, driver USB o scheda di interfaccia di rete. L'ordine di avvio definisce l'ordine
in cui vengono controllati tali dispositivi. Modificando l'ordine di avvio, puoi dire al file
computer per ignorare temporaneamente l'ordine di avvio predefinito e provare ad eseguire l'avvio dal
dispositivo selezionato.

Per la mia workstation Dell, dopo aver visualizzato la schermata del BIOS, premo immediatamente la funzione F2
per accedere a Setup o F12 per modificare temporaneamente l'ordine di avvio. Le prossime sezioni
esplora cosa puoi risolvere dalle schermate di configurazione e ordine di avvio.

Risoluzione dei problemi di configurazione del BIOS


Come ho già notato, di solito puoi lasciare che il BIOS si avvii senza interruzioni e avere l'estensione
avvio del sistema dal dispositivo di avvio predefinito (probabilmente il disco rigido). Tuttavia, eccone alcuni
casi in cui potresti voler entrare in modalità Setup e cambiare qualcosa nel BIOS:

■ Per visualizzare una panoramica dell'hardware: se il problema della risoluzione dei problemi è
in relazione all'hardware, la configurazione del BIOS è un ottimo punto di partenza per esaminare il sistema.
La schermata Setup ti dice il tipo di sistema, la sua versione del BIOS, i suoi processori, i suoi
slot di memoria e tipi, sia a 32 bit che a 64 bit, quali dispositivi si trovano in ciascuno
slot e molti dettagli sui tipi di dispositivi collegati al sistema.
Se non è possibile avviare un sistema operativo, potrebbe essere visualizzata la schermata di configurazione del BIOS
l'unico modo per determinare il modello di sistema, il tipo di processore e altre informazioni
è necessario cercare aiuto o chiamare assistenza.
■ Per disabilitare / abilitare un dispositivo: la maggior parte dei dispositivi collegati al computer è abilitata
e reso disponibile per l'uso dal sistema operativo. Per risolvere un problema, tu
potrebbe essere necessario disabilitare un dispositivo.

Ad esempio, supponiamo che il tuo computer abbia due schede di interfaccia di rete (NIC). voi
desidera utilizzare la seconda NIC per installare Linux su una rete, ma l'installatore continua
cercando di utilizzare il primo NIC per connettersi alla rete. Puoi disabilitare il primo NIC
quindi l'installatore non vede nemmeno la NIC quando cerca di connettersi alla rete.
In alternativa, puoi mantenere la NIC visibile al computer, ma semplicemente disabilitare l'abilit della NIC
lità all'avvio PXE.

555

Pagina 596

Parte IV: diventare un amministratore di server Linux

Forse hai una scheda audio e vuoi disabilitare l'audio integrato su


scheda madre. Questo può essere fatto anche nel BIOS.
Al contrario, a volte vuoi abilitare un dispositivo che è stato disabilitato. Forse
ti è stato fornito un computer con un dispositivo disabilitato nel BIOS. Dall'operazione
Ad esempio, potrebbe sembrare che tu non abbia una porta parallela (LPT) o un CD
guidare. Guardando il BIOS ti dice se quei dispositivi non sono disponibili semplicemente
perché sono stati disabilitati nel BIOS.
■ Per modificare un'impostazione del dispositivo: a volte, le impostazioni predefinite fornite nel file
Il BIOS non funziona per la tua situazione. Potresti voler modificare le seguenti impostazioni
nel BIOS:
■ Impostazioni di avvio PXE NIC: la maggior parte delle NIC moderne è in grado di eseguire l'avvio dai server
trovato sulla rete. Se è necessario farlo e si scopre che il NIC non lo fa
si presenta come un dispositivo avviabile sulla schermata Boot Order, potrebbe essere necessario abilitare
quella caratteristica nel BIOS.
■ Impostazioni di virtualizzazione: se si desidera eseguire un sistema RHEL come host virtuale,
la CPU del computer deve includere Intel Virtual Technology o AMD Secure Virtual
Supporto della macchina (SVM). È possibile, tuttavia, che anche se la tua CPU arriva
con quel supporto, potrebbe non essere abilitato nel BIOS. Per abilitarlo, vai al
Schermata di configurazione del BIOS e cercare una selezione di virtualizzazione (possibilmente sotto
Categoria di prestazione). Assicurati che sia impostato su On.

Risoluzione dei problemi relativi all'ordine di avvio


A seconda dell'hardware collegato al computer, potrebbe avviarsi un tipico ordine di avvio
prima un'unità CD / DVD, quindi il disco rigido, quindi un dispositivo USB e infine la rete
scheda di interfaccia. Il BIOS andrebbe su ogni dispositivo, cercando un boot loader nel master
record di avvio per quel dispositivo. Se il BIOS trova un boot loader, lo avvia. Se nessun boot loader è
individuato, il BIOS passa al dispositivo successivo, finché non vengono provati tutti. Se non viene trovato alcun boot loader,
il computer non si avvia.

Un problema che potrebbe verificarsi con l'ordine di avvio è che il dispositivo che si desidera avviare potrebbe
non appare affatto nell'ordine di avvio. In tal caso, andando alla schermata Impostazioni, come descritto in
la sezione precedente, per abilitare il dispositivo o modificare un'impostazione per renderlo avviabile,
potrebbe essere la cosa da fare.

Se il dispositivo da cui si desidera eseguire l'avvio appare nell'ordine di avvio, in genere è sufficiente
per spostare il tasto freccia per evidenziare il dispositivo desiderato e premere Invio. I seguenti sono
motivi per scegliere il proprio dispositivo da avviare:
■ Modalità salvataggio: se Linux non si avvia dal disco rigido, selezionare il CD
o un'unità USB consente di avviare una modalità di ripristino (descritta più avanti in questo
capitolo) che può aiutarti a riparare il disco rigido su un sistema non avviabile. Vedere
la sezione "Risoluzione dei problemi in modalità Rescue" più avanti in questo capitolo per ulteriori informazioni
informazione.

556

Pagina 597

Capitolo 21: Risoluzione dei problemi di Linux

■ Nuova installazione: a volte, l'ordine di avvio ha il disco rigido elencato per primo. Se tu
decidere che è necessario eseguire una nuova installazione del sistema operativo, è necessario selezionare
il dispositivo di avvio che contiene il supporto di installazione (CD, DVD, unità USB,
o NIC).
21
Supponendo che tu abbia superato tutti i problemi che hai con il BIOS, il passaggio successivo è per il BIOS
per avviare il boot loader.

Risoluzione dei problemi con il boot loader GRUB


In genere, il BIOS trova il record di avvio principale sul primo disco rigido e avvia il caricamento
quel boot loader in più fasi. Il Capitolo 9, "Installazione di Linux", descrive il boot loader GRUB
che viene utilizzato con la maggior parte dei sistemi Linux moderni, inclusi RHEL, Fedora e Ubuntu. Il
Il boot loader GRUB in RHEL 6, descritto qui, è una versione precedente all'avvio di GRUB 2
caricatore incluso con RHEL 7, Fedora e Ubuntu. (Più tardi, ti presento GRUB 2
anche boot loader.)

In questa discussione, sono interessato al boot loader dal punto di vista di cosa fare se
il boot loader non riesce o quali modi potresti voler interrompere il boot loader per cambiare
il comportamento del processo di avvio.

Ecco alcuni modi in cui il boot loader potrebbe non riuscire in RHEL 6 e alcuni modi in cui puoi
superare quei fallimenti:

■ Impossibile individuare la partizione attiva: quando un caricatore di avvio è installato su una memoria
medio, la partizione è generalmente contrassegnata come avviabile. Se vedi questo messaggio, esso
significa che non è stata trovata alcuna partizione avviabile. Se sei sicuro che il boot loader sia
sul disco, prova a utilizzare il comando fdisk (probabilmente dal supporto di ripristino) per creare
la partizione avviabile e riprova. Vedere la sezione "Partizionamento dei dischi rigidi" di
Capitolo 12, "Gestione di dischi e file system", per ulteriori informazioni su fdisk
comando.
■ Dispositivo di avvio selezionato non disponibile: potrebbe essere visualizzato un messaggio come questo quando il file
il record di avvio principale è stato eliminato dal disco rigido. O potrebbe essere solo quello
il contenuto del disco rigido si aspetta di essere caricato da un altro boot loader, come
come un CD di avvio. Innanzitutto, prova a vedere se il sistema si avvia da altri supporti. Se gira
fuori che il record di avvio principale è stato cancellato, puoi provare ad avviare il supporto di ripristino in
tentare di ripristinare il contenuto del disco. Tuttavia, se il record di avvio principale
è perso, è possibile che anche altri dati sul disco vengano cancellati o lo facciano
richiedono l'analisi forense del disco per trovare. Se il record di avvio principale è stato semplicemente sovrascritto
(cosa che potrebbe accadere se hai installato un altro sistema operativo su un disco diverso
partizione), potrebbe essere possibile reinstallare il record di avvio principale dalla modalità di ripristino
(descritto nella sezione "Risoluzione dei problemi in modalità Rescue" più avanti in questo capitolo).
■ Viene visualizzato il prompt di GRUB basato su testo: è possibile che il BIOS avvii GRUB e proceda
direttamente a un prompt di GRUB, senza selezioni del sistema operativo disponibili.

557

Pagina 598
Parte IV: diventare un amministratore di server Linux

Questo probabilmente significa che è stata trovata la parte del record di avvio principale di GRUB, ma
quando GRUB ha cercato sul disco rigido per trovare la fase successiva del processo di avvio
e un menu di sistemi operativi da caricare, non riusciva a trovarli. A volte questo
accade quando il BIOS rileva i dischi nell'ordine sbagliato e cerca il file
grub.conf nella partizione sbagliata.
Una soluzione alternativa a questo problema, supponendo che grub.conf si trovi nella prima partizione di
il primo disco, è elencare il contenuto di questo file e inserire la radice, il kernel e
righe di initrd manualmente. Per elencare il file, digita cat (hd0,0) /grub/grub.conf .
Se non funziona, prova hd0,1 per accedere alla partizione successiva su quel disco (e così via
on) o hd1,0 per provare la prima partizione del disco successivo (e così via). Quando trovi
le righe che rappresentano il file grub.conf, digitare manualmente root, kernel e
initrd per la voce che desideri (sostituendo la posizione del disco rigido tu
trovato sulla linea radice). Quindi digita boot . Il sistema dovrebbe avviarsi e tu puoi
vai e correggi manualmente i file del boot loader. Vedere il Capitolo 9 per ulteriori informazioni su
il boot loader GRUB.

Se il BIOS trova il boot loader nel record di avvio principale del disco e in quel boot loader
trova i file di configurazione di GRUB sul disco, il boot loader avvia un conto alla rovescia di circa
da tre a cinque secondi. Durante quel conto alla rovescia, puoi interrompere il boot loader (prima di esso
avvia il sistema operativo predefinito) premendo un tasto qualsiasi.

Quando interrompi il boot loader, dovresti vedere un menu di voci disponibili per l'avvio.
Queste voci possono rappresentare diversi kernel disponibili per l'avvio. Ma possono anche rappresentare
sistemi operativi completamente diversi (come Windows, BSD o Ubuntu).

Ecco alcuni motivi per interrompere il processo di avvio dal menu di avvio per risolvere i problemi
Linux:

■ Per iniziare in un runlevel diverso : i sistemi RHEL 6 in genere si avviano in runlevel


3 (avvio dal prompt di testo) o 5 (avvio dall'interfaccia grafica). Puoi sovrascrivere il file
runlevel predefinito inserendo un numero di runlevel diverso alla fine del kernel
riga dal menu di avvio. Per fare ciò, evidenzia la voce del sistema operativo che hai
want, digita e , evidenzia il kernel, digita e e aggiungi il nuovo runlevel alla fine di
la riga (ad esempio, aggiungi uno spazio e il numero 1 per entrare in modalità utente singolo).
Quindi premere Invio e digitare b per avviare la nuova voce.
Perché dovresti avviare runlevel diversi per la risoluzione dei problemi? Runlevel 1 bypassa
autenticazione, quindi si avvia direttamente da un prompt di root. Questo va bene se lo hai
ho dimenticato la password di root e devi cambiarla (digita passwd per farlo).
Il runlevel 3 ignora l'inizio dell'interfaccia desktop. Vai al runlevel 3 se tu
hai problemi con il tuo driver video e vuoi provare a eseguirne il debug senza di esso
cercando di avviare automaticamente l'interfaccia grafica.
■ Per selezionare un kernel diverso: quando RHEL installa un nuovo kernel tramite yum, lo fa sempre
mantiene almeno un vecchio kernel in giro. Se il nuovo kernel fallisce, puoi sempre avviare
il precedente, presumibilmente funzionante, vecchio kernel. Per avviare un kernel diverso da

558

Pagina 599

Capitolo 21: Risoluzione dei problemi di Linux

Menu di GRUB, usa semplicemente il tasto freccia per evidenziare quello che desideri e premi Invio
per avviarlo.
■ Per selezionare un sistema operativo diverso: se si dispone di un altro sistema operativo
sistema installato sul tuo disco rigido, puoi scegliere di avviare quello invece di
RHEL. Ad esempio, se hai Fedora e RHEL sullo stesso computer e RHEL 21
non funziona, puoi avviare Fedora, montare i filesystem RHEL di cui hai bisogno e
prova a risolvere il problema.
■ Per modificare le opzioni di avvio: nella riga del kernel, notare che ci sono molte opzioni
essere passato al kernel. Per lo meno, queste opzioni devono contenere l'estensione
nome del kernel (come vmlinuz-2.6.32.el6.x86_64) e la partizione
contenente il filesystem radice (come / dev / mapper / abc-root). Se vuoi,
puoi aggiungere altre opzioni alla riga del kernel.
Potresti voler aggiungere opzioni del kernel per aggiungere funzionalità al kernel o temporaneamente
disabilitare il supporto hardware per un particolare componente. Ad esempio, aggiungendo
init = / bin / bash fa sì che il sistema ignori il processo di inizializzazione e vada direttamente a
una shell (simile all'esecuzione di init 1). In RHEL 7, l'aggiunta di 1 come opzione del kernel non lo è
supportato, quindi init = / bin / bash è il modo migliore per entrare in una sorta di utente singolo
modalità. L'aggiunta di nousb disabiliterebbe temporaneamente le porte USB (presumibilmente per rendere
sicuro che anche qualsiasi cosa collegata a quelle porte sarebbe disabilitata).
Supponendo che tu abbia selezionato il kernel che desideri, il boot loader cerca di eseguire il kernel,
compreso il contenuto del disco RAM iniziale (che contiene driver e altro software
necessario per avviare il tuo particolare hardware).

Avvio del kernel


Dopo l'avvio del kernel, non c'è molto da fare se non osservare potenziali problemi. Per
RHEL, vedi una schermata di Red Hat Enterprise Linux con un'icona che gira lentamente. Se lo desidera
guardare i messaggi che descrivono il processo di avvio scorrere, premere il tasto Esc.

A questo punto, il kernel prova a caricare i driver e i moduli necessari per utilizzare l'hardware
sul computer. Le cose principali da cercare a questo punto (sebbene possano scorrere
rapidamente) sono guasti hardware che potrebbero impedire il corretto funzionamento di alcune funzionalità.
Sebbene sia molto più raro di prima, potrebbe non esserci alcun driver disponibile per un pezzo di
hardware o il driver sbagliato potrebbe essere caricato e causare errori.

Oltre a scorrere sullo schermo, i messaggi prodotti all'avvio del kernel sono
copiato nel ring buffer del kernel . Come suggerisce il nome, il ring buffer del kernel memorizza il kernel
messaggi in un buffer, eliminando i messaggi più vecchi dopo che il buffer è pieno. Dopo il
il computer si avvia completamente, è possibile accedere al sistema e digitare il seguente comando
per catturare questi messaggi del kernel in un file (quindi visualizzarli con il comando less):

# dmesg> /tmp/kernel_msg.txt
# meno /tmp/kernel_msg.txt

559

Pagina 600

Parte IV: diventare un amministratore di server Linux

Mi piace indirizzare i messaggi del kernel in un file (scegli il nome che preferisci) in modo che i messaggi possano farlo
essere esaminato in seguito o inviato a qualcuno che può aiutare a eseguire il debug di eventuali problemi. Vengono visualizzati i messaggi
man mano che vengono rilevati componenti, come CPU, memoria, schede di rete, dischi rigidi e così via.

Nei sistemi Linux che supportano systemd, i messaggi del kernel vengono memorizzati nel file systemd
rivista. Quindi, invece di usare il comando dmesg, puoi eseguire journalctl per vedere il kernel
messaggi dal momento dell'avvio ad oggi. Ad esempio, ecco i messaggi del kernel emessi da
un sistema RHEL 7:

# journalctl -k
7 settembre 12:03:07 kernel host: microcodice CPU0 aggiornato in anticipo alla revisione
0xbc
7 settembre 12:03:07 kernel host: inizializzazione di cgroup subsys cpuset
7 settembre 12:03:07 kernel host: inizializzazione della cpu subsys di cgroup
7 settembre 12:03:07 kernel host: inizializzazione di cgroup subsys cpuacct
7 settembre 12:03:07 kernel host: Linux versione 3.10.0-123.6.3.el7.x86_64
7 settembre 12:03:07 kernel host: Riga di comando:
BOOT_IMAGE = / vmlinuz-3.10.0-123.6.3.el7.x86_64 root = / dev / mapper / vg
7 settembre 12:03:07 kernel host: e820: mappa RAM fisica fornita dal BIOS:
...

Cerca i driver che non si caricano o i messaggi che mostrano che alcune funzionalità dell'hard-
ware non è stato abilitato. Ad esempio, una volta avevo una scheda sintonizzatore TV (per guardare la televisione
sullo schermo del computer) che ha impostato il tipo di sintonizzatore errato per la scheda rilevata. Utilizzando
informazioni sul numero di modello della scheda TV e il tipo di guasto, ho scoperto che passava
un'opzione per il driver della scheda mi ha permesso di provare diverse impostazioni finché non ho trovato quella che
abbinato alla mia scheda sintonizzatore.

Nel descrivere come visualizzare i messaggi di avvio del kernel, sono andato un po 'più avanti di me stesso.
Prima di poter accedere e vedere i messaggi del kernel, è necessario che il kernel finisca di avviare
il sistema. Non appena il kernel ha terminato di rilevare l'hardware e caricare i driver,
passa il controllo di tutto ciò che deve essere fatto per avviare il sistema a
sistema di inizializzazione.

Risoluzione dei problemi del sistema di inizializzazione


Il primo processo da eseguire su un sistema in cui il kernel è appena stato avviato dipende da
funzione di inizializzazione utilizzata dal sistema. Per System V init, il primo processo da eseguire è
il processo di init. Per systemd, il primo processo è systemd. A seconda di quale tu
vedi in esecuzione sul tuo sistema (digita ps -ef | head per controllare), segui il System V
o le descrizioni di systemd di seguito. RHEL 6, che contiene un ibrido di Upstart e System V
init, viene utilizzato nell'esempio di inizializzazione di System V.

Risoluzione dei problemi di inizializzazione di System V.


La maggior parte dei sistemi Linux fino a pochi anni fa utilizzava System V init per inizializzare i servizi
il sistema Linux. In RHEL 6, quando il kernel passa il controllo del processo di avvio al file
560

Pagina 601

Capitolo 21: Risoluzione dei problemi di Linux

init, il processo init controlla il file / etc / inittab per le indicazioni su come farlo
avvia il sistema.

Il file inittab dice al processo init qual è il runlevel predefinito e quindi punta
file nella directory / etc / init per fare cose come rimappare alcune sequenze di tasti (come
21
Ctrl + Alt + Canc per riavviare il sistema), avviare le console virtuali e identificare la posizione di
lo script per inizializzare i servizi di base sul sistema: /etc/rc.sysinit.

Quando risolvi i problemi di Linux che si verificano dopo che il processo di inizializzazione ha preso il sopravvento
due probabili colpevoli sono l'elaborazione da parte del file rc.sysinit e gli script runlevel.

Risoluzione dei problemi rc.sysinit


Come suggerisce il nome, lo script /etc/rc.sysinit inizializza molte funzionalità di base in
sistema. Quando quel file viene eseguito da init, rc.sysinit imposta il nome host del sistema, configura
i filesystem / proc e / sys, imposta SELinux, imposta i parametri del kernel ed esegue
dozzine di altre azioni.

Una delle funzioni più critiche di rc.sysinit è quella di impostare l'archiviazione su


sistema. Infatti, se il processo di avvio fallisce durante l'elaborazione di rc.sysinit, in tutto
probabilmente lo script non è stato in grado di trovare, montare o decrittografare l'archivio locale o remoto
dispositivi necessari per il funzionamento del sistema.

Di seguito è riportato un elenco di alcuni errori comuni che possono verificarsi da attività eseguite da
rc.sysinit e modi per gestire tali errori.

■I montaggi locali falliscono: se una voce in / etc / fstab non riesce a montare, il boot
il processo termina prima dell'avvio dei servizi di runlevel. Ciò accade in genere quando aggiungi
una voce in / etc / fstab che contiene un errore, ma hai trascurato di testarla
prima di riavviare. Quando il file fstab fallisce, vieni trascinato in una shell per il
utente root con il filesystem root montato in sola lettura. Per risolvere il problema, è necessario
per rimontare il filesystem root, correggere il file fstab, montare la voce filesystem
per assicurarti che ora funzioni e riavviare. Ecco cos'è quella sequenza di comandi
sembra:
# mount -o rimontare, rw /
# vim / etc / fstab
# mount -a
# riavvio

Il comando vim viene utilizzato in particolare quando si modifica il file / etc / fstab perché conosce il formato di quel file.
Quando si utilizza vim, le colonne sono a colori e viene eseguito un controllo degli errori. Ad esempio, le voci nel file Mount
Il campo delle opzioni diventa verde quando sono valide e nero quando non lo sono.

561

Pagina 602

Parte IV: diventare un amministratore di server Linux

■ Nome host non impostato: se il nome host non è impostato correttamente, è possibile controllare
l'elaborazione di rc.sysinit per vedere cosa potrebbe essere andato storto. Per impostare il
il nome host del sistema, rc.sysinit utilizza il valore di HOSTNAME = nel file
/ etc / sysconfig / file di rete. Se non è impostato, viene utilizzato il nome localhost
anziché. Il valore del nome host può anche essere acquisito dal server DHCP.
■ Impossibile decrittografare il filesystem : lo script rc.sysinit cerca in / etc / crypttab
file per le informazioni necessarie per decrittografare i file system crittografati. Se quel file diventa
danneggiato, potrebbe essere necessario trovare un backup del file per poter decrittografare il file
filesystem. Se ti viene richiesta una password e non sai cosa sia, tu
potrebbe essere sfortunato.

Anche altre funzionalità sono impostate dal file rc.sysinit. Lo script rc.sysinit imposta l'estensione
Modalità SELinux e carica i moduli hardware. Lo script costruisce array RAID software e
imposta i gruppi di volumi ei volumi di Gestione dei volumi logici. Problemi che si verificano in qualsiasi
di queste aree si riflettono nei messaggi di errore che appaiono sullo schermo dopo il kernel
si avvia e prima dell'avvio dei processi runlevel.

Risoluzione dei problemi dei processi runlevel


In Red Hat Enterprise Linux 6. xe versioni precedenti, quando il sistema viene avviato per la prima volta, i servizi lo sono
avviato in base al runlevel predefinito. Sono disponibili sette diversi runlevel, da 0 a 6. Il file
il runlevel predefinito è tipicamente 3 (per un server) o 5 (per un desktop). Ecco le descrizioni di
runlevel nei sistemi Linux fino a RHEL 6:

■0 : runlevel di arresto. Tutti i processi vengono interrotti e il computer viene alimentato


giù.
■1 : runlevel per utente singolo. Solo quei processi che sono necessari per avviare il computer
(incluso il montaggio di tutti i filesystem) e avere il sistema disponibile dal
console vengono eseguite. La rete e i servizi di rete non vengono avviati. Questo runlevel
ignora la normale autenticazione e si avvia al prompt di un utente root (chiamato
sulogin). Se avvii questa modalità, puoi usarla per diventare immediatamente root
utente per modificare una password di root dimenticata. (Puoi anche usare la parola single
invece di 1 per arrivare al runlevel per utente singolo. La differenza tra single e 1 è
quel singolo non avvia gli script nella directory /etc/rc1.d.)
■2 : runlevel multiutente. Questo runlevel è usato raramente oggi. Il significato originale
di questo runlevel è stato perso. I primi sistemi UNIX usavano questo runlevel per avviare tty
processi per i sistemi in cui c'erano più terminali stupidi collegati a
sistema utilizzabile dalle persone. Ciò ha permesso a molte persone di accedere a un sistema simultaneamente
ously da terminali basati sui caratteri (molte persone lavorano da una shell con
nessuna interfaccia grafica). Le interfacce di rete non sono state avviate, di solito perché
le interfacce di rete sempre attive non erano comuni. In questi giorni, di solito runlevel 2
avvia le interfacce di rete, sebbene non tutti i servizi di rete vengano avviati.
■3 : runlevel multiutente più rete. Questo runlevel viene tipicamente utilizzato su Linux
server che non si avviano tramite un'interfaccia grafica, ma solo un testo semplice

562

Pagina 603

Capitolo 21: Risoluzione dei problemi di Linux

prompt sulla console. La rete viene avviata, così come tutti i servizi di rete. UN
l'ambiente desktop grafico può o non può essere installato (in genere no) su
macchine che si avviano al runlevel 3, ma gli ambienti grafici devono essere avviati
dopo l'avvio da utilizzare.
■ 4: non definito. Questo runlevel tende ad avviare gli stessi servizi del runlevel 3. Può farlo 21
essere utilizzato se si desidera avere diversi servizi disponibili dai runlevel 3 e 4. Questo
runlevel in genere non viene utilizzato. Invece, il runlevel 3 o 5 viene utilizzato per l'avvio, con un file
amministratore semplicemente attivando o disattivando i servizi come richiesto dal sistema in esecuzione.
■ 5: runlevel multiutente, networking e interfaccia grafica. Questo è il runlevel
tipicamente utilizzato con i sistemi Linux desktop. In genere avvia la rete e tutto il resto
servizi in rete; inoltre, avvia un prompt grafico di accesso alla console. quando
gli utenti accedono, vedono un ambiente desktop grafico.
■ 6: riavvia il runlevel. Questo è come il runlevel 0 in quanto disattiva tutti i servizi e
arresta tutti i processi. Tuttavia, il runlevel 6 avvia nuovamente il sistema.

I runlevel hanno lo scopo di impostare il livello di attività su un sistema Linux. Un runlevel predefinito è
impostato nel file / etc / inittab, ma puoi cambiare il runlevel ogni volta che vuoi usare
il comando init. Ad esempio, come root, potresti digitare init 0 per lo spegnimento, init 3 se
vuoi terminare l'interfaccia grafica (dal runlevel 5) ma lasciare tutti gli altri servizi attivi, o
init 6 per riavviare.

I normali runlevel predefiniti (in altre parole, il runlevel da cui si avvia) sono 3 (per un server) e
5 (per un desktop). Spesso i server non hanno desktop installati, quindi si avviano al runlevel 3
non comportano il sovraccarico di elaborazione o i rischi aggiuntivi per la sicurezza per avere un desktop
in esecuzione sui propri server web o file server.
Puoi salire o scendere con i runlevel. Ad esempio, un amministratore che esegue la manutenzione
nance su un sistema può avviarsi al runlevel 1 e quindi digitare init 3 per avviarsi completamente
servizi necessari su un server. Qualcuno che esegue il debug di un desktop potrebbe avviarsi al runlevel 5 e
quindi vai al runlevel 3 per provare a riparare il desktop (ad esempio installa un nuovo driver o modifica
risoluzione dello schermo) prima di digitare init 5 per tornare al desktop.

Il livello dei servizi in ogni runlevel è determinato dagli script runlevel che sono
impostato per iniziare. Ci sono directory rc per ogni runlevel: /etc/rc0.d/, /etc/rc1.d/,
/etc/rc2.d/, /etc/rc3.d/ e così via. Quando un'applicazione ha uno script di avvio associa
A seguito di ciò, lo script viene posizionato nella directory /etc/init.d/ e quindi simbolicamente
collegato a un file in ciascuna directory /etc/rc?.d/ .

Gli script collegati a ciascuna directory /etc/rc?.d iniziano con la lettera K o S seguite
da due numeri e dal nome del servizio. Uno script che inizia con K indica che il servizio
dovrebbe essere interrotto, mentre uno che inizia con una S indica che dovrebbe essere avviato. Il due
i numeri che seguono indicano l'ordine in cui viene avviato il servizio. Ecco alcuni file
potresti trovarli nella directory /etc/rc3.d/, che sono impostati per l'avvio (con una descrizione
di ciascuno a destra):

563

Pagina 604

Parte IV: diventare un amministratore di server Linux

■ S01sysstat: avvia la raccolta delle statistiche di sistema.

■ S08iptables: avvia iptables firewall.


■ S10network: avvia le interfacce di rete.
■ S12rsyslog: avvia la registrazione del sistema.
■ S28autofs: avvia l'automounter.

■ S50bluetooth: avvia il servizio Bluetooth.


■ S55sshd: avvia il servizio Secure Shell.
■ S58ntpd: avvia il servizio di sincronizzazione dell'ora NTP.
■ S85httpd: avvia il servizio Web Apache.

■ S90crond: avvia il servizio crond.


■ S91smb: avvia il servizio Samba.
■ S97rhnsd: avvia il servizio Red Hat Network.
■ S99local: avvia i comandi locali definiti dall'utente.

Questo esempio di alcuni servizi avviati dalla directory /etc/rc3.d dovrebbe darti
un'idea dell'ordine in cui i processi si avviano quando si entra nel runlevel 3. Notare che
il servizio sysstat (che raccoglie le statistiche di sistema) e il servizio iptables (che
crea il firewall del sistema) vengono entrambi avviati prima dell'avvio delle interfacce di rete.
Questi sono seguiti da rsyslog (servizio di registrazione del sistema) e poi dai vari in rete
Servizi.

Quando iniziano gli script runlevel, dovresti già avere un sistema che è fondamentalmente
installato e funzionante. A differenza di altri sistemi Linux che avviano tutti gli script per il runlevel 1,
poi 2, poi 3 e così via, RHEL va direttamente alla directory che rappresenta il runlevel,
interrompendo prima tutti i servizi che iniziano con K e avviando tutti quelli che iniziano con S in
quella directory.

Durante l'esecuzione di ogni script S, dovresti vedere un messaggio che indica se il servizio è stato avviato. Qui
ci sono alcune cose che potrebbero andare storte durante questa fase di avvio del sistema:

■ Un servizio può fallire . Un servizio potrebbe richiedere l'accesso alle interfacce di rete per l'avvio
correttamente o accedere a una partizione del disco che non è montata. La maggior parte dei servizi va in timeout,
fallire e consentire l'esecuzione dello script successivo. Dopo essere stato in grado di accedere, è possibile eseguire il debug
il servizio. Alcune tecniche per il debug dei servizi includono l'aggiunta di un'opzione di debug
al processo del daemon in modo che sputi più dati in un file di registro o che esegue il daemon
elaborare manualmente in modo che i messaggi di errore arrivino direttamente sullo schermo. Vedere il Capitolo 15 per
ulteriori informazioni sull'avvio manuale dei servizi.
■ Un servizio può bloccarsi . Alcuni servizi che non ottengono ciò di cui hanno bisogno per iniziare possono farlo
si blocca a tempo indeterminato, impedendoti di accedere per eseguire il debug del problema. Alcuni
i processi richiedono più tempo per essere eseguiti la prima volta dopo una nuova installazione, quindi potresti

564
Pagina 605

Capitolo 21: Risoluzione dei problemi di Linux

voglio aspettare qualche minuto per vedere se lo script funziona ancora e non solo
girando per sempre.

Se non riesci a superare un servizio sospeso, puoi riavviare in una modalità di avvio interattiva ,
dove viene richiesto prima di avviare ogni servizio. Per accedere alla modalità di avvio interattivo
21
in RHEL, riavvia e interrompi il boot loader (premi un tasto qualsiasi quando vedi 5 secondi
conto alla rovescia). Evidenzia la voce che desideri avviare e digita e . Evidenzia la riga del kernel,
e digita e . Quindi aggiungi la parola conferma alla fine della riga del kernel, premi Invio e
digitare b per avviare il nuovo kernel.

La Figura 21.1 mostra un esempio dei messaggi che appaiono all'avvio di RHEL in interac-
modalità di avvio attiva.

FIGURA 21.1

Conferma ogni servizio in modalità di avvio interattivo RHEL.

La maggior parte dei messaggi mostrati nella Figura 21.1 sono generati da rc.sysinit.

Dopo il messaggio di benvenuto, udev si avvia (per controllare il nuovo hardware collegato a
il sistema e caricare i driver secondo necessità). Il nome host è impostato, Logical Volume Management
(LVM) vengono attivati ​i volumi, vengono controllati tutti i filesystem (con i volumi LVM aggiunti), qualsiasi
i filesystem non ancora montati vengono montati, il filesystem root viene rimontato in lettura-scrittura e
tutti gli scambi LVM sono abilitati. Fare riferimento al Capitolo 12 per ulteriori informazioni su LVM e altro
tipi di partizioni e filesystem.

L'ultimo messaggio "Accesso all'avvio interattivo" indica che rc.sysinit è terminato e


i servizi per il runlevel selezionato sono pronti per l'avvio. Poiché il sistema è in interazione
modalità attiva, viene visualizzato un messaggio che chiede se si desidera avviare il primo servizio (sysstat). genere
Y per avviare quel servizio e passare a quello successivo.

Dopo aver visualizzato il servizio interrotto che richiede l'avvio, digita N per mantenerlo
di partenza. Se, ad un certo punto, si sente il resto dei servizi sono sicuri per iniziare, digitare C a

565

Pagina 606

Parte IV: diventare un amministratore di server Linux

continuare ad avviare il resto dei servizi. Dopo che il tuo sistema si è avviato, con il file rotto
servizi non avviati, puoi tornare indietro e provare a eseguire il debug di quei singoli servizi.

Un ultimo commento sugli script di avvio: il file /etc/rc.local è uno degli ultimi
servizi da eseguire a ogni runlevel. Ad esempio, nel runlevel 5, è collegato a /etc/rc5.d/
S99local. Qualsiasi comando che desideri eseguire ogni volta che il tuo sistema si avvia può essere inserito
il file rc.local.
Potresti usare rc.local per inviare un messaggio di posta elettronica o eseguire una rapida regola del firewall iptables quando
il sistema si avvia. In generale, è meglio utilizzare uno script di avvio esistente o crearne uno nuovo
te stesso (in modo da poter gestire il comando oi comandi come servizio). Sappi che il file rc.local
file è un modo semplice e veloce per ottenere alcuni comandi da eseguire ogni volta che il sistema si avvia.

Risoluzione dei problemi di inizializzazione di systemd


Le ultime versioni di Fedora, RHEL e presto Ubuntu usano systemd invece di System V
init come sistema di inizializzazione. Quando il demone systemd (/ usr / lib / systemd /
systemd) viene avviato dopo l'avvio del kernel, mette in moto tutti gli altri servizi che
sono impostati per l'avvio. In particolare, chiude i contenuti del file / etc / systemd / system /
file default.target. Per esempio:

# cat /etc/systemd/system/default.target
...
[Unità]
Descrizione = Interfaccia grafica
Documentazione = man: systemd.special (7)
Richiede = multi-user.target
Dopo = multi-user.target
Conflitti = rescue.target
Vuole = display-manager.service
AllowIsolate = sì

[Installare]
Alias ​= default.target

Il file default.target è in realtà un collegamento simbolico a un file in / lib / systemd / system


directory. Per un server, può essere collegato al file multi-user.target; per un desktop, esso
è collegato al file graphical.target (come mostrato qui).

A differenza della funzione di inizializzazione di System V, che esegue solo gli script di servizio in alfanumerico
ordine, il servizio systemd deve funzionare all'indietro rispetto al default.target per
minare quali servizi e altri obiettivi vengono eseguiti. In questo esempio, default.target è un file
collegamento simbolico al file graphical.target. Quando elenchi il contenuto di quel file, tu
può vedere quanto segue:

■ Il multi-user.target deve essere avviato per primo.

■ Il display-manager.service viene avviato successivamente.

566

Pagina 607

Capitolo 21: Risoluzione dei problemi di Linux

Continuando a scoprire cosa richiedono queste due unità, puoi trovare cos'altro è necessario.
Ad esempio, multi-user.target richiede basic.target (che avvia un file
dei servizi di base) e display-manager.service (che avvia il display manager,
gdm) per avviare una schermata di login grafica.
21
Per vedere i servizi che si avvia multi-user.target, elenca i contenuti del file / etc / systemd /
directory system / multi-user.target.wants. Per esempio:

# ls /etc/systemd/system/multi-user.target.wants/
abrt-ccpp.service chronyd.service nfs.target
abrtd.service crond.service nmb.service
abrt-oops.service cups.path remote-fs.target
abrt-vmcore.service httpd.service rngd.service
abrt-xorg.service irqbalance.service smb.service
atd.service mcelog.service sshd.service
auditd.service mdmonitor.service vmtoolsd.service
autofs.service ModemManager.service vsftpd.service
avahi-daemon.service NetworkManager.service

Questi file sono collegamenti simbolici a file che definiscono ciò che inizia per ciascuno di questi servizi. Su
il tuo sistema, questi possono includere shell remota (sshd), stampa (cups), auditing (auditd),
networking (NetworkManager) e altri. Quei collegamenti sono stati aggiunti a quella directory
o quando il pacchetto per un servizio è installato o quando il servizio è abilitato da un file
systemctl enable comando.

Tieni presente che, a differenza di System V init, systemd può avviare, arrestare e gestire in altro modo
file di unità che rappresentano più di semplici servizi. Può gestire dispositivi, automount, percorsi,
prese e altre cose. Dopo che systemd ha avviato tutto, puoi accedere a
sistema per indagare e risolvere eventuali problemi potenziali.

Dopo aver effettuato l'accesso, l'esecuzione del comando systemctl ti consente di vedere ogni file unit che
systemd ha provato ad avviarsi. Ecco un esempio:
# systemctl
UNITÀ LOAD ACTIVE SUB
DESCRIZIONE
proc-sys-fs-binfmt_misc.automount caricato in attesa attivo
Formati di file eseguibili arbitrari File system
sys-devices-pc ...: 00: 1b.0-sound-card0. dispositivo caricato attivo collegato
Controllo audio ad alta definizione 631xESB / 632xESB
sys-devices-pc ...: 00: 1d.2-usb4-4 \ x2d2.device caricato attivo collegato
DeskJet 5550
...
-.montare caricato attivo montato
/
boot.mount caricato attivo montato
/avvio

567

Pagina 608

Parte IV: diventare un amministratore di server Linux

...
autofs.service caricato attivo in esecuzione
Monta automaticamente i filesystem su richiesta
cups.service caricato attivo in esecuzione
Servizio di stampa CUPS
httpd.service caricamento non riuscito
Il server HTTP Apache

Dall'output di systemctl, puoi vedere se qualche file di unità ha avuto esito negativo. In questo caso, puoi
vedere che httpd.service (il tuo server Web) non è riuscito ad avviarsi. Per indagare ulteriormente, tu
può eseguire journalctl -u per quel servizio per vedere se sono stati segnalati messaggi di errore:

# journalctl -u httpd.service
...
7 settembre 18:40:52 host systemd [1]: Avvio del server HTTP Apache ...
7 settembre 18:40:53 host httpd [16365]: httpd: errore di sintassi sulla riga 361 di
/etc/httpd/conf/httpd.conf: previsto </Director> ma visto
</Directory>
7 settembre 18:40:53 host systemd [1]: httpd.service:
uscita dal processo principale, codice = uscita, stato = 1 / GUASTO
7 settembre 18:40:53 host systemd [1]: Impossibile avviare Apache HTTP
Server.
7 settembre 18:40:53 host systemd [1]: unità httpd.service immessa non riuscita
stato.

Dall'output, puoi vedere che c'era una mancata corrispondenza delle direttive in httpd.
conf (avevo Director invece di Directory). Dopo che è stato corretto, ho potuto avviare il file
servizio (systemctl avvia httpd). Se più file di unità risultano non funzionanti, è possibile eseguire il file
journalctl -u di nuovo, usando quei nomi di file unit come argomenti.

La sezione successiva descrive come risolvere i problemi che possono sorgere con il software
pacchi.

Risoluzione dei problemi dei pacchetti software


Le strutture per la creazione di pacchetti software (come yum per RPM e apt-get per pacchetti DEB) sono
progettato per semplificare la gestione del software di sistema. (Vedere il capitolo 10,
"Recupero e gestione del software", per le nozioni di base su come gestire i pacchetti software.)
Nonostante gli sforzi per far funzionare tutto, tuttavia, a volte la confezione del software può rompersi.

Le sezioni seguenti descrivono alcuni problemi comuni che puoi incontrare con RPM
pacchetti su un sistema RHEL o Fedora e come è possibile superare questi problemi.

A volte, quando si tenta di installare o aggiornare un pacchetto utilizzando il comando yum, l'errore
messaggi ti dicono che i pacchetti dipendenti che ti servono per eseguire l'installazione che desideri
non sono disponibili. Questo può accadere su piccola scala (quando si tenta di installare un pacchetto) o
su larga scala (dove stai cercando di aggiornare o aggiornare l'intero sistema).

568
Pagina 609

Capitolo 21: Risoluzione dei problemi di Linux

A causa dei brevi cicli di rilascio e dei repository più grandi di Fedora e Ubuntu, l'incongruenza
È più probabile che si verifichino differenze nelle dipendenze dei pacchetti rispetto a quelle più piccole, maggiori
repository stabili (come quelli offerti da Red Hat Enterprise Linux). Per evitare la dipendenza
errori di dency, ecco alcune buone pratiche che puoi seguire:

■ Utilizzare archivi recenti e ben testati. Ci sono migliaia di pacchetti software in


21
Fedora. Se utilizzi i repository Fedora principali per installare il software dal file
release, è raro avere problemi di dipendenza.
Quando i pacchetti vengono aggiunti al repository, a condizione che il repository mantenga-
ers eseguono i comandi giusti per configurare il repository (e non usi all'esterno
repository), dovrebbe essere disponibile tutto il necessario per installare un pacchetto selezionato.
Tuttavia, quando inizi a utilizzare repository di terze parti, tali repository potrebbero
hanno dipendenze da repository che non possono controllare. Ad esempio, se un deposito
tory crea una nuova versione del proprio software che richiede versioni successive di basic
software (come le librerie), le versioni di cui hanno bisogno potrebbero non essere disponibili in
Repository Fedora.
■ Aggiorna costantemente il tuo sistema. Eseguire l'aggiornamento yum ogni notte lo rende meno
probabilmente incontrerai problemi di dipendenza maggiori rispetto all'aggiornamento del tuo
sistema solo ogni pochi mesi. In Fedora, c'è un pacchetto yum-updatesd che
ti consente di eseguire controlli notturni per gli aggiornamenti e quindi inviare e-mail a un utente di tua scelta
se sono disponibili aggiornamenti. In RHEL, è possibile creare un cron job da verificare o eseguire
aggiornamenti notturni. Vedere la barra laterale "Utilizzo di cron per gli aggiornamenti software" per i dettagli
come farlo.
■ Aggiornare occasionalmente il sistema. Fedora e Ubuntu hanno nuove versioni ogni sei
mesi. Fedora smette di fornire pacchetti aggiornati per ogni versione 13 mesi dopo
viene rilasciato. Quindi, anche se non è necessario eseguire l'aggiornamento alla nuova versione ogni sei
mesi, è necessario eseguire l'aggiornamento una volta all'anno o affrontare una possibile dipendenza e sicurezza
problemi quando Fedora smette di fornire aggiornamenti. Se stai cercando una stalla
sistema, Red Hat Enterprise Linux è una scommessa migliore perché fornisce aggiornamenti per
ogni versione principale per sette anni o più.

Se usi il comando apt-get in Ubuntu per aggiornare i tuoi pacchetti, tieni presente che ce ne sono diversi
significati per l'aggiornamento e le opzioni di aggiornamento in Ubuntu con apt-get che con il comando yum
(Fedora e RHEL).
In Ubuntu, apt-get update causa gli ultimi metadati di packaging (nomi di pacchetti, numeri di versione e
così via) da scaricare nel sistema locale. L'esecuzione di apt-get upgrade fa sì che il sistema aggiorni qualsiasi file
pacchetti installati che hanno nuove versioni disponibili, in base agli ultimi metadati scaricati.
Al contrario, ogni volta che esegui un comando yum in Fedora o RHEL, gli ultimi metadati sui nuovi pacchetti sono
scaricato. Quando esegui yum update, ottieni gli ultimi pacchetti disponibili per la versione corrente di
Fedora o RHEL. Quando esegui yum upgrade, il sistema tenta effettivamente di aggiornare a una versione completamente nuova di
quelle distribuzioni (come Fedora 20 a Fedora 21).

569

Pagina 610

Parte IV: diventare un amministratore di server Linux

Quando incontri un problema di dipendenza, ecco alcune cose che puoi fare per provare a farlo
Risolvi il problema:

■ Utilizzare repository stabili. Per le versioni recenti di distribuzioni note (RHEL,


Fedora, o Ubuntu, ad esempio), i problemi di dipendenza sono rari e spesso
risolto rapidamente. Tuttavia, se ti affidi a repository per versioni precedenti o
repository orientati allo sviluppo (come il repository Rawhide di Fedora), aspettati
per trovare più problemi di dipendenza. La reinstallazione o l'aggiornamento spesso possono risolvere
problemi di dipendenza.
■ Utilizzare app e repository di terze parti solo quando necessario. Più sei lontano
provengono dal nucleo di una distribuzione Linux, più è probabile che un giorno avrai
problemi di dipendenza. Cerca sempre nei repository principali la tua distribuzione
prima di cercare altrove un pacchetto o provare a crearne uno da soli.

Anche se funziona la prima volta che lo installi, un pacchetto che qualcuno ti ha appena consegnato
potrebbe non avere un modo per essere aggiornato. Un pacchetto da un repository di terze parti può
si interrompe se i creatori non forniscono una nuova versione quando i pacchetti dipendenti cambiano.
■ Risolvere le dipendenze relative al kernel. Se ottieni pacchetti RPM di terze parti per tale file
cose come schede video o schede di rete wireless che contengono i driver del kernel e te
installare un kernel successivo, quei driver non funzionano più. Il risultato potrebbe essere che il file
la schermata di accesso grafica non si avvia all'avvio del sistema o della scheda di rete
non si carica, quindi non hai una rete wireless.

Poiché la maggior parte dei sistemi Linux mantiene i due kernel più recenti, puoi riavviare,
interrompere GRUB e selezionare il kernel precedente (ancora funzionante) da cui eseguire l'avvio. Quella
fa funzionare il tuo sistema, con il vecchio kernel e driver funzionanti, mentre
cerchi una soluzione più permanente.

La soluzione a lungo termine è ottenere un nuovo driver che è stato ricostruito per il tuo
kernel corrente. Siti come rpmfusion.org creano terze parti, non open source
pacchetti di driver e aggiornarli quando è disponibile un nuovo kernel. Con il
Il repository rpmfusion.org è abilitato, il sistema dovrebbe acquisire i nuovi driver
quando viene aggiunto il nuovo kernel.
In alternativa a siti come rpmfusion.org, puoi andare direttamente al
sito Web del produttore e provare a scaricare i driver Linux (Nvidia offre
Driver Linux per le sue schede video), o se il codice sorgente è disponibile per il driver, tu
puoi provare a costruirlo da solo.
■ Escludere alcuni pacchetti dall'aggiornamento. Se stai aggiornando molti pacchetti contemporaneamente,
puoi escludere i pacchetti che non riescono a far funzionare gli altri mentre segui il
problema con quelli rotti. Ecco come aggiornare tutti i pacchetti che necessitano di aggiornamento,
ad eccezione di un pacchetto denominato somepackage (sostituire somepackage con il nome di
il pacchetto che vuoi escludere):
# yum -y --exclude = qualche aggiornamento del pacchetto

570

Pagina 611

Capitolo 21: Risoluzione dei problemi di Linux

■ Prova il preupgrade per gli aggiornamenti. Se stai aggiornando Fedora da una versione a
un altro (ad esempio, da Fedora 20 a Fedora 21), puoi usare lo strumento di preupgrade
invece di digitare semplicemente yum upgrade. Il vantaggio di eseguire prima il preupgrade
è che controlla le dipendenze e scarica tutti i pacchetti necessari prima del commit-
ting il tuo sistema all'aggiornamento in modo da non finire con un sistema aggiornato a metà. 21
Puoi anche continuare a utilizzare il tuo sistema durante questo processo.

Se hai problemi di dipendenza durante il preupgrade, puoi risolverli


prima che l'aggiornamento abbia effettivamente luogo. Rimozione di pacchetti che hanno dipendenza
problemi è un modo per affrontare il problema ( yum remove somepackage ). Dopo
dopo l'aggiornamento, è spesso possibile aggiungere nuovamente il pacchetto, utilizzando una versione di
pacchetto che potrebbe essere più coerente con i nuovi repository che stai utilizzando.

Utilizzo di cron per gli aggiornamenti software


La funzione cron fornisce un mezzo per eseguire comandi a orari e intervalli predeterminati. voi
può impostare il minuto, l'ora, il giorno o il mese esatti in cui viene eseguito un comando. È possibile configurare un comando per
viene eseguito ogni cinque minuti, ogni tre ore o in un determinato momento il venerdì pomeriggio.

Se desideri utilizzare cron per configurare gli aggiornamenti software notturni, puoi farlo come utente root eseguendo
il comando crontab -e. Questo apre un file usando il tuo editor predefinito (comando vi per impostazione predefinita) che tu
può essere configurato come file crontab. Ecco un esempio di come potrebbe apparire il file crontab che crei:

# min ora giorno / mese mese giorno / settimana comando


59 23 * ** yum -y aggiornamento | mail root @ localhost

Un file crontab è costituito da cinque campi, che designano il giorno e l'ora, e un sesto campo, contenente il comp
linea da eseguire. Ho aggiunto la riga di commento per indicare i campi. Qui, il comando yum -y update
viene eseguito, con l'output inviato all'utente root @ localhost. Il comando viene eseguito 59 minuti dopo l'ora
23 (23:59). Gli asterischi (*) sono richiesti come segnaposto, indicando a cron su cui eseguire il comando
ogni giorno del mese, mese e giorno della settimana.

Quando crei una voce di cron, assicurati di indirizzare l'output a un file o di indirizzare l'output a un file
comando che può gestire l'output. Se non lo fai, qualsiasi output viene inviato all'utente che ha eseguito il crontab
-e comando (in questo caso, root).

In un file crontab, puoi avere un intervallo di numeri, un elenco di numeri o saltare i numeri. Per esempio,
1, 5 o 17 nel primo campo fa sì che il comando venga eseguito 1, 5 e 17 minuti dopo l'ora. Un * / 3
nel secondo campo, il comando viene eseguito ogni tre ore (mezzanotte, 3 del mattino, 6 del mattino e così via).
Un 1-3 nel quarto campo indica a cron di eseguire il comando in gennaio, febbraio e marzo. Giorni di
settimana e mesi possono essere inseriti come numeri o parole.

Per ulteriori informazioni sul formato di un file crontab, digita man 5 crontab . Per leggere di crontab
comando, digita man 1 crontab .

571

Pagina 612

Parte IV: diventare un amministratore di server Linux

Correzione dei database e della cache RPM


Le informazioni su tutti i pacchetti RPM sul tuo sistema sono memorizzate nei tuoi dati RPM locali-
base. Anche se accade molto meno spesso rispetto alle versioni precedenti di Fedora e
RHEL, è possibile che il database RPM venga danneggiato. Questo ti impedisce di installare-
ing, rimuovere o elencare i pacchetti RPM.

Se scopri che i tuoi comandi rpm e yum sono in sospeso o non funzionano e restituiscono un file
messaggio di errore di apertura di rpmdb , puoi provare a ricostruire il database RPM. Per verificarlo
c'è un problema nel tuo database RPM, puoi eseguire il comando yum check. Ecco un file
esempio di come appare l'output di quel comando con un database danneggiato:

# assegno yum
errore: errore db4 (11) da dbenv-> aperto: risorsa temporaneamente
non disponibile
errore: impossibile aprire l'indice dei pacchetti utilizzando db4 - Risorsa temporaneamente
non disponibile (11)
errore non può aprire il database dei pacchetti in / var / lib / rpm
CRITICO: yum.main:
Errore: l'apertura di rpmdb non riesce

Il database RPM e altre informazioni sui pacchetti RPM installati sono archiviati in
la directory / var / lib / rpm. Puoi rimuovere i file di database che iniziano con __db *
e ricostruirli dai metadati memorizzati in altri file in quella directory.

Prima di iniziare, è una buona idea eseguire il backup della directory / var / lib / rpm. Allora hai bisogno
per rimuovere i vecchi file __db * e ricostruirli. Digita i seguenti comandi per farlo:

# cp -r / var / lib / rpm / tmp


# cd / var / lib / rpm
# rm __db *
# rpm --rebuilddb

I nuovi file __db * dovrebbero apparire dopo pochi secondi in quella directory. Prova un semplice rpm o
yum per assicurarsi che i database siano ora in ordine.

Proprio come RPM ha database di pacchetti installati localmente, la struttura Yum memorizza le informazioni
associato ai repository Yum nella directory locale / var / cache / yum. Dati memorizzati nella cache
include metadati, intestazioni, pacchetti e dati di plug-in yum.

Se c'è mai un problema con i dati memorizzati nella cache da yum, puoi ripulirli. La prossima volta
si esegue un comando yum, i dati necessari vengono scaricati di nuovo. Ecco alcuni motivi per
pulire la tua cache yum:

■I metadati sono obsoleti. La prima volta che ti connetti a un repository Yum


(scaricando un pacchetto o interrogando il repository), i metadati vengono scaricati
al tuo sistema. I metadati sono costituiti da informazioni su tutti i pacchetti disponibili
dal repository.

572

Pagina 613
Capitolo 21: Risoluzione dei problemi di Linux

Poiché i pacchetti vengono aggiunti e rimossi dal repository, i metadati devono essere
aggiornato o il sistema funzionerà in base alle vecchie informazioni sulla confezione. Per impostazione predefinita,
se esegui un comando yum, yum verifica la presenza di nuovi metadati se i vecchi metadati sono maggiori
di 90 minuti (o di quanti minuti metadata_expire = è impostato su in
il file /etc/yum.conf). 21
Se sospetti che i metadati siano obsoleti ma il tempo di scadenza non è stato raggiunto,
puoi eseguire yum clean metadata per rimuovere tutti i metadati, forzando nuovi metadati
da caricare con il caricamento successivo. In alternativa, puoi eseguire yum makecache
per ottenere i metadati da tutti i repository aggiornati.
■ Stai esaurendo lo spazio su disco. Normalmente, yum potrebbe memorizzare fino a pochi file
centinaia di megabyte di dati nelle directory / var / cache / yum.Tuttavia, a seconda
sulle impostazioni nel tuo file /etc/yum.conf (come keepcache = 1, che mantiene
tutti gli RPM scaricati, anche dopo che sono stati installati), le directory della cache possono
contenere più gigabyte di dati.

Per ripulire tutti i pacchetti, metadati, intestazioni e altri dati archiviati in


/ var / cache / yum, digita quanto segue:
# yum pulisci tutto

A questo punto, il sistema ottiene informazioni aggiornate dai repository la prossima volta che un file
il comando yum viene eseguito.

La sezione successiva copre le informazioni sulla risoluzione dei problemi di rete.

Risoluzione dei problemi di rete


Con sempre più informazioni, immagini, video e altri contenuti che usiamo ogni
giorno ora disponibile al di fuori dei nostri computer locali, è necessaria una connessione di rete funzionante
su quasi tutti i sistemi di computer. Quindi, se interrompi la connessione di rete o non riesci a raggiungerlo
i sistemi con cui vuoi comunicare, è bello sapere che ci sono molti strumenti
Linux per esaminare il problema.

Per i computer client (laptop, desktop e dispositivi palmari) a cui connettersi


la rete per raggiungere altri sistemi informatici. Su un server, vuoi che i tuoi clienti siano in grado
per raggiungerti. Le sezioni seguenti descrivono diversi strumenti per la risoluzione dei problemi di rete
connettività per sistemi client e server Linux.

Risoluzione dei problemi relativi alle connessioni in uscita


Apri il tuo browser web, ma non riesci ad accedere a nessun sito web. Sospetti di esserlo
non connesso alla rete. Forse il problema è con la risoluzione dei nomi, ma potrebbe esserlo
con la connessione al di fuori della rete locale.

573

Pagina 614

Parte IV: diventare un amministratore di server Linux

Per verificare se le connessioni di rete in uscita funzionano, puoi utilizzare molti dei file
comandi descritti nel Capitolo 14, "Amministrazione della rete". Puoi testare la connettività
utilizzando un semplice comando ping. Per vedere se la risoluzione da nome a indirizzo funziona, usa
ospitare e scavare.

Le sezioni seguenti trattano i problemi che possono verificarsi con la connettività di rete
connessioni in uscita e quali strumenti utilizzare per scoprire i problemi.

Visualizza le interfacce di rete


Per vedere lo stato delle tue interfacce di rete, usa il comando ip. Il seguente output
mostra che l'interfaccia di loopback (lo) è attiva (quindi puoi eseguire i comandi di rete sul tuo
sistema locale), ma eth0 (la tua prima scheda di rete cablata) è inattivo (stato GIÙ). Se la
l'interfaccia era attiva, una riga inet mostrava l'indirizzo IP dell'interfaccia. Solo qui
l'interfaccia di loopback ha un indirizzo inet (127.0.0.1).

# ip addr show
1: lo: <LOOPBACK, UP, LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
collegamento / loopback 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
inet 127.0.0.1/8 ambito host lo
inet6 :: host dell'ambito 1/128
valid_lft per sempre preferito_lft per sempre
2: eth0: <NO-CARRIER, BROADCAST, MULTICAST, UP> mtu 1500 state DOWN
qlen 1000
link / etere f0: de: f1: 28: 46: d9 brd ff: ff: ff: ff: ff: ff

In RHEL 7 e Fedora, per impostazione predefinita, le interfacce di rete ora vengono denominate in base a come
sono collegati all'hardware fisico. Ad esempio, in RHEL 7, potresti vedere una rete
interfaccia di enp11s0. Ciò indicherebbe che la NIC è una scheda Ethernet cablata (en)
Scheda PCI 11 (p11) e slot 0 (s0). Una scheda wireless inizierebbe con wl invece di en. Il
l'intenzione è di rendere i nomi NIC più prevedibili, perché quando il sistema viene riavviato,
non è garantito quali interfacce verranno chiamate eth0, eth1 e così via dall'operatore
sistema di trasmissione.

Controlla le connessioni fisiche


Per una connessione cablata, assicurati che il tuo computer sia collegato alla porta della rete
interruttore. Se si dispone di più schede NIC, assicurarsi che il cavo sia collegato a quello corretto. Se
conosci il nome di un'interfaccia di rete (eth0, p4p1 o altro), per trovare quale sia la NIC
associato all'interfaccia, digita ethtool -p eth0 dalla riga di comando e guarda
dietro il computer per vedere quale NIC lampeggia (Ctrl + C smette di lampeggiare). Collega il
cavo nella porta corretta.

Se, invece di vedere un'interfaccia che è inattiva, il comando ip non mostra alcuna interfaccia,
verificare che l'hardware non sia disabilitato. Per una scheda NIC cablata, la scheda potrebbe non essere completamente inserita
il suo slot o la scheda NIC potrebbero essere stati disabilitati nel BIOS.

574

Pagina 615

Capitolo 21: Risoluzione dei problemi di Linux

Su una connessione wireless, puoi fare clic sull'icona NetworkManager e non vedere un file disponibile
interfaccia wireless. Anche in questo caso, potrebbe essere disabilitato nel BIOS. Tuttavia, su un laptop, controlla
per vedere se c'è un piccolo interruttore che disabilita la scheda NIC. Ho visto diverse persone distruggere i loro file
configurazioni di rete solo per scoprire che questo minuscolo interruttore sulla parte anteriore o laterale della loro
i laptop erano stati spostati in posizione off. 21
Controlla i percorsi
Se la tua interfaccia di rete è attiva, ma non riesci ancora a raggiungere l'host che desideri raggiungere, prova
controllando il percorso verso quell'host. Inizia controllando il percorso predefinito. Quindi prova a raggiungere
il dispositivo gateway della rete locale alla rete successiva. Infine, prova a eseguire il ping di un sistema
da qualche parte su Internet:

# percorso
itinerario
Tabella di routing IP del kernel
Destination Gateway Genmask Flag Metrico Ref Usa Iface
192.168.0.0 * 255.255.255.0 U 2 0 0 eth0
predefinito 192.168.0.1 0.0.0.0 UG 0 0 eth0

La riga predefinita mostra che il gateway predefinito (UG) è all'indirizzo 192.168.0.1 e che il file
l'indirizzo può essere raggiunto tramite la scheda eth0. Perché qui c'è solo l'interfaccia eth0
e viene mostrato solo un percorso alla rete 192.168.0.0, tutte le comunicazioni non indirizzate a
un host sulla rete 192.168.0.0/24 viene inviato tramite il gateway predefinito (192.168.0.1). Il
il gateway predefinito è più propriamente indicato come router.

Per assicurarti di poter raggiungere il tuo router, prova a eseguirne il ping. Per esempio:

# ping -c 2 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56 (84) byte di dati.
Da 192.168.0.105 icmp_seq = 1 Host di destinazione non raggiungibile
Da 192.168.0.105 icmp_seq = 2 Host di destinazione non raggiungibile
--- 192.168.0.1 statistiche ping ---

2 pacchetti trasmessi, 0 ricevuti, +2 errori, perdita di pacchetti del 100%

Il messaggio "Host di destinazione irraggiungibile" indica che il router è spento o


non connesso fisicamente a te (forse il router non è connesso allo switch che condividi).
Se il ping ha esito positivo e puoi raggiungere il router, il passaggio successivo è provare un indirizzo successivo
il tuo router.

Prova a eseguire il ping di un indirizzo IP ampiamente accessibile. Ad esempio, l'indirizzo IP del pubblico di Google
Il server DNS è 8.8.8.8. Prova a eseguire il ping (ping -c2 8.8.8.8). Se il ping riesce, il tuo file
la rete probabilmente va bene, e molto probabilmente è la risoluzione del nome host-indirizzo
non funziona correttamente.
Se riesci a raggiungere un sistema remoto, ma la connessione è molto lenta, puoi utilizzare il
comando traceroute per seguire il percorso verso l'host remoto. Ad esempio, questo comando
mostra ogni salto effettuato lungo il percorso verso http://www.google.com:

575

Pagina 616

Parte IV: diventare un amministratore di server Linux

# traceroute www.google.com

L'output mostra il tempo impiegato per effettuare ogni salto lungo il percorso verso il sito di Google.
Invece di traceroute, puoi usare il comando mtr (yum install mtr) per guardare il file
percorso preso a un host. Con mtr, il percorso viene interrogato continuamente, quindi puoi guardare il file
performance di ogni tappa del viaggio nel tempo.

Controlla la risoluzione del nome host


Se non riesci a raggiungere gli host remoti per nome, ma puoi raggiungerli eseguendo il ping degli indirizzi IP,
il tuo sistema ha un problema con la risoluzione del nome host. Sistemi collegati a
Internet esegue la risoluzione da nome a indirizzo comunicando con un DNS (Domain Name System)
server che può fornire loro gli indirizzi IP degli host richiesti.

Il server DNS utilizzato dal sistema può essere inserito manualmente o prelevato automaticamente da
un server DHCP all'avvio delle interfacce di rete. In entrambi i casi, i nomi e l'IP
gli indirizzi di uno o più server DNS finiscono nel file /etc/resolv.conf. Ecco un file
esempio di quel file:

cerca example.com
server dei nomi 192.168.0.254
server dei nomi 192.168.0.253

Quando chiedi di connetterti a un nome host in Fedora o Red Hat Enterprise Linux, il file / etc /
il file hosts viene cercato; quindi viene interrogata la prima voce del server dei nomi in resolv.conf; poi
ogni server dei nomi successivo viene interrogato. Se un nome host richiesto non viene trovato, tutti quelli
le posizioni vengono controllate prima di ricevere una sorta di messaggio "Host non trovato". Qui ce ne sono alcuni
modi per eseguire il debug della risoluzione da nome a indirizzo:

■ Verificare se è possibile raggiungere il server DNS. Conoscendo gli indirizzi del server dei nomi, tu
può provare a eseguire il ping dell'indirizzo IP di ciascun server dei nomi per vedere se è accessibile. Per esempio:
ping -c 2 192.168.0.254. Se l'indirizzo IP può essere raggiunto, potrebbe essere quello
o ti è stato assegnato l'indirizzo sbagliato per il server DNS o lo è
attualmente inattivo.
■ Verificare che il server DNS funzioni. In particolare, provi a utilizzare ogni server DNS con
il comando host o dig. Ad esempio, uno di questi due comandi può essere
utilizzato per vedere se il server DNS all'indirizzo 192.168.0.254 può risolvere il nome host
www.google.com in un indirizzo IP. Ripeti l'operazione per l'indirizzo IP di ciascun server dei nomi
finché non trovi quali funzionano:
# host www.google.com 192.168.0.254
# dig @ 192.168.0.254 www.google.com

■ Correggere i server DNS. Se stabilisci di avere gli indirizzi IP sbagliati


impostato per i tuoi server DNS, cambiarli può essere un po 'complicato. Cerca / var / log /
messaggi per gli indirizzi IP dei tuoi server DNS. Se NetworkManager viene utilizzato per avviare
la tua rete e connettiti a un server DHCP, dovresti vedere le linee del server dei nomi

576

Pagina 617

Capitolo 21: Risoluzione dei problemi di Linux


con gli indirizzi IP assegnati. Se gli indirizzi sono sbagliati, puoi farlo
sovrascriverli.

Con NetworkManager abilitato, non puoi semplicemente aggiungere le voci del server dei nomi al file / etc /
resolv.conf perché NetworkManager sovrascrive quel file con il proprio nome
voci del server. Invece, aggiungi una riga PEERDNS = no al file ifcfg per la rete 21
interfaccia (ad esempio, ifcfg-eth0 in / etc / sysconfig / network-scripts
directory). Quindi imposta DNS1 = 192.168.0.254 (o qualunque sia l'IP del tuo server DNS
l'indirizzo è). Il nuovo indirizzo viene utilizzato al successivo riavvio della rete.
Se stai usando il servizio di rete, invece di NetworkManager, puoi ancora usare
PEERDNS = no per impedire al server DHCP di sovrascrivere i tuoi indirizzi DNS.
Tuttavia, in questo caso, puoi modificare direttamente il file resolv.conf per impostare il tuo DNS
indirizzi del server.
Si applicano le procedure appena descritte per il controllo della connettività di rete in uscita
qualsiasi tipo di sistema, che si tratti di un laptop, desktop o server. Per la maggior parte, in arrivo
le connessioni non sono un problema con laptop o desktop perché la maggior parte delle richieste è semplice
negato. Tuttavia, per i server, la sezione successiva descrive i modi per creare il tuo server
accessibile se i client hanno problemi a raggiungere i servizi forniti da quel server.

Risoluzione dei problemi relativi alle connessioni in entrata


Se stai risolvendo problemi con le interfacce di rete su un server, ci sono diverse considerazioni
rispetto a un sistema desktop. Poiché la maggior parte dei sistemi Linux sono configurati come server, tu
dovrebbe sapere come risolvere i problemi incontrati da coloro che stanno cercando di raggiungere
i tuoi server Linux.

Inizierò con l'idea di avere un server web Apache (httpd) in esecuzione su Linux
sistema, ma nessun client web può raggiungerlo. Le sezioni seguenti descrivono le cose che puoi provare
per vedere dov'è il problema.

Controlla se il client può raggiungere il tuo sistema


Per essere un server pubblico, il nome host del tuo sistema dovrebbe essere risolvibile in modo che qualsiasi client su
Internet può raggiungerlo. Ciò significa bloccare il tuo sistema su un particolare IP pubblico
indirizzo e registrando tale indirizzo con un server DNS pubblico. Puoi usare un dominio
registrar ( come http://www.networksolutions.com) per farlo.

Quando i clienti non possono raggiungere il tuo sito web per nome dai loro browser web, se il client
è un sistema Linux, puoi utilizzare ping, host, traceroute e altri comandi
descritto nella sezione precedente per rintracciare il problema di connettività. finestre
i sistemi dispongono della propria versione di ping che è possibile utilizzare da tali sistemi.

Se la risoluzione nome-indirizzo funziona per raggiungere il tuo sistema e puoi eseguire il ping del tuo file
server dall'esterno, la prossima cosa da provare è la disponibilità del servizio.

577

Pagina 618

Parte IV: diventare un amministratore di server Linux

Controlla se il servizio è disponibile per il cliente


Da un client Linux, puoi verificare se il servizio che stai cercando (in questo caso httpd) è
disponibile dal server. Un modo per farlo è usare il comando nmap.

Il comando nmap è uno strumento preferito dagli amministratori di sistema che verificano vari tipi
di informazioni sulle reti. Tuttavia, è anche uno strumento di cracker preferito perché può
eseguire la scansione dei server, cercando potenziali vulnerabilità. Quindi va bene usare nmap per scansionare il tuo file
propri sistemi per verificare la presenza di problemi. Ma sappi che usare nmap su un altro sistema è come
controllando le porte e le finestre della casa di qualcuno per vedere se riesci a entrare. Sembri
un intruso.

Controlla il tuo sistema per vedere quali porte del tuo server sono aperte al mondo esterno
(essenzialmente, controllare quali servizi sono in esecuzione) è perfettamente legittimo e facile da fare.
Dopo aver installato nmap (yum install nmap), usa il nome host del tuo sistema o l'indirizzo IP per
usa nmap per scansionare il tuo sistema per vedere cosa è in esecuzione sulle porte comuni:

# nmap 192.168.0.119
Avvio di Nmap 5.21 ( http://nmap.org) a 2012-06-16 08:27 EDT
Rapporto di scansione Nmap per spike (192.168.0.119)
L'host è attivo (0,0037 secondi di latenza).
Non mostrato: 995 porte filtrate
SERVIZIO DELLO STATO DI PORTO
21 / tcp apri ftp
22 / tcp aprire ssh
80 / tcp apri http
443 / tcp apre https
631 / tcp aperto ipp
Indirizzo MAC: 00: 1B: 21: 0A: E8: 5E (Intel Corporate)
Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 4,77 secondi

L'output precedente mostra che le porte TCP sono aperte al normale (http) e sicure
(https) servizi web. Quando vedi che lo stato è aperto, indica che un servizio è
ascoltando anche sul porto. Se arrivi a questo punto, significa che la tua connessione di rete è
va bene e dovresti indirizzare i tuoi sforzi per la risoluzione dei problemi su come il servizio stesso è configurato
ured (ad esempio, potresti guardare in /etc/httpd/conf/httpd.conf per vedere se
agli host è consentito o negato l'accesso).

Se le porte TCP 80 e / o 443 non vengono visualizzate, significa che vengono filtrate. Devi
controlla se il tuo firewall sta bloccando (non accetta pacchetti su) quelle porte. Se il file port
non è filtrato, ma lo stato è chiuso, significa che neanche il servizio httpd non è in esecuzione
o non è in ascolto su quelle porte. Il prossimo passo è accedere al server e controllare
quei problemi.

Controlla il firewall sul server


Dal tuo server, puoi usare il comando iptables per elencare le regole della tabella di filtro che sono
a posto. Ecco un esempio:

578

Pagina 619

Capitolo 21: Risoluzione dei problemi di Linux

# iptables -vnL
Chain INPUT (policy ACCETTA 0 pacchetti, 0 byte)
pkts byte target prot opt ​in out origine destinazione
...
0 0 ACCEPT tcp - * * 0.0.0.0/0 0.0.0.0/0 stato NUOVO
tcp dpt: 80 21
0 0 ACCEPT tcp - * * 0.0.0.0/0 0.0.0.0/0 stato NUOVO
tcp dpt: 443
...

Per i sistemi RHEL 7 e Fedora 20 in cui il servizio firewalld è abilitato, puoi farlo
utilizzare la finestra di configurazione del firewall per aprire le porte necessarie. Con la Zona pubblica e
Nella scheda Servizi selezionata, fare clic sulle caselle di controllo per http e https per aprirle immediatamente
porte per tutto il traffico in entrata.

Se il tuo sistema utilizza il servizio iptables di base, dovrebbero esserci regole del firewall come
i due mostrati nel codice precedente tra le altre regole. Se non ci sono, aggiungi quelli
regole nel file / etc / sysconfig / iptables. Ecco alcuni esempi di ciò che queste regole
potrebbe apparire come:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT


-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

Con le regole aggiunte al file, cancella tutte le regole del firewall (systemctl stop
iptables.service o service iptables stop), quindi riavviarli
(systemctl start iptables.service o service iptables start).

Se il firewall sta ancora bloccando l'accesso del client alle porte del server web, ecco alcune cose da fare
controlla il tuo firewall:

■ Verificare l'ordine delle regole. Guarda le regole in / etc / sysconfig / iptables e vedi se un file
La regola DROP o REJECT viene prima delle regole che aprono i porti 80 e / o 443. Muoversi
le regole per aprire quelle porte prima che qualsiasi riga finale DROP o REJECT possa essere risolta
il problema.
■ Cerca host negati. Controlla se qualche regola elimina o rifiuta i pacchetti da
host o reti particolari. Cerca le regole che includono -s o --source, seguite
da un indirizzo IP o da un intervallo di indirizzi e poi un -j DROP o ACCEPT. Modifica la regola
oppure aggiungi una regola prima delle tue regole per fare un'eccezione per l'host che desideri
consentire l'accesso al tuo servizio.

Se la porta è ora aperta, ma il servizio stesso è chiuso, verificare che il servizio stesso lo sia
esecuzione e ascolto sulle interfacce appropriate.

Controlla il servizio sul server


Se sembra non esserci nulla che blocchi l'accesso del client al tuo server attraverso le porte effettive
fornendo il servizio che si desidera condividere, è il momento di controllare il servizio stesso. Supponendo
il servizio è in esecuzione (a seconda del sistema, digitare service httpd status o
579

Pagina 620

Parte IV: diventare un amministratore di server Linux

systemctl status httpd to check), la prossima cosa da controllare è che sia in ascolto
le porte e le interfacce di rete appropriate.

Il comando netstat è un ottimo strumento generico per controllare i servizi di rete.


Il comando seguente elenca i nomi e gli ID di processo (p) per tutti i processi che sono
ascolto (l) per i servizi TCP (t) e UDP (u), insieme al numero di porta (n) che sono
ascoltando. La seguente riga di comando filtra tutte le righe tranne quelle associate a
il processo httpd:

# netstat -tupln | grep httpd


tcp 0 0 ::: 80 ::: * LISTEN 2567 / httpd
tcp 0 0 ::: 443 ::: * LISTEN 2567 / httpd

L'esempio precedente mostra che il processo httpd è in ascolto sulla porta 80 e 443 per tutti
interfacce. È possibile che il processo httpd sia in ascolto su interfacce selezionate.
Ad esempio, se il processo httpd fosse in ascolto sull'interfaccia locale (127.0.0.1) per
Richieste HTTP (porta 80) la voce avrebbe il seguente aspetto:

tcp 0 0 127.0.0.1:80 ::: * LISTEN 2567 / httpd

Per httpd, così come per altri servizi di rete che ascoltano le richieste sulla rete
interfacce, è possibile modificare il file di configurazione principale del servizio (in questo caso, / etc / httpd /
conf / httpd.conf) per dirgli di ascoltare sulla porta 80 per tutti gli indirizzi (Listen 80) o un file
indirizzo specifico (ascolta 192.168.0.100:80).

Risoluzione dei problemi di memoria


La risoluzione dei problemi di prestazioni del computer è una delle più importanti,
sebbene spesso sfuggenti, compiti che devi completare. Forse hai un sistema che era
funziona bene, ma inizia a rallentare fino al punto in cui è praticamente inutilizzabile. Può essere
le applicazioni iniziano a bloccarsi senza una ragione apparente. Trovare e risolvere il problema potrebbe
fare un po 'di lavoro da detective.

Linux viene fornito con molti strumenti per guardare le attività sul tuo sistema e capire cosa
sta succedendo. Usando una varietà di utilità Linux, puoi fare cose come scoprire quali
i processi consumano grandi quantità di memoria o impongono elevate esigenze ai processi
sors, dischi o larghezza di banda di rete. Le soluzioni possono includere:

■ Aggiunta di capacità: il computer potrebbe provare a fare ciò che gli chiedi, ma
potrebbero verificarsi errori perché non si dispone di memoria, potenza di elaborazione e disco sufficienti
spazio o capacità di rete per ottenere prestazioni ragionevoli. Anche avvicinandosi al limite
Ariete di esaurimento delle risorse possono causare problemi di prestazioni. Migliorare la tua comp
La capacità dell'hardware del computer è spesso il modo più semplice per risolvere i problemi di prestazioni.
■ Ottimizzazione del sistema: Linux viene fornito con impostazioni predefinite che definiscono il modo in cui
infine salva i dati, sposta i dati e li protegge. Parametri regolabili del sistema

580

Pagina 621

Capitolo 21: Risoluzione dei problemi di Linux

può essere modificato se le impostazioni predefinite non funzionano bene per i tipi di applicazioni
hai sul tuo sistema.
■ Individuazione di applicazioni o utenti problematici: a volte un sistema non funziona correttamente
perché un utente o un'applicazione sta facendo qualcosa di sbagliato. Configurazione errata o guasto
le applicazioni possono bloccare o divorare tutte le risorse che possono ottenere. Un inesperto 21
l'utente potrebbe erroneamente avviare più istanze di un programma che svuota il sistema
risorse. In qualità di amministratore di sistema, vuoi sapere come trovare e correggere
questi problemi.

Per risolvere i problemi di prestazioni in Linux, utilizzi alcuni degli strumenti di base per
guardare e manipolare i processi in esecuzione sul sistema. Fare riferimento al Capitolo 6,
"Gestione dei processi in esecuzione", se hai bisogno di dettagli su comandi come ps, top, kill,
e killall. In questa sezione, aggiungo comandi come memstat per approfondire un po '
quali processi stanno facendo e dove le cose stanno andando male.

L'area più complessa della risoluzione dei problemi in Linux riguarda la gestione della memoria virtuale.
Le sezioni successive descrivono come visualizzare e gestire la memoria virtuale.

Scoprire problemi di memoria


I computer possono memorizzare i dati in modo permanente (dischi rigidi) e temporaneamente (in modo casuale
accedere alla memoria o alla RAM e allo spazio di swap ). Pensa a te stesso come a una CPU, che lavora alla scrivania
per portare a termine il tuo lavoro. Inseriresti i dati che desideri conservare in modo permanente
uno schedario dall'altra parte della stanza (è come l'archiviazione su disco rigido). Metteresti informazioni
che stai attualmente utilizzando sulla tua scrivania (è come la memoria RAM di un computer).

Lo spazio di swap è un modo per estendere la RAM. È davvero solo un posto dove inserire dati temporanei
che non si adatta alla RAM, ma a un certo punto dovrebbe essere necessario alla CPU. Sebbene
lo spazio di swap è sul disco rigido, non è un normale filesystem Linux in cui vengono memorizzati i dati
permanentemente.

Rispetto alla memoria su disco, la memoria ad accesso casuale ha i seguenti attributi:

■ Più vicino al processore: come la scrivania è vicino a te mentre lavori, la memoria lo è


fisicamente vicino alla CPU sulla scheda madre del computer. Quindi tutti i dati della CPU
ha bisogno, può semplicemente afferrare immediatamente se i dati sono nella RAM.
■ Più veloce: la sua vicinanza alla CPU e il modo in cui vi si accede (stato solido rispetto a
ottico) rende molto più veloce per la CPU ottenere informazioni dalla RAM di quanto possa farlo
da un disco rigido. È più veloce guardare un pezzo di carta sulla tua scrivania (un piccolo, vicino
spazio) piuttosto che raggiungere una fila di schedari e iniziare a cercare ciò che desideri.
■ Capacità inferiore: un nuovo computer potrebbe avere un disco rigido da 1 TB ma 8 GB o 16 GB
RAM. Anche se renderebbe il computer più veloce mettere ogni file e ogni file
pezzo di dati che il processore potrebbe aver bisogno nella RAM, nella maggior parte dei casi semplicemente non ci sarebbe
la stanza. Inoltre, sia gli slot di memoria fisica sul computer che sul computer

581

Pagina 622

Parte IV: diventare un amministratore di server Linux

sistema stesso (i computer a 64 bit possono indirizzare più RAM rispetto ai computer a 32 bit)
limitare la quantità di RAM che un computer è in grado di avere.
■ Più costoso: sebbene la RAM sia molto più conveniente di quanto non fosse una
una decina di anni fa, è ancora molto più costoso (per GB) dei dischi rigidi.
■ Temporaneo: la RAM conserva i dati e i metadati che la CPU utilizza ora per il file
lavoro che sta facendo (oltre ad alcuni contenuti che il kernel Linux tiene in giro perché
sospetta che un processo ne avrà bisogno in breve tempo). Quando spegni il computer,
tuttavia, tutto nella RAM viene cancellato. Quando la CPU ha finito con i dati, quei dati
viene scartato se non è più necessario, lasciato nella RAM per un possibile utilizzo successivo o contrassegnato
da scrivere su disco per l'archiviazione permanente se deve essere salvato.

È importante comprendere la differenza tra temporaneo (RAM) e permanente


(hard disk), ma questo non racconta tutta la storia. Se la richiesta di memoria supera
la fornitura di RAM, il kernel può spostare temporaneamente i dati dalla RAM in un'area chiamata
spazio di scambio.

Se rivisitassimo l'analogia con la scrivania, sarebbe come dire: "Non c'è più spazio sulla mia scrivania,
tuttavia devo aggiungere altri documenti per i progetti su cui sto lavorando. Invece di
conservando i documenti di cui avrò bisogno presto in uno schedario permanente, avrò uno speciale schedario
(come un cassetto della scrivania) per contenere quei documenti con cui sto ancora lavorando, ma per i quali non sono pronto
conservare in modo permanente o buttare via ".

Fare riferimento al Capitolo 12, "Gestione di dischi e file system", per ulteriori informazioni sui file di scambio
e le partizioni e come crearle. Per il momento, però, ci sono alcune cose
dovresti conoscere questi tipi di aree di scambio e quando vengono utilizzate:
■ Quando
mancei hit.
datiRicorda,
vengonolascambiati
scrittura dalla RAM
su disco a un'area
è molto di swap
più lenta (scambiati),
della scrittura susiRAM.
ottiene un

■ Quando i dati vengono restituiti dallo swap alla RAM perché sono di nuovo necessari (scambiati),
ottieni un altro successo in termini di prestazioni.
■ Quando Linux esaurisce lo spazio nella RAM, lo scambio è come essere feriti in battaglia.
Non è qualcosa a cui aspiri, ma è meglio che essere ucciso. In altre parole,
tutti i tuoi processi rimangono attivi e non perdono dati o falliscono completamente, ma
le prestazioni del sistema possono rallentare notevolmente.
■ Se sia la RAM che lo swap sono pieni e nessun dato può essere eliminato o scritto su disco,
il sistema può raggiungere una condizione di memoria esaurita ( OOM ). Quando ciò accade, il file
kernel OOM killer entra in gioco e inizia a terminare i processi, uno per uno, per riconquistarli come
quanta memoria ha bisogno del kernel per ricominciare a funzionare correttamente.

La regola generale è sempre stata che lo scambio è un male e dovrebbe essere evitato. Tuttavia,
alcuni sostengono che, in alcuni casi, uno scambio più aggressivo può effettivamente migliorare
prestazione.

582

Pagina 623

Capitolo 21: Risoluzione dei problemi di Linux

Pensa al caso in cui apri un documento in un editor di testo e poi lo riduci a icona sul tuo file
desktop per diversi giorni mentre lavori su attività diverse. Se i dati di quel documento fossero
scambiato su disco, più RAM sarebbe disponibile per applicazioni più attive che potrebbero
mettere quello spazio per un uso migliore. Il successo in termini di prestazioni sarebbe arrivato la prossima volta che ne avevi bisogno
accedere ai dati dal documento modificato ei dati sono stati scambiati dal disco alla RAM. 21
Le impostazioni relative all'aggressività di uno scambio di sistema vengono chiamate swappiness .

Per quanto possibile, Linux vuole fare tutto ciò di cui un'applicazione aperta ha bisogno
Immediatamente Disponibile. Quindi, usando l'analogia da scrivania, se sto lavorando a nove progetti attivi
e c'è spazio sulla scrivania per contenere le informazioni di cui ho bisogno per tutti e nove i progetti, perché no
lasciarli tutti a portata di mano sulla scrivania? Seguendo lo stesso modo di pensare, il kernel
a volte mantiene le librerie e altri contenuti nella RAM che pensa che potresti prima o poi
bisogno, anche se un processo non lo cerca immediatamente.

Il fatto che il kernel sia incline a memorizzare le informazioni nella RAM che si aspetta può essere
necessario presto (anche se non è necessario ora) può causare un'amministratore di sistema inesperto
per pensare che il sistema ha quasi esaurito la RAM e che i processi stanno per iniziare
fallendo. Ecco perché è importante conoscere i diversi tipi di informazioni contenute
memoria, così puoi capire quando possono verificarsi situazioni di esaurimento della memoria. Il problema non è
solo a corto di RAM; sta esaurendo la RAM quando rimangono solo dati non scambiabili.

Tenere presente questa panoramica generale della memoria virtuale (RAM e swap), come nella sezione successiva
descrive i modi per risolvere i problemi relativi alla memoria virtuale.

Verifica di problemi di memoria


Supponiamo che tu abbia effettuato l'accesso a un desktop Linux, con molte applicazioni in esecuzione e
tutto comincia a rallentare. Per scoprire se si sono verificati problemi di prestazioni
poiché hai esaurito la memoria, puoi provare comandi come top e ps per iniziare
cercando il consumo di memoria sul tuo sistema.

Per eseguire il comando top per controllare il consumo di memoria, digita top e quindi digita a
Capitale M . Ecco un esempio:

# in alto
inizio - 22:48:24 su 3:59, 2 utenti, media di caricamento: 1.51, 1.37, 1.15
Compiti: 281 totali, 2 in esecuzione, 279 addormentati, 0 fermi, 0 zombi
CPU: 16,6% us, 3,0% sy, 0,0% ni, 80,3% id, 0,0% wa, 0,0% hi,
0,2% si, 0,0% st
Mem: 3716196k totali, 2684924k usati, 1031272k gratuiti, 146172k
tamponi
Swap: 4194296k in totale, 0k usati, 4194296k liberi, 784176k
memorizzato nella cache
PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND
6679 cnegus 20 0 1665m 937m 32m S 7.0 25.8 1: 07.95 firefox
6794 cnegus 20 0743 m 181 m 30 m R 64,8 5,0 1: 22,82
npviewer.bin

583
Pagina 624

Parte IV: diventare un amministratore di server Linux

3327 cnegus 20 0 1145m 116m 66m S 0,0 3,2 0: 39,25


soffice.bin
6939 cnegus 20 0 145m 71m 23m S 0,0 2,0 0: 00,97 acroread
2440 radice 20 0 183m 37m 26m S 1.3 1.0 1: 04.81 Xorg
2795 cnegus 20 0 1056m 22m 14m S 0,0 0,6 0: 01,55 nautilus

Ci sono due righe (Mem e Swap) e quattro colonne di informazioni (VIRT, RES, SHR e
% MEM) relativo alla memoria nell'uscita superiore. In questo esempio, puoi vedere che la RAM non lo è
esaurito dalla linea Mem (vengono utilizzati solo 268492k di 3716196k) e che nulla è
scambiato su disco dalla riga Swap (0k utilizzato).

Tuttavia, sommando solo queste prime sei righe di output nella colonna VIRT, lo faresti
vedere che 4937 MB di memoria sono stati allocati per quelle applicazioni, che supera il
3629 MB di RAM totale (3716196k) disponibile. Questo perché la colonna VIRT mostra
solo la quantità di memoria che è stata promessa all'applicazione. La linea RES
mostra la quantità di memoria non sostituibile effettivamente utilizzata, che ammonta a
solo 1364 MB.

Si noti che, quando si chiede di ordinare in base all'utilizzo della memoria digitando una M maiuscola , top lo sa
ordina su quella colonna RES. La colonna SHR mostra la memoria che potrebbe essere potenzialmente condivisa
da altre applicazioni (come le librerie) e% MEM mostra la percentuale di memoria totale
consumato da ciascuna applicazione.

Se pensi che il sistema stia raggiungendo uno stato di memoria esaurita, ecco alcune cose
cercare:

■ Lo spazio libero mostrato sulla riga Mem sarebbe uguale o prossimo allo zero.
■ Lo spazio utilizzato mostrato sulla riga Swap sarebbe diverso da zero e continuerebbe a
crescere. Ciò dovrebbe essere accompagnato da un rallentamento delle prestazioni del sistema.
■ Poiché lo schermo superiore viene ridisegnato ogni pochi secondi, se è presente un processo con una memoria
leak (chiedendo e usando continuamente più memoria, ma non dando memoria
indietro), la quantità di memoria VIRT aumenta, ma ancora più importante, la memoria RES
continua a crescere per quel processo.
■ Se lo spazio di swap si esaurisce, il kernel inizia a terminare i processi da gestire
con questa condizione di memoria insufficiente.

Affrontare problemi di memoria


A breve termine, puoi fare diverse cose per affrontare questa condizione di memoria insufficiente:

■ Uccidere un processo . Se il problema di memoria è dovuto a un processo errato, puoi semplicemente


uccidere quel processo. Supponendo che tu abbia effettuato l'accesso come root o come utente proprietario del file
processo in fuga, digita k dalla finestra in alto, quindi inserisci il PID del file
processo che vuoi uccidere e scegli 15 o 9 come segnale da inviare.

584

Pagina 625

Capitolo 21: Risoluzione dei problemi di Linux

■ Elimina cache di pagina . Se vuoi solo chiarire un po 'di memoria adesso, come te
in caso contrario, affrontare il problema, è possibile dire al sistema di eliminare la pagina inattiva
cache. Quando si esegue questa operazione, alcune pagine di memoria vengono scritte su disco; altri sono giusti
scartati (perché vengono memorizzati in modo permanente e possono essere recuperati da disk
quando sono necessari). 21
Questa azione è l'equivalente di pulire la scrivania e mettere tutto tranne il massimo
informazioni critiche nel cestino o in uno schedario. Potrebbe essere necessario recuperare
di nuovo a breve da uno schedario, ma quasi sicuramente non avrai bisogno di tutto
subito. Continua a funzionare in una finestra di Terminale per vedere la modifica della riga Mem
mentre digiti quanto segue (come root) in un'altra finestra di Terminale:
# echo 3> / proc / sys / vm / drop_caches

■ Termina un processo di memoria insufficiente. A volte, l'esaurimento della memoria ha reso il file
sistema così inutilizzabile che potresti non essere in grado di ottenere una risposta da una shell o da una GUI.
In questi casi, potresti essere in grado di utilizzare le sequenze di tasti Alt + SysRq per uccidere un out-of-
processo di memoria. Il motivo per cui è possibile utilizzare le sequenze di tasti Alt + SysRq su un altro file
sistema che non risponde è che il kernel elabora le richieste Alt + SysRq prima degli altri
richieste.
Per abilitare i tasti Alt + SysRq, il sistema deve aver già impostato / proc / sys /
kernel / sysrq a 1. Un modo semplice per farlo è aggiungere kernel.sysrq = 1
al file /etc/sysctl.conf. Inoltre, è necessario eseguire i tasti Alt + SysRq
da un'interfaccia basata su testo (come la console virtuale che vedi quando premi
Ctrl + Alt + F2).
Con kernel.sysrq impostato su 1, puoi terminare il processo sul tuo sistema con l'estensione
punteggio OOM più alto premendo Alt + SysRq + f da un'interfaccia basata su testo. Un elenco
di tutti i processi in esecuzione sul sistema viene visualizzato sullo schermo, con il nome di
il processo che è stato ucciso è elencato alla fine. Puoi ripetere quei tasti finché
hai terminato abbastanza processi per poter accedere normalmente al sistema dal file
shell di nuovo.

Ci sono molti altri tasti Alt + SysRq che puoi usare per gestire un sistema che non risponde. Per esempio,
Alt + SysRq + e termina tutti i processi eccetto il processo init. Alt + SysRq + t scarica un elenco di tutte le attività correnti e
informazioni su tali attività alla console. Per riavviare il sistema, premere Alt + SysRq + b. Vedere il file sysrq.txt
nella directory / usr / share / doc / kernel-doc * / Documentation per maggiori informazioni su Alt + SysRq
sequenze di tasti.

Risoluzione dei problemi in modalità soccorso


Se il tuo sistema Linux diventa non avviabile, la tua migliore opzione per risolverlo è probabilmente quella di andare
in modalità di salvataggio . Per entrare in modalità di ripristino, aggiri il sistema Linux installato sul tuo

585

Pagina 626

Parte IV: diventare un amministratore di server Linux

disco rigido e avviare un supporto di salvataggio (come una chiave USB avviabile o un CD di avvio). Dopo il
rescue medium boot, cerca di montare tutti i filesystem che riesce a trovare dal tuo sistema Linux
così puoi riparare qualsiasi problema.

Per molte distribuzioni Linux, il CD o DVD di installazione può servire come supporto di avvio per andare
in modalità di salvataggio. Ecco un esempio di come utilizzare un DVD di installazione di Fedora per entrare
modalità di ripristino per riparare un sistema Linux rotto:

1. Procurati l'immagine del CD o DVD di installazione che desideri utilizzare e masterizzala sul
mangiato supporto (CD o DVD). Vedere l'Appendice A, "Supporto", per informazioni sulla masterizzazione di CD
e DVD. (Per il mio esempio, ho utilizzato un'installazione di Red Hat Enterprise Linux 7 Server
DVD.)

2. Inserire il CD o il DVD nell'unità del computer su cui è installato Linux danneggiato


sistema installato e riavviare.

3. Nel momento in cui viene visualizzata la schermata del BIOS, premere il tasto funzione indicato su quella schermata
per selezionare il dispositivo di avvio (possibilmente il tasto funzione F12 o F2).

4. Scegliere l'unità (CD o DVD) dall'elenco dei dispositivi avviabili e premere Invio.

5. Quando viene visualizzato il menu di avvio di RHEL 7, utilizzare i tasti freccia per evidenziare la parola
Risoluzione dei problemi e premere Invio. In altri supporti di avvio di Linux, la selezione potrebbe dire
Modalità salvataggio o qualcosa di simile. Nella schermata successiva che appare, seleziona Rescue a
Red Hat Enterprise Linux e premere Invio.
6. Dopo alcuni istanti, il sistema Linux sul supporto di salvataggio si avvia. quando
richiesto, seleziona la lingua e la tastiera. Ti viene chiesto se vuoi iniziare
interfacce di rete sul sistema.

7. Se pensi di aver bisogno di ottenere qualcosa da un altro sistema sulla tua rete-
work (come pacchetti RPM o strumenti di debug), seleziona Sì e prova a configurare
le tue interfacce di rete. Ti viene quindi chiesto se vuoi provare a montare filesys-
tems dal sistema Linux installato in / mnt / sysimage.

8. Seleziona Continua per montare i tuoi filesystem (se possibile) sotto / mnt /
directory sysimage. Se l'operazione riesce, viene visualizzato un messaggio di soccorso che lo informa
i tuoi filesystem sono stati montati sotto / mnt / sysimage.

9. Selezionare OK per continuare. Dovresti vedere un prompt della shell per l'utente root (#). Siete
pronto per iniziare la risoluzione dei problemi dalla modalità di ripristino. Dopo essere entrato in modalità di ripristino, il file
parte del tuo filesystem che non è danneggiata è montata sotto / mnt / sysimage
directory. Digitare ls / mnt / sysimage per verificare che i file e le directory dal
hard disk ci sono.

In questo momento, la radice del filesystem (/) proviene dal filesystem che viene in soccorso
medio. Per risolvere i problemi del sistema Linux installato, tuttavia, è possibile digitare quanto segue
comando:

# chroot / mnt / sysimage

586

Pagina 627

Capitolo 21: Risoluzione dei problemi di Linux

Ora la directory / mnt / sysimage diventa la radice del tuo filesystem (/), quindi sembra
il filesystem installato sul tuo disco rigido. Ecco alcune cose che puoi fare per riparare il tuo file
mentre sei in modalità di salvataggio:

■ Correggere / etc / fstab. Se i tuoi filesystem non possono essere montati a causa di un errore nel tuo file
21
/ etc / fstab, potresti provare a correggere eventuali voci che potrebbero avere problemi
(come nomi di dispositivi errati o una directory del punto di montaggio che non esiste). genere
mount -a per assicurarsi che tutti i filesystem vengano montati.
■ Reinstallare i componenti mancanti. Potrebbe essere che i filesystem vadano bene, ma
il sistema non è riuscito ad avviarsi perché alcuni comandi o file di configurazione critici sono
mancante. Potresti riuscire a risolvere il problema reinstallando il pacchetto con
i componenti mancanti. Ad esempio, se qualcuno avesse cancellato / bin / mount da
errore, il sistema non avrebbe alcun comando per montare i filesystem. Reinstallazione
il pacchetto util-linux sostituirà il comando mount mancante.
■ Verificare i filesystem. Se i tuoi problemi di avvio derivano da filesystem corrotti,
puoi provare a eseguire il comando fsck (controllo del filesystem) per vedere se ce n'è
danneggiamento sulla partizione del disco. Se c'è, fsck tenta di correggere i problemi
incontra.

Quando hai finito di aggiustare il tuo sistema, digita exit per uscire dall'ambiente chroot e
tornare al layout del filesystem che vede il supporto live. Se hai finito completamente, digita
riavviare per riavviare il sistema. Assicurati di far uscire il supporto prima che il sistema si riavvii.

Sommario
La risoluzione dei problemi in Linux può iniziare dal momento in cui accendi il computer.
Possono verificarsi problemi con il BIOS del computer, il caricatore di avvio o altre parti del processo di avvio
che puoi correggere intercettandoli in diverse fasi del processo di avvio.

Dopo l'avvio del sistema, è possibile risolvere i problemi con i pacchetti software,
interfacce di rete o esaurimento della memoria. Linux viene fornito con molti strumenti per trovare e
correggere qualsiasi parte del sistema Linux che potrebbe guastarsi e necessitare di riparazione.

Il prossimo capitolo tratta l'argomento della sicurezza di Linux. Utilizzando gli strumenti descritti in quel capitolo
ter, puoi fornire l'accesso a quei servizi di cui tu e i tuoi utenti avete bisogno, bloccando l'accesso
alle risorse di sistema che si desidera proteggere da eventuali danni.

Esercizi
Gli esercizi in questa sezione consentono di provare utili tecniche di risoluzione dei problemi in
Linux. Poiché alcune delle tecniche qui descritte possono potenzialmente danneggiare il tuo sistema,

587
Pagina 628

Parte IV: diventare un amministratore di server Linux

Ti consiglio di non utilizzare un sistema di produzione che non puoi rischiare di danneggiare. Vedere
Appendice B per soluzioni suggerite.

Questi esercizi si riferiscono agli argomenti di risoluzione dei problemi in Linux. Presumono che tu stia avviando un PC
con BIOS standard. Per eseguire questi esercizi, devi essere in grado di riavviare il computer e
interrompere qualsiasi lavoro che sta facendo.

1. Avviare il computer e non appena viene visualizzata la schermata del BIOS, accedere alla modalità di configurazione come
indicato nella schermata del BIOS.
2. Nella schermata di configurazione del BIOS, determinare se il computer è a 32 bit o 64 bit, in tal caso
include il supporto per la virtualizzazione e se la scheda di interfaccia di rete è in grado di farlo
Avvio PXE.
3. Riavvia e subito dopo che la schermata del BIOS scompare, quando viene visualizzato il conto alla rovescia
avviare il sistema Linux, premere un tasto qualsiasi per accedere al boot loader di GRUB.

4. Dal boot loader GRUB, aggiungi un'opzione per l'avvio al runlevel 1, così puoi farlo
un po 'di manutenzione del sistema.
5. Riavviare un computer con Red Hat Enterprise Linux 6 installato e, da GRUB
boot loader, aggiungi un'opzione che fa sì che i servizi di sistema ti chiedano di confermare come
ogni servizio viene avviato.

6. Dopo l'avvio del sistema, esaminare i messaggi che sono stati prodotti nel kernel
buffer circolare che mostra l'attività del kernel all'avvio.
7. In Fedora o RHEL, eseguire un aggiornamento yum di prova ed escludere qualsiasi pacchetto del kernel che
è disponibile.

8. Controllare per vedere quali processi stanno ascoltando le connessioni in entrata sul sistema.

9. Verificare quali porte sono aperte sull'interfaccia di rete esterna.

10. Eseguire il comando superiore in una finestra di Terminale. Apri una seconda finestra di Terminale,
svuota la cache della pagina e nota sullo schermo superiore se è presente più memoria RES
a disposizione.

588

Pagina 629

Parte V
Imparare la sicurezza di Linux
Tecniche
IN QUESTA PARTE
Capitolo 22
Comprensione della sicurezza Linux di base

Capitolo 23
Comprensione della sicurezza Linux avanzata

Capitolo 24
Migliorare la sicurezza di Linux con SELinux

Capitolo 25
Protezione di Linux su una rete

Pagina 631
630

CAPITOLO

Comprensione di base
22
Sicurezza Linux
IN QUESTO CAPITOLO
Implementazione della sicurezza di base

Monitoraggio della sicurezza

Controllo e revisione della sicurezza

U
per
nome utente e password semplici sufficienti per proteggere il tuo server. Il numero e la varietà
degli attacchi informatici aumenta ogni giorno e la necessità di migliorare la sicurezza del computer continua
nderstanding la sicurezza è una parte cruciale di amministrazione del sistema Linux. Non sono più un
crescere con loro.

Il primo passo è acquisire la conoscenza delle procedure e dei principi di sicurezza di base. Con queste informazioni
mation, puoi iniziare il processo di blocco e protezione dei tuoi server Linux. Inoltre, puoi
scopri come rimanere informato sulle nuove minacce quotidiane e sui nuovi modi per continuare a proteggere il tuo
preziose risorse informative dell'organizzazione.

Comprendere le basi della sicurezza


La protezione dei sistemi Linux deve essere eseguita su più livelli. Inizia proteggendo fisicamente il file
computer su cui Linux gira e procede utilizzando buone tecniche di base per una corretta definizione
e protezione degli account utente. Queste e altre tecniche sono le prime linee di difesa per la sicurezza
i tuoi sistemi Linux.
Implementazione della sicurezza fisica
Una serratura alla porta della sala server del computer è una prima linea di difesa. Sebbene sia un concetto molto semplice,
è spesso ignorato. L'accesso al server fisico significa l'accesso a tutti i dati in esso contenuti. No secu-
Il software rity può proteggere completamente i tuoi sistemi se qualcuno con intenti dannosi ha accesso fisico a
il server Linux.

591

Pagina 632

Parte V: apprendimento delle tecniche di sicurezza di Linux

La sicurezza fisica di base della sala server include elementi come questi:

■ Una serratura o un allarme di sicurezza sulla porta della sala server


■ Controllidi accesso che consentono solo l'accesso autorizzato e identificano chi ha effettuato l'accesso a
stanza e quando è avvenuto l'accesso, come un sistema di accesso con chiave elettronica
■ Un cartello con la dicitura "vietato l'accesso non autorizzato" sulla porta
■ Criteri su chi può accedere alla stanza e quando l'accesso può avvenire, per gruppi come
il personale addetto alle pulizie, gli amministratori del server e altri

La sicurezza fisica include controlli ambientali. Adeguati sistemi di soppressione degli incendi e
deve essere implementata una ventilazione adeguata per la sala server.

Oltre alla sicurezza fisica di base di una sala server, è necessario prestare attenzione a ciò che è
fisicamente alla scrivania di ogni lavoratore. Potrebbe essere necessario bloccare desktop e laptop. Impronte digitali
vengono spesso lasciati sui tablet dei computer, che possono rivelare PIN e password. Pertanto, un tablet
Potrebbe essere necessario implementare la politica di cancellazione dello schermo.

Una Clean Desk Policy (CDP) impone che solo i documenti siano attualmente in lavorazione
sono su una scrivania o che tutti i documenti devono essere chiusi a chiave alla fine della giornata. Un CDP pro
impedisce che le informazioni classificate vengano raccolte da personale ficcanaso e non autorizzato. E,
infine, è obbligatorio un criterio "nessuna password scritta".

Implementazione del ripristino di emergenza


I disastri si verificano e possono esporre i dati della tua organizzazione a situazioni non sicure.
Pertanto, parte della sicurezza del computer include la preparazione per un disastro. Ripristino di emergenza
include la creazione di piani di ripristino di emergenza, il test dei piani e lo svolgimento delle revisioni dei piani.
I piani devono essere testati e aggiornati per mantenere la loro affidabilità in situazioni di vero disastro.

I piani di ripristino di emergenza dovrebbero includere queste cose:

■ Quali dati devono essere inclusi nei backup


■ Dove devono essere archiviati i backup
■ Durata della conservazione dei backup

■ Modalità di rotazione del supporto di backup attraverso l'archiviazione

I dati di backup, i supporti e il software dovrebbero essere inclusi nella matrice di controllo degli accessi
lista di controllo.

È importante determinare quante copie di backup di ogni oggetto devono essere mantenute. Considerando che potresti aver bisogno di
solo tre copie di backup di un particolare oggetto, un altro potrebbe avere un'importanza sufficiente per mantenerne di più
copie.

592

Pagina 633
Capitolo 22: Comprensione della sicurezza Linux di base

Le utilità di backup su un sistema Linux includono quanto segue:

■ amanda (Advanced Maryland Automatic Network Disk Archiver)


■ cpio

■ dump / ripristino
■ tar

Le utilità cpio, dump / restore e tar sono in genere preinstallate su una dis-
tribuzione. Solo amanda non è installato di default. Tuttavia, l'amanda è estremamente popolare
perché offre una grande flessibilità e può persino eseguire il backup di un sistema Windows.
Se sono necessarie ulteriori informazioni sull'utilità di backup di amanda, vedere www.amanda.org . Il
l'utilità che alla fine scegli dovrebbe soddisfare le particolari esigenze di sicurezza della tua organizzazione
backup.
22
Con un po 'di fortuna, i disastri si verificano solo raramente. Tuttavia, ogni giorno, gli utenti accedono al tuo sistema Linux
tem. Gli account utente e le password hanno impostazioni di sicurezza di base che dovrebbero essere riviste e
implementato secondo necessità.

Protezione degli account utente


Gli account utente fanno parte del processo di autenticazione che consente agli utenti di accedere al sistema Linux.
Una corretta gestione degli account utente migliora la sicurezza di un sistema. Configurazione degli account utente
è stato trattato nel Capitolo 11. Tuttavia, alcune regole aggiuntive sono necessarie per aumentare la sicurezza
rity attraverso la gestione dell'account utente:

■ Un utente per account utente.


■ Limitare l'accesso all'account utente root.
■ Impostare le date di scadenza sugli account temporanei.

■ Rimuovere gli account utente inutilizzati.

Un utente per account utente


Gli account dovrebbero far rispettare la responsabilità. Pertanto, più persone non dovrebbero accedere a
un account. Quando più persone condividono un account, non c'è modo di dimostrare un particolare
individuo ha completato un'azione particolare. Le loro azioni sono negabili, che si chiama repudia-
zione nel mondo della sicurezza. Gli account dovrebbero essere impostati per il non ripudio . In altre parole,
dovrebbe esserci una persona per account utente, quindi le azioni non possono essere negate.

Vuoi sempre impostare la sicurezza del tuo computer per il non ripudio. Ma quel termine può creare confusione. Per aiutarti a ricordare 22
ber i termini, pensali in questo modo:
ripudio : l'utente può negare azioni o rifiutare la responsabilità.
non ripudio : l'utente non può negare azioni o rifiutare la responsabilità.

593

Pagina 634

Parte V: apprendimento delle tecniche di sicurezza di Linux

Limita l'accesso all'account utente root


Se più persone possono accedere all'account di root, hai un'altra situazione di ripudio. voi
non è in grado di monitorare l'utilizzo individuale dell'account root. Per consentire il monitoraggio dell'utilizzo dell'account di root da parte di
viduals, dovrebbe essere istituita una politica per l'utilizzo di sudo (vedere il Capitolo 8) invece di accedere a root.

Invece di concedere a più persone l'autorizzazione di root su un sistema Linux, puoi concedere root
accesso in base al comando con il comando sudo. L'uso di sudo fornisce quanto segue
vantaggi per la sicurezza:

■ Non è necessario fornire la password di root.


■È possibile ottimizzare l'accesso ai comandi.

■ Tutto l'uso di sudo (who, what, when) è registrato in / var / log / secure.

Tutti i tentativi di accesso sudo falliti vengono registrati.

Dopo aver concesso a qualcuno l'autorizzazione sudo, puoi provare a limitare l'accesso di root a determinati componenti
mands nel file / etc / sudoers (con il comando visudo). Tuttavia, dopo aver concesso root
permesso a un utente, anche in modo limitato, è difficile essere sicuri che un determinato utente
non riesce a trovare il modo per ottenere l'accesso root completo al sistema e fare ciò che vuole.

Un modo per tenere sotto controllo un amministratore che si comporta male è avere messaggi di sicurezza
destinato al file / var / log / secure inviato a un server di log remoto che nessuno dei file locali
gli amministratori hanno accesso a. In questo modo, qualsiasi uso improprio dei privilegi di root viene associato a un file
particolare utente ed è registrato in modo tale che l'utente non possa coprire le proprie tracce.

Impostazione delle date di scadenza sui conti temporanei


Se hai consulenti, stagisti o dipendenti temporanei che hanno bisogno di accedere al tuo Linux
sistemi, è importante impostare i propri account utente con date di scadenza. La scadenza
la data è una salvaguardia, nel caso ti dimentichi di rimuovere i loro account quando non ne hanno più bisogno
accesso ai sistemi della tua organizzazione.

Per impostare un account utente con una data di scadenza, utilizzare il comando usermod. Il formato è
usermod -e aaaa-mm-gg nome_utente . Nel codice seguente, l'account tim è stato
che scadrà il 1 ° gennaio 2017.

# usermod -e 2017-01-01 tim

Per verificare che l'account sia stato impostato correttamente per la scadenza, ricontrolla te stesso utilizzando
il comando chage. Il comando chage viene utilizzato principalmente per visualizzare e modificare un utente
informazioni sull'invecchiamento della password dell'account. Tuttavia, contiene anche informazioni sulla scadenza dell'account
mazione. L'opzione -l ti permette di elencare le varie informazioni a cui chage ha accesso. Per
mantienilo semplice, convoglia l'output del comando chage in grep e cerca il file
parola "Account". Questo produce solo la data di scadenza dell'account utente.

# chage -l tim | account grep


L'account scade : 1 gennaio 2017

La data di scadenza dell'account è stata modificata con successo per tim al 1 gennaio 2017.

594

Pagina 635

Capitolo 22: Comprensione della sicurezza Linux di base

Se non usi il file / etc / shadow per memorizzare le password del tuo account, l'utility chage non funziona. Nella maggior parte dei casi
casi, questo non è un problema perché il file / etc / shadow è configurato per memorizzare le informazioni sulla password per impostazione predefinita
la maggior parte dei sistemi Linux ..

Imposta le date di scadenza dell'account per tutti i dipendenti temporanei. Inoltre, considera la possibilità di rivedere
tutte le date di scadenza degli account utente come parte delle attività di monitoraggio della sicurezza. Questi attivi
ities aiutano ad eliminare qualsiasi potenziale backdoor sul tuo sistema Linux.

Rimozione degli account utente inutilizzati


Tenere in giro vecchi account scaduti è fonte di problemi. Dopo che un utente ha lasciato un'organizzazione
zation, è meglio eseguire una serie di passaggi per rimuovere il proprio account insieme ai dati: 22
1. Trova i file sul sistema di proprietà dell'account, utilizzando il seguente comando:
trova / -user nomeutente

2. Scadere o disabilitare l'account.

3. Eseguire il backup dei file.

4. Rimuovere i file o riassegnarli a un nuovo proprietario.

5. Elimina l'account dal sistema.


Si verificano problemi quando si dimentica il passaggio 5 e gli account scaduti o disabilitati sono ancora presenti nel file
sistema. Un utente malintenzionato che ottiene l'accesso al tuo sistema potrebbe rinnovare l'account e poi
mascherarsi da utente legittimo.

Per trovare questi account, cerca nel file / etc / shadow. La scadenza dell'account
la data è nell'ottavo campo di ogni record. Sarebbe conveniente se fosse utilizzato un formato di data.
Invece, questo campo mostra la data di scadenza dell'account come numero di giorni trascorsi da gennaio
1, 1970.

È possibile utilizzare un processo in due passaggi per trovare gli account scaduti nel file / etc / shadow automaticamente
cally. Per prima cosa, impostare una variabile di shell (vedere il Capitolo 7) con la data odierna in "giorni da gennaio
1, 1970 "formato. Quindi, usando il comando gawk, puoi ottenere e formattare le informazioni
richiesta dal file / etc / shadow.

Impostazione di una variabile di shell con la data corrente convertita nel numero di giorni trascorsi da allora
Il 1 gennaio 1970 non è particolarmente difficile. Il comando date può produrre il numero di
secondi dal 1 gennaio 1970. Per ottenere ciò di cui hai bisogno, dividi il risultato dalla data
mandato per il numero di secondi in un giorno: 86.400. Di seguito viene illustrato come impostare
la variabile di shell OGGI.
# TODAY = $ (echo $ (($ (date --utc --date "$ 1" +% s) / 86400)))
# echo $ OGGI
16373

595

Pagina 636

Parte V: apprendimento delle tecniche di sicurezza di Linux

Successivamente, gli account e le relative date di scadenza vengono estratti dal file / etc / shadow
usando gawk. Il comando gawk è la versione GNU del programma awk utilizzato in UNIX.
L'output del comando è mostrato nel codice che segue. Come ci si aspetterebbe, molti di
gli account non hanno una data di scadenza. Tuttavia, due account, consulente e
Stagista, mostra una data di scadenza nel formato "giorni dal 1 gennaio 1970". Nota che tu
può saltare questo passaggio. È solo a scopo dimostrativo.

# gawk -F: "{print $ 1, $ 8}" / etc / shadow


...
Chrony
tcpdump
johndoe
Consulente 13819
Stagista 13911

$ 1 e $ 8 nel comando gawk rappresentano i campi del nome utente e della data di scadenza in
i record del file / etc / shadow. Per controllare le date di scadenza di questi account e vedere se
sono scaduti, è necessaria una versione più raffinata del comando gawk.

# gawk -F: '{if (($ 8> 0) && ($ TODAY> $ 8)) print $ 1}' / etc / shadow
Consulente
Stagista

Solo gli account con una data di scadenza vengono raccolti dalla porzione ($ 8> 0) di gawk
comando. Per assicurarsi che queste date di scadenza siano oltre la data corrente, la
in grado viene confrontato con il campo della data di scadenza, $ 8. Se TODAY è maggiore di quello dell'account
data di scadenza, l'account viene elencato. Come puoi vedere nell'esempio precedente, due
gli account scaduti esistono ancora nel sistema e devono essere rimossi.

Questo è tutto ciò che devi fare. Imposta la tua variabile TODAY ed esegui il comando gawk. Tutti
gli account scaduti nel file / etc / shadow sono elencati per te. Per rimuovere questi account,
usa il comando userdel.

Gli account utente sono solo una parte del processo di autenticazione, consentendo agli utenti di accedere a
Sistema Linux. Anche le password degli account utente svolgono un ruolo importante nel processo.

Protezione delle password


Le password sono lo strumento di sicurezza più basilare di qualsiasi sistema operativo moderno e, di conseguenza,
spesso, la funzione di sicurezza più comunemente attaccata. È naturale che gli utenti lo desiderino
scegliere una password facile da ricordare, ma spesso questo significa scegliere una password
anche questo è facile da indovinare.

I metodi di forza bruta sono comunemente impiegati per ottenere l'accesso a un sistema informatico. Provando
le password popolari spesso producono risultati. Alcune delle password più comuni sono:

■ 123456

■ Password

596

Pagina 637

Capitolo 22: Comprensione della sicurezza Linux di base


■ principessa

■ rockyou

■ abc123

Utilizza il tuo motore di ricerca Internet preferito e cerca "password comuni". Se puoi
trovare questi elenchi, quindi possono farlo anche i malintenzionati. Ovviamente, la scelta di buone password lo è
fondamentale per avere un sistema sicuro.

Scegliere buone password


In generale, una password non deve essere facile da indovinare, essere comune o popolare o essere collegata
in alcun modo. Ecco alcune regole da seguire quando si sceglie una password:

■ Non utilizzare alcuna variazione del nome di accesso o del nome completo.
22
■ Non utilizzare una parola del dizionario.
■ Non utilizzare nomi propri di alcun tipo.

■ Non utilizzare il tuo numero di telefono, indirizzo, famiglia o nomi di animali domestici.
■ Non utilizzare nomi di siti Web.
■ Non utilizzare linee di lettere o numeri contigue sulla tastiera (come
"Qwerty" o "asdfg").
■ Non utilizzare nessuno dei precedenti con l'aggiunta di numeri o punteggiatura in primo piano o
end o digitato al contrario.

Quindi, ora che sai cosa non fare, guarda i due elementi principali che compongono un forte
parola d'ordine:

■ Una password deve contenere almeno da 15 a 25 caratteri.


■ Una password dovrebbe contenere tutti i seguenti elementi:

■ Lettere minuscole
■ Lettere maiuscole
■ Numeri

■ Caratteri speciali, come:! $% * () - + =, <>:: "'

Venticinque caratteri è una password lunga. Tuttavia, più lunga è la password, più sarà
sicuro lo è. Ciò che l'organizzazione sceglie come lunghezza minima della password dipende
sulle sue esigenze di sicurezza.

Il Gibson Research Center dispone di materiale eccellente sulle password complesse, incluso un articolo intitolato "Quanto è grande
il tuo pagliaio ... e quanto è ben nascosto il tuo ago ? " su www.grc.com/haystack.htm.

597

Pagina 638

Parte V: apprendimento delle tecniche di sicurezza di Linux

La scelta di una buona password può essere difficile. Deve essere abbastanza difficile da non essere indovinato e
abbastanza facile da ricordare. Un buon modo per scegliere una password complessa è prendere il
prima lettera di ogni parola di una frase facile da ricordare. Assicurati di aggiungere numeri, spe-
caratteri cial e caso vario. La frase che scegli dovrebbe avere significato solo per te,
e non dovrebbero essere disponibili pubblicamente. La Tabella 22.1 elenca esempi di password complesse e di
trucchi usati per ricordarli.

TABELLA 22.1 Idee per buone password

Parola d'ordine Come ricordarlo

Mrci7yo! La mia macchina arrugginita ha 7 anni!

2emBp1ib 2 elefanti sono animali domestici CATTIVI, 1 è meglio

ItMc? Gib Quello è il mio cappotto? Restituiscilo

Le password sembrano sciocchezze ma sono piuttosto facili da ricordare. Certo che no


per utilizzare le password elencate qui. Ora che sono pubblici, verranno aggiunti a quelli dannosi
dizionari degli aggressori.

Impostazione e modifica delle password


Puoi impostare la tua password utilizzando il comando passwd. Digita il comando passwd e questo
ti permette di cambiare la tua password. Innanzitutto, ti chiede di inserire la tua vecchia password. Per
proteggere da qualcuno che naviga e apprende la tua password, la password non lo è
visualizzato durante la digitazione.

Supponendo che tu digiti correttamente la tua vecchia password, il comando passwd ti richiede
la nuova password. Quando si digita la nuova password, viene verificata utilizzando un'utilità chiamata
cracklib per determinare se si tratta di una password buona o cattiva. Gli utenti non root devono farlo
provare una password diversa se quella che hanno scelto non è una buona password.

L'utente root è l'unico utente a cui è consentito assegnare password errate. Dopo la password
è stato accettato da cracklib, il comando passwd ti chiede di inserire la nuova password
una seconda volta per assicurarti che non ci siano errori di battitura (che sono difficili da rilevare quando non puoi vedere
cosa stai digitando).

Quando si esegue come root, è possibile modificare la password di un utente fornendo il login dell'utente
name come parametro del comando passwd. Per esempio:

# passwd joe
Modifica della password per l'utente joe.
Nuova password UNIX: ********
Digita nuovamente la nuova password UNIX: ********
passwd: tutti i token di autenticazione sono stati aggiornati correttamente.

598

Pagina 639

Capitolo 22: Comprensione della sicurezza Linux di base

Qui, il comando passwd ti richiede due volte di inserire una nuova password per Joe. Non è così
richiedere la sua vecchia password in questo caso.

Applicazione delle migliori pratiche per le password


Ora sai che aspetto ha una buona password e come modificare una password, ma come
lo imponi sul tuo sistema Linux? Per iniziare bene l'applicazione della migliore password
pratiche, istruire gli utenti del sistema. Gli utenti istruiti sono utenti migliori. Ecco alcune idee per
formazione scolastica:

■ Aggiungere un articolo sulle migliori pratiche per le password al mensile della propria organizzazione
newsletter.
■ Affiggere fogli di suggerimenti nelle sale relax, come "Le dieci peggiori password".
■ Inviare regolarmente e-mail di sicurezza del computer ai dipendenti contenenti suggerimenti per la password. 22
■ Fornire ai nuovi dipendenti formazione sulle password.

I dipendenti che conoscono la sicurezza delle password spesso si sforzano di creare buone password al lavoro
così come a casa. Uno degli "agganci" per attirare l'attenzione degli utenti è farlo sapere ai dipendenti
queste password funzionano bene anche durante la creazione di password personali, ad esempio per il loro online
conti bancari.

Tuttavia, ci sono sempre alcuni utenti che si rifiutano di implementare buone pratiche per le password. Più,
le politiche di sicurezza aziendali spesso richiedono che una password venga cambiata ogni tanti giorni.
Può diventare stancante trovare password nuove e sicure ogni 30 giorni! È per questo
alcune tecniche di applicazione sono spesso necessarie.

Se gli utenti hanno difficoltà a creare password sicure e univoche, considera l'installazione dell'utilità pwgen sul tuo
Sistema Linux. Questa utility di generazione di password open source crea password che sono pronunciate per essere pronunciate
e memorabile. È possibile utilizzare queste parole generate come punto di partenza per la creazione delle password degli account.

I valori predefiniti nel file /etc/login.defs per i nuovi account sono stati trattati nel Capitolo 11.
All'interno del file login.defs ci sono alcune impostazioni che influenzano la durata e la lunghezza della password:

PASS_MAX_DAYS 30
PASS_MIN_DAYS 5
PASS_MIN_LEN 16
PASS_WARN_AGE 7

In questo esempio, il numero massimo di giorni, PASS_MAX_DAYS, fino alla password deve
essere modificato è 30. Il numero impostato qui dipende dal tuo account specifico
impostare. Per le organizzazioni che praticano una persona per un account, questo numero può essere molto
maggiore di 30. Se hai account condivisi o più persone conoscono la password di root, lo è
599

Pagina 640

Parte V: apprendimento delle tecniche di sicurezza di Linux

imperativo cambiare spesso la password. Questa pratica aggiorna efficacemente l'elenco


di chi conosce la password.

Per impedire agli utenti di cambiare la propria password con una nuova password e poi immediatamente
cambiandolo di nuovo, è necessario impostare PASS_MIN_DAYS su un numero maggiore di 0. Nel file
Nell'esempio precedente, il tempo massimo che un utente può cambiare di nuovo la sua password è di 5 giorni.

L'impostazione PASS_WARN_AGE è il numero di giorni in cui un utente viene avvisato prima di essere costretto
cambia la sua password. Le persone tendono ad aver bisogno di molti avvertimenti e stimoli, quindi il precedente
L'esempio imposta il tempo di avviso su 7 giorni.

In precedenza nel capitolo, ho detto che una password complessa è compresa tra 15 e 25 caratteri
ters lungo. Con l'impostazione PASS_MIN_LEN, puoi obbligare gli utenti a utilizzare un certo minimo
numero di caratteri nelle loro password. L'impostazione che scegli dovrebbe essere basata sul tuo
i piani del ciclo di vita della sicurezza dell'organizzazione.

Ubuntu non ha l'impostazione PASS_MIN_LEN nel suo file login.defs. Questa impostazione viene invece gestita da
Utilità PAM. PAM è trattato nel Capitolo 23.

Per gli account che sono già stati creati, è necessario controllare la durata della password tramite il
comando chage. Le opzioni necessarie per controllare l'invecchiamento della password con chage sono elencate in
Tabella 22.2. Si noti che non esiste un'impostazione della lunghezza della password nell'utilità chage.

TABELLA 22.2 Opzioni di cambio

Opzione Descrizione

-M Imposta il numero massimo di giorni prima che sia necessario modificare una password.
Equivalente a PASS_MAX_DAYS in /etc/login.defs

-m Imposta il numero minimo di giorni prima che una password possa essere modificata di nuovo.
Equivalente a PASS_MIN_DAYS in /etc/login.defs

-W Imposta il numero di giorni in cui un utente viene avvisato prima di essere costretto a modificare il file
password dell'account. Equivalente a PASS_WARN_AGE in /etc/login.defs

L'esempio che segue utilizza il comando chage per impostare i parametri di invecchiamento della password per
l'account tim. Tutte e tre le opzioni vengono utilizzate contemporaneamente.

# chage -l tim | giorni grep


Numero minimo di giorni tra la modifica della password :0
Numero massimo di giorni tra la modifica della password : 99999
Numero di giorni di avviso prima della scadenza della password: 7

600

Pagina 641

Capitolo 22: Comprensione della sicurezza Linux di base

# chage -M 30 -m 5 -W 7 tim
# chage -l tim | giorni grep
Numero minimo di giorni tra la modifica della password :5
Numero massimo di giorni tra la modifica della password : 30
Numero di giorni di avviso prima della scadenza della password: 7

Puoi anche usare il comando chage come un altro metodo di scadenza dell'account, che
si basa sulla scadenza della password dell'account. In precedenza, l'utilità usermod veniva utilizzata per
scadenza dell'account. Usa il comando chage con le opzioni -M e -I per bloccare il file
account. Nel codice che segue, l'account tim viene visualizzato utilizzando chage -l. Solo il
le informazioni per le password degli account di tim vengono estratte.

# chage -l tim | password grep


La password scade : mai
Password non attiva : mai
22
Puoi vedere che non ci sono impostazioni per la scadenza della password (La password scade) o
inattività della password (password inattiva). Nel codice seguente, l'account è impostato su
bloccato 5 giorni dopo la scadenza della password di tim, utilizzando solo l'opzione -I.

# chage -I 5 tim
# chage -l tim | password grep
La password scade : mai
Password non attiva : mai

Notare che nessuna impostazione è cambiata! Senza una scadenza della password impostata, l'opzione -I non ha
effetto. Pertanto, utilizzando l'opzione -M, il numero massimo di giorni viene impostato prima della password
scade e l'impostazione per il tempo di inattività della password dovrebbe essere mantenuta.

# chage -M 30 -I 5 tim
# chage -l tim | password grep
La password scade : 3 marzo 2017
Password non attiva : 8 marzo 2017

Ora, l'account di Tim verrà bloccato 5 giorni dopo la scadenza della sua password. Questo è utile in situ
azioni in cui un dipendente ha lasciato l'azienda, ma il suo account utente non è ancora stato
rimosso. A seconda delle esigenze di sicurezza della tua organizzazione, valuta la possibilità di impostare tutti gli account
per bloccare un certo numero di giorni dopo la scadenza delle password.

Comprensione dei file delle password e degli hash delle password


I primi sistemi Linux memorizzavano le loro password nel file / etc / passwd. Le password erano
hash . Una password con hash viene creata utilizzando un processo matematico unidirezionale. Dopo di te
creare l'hash, non è possibile ricreare i caratteri originali dall'hash. Ecco come funziona
lavori.

Quando un utente immette la password dell'account, il sistema Linux rehash la password e


quindi confronta il risultato hash con l'hash originale in / etc / passwd. Se corrispondono, il file
l'utente è autenticato e autorizzato a entrare nel sistema.

601

Pagina 642

Parte V: apprendimento delle tecniche di sicurezza di Linux

Il problema con la memorizzazione di questi hash delle password nel file / etc / passwd ha a che fare con
le impostazioni di sicurezza del filesystem (vedi Capitolo 4). Le impostazioni di sicurezza del file system per
I file / etc / passwd sono elencati qui:

# ls -l / etc / passwd
-rw-r - r--. 1 root root 1644 2 febbraio 02:30 / etc / passwd

Come puoi vedere, tutti possono leggere il file della password. Potresti pensare che questo non sia un file
problema perché le password sono tutte hash. Tuttavia, individui con intenti dannosi
hanno creato file chiamati tabelle arcobaleno . Un tavolo arcobaleno è semplicemente un dizionario di potenziale
password che sono state sottoposte ad hashing. Ad esempio, la tabella arcobaleno conterrebbe l'hash
per la popolare password "Password", che è:

$ 6 $ dhN5ZMUj $ CNghjYIteau5xl8yX.f6PTOpendJwTOcXjlTDQUQZhhy
V8hKzQ6Hxx6Egj8P3VsHJ8Qrkv.VSR5dxcK3QhyMc.

A causa della facilità di accesso agli hash delle password nel file / etc / passwd, è solo un file
questione di tempo prima che una password con hash venga trovata in una tabella arcobaleno e il testo in chiaro
password scoperta.

Gli esperti di sicurezza ti diranno che le password non sono solo sottoposte ad hashing, ma sono anche salate. Salare un hashish significa
che un valore generato in modo casuale venga aggiunto alla password originale prima che venga sottoposto ad hashing. Questo lo rende ancora più difficile
ficult per far corrispondere la password con hash alla sua password originale. Tuttavia, in Linux, viene archiviato anche il sale hash
con le password con hash. Pertanto, l'accesso in lettura al file / etc / passwd significa che hai il valore hash e il suo salt.

Pertanto, le password con hash sono state spostate in un nuovo file di configurazione, / etc / shadow, molti
anni fa. Questo file ha le seguenti impostazioni di sicurezza:
# ls -l / etc / shadow
----------. 1 radice radice 1049 2 febbraio 09:45 / etc / shadow

Nonostante non abbia autorizzazioni aperte, root, ma nessun altro utente, può visualizzare questo file. Quindi,
le password con hash sono protette. Ecco la fine di un file / etc / shadow. Puoi
vedere che ci sono stringhe di caratteri lunghe e prive di senso nel record di ogni utente. Quelle sono le
password con hash.

# coda -2 / etc / shadow


johndoe: $ 6 $ jJjdRN9 / qELmb8xWM1LgOYGhEIxc /: 15364: 0: 99999: 7 :::
Tim: $ 6 $ z760AJ42 $ QXdhFyndpbVPVM5oVtNHs4B /: 15372: 5: 30: 7: 16436 ::

È possibile ereditare un sistema Linux che utilizza ancora il vecchio metodo per conservare le password con hash nel file / etc /
passwd file. È facile da riparare. Basta usare il comando pwconv e il file / etc / shadow viene creato e sottoposto ad hashing
password spostate in esso.

602

Pagina 643

Capitolo 22: Comprensione della sicurezza Linux di base

Quanto segue è anche memorizzato nel file / etc / shadow, oltre al nome dell'account
e password con hash:

■ Numero di giorni (dal 1 gennaio 1970) da quando la password è stata modificata

■ Numero di giorni prima che la password possa essere modificata


■ Numero di giorni prima che sia necessario modificare una password
■ Numero di giorni per avvisare un utente prima che sia necessario modificare una password
■ Numero di giorni dopo la scadenza della password in cui un account è disabilitato

■ Numero di giorni (dal 1 gennaio 1970) in cui un account è stato disabilitato

Dovrebbero suonare familiari perché sono le impostazioni per l'invecchiamento della password coperte dall'orecchio.
lier nel capitolo. Ricorda che il comando chage non funziona se non hai un
Il file / etc / shadow è impostato, né il file /etc/login.defs è disponibile. 22
Ovviamente, le impostazioni di sicurezza del filesystem sono molto importanti per mantenere il tuo sistema Linux
sicuro. Ciò è particolarmente vero con i file di configurazione di tutti i sistemi Linux e altri.

Protezione del filesystem


Un'altra parte importante della protezione del proprio sistema Linux è l'impostazione della corretta sicurezza del filesystem.
Le basi per le impostazioni di sicurezza sono state trattate nel Capitolo 4 e negli elenchi di controllo di accesso (ACL)
nel Capitolo 11. Tuttavia, ci sono alcuni punti aggiuntivi che devono essere aggiunti al tuo
base di conoscenza.

Gestione dei permessi pericolosi del filesystem


Se hai dato pieno accesso rwxrwxrwx (777) a tutti i file sul sistema Linux, puoi immaginare
il caos che ne sarebbe seguito. In molti modi, un caos simile può verificarsi se non è gestito da vicino
impostando i permessi SetUID (SUID) e SetGID (SGID) (vedere i capitoli 4 e 11).

File con autorizzazione SUID nella categoria Proprietario e autorizzazione di esecuzione in


Altre categorie consentono a chiunque di diventare temporaneamente il proprietario del file mentre il file è in corso
eseguito in memoria. Il caso più rischioso è se il proprietario del file è root.

Allo stesso modo, i file con l'autorizzazione SGID nella categoria Proprietario e l'autorizzazione di esecuzione in
la categoria Altro consente a chiunque di diventare temporaneamente un membro del gruppo del gruppo del file
mentre il file viene eseguito in memoria. SGID può essere impostato anche sulle directory. Questo imposta
l'ID gruppo di tutti i file creati nella directory all'ID gruppo della directory.

I file eseguibili con SUID o SGID sono preferiti dagli utenti malintenzionati. Quindi, è meglio usare
con parsimonia. Tuttavia, alcuni file devono mantenere queste impostazioni. Due esempi sono i
passwd e i comandi sudo, che seguono. Ciascuno di questi file dovrebbe mantenere il proprio
Autorizzazioni SUID.

$ ls -l / usr / bin / passwd


-rwsr-xr-x. 1 root root 28804 17 agosto 20:50 / usr / bin / passwd

603
Pagina 644

Parte V: apprendimento delle tecniche di sicurezza di Linux

$ ls -l / usr / bin / sudo


--- s - x - x. 2 root root 77364 3 nov 08:10 / usr / bin / sudo

Comandi come passwd e sudo sono progettati per essere utilizzati come programmi SUID. Anche
sebbene questi comandi vengano eseguiti come utente root, come utente normale puoi solo modificare il tuo
password con passwd e puoi solo passare al permesso di root con sudo se lo fossi
dato il permesso nel file / etc / sudoers. Una situazione più pericolosa sarebbe se a
l'hacker ha creato un comando bash SUID; chiunque esegua quel comando potrebbe farlo in modo efficace
cambia tutto sul sistema che aveva accesso root.

Usando il comando find, puoi cercare nel tuo sistema per vedere se ci sono file nascosti o
comandi SUID e SGID altrimenti inappropriati sul sistema. Ecco un esempio:

# trova / -perm / 6000 -ls


4597316 52 -rwxr-sr-x 1 root games 51952 21 dicembre 2013 / usr / bin / atc
4589119 20 -rwxr-sr-x 1 root tty 19552 18 nov 2013 / usr / bin / write
4587931 60 -rwsr-xr-x 1 root root 57888 2 agosto 2013 / usr / bin / at
4588045 60 -rwsr-xr-x 1 root root 57536 25 settembre 2013 / usr / bin / crontab
4588961 32 -rwsr-xr-x 1 root root 32024 18 novembre 2013 / usr / bin / su
...
5767487 85 -rwsrwsr-x 1 root root 68928 Sep 13 11:52 /var/.bin/myvi
...

Si noti che find scopre i comandi SetUID e SetGID che possono essere eseguiti dagli utenti normali
intensificare il loro permesso per motivi particolari. In questo esempio, c'è anche un file che a
l'utente ha tentato di nascondere (myvi). Questa è una copia del comando vi che, a causa del permesso
e la proprietà, può modificare i file di proprietà di root. Questo è ovviamente un utente che fa qualcosa che lui
non dovrebbe fare.

Protezione dei file delle password


Il file / etc / passwd è il file che il sistema Linux utilizza per controllare le informazioni sull'account utente
ed è stato trattato in precedenza nel capitolo. Il file / etc / passwd dovrebbe avere quanto segue
impostazioni di autorizzazione:

■ Proprietario: root
■ Gruppo: root
■ Autorizzazioni: (644) Proprietario: rw- Gruppo: r-- Altro: r--

L'esempio che segue mostra che il file / etc / passwd ha le impostazioni appropriate.

# ls -l / etc / passwd
-rw-r - r--. 1 root root 1644 2 febbraio 02:30 / etc / passwd

Queste impostazioni sono necessarie affinché gli utenti possano accedere al sistema e vedere i nomi utente associati
con ID utente e numeri ID di gruppo. Tuttavia, gli utenti non dovrebbero essere in grado di modificare il file / etc /
passwd direttamente. Ad esempio, un utente malintenzionato potrebbe aggiungere un nuovo account al file in caso di scrittura
l'accesso è stato concesso ad Altro.

604

Pagina 645

Capitolo 22: Comprensione della sicurezza Linux di base

Il file successivo è il file / etc / shadow. Ovviamente è strettamente correlato a / etc / passwd
file perché viene utilizzato anche durante il processo di autenticazione del login. Questo file / etc / shadow
dovrebbe avere le seguenti impostazioni di autorizzazione:

■ Proprietario: root
■ Gruppo: root
■ Autorizzazioni: (000) Proprietario: --- Gruppo: --- Altro: ---
Il codice che segue mostra che il file / etc / shadow ha le impostazioni appropriate.
# ls -l / etc / shadow
----------. 1 radice radice 1049 2 febbraio 09:45 / etc / shadow

Il file / etc / passwd ha accesso in lettura per il proprietario, il gruppo e altri. Nota quanto
più il file / etc / shadow è limitato rispetto al file / etc / passwd. Per il / etc / 22
shadow, non sono disponibili autorizzazioni di accesso, sebbene l'utente root possa comunque accedere al file
file. Quindi, se solo root può visualizzare questo file, come può un utente modificare la propria password perché
è archiviato in / etc / shadow? L'utility passwd, / usr / bin / passwd, utilizza lo speciale
missione SUID. Questa impostazione di autorizzazione è mostrata qui:

# ls -l / usr / bin / passwd


-rwsr-xr-x. 1 root root 28804 17 agosto 20:50 / usr / bin / passwd

Pertanto, l'utente che esegue il comando passwd diventa temporaneamente root mentre il comando
è in esecuzione in memoria e può quindi scrivere nel file / etc / shadow, ma solo per modificarlo
le informazioni relative alla password dell'utente.

root non ha accesso in scrittura ai permessi / etc / shadow, quindi come scrive root in / etc / shadow
file? L'utente root è onnipotente e ha accesso completo a tutti i file, indipendentemente dal fatto che le autorizzazioni siano elencate o meno.

Il file / etc / group (vedere il Capitolo 11) contiene tutti i gruppi sul sistema Linux. Il suo file
i permessi dovrebbero essere impostati esattamente come il file / etc / passwd:

■ Proprietario: root
■ Gruppo: root

■ Autorizzazioni: (644) Proprietario: rw- Gruppo: r-- Altro: r--

Inoltre, il file della password del gruppo, / etc / gshadow, deve essere adeguatamente protetto. Come faresti tu
previsto, l'autorizzazione del file dovrebbe essere impostata esattamente come il file / etc / shadow:

■ Proprietario: root
■ Gruppo: root
■ Autorizzazioni: (000) Proprietario: --- Gruppo: --- Altro: ---

605

Pagina 646

Parte V: apprendimento delle tecniche di sicurezza di Linux

Bloccare il filesystem
Anche la tabella del filesystem (vedere il Capitolo 12), / etc / fstab, richiede una particolare attenzione. Il
Il file / etc / fstab viene utilizzato all'avvio per montare i dispositivi di archiviazione sui file system. È anche
utilizzato dal comando mount, dal comando dump e dal comando fsck. Il file / etc /
Il file fstab dovrebbe avere le seguenti impostazioni di autorizzazione:

■ Proprietario: root
■ Gruppo: root

■ Autorizzazioni: (664) Proprietario: rw- Gruppo: rw- Altro: r--

All'interno della tabella del filesystem, ci sono alcune importanti impostazioni di sicurezza che devono essere
rivisto. Oltre alle partizioni root, boot e swap, le opzioni del filesystem sono abbastanza sicure
per impostazione predefinita. Tuttavia, potresti prendere in considerazione anche quanto segue:

■ In genere, si inserisce la sottodirectory / home, in cui si trovano le directory degli utenti, in


la sua partizione e quando aggiungi le opzioni di montaggio, puoi fare quanto segue:
■È possibile impostare l'opzione nosuid per impedire che SUID e SGID siano abilitati
programmi eseguibili in esecuzione da lì. Programmi che richiedono SUID e SGID
le autorizzazioni non devono essere archiviate in / home e sono molto probabilmente dannose.
■È possibile impostare l'opzione nodev in modo che nessun file di dispositivo che si trova lì venga riconosciuto.
I file del dispositivo dovrebbero essere archiviati in / dev e non in / home.
■È possibile impostare l'opzione noexec in modo che nessun programma eseguibile, che viene memorizzato in
/ home, può essere eseguito.
■È possibile inserire la sottodirectory / tmp, in cui si trovano i file temporanei, da sola
partizione e utilizzare le stesse impostazioni delle opzioni di / home:
■ nosuid

■ nodev

■ noexec

■È possibile inserire la sottodirectory / usr, in cui si trovano i programmi utente e i dati, su


la propria
nizzato. partizione
Dopo e impostare
aver installato l'opzionelanodev
il software, in modo
directory che nessun
/ usr spesso file dio dispositivo
ha poche localizzato sia riconosciuto
nessuna modifica
(a volte, è persino montato in sola lettura per motivi di sicurezza).
■ Se il sistema è configurato come server, probabilmente vorrai mettere il sottodispositivo / var
canonica sulla propria partizione. La directory / var è destinata a crescere, come messaggi di log
e vengono aggiunti contenuti per web, FTP e altri server. Puoi usare la stessa montatura
opzioni con la partizione / var come fai per / home:
■ nosuid

■ nodev

■ noexec

606

Pagina 647

Capitolo 22: Comprensione della sicurezza Linux di base

Mettere il precedente nel tuo / etc / fstab sarebbe simile al seguente:

/ dev / sdb1 / home ext4 nodev, noexec, nosuid 1 2


/ dev / sdc1 / tmp ext4 nodev, noexec, nosuid 1 1
/ dev / sdb2 / usr ext4 nodev 12
/ dev / sdb3 / var ext4 nodev, noexec, nosuid 1 2

Queste opzioni di montaggio aiuteranno a bloccare ulteriormente il tuo filesystem e ad aggiungere un altro livello
di protezione da persone con intenti dannosi.

Anche in questo caso, la gestione dei vari permessi dei file e delle opzioni fstab dovrebbe far parte del tuo
politica di sicurezza. Gli elementi che scegli di implementare devono essere determinati dalla tua organizzazione
esigenze di sicurezza.

Gestione di software e servizi 22


Spesso, l'obiettivo dell'amministratore è assicurarsi che il software ei servizi necessari siano attivi
un sistema Linux. Dal punto di vista della sicurezza, devi prendere il punto di vista opposto e
assicurarsi che il software ei servizi non necessari non siano su un sistema Linux.

Aggiornamento dei pacchetti software


Oltre a rimuovere servizi e software non necessari, mantenere aggiornato il software corrente
la data è fondamentale per la sicurezza. Le ultime correzioni di bug e patch di sicurezza sono ottenute tramite software
aggiornamenti degli articoli. Gli aggiornamenti dei pacchetti software sono stati trattati nei capitoli 9 e 10.

Gli aggiornamenti software devono essere eseguiti regolarmente. Quanto spesso e quando lo fai, di
ovviamente, dipende dalle esigenze di sicurezza della tua organizzazione.

Puoi automatizzare facilmente gli aggiornamenti software, ma come rimuovere servizi e software, è
sarebbe saggio testare prima gli aggiornamenti in un ambiente di test. Quando viene visualizzato il software aggiornato
nessun problema, puoi quindi aggiornare il software sui tuoi sistemi Linux di produzione.

Tenere il passo con gli avvisi di sicurezza


Poiché le falle di sicurezza si trovano nel software Linux, le vulnerabilità e le esposizioni comuni
(CVE) li tiene traccia e aiuta a ottenere rapidamente correzioni per quei difetti su cui ha lavorato il
Comunità Linux. Aziende come Red Hat forniscono pacchetti aggiornati per riparare la sicurezza
difetti di qualità e consegnarli in quella che viene definita errata . Gli Errata possono consistere in un singolo
pacchetto aggiornato o più pacchetti aggiornati. Se utilizzi Red Hat Enterprise
Linux, cerchi, identifichi e installi i pacchetti associati a un particolare CVE
e consegnato in errata.

Per ulteriori informazioni su come vengono gestiti gli aggiornamenti di sicurezza in Red Hat Enterprise Linux, fare riferimento a
Pagina degli aggiornamenti di sicurezza sul portale clienti di Red Hat (https://access.redhat.com/
sicurezza / aggiornamenti /). Il sito contiene un patrimonio di conoscenze relative alle vulnerabilità della sicurezza
abilità e come vengono trattate. Essere in grado di ottenere aggiornamenti di sicurezza tempestivi è uno
dei motivi principali per cui le aziende sottoscrivono sistemi critici a Red Hat Enterprise Linux.

607
Pagina 648

Parte V: apprendimento delle tecniche di sicurezza di Linux

Implementazione avanzata
Dovresti essere a conoscenza di molti altri importanti argomenti sulla sicurezza mentre stai pianificando il tuo
schieramenti. Includono crittografia, moduli PAM (Pluggable Authentication Modules) e
SELinux. Questi argomenti avanzati e dettagliati si trovano in capitoli separati, Capitolo 23 e
Capitolo 24.

Monitoraggio dei vostri sistemi


Se fai un buon lavoro di pianificazione e implementazione della sicurezza del tuo sistema, più dannoso
gli attacchi verranno fermati. Tuttavia, se dovesse verificarsi un attacco, è necessario essere in grado di riconoscere
nize it. Il monitoraggio deve essere continuato.

Il monitoraggio del sistema include il controllo dei file di registro, degli account utente e del file system
si. Inoltre, sono necessari alcuni strumenti per rilevare intrusioni e altri tipi di file
malware.

Monitoraggio dei file di registro


Capire come viene eseguita la registrazione dei messaggi è fondamentale per la manutenzione e la risoluzione dei problemi.
in un sistema Linux. Prima che la funzione systemd fosse utilizzata per raccogliere messaggi in what is
indicato come il diario di systemd, messaggi generati dal kernel e dai servizi di sistema
sono stati indirizzati al file nella directory / var / log. Anche se questo è ancora vero in larga misura
con systemd, ora puoi anche visualizzare i messaggi di log direttamente dal diario di systemd
utilizzando il comando journalctl.

I file di registro per il sistema Linux si trovano principalmente nella directory / var / log.
La maggior parte dei file nella directory / var / log sono diretti lì dal journal di systemd
tramite il servizio rsyslogd (vedere il Capitolo 13). La Tabella 22.3 contiene un elenco di / var / log
file e una breve descrizione di ciascuno.

TABELLA 22.3 File di registro nella directory / var / log

Nome registro di sistema Nome del file Descrizione

Apache / var / log / httpd / access_log Registra le richieste di informazioni dal tuo
Registro di accesso Server Web Apache.

Apache / var / log / httpd / error_log Registra gli errori riscontrati dai client
Registro errori cercando di accedere ai dati sul tuo Apache
Server web.

Registro accessi non validibtmp Registra i tentativi di accesso errati.

608

Pagina 649

Capitolo 22: Comprensione della sicurezza Linux di base

Nome registro di sistema Nome del file Descrizione

Registro di avvio boot.log Contiene messaggi che indicano quale sistema


i servizi tem sono stati avviati e arrestati
con successo e quali (se presenti) hanno fallito
per avviare o interrompere. L'avvio più recente
i messaggi sono elencati verso la fine del file
file.

Registro del kernel dmesg Registra i messaggi stampati dal kernel


all'avvio del sistema.

Cron Log cron Contiene messaggi di stato da


demone crond.

dpkg Log dpkg.log Contiene informazioni riguardanti


pacchetti Debian installati.
Registro FTP vsftpd.log Contiene messaggi relativi ai trasferimenti 22
realizzato utilizzando il demone vsFTPd (FTP
server).

Trasferimento FTP xferlog Contiene informazioni sui file trans-


Log ferred utilizzando il servizio FTP.

GNOME /var/log/gdm/:0.log Contiene i messaggi relativi al login


Schermo schermo (display manager GNOME). Sì,
Registro del manager ci sono davvero i due punti nel nome del file.

LastLog lastlog Registra l'ultima volta che un account accede


al sistema.

Log di accesso / uscita wtmp Contiene una cronologia di accessi e disconnessioni


sul sistema.

Registro di posta maillog Contiene informazioni sugli indirizzi a


quale e da quale email è stata inviata.
Utile per rilevare lo spamming.

MySQL Server mysqld.log Include informazioni relative alle attività


Log del server di database MySQL (mysqld).

Registro delle notizie spooler Fornisce una directory contenente i log di


messaggi dal server di notizie Usenet se
ne stai eseguendo uno.

Registro di Samba /var/log/samba/log.smbd Mostra i messaggi da Samba SMB


demone del servizio file.

Registro di sicurezza sicuro Registra la data, l'ora e la durata di


tentativi e sessioni di accesso.

Sendmail Log inviare una mail Mostra i messaggi di errore registrati da


demone sendmail.

Registro di calamari /var/log/squid/access.log Contiene messaggi relativi al calamaro


server proxy / cache.

Continua

609

Pagina 650

Parte V: apprendimento delle tecniche di sicurezza di Linux

TABELLA 22.3 (continua)

Nome registro di sistema Nome del file Descrizione

Registro di sistema messaggi Fornisce un file di registro generico


dove molti programmi registrano messaggi.

Registro UUCP uucp Mostra i messaggi di stato da UNIX a


Daemon del protocollo di copia UNIX.

YUM Log yum.log Mostra i messaggi relativi al software RPM


pacchi.

X.Org X11 Log Xorg.0.log Include i messaggi emessi da X.Org X


server.

I file di log che si trovano nella directory / var / log del sistema dipendono dai servizi di cui si dispone
stanno correndo. Inoltre, alcuni file di registro dipendono dalla distribuzione. Ad esempio, se usi Fedora
Linux, non avresti il ​file di registro dpkg.

La maggior parte dei file di registro vengono visualizzati utilizzando i comandi cat, head, tail, more o less.
Tuttavia, alcuni di essi hanno comandi speciali per la visualizzazione (vedere la Tabella 22.4).

TABELLA 22.4 Visualizzazione dei file di registro che richiedono comandi speciali

Nome del file Visualizza comando

btmp dump-utmp btmp

dmesg dmesg
lastlog lastlog

wtmp dump-utmp wtmp

Con il cambiamento in Fedora, RHEL, Ubuntu e altre distribuzioni Linux a systemd


(che gestisce il processo di avvio ei servizi), come notato in precedenza, il meccanismo per gath-
la visualizzazione e la visualizzazione dei messaggi di registro associati al kernel e ai servizi di sistema ha
anche cambiato. Questi messaggi vengono indirizzati al journal di systemd e possono essere visualizzati
con il comando journalctl.

Puoi visualizzare i messaggi del journal direttamente dal journal systemd invece che semplicemente list-
nel contenuto dei file / var / log. In effetti, il file / var / log / messages, che molti
services indirizza i messaggi di log per impostazione predefinita, non esiste nemmeno nell'ultima versione di Fedora.
È invece possibile utilizzare il comando journalctl per visualizzare i messaggi di registro in vari modi.

Per sfogliare i messaggi del kernel, digita il seguente comando:

# journalctl -k
- I registri iniziano a domenica 17 agosto 2014 15:33:30 EDT,

610

Pagina 651

Capitolo 22: Comprensione della sicurezza Linux di base

termina sab 2014-09-13 22:29:00 EDT. -


29 agosto 23:14:38 kernel fedora20: inizializzazione di cgroup subsys cpuset
29 agosto 23:14:38 kernel fedora20: inizializzazione della cpu subsys di cgroup
29 agosto 23:14:38 kernel fedora20: inizializzazione di cgroup subsys cpuacct
29 agosto 23:14:38 kernel fedora20: versione Linux
3.11.10-301.fc20.x86_64 ( mockbuild@bkernel01.fedoraproject.org )
(versione gcc 4.8.2 201
29 agosto 23:14:38 kernel fedora20.example.com: riga di comando:
BOOT_IMAGE = / vmlinuz-3.11.10-301.fc20.x86_64
root = / dev / mapper / fedora_fedora20-root ro rd.lvm
29 agosto 23:14:38 fedora20.example.com kernel: e820:
Mappa della RAM fisica fornita dal BIOS:

...

Per visualizzare i messaggi associati a un particolare servizio, utilizzare l'opzione -u seguita da 22


Nome di Servizio. Per esempio:

# journalctl -u NetworkManager.service
# journalctl -u httpd.service
# journalctl -u avahi-daemon.service

Se ritieni che sia in corso una violazione della sicurezza, puoi guardare tutti i messaggi o quelli selezionati
entrare seguendo i messaggi. Ad esempio, per seguire i messaggi del kernel o i messaggi httpd
man mano che arrivano, aggiungi l'opzione -f (premi Ctrl + C quando hai finito):

# journalctl -k -f
# journalctl -f -u NetworkManager.service

Per controllare solo i messaggi di avvio, è possibile elencare gli ID di avvio per tutti gli avviamenti del sistema e quindi avviare
la particolare istanza di avvio che ti interessa. I seguenti esempi mostrano gli ID di avvio
e quindi mostra i messaggi di avvio per un ID di avvio selezionato:

# journalctl --list-boots
-2 eb3d5cbdda8f4f8da7bdbc71fb94e61e
Dom 2014-08-17 15:33:30 EDT — mer 2014-08-20 06:43:29 EDT
-1 534713a5a65c41c1b5b3d056487a16db
Mer 2014-08-20 06:45:15 EDT-ven 2014-08-29 12:01:01 EDT
0 64147da7154b4499a312a88a696c19bd
Ven 2014-08-29 23:14:38 EDT - dom 2014/09-14 07:15:26 EDT
# journalctl -b 534713a5a65c41c1b5b3d056487a16dbb
- I registri iniziano domenica 17 agosto 2014 15:33:30 EDT, terminano alle
Sole 2014-09-14 07:23:09 EDT. -
20 agosto 06:45:15 fedora20.example.com systemd-journal [81]:
Il diario di runtime utilizza 8.0M (m
...

Molte altre opzioni sono disponibili con il comando journalctl. Per informazioni su
queste opzioni, vedere la pagina man di journalctl (man journalctl). Per maggiori informazioni
sul diario stesso di systemd, digitare man systemd-journald.service.

611

Pagina 652
Parte V: apprendimento delle tecniche di sicurezza di Linux

Monitoraggio degli account utente


Gli account utente vengono spesso utilizzati in attacchi dannosi a un sistema ottenendo risultati non autorizzati
accedere a un conto corrente, creare nuovi conti fasulli o lasciare un conto alle spalle
per accedere in seguito. Per evitare tali problemi di sicurezza, è importante controllare gli account utente
attività.

Rilevamento di nuovi account e privilegi contraffatti


Gli account creati senza passare attraverso l'appropriata autorizzazione dovrebbero essere presi in considerazione
contraffatto. Inoltre, la modifica di un account in qualsiasi modo che gli conferisca un diverso non autore
Il numero di identificazione utente (UID) o aggiunge appartenenze a gruppi non autorizzati è una forma di
escalation dei diritti. Tenendo d'occhio i file / etc / passwd e / etc / group verranno monitorati
queste potenziali violazioni.

Per aiutarti a monitorare i file / etc / passwd e / etc / group, puoi usare il dae di audit
lun. Il daemon di audit è uno strumento di controllo estremamente potente che consente di selezionare
eventi di sistema per tracciarli e registrarli e fornisce funzionalità di reporting.

Per iniziare a controllare i file / etc / passwd e / etc / group, è necessario utilizzare auditctl
comando. Sono necessarie almeno due opzioni per avviare questo processo:

■ -w nomefile: consente di controllare il nome del file . Il daemon di audit tiene traccia del file tramite i suoi file
numero di inode. Un numero di inode è una struttura dati che contiene informazioni
cerning un file, inclusa la sua posizione.
■ -p trigger (s): se si verifica uno di questi tipi di accesso (r = lettura, w = scrittura, x = esecuzione,
a = cambio attributo) al nome del file , quindi attiva un record di controllo.

Nell'esempio seguente, un orologio è stato posizionato sul file / etc / passwd utilizzando l'estensione
comando auditctl. Il demone di audit monitorerà l'accesso, che consiste in qualsiasi lettura,
scrive o cambia l'attributo del file:

# auditctl -w / etc / passwd -p rwa

Dopo aver avviato un controllo dei file, potresti volerlo disattivare ad un certo punto. Per disattivare un controllo, utilizzare il comando
auditctl -W nomefile -p trigger / i .
Per vedere un elenco dei file controllati correnti e le relative impostazioni di controllo, digita auditctl -l nella riga di comando.

Per esaminare i log di audit, utilizzare il comando ausearch del daemon di audit. L'unica opzione
qui è necessaria l'opzione -f, che specifica quali record si desidera visualizzare dal file
registro di audizione. Quello che segue è un esempio delle informazioni di controllo / etc / passwd:

# ausearch -f / etc / passwd


time-> ven 7 feb 04:27:01 2014
tipo = PATH msg = audit (1328261221.365: 572):

612

Pagina 653

Capitolo 22: Comprensione della sicurezza Linux di base

item = 0 name = "/ etc / passwd" inode = 170549


dev = fd: 01 modalità = 0100644 ouid = 0 ogid = 0
rdev = 00: 00 obj = system_u: object_r: etc_t: s0
tipo = CWD msg = audit (1328261221.365: 572): cwd = "/"
...
time-> ven 7 feb 04:27:14 2014
tipo = PATH msg = audit (1328261234.558: 574):
item = 0 name = "/ etc / passwd" inode = 170549
dev = fd: 01 modalità = 0100644 ouid = 0 ogid = 0
rdev = 00: 00 obj = system_u: object_r: etc_t: s0
tipo = CWD msg = audit (1328261234.558: 574):
cwd = "/ home / johndoe"
tipo = SYSCALL msg = audit (1328261234.558: 574):
arch = 40000003 syscall = 5 successo = sì exit = 3
a0 = 3b22d9 a1 = 80000 a2 = 1b6 a3 = 0 elementi = 1 ppid = 3891
22
pid = 21696 auid = 1000 uid = 1000 gid = 1000 euid = 1000
suid = 1000 fsuid = 1000 egid = 1000 sgid = 1000 fsgid = 1000
tty = pts1 ses = 2 comm = "vi" exe = "/ bin / vi"
subj = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023 "
----
Queste sono molte informazioni da esaminare. Alcuni elementi ti aiuteranno a vedere quale evento di controllo si è verificato
pened per attivare il record inferiore.

■ time: il timestamp dell'attività


■ name: il nome del file, / etc / passwd, visualizzato

■ inode: il numero di inode di / etc / passwd su questo filesystem


■ uid: l'ID utente, 1000, dell'utente che esegue il programma
■ exe: il programma, / bin / vi, utilizzato nel file / etc / passwd

Per determinare a quale account utente è assegnato l'UID di 1000, guarda il file / etc / password
file. In questo caso, l'UID di 1000 appartiene all'utente johndoe. Quindi, dall'evento di controllo
record visualizzato sopra, puoi determinare che l'account johndoe ha tentato di utilizzare il
vi editor nel file / etc / passwd. È dubbio che questa sia stata un'azione innocente e questo
richiede ulteriori indagini.

Il comando ausearch non restituisce nulla se non sono stati attivati ​eventi di controllo su un file.

Il daemon di audit e gli strumenti associati sono estremamente ricchi. Per saperne di più, guarda
nelle pagine man per le seguenti utility daemon di audit e file di configurazione:

■ auditd : il daemon di audit


■ auditd.conf : il file di configurazione del daemon di audit

613

Pagina 654

Parte V: apprendimento delle tecniche di sicurezza di Linux

■ autditctl: controlla il sistema di controllo

■ audit.rules: regole di configurazione caricate all'avvio


■ ausearch: ricerca i log di controllo per gli elementi specificati
■ aureport : autore del report per i log di controllo
■ audispd: invia le informazioni di controllo ad altri programmi

Il daemon di audit è un modo per tenere d'occhio i file importanti. Dovresti rivedere il tuo
account e file di gruppo su base regolare anche con un "occhio umano" per vedere se qualcosa sembra
irregolare.

File importanti, come / etc / passwd, devono essere monitorati per verificare la presenza di account non autorizzati
creazione. Tuttavia, un utente autorizzato è altrettanto dannoso di un nuovo account utente non autorizzato
account con una password errata.

Rilevamento di password errate per gli account


Anche con tutti i tuoi buoni sforzi, le password sbagliate scivoleranno dentro. Pertanto, devi monitorare
per le password degli account utente per garantire che siano abbastanza forti da resistere a un attacco.

Uno strumento di monitoraggio della sicurezza della password che puoi utilizzare è lo stesso utilizzato dagli utenti malintenzionati
conti crack, John lo Squartatore. John the Ripper è uno strumento gratuito e open source che tu
può essere utilizzato dalla riga di comando di Linux. Non è installato di default. Per una distribuzione Fedora,
è necessario emettere il comando yum install john per installarlo.

Per installare John the Ripper su Ubuntu, usa il comando sudo apt-get install john.

Per utilizzare John the Ripper per testare le password degli utenti, devi prima estrarre l'account
nomi e password utilizzando il comando unshadow. Queste informazioni devono essere
rected in un file per l'utilizzo da parte di john, come mostrato qui:

# elimina l'ombra / etc / passwd / etc / shadow> password.file

Ora, modifica il file della password utilizzando il tuo editor di testo preferito per rimuovere eventuali account
senza password. Perché è saggio limitare John the Ripper a testare alcuni account su
una volta, rimuovi tutti i nomi di account che non desideri testare al momento.

Le utilità john sono estremamente impegnative per la CPU. Imposta il suo bel valore su 19 per abbassare la sua priorità.
Tuttavia, sarebbe saggio eseguirlo su un sistema non di produzione o durante le ore non di punta e solo per pochi account
Al tempo.
614

Pagina 655

Capitolo 22: Comprensione della sicurezza Linux di base

Ora, usa il comando john per tentare di crackare la password. Per eseguire john contro il creato
file password, immetti il ​comando john nomefile . Nel seguente frammento di codice, puoi
vedere l'output dell'esecuzione di john sul file password di esempio. Per dimostrazioni
a scopo di lucro, nel file di esempio è rimasto un solo account. E il racconto, Samantha,
è stata data la password errata della password. Puoi vedere quanto poco tempo ci è voluto per John the
Ripper per decifrare la password.

# giovanni file password


1 hash della password caricato (generic crypt (3) [? / 32])
parola d'ordine (Samantha)
ipotesi: 1 volta: 0: 00: 00: 44 100% (2) c / s: 20.87
cercando: 12345 - missy
Usa l'opzione "--show" per visualizzare tutti i file
password violate in modo affidabile
22
Per dimostrare quanto siano vitali le password complesse, considera cosa succede quando il file
La password dell'account Samantha viene modificata da password a Password1234. Nonostante
Password1234 è ancora una password debole, ci vogliono più di 7 giorni di tempo della CPU per decifrarla.
Nel codice che segue, john è stato finalmente interrotto per terminare il tentativo di cracking.

# passwd Samantha
Modifica della password per l'utente Samantha.
...
# giovanni file password
1 hash della password caricato (generic crypt (3) [? / 32])
...
tempo: 0: 07: 21: 55 (3) c / s: 119 prova: tth675 - tth787
Sessione interrotta

Non appena i tentativi di cracking della password sono stati completati, il file password dovrebbe
essere rimosso dal sistema. Per saperne di più su John the Ripper, visita www.openwall.
com / john.

Monitoraggio del filesystem


I programmi dannosi spesso modificano i file. Possono anche provare a coprire le loro tracce posando
come file e programmi ordinari. Tuttavia, ci sono modi per scoprirli attraverso vari
tattiche di monitoraggio trattate in questa sezione.

Verifica dei pacchetti software


In genere, se installi un pacchetto software da un repository standard o scarichi un
pacchetto del sito table, non avrai problemi. Ma è sempre bene ricontrollare
i pacchetti software installati per vedere se sono stati compromessi. Il comando a
farlo è rpm -V nome_pacchetto.

615

Pagina 656

Parte V: apprendimento delle tecniche di sicurezza di Linux


Quando si verifica il software, vengono confrontate le informazioni dai file del pacchetto installato
rispetto ai metadati del pacchetto (vedere il Capitolo 10) nel database rpm. Se non ci sono problemi
trovato, il comando rpm -V non restituisce nulla. Tuttavia, se ci sono discrepanze, ottieni
un elenco in codice. La Tabella 22.5 mostra i codici utilizzati e una descrizione della discrepanza.

TABELLA 22.5 Discrepanze nella verifica del pacchetto

Codice Discrepanza

S Dimensione del file

M Autorizzazioni e tipo di file

5 Check sum MD5

D Numeri principali e secondari del file del dispositivo

L Collegamenti simbolici

U Proprietà dell'utente

G Proprietà del gruppo

T Tempi di modifica del file (mtime)

P Altri pacchetti installati da cui dipende questo pacchetto (ovvero capacità)

Nell'elenco parziale che segue, tutti i pacchetti installati ricevono un controllo di verifica. voi
può vedere che i codici 5, S e T sono stati restituiti, indicando alcuni potenziali problemi.

# rpm -qaV
5S.T ..... c /etc/hba.conf
...
... T ..... /lib/modules/3.2.1-3.fc16.i686/modules.devname
... T ..... /lib/modules/3.2.1-3.fc16.i686/modules.softdep

Non è necessario verificare tutti i pacchetti contemporaneamente. Puoi verificare un solo pacchetto
Al tempo. Ad esempio, se vuoi verificare il tuo pacchetto nmap, inserisci semplicemente
rpm -V nmap .

Per verificare i pacchetti su Ubuntu, è necessaria l'utility debsums. Non è installato per impostazione predefinita. Per installare debsum, usa
il comando sudo apt-get install debsums. Per controllare tutti i pacchetti installati, usa debsums -a comp
mand. Per controllare un pacchetto, digita debsums nomepacchetto.

Scansione del filesystem


A meno che tu non abbia aggiornato di recente il tuo sistema, i file binari non avrebbero dovuto essere modificati
per qualsiasi ragione. Per verificare la modifica del file binario, è possibile utilizzare l'ora di modifica dei file o
mtime. Il file mtime è l'ora in cui il contenuto di un file è stato modificato l'ultima volta. Anche tu
può monitorare l'ora di creazione / modifica o il ctime del file.

616

Pagina 657

Capitolo 22: Comprensione della sicurezza Linux di base

Se sospetti attività dannose, puoi scansionare rapidamente il tuo filesystem per vedere se ci sono
sono state modificate o cambiate oggi (o ieri, a seconda di quando pensi che il file
è avvenuta un'intrusione). Per fare questa scansione, usa il comando find.

Nell'esempio che segue, viene eseguita una scansione della directory / sbin. Per vedere se qualche file binario
i file sono stati modificati meno di 24 ore fa, viene utilizzato il comando find / sbin -mtime -1.
Nell'esempio vengono visualizzati diversi file, che mostrano che sono stati modificati di recente. Questo indica
quell'attività dannosa si sta verificando nel sistema. Per approfondire, rivedi ciascuno
i tempi dei singoli file, utilizzando il comando stat filename , come mostrato qui:

# trova / sbin -mtime -1


/ sbin
/ sbin / init
/ sbin / reboot
/ sbin / halt 22
# stat / sbin / init
File: "/ sbin / init" -> "../bin/systemd"
Dimensione: 14 Blocchi: 0 Blocco IO: 4096 collegamento simbolico
Dispositivo: fd01h / 64769d Inodo: 9551 Collegamenti: 1
Accesso: (0777 / lrwxrwxrwx)
Uid: (0 / root) Gid: (0 / root)
Contesto: system_u: object_r: bin_t: s0
Accesso: 2016-02-03 03: 34: 57.276589176 -0500
Modifica: 2016-02-02 23: 40: 39.139872288 -0500
Modifica: 02-02-2016 23:40: 39.140872415-0500
Nascita: -
Potresti creare un database di tutti i mtimes e ctimes originali del binario e poi eseguire
uno script per trovare mtimes e ctimes correnti, confrontarli con il database e annotare
eventuali discrepanze. Tuttavia, questo tipo di programma è già stato creato e funziona bene.
Si chiama Sistema di rilevamento delle intrusioni ed è trattato più avanti in questo capitolo.

È necessario eseguire regolarmente molte altre scansioni del file system. File o file preferiti
le impostazioni degli aggressori dannosi sono elencate nella Tabella 22.6. La tabella elenca anche i comandi per
eseguire le scansioni e il motivo per cui il file o l'impostazione del file è potenzialmente problematico.

TABELLA 22.6 Scansioni aggiuntive del file system

File o impostazione Comando di scansione Problema con il file o l'impostazione

SetUID trova / -perm -4000 Consente a chiunque di diventare temporaneamente il file


autorizzazione proprietario mentre il file viene eseguito in
memoria.

SetGID trova / -perm -2000 Consente a chiunque di diventare temporaneamente un gruppo


autorizzazione membro del gruppo del file mentre il file è
eseguito in memoria.

Continua

617

Pagina 658

Parte V: apprendimento delle tecniche di sicurezza di Linux

TABELLA 22.6 (continua)

File o impostazione Comando di scansione Problema con il file o l'impostazione

file rhost trova / home -name Consente a un sistema di fidarsi completamente di un altro sistema.
.rhosts Non dovrebbe essere nelle directory / home.

File senza proprietario trova / -nouser Indica i file che non sono associati ad alcun file
nome utente.

File senza gruppi trova / -nogroup Indica i file che non sono associati ad alcun file
nome del gruppo.

Queste scansioni del filesystem aiutano a monitorare cosa sta succedendo nel tuo sistema e aiutano a rilevare i dannosi
attacchi. Tuttavia, possono verificarsi altri tipi di attacchi ai file, inclusi virus e rootkit.

Rilevamento di virus e rootkit


Due popolari strumenti di attacco dannoso sono virus e rootkit perché rimangono nascosti mentre
svolgere le proprie attività dannose. I sistemi Linux devono essere monitorati per entrambi questi strumenti.

Monitoraggio dei virus


Un virus informatico è un software dannoso che può attaccarsi al sistema già installato
software e ha la capacità di diffondersi attraverso i media o le reti. È un'idea sbagliata
che non ci sono virus per Linux. I creatori dannosi di virus spesso si concentrano sul
sistemi operativi desktop più diffusi, come Windows. Tuttavia, questo non significa
i virus non vengono creati per i sistemi Linux.

Ancora più importante, i sistemi Linux sono spesso usati per gestire servizi, come i servizi di posta
ers, per i sistemi desktop Windows. Pertanto, i sistemi Linux utilizzati per tali scopi devono
essere scansionato anche per i virus di Windows.

Il software antivirus esegue la scansione dei file utilizzando le firme dei virus. Una firma di virus è un hash creato
dal codice binario di un virus. L'hash identificherà positivamente quel virus. Programmi antivirus
disporre di un database delle firme antivirali che viene utilizzato per confrontare i file per vedere se è presente un
partita della natura. A seconda del numero di nuove minacce, un database delle firme antivirali può farlo
essere aggiornato spesso per fornire protezione da queste nuove minacce.

Un buon software antivirus per il tuo sistema Linux, che è open source e gratuito, è ClamAV.
Per installare ClamAV su un sistema Fedora o RHEL, digita il comando yum install clamav.
Puoi trovare ulteriori informazioni su ClamAV su http://www.clamav.net/index.html, dove
c'è la documentazione su come impostare ed eseguire il software antivirus.

Puoi esaminare i pacchetti disponibili per l'installazione di Ubuntu inserendo il comando apt-cache search
clamav. Sono disponibili un paio di pacchetti diversi per Ubuntu, quindi controlla prima le informazioni sul sito web di ClamAV
scegli un pacchetto.
618

Pagina 659

Capitolo 22: Comprensione della sicurezza Linux di base

Monitoraggio per rootkit


Un rootkit è un po 'più insidioso di un virus. Un rootkit è un programma dannoso che:

■ Si nasconde, spesso sostituendo programmi o comandi di sistema

■ Mantiene l'accesso di alto livello a un sistema


■ Può aggirare il software creato per individuarlo

Lo scopo di un rootkit è ottenere e mantenere l'accesso a livello di root a un sistema. Il termine era
creato mettendo insieme "root", il che significa che deve avere accesso come amministratore,
e "kit", il che significa che di solito sono diversi programmi che operano in concerto.

Un rilevatore di rootkit che può essere utilizzato su un sistema Linux è chkrootkit. Installare
chkrootkit su un sistema Fedora o RHEL, immetti il ​comando yum install chkrootkit.
Per installare chkrookit su un sistema Ubuntu, usa il comando sudo apt-get install 22
chkrootkit.

È meglio usare un Live CD o un'unità flash per eseguire chkrootkit in modo che i risultati non vengano aggirati da un rootkit.
Fedora Security Spin ha chkrootkit sul suo Live CD. Puoi ottenere questa distribuzione su http: // spin
.fedoraproject.org / security.

Trovare un rootkit con chkrootkit è semplice. Dopo aver installato il pacchetto o avviato
dal Live CD, digita chkrootkit nella riga di comando. Cerca nell'intera struttura del file,
denotando eventuali file infetti.

Il codice che segue mostra un'esecuzione di chkrootkit su un sistema infetto. Il grep comp
mand è stato utilizzato per cercare la parola chiave INFETTO. Notare che molti dei file elencati
come "infetti" sono i file di comando della shell bash. Questo è tipico di un rootkit.

# chkrootkit | grep INFETTATO


Controllo 'du' ... INFETTO
Controllo "trova" ... INFETTO
Controllo "ls" ... INFETTO
Controllo di 'lsof' ... INFETTO
Controllo di "pstree" ... INFETTO
Ricerca del rootkit di Suckit in corso ... Attenzione: / sbin / init INFETTO

Nell'ultima riga del codice chkrootkit precedente c'è un'indicazione che il sistema ha
è stato infettato dal rootkit Suckit. In realtà non è infetto da questo rootkit. quando
eseguendo utilità, come antivirus e software di rilevamento rootkit, spesso si ottiene un numero
di falsi positivi. Un falso positivo è un'indicazione di un virus, rootkit o altro dannoso
attività che in realtà non esiste. In questo caso particolare, questo falso positivo è causato da a
bug noto.

619

Pagina 660

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'utilità chkrootkit dovrebbe avere esecuzioni pianificate regolarmente e, ovviamente, dovrebbe essere eseguita
ogni volta che si sospetta un'infezione da rootkit. Per trovare maggiori informazioni su chkrootkit, vai a
http://chkrootkit.org.
Rilevamento di un'intrusione
Software Intrusion Detection System (IDS): un pacchetto software che monitora il sistema
attività (o la sua rete) per potenziali attività dannose e segnala queste attività:
può aiutarti a monitorare il tuo sistema per potenziali intrusioni. Strettamente correlato a Intrusion
Il software Detection System è un pacchetto software che impedisce un'intrusione, chiamato
Software di prevenzione delle intrusioni. Alcuni di questi pacchetti sono raggruppati insieme per fornire
Rilevamento e prevenzione delle intrusioni.

Sono disponibili diversi pacchetti software del sistema di rilevamento delle intrusioni per un sistema Linux. UN
alcune delle utilità più popolari sono elencate nella Tabella 22.7. Dovresti conoscere quel tripwire
non è più open source. Tuttavia, il codice tripwire originale è ancora disponibile. Vedi il
sito web di tripwire elencato nella Tabella 22.8 per maggiori dettagli.

TABELLA 22.7 Sistemi di rilevamento delle intrusioni Linux più diffusi

Nome IDS Installazione Sito web

aiutante yum install aide http://aide.sourceforge.net

apt-get install aide

Snort pacchetti rpm o tarball da http://snort.org


sito web

tripwire yum installa tripwire http://tripwire.org

apt-get install tripwire

L'Advanced Intrusion Detection Environment (aiutante) IDS utilizza un metodo di confronto


per rilevare le intrusioni. Quando eri bambino, potresti aver giocato al gioco del confronto
due immagini e scoprire cosa c'era di diverso tra loro. L'utilità di aiuto utilizza un file simile
metodo. Viene creato un database "prima immagine". Qualche tempo dopo, un altro database “secondo
picture "viene creato e aide confronta i due database e segnala le differenze.

Per iniziare, devi scattare la "prima foto". Il momento migliore per creare questa immagine è quando
il sistema è stato appena installato. Il comando per creare il database iniziale è un aiuto
-i e impiega molto tempo per funzionare. Alcuni dei suoi risultati seguono. Notare che l'assistente te lo dice
dove sta creando il suo database iniziale della "prima immagine".

# aide -i
AIDE, versione 0.15.1

### Database AIDE su /var/lib/aide/aide.db.new.gz inizializzato.

620

Pagina 661

Capitolo 22: Comprensione della sicurezza Linux di base

Il passaggio successivo consiste nello spostare il database iniziale della "prima immagine" in una nuova posizione. Questo protegge
il database originale venga sovrascritto. Inoltre, il confronto non funziona a meno che
il database viene spostato. Il comando per spostare il database nella nuova posizione e assegnargli un file
il nuovo nome è il seguente:

# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Quando sei pronto per verificare se i tuoi file sono stati manomessi, devi farlo
creare un nuovo database, la "seconda immagine", e confrontarlo con il database originale, il
"prima immagine." L'opzione di controllo sul comando aide, -c, crea un nuovo database e
esegue un confronto con il vecchio database. L'output mostrato di seguito illustra questo
parison in corso e il comando dell'aiutante riferire su alcuni problemi.

# aiutante -C 22
...
-------------------------------------------------- -
Informazioni dettagliate sulle modifiche:
-------------------------------------------------- -
File: / bin / find
Dimensioni: 189736, 4620
Ctime: 2015-02-10 13:00:44, 2015-02-11 03:05:52
MD5: <NESSUNO>, rUJj8NtNa1v4nmV5zfoOjg ==
RMD160: <NESSUNO>, 0CwkiYhqNnfwPUPM12HdKuUSFUE =
SHA256: <NESSUNO>, jg60Soawj4S / UZXm5h4aEGJ + xZgGwCmN

File: / bin / ls
Dimensioni: 112704, 6122
Ctime: 2015-02-10 13:04:57, 2015-02-11 03:05:52
MD5: POeOop46MvRx9qfEoYTXOQ ==, IShMBpbSOY8axhw1Kj8Wdw ==
RMD160: N3V3Joe5Vo + cOSSnedf9PCDXYkI =,
e0ZneB7CrWHV42hAEgT2lwrVfP4 =
SHA256: vuOFe6FUgoAyNgIxYghOo6 + SxR / zxS1s,
Z6nEMMBQyYm8486yFSIbKBuMUi / + jrUi

...

File: / bin / ps
Dimensioni: 76684, 4828
Ctime: 2015-02-10 13:05:45, 2015-02-11 03:05:52
MD5: 1pCVAWbpeXINiBQWSUEJfQ ==, 4ElJhyWkyMtm24vNLya6CA ==
RMD160: xwICWNtQH242jHsH2E8rV5kgSkU =,
AZlI2QNlKrWH45i3 / V54H + 1QQZk =
SHA256: ffUDesbfxx3YsLDhD0bLTW0c6nykc3m0,
w1qXvGWPFzFir5yxN + n6t3eOWw1TtNC /
...
File: / usr / bin / du
Dimensioni: 104224, 4619

621

Pagina 662

Parte V: apprendimento delle tecniche di sicurezza di Linux

Ctime: 2015-02-10 13:04:58, 2015-02-11 03:05:53


MD5: 5DUMKWj6LodWj4C0xfPBIw ==, nzn7vrwfBawAeL8nkayICg ==
RMD160: Zlbm0f / bUWRLgi1B5nVjhanuX9Q =,
2e5S00lBWqLq4Tnac4b6QIXRCwY =
SHA256: P / jVAKr / SO0epBBxvGP900nLXrRY9tnw,
HhTqWgDyIkUDxA1X232ijmQ / OMA / kRgl

File: / usr / bin / pstree


Dimensioni: 20296, 7030
Ctime: 2015-02-10 13:02:18, 2015-02-11 03:05:53
MD5: <NESSUNO>, ry / MUZ7XvU4L2QfWJ4GXxg ==
RMD160: <NESSUNO>, tFZer6As9EoOi58K7 / LgmeiExjU =
SHA256: <NESSUNO>, iAsMkqNShagD4qe7dL / EwcgKTRzvKRSe
...

I file elencati dall'assistente di controllo in questo esempio sono infetti. Tuttavia, anche un aiutante può farlo
visualizzare molti falsi positivi.

Dove vengono creati i database degli assistenti, quali confronti vengono effettuati e molte altre configurazioni
le impostazioni di razione sono gestite nel file /etc/aide.conf. Quello che segue è una visualizzazione parziale
del file. È possibile visualizzare i nomi del file di database e le directory dei file di registro impostate qui:

# cat /etc/aide.conf
# File di configurazione di esempio per AIDE.

@@ definire DBDIR / var / lib / aide


@@ definire LOGDIR / var / log / aide

# La posizione del database da leggere.


database = file: @@ {DBDIR} /aide.db.gz

# La posizione del database da scrivere.


# database_out = sql: host: port: database: login_name: passwd: table
# database_out = file: aide.db.new
database_out = file: @@ {DBDIR} /aide.db.new.gz
...

Un sistema di rilevamento delle intrusioni può essere di grande aiuto nel monitoraggio del sistema. Quando potenziale
vengono rilevate intrusioni, confrontando l'output con le informazioni di altri comandi (come
come rpm -V) e i file di registro possono aiutarti a comprendere e correggere meglio eventuali attacchi su
il tuo sistema.

Auditing e revisione di Linux


È necessario comprendere due termini importanti quando si controlla lo stato di salute del proprio Linux
sistema. Una revisione della conformità è una verifica dell'ambiente complessivo del sistema informatico per

622
Pagina 663

Capitolo 22: Comprensione della sicurezza Linux di base

assicurarsi che le politiche e le procedure impostate per il sistema vengano eseguite


rettamente. Una verifica della sicurezza è una verifica delle politiche e delle procedure correnti per assicurarne il funzionamento
seguire le migliori pratiche di sicurezza accettate.

Conduzione di revisioni di conformità


Analogamente agli audit in altri campi, come la contabilità, gli audit possono essere condotti internamente o
da personale esterno. Queste recensioni possono essere semplici come qualcuno che si siede e
abbinare la sicurezza implementata alle politiche dichiarate dalla tua azienda. Tuttavia, un file
metodo sta conducendo audit utilizzando test di penetrazione.

Il Penetration Test è un metodo di valutazione utilizzato per testare la sicurezza di un sistema informatico
simulare attacchi dannosi. È anche chiamato test della penna e hacking etico. Non più
devi raccogliere strumenti e l'hacker del quartiere locale per aiutarti a condurli 22
test. Le seguenti sono distribuzioni Linux che puoi usare per condurre penetra-
test di stato:

■ BackTrack (www.backtrack-linux.org)
■ Distribuzione Linux creata appositamente per i test di penetrazione
■ Può essere utilizzato da un DVD live o da un'unità flash

■ Formazione sull'uso di BackTrack offerta da www.offensive-security.com


■ Fedora Security Spin (http://spins.fedoraproject.org/security)
■ Chiamato anche Fedora Security Lab
■ Spin della distribuzione Fedora Linux

■ Fornisce un ambiente di prova per lavorare sul controllo della sicurezza


■ Può essere utilizzato da un'unità flash

Mentre i test di penetrazione sono molto divertenti, per una revisione approfondita della conformità, un po 'di più lo è
necessario. È inoltre necessario utilizzare elenchi di controllo dai siti di sicurezza del settore.

Condurre controlli sulla sicurezza


L'esecuzione di una verifica della sicurezza richiede la conoscenza delle migliori pratiche di sicurezza correnti. Là
sono diversi modi per rimanere informati sulle migliori pratiche di sicurezza. Quello che segue è un breve elenco
di organizzazioni che possono aiutarti.

■ Computer Emergency Readiness Team (CERT) degli Stati Uniti


■ URL: www.us-cert.gov
■ Offre il National Cyber ​Alert System
■ Offre feed RSS sulle ultime minacce alla sicurezza

623

Pagina 664

Parte V: apprendimento delle tecniche di sicurezza di Linux

■ Il SANS Institute

■ URL: www.sans.org/security-resources
■ Offre newsletter sulla ricerca sulla sicurezza del computer
■ Offre feed RSS sulle ultime minacce alla sicurezza
■ Gibson Research Corporation

■ URL: www.grc.com
■ Offre la sicurezza ora! netcast di sicurezza
Le informazioni provenienti da questi siti ti aiuteranno a creare politiche e procedure più solide.
Data la rapidità con cui cambiano le migliori pratiche di sicurezza, sarebbe saggio condurre la sicurezza
le revisioni spesso, a seconda delle esigenze di sicurezza della tua organizzazione.

Ora capisci molto di più sulla sicurezza di base di Linux. La parte difficile è in realtà messa-
mettere in pratica tutti questi concetti.

Sommario
Pratiche di sicurezza Linux di base come la gestione degli account utente, la protezione delle password e
la gestione del software e dei servizi costituisce la base per tutta la sicurezza su Linux
sistema. Con queste basi in atto, il monitoraggio continuo del sistema include
controllo dei file di registro di sistema, controllo di intrusioni dannose e monitoraggio del file system.

Anche le revisioni delle tue politiche di sicurezza sono importanti da tenere regolarmente. Audit
assistere nell'assicurare che il proprio sistema Linux sia protetto e le corrette politiche di sicurezza e
le pratiche sono in atto.

Hai completato la prima fase di raccolta delle procedure e dei principi di sicurezza di base
conoscenza. Non è sufficiente conoscere solo le basi. È necessario aggiungere una sicurezza Linux avanzata
strumenti rity nella tua cassetta degli attrezzi di sicurezza. Nel prossimo capitolo, argomenti avanzati sulla sicurezza della crittografia
sono coperti i moduli di tografia e autenticazione.

Esercizi
Fare riferimento al materiale in questo capitolo per completare le attività che seguono. Se sei bloccato,
le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, ci siano spesso più
modi per completare un'attività). Prova ciascuno degli esercizi prima di fare riferimento alle risposte. Questi
task presuppongono che tu stia eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcuni
le attività funzioneranno anche su altri sistemi Linux).

624

Pagina 665

Capitolo 22: Comprensione della sicurezza Linux di base

1. Controllare i messaggi di registro dal diario di systemd per i seguenti servizi:


NetworkManager.service, sshd.service e auditd.service.
2. Elenca i permessi del file contenente le password utente del tuo sistema e
il mio se sono appropriati.

3. Determina la durata della password del tuo account e se scadrà utilizzando un unico
comando.
4. Avviare il controllo delle scritture in / etc / shadow con il daemon auditd, quindi
controlla le tue impostazioni di controllo.

5. Creare un report dal daemon auditd sul file / etc / shadow, quindi girare
disattivare l'auditing su quel file.
6. Installa il pacchetto lemon, danneggia il file / usr / bin / lemon (magari copia
/ etc / services lì), verificare che il file sia stato manomesso e rimuovere 22
la confezione di limone.

7. Sospetti di aver subito un attacco dannoso al tuo sistema oggi e importante


i file binari sono stati modificati. Quale comando dovresti usare per trovare questi modi-
file eliminati?

8. Installa ed esegui chkrootkit per vedere se è stato installato l'attacco dannoso dell'Esercizio 7
un rootkit.

9. Trova i file con il set di autorizzazioni SetUID o SetGID.

10. Installa il pacchetto Aide, esegui il comando AIDE per inizializzare il database AIDE,
copiare il database nella posizione corretta ed eseguire il comando aide per verificare se
tutti i file importanti sul sistema sono stati modificati.
625

Pagina 667
666

CAPITOLO

Comprensione avanzata
23
Sicurezza Linux
IN QUESTO CAPITOLO
Capire l'hashing e la crittografia

Verifica dell'integrità del file

Crittografia di file, directory e file system

Comprensione dei moduli di autenticazione collegabili

Gestire la sicurezza di Linux con PAM

A abbastanza. Poiché gli utenti malintenzionati ottengono l'accesso e la conoscenza di strumenti avanzati, così deve fare un Linux
amministratore di sistema. Comprendere argomenti e strumenti avanzati di sicurezza informatica deve essere
causa delle minacce in continua evoluzione e in crescita, l'implementazione della sicurezza informatica di base non è più possibile
parte della tua preparazione.

In questo capitolo vengono illustrate le basi della crittografia, come cifrature e crittografia. Anche tu
scopri come l'utilità del modulo di autenticazione può semplificare i tuoi compiti amministrativi, anche se
è un argomento di sicurezza avanzato.

Implementazione della sicurezza Linux con crittografia


L'uso della crittografia aumenta la sicurezza del tuo sistema Linux e delle sue comunicazioni di rete.
La crittografia è la scienza per nascondere le informazioni. Ha una lunga e ricca storia che risale a molto tempo fa
prima che i computer fossero in circolazione. A causa del suo uso massiccio di algoritmi matematici, la crittografia ha
facilmente trasferito ai computer. Linux viene fornito con molti strumenti crittografici pronti per l'uso.

Per comprendere i concetti crittografici e i vari strumenti Linux, dovresti conoscere alcuni strumenti di crittografia
termini rapy:

■ Testo normale: testo che un essere umano o una macchina può leggere e comprendere
■ Testo cifrato: testo che un essere umano o una macchina non è in grado di leggere e comprendere

627

Pagina 668
Parte V: apprendimento delle tecniche di sicurezza di Linux

■ Crittografia : processo di conversione del testo normale in testo cifrato utilizzando un algoritmo

■ Decrittografia : processo di conversione del testo cifrato in testo normale utilizzando un algoritmo
■ Cipher : l'algoritmo utilizzato per crittografare il testo normale in testo crittografato e decrittografarlo
testo cifrato in testo normale
■ Cifratura a blocchi -A cifra che rompe i dati in blocchi prima di crittografia

■ Crittografia a flusso: una crittografia che crittografa i dati senza romperli


■ Chiave: una parte di dati richiesta dalla crittografia per crittografare o decrittografare correttamente i dati

I genitori usano spesso una forma di crittografia. Scrivono le parole invece di pronunciarle. UN
genitore può prendere la parola in chiaro "caramella" e trasformarla in testo cifrato dicendo al
altro genitore "CANDY". L'altro genitore decrittografa la parola utilizzando la stessa ortografia
cifra e riconosce che la parola è "caramella". Sfortunatamente, i bambini non impiegano molto a farlo
imparare a decrittografare tramite il cifrario ortografico.

Avrai notato che l'hashing non era incluso nella precedente definizione di crittografia
elenco delle azioni. L'hashing necessita di un'attenzione speciale perché spesso viene confuso con la crittografia.

Capire l'hashing
L'hashing non è crittografia, ma è una forma di crittografia. Ricorda dal capitolo 22
che l' hashing è un processo matematico unidirezionale utilizzato per creare testo cifrato. Tuttavia, a differenza di
crittografia, dopo aver creato un hash, non è possibile rimuoverlo riportandolo al testo in chiaro originale.

Affinché un algoritmo di hashing possa essere utilizzato nella sicurezza informatica, deve essere privo di collisioni ,
il che significa che l'algoritmo di hashing non restituisce lo stesso hash per due totalmente
ingressi diversi. Ogni input deve avere un output con hash univoco. Quindi, l' hashing crittografico
è un processo matematico unidirezionale privo di collisioni.

Per impostazione predefinita, la crittografia è già in uso su un sistema Linux. Ad esempio, il file / etc / shadow
file contiene password con hash. L'hashing viene utilizzato sui sistemi Linux per:

■ Password (Capitolo 22)


■ Verifica dei file

■ Firme digitali
■ Firme dei virus (Capitolo 22)

Un hash è anche chiamato digest del messaggio, checksum, impronta digitale o firma. Un Linux
L'utilità che produce digest di messaggi è l'utilità md5sum. Nel Capitolo 10, "Ottenere e
Gestione del software ", hai imparato come ottenere software per il tuo sistema Linux. Quando tu
scarica un file software, puoi assicurarti che il file non sia stato danneggiato durante il download.

La Figura 23.1 mostra il sito Web per scaricare il software di distribuzione di Linux Mint (stored
come un file nella forma che viene indicata come immagine ISO ). La pagina web contiene un messaggio

628

Pagina 669

Capitolo 23: Comprensione della sicurezza Linux avanzata

Numero Digest 5 (MD5) che puoi utilizzare per assicurarti che l'immagine ISO scaricata non lo fosse
danneggiato durante il download.

FIGURA 23.1

La pagina Web di download ISO di Linux Mint fornisce un numero MD5.


23

Un hash è costituito da un file software nella sua posizione originale, utilizzando l'algoritmo hash MD5. Il
i risultati hash possono essere pubblicati in pubblico, come è stato fatto nella Figura 23.1. Per garantire l'integrità di
il file del software scaricato, crei un hash MD5 del file del software nella tua posizione.
Quindi confronti i risultati del tuo hash con i risultati hash pubblicati. Se corrispondono, il file
il file del software non è stato danneggiato durante il download.

Per creare il tuo hash, esegui l'algoritmo di hashing sull'immagine ISO dopo averla scaricata,
utilizzando md5sum. I risultati dell'hash md5sum per il file del software scaricato sono mostrati in
codice che segue:

$ md5sum linuxmint-17.1-cinnamon-64bit.iso
0307ffcd5046c176599904193899426e linuxmint-17.1-cinnamon-64bit.iso

L'hash risultante non corrisponde a quello pubblicato sul sito web della Figura 23.1. Ciò significa che il file
il file ISO scaricato non è stato danneggiato ed è pronto per l'uso.

629

Pagina 670

Parte V: apprendimento delle tecniche di sicurezza di Linux

Mentre l'hashing MD5 va bene per garantire che un file software scaricato non sia stato danneggiato, l'algoritmo non lo è
senza collisioni. Pertanto, non è più considerato un vero hash crittografico. Per un vero hashing crittografico, tu
è necessario utilizzare uno degli hash crittografici SHA discussi più avanti in questo capitolo.

Puoi implementare ancora più crittografia oltre all'hashing sul tuo sistema Linux. Il
Le utilità Linux per farlo sono molto facili da usare. Tuttavia, prima devi capirne alcuni
concetti di crittografia più sottostanti.

Comprensione della crittografia / decrittografia


L'uso principale della crittografia su un sistema Linux è codificare i dati per nasconderli (crittografia)
da occhi non autorizzati e quindi decodificare i dati (decrittografia) per gli occhi autorizzati. Su a
Sistema Linux, puoi crittografare quanto segue:

■ Singoli file
■ Partizioni e volumi
■ Connessioni a pagine Web

■ Connessioni di rete
■ Backup

■ File zip

Questi processi di crittografia / decrittografia utilizzano algoritmi matematici speciali per eseguire il loro
compito. Gli algoritmi sono chiamati cifrari crittografici .

Comprensione dei cifrari crittografici


Uno dei codici originali, chiamato Cifrario di Cesare, è stato creato e utilizzato da Giulio Cesare.
Tuttavia, è stato terribilmente facile da decifrare. Oggi sono disponibili molte più cifrature sicure.
Capire come funziona ogni cifra è importante perché la forza della cifra
che scegli dovrebbe essere direttamente correlato alle esigenze di sicurezza dei tuoi dati. La Tabella 23.1 ne elenca alcuni
cifrari moderni.

TABELLA 23.1 Crittografie crittografiche

Metodo Descrizione
AES (Advanced Crittografia simmetrica.
Standard di crittografia)
Cifratura a blocchi, crittografia dei dati in blocchi da 128, 192 o 256 bit utilizzando un file
chiamato anche Rijndael
Chiave a 128, 192 o 256 bit per crittografia / decrittografia.

Blowfish Crittografia simmetrica.

Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso a 32 bit
Chiavi a 448 bit per crittografia / decrittografia.

630

Pagina 671

Capitolo 23: Comprensione della sicurezza Linux avanzata

Metodo Descrizione

CAST5 Crittografia simmetrica.

Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso fino a
Chiave a 128 bit per crittografia / decrittografia.

DES (Data Encryption Non è più considerato sicuro.


Standard)
Crittografia simmetrica.

Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso 56 bit
chiave per crittografare / decrittografare.

3DES Cifrario DES migliorato.

Crittografia simmetrica.

I dati vengono crittografati fino a 48 volte con 3 diverse chiavi a 56 bit prima
il processo di crittografia è completato.

El Gamal Crittografia asimmetrica.

Utilizza due chiavi derivate da un algoritmo logaritmo.

Curva ellittica Crittografia asimmetrica.


Cryptosystems
Utilizza due chiavi derivate da un algoritmo che ne contiene due in modo casuale
punti scelti su una curva ellittica.

IDEA Crittografia simmetrica.

Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso 128 bit
23
chiave per crittografare / decrittografare.

Anche RC4 ha chiamato Crittografia del flusso, crittografia dei dati in blocchi a 64 bit utilizzando una chiave variabile
ArcFour o ARC4 dimensione per crittografare / decrittografare.

RC5 Crittografia simmetrica.

Cifratura a blocchi, crittografia dei dati in blocchi a 32, 64 o 128 bit utilizzando l'estensione
stesso codice fino a 2.048 bit per la crittografia / decrittografia.

RC6 Crittografia simmetrica.

Come RC5, ma leggermente più veloce.

Ha chiamato anche Rijndael Crittografia simmetrica.


AES
Cifratura a blocchi, crittografia dei dati in blocchi da 128, 192 o 256 bit utilizzando un file
Chiave a 128, 192 o 256 bit per crittografia / decrittografia.

RSA La crittografia asimmetrica più popolare.

Utilizza due chiavi derivate da un algoritmo contenente un multiplo di due


numeri primi generati casualmente.

Comprensione delle chiavi crittografiche


I cifrari crittografici richiedono un dato, chiamato chiave, per completare la loro matematica
processo di crittografia / decrittografia. La chiave può essere una singola chiave o una coppia di chiavi.

631

Pagina 672
Parte V: apprendimento delle tecniche di sicurezza di Linux

Notare le diverse dimensioni delle chiavi di cifratura elencate nella Tabella 23.1. La dimensione della chiave è direttamente correlata a
quanto facilmente il codice viene violato. Maggiore è la dimensione della chiave, minore è la possibilità di cracking
il cifrario. Ad esempio, DES non è più considerato sicuro a causa della sua piccola chiave a 56 bit
taglia. Tuttavia, un codice con una dimensione della chiave di 256 bit o 512 bit è considerato sicuro perché lo è
Ci vorrebbero trilioni di anni per decifrare con la forza bruta un tale codice con chiave.

Crittografia a chiave simmetrica


La crittografia simmetrica , chiamata anche crittografia a chiave segreta o chiave privata , esegue la crittografia
testo in chiaro utilizzando un unico cifrario con chiave. La stessa chiave è necessaria per decrittografare i dati.
Il vantaggio della crittografia a chiave simmetrica è la velocità. Lo svantaggio è la necessità di
condividere la chiave singola se i dati crittografati devono essere decrittografati da un'altra persona.

Un esempio di crittografia a chiave simmetrica su un sistema Linux viene ottenuto utilizzando


l'utilità OpenPGP, GNU Privacy Guard, gpg2. Il pacchetto gnupg2 viene installato da
predefinito in Fedora e RHEL. Per Ubuntu, devi installare il pacchetto gnupg2 per ottenere
il comando gpg2.

L'esempio che segue mostra il comando tar utilizzato per creare un archivio tar compresso
(backup.tar.gz) e l'utility gpg2 utilizzata per crittografare il file. Con l'opzione -c, gpg2
crittografa il file con una chiave simmetrica. Il file originale viene mantenuto e un nuovo file crittografato,
backup.tar.gz.gpg, viene creato.

# tar -cvzf /tmp/backup.tar.gz / ecc


# gpg2 -c --force-mdc -o tmp / backup.tar.gz.gpg /tmp/backup.tar.gz
Inserisci passphrase: ******
Ripeti passphrase: ******
# cd / tmp; backup di file *
backup.tar.gz: dati compressi gzip, ultima modifica: ...
backup.tar.gz.gpg: dati crittografati simmetricamente GPG (cifratura CAST5)

L'unica chiave utilizzata per crittografare il file è protetta da una passphrase. Questa passphrase è semplicemente
una password o una frase scelta dall'utente al momento della crittografia.

Per decrittografare il file, usa di nuovo l'utility gpg2. Ad esempio, se dovessi consegnare il file a
un altro utente, quell'utente potrebbe eseguire gpg2 con l'opzione -d e fornire la passphrase per
la chiave segreta.

$ gpg2 -d --force-mdc /tmp/backup.tar.gz.gpg> /tmp/backup.tar.gz


<Una finestra pop-up richiede la tua passphrase>
gpg: dati crittografati CAST5
gpg: crittografato con 1 passphrase
Questo è il mio messaggio segreto.
...

Il risultato è che il file tar originale viene decrittografato e copiato in /tmp/backup.tar.gz.


Se il daemon gpg-agent è in esecuzione sul sistema, quella passphrase viene memorizzata nella cache, quindi quel file
potrebbe essere decrittografato di nuovo senza inserire nuovamente la passphrase.

632

Pagina 673

Capitolo 23: Comprensione della sicurezza Linux avanzata

La crittografia a chiave simmetrica è piuttosto semplice e facile da capire. Asimmetrico


la crittografia è molto più complicata e spesso è un punto di confusione nella crittografia.

Crittografia a chiave asimmetrica


La crittografia asimmetrica , chiamata anche crittografia a chiave privata / pubblica, utilizza due chiavi, chiamate
una coppia di chiavi . Una coppia di chiavi è costituita da una chiave pubblica e una chiave privata.La chiave pubblica è giusta
quello - pubblico. Non è necessario tenerlo segreto. La chiave privata deve essere tenuta segreta.

L'idea generale della crittografia a chiave asimmetrica è mostrata nella Figura 23.2. Un testo in chiaro
file è crittografato utilizzando una chiave pubblica di una coppia di chiavi.Il file crittografato può quindi essere
trasmesso in modo sicuro a un'altra persona. Per decrittografare il file, viene utilizzata la chiave privata.
Questa chiave privata deve provenire dalla coppia di chiavi pubblica / privata. Quindi, i dati che hanno
stato crittografato con la chiave pubblica può essere decrittografato solo con la sua chiave privata. Il
Il vantaggio della crittografia asimmetrica è una maggiore sicurezza. Gli svantaggi sono
velocità e gestione delle chiavi.

FIGURA 23.2

Crittografia a chiave asimmetrica di base


Chiave pubblica Chiave privata

23

Non crittografato Crittografato Crittografato Non crittografato


file file file file

Puoi eseguire la crittografia asimmetrica sul tuo sistema Linux usando gpg2. È molto
utility crittografica versatile. Prima di poter crittografare un file, devi prima creare la tua chiave
coppia e un "portachiavi". Nell'esempio che segue, il comando gpg2 --gen-key era
Usato. Questo comando crea una coppia di chiavi pubblica / privata per l'utente johndoe, secondo
le sue specifiche desiderate. Genera anche un portachiavi per memorizzare le sue chiavi.

633

Pagina 674

Parte V: apprendimento delle tecniche di sicurezza di Linux

$ gpg2 --gen-key
gpg (GnuPG) 2.0.22; Copyright (C)
2013 Free Software Foundation, Inc.
...
Seleziona il tipo di chiave che desideri:
(1) RSA e RSA (predefinito)
(2) DSA ed Elgamal
(3) DSA (solo segno)
(4) RSA (solo segno)
La tua selezione? 1
Le chiavi RSA possono avere una lunghezza compresa tra 1024 e 4096 bit.
Che dimensione della chiave vuoi? (2048) 2048
La dimensione della chiave richiesta è 2048 bit
Si prega di specificare per quanto tempo la chiave deve essere valida.
0 = la chiave non scade
<n> = la chiave scade tra n giorni
<n> w = key scade tra n settimane
<n> m = la chiave scade tra n mesi
<n> y = la chiave scade tra n anni
La chiave è valida per? (0) 7
La chiave scade lunedì 5 dicembre 2016 03:55:29 EST
È corretto? (y / N) y

Hai bisogno di un ID utente per identificare la tua chiave.

Vero nome: John Doe


Indirizzo email: jdoe@example.com
Commento: l'utente
Hai selezionato questo USER-ID:
"John Doe (The User) < jdoe@gmail.com>"

Cambia (N) ame, (C) omment, (E) mail o (O) kay / (Q) uit? O
Hai bisogno di una passphrase per proteggere la tua chiave segreta.
Immettere la passphrase: **********
Ripeti passphrase: **********
...
gpg: /home/johndoe/.gnupg/trustdb.gpg: trustdb creato
gpg: chiave 3B2E46D5 contrassegnata come affidabile
chiave pubblica e segreta creata e firmata.
...
pub 2048R / 3B2E46D5 2015-12-08 [scadenza: 2015-12-15]
Impronta digitale chiave = E202 8E43 3784 69EF 118B
275C BA45 7DBF 3B2E 46D5
uid John Doe (l'utente) < jdoe@example.com>
sub 2048R / 0F0E0672 2015-12-087 [scadenza: 15/12/2016]
634

Pagina 675

Capitolo 23: Comprensione della sicurezza Linux avanzata

Nell'esempio precedente, l'utilità gpg2 richiede diverse specifiche per generare il file
chiavi private / pubbliche desiderate:

■ Crittografia crittografica: nell'esempio è stato scelto l'RSA.

■ Dimensione in bit: una dimensione della chiave maggiore fornisce una maggiore sicurezza.
■ Periodo di validità: nell'esempio sono stati scelti sette giorni.
■ ID utente: identifica la parte della chiave pubblica della coppia di chiavi pubblica / privata.
■ Passphrase: viene utilizzata per identificare e proteggere la parte della chiave privata del file
coppia di chiavi pubblica / privata.

È difficile, se non matematicamente impossibile, derivare la chiave privata dalla chiave pubblica. Tuttavia, un potenziale
è stata scoperta una vulnerabilità. Un set di coppie di chiavi viene generato utilizzando due numeri casuali primi. L'idea è che no
due coppie di chiavi sarebbero identiche. I ricercatori di sicurezza hanno scoperto che i numeri casuali generati non lo sono
quello casuale. Pertanto, esiste la possibilità di avere la stessa coppia di chiavi di qualcun altro su Internet. Se condividi il file
stessa coppia di chiavi, hai la possibilità di decrittografare i loro messaggi crittografati con chiave pubblica con la tua chiave privata. Perciò,
Dovresti, come minimo, usare la dimensione della chiave di 2.048 bit per ridurre la possibilità di questa potenziale situazione.

L'utente johndoe può controllare il suo portachiavi usando il comando gpg2 --list-keys, come
mostrato nel codice che segue. Notare che l'ID utente (UID) della chiave pubblica viene visualizzato solo
come è stato creato, contenente il vero nome, il commento e l'indirizzo e-mail di johndoe. 23
$ gpg2 --list-chiavi
/home/johndoe/.gnupg/pubring.gpg
--------------------------------
pub 2048R / 3B2E46D5 2015-12-08 [scadenza: 2016-12-15]
uid John Doe (l'utente) < jdoe@example.com>
sub 2048R / 0F0E0672 2015-12-08 [scadenza: 15/12/2016]

Dopo la generazione della coppia di chiavi e del keyring, i file possono essere crittografati e decrittografati. Primo,
la chiave pubblica deve essere estratta dal portachiavi in ​modo che possa essere condivisa. Nell'esempio that
segue, l'utility gpg2 viene utilizzata per estrarre la chiave pubblica dal portachiavi di johndoe. Il
la chiave estratta viene inserita in un file da condividere. Il nome del file può essere qualsiasi nome tu lo desideri
essere. In questo caso, l'utente johndoe ha scelto il nome del file JohnDoe.pub.

$ gpg2 --export John Doe> JohnDoe.pub


$ ls * .pub
JohnDoe.pub

Il file contenente la chiave pubblica può essere condiviso in vari modi. Può essere inviato come file
allegato via e-mail o anche pubblicato su una pagina web. La chiave pubblica è considerata pubblica,
quindi non è necessario nasconderlo. Nell'esempio che segue, johndoe ha fornito il file
contenente la sua chiave pubblica per l'utente jill. Aggiunge la chiave pubblica di johndoe al suo portachiavi,
utilizzando il comando gpg2 --import. L'utente jill verifica che la chiave pubblica di johndoe sia
aggiunto usando il comando gpg2 --list-keys per visualizzare il suo portachiavi.

635

Pagina 676

Parte V: apprendimento delle tecniche di sicurezza di Linux


$ ls * .pub
JohnDoe.pub
$ gpg2 - importazione JohnDoe.pub
gpg: directory "/home/jill/.gnupg" creata
...
gpg: chiave 3B2E46D5:
chiave pubblica "John Doe (The User) < jdoe@example.com >" importata
gpg: numero totale elaborato: 1
gpg: importato: 1 (RSA: 1)
$ gpg2 --list-chiavi
/home/jill/.gnupg/pubring.gpg
-----------------------------------
pub 2048R / 3B2E46D5 08-12-2016 [scadenza: 15-12-2016]
uid John Doe (l'utente) < jdoe@example.com>
sub 2048R / 0F0E0672 08/12/2016 [scadenza: 15/12/2016]

Dopo che la chiave è stata aggiunta al keyring, quella chiave pubblica può essere utilizzata per crittografare i dati per
proprietario originale della chiave pubblica. Nel codice di esempio che segue, nota quanto segue:

■ jill ha creato un file di testo, MessageForJohn.txt, per l'utente johndoe.

■ Crittografa il file utilizzando la sua chiave pubblica.


■ Il file crittografato, MessageForJohn, viene creato dall'opzione --out.
■ L'opzione --recipient identifica la chiave pubblica di johndoe utilizzando solo il nome reale
parte dell'UID della sua chiave pubblica tra virgolette, "John Doe".

$ gpg2 --out MessageForJohn --recipient "John Doe" \


--encrypt MessageForJohn.txt
...
$ ls
JohnDoe.pub MessageForJohn MessageForJohn.txt

Il file di messaggio crittografato, MessageForJohn, creato dal file di testo normale,


MessageForJohn.txt, può essere inviato in modo sicuro all'utente johndoe. Per decrittografare questo file
messaggio, johndoe utilizza la sua chiave privata, identificata e protetta dalla passphrase segreta
utilizzato per creare originariamente la chiave. Dopo che johndoe ha fornito la passphrase corretta, gpg2
decrittografa il file del messaggio e lo inserisce nel file, JillsMessage, designato da --out
opzione. Una volta decrittografato, può leggere il messaggio di testo in chiaro.

$ ls MessageForJohn
MessageForJohn
$ gpg2 --out JillsMessage --decrypt MessageForJohn

Hai bisogno di una passphrase per sbloccare la chiave segreta


utente: "John Doe (The User) < jdoe@gmail.com>"
Chiave RSA a 2048 bit, ID 0F0E0672, creata l'8-12-2016
(ID chiave principale 3B2E46D5)

gpg: crittografato con chiave RSA a 2048 bit, ID 0F0E0672,


creato il 27/02/2016

636

Pagina 677

Capitolo 23: Comprensione della sicurezza Linux avanzata

"John Doe (The User) < jdoe@example.com >"


$ cat JillsMessage
So che non sei il vero John Doe.

Per rivedere, i passaggi necessari per la crittografia / decrittografia dei file utilizzando chiavi asimmetriche
include il seguente:

1. Genera la coppia di chiavi e il portachiavi.

2. Esporta una copia della tua chiave pubblica in un file.

3. Condividere il file della chiave pubblica.

4. Le persone che desiderano inviarti file crittografati aggiungono la tua chiave pubblica al loro portachiavi.

5. Un file viene crittografato utilizzando la tua chiave pubblica.

6. Il file crittografato ti viene inviato.

7. Decifrate il file utilizzando la vostra chiave privata.

Puoi vedere perché le chiavi asimmetriche possono causare confusione! Ricordalo in asimmetrico
crittografia, ogni chiave pubblica e privata è un insieme accoppiato che funziona insieme.

Capire le firme digitali


Una firma digitale è un creatore elettronico utilizzato per l'autenticazione e la verifica dei dati.
Una firma digitale non è una scansione della tua firma fisica. Invece, è un crittografico
token inviato con un file, in modo che il destinatario del file possa essere certo che il file proviene da te e 23
non è stato modificato in alcun modo.
Quando crei una firma digitale, si verificano i seguenti passaggi:

1. Si crea un file o un messaggio.

2. Utilizzando l'utility gpg2, crei un hash o un messaggio-digest del file.

3. L'utilità gpg2 crittografa quindi l'hash e il file, utilizzando una chiave asimmetrica
cifra. Per la crittografia, viene utilizzata la chiave privata della coppia di chiavi pubblica / privata.
Questo è ora un file crittografato con firma digitale.

4. Si invia l'hash crittografato (ovvero la firma digitale) e il file al destinatario.

5. Il destinatario ricrea l'hash o il digest del messaggio del file crittografato ricevuto.

6. Utilizzando l'utility gpg2, il ricevitore decrittografa la firma digitale ricevuta utilizzando


la chiave pubblica, per ottenere l'hash originale o il digest del messaggio.
7. L'utility gpg2 confronta l'hash originale con l'hash ricreato per vedere se è così
incontro. Se corrispondono, al destinatario viene comunicato che la firma digitale è buona.
8. Il destinatario può ora leggere il file decrittografato.

Notare nel passaggio 3 che la chiave privata viene utilizzata per prima. Nella descrizione della chiave asimmetrica
crittografia, la chiave pubblica è stata utilizzata per prima. La crittografia a chiave asimmetrica è sufficientemente flessibile
consentono di utilizzare la chiave privata per crittografare e il destinatario di utilizzare la chiave pubblica per decrittografare.

637

Pagina 678

Parte V: apprendimento delle tecniche di sicurezza di Linux

Le firme digitali hanno i loro codici speciali. Sebbene diversi cifrari possano gestire sia la crittografia che la creazione
firme, ce ne sono alcune il cui unico lavoro è creare firme digitali. I cifrari crittografici più popolari per
utilizzati nella creazione delle firme sono RSA e Digital Signature Algorithm (DSA). L'algoritmo RSA può essere utilizzato per entrambi
crittografia e creazione di firme, mentre DSA può essere utilizzato solo per creare firme digitali.

Come puoi vedere, una firma digitale contiene sia hashing crittografico che asimmetrico
crittografia chiave. Questo complicato processo viene spesso gestito da un'applicazione che
è stato configurato per farlo, invece di essere gestito direttamente dagli utenti del sistema Linux.
Tuttavia, puoi aggiungere manualmente le tue firme digitali ai documenti.

Supponiamo che l'utente johndoe invii un messaggio all'utente christineb, insieme a


la sua firma digitale. Ha creato un file contenente il messaggio in chiaro da inviare. Lui usa
l'utility gpg2 per creare il file della firma e crittografare il file del messaggio. L'opzione --sign
dice all'utility gpg2 che MessageForChristine.txt è il file da crittografare e utilizzare
creare la firma digitale. In risposta, l'utilità gpg2:

■ Crea un digest del messaggio (noto anche come hash) del file del messaggio

■ Crittografa il digest del messaggio, che crea la firma digitale


■ Crittografa il file del messaggio
■ Inserisce
i contenuti crittografati nel file specificato dall'opzione --output,
JohnDoe.DS

Il file JohnDoe.DS ora contiene un messaggio crittografato e firmato digitalmente. Il seguente


codice dimostra questo processo:

$ gpg2 --output JohnDoe.DS --sign MessageForJill.txt

Hai bisogno di una passphrase per sbloccare la chiave segreta


utente: "John Doe (The User) < jdoe@example.com >"
Chiave RSA a 2048 bit, ID 3B2E46D5, creata l'8-12-2016

Dopo che l'utente jill ha ricevuto il file firmato e crittografato, può utilizzare l'utilità gpg2
per controllare la firma digitale e decrittografare il file in un unico passaggio. Nel codice che segue,
l'opzione --decrypt viene utilizzata insieme al nome del file firmato digitalmente, JohnDoe.
DS. Il messaggio del file viene decrittografato e visualizzato. La firma digitale del file viene controllata
e trovato valido.

$ gpg2 - decrittografa JohnDoe.DS


Sono il vero John Doe!
gpg: Firma fatta lunedì 27 febbraio 2016 09:42:36 EST
utilizzando l'ID chiave RSA 3B2E46D5
gpg: buona firma di "John Doe (The User) < jdoe@example.com >"
...

638
Pagina 679

Capitolo 23: Comprensione della sicurezza Linux avanzata

Senza la chiave pubblica di johndoe sul suo portachiavi, jill non sarebbe in grado di decrittarla
messaggio e controllare la firma digitale.

L'esempio precedente di firma digitale di un documento consente a chiunque disponga della chiave pubblica di decrittografare il documento
ument. Per mantenerlo veramente privato, usa la chiave pubblica del destinatario per crittografare con le opzioni gpg2: --sign
e --encrypt. Il destinatario può decrittografare con la sua chiave privata.

Comprendere alcune nozioni di base sulla crittografia ti aiuterà a iniziare a proteggere il tuo Linux
sistema con crittografia. Tieni presente che abbiamo trattato solo le basi in questo capitolo.
Ci sono molti altri argomenti di crittografia, come i certificati digitali e la chiave pubblica
infrastruttura, che varrebbe la pena di imparare.

Implementazione della crittografia Linux


Molti strumenti di crittografia sono disponibili sul tuo sistema Linux. Quali scegli di utilizzare
dipendono dai requisiti di sicurezza della tua organizzazione. Quanto segue è una breve rassegna di
alcuni degli strumenti di crittografia Linux disponibili.

Garantire l'integrità dei file


In precedenza in questo capitolo, l'integrità di un file ISO è stata verificata utilizzando l'utility message digest
md5sum. L'altro strumento di digest dei messaggi più popolare è quello che utilizza l'hash SHA-1, 23
sha1sum. Funziona in modo identico dalla riga di comando all'utilità md5sum, come mostrato in
codice che segue. Se un file ISO ha un hash SHA-1 elencato, invece di un checksum MD5, tu
può utilizzare quanto segue per controllare l'hash.

$ sha1sum Fedora-Live-Desktop-x86_64-20-1.iso
a4cec536ed5bd0c0754eb8840d5af475 Fedora-Live-Desktop-x86_64-20-1.iso

Sfortunatamente, a partire dal 2005, lo standard hash SHA-1 non era più considerato un file
hash crittografico a causa di alcuni "punti deboli matematici". Tuttavia, come con l'MD5,
ciò non ha diminuito la sua popolarità per il controllo dell'integrità dei file.

Se la tua organizzazione specifica richiede una vera utilità di hash crittografica, devi usarne una
degli strumenti hash crittografici SHA-2. Su Linux, questi includono:

■ sha224sum

■ sha256sum

■ sha384sum

■ sha512sum

Questi strumenti funzionano esattamente come il comando sha1sum, tranne, ovviamente, che usano SHA-2
standard di hash crittografico. L'unica differenza tra i vari strumenti SHA-2 è

639

Pagina 680

Parte V: apprendimento delle tecniche di sicurezza di Linux

la lunghezza della chiave che usano. Il comando sha224sum utilizza una lunghezza della chiave di 224 bit, il
Il comando sha256sum utilizza una lunghezza della chiave di 256 bit e così via. Ricordalo più a lungo
la lunghezza della chiave, minore è la possibilità di decifrare il codice.

Lo standard hash crittografico SHA-2 è stato creato dalla National Security Agency (NSA).
Hanno un altro standard hash crittografico che verrà rilasciato presto, SHA-3.
Crittografia di un filesystem Linux
Potrebbe essere necessario crittografare un intero file system sul server Linux. Questo può essere fatto
in molti modi diversi, incluso l'utilizzo di un software gratuito e open source (FOSS)
strumento di terze parti come TrueCrypt (www.truecrypt.org) o Linux Unified Key Setup
(LUKS) (https://code.google.com/p/cryptsetup/).

Una delle opzioni in Linux è crittografare la partizione di root al momento dell'installazione (vedere
Capitolo 9, "Installazione di Linux"). Molte distribuzioni Linux includono un'opzione di crittografia
durante il processo di installazione. La Figura 23.3 mostra l'opzione di crittografia durante un file
Installazione di Fedora.

FIGURA 23.3

Opzione di crittografia dell'installazione di Linux Fedora

Dopo aver selezionato questa opzione durante l'installazione, viene richiesta una password. Questo è
crittografia a chiave simmetrica con una password che protegge la singola chiave. Figura 23.4
mostra l'installazione che richiede la password della chiave. La password deve essere almeno
otto caratteri.

Se selezioni questa opzione di crittografia, ogni volta che avvii il sistema, ti viene chiesto il file
password della chiave simmetrica. La Figura 23.5 mostra come appare. Questo protegge la radice
partizione, in caso di furto del disco su cui risiede.

640

Pagina 681

Capitolo 23: Comprensione della sicurezza Linux avanzata

FIGURA 23.4

Password della chiave simmetrica di crittografia Fedora Linux

FIGURA 23.5

Chiedere la password della chiave simmetrica di crittografia all'avvio

23

Se erediti un sistema con un disco crittografato, utilizzando i privilegi di root, puoi utilizzare lvs
eIlcomandi
comandocryptsetup e ili volumi
mostra tutti file / etclogici
/ crypttab per nel
correnti aiutare. Di seguito,
sistema e il loro ildispositivo
file lvs sottostante
nomi. Vedere il Capitolo 12, "Gestione di dischi e file system", per una revisione del comando lvs.

# lvs -o dispositivi
dispositivi
/ dev / mapper / luks-b099fbbe-0e56-425f-91a6-44f129db9f4b (56)
/ dev / mapper / luks-b099fbbe-0e56-425f-91a6-44f129db9f4b (0)

Su questo sistema, nota che i nomi dei dispositivi sottostanti iniziano con luks. Questo indica
che è stato utilizzato lo standard Linux Unified Key Setup (LUKS) per la crittografia del disco rigido.

Ubuntu non ha il comando lvs installato per impostazione predefinita. Per installarlo, digita sudo apt-get install lvm2
dalla riga di comando.

641

Pagina 682

Parte V: apprendimento delle tecniche di sicurezza di Linux

I volumi logici crittografati vengono montati al momento dell'avvio utilizzando le informazioni dal
/ etc / crypttab, come mostrato nel codice seguente. Si noti che i nomi di luks sono i
uguali a quelli elencati dal comando lvs nell'esempio precedente.

# cat / etc / crypttab


luks-b099fbbe-0e56-425f-91a6-44f129db9f4b
UUID = b099fbbe-0e56-425f-91a6-44f129db9f4b nessuno

Puoi anche usare il comando cryptsetup per aiutarti a scoprire maggiori informazioni su
i volumi crittografati del tuo sistema Linux. Nell'esempio che segue, l'opzione di stato è
utilizzato insieme al nome del dispositivo luks per determinare ulteriori informazioni.

# cryptsetup stato luks-b099fbbe-0e56-425f-91a6-44f129db9f4b


/ dev / mapper / luks-b099fbbe-0e56-425f-91a6-44f129db9f4b
è attivo ed è in uso.
tipo: LUKS1
cipher: aes-xts-plain64
dimensione della chiave: 512 bit
dispositivo: / dev / sda3
offset: 4096 settori
dimensione: 493819904 settori
modalità: lettura / scrittura

Crittografia di una directory Linux


Puoi anche utilizzare l'utility ecryptfs per crittografare su un sistema Linux. L'utilità ecryptfs
non è un tipo di filesystem come suggerisce il nome. Invece, è un'utilità conforme a POSIX
che ti consente di creare un livello di crittografia sopra qualsiasi filesystem.

L'utilità ecryptfs non è installata per impostazione predefinita su Fedora e RHEL. Per installare quell'utility
ity, è necessario utilizzare il comando yum install ecryptfs-utils. Se non è installato su un file
Sistema Debian, usa il comando sudo apt-get install ecrypt-utils.

Poiché l'utility ecryptfs viene utilizzata per la crittografia, è un errore comune inserire la lettera n dopo la lettera e in
la sintassi ecryptfs. Se ricevi un errore durante l'utilizzo delle utilità ecryptfs, assicurati di non aver utilizzato la sintassi
encryptfs per errore.

Nell'esempio che segue, l'utente johndoe avrà una sottodirectory crittografata utilizzando
l'utilità ecryptfs. Innanzitutto, non dovrebbero esserci file attualmente residenti nella directory
prima che venga crittografato. Se sono presenti file in tale posizione, spostarli in un luogo sicuro fino a dopo
la crittografia è stata completata. Se non li sposti, non puoi accedervi
mentre la directory è crittografata.

Ora, per crittografare la directory / home / johndoe / Secret, usa il comando mount. Guarda
al comando mount usato nell'esempio che segue. È in qualche modo simile al
normale comando di montaggio, tranne che il tipo di partizione utilizzato è ecryptfs. L'oggetto da montare

642
Pagina 683

Capitolo 23: Comprensione della sicurezza Linux avanzata

e il suo punto di montaggio sono la stessa directory! Stai letteralmente crittografando la directory e
montandolo su se stesso. L'altro elemento insolito di questo comando mount è che scatta
dall'utilità ecryptfs, che pone alcune domande interattive.

# mount -t ecryptfs / home / johndoe / Secret / home / johndoe / Secret


Seleziona il tipo di chiave da utilizzare per i file appena creati:
1) tspi
2) passphrase
3) pkcs11-helper
4) openssl
Selezione: 2
Passphrase: **********
Seleziona cifratura:
1) aes: dimensione del blocco = 16;
dimensione min chiave = 16; max keysize = 32 (caricato)
2) pesce palla: dimensione blocco = 16;
dimensione min chiave = 16; max keysize = 56 (non caricato)
3) des3_ede: blocksize = 8;
dimensione minima della chiave = 24; max keysize = 24 (non caricato)
4) twofish: blockize = 16;
dimensione minima della chiave = 16; max keysize = 32 (non caricato)
5) cast6: blockize = 16;
dimensione minima della chiave = 16; max keysize = 32 (non caricato)
6) cast5: blockize = 8;
dimensione minima chiave = 5; max keysize = 16 (non caricato) 23
Selezione [aes]: 1
Seleziona byte chiave:
1) 16
2) 32
3) 24
Selezione [16]: 16
Abilita il passthrough in testo normale (y / n) [n]: n
Abilita crittografia nome file (y / n) [n]: n
Tentativo di montaggio con le seguenti opzioni:
ecryptfs_unlink_sigs
ecryptfs_key_bytes = 16
ecryptfs_cipher = aes
ecryptfs_sig = 70993b8d49610e67
ATTENZIONE: in base al contenuto di [/root/.ecryptfs/sig-cache.txt]
sembra che tu non abbia mai montato questa chiave
prima. Questo potrebbe significare che hai digitato il tuo
passphrase errata.

Vuoi procedere con la montatura (si / no)? : sì


Si desidera aggiungere sig [70993b8d49610e67] a
[/root/.ecryptfs/sig-cache.txt]
per evitare questo avviso in futuro (sì / no)? : sì
Nuovo sig aggiunto con successo al file cache sig utente
ECryptfs montati

643

Pagina 684

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'utility ecryptfs ti consente di scegliere quanto segue:

■ Tipo di chiave
■ Passphrase

■ Cipher

■ Dimensione chiave (in byte)


■ Per abilitare o disabilitare il passaggio del testo normale
■ Per abilitare o disabilitare la crittografia del nome file
Ti avvisa anche quando monti per la prima volta questa directory crittografata perché la chiave non lo ha
stato usato prima. L'utility consente di applicare una firma digitale alla directory montata in questo modo
che se lo monti di nuovo, monta solo la directory e non richiede una passphrase.

Annota le selezioni che fai quando monti una cartella ecryptfs per la prima volta. Hai bisogno dell'esatto
selezioni che hai scelto la prossima volta che rimonterai la cartella.

Per verificare che la directory crittografata sia ora montata, è possibile utilizzare nuovamente il comando mount.
Nell'esempio che segue, viene utilizzato il comando mount e quindi reindirizzato a grep per la ricerca
per la directory / home / johndoe / Secret. La directory è montata con un tipo ecryptfs.

# mount | grep / home / johndoe / Secret


/ home / johndoe / Secret on / home / johndoe / Secret type ecryptfs
(rw, relatime, ecryptfs_sig = 70993b8d49610e67, ecryptfs_cipher = aes,
ecryptfs_key_bytes = 16, ecryptfs_unlink_sigs)

Finora, non hai visto gli effetti di questa directory montata e crittografata. Nel testo
di seguito, il file my_secret_file viene copiato nella directory crittografata. Utente johndoe
può ancora utilizzare il comando cat per visualizzare il file in testo normale. Il file viene automaticamente
decrittografato dal livello ecryptfs.

$ cp my_secret_file Secret
$ cat / home / johndoe / Secret / my_secret_file
Shh ... È un segreto.

L'utente root può anche utilizzare il comando cat per visualizzare il file in testo normale.

# cat / home / johndoe / Secret / my_secret_file


Shh ... È un segreto.

Tuttavia, dopo che la directory crittografata è stata smontata utilizzando il comando umount, i file
non vengono più decrittografati automaticamente. Il file my_secret_file ora è incomprensibile e
non può essere letto, nemmeno dall'utente root.

# umount / home / johndoe / Secret

644

Pagina 685

Capitolo 23: Comprensione della sicurezza Linux avanzata

Pertanto, l'utilità ecryptfs consente di creare rapidamente una posizione sul file system
crittografare e decrittografare i file. Tuttavia, dopo che la directory non è più montata come file
ecryptfs, i file sono protetti e non possono essere decrittografati.

Crittografia di un file Linux


Lo strumento più popolare per la crittografia dei file su un sistema Linux è l'utilità OpenPGP GNU
Tutela della privacy, gpg. La sua flessibilità e varietà di opzioni, insieme al fatto che lo è
installato di default sulla maggior parte delle distribuzioni Linux, si aggiunge al suo fascino.

Se la tua organizzazione utilizza una società di archiviazione cloud di terze parti, devi sapere che alcune di queste società, come
come Dropbox, non crittografare i file finché non vengono ricevuti. Ciò significa che l'azienda ha le chiavi necessarie per farlo
decrittografa i tuoi file e può lasciare i dati della tua organizzazione vulnerabili. Crittografare i file sul tuo sistema Linux prima di loro
vengono inviati al cloud aggiunge il livello aggiuntivo di protezione necessario.

Tuttavia, è possibile utilizzare molti altri strumenti di crittografia su un sistema Linux per crittografare i file.
E proprio come gpg, molti di questi strumenti ti consentono di fare molto di più della semplice crittografia dei file.
Di seguito sono riportati alcuni dei popolari strumenti di crittografia Linux che puoi utilizzare per crittografare i file:

■ aescrypt: utilizza la crittografia a chiave simmetrica Rijndael, chiamata anche AES. Questo
lo strumento FOSS di terze parti è disponibile per il download da www.aescript.com.
■ bcrypt: questo strumento utilizza il blowfish di cifratura a chiave simmetrica. Non è installato da
23
predefinito. Dopo aver installato bcrypt, sono disponibili le pagine man.
■ Per Fedora e RHEL: yum install bcrypt.

■ Per Ubuntu: sudo apt-get install bcrypt.


■ ccrypt:questo strumento utilizza la crittografia a chiave simmetrica Rijndael, chiamata anche AES. Era
creato per sostituire l'utility standard Unix crypt e non è installato di default.
Dopo aver installato ccrypt, sono disponibili le pagine man.
■ Per Fedora e RHEL: yum install ccrypt.
■ Per Ubuntu: sudo apt-get install ccrypt.
■ gpg: questa utility può utilizzare coppie di chiavi asimmetriche o una chiave simmetrica. È
installato per impostazione predefinita ed è lo strumento di crittografia preferito per i server Linux. Il
la crittografia predefinita da utilizzare è impostata nel file gpg.conf. Sono disponibili pagine man come
così come info gnupg.

Tieni presente che questo elenco copre solo gli strumenti più popolari. Inoltre, ricorda che molti di
questi strumenti di crittografia di file possono essere utilizzati per qualcosa di più della semplice crittografia di file.

Crittografia di Linux con strumenti vari


Puoi applicare la crittografia a quasi tutto in Linux. Oltre a filesystem, directory,
e file, puoi anche crittografare backup, file Zip, connessioni di rete e altro ancora.

645

Pagina 686

Parte V: apprendimento delle tecniche di sicurezza di Linux

La Tabella 23.2 elenca alcuni dei vari strumenti di crittografia Linux e cosa fanno. Se tu
vuoi vedere un elenco completo degli strumenti di crittografia installati sulla tua attuale distribuzione Linux,
digita man -k crypt dalla riga di comando.

TABELLA 23.2 Strumenti di crittografia vari di Linux

Attrezzo Descrizione

Duplicità Crittografa i backup. Installato di default su Fedora e RHEL. Da installare su


Ubuntu, digita sudo apt-get install duplicity nella riga di comando.

gpg-zip Utilizza GNU Privacy Guard per crittografare o firmare i file in un archivio. Installato per impostazione predefinita.

Openssl Un toolkit che implementa Secure Socket Layer (SSL) e Transport Layer Security
(TLS) protocolli. Questi protocolli richiedono la crittografia. Installato per impostazione predefinita.

Cavalluccio marino Un gestore di chiavi di crittografia GNU Privacy Guard. Installato di default su Ubuntu. Per
installa su Fedora e RHEL, digita yum install seahorse nella riga di comando.

Ssh Crittografa l'accesso remoto attraverso una rete. Installato per impostazione predefinita.

Zipcloak Crittografa le voci in un file Zip. Installato di default.

Come molti altri elementi su un sistema Linux, gli strumenti di crittografia disponibili sono ricchi e
abbondante. Questo ti dà la flessibilità e la varietà di cui hai bisogno per implementare il
standard di crittografia richiesti dalla tua organizzazione.

Utilizzo della crittografia dal desktop


La finestra Password e chiavi fornisce un mezzo per visualizzare e gestire chiavi e password
dal desktop GNOME. Questa finestra può essere avviata selezionando le password e le chiavi
dalla schermata delle attività o eseguendo il comando cavalluccio marino. Con quella finestra
appare, puoi lavorare con quanto segue:

■ Password: quando si accede a un sito Web e si immette un nome utente e una password (e
si seleziona per salvare la password), viene memorizzata nel sistema per la prossima volta
visitare quel sito. Seleziona la voce di accesso sotto l'intestazione Password per visualizzare ciascuna di
questi nomi utente e password salvati.
■ Certificati: è possibile visualizzare i certificati associati all'archivio chiavi di Gnome2,
Archiviazione chiavi utente, affidabilità di sistema e affidabilità predefinita.
■ Chiavi PGP: è possibile visualizzare le chiavi GPG create selezionando le chiavi GnuPG
iscrizione. La Figura 23.6 mostra i risultati della selezione della voce creata per John Doe
all'inizio di questo capitolo per vedere i dettagli sulla chiave privata di quell'utente.
■ Shell sicura: è possibile creare chiavi OpenSSH pubbliche e private che consentono di accedere
sistemi remoti che utilizzano quelle chiavi invece delle password per l'autenticazione con ssh,
scp, rsync, sftp e comandi correlati. Seleziona OpenSSH keys per visualizzare le chiavi
hanno creato per questo scopo. (Vedere la sezione "Utilizzo dell'autenticazione senza password basata su chiave"
sezione del Capitolo 13 per informazioni sulla creazione di questi tipi di chiavi.)

646

Pagina 687
Capitolo 23: Comprensione della sicurezza Linux avanzata

FIGURA 23.6

Visualizza le chiavi private sul tuo sistema dalla finestra Password e chiavi (cavalluccio marino).

23

Per la Figura 23.6, ho selezionato la scheda Dettagli per le chiavi private create in precedenza per John Doe.
Da quella scheda, puoi vedere informazioni come quando è stata creata la chiave e quando scade,
il tipo di chiave e la relativa impronta digitale e le sottochiavi della chiave che possono essere scadute o revocate.

Crittografia dei file con Pyrite


Se ti piace lavorare con la crittografia dei file da una finestra grafica, ti consiglio di provare lo strumento Pyrite
( https://github.com/ryran/pyrite) creato da Ryan Sawhill Aroha. Segui le istruzioni dal
Pagina Pyrite per scaricarlo e installarlo. Con Pyrite, puoi crittografare e decrittografare i file utilizzando le password
o chiavi e una varietà di cifre (AES256, Twofish, CAST5 e così via).

Per provare Pyrite, digita del testo nella casella Input / Output del messaggio, crittografalo e copia l'output in un file
file da inviare a un'altra persona che potrebbe decrittografarlo (fornite le credenziali appropriate). Allo stesso modo, puoi
seleziona la casella sotto "File di input per operazione diretta" per trovare un file crittografato nel tuo filesystem
decifrare. La figura mostra un esempio della finestra Pyrite.
Continua

647

Pagina 688

Parte V: apprendimento delle tecniche di sicurezza di Linux

ha continuato
Pyrite ti consente di crittografare e decrittografare i file.

Un altro strumento di sicurezza estremamente potente disponibile su Linux è PAM. La prossima sezione
in questo capitolo vengono trattati i concetti di base di PAM e come è possibile utilizzare questo strumento per ulteriori informazioni
migliora la sicurezza del tuo sistema Linux.

Implementazione della sicurezza Linux con PAM


Pluggable Authentication Modules (PAM) è stato inventato da Sun Microsystems e originariamente
implementato nel sistema operativo Solaris. Il progetto Linux-PAM è iniziato nel 1997. Oggi,
la maggior parte delle distribuzioni Linux utilizza PAM.

PAM semplifica il processo di gestione dell'autenticazione. Ricorda che l' autenticazione (vedi
Capitolo 22, "Comprensione della sicurezza di base di Linux") è il processo per determinare che un soggetto
(aka utente o processo) è chi dice di essere. Questo processo è talvolta chiamato "identificazione
e autenticazione. " PAM è un metodo centralizzato per fornire l'autenticazione per Linux
sistema e applicazioni.

Le applicazioni possono essere scritte per utilizzare PAM e sono chiamate "PAM-aware". Un'applicazione compatibile con PAM
non deve essere riscritto e ricompilato per modificare le impostazioni di autenticazione.
Tutte le modifiche necessarie vengono apportate all'interno di un file di configurazione PAM per le applicazioni compatibili con PAM.
Pertanto, la gestione dell'autenticazione per queste applicazioni è centralizzata e semplificata.

È possibile vedere se una particolare applicazione o utilità Linux è compatibile con PAM. Controlla se
è compilato con la libreria PAM, libpam.so. Nell'esempio che segue, il file crontab
l'applicazione è in fase di verifica per la consapevolezza PAM. Il comando ldd controlla la condivisione di un file

648

Pagina 689

Capitolo 23: Comprensione della sicurezza Linux avanzata

dipendenze della libreria. Per mantenerlo semplice, grep viene utilizzato per cercare la libreria PAM. Come te
può vedere, crontab su questo particolare sistema Linux è compatibile con PAM.

# ldd / usr / bin / crontab | grep pam


libpam.so.0 => /lib/libpam.so.0 (0x44d12000)

I vantaggi dell'utilizzo di PAM sul proprio sistema Linux includono quanto segue:

■ Gestione dell'autenticazione semplificata e centralizzata dall'amministratore


punto di vista
■ Sviluppo di applicazioni semplificato, perché gli sviluppatori possono scrivere applicazioni utilizzando
la libreria PAM documentata, invece di scrivere le proprie routine di autenticazione
■ Flessibilità nell'autenticazione:
■ Consentire o negare l'accesso alle risorse in base a criteri tradizionali, come l'identificazione
■ Consentire o negare l'accesso in base a criteri aggiuntivi, come le limitazioni dell'ora del giorno

■ Impostare i limiti del soggetto, come l'utilizzo delle risorse

Sebbene i vantaggi di PAM semplifichino la gestione dell'autenticazione, il modo in cui PAM effettivamente
funziona non è così semplice.

Comprensione del processo di autenticazione PAM


Quando un soggetto (utente o processo) richiede l'accesso a un'applicazione o utility compatibile con PAM, due 23
i componenti primari vengono utilizzati per completare il processo di autenticazione del soggetto:

■ Il file di configurazione dell'applicazione compatibile con PAM

■I moduli PAM utilizzati dal file di configurazione

Ogni file di configurazione dell'applicazione compatibile con PAM è al centro del processo. Il PAM
i file di configurazione richiedono particolari moduli PAM per eseguire l'autenticazione necessaria.
I moduli PAM autenticano i soggetti dai dati di autorizzazione del sistema, come un file
account utente utilizzando LDAP (vedere il Capitolo 11, "Gestione degli account utente").

Linux viene fornito con molte applicazioni compatibili con PAM, i file di configurazione necessari
e moduli PAM già installati. Se hai esigenze di autenticazione speciali, puoi farlo
molto probabilmente trova un modulo PAM che è già stato scritto per quella necessità. Tuttavia, prima
si inizia a modificare PAM, è necessario capire di più su come funziona PAM.

Una serie di passaggi viene eseguita da PAM utilizzando i moduli ei file di configurazione per garantire ciò
si verifica la corretta autenticazione dell'applicazione:
1. Un soggetto (utente o processo) richiede l'accesso a un'applicazione.

2. Il file di configurazione PAM dell'applicazione, che contiene una politica di accesso, è aperto
e leggi.

649

Pagina 690

Parte V: apprendimento delle tecniche di sicurezza di Linux

La politica di accesso viene impostata tramite un elenco di tutti i moduli PAM da utilizzare nell'autenticazione
processo cationico. Questo elenco di moduli PAM è chiamato stack .

3. Ogni modulo PAM nello stack viene richiamato nell'ordine in cui è elencato.

4. Ogni modulo PAM restituisce uno stato di successo o di errore.

5. Lo stack continua a essere letto in ordine e non viene necessariamente interrotto da un singolo
ha restituito lo stato di errore.

6. I risultati dello stato di tutti i moduli PAM vengono combinati in un unico risultato complessivo
di successo o fallimento dell'autenticazione.

In genere, se un singolo modulo PAM restituisce uno stato di errore, l'accesso all'applicazione è
negato. Tuttavia, ciò dipende dalle impostazioni del file di configurazione.

La maggior parte dei file di configurazione di PAM si trovano in /etc/pam.d. Il formato generale di un PAM
il file di configurazione è:

flag controllo contesto modulo PAM [ opzioni modulo ]

Di seguito viene mostrato il file di configurazione PAM per il comando poweroff. Notare che
il file inizia con una riga di commento. Ogni riga che inizia con un carattere # viene ignorata.

$ cat /etc/pam.d/poweroff
#% PAM-1.0
auth sufficiente pam_rootok.so
autenticazione richiesta pam_console.so
#auth include system-auth
account richiesto pam_permit.so

Ricorda che tutti i moduli PAM elencati nello stack del file di configurazione sono chiamati, in
ordine e ha chiesto di restituire uno stato. Nel file di configurazione PAM precedente, tre stati
vengono restituiti per determinare se il soggetto può accedere al comando poweroff. Per
capire meglio come vengono utilizzati questi file di configurazione, è necessario rivedere ogni parte di
il formato generale.

Su Ubuntu, i file di configurazione PAM possono includere altri file di configurazione PAM per l'autenticazione. La configurazione
il file da includere è elencato con una "@" davanti al nome.

Comprensione dei contesti PAM


I moduli PAM hanno funzioni standard che forniscono diversi servizi di autenticazione.
Queste funzioni standard all'interno di un modulo PAM possono essere suddivise in tipi di funzione, chiamati
contesti . I contesti possono anche essere chiamati interfacce o tipi di moduli . Nella Tabella 23.3, il diverso
I contesti PAM sono elencati insieme al tipo di servizio di autenticazione che forniscono.

650

Pagina 691
Capitolo 23: Comprensione della sicurezza Linux avanzata

TABELLA 23.3 Contesti PAM

Contesto Descrizione del servizio

auth Fornisce servizi di gestione dell'autenticazione, come la verifica dell'account


Le password

account Fornisce servizi di convalida dell'account, come le restrizioni di accesso all'ora del giorno

parola d'ordine Gestisce le password degli account, come le restrizioni sulla lunghezza delle password

sessione Gestisce l'inizio e la fine di una sessione autenticata, come l'invio


informazioni ai registri di sicurezza

Nel file di configurazione poweroff, mostrato di nuovo qui, vengono utilizzati solo due contesti PAM,
auth e account. Pertanto, non è necessario che questa applicazione disponga di password PAM o
servizi di gestione delle sessioni. Si noti che uno dei contesti di autenticazione viene ignorato perché è
la riga inizia con un carattere #:

$ cat /etc/pam.d/poweroff
#% PAM-1.0
auth sufficiente pam_rootok.so
autenticazione richiesta pam_console.so
#auth include system-auth
account richiesto pam_permit.so

Il contesto di autenticazione è elencato due volte nel file di configurazione mostrato nel codice precedente.
23
Tuttavia, per ogni contesto di autenticazione, vengono utilizzati un flag di controllo e un modulo PAM diversi. Ogni
il flag di controllo ha un significato e una funzione speciali.

Comprensione dei flag di controllo PAM


In un file di configurazione PAM, i flag di controllo vengono utilizzati per determinare lo stato generale, che
vengono restituiti all'applicazione. Un flag di controllo è uno dei seguenti:

■ Parola chiave semplice : l'unica preoccupazione qui è se il modulo PAM corrispondente


restituisce una risposta "non riuscita" o "riuscita". Vedere la Tabella 23.4 per come questi
gli stati vengono gestiti.
■ Serie di azioni : lo stato del modulo restituito viene gestito tramite la serie di
azioni elencate nel file.

La Tabella 23.4 mostra i vari flag di controllo delle parole chiave e le loro risposte al messaggio restituito
stato del modulo. Si noti che alcuni flag di controllo devono essere posizionati con attenzione all'interno
lo stack del file di configurazione. Alcuni flag di controllo provocano l'arresto del processo di autenticazione
immediatamente e il resto dei moduli PAM non vengono chiamati. I flag di controllo semplicemente
controllare come i risultati di stato del modulo PAM vengono combinati in un unico risultato complessivo.
La Tabella 23.4 mostra come vengono combinati i risultati dello stato.

651

Pagina 692

Parte V: apprendimento delle tecniche di sicurezza di Linux

TABELLA 23.4 Flag di controllo della configurazione PAM e gestione delle risposte

Flag di controllo Descrizione della gestione delle risposte

necessario Se fallito, restituisce uno stato di errore all'applicazione, dopo il resto dei contesti
sono stati eseguiti nello stack.

Ad esempio, un controllo richiesto potrebbe causare il fallimento di un accesso se qualcuno digita


un utente non valido. Ma l'utente potrebbe non essere informato dell'errore fino a dopo essere entrato
una password, nascondendo il fatto che il cattivo nome utente ha causato l'errore.

requisito In caso di errore, restituisce immediatamente uno stato di errore all'applicazione senza l'esecuzione
il resto della pila. (Fai attenzione a dove metti questo controllo nella pila.)

Ad esempio, un controllo richiesto potrebbe richiedere l'autenticazione basata su chiave e


fallire immediatamente quando non viene fornita una chiave valida. In tal caso, potrebbe fallire
prima ancora di richiedere un nome utente / password.

sufficiente In caso di errore, lo stato del modulo viene ignorato. In caso di successo, lo stato di successo è
immediatamente restituito all'applicazione senza eseguire il resto dello stack.
(Fai attenzione a dove metti questo controllo nella pila.)

opzionale Questo flag di controllo è importante solo per lo stato di ritorno complessivo finale del successo
o fallimento. Pensalo come un pareggio. Quando gli altri moduli nel file
stati di restituzione dello stack del file di configurazione che non sono un chiaro errore o successo
stati, lo stato di questo modulo opzionale viene utilizzato per determinare lo stato finale o
rompere il legame. Nei casi in cui gli altri moduli nello stack restituiscono un file
percorso chiaro di fallimento o successo, questo stato viene ignorato.

includere Ottieni tutti gli stati di ritorno dallo stack di questo particolare file di configurazione PAM a
includere nello stato di restituzione complessivo di questo stack. È come se l'intero stack del file
Il file di configurazione denominato è ora in questo file di configurazione.

sottostruttura Simile al flag di controllo include, ad eccezione di come determinati errori e


le valutazioni influenzano lo stack principale. Questo forza il file di configurazione incluso
stack per agire come un substack dello stack principale. Pertanto, alcuni errori e
le valutazioni interessano solo il substack e non lo stack principale.

Dovresti sapere che i moduli PAM restituiscono molti più codici risultato di stato oltre a quelli
"Successo" o "fallimento". Ad esempio, un modulo può restituire il codice di stato di PAM_ACCT_
SCADUTO, il che significa che l'account utente è scaduto. Questo sarebbe considerato un "fallimento".

Capire i moduli PAM


Un modulo PAM è in realtà una suite di moduli di libreria condivisa (file DLL) archiviati in / lib /
sicurezza. È possibile visualizzare un elenco dei vari moduli PAM installati sul sistema tramite
digitando ls /lib/security/pam*.so nella riga di comando.

Su Ubuntu, per trovare i tuoi moduli PAM, digita il comando sudo find / -name pam * .so nella riga di comando.

652

Pagina 693

Capitolo 23: Comprensione della sicurezza Linux avanzata

Il tuo sistema Linux viene fornito con molti dei moduli PAM necessari già installati. voi
non è possibile scrivere alcun modulo PAM da soli. Se hai bisogno di un modulo non già installato,
molto probabilmente lo ha già scritto qualcun altro. Controlla fonti come:

■ http://www.openwall.com/pam/

■ http://puszcza.gnu.org.ua/software/pam-modules/download.html

Comprensione dei file di configurazione degli eventi di sistema PAM


Finora, l'attenzione si è concentrata sulle applicazioni compatibili con PAM e sui relativi file di configurazione.
Tuttavia, anche altri eventi di sistema, come l'accesso al sistema Linux, utilizzano PAM. Quindi,
questi eventi hanno anche file di configurazione.

Di seguito è riportato un elenco di directory parziale della directory del file di configurazione PAM. Avviso
che sono presenti file di configurazione dell'applicazione compatibili con PAM, come cond ed evento di sistema
file di configurazione, come postlogin-ac.

# ls -l /etc/pam.d
totale 204
-rw-r - r--. 1 radice radice 272 15 nov 10:06 atd
...
-rw-r - r--. 1 root root 232 31 gen 12:35 config-util
-rw-r - r--. 1 radice radice 293 26 ottobre 23:10 crond
...
-rw-r - r--. 1 radice radice 109 Feb 28 01:33 postlogin-ac
23
-rw-r - r--. 1 radice radice 147 3 ottobre 11:51 spegnimento
...
-rw-r - r--. 1 root root 981 Feb 28 01:33 system-auth-ac
...

È possibile modificare questi file di configurazione degli eventi di sistema per implementare quelli della propria organizzazione
esigenze di sicurezza specifiche. Ad esempio, il file system-auth-ac può essere modificato per forzare
alcune limitazioni della password.

La modifica o l'eliminazione errata dei file di configurazione degli eventi di sistema PAM può bloccare l'accesso al proprio sistema. Rendere
assicurati di testare eventuali modifiche in un ambiente virtuale o di test prima di modificare i tuoi server Linux di produzione.

Questi file di configurazione degli eventi di sistema PAM funzionano esattamente allo stesso modo di
File di configurazione dell'applicazione compatibili con PAM. Hanno lo stesso formato, usa lo stesso
sintassi e invocano moduli PAM. Tuttavia, molti di questi file sono collegati simbolicamente
(vedere Capitolo 4, "Spostarsi nel filesystem"). Pertanto, questi file di configurazione
richiedono alcuni passaggi aggiuntivi quando vengono apportate modifiche. Le "istruzioni" vengono trattate più avanti
in questo capitolo.
653

Pagina 694

Parte V: apprendimento delle tecniche di sicurezza di Linux

Molti dei file di configurazione di PAM hanno una pagina man associata ad essi. Ad esempio, per saperne di più
informazioni sul modulo pam_unix, digita man pam_unix nella riga di comando di Fedora e RHEL
distribuzione. Ci sono anche file di documentazione del modulo nella directory / usr / share / doc / pam - * / txts /.

Anche se Linux viene fornito con molte applicazioni compatibili con PAM, vari file di configurazione,
e moduli PAM già installati, non puoi semplicemente sperare che PAM si prenda cura di se stessa.
Sono necessari alcuni passaggi amministrativi per gestire PAM.

Amministrazione di PAM sul tuo sistema Linux


Il compito di amministrare PAM sul tuo sistema Linux è piuttosto minimo. Devi
verifica che PAM sia implementato correttamente e apporta le modifiche per soddisfare le tue esigenze
esigenze di sicurezza dell'organizzazione.

Inoltre, PAM fa qualcosa di più dei semplici passaggi di autenticazione dell'applicazione descritti in precedenza.
PAM può anche limitare le risorse, limitare i tempi di accesso, imporre una buona selezione di password e così via.

Gestione dei file di configurazione dell'applicazione compatibili con PAM


È necessario esaminare i file di configurazione PAM per le applicazioni e le utilità compatibili con PAM
per garantire che il processo di autenticazione corrisponda all'autenticazione desiderata dalla tua organizzazione
processo di tication. La matrice di controllo dell'accesso (vedere il Capitolo 22, "Comprensione di Linux di base
Sicurezza ") e le informazioni sulla comprensione di PAM fornite in questo capitolo dovrebbero aiutare
conduci una verifica dei file di configurazione PAM.

Ogni applicazione compatibile con PAM dovrebbe avere il proprio file di configurazione PAM. Ogni
Il file di configurazione definisce quali particolari moduli PAM vengono utilizzati per quell'applicazione. Se
non esiste alcun file di configurazione, è possibile che venga creato un buco di sicurezza per quell'applicazione. Questo buco
potrebbe essere utilizzato per intenti dannosi. Come precauzione di sicurezza, PAM viene fornito con l '"altro"
file di configurazione. Se un'applicazione compatibile con PAM non dispone di un file di configurazione PAM, esso
utilizza per impostazione predefinita il file di configurazione "altro" PAM.

Puoi verificare se il tuo sistema Linux ha il file di configurazione /etc/pam.d/other


utilizzando il comando ls. L'esempio che segue mostra che /etc/pam.d/other
Il file di configurazione PAM esiste su questo sistema.

$ ls /etc/pam.d/other
/etc/pam.d/other

Il file di configurazione PAM /etc/pam.d/other dovrebbe negare qualsiasi accesso, che in termini di
la sicurezza viene definita negazione implicita. Nel controllo degli accessi alla sicurezza del computer, Implicit Deny
significa che se determinati criteri non sono chiaramente soddisfatti, l'accesso deve essere negato. In questo caso,

654

Pagina 695

Capitolo 23: Comprensione della sicurezza Linux avanzata

se non esiste alcun file di configurazione per un'applicazione compatibile con PAM, ogni accesso ad esso viene negato. Il
di seguito mostra il contenuto di un /etc/pam.d/other file:
$ cat /etc/pam.d/other
#% PAM-1.0
auth ha richiesto pam_deny.so
account richiesto pam_deny.so
password richiesta pam_deny.so
sessione richiesta pam_deny.so

Si noti che sono elencati tutti e quattro i contesti PAM: autenticazione, account, password e sessione.
Ogni contesto utilizza il flag di controllo richiesto e il modulo pam_deny.so. Il pam_
Il modulo deny.so PAM viene utilizzato per negare l'accesso.

Anche con l '"altro" file di configurazione in posizione, se un file di configurazione PAM per un file
L'applicazione compatibile con PAM non è presente, deve essere creata. Aggiungi questo elemento alla tua verifica PAM
lista di controllo. È inoltre necessario rivedere il file di configurazione "altro" di PAM sul sistema Linux
per garantire che imponga la negazione implicita.

Gestione dei file di configurazione degli eventi di sistema PAM


Simile all'applicazione compatibile con PAM e ai file di configurazione dell'utilità, l'evento di sistema PAM
i file di configurazione devono essere controllati con la matrice di controllo degli accessi della tua organizzazione.
Tuttavia, per qualsiasi modifica necessaria a questi file, sono necessari passaggi aggiuntivi
essere preso. 23
Nel materiale che segue, imparerai come impostare requisiti di sicurezza speciali tramite
PAM sul tuo sistema Linux, come le limitazioni del tempo di accesso all'account. Molte delle speciali
requisiti richiedono di apportare una modifica ai file di configurazione degli eventi di sistema PAM, come
come /etc/pam.d/system-auth-ac.

Il problema con le modifiche ad alcuni di questi file di configurazione degli eventi di sistema PAM è
che l'utility authconfig possa riscrivere questi file e rimuovere eventuali modifiche apportate localmente.
Fortunatamente, ogni file di configurazione PAM che corre questo rischio lo ha documentato in un file
riga di commento all'interno. Usando grep, puoi trovare rapidamente quali file di configurazione PAM hanno
questo potenziale problema.

# grep "authconfig" /etc/pam.d/*


/etc/pam.d/fingerprint-auth:# Le modifiche dell'utente verranno eliminate
la prossima volta che viene eseguito authconfig.
/etc/pam.d/fingerprint-auth-ac:# Le modifiche dell'utente verranno eliminate
la prossima volta che viene eseguito authconfig.
...
/etc/pam.d/system-auth:# Le modifiche dell'utente verranno eliminate
la prossima volta che viene eseguito authconfig.
/etc/pam.d/system-auth-ac:# Le modifiche dell'utente verranno eliminate
la prossima volta che viene eseguito authconfig.
...

655

Pagina 696

Parte V: apprendimento delle tecniche di sicurezza di Linux

Questi file di configurazione degli eventi di sistema PAM utilizzano collegamenti simbolici (vedere Capitolo 4, "Spostamento
intorno al filesystem "). Ad esempio, puoi vedere che il file system-auth è effettivamente
un collegamento simbolico che punta al file system-auth-ac. Il primo carattere del file
la sicurezza è una l. Ciò indica che il file è collegato. Il simbolo -> mostra che il file è
simbolicamente collegati.

# ls -l system-auth
l rwxrwxrwx. 1 radice radice 14 febbraio 28 01:36
system-auth -> system-auth-ac

Non tutte le distribuzioni Linux, come Ubuntu, hanno l'utility authconfig, che sovrascrive i file di configurazione PAM.
Per verificare se la tua distribuzione ha l'utilità authconfig, digita which authconfig nella riga di comando.
Se non viene restituito nulla, la tua distribuzione Linux non dispone di tale utilità.
Su alcune distribuzioni Linux, l'utilità pam-auth-config è simile all'utilità authconfig nella sua capacità di
sovrascrivere i file di configurazione. Questo può accadere se il comando pam-auth-config --force viene immesso nel file
riga di comando. Leggi la pagina man pam-auth-config per saperne di più su questa utility se è installata su
il tuo sistema.

L'utilità authconfig non utilizza i collegamenti simbolici, né li modifica. Quindi,


è possibile creare un nuovo file di configurazione degli eventi del sistema PAM locale e puntare il collegamento simbolico
ad esso. Ciò consente al sistema di implementare le modifiche di sicurezza necessarie e
consente di evitare che i file di configurazione vengano sovrascritti dall'utilità authconfig
ity. I passaggi di base sono i seguenti, incluso un esempio di esecuzione di questi passaggi per
file system-auth-ac:
1. Copiare il file di configurazione dell'evento di sistema PAM corrente in un nuovo file, aggiungendone uno nuovo
nome del file che termina, ad esempio "locale".
# cp system-auth-ac system-auth-local

2. Apportare le modifiche necessarie al nuovo file di configurazione.


# vi system-auth-local

3. Rimuovere il vecchio file di collegamento simbolico.


# ls -l system-auth
lrwxrwxrwx. 1 radice radice 14 febbraio 28 01:36
system-auth -> system-auth-ac
# rm -i system-auth
rm: rimuovere il collegamento simbolico "system-auth"? y

4. Creare un nuovo collegamento simbolico che punta al nuovo file di configurazione.


# ln -s system-auth-local system-auth
# ls -l system-auth
lrwxrwxrwx. 1 radice radice 17 febbraio 28 01:37
system-auth -> system-auth-local

656

Pagina 697

Capitolo 23: Comprensione della sicurezza Linux avanzata

Dopo che queste modifiche sono state apportate, è possibile apportare tutte le modifiche necessarie al PAM "locale"
file di configurazione degli eventi di sistema senza doversi preoccupare della sovrascrittura dell'utilità authconfig
i file.

Implementazione dei limiti delle risorse con PAM


La gestione delle risorse non è solo un'attività amministrativa di sistema. È anche una sicurezza
compito amministrativo. L'impostazione dei limiti delle risorse consente di evitare molti problemi negativi
sul tuo sistema Linux. Problemi come le fork bomb possono essere evitati limitando l'estensione
numero di processi che un singolo utente può creare. Una bomba forcella si verifica quando un processo spawn
un processo dopo l'altro in modo ricorsivo fino a quando le risorse di sistema non vengono consumate.
Le fork bomb possono essere dannose o semplicemente accidentali, come quelle create da un programma scadente
sviluppo del codice.

Il modulo PAM pam-limits utilizza uno speciale file di configurazione per impostare questi limiti di risorse:
/etc/security/limits.conf. Per impostazione predefinita, questo file non ha limiti di risorse impostati al suo interno.
Pertanto, è necessario rivedere il file e impostare i limiti delle risorse in modo che corrispondano a quelli della propria organizzazione
esigenze di sicurezza.

I file di configurazione di PAM si trovano nella directory /etc/pam.d e nella directory / etc / security.

Il seguente frammento mostra il file /etc/security/limits.conf. Il file va bene 23


documentato. Dovresti leggere il contenuto di quel file per un formato completo
descrizioni ed esempi di limiti impostabili.

$ cat /etc/security/limits.conf
# /etc/security/limits.conf
#Ogni riga descrive un limite per un utente nella forma:
# <dominio> <tipo> <item> <valore>
#Dove:
...
#* nucleo morbido 0
#* hard rss 10000
#@alunno hard nproc 20
#@facoltà soft nproc 20
#@facoltà hard nproc 50
#ftp hard nproc 0
#@alunno - maxlogins 4
# Fine del file

657
Pagina 698

Parte V: apprendimento delle tecniche di sicurezza di Linux

Il dominio e il tipo degli elementi di formato richiedono una spiegazione ulteriore rispetto a quanto documentato
nel file di configurazione:

■ dominio: il limite si applica all'utente o al gruppo elencato. Se il dominio è "*", esso


si applica a tutti gli utenti.
■ tipo: non è possibile superare un limite rigido. Un limite morbido può essere superato, ma solo
temporaneamente.

Guarda l'esempio di impostazione del file limits.conf che segue. La facoltà del gruppo è elencata,
ma nota nproc. Il limite nproc imposta il numero massimo di processi che un utente può avviare.
Questa impostazione è ciò che impedisce una bomba a forcella. Notare che la selezione del tipo è difficile; quindi, il
il limite di 50 processi non può essere superato. Naturalmente, questo limite non viene applicato perché il
la riga è commentata con un simbolo #.

#@facoltà hard nproc 50

Le impostazioni dei limiti vengono impostate per accesso e durano solo per la durata della sessione di accesso. UN
un utente malintenzionato potrebbe accedere più volte per creare una fork bomb. Quindi, impostando il massimo
anche il numero di accessi per questi account utente è una buona idea.

Potrebbe essere necessario limitare il numero massimo di accessi per utente. Per
Ad esempio, johndoe deve accedere al sistema Linux solo una volta. Per impedire ad altri di
utilizzando l'account di johndoe, imposta i maxlogin del suo account su 1.

johndoe hard maxlogins 1

Il passaggio finale per limitare questa risorsa è garantire che il modulo PAM utilizzi i limiti.
conf è incluso in uno dei file di configurazione degli eventi di sistema PAM. Il modulo PAM che utilizza
limits.conf è pam_limits. Nell'elenco parziale che segue, grep viene utilizzato per verificare
che il modulo PAM viene utilizzato all'interno dei file di configurazione degli eventi di sistema.

# grep "pam_limits" /etc/pam.d/*


...
system-auth: sessione richiesto pam_limits.so
system-auth-ac: sessione richiesta pam_limits.so
system-auth-local: sessione richiesta pam_limits.so

I limiti di tempo per l'accesso ai servizi e agli account non sono gestiti dal PAM
/ etc / security / limits.conf file di configurazione. Invece, sono gestiti da
file time.conf.

Implementazione di restrizioni temporali con PAM


PAM può far funzionare l'intero sistema Linux in "tempo PAM". Restrizioni temporali come
accedere a particolari applicazioni in determinati momenti della giornata o consentire solo i login
durante i giorni della settimana specificati sono tutti gestiti da PAM.

658

Pagina 699

Capitolo 23: Comprensione della sicurezza Linux avanzata

Il file di configurazione PAM che gestisce queste restrizioni si trova in / etc /


directory di sicurezza. Il codice seguente mostra il ben documentato / etc / security /
time.conf File di configurazione PAM.

$ cat /etc/security/time.conf
# questo è un file di configurazione di esempio per il modulo pam_time
...
# la sintassi delle righe è la seguente:
#
# servizi; ttys; utenti; tempi
...

Ti consiglio di leggere il contenuto del file time.conf. Nota che il formato


per ogni voce valida segue questa sintassi: services; ttys; users; times . I campi sono separati da
punto e virgola. I valori di campo validi sono documentati nel file di configurazione time.conf.

Sebbene time.conf sia ben documentato, un esempio è sempre utile. Ad esempio, tu


hanno deciso che agli utenti regolari dovrebbe essere consentito di accedere ai terminali solo nei giorni feriali
(Da lunedì a venerdì). Possono accedere dalle 7:00 alle 19:00 in questi giorni feriali. Il
il seguente elenco descrive quali elementi devono essere impostati:

■ servizi: accesso
■ ttys - * ( Indica che tutti i terminali devono essere inclusi)
■ utenti: tutti tranne root (! Root) 23
■ orari: consentito nei giorni feriali (Wd) dalle 7:00 (07:00) alle 19:00 (1900)

La voce in time.conf sarebbe simile alla seguente:

accesso; *; ! root; Wd0700-1900

Il passaggio finale nell'implementazione di questa restrizione temporale di esempio è garantire che il PAM
Il modulo che utilizza time.conf è incluso in uno dei file di configurazione degli eventi di sistema PAM.
Il modulo PAM che utilizza time.conf è pam_time. Nell'elenco parziale che segue,
grep mostra il modulo PAM; pam_time non viene utilizzato all'interno di nessuno degli eventi di sistema
file di configurazione.

# grep "pam_time" /etc/pam.d/*


config-util: auth pam_timestamp.so sufficiente
config-util: sessione pam_timestamp.so opzionale
selinux-polgengui: auth pam_timestamp.so sufficiente
selinux-polgengui: sessione opzionale pam_timestamp.so
system-config-selinux: auth sufficiente pam_timestamp.so
system-config-selinux: sessione opzionale pam_timestamp.so

Poiché pam_time non è elencato, è necessario modificare il file /etc/pam.d/system-auth in


ordine per PAM di far rispettare le limitazioni di tempo. Il file system-auth di configurazione di PAM
viene utilizzato da PAM all'accesso al sistema e durante le modifiche della password. Questo file di configurazione
controlla molti elementi, come i limiti di tempo.

659

Pagina 700

Parte V: apprendimento delle tecniche di sicurezza di Linux

Aggiungere quanto segue nella parte superiore della sezione "account" del file di configurazione. Adesso
il modulo pam_time controlla le restrizioni di accesso impostate in / etc / security /
file time.conf.

account richiesto pam_time.so

Su Ubuntu, è necessario modificare il file /etc/pam.d/common-auth invece di system-auth


file di configurazione.

Ricorda che system-auth è un file collegato simbolicamente. Se modifichi questo file, tu


è necessario eseguire passaggi aggiuntivi per preservare le modifiche dall'utilità authconfig. Revisione
la sezione "Gestione dei file di configurazione degli eventi di sistema PAM" precedentemente in questo capitolo.

È possibile utilizzare moduli PAM e file di configurazione aggiuntivi per impostare ancora più restrizioni
sugli argomenti. Un importante modulo di sicurezza è pam_cracklib.

Applicazione di buone password con PAM


Quando una password viene modificata, il modulo PAM pam_cracklib viene coinvolto nel processo.
Il modulo richiede all'utente una password e verifica la sua robustezza rispetto a un sistema
dizionario e una serie di regole per identificare le scelte sbagliate.

Il modulo pam_cracklib è installato di default su Fedora e RHEL. Per i sistemi Ubuntu Linux, non lo è
installato per impostazione predefinita. Pertanto, per accedere al modulo pam_cracklib su Ubuntu, emetti il ​comando sudo
apt-get install libpam-cracklib.

Utilizzando pam_cracklib, puoi controllare una password appena scelta per quanto segue:
■È una parola del dizionario?
■È un palindromo?
■È la vecchia password con il caso cambiato?
■È troppo simile alla vecchia password?

■È troppo corto?
■È una versione ruotata della vecchia password?
■ Utilizza gli stessi caratteri consecutivi?
■ Contiene il nome utente in qualche forma?

660

Pagina 701

Capitolo 23: Comprensione della sicurezza Linux avanzata

Puoi cambiare le regole che pam_cracklib usa per controllare le nuove password facendo
modifiche al file /etc/pam.d/system-auth. Potresti pensare che i cambiamenti
dovrebbe essere effettuato nel file di configurazione passwd compatibile con PAM. Tuttavia, il file /etc/pam.d/
passwd include il file system-auth nel suo stack.

# cat /etc/pam.d/passwd
#% PAM-1.0
auth include system-auth
account include system-auth
password substack system-auth
-password opzionale pam_gnome_keyring.so use_authtok
password substack postlogin

Su Ubuntu, è necessario modificare il file /etc/pam.d/common-password, invece del file system-auth con
file di figurazione.

Le impostazioni correnti del file system-auth sono mostrate qui. Attualmente, una voce chiama
il modulo PAM pam_cracklib.

# cat /etc/pam.d/system-auth
#% PAM-1.0
# Questo file viene generato automaticamente.
# Le modifiche dell'utente verranno eliminate la prossima volta che viene eseguito authconfig. 23
auth richiesto pam_env.so
auth pam_fprintd.so sufficiente
auth sufficiente pam_unix.so nullok try_first_pass
auth requisito pam_succeed_if.so uid> = 1000 quiet
auth richiesto pam_deny.so

account richiesto pam_unix.so


account sufficiente pam_localuser.so
account sufficiente pam_succeed_if.so uid <1000 quiet
account richiesto pam_permit.so

richiesta password pam_cracklib.so try_first_pass retry = 3


...

La voce pam_cracklib nell'elenco precedente utilizza la parola chiave retry. Il seguente


le parole chiave sono disponibili per cracklib:

■ riprova =N
■ Predefinito =1
■ Chiedi all'utente al massimo N volte prima di tornare con un errore.

661
Pagina 702

Parte V: apprendimento delle tecniche di sicurezza di Linux

■ difok =N
■ Valore predefinito = 5

■ Il numero di caratteri nella nuova password che non devono essere presenti nel file
vecchia password.
■ Eccezione 1: se metà dei caratteri nella nuova password sono diversi, allora
la nuova password viene accettata.
■ Eccezione 2: vedere difignore.
■ difignore =N
■ Valore predefinito = 23
■ Il numero di caratteri che la password ha prima che l'impostazione di difok venga ignorata.

■ minlen =N
■ Valore predefinito = 9
■ La dimensione minima accettabile per la nuova password.
■ Vedere dcredit, ucredit, lcredit e ocredit per conoscere l'effetto delle loro impostazioni
minlen.
■ dcredit =N
■ Valore predefinito = 1
■ If (N> = 0): il credito massimo per l'inserimento di cifre nella nuova password. Se tu
avere meno di o N cifre, ogni cifra conta +1 per soddisfare la corrente
valore minimo.
■ If (N <0): il numero minimo di cifre che devono essere soddisfatte per una nuova password.
■ ucredit =N

■ Predefinito =1
■ If (N> = 0): il credito massimo per la presenza di lettere maiuscole nel nuovo
parola d'ordine. Se hai meno di o N lettere maiuscole, ogni lettera conta +1
verso il raggiungimento del valore minimo corrente.
■ If (N <0): il numero minimo di lettere maiuscole che devono essere soddisfatte per un nuovo
parola d'ordine.
■ lcredit =N
■ Predefinito =1
■ If (N> = 0): il credito massimo per avere lettere minuscole nel nuovo
parola d'ordine. Se hai meno di o N lettere minuscole, ogni lettera conta +1
verso il raggiungimento del valore minimo corrente.
■ If (N <0): il numero minimo di lettere minuscole che devono essere soddisfatte per a
nuova password.

662

Pagina 703

Capitolo 23: Comprensione della sicurezza Linux avanzata

■ ocredit =N

■ Predefinito =1
■ If (N> = 0): il credito massimo per avere altri caratteri nel nuovo pass-
parola. Se hai meno di o N altri personaggi, ogni personaggio conta +1
verso il raggiungimento del valore minimo corrente.
■ If (N <0): il numero minimo di altri caratteri che devono essere soddisfatti per un nuovo
parola d'ordine.
■ minclass =N
■ Valore predefinito = 0

■ Per la nuova password è richiesta N su quattro classi di caratteri. Le quattro classi


sono cifre, lettere maiuscole, lettere minuscole e altri caratteri.
■ maxrepeat =N
■ Valore predefinito = 0

■ Rifiuta password che contengono più di N caratteri consecutivi uguali.


■ rifiuto_username

Controlla se il nome dell'utente in forma semplice o invertita è contenuto nel file


nuova password. Se viene trovata, la nuova password viene rifiutata.
■ try_first_pass

Prova a ottenere la password da un precedente modulo PAM. Se non funziona, chiedi 23


l'utente per la password.
■ use_authtok

Questo argomento viene utilizzato per forzare il modulo a non richiedere all'utente un nuovo passaggio
parola. La nuova password viene invece fornita dalla password precedentemente impilata
modulo.
■ dictpath = / percorso
Percorso ai dizionari cracklib.

Ad esempio, se la tua organizzazione richiede che le password siano lunghe dieci caratteri e loro
deve contenere due cifre, dovresti aggiungere una riga simile alla seguente a /etc/pam.d/
file system-auth:

password richiesta pam_cracklib.so minlen = 10 dcredit = -2

Le parole chiave utilizzate in questo esempio con pam_cracklib sono:

■ minlen = 10: la nuova password deve contenere almeno dieci caratteri.


■ dcredit = -2: la nuova password deve contenere due numeri.

663

Pagina 704

Parte V: apprendimento delle tecniche di sicurezza di Linux

Le restrizioni di pam_cracklib non si applicano all'utente root.

Incoraggiare l'uso di sudo con PAM


Per consentire il monitoraggio dell'utilizzo dell'account di root da parte degli individui ed evitare una situazione di ripudio (vedere
Capitolo 22, "Comprensione della sicurezza di base di Linux"), dovresti limitare l'uso di su
comando e incoraggiare l'uso di sudo. Se la tua organizzazione ha una politica del genere, puoi farlo
realizzare questo con PAM in pochi passaggi.

Il comando su è compatibile con PAM, il che semplifica enormemente le cose. Utilizza il modulo PAM
pam_wheel per verificare la presenza di utenti nel gruppo wheel. Il file di configurazione /etc/pam.d/su
è mostrato qui:

# cat /etc/pam.d/su
#% PAM-1.0
auth pam_rootok.so sufficiente
# Rimuovere il commento dalla riga seguente per fidarsi implicitamente degli utenti
# nel gruppo "ruota".
#auth sufficiente pam_wheel.so fidati di use_uid
# Rimuovere il commento dalla riga seguente per richiedere che un utente lo sia
# nel gruppo "ruota".
#auth richiesto pam_wheel.so use_uid
auth include system-auth
auth includi postlogin
account sufficiente pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
sessione include system-auth
sessione include postlogin
sessione opzionale pam_xauth.so

Primo, per limitare l'uso di su, se stai usando il gruppo wheel come tuo amministratore
gruppo, è necessario riassegnare il proprio gruppo amministrativo a un nuovo gruppo (vedere il Capitolo 11,
"Gestione degli account utente"). Se non stai usando il gruppo ruota, assicurati di non farlo
assegna chiunque in futuro a questo gruppo.
Successivamente, è necessario modificare il file di configurazione /etc/pam.d/su. Rimuovi il contrassegno di commento,
#, dalla riga seguente:

#auth richiesto pam_wheel.so use_uid

Con queste modifiche, PAM disabilita l'uso del comando su. Utenti amministrativi
ora deve usare sudo, che il sistema tiene traccia e che fornisce un non ripudio desiderato
ambiente (vedere Capitolo 22, "Comprensione della sicurezza Linux di base").

664

Pagina 705

Capitolo 23: Comprensione della sicurezza Linux avanzata

Blocco degli account con PAM


I requisiti di sicurezza specifici della tua organizzazione potrebbero richiedere il blocco di un account utente dopo
un certo numero di tentativi di accesso falliti. Lo standard tipico è bloccare un account dopo
tre tentativi falliti. Questo serve per contrastare un attacco di password a forza bruta contro un account.

Il modulo PAM utilizzato per gestire i tentativi di accesso è pam_tally2. Il file di configurazione PAM
da modificare è /etc/pam.d/system-auth.

Le vecchie distribuzioni Linux possono utilizzare il modulo PAM pam_tally invece di pam_tally2.

Di nuovo, dovresti apportare queste modifiche al tuo file locale-autenticazione di sistema locale invece che
system-auth-ac perché authconfig sovrascrive le modifiche la volta successiva
è eseguito. Le righe tally2 che devi aggiungere a system-auth-local sono evidenziate nel file
file di esempio che segue. Il loro posizionamento in questo file è estremamente importante.

# cat system-auth-local
#% PAM-1.0
# File di autenticazione del sistema locale.
# Le modifiche non verranno eliminate da authconfig
auth richiesto pam_tally2.so deny = 3 quiet
auth richiesto pam_env.so
auth pam_fprintd.so sufficiente 23
auth sufficiente pam_unix.so nullok try_first_pass
auth requisito pam_succeed_if.so uid> = 1000 quiet
auth richiesto pam_deny.so

account richiesto pam_tally2.so


account richiesto pam_unix.so
account sufficiente pam_localuser.so
account sufficiente pam_succeed_if.so uid <1000 quiet
account richiesto pam_permit.so
...

Crea una copia di backup di system-auth-local e verifica le modifiche in un ambiente di test prima di apportare
modifiche al sistema Linux di produzione. Una modifica errata potrebbe bloccare tutti fuori dal tuo sistema, incluso
l'utente root.

Notare che nella prima riga del contesto di autenticazione che coinvolge pam_tally.so nel codice precedente
sono state aggiunte due opzioni, deny = 3 e quiet. L'opzione deny = 3 consente solo un utente
tre tentativi di accesso falliti prima che l'account venga bloccato.

665

Pagina 706
Parte V: apprendimento delle tecniche di sicurezza di Linux

L'opzione silenziosa non dice all'utente che l'account è bloccato se viene bloccato. It
continua a fornire messaggi di "password errata" all'utente. Mantenere un utente all'oscuro di cosa
è successo a un account è utile se sei stato attaccato in modo intenzionale. Il malizioso
l'attaccante non sa che l'account è stato bloccato e pensa di essere appena entrato
un'altra password errata. Questo può darti tempo per rintracciare ciò che sta accadendo.

Tuttavia, l'utilizzo dell'opzione silenziosa può causare molti problemi agli utenti. Per esempio,
un utente potrebbe non rendersi conto di aver inserito la password sbagliata abbastanza volte per bloccarsi
l'account. Ciò potrebbe causare un ritardo nella ricerca di aiuto. Puoi rimuovere l'opzione silenziosa
dall'impostazione del file di configurazione in modo che quando un utente ha avuto troppi tentativi falliti di farlo
effettua l'accesso, riceve un messaggio del tipo "Account bloccato a causa di 4 accessi non riusciti".

Su Ubuntu, invece del file di configurazione dell'autenticazione del sistema, è necessario aggiungere le informazioni sul contesto di autenticazione al file
/etc/pam.d/common-auth e aggiungere le informazioni sul contesto dell'account al file /etc/pam.d/ common-
file dell'account.

Il modulo pam_tally2 include anche un'interfaccia a riga di comando che puoi usare per
monitorare i tentativi di accesso non riusciti. Se il modulo pam_tally2 è incluso in uno dei tuoi file PAM
file di configurazione degli eventi di sistema, mantiene un conteggio del numero di tentativi di accesso falliti
si è verificato sul tuo sistema. Per vedere questi errori, inserisci il comando pam_tally2, come
mostrato nel codice seguente:

# pam_tally2
Accesso Errori Ultimo errore da
Samantha 2 03/10/15 06:24:01 punti / 1

Il nome utente, il numero di errori e l'ultimo tentativo sono elencati insieme al terminale
dove si è verificato l'ultimo guasto. Puoi anche usare il comando pam_tally2 per sbloccare un file
account utente dopo che è stato bloccato dal modulo PAM pam_tally2.

Quando un account è bloccato da PAM, non è elencato come bloccato nel file / etc / shadow e
non è possibile sbloccarlo utilizzando il comando usermod -U username . Per sbloccarlo, è necessario
per utilizzare il comando pam_tally2.

Nell'esempio che segue, l'account utente Samantha ha avuto troppi accessi non riusciti
tentativi. Tuttavia, l'account non è elencato come bloccato nel file / etc / shadow, mostrato da
il comando passwd. Il blocco dell'account utilizzando il comando usermod -L causa l'estensione
account da bloccare tramite il file / etc / shadow, non tramite PAM.

# pam_tally2
Accesso Errori Ultimo errore da
Samantha 5 03/10/16 06:32:24 punti / 1

666

Pagina 707

Capitolo 23: Comprensione della sicurezza Linux avanzata

# passwd -S Samantha
Samantha PS 2016-03-09 0 99999 7-1 (Password impostata, SHA512 crypt.)
# usermod -L Samantha
# passwd -S Samantha
Samantha LK 2016-03-09 0 99999 7-1 ( Password bloccata .)
# usermod -U Samantha
# passwd -S Samantha
Samantha PS 2016-03-09 0 99999 7-1 (Password impostata, SHA512 crypt.)

Nel codice che segue, viene emesso il comando pam_tally2 -r -u Samantha per sbloccare
l'account utente Samantha. Si noti che il comando pam_tally2 elenca nuovamente il numero
di tentativi di accesso non riusciti in quanto rimuove il "blocco". Quando viene emesso il comando pam_tally2
ancora una volta, i record dei tentativi falliti dell'utente Samantha sono stati rimossi perché il blocco era
rimosso.

# pam_tally2 -r -u Samantha
Accesso Errori Ultimo errore da
Samantha 5 03/10/15 06:34:09 punti / 1
# pam_tally2
Puoi usare molte altre opzioni con pam_tally2. Per esplorare ulteriormente questo modulo PAM,
emettere il comando man pam_tally2 dalla riga di comando.

Ottenere maggiori informazioni su PAM


23
PAM è un altro strumento di sicurezza ricco e versatile disponibile sul sistema Linux. Nel
nelle pagine man del tuo sistema Linux, puoi leggere informazioni sulla gestione della configurazione di PAM
file e sui moduli nella directory / lib / security.

■ Per ottenere ulteriori informazioni sui file di configurazione di PAM, utilizzare il comando man
pam.conf.
■ Puoi vedere tutti i moduli PAM disponibili sul tuo sistema digitando ls / lib /
security / pam * .so dalla riga di comando. Per ottenere maggiori informazioni su ogni PAM
Modulo, digitare man pam_ module_name . Assicurati di lasciare fuori l'estensione del file
" So " per pam_module_name. Ad esempio, digita man pam_lastlog per imparare
di più sul modulo pam_lastlog.so.

Diversi siti Web possono fornire informazioni aggiuntive su PAM:

■ Il sito web ufficiale di Linux-PAM : http://linux-pam.org


■ Guida dell'amministratore di sistema Linux-PAM : http://linux-pam.org/ Linux-
PAM-html / Linux-PAM_SAG.html
■ Riferimento modulo PAM : http://linux-pam.org/Linux-PAM-html/sag- module-
reference.html

667

Pagina 708

Parte V: apprendimento delle tecniche di sicurezza di Linux

Sommario
Gli strumenti di crittografia offrono modi per proteggere e verificare la validità dei dati utilizzati
sul tuo sistema Linux. La struttura PAM fornisce un mezzo per creare criteri per proteggere il file
strumenti utilizzati per autenticare gli utenti sul sistema.

Sia gli strumenti di crittografia che il PAM devono essere gestiti con cura man mano che si impara
Linux. Assicurati di testare tutte le modifiche apportate su un sistema Linux di prova o virtualizzato
Sistema Linux prima di implementarli su una macchina di produzione.

Il prossimo capitolo tratta SELinux. Mentre crittografia e PAM sono strumenti su cui puoi usare
il tuo sistema Linux, SELinux è un intero livello di miglioramento della sicurezza.

Esercizi
Usa questi esercizi per testare la tua conoscenza dell'uso di strumenti di crittografia e PAM. Questi
task presuppongono che tu stia eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcuni
le attività funzionano anche su altri sistemi Linux). Se sei bloccato, le soluzioni alle attività lo sono
mostrato nell'Appendice B (sebbene in Linux, ci siano spesso diversi modi per completare un'attività).

1. Crittografa un file utilizzando l'utilità gpg2 e una chiave simmetrica.

2. Genera un keyring pubblico utilizzando l'utility gpg2.

3. Elenca il keyring che hai generato.

4. Crittografa un file e aggiungi la tua firma digitale utilizzando l'utility gpg2.

5. Vai alla home page di Linux Mint su www.linuxmint.com. Dal download


pagina, seleziona una delle distribuzioni Linux Mint da scaricare. Quando il download è
completare, utilizzare l'utilità di digest del messaggio appropriata per assicurarsi che il file
il file non è stato danneggiato.

6. Utilizzando il comando which su, determinare il nome file completo del comando su. Il prossimo,
determinare se il comando su sul proprio sistema Linux è compatibile con PAM.

7. Il comando su dispone di un file di configurazione PAM? In tal caso, visualizza la configurazione


zione sullo schermo ed elenca i contesti PAM che utilizza.

8. Elenca i vari moduli PAM sul tuo sistema sullo schermo.

9. Trova il file di configurazione "altro" di PAM sul tuo sistema. Esiste? Lo fa


applicare la negazione implicita?
10. Trova il file di configurazione dei limiti PAM. Ha un'impostazione per mantenere una bomba a forcella
si verificano sul tuo sistema?

668

Pagina 709

CAPITOLO

24
Migliorare la sicurezza di Linux con
SELinux
IN QUESTO CAPITOLO
Informazioni sui vantaggi di SELinux

Imparare come funziona SELinux

Configurazione di SELinux

Risolvere problemi con SELinux

Ottenere ulteriori informazioni su SELinux

S insieme ad altre organizzazioni di ricerca sulla sicurezza, come Secure Computing Corporation
(SCC). SELinux è stato rilasciato alla comunità open source nel 2000 ed è diventato popolare quando
ecurity Enhanced Linux (SELinux) è stato sviluppato dalla National Security Agency (NSA)
Red Hat ha incluso SELinux nelle sue distribuzioni Linux. Ora, SELinux è utilizzato da molte organizzazioni
ed è ampiamente disponibile.

Comprensione dei vantaggi di SELinux


SELinux è un modulo di miglioramento della sicurezza distribuito su Linux. Fornisce ulteriore sicurezza
misure, è incluso per impostazione predefinita ed è impostato per essere in modalità Enforcing in RHEL e Fedora.

SELinux fornisce una maggiore sicurezza sul sistema Linux tramite RBAC (Role Based Access Controls) su
soggetti e oggetti (ovvero processi e risorse). La sicurezza Linux "tradizionale" utilizza Discretionary
Controlli di accesso (DAC).

SELinux non è un sostituto per DAC. Invece, è un ulteriore livello di sicurezza.

■ Le regole DAC vengono ancora utilizzate quando si utilizza SELinux.


■ Le regole DAC vengono controllate per prime e, se l'accesso è consentito, vengono verificate le policy SELinux.
■ Se le regole DAC negano l'accesso, le policy SELinux non vengono riviste.

669

Pagina 710

Parte V: apprendimento delle tecniche di sicurezza di Linux


Se un utente tenta di eseguire un file per il quale non ha accesso in esecuzione (rw-), il "tradi-
I controlli DAC Linux "tional" negano l'accesso. Pertanto, le politiche di SELinux non vengono nemmeno controllate.

SELinux è il miglioramento della sicurezza predefinito delle distribuzioni Red Hat, mentre AppArmor è il
miglioramento della qualità per Ubuntu. Puoi ancora installare SELinux su Ubuntu usando il comando sudo apt-get
installa selinux e poi riavvia. Se vuoi saperne di più su AppArmor, vai su https: // help.
ubuntu.com/community/AppArmor.

Anche se i controlli di sicurezza Linux "tradizionali" funzionano ancora, ci sono molti vantaggi
utilizzando SELinux. Questi sono alcuni dei vantaggi di SELinux:

■ Implementa il modello di controllo degli accessi RBAC. Questo è considerato il più forte
modello di controllo accessi.
■ Utilizza l'accesso con privilegi minimi per i soggetti (ad esempio, utenti e processi).
Il termine privilegio minimo significa che a ogni soggetto viene assegnato un insieme limitato di privilegi
che sono sufficienti solo per consentire al soggetto di essere funzionale ai suoi compiti. Con meno
privilegio implementato, un utente o un processo è limitato al rischio accidentale (o
posa) danni agli oggetti che possono causare.
■ Consente il sandboxing dei processi. Il termine process sandboxing significa che ogni pro
cess viene eseguito nella propria area (sandbox). Non può accedere ad altri processi o ai relativi file
a meno che non vengano concesse autorizzazioni speciali. Queste aree in cui vengono eseguiti i processi vengono chiamate
"Domini".
■ Consente un test della sua funzionalità prima dell'implementazione. SELinux ha un file
Modalità permissiva, che ti permette di vedere l'effetto dell'applicazione di SELinux sul tuo
sistema. In modalità permissiva, SELinux registra ancora ciò che considera violazioni della sicurezza
(chiamati dinieghi AVC), ma non li impedisce.

Un altro modo per esaminare i vantaggi di SELinux è esaminare cosa può accadere se SELinux non lo è
in esecuzione sul tuo sistema Linux. Ad esempio, il demone del server web (httpd) è in ascolto
su una porta perché succeda qualcosa. Viene visualizzata una semplice richiesta da un browser web
una home page. Eseguendo la sua normale routine, il demone httpd sente la richiesta e
viene applicata solo la sicurezza Linux "tradizionale". Non essendo vincolato da SELinux, httpd può farlo
queste cose:

■ Accedere a qualsiasi file o directory, in base alle autorizzazioni di lettura / scrittura / esecuzione per
proprietario e gruppo citato.
■ Eseguire attività potenzialmente non sicure, come consentire il caricamento o la modifica di un file
limiti di sistema.
■ Ascolta su qualsiasi porta a piacere per le richieste in arrivo.

Su un sistema vincolato da SELinux, il demone httpd è controllato molto più strettamente.


Utilizzando l'esempio precedente, httpd può ascoltare solo sulla porta SELinux gli consente di ascoltare

670

Pagina 711

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

su. SELinux impedisce a httpd di accedere a qualsiasi file che non dispone della protezione adeguata
contesto impostato e nega attività non sicure che non sono esplicitamente abilitate in SELinux. Nel
essence, SELinux limita fortemente il codice dannoso e l'attività sul tuo sistema Linux.

Capire come funziona SELinux


SELinux potrebbe essere paragonato a una guardia alla porta: in questo confronto, il soggetto (l'utente)
vuole accedere all'oggetto (il file) all'interno della stanza. Per accedere a questo oggetto:

1. Il soggetto deve presentare un badge identificativo alla guardia.

2. La guardia esamina il badge identificativo e le regole di accesso contenute in un grande manuale.

■ Se le regole di accesso consentono questo particolare badge ID all'interno della porta, il soggetto
può entrare nella stanza per accedere all'oggetto.
■ Se le regole di accesso non consentono a questo particolare badge ID di accedere all'oggetto,
poi la guardia rifiuta l'ingresso.
SELinux fornisce una combinazione di RBAC (Role Based Access Control) e di entrambi i tipi
Enforcement (TE) o Multi-Level Security (MLS) . In Controllo degli accessi basato sui ruoli, accedere a un file
l'oggetto si basa sul ruolo assegnato a un soggetto nell'organizzazione. Pertanto, non si basa su
il nome utente o l'ID del processo del soggetto. A ogni ruolo vengono concessi diritti di accesso.
Comprensione dell'applicazione del tipo
Type Enforcement (TE) è necessario per implementare il modello RBAC. Type Enforcement Protegge
un sistema attraverso questi metodi:

■ Etichettatura degli oggetti come determinati tipi di protezione


■ Assegnazione di soggetti a domini e ruoli particolari

■ Fornire regole che consentono a determinati domini e ruoli di accedere a determinati tipi di oggetti
24
L'esempio che segue utilizza il comando ls -l per mostrare i controlli DAC sul file
la mia roba. Il file ha il proprietario e il gruppo elencati, nonché le sue assegnazioni di lettura, scrittura,
ed eseguire. Se è necessaria una revisione dei permessi dei file, vedere il Capitolo 4, "Spostamento in
Filesystem. "

$ ls -l my_stuff
-rw-rw-r--. 1 johndoe johndoe 0 feb 12 06:57 my_stuff

L'esempio che segue include ls -Z e lo stesso file, my_stuff, ma invece di solo


i controlli DAC, l'opzione -Z mostra anche i controlli RBAC di sicurezza SELinux.

$ ls -Z my_stuff
-rw-rw-r--. johndoe johndoe
unconfined_u: object_r: user_home_t: s0 my_stuff

671

Pagina 712

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'esempio ls -Z mostra quattro elementi associati al file specifici per


SELinux:

■ Un utente (unconfined_u)

■ Un ruolo (object_r)
■ Un tipo (user_home_t)
■ Un livello (s0)

Questi quattro elementi RBAC (utente, ruolo, tipo e livello) vengono utilizzati nel controllo di accesso di SELinux
per determinare i livelli di accesso appropriati. Insieme, gli elementi sono chiamati sicurezza SELinux
contesto . Un contesto di sicurezza (badge ID) è talvolta chiamato "etichetta di sicurezza".

Queste assegnazioni del contesto di sicurezza vengono assegnate ai soggetti (processi e utenti). Ogni secu-
Il contesto rity ha un nome specifico. Il nome dato dipende da quale oggetto o soggetto esso
è stato assegnato: i file hanno un contesto di file, gli utenti hanno un contesto utente e i processi hanno un'estensione
contesto del processo, chiamato anche "dominio".

Le regole che consentono l'accesso sono chiamate "regole di autorizzazione" o "regole dei criteri". Una regola politica è il
processo che SELinux segue per concedere o negare l'accesso a un particolare tipo di sicurezza del sistema.
Tornando al confronto di SELinux con la guardia, SELinux funge da guardia che
deve vedere il contesto di sicurezza del soggetto (badge ID) e rivedere le regole dei criteri (regole di accesso
manuale) prima di consentire o negare l'accesso a un oggetto. Pertanto, l'applicazione del tipo garantisce
che solo alcuni "tipi" di soggetti possono accedere a determinati "tipi" di oggetti.

Comprensione della sicurezza multilivello


Con SELinux, il tipo di politica predefinito è chiamato mirato , che controlla principalmente come
i servizi di rete (come server web e file server) possono accedere su un sistema Linux. Il
la politica mirata pone meno restrizioni su ciò che gli account utente validi possono fare sul sistema.
Per una politica più limitata, puoi scegliere Multi-Level Security (MLS). MLS utilizza Type
Applicazione insieme alla caratteristica aggiuntiva delle autorizzazioni di sicurezza. Offre anche Multi-
Category Security, che fornisce livelli di classificazione agli oggetti.

I nomi Multi-Level Security (MLS) possono creare confusione. Talvolta viene chiamato Multi-Category Security (MCS)
Sicurezza multi-sdoganamento. Poiché MLS offre MCS, a volte è chiamato MLS / MCS.

Multi-Level Security applica il modello di sicurezza di accesso obbligatorio Bell-LaPadula. La campana-


Il modello LaPadula è stato sviluppato dal governo degli Stati Uniti per imporre informazioni riservate
ality. L'applicazione di questo modello si ottiene concedendo l'accesso agli oggetti in base al ruolo
nulla osta di sicurezza e livello di classificazione dell'oggetto.
672

Pagina 713

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

L'autorizzazione di sicurezza è un attributo concesso ai ruoli che consentono l'accesso a oggetti classificati.
Il livello di classificazione è un attributo concesso a un oggetto, che fornisce protezione dai soggetti
che hanno un attributo di nulla osta di sicurezza troppo basso. Molto probabilmente hai sentito il
livello di classificazione "Top Secret". Il personaggio immaginario del libro e del film James Bond aveva un
nulla osta di sicurezza top-secret, che gli garantiva l'accesso a informazioni riservate top-secret
zione. Questo è un classico esempio del modello Bell-LaPadula.

La combinazione di RBAC con Type Enforcement (TE) o Multi-Level Security


(MLS) consente a SELinux di fornire un così forte miglioramento della sicurezza. SELinux offre anche
diverse modalità operative per il suo utilizzo.

Implementazione di modelli di sicurezza SELinux


Il modello di controllo degli accessi basato sui ruoli, l'applicazione del tipo, la sicurezza multilivello e
I modelli LaPadula sono tutti argomenti interessanti. SELinux implementa questi modelli tramite un file
combinazione di quattro pezzi SELinux primari:

■ Modalità operative
■ Contesti di sicurezza
■ Tipi di criteri

■ Pacchetti di regole dei criteri

Sebbene abbia toccato alcuni di questi elementi di design, quanto segue ti dà una
profonda comprensione di loro. Questa comprensione è necessaria prima di iniziare la configurazione
SELinux sul tuo sistema.

Comprensione delle modalità operative di SELinux


SELinux viene fornito con tre modalità operative: disabilitata, permissiva e forzata. Ciascuna di
queste modalità offrono diversi vantaggi per la sicurezza del sistema Linux.

Utilizzo della modalità Disabilitato 24


Nella modalità Disabilitato, SELinux è disattivato. Il metodo predefinito di controllo degli accessi,
Al suo posto viene utilizzato il controllo di accesso discrezionale (DAC). Questa modalità è utile per le circostanze
in cui non è richiesta una maggiore sicurezza.

Se possibile, Red Hat consiglia di impostare SELinux sulla modalità Permissive anziché su
disabilitandolo. Tuttavia, a volte è appropriato disabilitare SELinux.

Se stai eseguendo applicazioni che funzionano correttamente (dal tuo punto di vista), ma
generare enormi quantità di messaggi di diniego di SELinux AVC (anche in modalità permissiva),
potresti finire per riempire i file di registro al punto da rendere inutilizzabili i tuoi sistemi.

673

Pagina 714

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'approccio migliore è impostare il contesto di sicurezza appropriato sui file che desideri applicare
zioni di accesso. Ma disabilitare SELinux è la soluzione più rapida.
Prima di disabilitare SELinux, tuttavia, pensa se potresti volerlo abilitare
di nuovo su quel sistema. Se decidi di impostarlo su Enforcing o Permissive in un secondo momento, la prossima volta
riavviate il vostro sistema, il vostro sistema passa prima attraverso una rietichettatura automatica dei file SELinux
viene fuori.

Se tutto ciò che ti interessa è disattivare SELinux, hai trovato la risposta. Basta modificare il file di configurazione / etc /
selinux / config e modificare il testo SELINUX = nel seguente: SELINUX = disabilitato. SELinux lo sarà
disabilitato dopo il riavvio del sistema. Ora puoi saltare il resto di questo capitolo.

Utilizzo della modalità permissiva


In modalità permissiva, SELinux è attivato, ma le regole della politica di sicurezza non vengono applicate.
Quando una regola dei criteri di sicurezza deve negare l'ammissione, l'accesso è comunque consentito. Tuttavia, un messaggio
sage viene inviato a un file di registro che indica che l'accesso avrebbe dovuto essere negato.

La modalità permissiva di SELinux viene utilizzata per quanto segue:

■ Controllo delle attuali regole dei criteri di SELinux

■ Testare nuove applicazioni per vedere quale effetto avranno su di esse le regole dei criteri di SELinux
■ Testare le nuove regole dei criteri di SELinux per vedere quale effetto avranno le nuove regole
servizi e applicazioni attuali
■ Risoluzione dei problemi relativi al motivo per cui un particolare servizio o applicazione non funziona più
erly sotto SELinux

In alcuni casi, è possibile utilizzare il comando audit2allow per leggere i log di audit di SELinux e
generare nuove regole SELinux per consentire selettivamente le azioni negate. Questo può essere un modo rapido
per far funzionare le tue applicazioni sul tuo sistema Linux senza disabilitare SELinux.

Utilizzo della modalità Enforcing


Il nome dice tutto. In modalità Enforcing, SELinux è attivato e tutte le policy di sicurezza
le regole vengono applicate.

Comprendere i contesti di sicurezza di SELinux


Come accennato in precedenza, un contesto di sicurezza SELinux è il metodo utilizzato per classificare gli oggetti
(come file) e soggetti (come utenti e programmi). Il contesto di sicurezza definito
consente a SELinux di applicare regole politiche per i soggetti che accedono agli oggetti. Un contesto di sicurezza
è costituito da quattro attributi: utente, ruolo, tipo e livello.

■ user:
l'attributo user è una mappatura di un nome utente Linux con un nome SELinux.
Questo non è lo stesso del nome di accesso di un utente e viene indicato specificamente come

674

Pagina 715

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

Utente SELinux. Il nome utente SELinux termina con una u , facilitando l'identificazione in
L'output. Gli utenti regolari non confinati hanno un attributo utente unconfined_u nel file
politica mirata predefinita.
■ ruolo: un ruolo designato nell'azienda viene mappato a un nome di ruolo SELinux.
L'attributo del ruolo viene quindi assegnato a vari soggetti e oggetti. Ogni ruolo
ha accesso ad altri soggetti e oggetti in base alla sicurezza del ruolo
liquidazione e livello di classificazione dell'oggetto. Più specificamente, per SELinux,
agli utenti viene assegnato un ruolo e i ruoli sono autorizzati per particolari tipi o domini.
L'utilizzo dei ruoli può forzare gli account, come root, in una posizione meno privilegiata. Il
Il nome del ruolo di SELinux ha una "r" alla fine. Su un sistema SELinux mirato, i processi
eseguiti dall'utente root hanno un ruolo system_r, mentre gli utenti regolari vengono eseguiti sotto l'estensione
ruolo unconfined_r.
■ tipo: questo attributo definisce un tipo di dominio per i processi, un tipo di utente per gli utenti e
un tipo di file per i file. Questo attributo è anche chiamato "tipo di sicurezza". La maggior parte delle regole politiche
riguardano il tipo di sicurezza di un processo e quali file, porte, dispositivi,
e altri elementi del sistema a cui il processo ha accesso (in base alla loro sicurezza
tipi di città). Il nome del tipo SELinux termina con una t.
■ level: il livello è un attributo di Multi-Level Security (MLS) e applica il
Modello Bell-LaPadula. È facoltativo in TE, ma obbligatorio se si utilizza MLS.
Il livello MLS è una combinazione dei valori di sensibilità e categoria che insieme
formano il livello di sicurezza. Un livello è scritto come sensibilità: categoria.
■ sensibilità

■ Rappresenta il livello di sicurezza o sensibilità di un oggetto, come confi-


segreto o top secret.
■È gerarchico con s0 (non classificato) in genere il più basso.
■È elencato come una coppia di livelli di sensibilità ( lowlevel-highlevel ) se il
i livelli differiscono.
■È elencato come un singolo livello di sensibilità (s0) se non ci sono alto e basso
livelli. Tuttavia in alcuni casi, anche se non ci sono livelli alti e bassi, il 24
l'intervallo è ancora mostrato (s0-s0).
■ categoria

■ Rappresenta la categoria di un oggetto, ad esempio Nessuna distanza, In alto


Liquidazione e così via.
■ Tradizionalmente, i valori sono compresi tra c0 e c255.
■È elencato come una coppia di livelli di categoria ( lowlevel: highlevel ) se il file
i livelli differiscono.
■È elencato come un livello di singola categoria ( livello ) se non sono presenti e
livelli alti.

675

Pagina 716

Parte V: apprendimento delle tecniche di sicurezza di Linux

Gli utenti hanno contesti di sicurezza


Per vedere il contesto utente di SELinux, immettere il comando id al prompt della shell. Il seguente
è un esempio del contesto di sicurezza per l'utente johndoe:

$ id
uid = 1000 (johndoe) gid = 1000 (johndoe) gruppi = 1000 (johndoe)
context = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023

L'elenco del contesto di sicurezza dell'utente mostra quanto segue:

■ utente: l'utente Linux, johndoe, viene mappato all'utente SELinux unconfined_u.


■ role: l'utente SELinux, unconfined_u, viene mappato al ruolo di unconfined_r.
■ tipo: all'utente è stato assegnato il tipo di unconfined_t.
■ livello—

■ sensibilità: l'utente dispone di un solo livello di sensibilità ed è il più basso


livello di s0.
■ categorie: l'utente ha accesso a c0.c1023, ovvero tutte le categorie (c0
fino a c1023).

I file hanno contesti di sicurezza


Un file ha anche un contesto di sicurezza. Per vedere il contesto di un singolo file, usa l'opzione -Z su
il comando ls. Quello che segue è un contesto di sicurezza per il file my_stuff:

$ ls -Z my_stuff
-rw-rw-r--. johndoe johndoe
unconfined_u: object_r: user_home_t: s0 my_stuff

L'elenco del contesto di file mostra quanto segue:

■ utente: il file viene mappato all'utente SELinux unconfined_u.


■ ruolo: il file viene mappato al ruolo di object_r.
■ tipo: il file è considerato parte del dominio user_home_t.
■ livello—

■ sensibilità: l'utente dispone di un solo livello di sensibilità ed è il più basso


livello di s0.
■ categorie: MCS non è impostato per questo file.

I processi hanno contesti di sicurezza


Il contesto di sicurezza di un processo ha gli stessi quattro attributi di un utente e del contesto di un file. Per
vedere le informazioni sul processo su un sistema Linux, in genere si utilizza una variante del comando ps.
Nel codice seguente è stato utilizzato il comando ps -el.

# ps -el | grep bash


0 S 1000 1589 1583 0 80 0-1653 n_tty_ pts / 0 00:00:00 bash

676
Pagina 717

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

0 S 1000 5289 1583 0 80 0-1653 aspetta punti / 1 00:00:00 bash


4 S 0 5350 5342 0 80 0-1684 aspetta punti / 1 00:00:00 bash

Per vedere il contesto di sicurezza di un processo, è necessario utilizzare l'opzione -Z sul comando ps. Nel
Nell'esempio che segue, è stato utilizzato il comando ps -eZ e quindi reindirizzato in grep a
cerca solo i processi che eseguono la shell bash.

# ps -eZ | grep bash


unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023 1589 punti /
0 00:00:00 bash
unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023 5289 punti /
1 00:00:00 bash
unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023 5350 punti /
1 00:00:00 bash

L'elenco del contesto del processo mostra quanto segue:

■ user: il processo è mappato all'utente SELinux unconfined_u.


■ ruolo: il processo è in esecuzione come ruolo unconfined_r.
■ tipo: il processo è in esecuzione nel dominio unconfined_t.

■ livello—

■ sensibilità: il processo ha solo il livello s0.


■ categorie: il processo ha accesso a c0.c1023, ovvero tutte le categorie (c0
fino a c1023).
Questi contesti di sicurezza possono essere modificati per soddisfare la particolare sicurezza della tua organizzazione
esigenze. Tuttavia, prima di imparare a modificare le impostazioni di questi contesti di sicurezza,
è necessario comprendere un altro pezzo del puzzle di SELinux, i tipi di criteri di SELinux.

Comprensione dei tipi di policy di SELinux


Il tipo di criterio scelto determina direttamente quali set di regole di criteri vengono utilizzati per dettare
a cosa può accedere un oggetto. Il tipo di criterio determina anche quale contesto di sicurezza specifico
sono necessari attributi. È qui che inizi a vedere il livello di controllo degli accessi che può 24
essere implementato tramite SELinux.

I tipi di criteri disponibili nella distribuzione potrebbero non corrispondere a quelli elencati qui. Ad esempio, su una vecchia distribuzione Linux
butions, la politica rigorosa è ancora disponibile. Sulle distribuzioni più recenti, la politica rigorosa è stata fusa nel mirato
policy, con Targeted utilizzato per impostazione predefinita.

SELinux ha diverse politiche tra cui scegliere:

■ Mirato

■ MLS

■ Minimo

677

Pagina 718

Parte V: apprendimento delle tecniche di sicurezza di Linux

Ciascuna policy implementa un diverso controllo degli accessi per soddisfare le esigenze della tua organizzazione. È
fondamentale per comprendere questi tipi di policy al fine di selezionare quella corretta per il proprio
requisiti di sicurezza lar.

Politica mirata
Lo scopo principale della politica mirata è limitare i daemon "mirati". Tuttavia, può
limitare anche altri processi e utenti. I daemon mirati sono sandbox. Una sandbox è un file
ambiente in cui i programmi possono essere eseguiti, ma il loro accesso ad altri oggetti è strettamente controllato.
Un processo in esecuzione in un ambiente di questo tipo viene definito "sandbox". Quindi, un mirato
daemon è limitato in modo che nessun attacco dannoso lanciato attraverso di esso possa influenzare altri servizi
vizi o il sistema Linux nel suo insieme. I daemon mirati rendono più sicuro condividere i tuoi file
server di stampa, file server, server web o altri servizi, limitando i rischi a cui accedono
quei servizi pone ad altre risorse sul tuo sistema.

Tutti i soggetti e gli oggetti non mirati vengono eseguiti nel dominio unconfined_t. Il
il dominio unconfined_t non ha limitazioni di criteri SELinux e quindi utilizza solo il "tradi-
sicurezza "Linux".

SELinux viene fornito con la politica mirata impostata come predefinita. Quindi, per impostazione predefinita, SELinux
prende di mira solo pochi demoni.

Criterio MLS (Multi-Level Security)


Lo scopo principale della politica MLS è applicare il modello Bell-LaPadula. Concede l'accesso a
altri soggetti e oggetti in base all'autorizzazione di sicurezza di un ruolo e alla classificazione dell'oggetto
livello di azione .

Nella politica MLS, l'attributo MLS di un contesto di sicurezza è fondamentale. Altrimenti, le regole della politica
non saprà come applicare le restrizioni di accesso.

Politica minima
Questa politica è proprio come sembra: minima. È stato originariamente creato per poca memoria
macchine o dispositivi come gli smartphone.

La politica minima è essenzialmente la stessa della politica mirata, ma solo la politica di base
viene utilizzato il pacchetto di regole. Questa politica "ridotta all'osso" può essere utilizzata per testare gli effetti di SELinux
su un singolo demone designato. Per i dispositivi con poca memoria, il criterio minimo lo consente
SELinux per funzionare senza consumare una grande quantità di risorse.

Comprensione dei pacchetti di regole dei criteri di SELinux


Le regole dei criteri , chiamate anche regole di autorizzazione , sono le regole utilizzate da SELinux per determinare se un soggetto
ha accesso a un oggetto. Le regole dei criteri vengono installate con SELinux e sono raggruppate in pacchetti
età, chiamati anche moduli . Ogni particolare file del pacchetto della politica termina con un * .pp.

678

Pagina 719

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

La directory / etc / selinux / policy_type / modules / active / modules contiene un file


numero di file del pacchetto di criteri (* .pp). L'esempio che segue mostra la regola dei criteri
pacchetti per un sistema Linux con la politica mirata implementata:

# ls /etc/selinux/targeted/modules/active/modules/*.pp
/etc/selinux/targeted/modules/active/modules/abrt.pp
/etc/selinux/targeted/modules/active/modules/accountsd.pp
/etc/selinux/targeted/modules/active/modules/acct.pp
/etc/selinux/targeted/modules/active/modules/ada.pp
/etc/selinux/targeted/modules/active/modules/afs.pp
...
/etc/selinux/targeted/modules/active/modules/xserver.pp
/etc/selinux/targeted/modules/active/modules/zabbix.pp
/etc/selinux/targeted/modules/active/modules/zarafa.pp
/etc/selinux/targeted/modules/active/modules/zebra.pp
/etc/selinux/targeted/modules/active/modules/zosremote.pp

Sul tuo sistema Linux, c'è la documentazione per l'utente su questi vari moduli di policy, in
sotto forma di file HTML. Per visualizzare questa documentazione su Fedora o RHEL, apri il file
browser e digita il seguente URL: file: /// usr / share / doc / selinux -policy-
selinuxversion # / html / index.html. Per Ubuntu, l'URL è file: /// usr / share /
doc / selinux-policy-doc / html / index.html. Se non si dispone del documento della polizza
mentation sul tuo sistema, puoi installarlo su un sistema Fedora o RHEL, digitando yum
installa selinux-policy-doc dalla riga di comando. Su Ubuntu, digita sudo apt-get
installa selinux-policy-doc dalla riga di comando.

È possibile esaminare questa documentazione dei criteri per vedere come vengono create e impacchettate le regole dei criteri.

I pacchetti delle regole dei criteri, insieme alla modalità operativa di SELinux, al tipo di criteri e varie
contesti di sicurezza, collaborate per proteggere il vostro sistema Linux tramite SELinux. Il seguente
la sezione spiega come iniziare a configurare SELinux per soddisfare le esigenze della propria organizzazione
esigenze di sicurezza.

24
Configurazione di SELinux
SELinux è preconfigurato. È possibile utilizzare le funzionalità di SELinux senza alcuna configurazione
lavoro. Tuttavia, raramente le impostazioni preconfigurate soddisfano tutti i sistemi Linux
esigenze di sicurezza.

Le configurazioni di SELinux possono essere impostate e modificate solo dall'utente root. Configurazione e
i file dei criteri si trovano nella directory / etc / selinux. Il file di configurazione principale è
il file / etc / selinux / config e appare come segue:

# cat / etc / selinux / config


# Questo file controlla lo stato di SELinux sul sistema.

679

Pagina 720

Parte V: apprendimento delle tecniche di sicurezza di Linux

# SELINUX = può assumere uno di questi tre valori:


# enforcing - La politica di sicurezza di SELinux viene applicata.
# permissive - SELinux stampa avvisi invece di applicare.
# disabled - SELinux è completamente disabilitato.
SELINUX = imporre
# SELINUXTYPE = tipo di politica in uso. I valori possibili sono:
# targetizzato: sono protetti solo i daemon di rete mirati.
# strict - Protezione completa SELinux.
SELINUXTYPE = mirato

Questo file di configurazione principale di SELinux consente di impostare la modalità e il tipo di politica.

Impostazione della modalità SELinux


Per vedere la modalità corrente di SELinux sul tuo sistema, usa il comando getenforce. Per vedere entrambi
la modalità corrente e la modalità impostata nel file di configurazione, utilizzare il comando sestatus.
Entrambi i comandi sono mostrati nel codice che segue:

# getenforce
Far rispettare
# sestatus
Stato SELinux: abilitato
Montaggio di SELinuxfs: / sys / fs / selinux
Directory principale di SELinux: / etc / selinux
Nome criterio caricato: mirato
Modalità corrente: far rispettare
Modalità dal file di configurazione: far rispettare
Stato MLS della politica: abilitato
Criterio deny_unknown status: consentito
Versione massima della politica del kernel: 28

Per modificare l'impostazione della modalità, è possibile utilizzare setenforce newsetting , dove
newsetting può essere:

■ far rispettare o 1
■ permissivo o0

Notare che non è possibile utilizzare il comando setenforce per modificare SELinux in modalità disabilitata.

L'esempio che segue mostra la modalità SELinux modificata immediatamente in permis-


modalità sive tramite il comando setenforce. Il comando sestatus mostra la corrente
Modalità operativa e la modalità nel file di configurazione, che non è stata modificata.
Quando il sistema viene riavviato, determina la modalità operativa di SELinux dal
file di figurazione. Pertanto, la modalità permissiva impostata nell'esempio che segue è temporanea
perché la modalità di applicazione viene impostata tramite il file di configurazione quando il sistema viene riavviato.

# setenforce 0
# getenforce

680
Pagina 721

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

Permissivo
# sestatus
Stato SELinux: abilitato
Montaggio di SELinuxfs: / sys / fs / selinux
Nome criterio caricato: mirato
Modalità corrente: permissivo
Modalità dal file di configurazione: far rispettare
...

È meglio passare dalla modalità disabilitata alla modalità di applicazione modificando il file di configurazione e riavviando.
Il passaggio da disabilitato a enforcing tramite il comando setenforce potrebbe bloccare il sistema come risultato di
etichette di file errate. Tieni presente che, quando si riavvia dopo essere passato dalla modalità disabilitata, potrebbe esserci un lungo
attendere che il proprio filesystem venga rietichettato dopo che il sistema è tornato in modalità permissiva o forzata.

Per disabilitare SELinux, è necessario modificare il file di configurazione di SELinux. Riavvio del sistema
riporta sempre la modalità a quella impostata in quel file di configurazione. Il preferito
Il metodo per cambiare la modalità SELinux consiste nel modificare il file di configurazione e quindi riavviare
il sistema.

Quando si passa dalla modalità disabilitata a quella forzata o permissiva, SELinux si


automaticamente rinomina il filesystem dopo un riavvio. Ciò significa che SELinux controlla e cambia
i contesti di sicurezza di qualsiasi file con contesti di sicurezza errati (ad esempio, con etichetta errata
file) che possono causare problemi nella nuova modalità. Inoltre, tutti i file non etichettati vengono etichettati
con contesti. Questo processo di rietichettatura può richiedere molto tempo perché il contesto di ogni file è
controllato. Quello che segue è il messaggio che ricevi quando un sistema sta attraversando una relazione
processo di beling dopo un riavvio:

*** Avvertenza - È richiesta la rietichettatura della policy mirata a SELinux.


*** La rietichettatura potrebbe richiedere molto tempo, a seconda del file
*** dimensione del sistema e velocità dei dischi rigidi.

Per modificare la modalità nel file / etc / selinux / config, modificare la riga SELINUX = con una 24
dei seguenti:

■ disabilitato

■ far rispettare
■ permissivo

L'esempio del file di configurazione SELinux che segue mostra che la modalità è stata impostata su
permissivo. Ora, quando si verifica un riavvio del sistema, la modalità viene modificata.

# cat / etc / selinux / config


# Questo file controlla lo stato di SELinux sul sistema.
# SELINUX = può assumere uno di questi tre valori:
# enforcing - La politica di sicurezza di SELinux viene applicata.

681

Pagina 722

Parte V: apprendimento delle tecniche di sicurezza di Linux

# permissive - SELinux stampa avvisi invece di applicare.


# disabled - SELinux è completamente disabilitato.
SELINUX = permissivo
...

Il file di configurazione di SELinux primario non contiene solo l'impostazione della modalità. Inoltre specifica
ifies il tipo di criterio, che verrà applicato.

Impostazione del tipo di policy SELinux


Il tipo di policy scelto determina se SELinux applica TE, MLS o un pacchetto base
età. Questa impostazione del tipo determina direttamente i set di regole dei criteri utilizzati per stabilire cosa un file
oggetto può accedere.
Per impostazione predefinita, il tipo di criterio è impostato su targetizzato. Per modificare il tipo di criterio predefinito, modificare il file
/ etc / selinux / config. Modificare la riga SELINUXTYPE = in una delle seguenti:

■ mirato

■ mls

■ minimo

Se imposti il ​tipo di SELinux su mls o minimo, devi assicurarti di avere la loro pol-
pacchetto icy installato per primo. Controlla digitando il seguente comando: yum list selinux-
policy-mls o yum list selinux-policy-minimum .

Per controllare i pacchetti di criteri SELinux su Ubuntu, utilizzare il comando sudo apt-cache policy
nome_pacchetto .

L'esempio del file di configurazione SELinux che segue mostra che il tipo è stato impostato
a mls. Ora, quando si verifica un riavvio del sistema, il tipo di politica viene modificato.

# cat / etc / selinux / config


# Questo file controlla lo stato di SELinux sul sistema.
...
# SELINUXTYPE = tipo di politica in uso. I valori possibili sono:
# targetizzato: sono protetti solo i daemon di rete mirati.
# strict - Protezione completa SELinux.
SELINUXTYPE = mls

Non lasciarti ingannare dai commenti non aggiornati nel file di configurazione di SELinux. Non è possibile impostare SELINUXTYPE su
rigoroso nelle distribuzioni Linux più recenti. Se lo fai, il sistema si blocca al prossimo riavvio e devi usare grub com
richiede di risolvere il problema. Il tipo di politica rigorosa fa ora parte del tipo di politica mirata.

682

Pagina 723

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

Gestire i contesti di sicurezza di SELinux


I contesti di sicurezza di SELinux consentono a SELinux di applicare regole di policy per i soggetti che accedono
oggetti. Il tuo sistema Linux viene fornito con contesti di sicurezza già assegnati.

Per visualizzare il file SELinux corrente e i contesti di sicurezza del processo, utilizzare il secondo comando.
La Tabella 24.1 elenca le opzioni disponibili nel secondo comando.

TABELLA 24.1 secon Opzioni di comando

Opzione Descrizione

-u Usa questa opzione per mostrare all'utente il contesto di sicurezza.

-r Usa questa opzione per mostrare il ruolo del contesto di sicurezza.

-t Usa questa opzione per mostrare il tipo di contesto di sicurezza.

-S Usa questa opzione per mostrare il livello di sensibilità del contesto di sicurezza.

-c Usa questa opzione per mostrare il livello di autorizzazione del contesto di sicurezza.

-m Utilizzare questa opzione per mostrare la sensibilità e il livello di autorizzazione del contesto di sicurezza come
una gamma MLS.

Se usi il comando secon senza designazione, ti mostra il processo corrente


contesto di sicurezza. Per vedere il contesto di sicurezza di un altro processo, usa l'opzione -p. L'esempio
quello che segue mostra come usare la seconda per visualizzare il processo corrente e quello di systemd
contesto di sicurezza.

# secon -urt
utente: unconfined_u
ruolo: unconfined_r
tipo: unconfined_t
# secon -urt -p 1
utente: system_u 24
ruolo: system_r
tipo: init_t

Per visualizzare il contesto di sicurezza di un file, utilizzare l'opzione -f, come mostrato qui:

# secon -urt -f / etc / passwd


utente: system_u
ruolo: object_r
tipo: ecc_t

Il contesto di sicurezza di un utente non viene visualizzato utilizzando il secondo comando. Per vedere la sicurezza di un utente
contesto, è necessario utilizzare il comando id. Per vedere il contesto di sicurezza di un utente oltre al tuo,
la sintassi del comando è id -Z nomeutente .

683

Pagina 724

Parte V: apprendimento delle tecniche di sicurezza di Linux

Gestione del contesto di sicurezza dell'utente


Ricordare che ogni ID di accesso dell'utente di sistema è mappato a un particolare ID utente SELinux. Vedere
un elenco di mappe sul tuo sistema, inserisci il comando semanage login -l . Il semanage
comando e il suo output sono mostrati nel codice che segue. Se un ID di accesso utente non è elencato,
quindi utilizza la mappatura di accesso "predefinita", che è il nome di accesso di _default_. Avviso
che vengano mostrate anche le impostazioni MLS / MCS associate per ogni utente SELinux.

# semanage login -l
Nome di login Utente SELinux Servizio di gamma MLS / MCS
__predefinito__ unconfined_u s0-s0: c0.c1023 *
radice unconfined_u s0-s0: c0.c1023 *
system_u system_u s0-s0: c0.c1023 *

Per vedere una visualizzazione corrente degli utenti SELinux e dei ruoli associati, utilizzare il comando
semanage user -l. La visualizzazione parziale che segue mostra i ruoli mappati su SELinux
nomi utente:

# semanage user -l
Etichettatura MLS / MLS /
Prefisso utente SELinux Livello MCS Gamma MCS Ruoli SELinux
guest_u utente s0 s0 guest_r
...
user_u utente s0 s0 user_r
xguest_u utente s0 s0 xguest_r

Se è necessario aggiungere un nuovo nome utente SELinux, viene utilizzata di nuovo l'utilità semanage. Questa volta,
il comando è semanage user -a selinux_username . Per mappare un ID di accesso al nuovo
aggiunto il nome utente SELinux, il comando è semanage login -a -s selinux_username
loginID . L'utilità semanage è un potente strumento per gestire la configurazione di SELinux
zione. Per ulteriori informazioni sull'utilità semanage, vedere le pagine man.

Gestione del contesto di sicurezza dei file


L'etichettatura dei file è fondamentale per mantenere il corretto controllo dell'accesso ai dati di ogni file. SELinux
imposta le etichette di sicurezza dei file all'installazione e al riavvio del sistema quando SELinux
la modalità è disattivata. Per vedere l'etichetta corrente di un file (noto anche come contesto di sicurezza), usa
il comando ls -Z, come mostrato qui:

# ls -Z / etc / passwd
-rw-r - r--. root root system_u: object_r: etc_t: s0 / etc / passwd

È possibile utilizzare diversi comandi per gestire le etichette del contesto di sicurezza dei file, come mostrato in
Tabella 24.2.

684

Pagina 725
Capitolo 24: Migliorare la sicurezza di Linux con SELinux

TABELLA 24.2 Comandi di gestione dell'etichetta del contesto di protezione dei file

Utilità Descrizione

chcat Usalo per cambiare la categoria dell'etichetta del contesto di sicurezza di un file.

chcon Usalo per modificare l'etichetta del contesto di sicurezza di un file.

fixfiles Questo chiama l'utilità restorecon / setfiles.

restorecon Questo fa esattamente la stessa cosa dell'utility setfiles, ma ha una diversa


interfaccia rispetto a setfiles.

setfiles Usalo per verificare e / o correggere le etichette del contesto di sicurezza. Può essere eseguito per file
verifica dell'etichetta e / o rietichettatura dei file quando si aggiunge un nuovo modulo di criteri
al sistema. Fa esattamente la stessa cosa dell'utilità restorecon, ma
ha un'interfaccia diversa da restorecon.

I comandi chcat e chcon, mostrati nella Tabella 24.2, consentono di modificare la sicurezza di un file
contesto. Nell'esempio seguente, il comando chcon viene utilizzato per cambiare l'utente SELinux
associato a file.txt da undefined_u a system_u.

# ls -Z file.txt
-rw-rw-r--. johndoe johndoe
unconfined_u: object_r: user_home_t: s0 file.txt
# chcon -u system_u file.txt
# ls -Z file.txt
-rw-rw-r--. johndoe johndoe
system_u: object_r: user_home_t: s0 file.txt

Notare nella Tabella 24.2 che fixfiles, restorecon e setfiles sono essenzialmente gli stessi
utilità. Tuttavia, restorecon è la scelta comune da utilizzare quando si fissano le etichette dei file. Il
comando restorecon -R nomefile riporta un file al suo contesto di sicurezza predefinito.

Gestire il contesto di sicurezza del processo


La definizione di un processo è un programma in esecuzione. Quando esegui programmi o avvii servizi
24
su un sistema Linux, a ciascuno viene assegnato un ID di processo (vedere il Capitolo 6). Su un sistema con
SELinux, a un processo viene fornito anche un contesto di sicurezza.

Il modo in cui un processo ottiene il suo contesto di sicurezza dipende da quale processo lo ha avviato. Ricorda
quel systemd (precedentemente init) è la "madre" di tutti i processi (vedere il Capitolo 15). Quindi,
molti demoni e processi vengono avviati da systemd. Viene avviato il processo systemd
vengono forniti nuovi contesti di sicurezza. Ad esempio, quando il demone apache viene avviato da
systemd, gli viene assegnato il tipo (noto anche come dominio) httpd_t. Il contesto assegnato viene gestito

685

Pagina 726

Parte V: apprendimento delle tecniche di sicurezza di Linux

dalla politica SELinux scritta specificamente per quel demone. Se non esistono criteri per un processo,
quindi viene assegnato un tipo predefinito, unconfined_t.

Per un programma o un'applicazione eseguita da un utente (processo padre), il nuovo processo (processo figlio)
eredita il contesto di sicurezza dell'utente. Naturalmente, ciò si verifica solo se l'utente è autorizzato a eseguire
il programma. Un processo può anche eseguire un programma. Anche il processo figlio in questo caso eredita
contesto di sicurezza del suo processo genitore. Pertanto, il processo figlio viene eseguito nello stesso dominio.

Quindi il contesto di sicurezza di un processo viene impostato prima che il programma venga eseguito e dipende da chi
ha iniziato. Puoi utilizzare un paio di comandi per modificare i contesti di sicurezza in cui
viene eseguito un programma:

■ runcon: esegue il programma utilizzando le opzioni per determinare l'utente, il ruolo e il tipo (aka
dominio).
■ sandbox: eseguire il programma all'interno di un dominio strettamente controllato (noto anche come sandbox).

Puoi causare diversi problemi usando runcon, quindi usalo con cautela. Tuttavia,
sandbox offre una grande protezione. Consente flessibilità nel testare nuovi programmi
sul tuo sistema Linux.
Gestione dei pacchetti di regole dei criteri di SELinux
Le regole della politica sono le regole usate da SELinux per determinare se un soggetto ha accesso a
un oggetto. Sono raggruppati in pacchetti, chiamati anche moduli, e vengono installati con
SELinux. Un modo semplice per visualizzare i moduli sul tuo sistema è usare il semodule -l com
mand. Elenca tutti i moduli della politica insieme al loro numero di versione corrente. Un esempio
del comando semodule -l è mostrato qui:

# semodule -l
abrt 1.2.0
conti 1.0.6
acct 1.5.1
...
xserver 3.8.4
zabbix 1.5.3
zarafa 1.1.0
zebra 1.12.0
zoneminder 1.1.1
zosremote 1.1.1

Diversi strumenti possono aiutarti a gestire e persino a creare i tuoi moduli di policy. Tabella 24.3
mostra i vari strumenti del pacchetto di regole della politica disponibili su un sistema Fedora.

686

Pagina 727

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

TABELLA 24.3 Strumenti del pacchetto di politiche di SELinux

Strumento per le politiche Descrizione

audit2allow Genera regole di autorizzazione / dontaudit dei criteri dai registri di negato
operazioni

audit2why Genera una descrizione del motivo per cui l'accesso è stato negato dai log
di operazioni negate

checkmodule Compila i moduli dei criteri

checkpolicy Compila le politiche di SELinux

load_policy Carica nuove politiche nel kernel

semodulo Gestisce i moduli delle politiche

semodule_deps Elenca le dipendenze tra i pacchetti di criteri

semodule_expand Espande un pacchetto di moduli di policy

semodule_link Collega insieme i pacchetti del modulo dei criteri

semodule_package Crea un pacchetto del modulo della politica

Quello che segue è un esempio di policy tipicamente utilizzato come framework per creare policy locale
regole. La policy di esempio è piuttosto lunga, quindi viene mostrata solo una parte.

# cat /usr/share/selinux/devel/example.te
policy_module (miaapp, 1.0.0)
######################################
#
# Dichiarazioni
#

digita myapp_t;
digita myapp_exec_t;
tipo_dominio (miaapp_t)
domain_entry_file (miaapp_t, miaapp_exec_t) 24
digita myapp_log_t;
logging_log_file (miaapp_log_t)

digita myapp_tmp_t;
files_tmp_file (miaapp_tmp_t)
...
687

Pagina 728

Parte V: apprendimento delle tecniche di sicurezza di Linux

consenti miaapp_t miaapp_tmp_t: file manage_file_perms;


files_tmp_filetrans (miaapp_t, miaapp_tmp_t, file)

Il codice di esempio precedente mostra che una sintassi speciale viene utilizzata nel codice della politica. Creare
e modificare le regole dei criteri, è necessario imparare la sintassi del linguaggio delle regole dei criteri, imparare come
per usare i compilatori di policy SELinux e imparare a collegare insieme i file delle regole di policy
formare moduli; probabilmente avrai bisogno di prendere un paio di lezioni di un giorno. Potresti essere
tentato di rinunciare a SELinux a questo punto. Tuttavia, è molto più facile usare i booleani
per modificare le politiche.

Gestire SELinux tramite booleani


La scrittura delle regole delle policy di SELinux e la creazione dei moduli è un'operazione piuttosto complicata e
attività. La creazione di regole dei criteri errate potrebbe potenzialmente compromettere il sistema Linux
sicurezza del tem. Per fortuna, SELinux fornisce booleani.

Un booleano è un interruttore che attiva o disattiva un'impostazione. Un interruttore booleano te lo consente


per cambiare parti delle regole della politica di SELinux, senza alcuna conoscenza della scrittura della politica. Questi
le modifiche ai criteri possono essere eseguite anche senza riavviare il sistema!

Per vedere un elenco di tutti i booleani correnti usati in SELinux, usa il comando getsebool -a.
Il seguente è un esempio delle regole della policy SELinux con booleani su Fedora Linux
sistema:

# getsebool -a
abrt_anon_write -> off
abrt_handle_event -> off
...
xserver_object_manager -> off
zabbix_can_network -> off

Per vedere una politica specifica che può essere modificata da un booleano, il comando getsebool è
usato di nuovo. Questa volta gli viene passato il nome del criterio, come mostrato nell'esempio seguente:

# getsebool httpd_can_connect_ftp
httpd_can_connect_ftp -> off

Per attivare o disattivare una politica, puoi utilizzare il comando setsebool o il comando togglebool
mand. Entrambi questi comandi modificano temporaneamente la regola dei criteri. Quando il sistema è
riavviato, il booleano torna alla sua impostazione originale. Se hai bisogno di questa impostazione per
nent, puoi usare solo il setsebool con l'opzione -P.

Il comando togglebool alterna semplicemente l'impostazione booleana corrente del criterio


specificare tra on e off. Ad esempio, se hai emesso il comando togglebool httpd_
can_connect_ftp, cambierai lo stato dell'impostazione dei criteri dalla sua impostazione precedente
da "off" a "on".

688

Pagina 729

Capitolo 24: Migliorare la sicurezza di Linux con SELinux


Il comando setsebool ha sei impostazioni: tre per l'attivazione di una politica (on, 1 o true),
e tre per disattivare un criterio (off, 0 o false).

Per un esempio usando setsebool, in alcune situazioni, non è una buona sicurezza consentire agli utenti
per eseguire programmi dalla loro directory / home. Per evitare che ciò accada, il
La regola dei criteri allow_user_exec_content deve essere disattivata. L'esempio che segue
mostra il comando setsebool usato per fare proprio questo. Notare che l'opzione -P è
utilizzato per rendere permanente questa impostazione.

# setsebool -P allow_user_exec_content off

Il comando getsebool verifica che l'impostazione booleana sia stata eseguita correttamente:

# getsebool allow_user_exec_content
allow_user_exec_content -> off

I booleani rendono molto più semplice la modifica delle attuali regole della politica di SELinux. Nel complesso, il SELinux
le utilità di configurazione della riga di comando, come getsebool, sono facili da usare. Tuttavia,
se vuoi uno strumento di configurazione GUI, SELinux ne ha uno. Viene installato tramite il comando
yum installa policycoreutils-gui. Su Ubuntu, usa il comando sudo apt-get
installa policycoreutils. Per utilizzare questo strumento di configurazione, digita semplicemente il comando
system-config-selinux e viene visualizzata un'interfaccia GUI.

Monitoraggio e risoluzione dei problemi SELinux


SELinux è un altro strumento per monitorare il tuo sistema. Registra tutte le negazioni di accesso, che possono
aiutano a determinare se si sta tentando un attacco. Questi stessi file di registro SELinux sono
utile anche nella risoluzione dei problemi di SELinux.

Capire la registrazione di SELinux


SELinux utilizza una cache chiamata Access Vector Cache (AVC) durante la revisione delle regole dei criteri per 24
particolari contesti di sicurezza. Quando l'accesso viene negato, viene chiamato un rifiuto AVC, un messaggio di rifiuto
viene inserito in un file di registro.

Questi messaggi di rifiuto registrati possono aiutarti a diagnosticare e ad affrontare la politica di SELinux di routine
violazioni. La posizione in cui vengono registrati questi messaggi di rifiuto dipende dallo stato di auditd
e demoni rsyslogd:

■ Se il daemon auditd è in esecuzione, i messaggi di rifiuto vengono registrati in / var / log /


audit / audit.log.
■ Se auditd non è in esecuzione, ma il daemon rsyslogd è in esecuzione, il messaggio di negazione
i saggi vengono registrati in / var / log / messages.

689

Pagina 730

Parte V: apprendimento delle tecniche di sicurezza di Linux

Se sia auditd che rsyslogd sono in esecuzione e hai il demone setroubleshootd sul tuo sistema,
i messaggi di rifiuto vengono inviati sia all'audit.log che ai file di registro dei messaggi. Tuttavia, negare informazioni nel file
il file di log dei messaggi viene inserito in un formato più comprensibile dal demone setroubleshootd.

Revisione dei messaggi di SELinux nel registro di controllo


Se hai il daemon auditd in esecuzione, puoi vedere rapidamente se sono stati negati da AVC
registrato utilizzando il comando aureport. L'esempio che segue mostra l'uso di
aureport e grep per cercare i rifiuti AVC. Almeno un rifiuto è stato registrato in
/var/log/audit/audit.log:

# aureport | grep AVC


Numero di AVC: 1

Dopo aver scoperto che un rifiuto AVC è stato registrato in audit.log, puoi usare
ausearch per esaminare i messaggi di rifiuto. L'esempio che segue mostra il file ausearch
comando utilizzato per rivedere il messaggio di rifiuto AVC registrato.

# ausearch -m avc
tipo = AVC msg = audit (1411184014.986: 69860): avc: negato {create} per
pid = 21875 comm = "vsftpd" name = "services"
scontext = system_u: system_r: ftpd_t: s0-s0: c0.c1023
tcontext = system_u: object_r: user_home_t: s0 tclass = file

Il display fornisce informazioni su chi stava tentando di accedere, insieme alla sua sicurezza
contesto durante il tentativo. Cerca queste parole chiave in un messaggio di rifiuto AVC:

■ tipo = AVC
■ avc: negato
■ pid =

■ exe =
■ subj =

Questo può fornire dati sufficienti per iniziare a risolvere un problema o rintracciare attività dannose.

Revisione dei messaggi di SELinux nel registro dei messaggi


Se hai rsyslogd in esecuzione, puoi trovare i messaggi di rifiuto AVC effettuando una ricerca in
il file / var / log / messages usando grep. Per RHEL 7, Fedora 21 o qualsiasi Linux che utilizza
systemd, è possibile eseguire il comando journalctl per verificare la presenza di messaggi di registro di rifiuto AVC. Nel
ogni messaggio di registro è una riga di comando sealert che puoi eseguire per ottenere informazioni
ogni rifiuto di AVC. Per esempio:

# journalctl | grep sealert


18 settembre 23:58:03 fedora20.example.com setroubleshoot [13449]:
SELinux impedisce a / usr / sbin / vsftpd di accedere a getattr sul file

690

Pagina 731

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

directory / home / chris / Music. Per messaggi SELinux completi.


eseguire sealert -l 8f52dd56-8025-4208-af41-7d296bdaa46b

Dall'esempio, puoi vedere che un utente Linux ha tentato di accedere a un servizio FTP
(vsftpd) come un particolare utente. Poiché FTP utilizza password in testo non crittografato, tale azione è considerata
ered insicuro ed è, quindi, negato da SELinux. Notare che il messaggio di rifiuto di AVC dice
è possibile eseguire il comando sealert -l per ottenere maggiori informazioni.

L'utility sealert consente di ottenere maggiori informazioni su un particolare messaggio di rifiuto AVC
saggio. Il formato delle informazioni fornito da Sealert può aiutarti a diagnosticare i tuoi problemi. Il
l'esempio che segue mostra le informazioni fornite da sealert riguardo al rifiuto di AVC,
che è stato mostrato nell'esempio precedente. Notare che il comando utilizzato è esattamente lo stesso
comando suggerito dal file di registro dei messaggi precedente. Il numero lungo utilizzato in
Il comando sealert è il numero ID del messaggio di rifiuto AVC.

# sealert -l 8f52dd56-8025-4208-af41-7d296bdaa46b

SELinux impedisce a / usr / sbin / vsftpd di accedere a getattr


nella directory / home / chris / Music.
***** Il plugin catchall_boolean (47.5 confidenza) suggerisce ********
**********
Se vuoi determinare se ftpd può leggere e scrivere file in formato
directory home degli utenti.
Quindi devi dirlo a SELinux abilitando 'ftp_home_dir'
booleano.
Puoi leggere la pagina man "Nessuno" per maggiori dettagli.
Esegui setsebool -P ftp_home_dir 1

***** Il plugin catchall_boolean (47.5 confidenza) suggerisce ********


**********
Se vuoi determinare se ftpd può accedere agli utenti locali e
può leggere e scrivere tutti i file sul sistema, governato da DAC.
Quindi devi dirlo a SELinux abilitando il
booleano "ftpd_full_access".
Puoi leggere la pagina man 'ftpd_selinux' per maggiori dettagli. 24
Esegui setsebool -P ftpd_full_access 1
...

L'output di sealert fornisce una grande quantità di informazioni utili. In questo caso, dà il
diagnosi corretta che se si desidera consentire a un utente di accedere a un account utente esistente da
un servizio FTP, è necessario attivare il booleano ftp_home_dir (setsebool -P ftp_
home_dir = on). Se hai impostato SELinux sul tuo sistema, sarebbe saggio avere l'estensione
Anche il demone setroubleshootd è in esecuzione.

Risoluzione dei problemi di registrazione di SELinux


Ovviamente, i file di registro sono estremamente importanti per diagnosticare e indirizzare SELinux
violazioni delle norme. I file di log o l'interrogazione diretta del journal di systemd (journalctl
691

Pagina 732

Parte V: apprendimento delle tecniche di sicurezza di Linux

comando) sono i primi passi nella risoluzione dei problemi di SELinux. Quindi, è importante fare
assicurati che il tuo sistema Linux stia registrando i messaggi in primo luogo.

Un modo rapido per determinare se la registrazione è in corso è controllare se i daemon corretti


sono in esecuzione: auditd, rsyslogd e / o setroubleshootd. Utilizzare un comp
mand, come systemctl status auditd.service. Ovviamente, il comando che usi
dipende dalla tua distribuzione Linux e dalla sua versione. Vedere il Capitolo 15 per maggiori dettagli. Se la
daemon non è in esecuzione, avviarlo in modo che possa iniziare la registrazione.

A volte i rifiuti AVC non vengono registrati a causa delle regole dei criteri di dontaudit. Anche se le regole di dontaudit aiutano
ridurre i falsi positivi nei log, possono causare problemi durante la risoluzione dei problemi. Per risolvere questo problema, temporaneamente
disabilitare tutte le regole dei criteri dontaudit utilizzando il comando semodule -DB.

Risoluzione dei problemi comuni di SELinux


Quando inizi a lavorare con SELinux, è facile trascurare l'ovvio. Ogni volta che accedi
è negato, è necessario prima controllare i permessi DAC Linux "tradizionali". Per esempio,
utilizzare il comando ls -l e ricontrollare che il proprietario del file, il gruppo e leggere, scrivere e
eseguire le assegnazioni sono corrette.

Con SELinux, diversi elementi regolari possono causare problemi:

■ Utilizzo di una directory non standard per un servizio

■ Utilizzo di una porta non standard per un servizio


■ Spostamento di file che comportano la perdita delle etichette del contesto di protezione
■ Avere valori booleani impostati in modo errato

Ciascuno di questi problemi può essere risolto abbastanza rapidamente.

Utilizzo di una directory non standard per un servizio


Per vari motivi, potresti decidere di archiviare i file di un servizio in una directory non standard.
Quando si esegue questa operazione, SELinux deve sapere che si è verificato questo comportamento non standard.
In caso contrario, nega l'accesso alle legittime richieste di accesso al servizio.

Ad esempio, hai deciso di mantenere i tuoi file HTML in una posizione diversa dal
standard / var / www / html. Metti i file in / abc / www / html. Devi lasciare che SELinux
sapere che vuoi che il servizio http sia in grado di accedere ai file all'interno di / abc / www / html.

692

Pagina 733

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

I comandi per eseguire questa operazione sono semanage e restorecon. Nel seguente,
i comandi vengono utilizzati per aggiungere il tipo di contesto di sicurezza appropriato in / abc / www / html
directory e tutto ciò che contiene:
# semanage fcontext -a -t httpd_sys_content_t "/abc/www/html(/.*)?"

Per impostare effettivamente il nuovo tipo di contesto di sicurezza sui file all'interno della directory, è necessario
utilizzare il comando restorecon -R. Ciò si ottiene nel modo seguente:

# restorecon -R -v / srv / www / html

Ora il demone httpd ha il permesso di accedere ai file HTML nel loro non standard
posizione della directory.

Utilizzo di una porta non standard per un servizio


Simile al problema appena descritto, potresti decidere di avere un servizio in ascolto su un
porta standard. Quando si apporta questa modifica alla porta, spesso il servizio non viene avviato.

Ad esempio, decidi per motivi di sicurezza di spostare sshd dalla porta 22 a una non standard
port, 47347. SELinux non è a conoscenza di questa porta e il servizio non si avvia. Aggiustare
questo problema, devi prima trovare il tipo di contesto di sicurezza per sshd. Questo è fatto
utilizzando il codice che segue immettendo il comando semanage port -l e collegando il file
risultati in grep per cercare ssh.

# semanage port -l | grep ssh


ssh_port_t tcp 22

Nell'esempio precedente, il tipo di contesto necessario è ssh_port_t. Ora, usando il


di nuovo il comando semanage, aggiungi quel tipo alla porta 47347, come mostrato qui:

# semanage port -a -t ssh_port_t -p tcp 47347

Successivamente, modifica il file / etc / ssh / sshd_config per aggiungere una riga Port 47347 al file. Poi
riavviare il servizio sshd in modo che il servizio sia in ascolto sulla porta non standard 47347.
24
Spostamento di file e perdita delle etichette del contesto di sicurezza
Hai usato il comando cp per spostare temporaneamente un file da / etc alla directory / tmp.
Quindi hai usato il comando mv per rimetterlo. Ora, il file ha il contesto di sicurezza di
directory temporanea invece del suo contesto di sicurezza originale e il tuo sistema sta ottenendo AVC
messaggi di rifiuto quando il servizio che utilizza quel file tenta di avviarsi.

Questa è una soluzione semplice, grazie al comando restorecon -R. È sufficiente digitare restorecon -R
di file , e il file ha il suo contesto di protezione originale restaurato.

693

Pagina 734

Parte V: apprendimento delle tecniche di sicurezza di Linux

Booleani impostati in modo errato


Un altro problema comune è l'impostazione errata di un booleano. Questo può darti diversi
Negazioni di AVC.

Ad esempio, se gli script del tuo sistema non sono più in grado di connettersi alla rete ea te
stanno ricevendo rifiuti AVC nei tuoi log, devi controllare i booleani httpd. Usa il
getsebool -a comando e reindirizzalo in grep per cercare qualsiasi booleano che abbia effetto
httpd. L'esempio qui mostra questi comandi utilizzati:

# getsebool -a | grep http


...
httpd_can_network_connect -> off
...

Il comando getsebool mostra che il booleano httpd_can_network_connect è impostato su off.


Per modificare questo booleano, utilizzare il seguente comando: setsebool -P httpd_can_network_
connettersi. Notare che l'opzione -P è stata utilizzata per rendere l'impostazione permanente. Adesso tuo
gli script dovrebbero essere in grado di connettersi alla rete.

Man mano che incontri vari problemi con SELinux, le tue capacità di risoluzione dei problemi miglioreranno.
Nel frattempo, ecco un'altra eccellente risorsa per aiutarti con la risoluzione dei problemi : http: //
docs.redhat.com. Il documento Red Hat "Red Hat Enterprise Linux" ha un intero capitolo
ter (Capitolo 8) dedicato alla risoluzione dei problemi di SELinux.

Mettere tutto insieme


Ovviamente, SELinux è uno strumento piuttosto complicato e ricco. Ora hai una buona, solida base
dazione sulle
mentare basi sul
SELinux di SELinux. Ecco alcuni consigli per iniziare a implementare
tuo sistema.

È possibile utilizzare la modalità SELinux di destinazione predefinita per proteggere la maggior parte dei servizi di rete di base
(httpd, vsftpd, Samba e così via) senza la necessità di assegnare ruoli utente speciali o altri
In questo modo blocca il tuo sistema. In questo caso, le cose principali che devi fare sono mettere i file
in posizioni standard (o eseguire comandi per assegnare i contesti di file appropriati a non standard
posizioni), assicurati che Booleani sia attivato per le funzioni meno sicure che desideri comunque,
e guarda i dinieghi di AVC per problemi.

■ Iniziare con la modalità operativa permissiva. Ciò consente le richieste che SELinux vede
come insicuro per avere successo.
■ Eseguire il sistema corrente per un periodo di tempo significativo in modalità permissiva.
Rivedi i log e vedi quali problemi possono verificarsi con il set SELinux predefinito-
cose. È quindi possibile modificare booleani o contesti di file in modo che le funzionalità vengano negate in modo improprio
può essere consentito. Dopo aver risolto i problemi, attivare la modalità di applicazione.
■ In generale, implementare le modifiche alla configurazione di SELinux una alla volta, in un ambiente di test
ment o utilizzando la modalità permissiva. Guarda che tipo di effetto cambia ogni configurazione

694

Pagina 735

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

ha prima di passare a quello successivo. È quindi possibile utilizzare il comando audit2allow com
mandato di consentire in modo selettivo le azioni che causano l'aggiunta di negazioni da parte di AVC alla policy
di ciò che è consentito per un servizio.

Ottenere ulteriori informazioni su SELinux


Diverse fonti di informazioni aggiuntive possono aiutarti con SELinux sul tuo sistema Linux:

■ Le pagine man del sistema: immettere il comando man -k selinux per trovare tutti i file
varie pagine di manuale che puoi esaminare per le utilità SELinux attualmente installate
il tuo sistema. Se stai eseguendo il debug di problemi di SELinux per un servizio ben noto (come
come httpd, vsftpd, Samba e così via), probabilmente c'è una pagina man associata a
come risolvere specificamente i problemi di SELinux con quel servizio.
■I manuali di Red Hat Enterprise Linux, disponibili su http://docs.redhat.com ,
questo sito contiene un intero manuale su SELinux.
■ The Fedora Project SELinux Guide —Located at http://docs.fedoraproject.org ,
questo sito ha una guida Linux con protezione avanzata. Tuttavia, la guida non viene aggiornata
per ogni versione di Fedora, quindi potrebbe essere necessario cercare nelle versioni precedenti per trovarla. Anche,
la Guida a SELinux non si trova nel manuale Security, ma nella Security
anche manual è un buon manuale da rivedere.
■ SELinux su Ubuntu: perché ci sono sottili differenze tra SELinux su
RHEL / Fedora e Ubuntu, il sito https://wiki.ubuntu.com/SELinux pro -
ti offre l'aiuto aggiuntivo di cui hai bisogno.
■ SELinux Project Wiki: questa è la pagina ufficiale del progetto SELinux. Diverse risorse
sono disponibili su questo sito, che si trova su http://selinuxproject.org.
■ Novità su SELinux: proprio come sembra, ci sono notizie attuali su SELinux all'indirizzo http: //
selinuxnews.org.

24
Sommario
SELinux fornisce un miglioramento della sicurezza a Linux ed è installato di default su molti
Distribuzioni Linux. In questo capitolo hai imparato i vantaggi di SELinux, come funziona, come
per configurarlo, come risolvere vari problemi con SELinux e come ottenere maggiori informazioni
su questo importante miglioramento della sicurezza.

SELinux a prima vista sembra piuttosto complicato. Tuttavia, dopo che è stato suddiviso in
vari componenti: modalità operative, contesti di sicurezza, tipi di policy e pacchetto di policy
età: puoi vedere come i vari pezzi lavorano insieme. Ogni componente ha un importante
ruolo per applicare e testare i requisiti di sicurezza scelti per la tua organizzazione.

Hai imparato i vari passaggi per configurare SELinux. Anche se SELinux è preconfigurato
Sicuramente, potrebbe essere necessario apportare alcune modifiche per soddisfare le esigenze di sicurezza della propria organizzazione.

695
Pagina 736

Parte V: apprendimento delle tecniche di sicurezza di Linux

Ogni componente ha i propri passaggi di configurazione e impostazioni da scegliere. Sebbene regola politica
la creazione non era coperta, hai imparato come modificare le politiche fornite tramite booleani.

SELinux fornisce un altro strumento per monitorare la sicurezza del tuo sistema Linux. Perché
SELinux registra tutte le negazioni di accesso, può aiutarti a determinare se un attacco è stato o è in corso
tentata. Anche i migliori piani fatti possono andare male. Pertanto, in questo capitolo, hai imparato
come risolvere i problemi comuni di configurazione di SELinux.

Nel prossimo capitolo imparerai come proteggere il tuo sistema Linux su una rete. Tu
informazioni sul controllo dell'accesso, sulla gestione dei firewall e sulla protezione dell'accesso remoto.

Esercizi
Usa questi esercizi per testare la tua conoscenza dell'uso di SELinux. Questi compiti presumono che tu sia
eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcune attività funzionino su altri
Anche sistemi Linux). Se sei bloccato, le soluzioni alle attività sono mostrate nell'Appendice B.
(sebbene in Linux ci siano spesso diversi modi per completare un'attività).

1. Non apportando modifiche al file di configurazione principale di SELinux, annotare il file


comando per impostare il sistema in Modalità operativa permissiva per SELinux.
2. Non apportando modifiche al file di configurazione principale di SELinux, annotare il file
comando per impostare il sistema in modalità Enforcing per SELinux.

3. Quali tipi di policy SELinux attuali e permanenti sono impostati nel sistema e come
li hai trovati?
4. Elencare il contesto di sicurezza per il file / etc / hosts e identificarne il diverso
attributi del contesto di sicurezza.

5. Crea un file chiamato test.html nella tua home directory e assegnane il tipo a
httpd_sys_content_t. (Questo è qualcosa che potresti fare per creare contenuto
disponibile per essere condiviso dal tuo server web al di fuori del comune / var / www / html
directory.)

6. Elencare il contesto di sicurezza per il processo crond in esecuzione e identificarne la sicurezza


attributi di contesto.

7. Crea un file chiamato /etc/test.txt, cambia il suo contesto di file in user_tmp_t,


ripristinarlo al suo contenuto corretto (il contesto predefinito per la directory / etc) e
rimuovere il file. Utilizzare il comando ls -Z /etc/test.txt per controllare il file in
ogni punto del processo.

8. Hai un server FTP sulla tua rete privata e vuoi consentire agli utenti di farlo
accedere a quel server con i loro normali account utente (mentre SELinux sta applicando
modalità). Determina quale booleano consente agli utenti di accedere alle loro directory home tramite
FTP e attiva quel booleano.

696

Pagina 737

Capitolo 24: Migliorare la sicurezza di Linux con SELinux

9. Quale comando elencherebbe tutti i moduli della politica di SELinux sul tuo sistema, insieme
con il loro numero di versione?
10. Prepara il tuo sistema per eseguire un server FTP vsftpd protetto da SELinux (I.
fatto questo su un sistema Fedora). Quindi accedi come un normale e prova a copiare un file (che
dovrebbe causare una negazione AVC) come segue:
# getenforce
Far rispettare
# yum installa vsftpd lftp rsyslog setroubleshoot-server
## systemctl
systemctl avvia
avvia vsftpd
syslog
# semodule -DB
# getsebool ftp_home_dir
ftp_home_dir -> off
# lftp -u chris localhost
Password: ********
lftp chris @ localhost: ~> inserisci / etc / services
put: Accesso non riuscito: 553 Impossibile creare il file. (Servizi)
lftp chris @ localhost: ~> esci

Il tuo compito è elencare il rifiuto AVC dai messaggi di registro del tuo sistema. Visualizza
informazioni sulla negazione e modificare il valore booleano per consentire l'accesso FTP, come il
La descrizione della negazione di AVC suggerisce.

24

697

Pagina 739
738

CAPITOLO

25
Protezione di Linux su una rete
IN QUESTO CAPITOLO
Gestione dei servizi di rete

Controllo dell'accesso ai servizi di rete

Implementazione di firewall

La serie di sfide quando si tratta di sicurezza. Il modo migliore per proteggere il tuo sistema Linux è
tenerlo fuori da tutte le reti. Tuttavia, questa è raramente un'opzione fattibile.
configurazione del sistema Linux su una rete, in particolare una rete pubblica, crea un intero nuovo
Interi libri sono stati riempiti di informazioni su come proteggere un computer su una rete.
Molte organizzazioni assumono amministratori di sicurezza informatica a tempo pieno per controllare la loro rete-
sistemi Linux collegati. Pertanto, considera questo capitolo come una breve introduzione alla sicurezza di Linux
su una rete.

Controllo dei servizi di rete


La maggior parte dei sistemi Linux utilizzati per le grandi imprese sono configurati come server che, come suggerisce il nome,
offrire servizi a client remoti su una rete. Un servizio di rete è qualsiasi attività che il computer
esegue richiedendo di inviare e ricevere informazioni sulla rete utilizzando alcuni set predefiniti
di regole. L'instradamento della posta elettronica è un servizio di rete, così come le pagine Web.
Un server Linux ha il potenziale per fornire migliaia di servizi. Molti di loro sono elencati nel
/ etc / services file. Considera le seguenti sezioni del file / etc / services:

$ cat / etc / services


# / etc / services:
# $ Id: servizi, v 1.55 2013/04/14 ovasik Exp $
#
# Servizi di rete, stile Internet
# Versione dei servizi IANA: ultimo aggiornamento 2013-04-10
#

699

Pagina 740

Parte V: apprendimento delle tecniche di sicurezza di Linux

# Si noti che attualmente è politica di IANA assegnare ...


# Ogni riga descrive un servizio ed è nella forma:
#
# nome-servizio porta / protocollo [alias ...] [# commento]
...
eco 7 / tcp
eco 7 / udp
scartare 9 / tcp sink null
scartare 9 / udp sink null
systat 11 / tcp utenti
systat 11 / udp utenti
giorno 13 / tcp
giorno 13 / udp
qotd 17 / tcp citazione
qotd 17 / udp citazione
...
chargen 19 / tcp ttytst sorgente
chargen 19 / udp ttytst sorgente
ftp-data 20 / tcp
ftp-data 20 / udp
# 21 è registrato su ftp, ma utilizzato anche da fsp
ftp 21 / tcp
...
http 80 / tcp www www-http # WorldWideWeb HTTP
http 80 / udp www www-http # Trasferimento HyperText
Protocollo
http 80 / sctp # Trasferimento HyperText
Protocollo
kerberos 88 / tcp kerberos5 krb5 # Kerberos v5
kerberos 88 / udp kerberos5 krb5 # Kerberos v5
...
blp5 48129 / udp # Localizzatore di Bloomberg
com-bardac-dw 48556 / tcp # com-bardac-dw
com-bardac-dw 48556 / udp # com-bardac-dw
iqobject 48619 / tcp # iqobject
iqobject 48619 / udp # iqobject

Dopo le righe di commento, notare tre colonne di informazioni. La colonna di sinistra contiene
il nome di ogni servizio. La colonna centrale definisce il numero di porta e il tipo di protocollo
utilizzato per quel servizio. La colonna di destra contiene un alias opzionale o un elenco di alias per
il servizio.

Molte distribuzioni Linux vengono fornite con servizi di rete non necessari in esecuzione. Un inutile
Il servizio sary espone il tuo sistema Linux ad attacchi dannosi. Ad esempio, se il tuo errore Linux
server è un server di stampa, quindi dovrebbe offrire solo servizi di stampa. Non dovrebbe anche
offrono servizi web Apache. Ciò esporrebbe solo inutilmente il tuo server di stampa a qualsiasi file
attacchi dannosi che sfruttano le vulnerabilità del servizio web.

700

Pagina 741
Capitolo 25: Protezione di Linux su una rete

Valutazione dell'accesso ai servizi di rete con nmap


Uno strumento meraviglioso per aiutarti a rivedere i tuoi servizi di rete dal punto di vista della rete è il
scanner di sicurezza nmap. L'utilità nmap è disponibile nella maggior parte dei repository di distribuzione Linux
e ha una pagina web piena di informazioni su http://nmap.org.

Per installare nmap su una distribuzione Fedora o RHEL, usa il comando yum (usando root
privilegi), come mostrato nell'esempio che segue.

# yum installa nmap -y


Plugin caricati: langpacks, product-id, subscription-manager
...
Risoluzione delle dipendenze
-> Esecuzione del controllo delle transazioni
---> Verrà installato il pacchetto nmap.x86_64 2: 6.40-4.el7
-> Risoluzione delle dipendenze finita

Dipendenze risolte
... Installazione:
nmap x86_64 2: 6.47-1.fc21y rhel-7-server-rpms 4.0 M
...
Installato: nmap-6.47-1.fc21

Completare!

Per installare l'utility nmap su una distribuzione Ubuntu, digita sudo apt-get install
nmap nella riga di comando.

Il nome completo dell'utilità nmap è Network Mapper. Ha una varietà di usi per la sicurezza
audit ed esplorazione della rete. Usare nmap per fare varie scansioni delle porte ti permette di vedere
quali servizi sono in esecuzione su tutti i server della rete locale e se lo sono
pubblicizzare la loro disponibilità.

Cos'è un porto? Le porte o, più correttamente, le porte di rete , sono valori numerici utilizzati dalla rete TCP e UDP
protocolli come punti di accesso ai servizi su un sistema. I numeri di porta standard vengono assegnati ai servizi, quindi un servizio
sa di ascoltare su un numero di porta particolare e un client sa di richiedere il servizio su quel numero di porta.
Ad esempio, la porta 80 è la porta di rete standard per il traffico non crittografato (HTTP) al servizio Web Apache. Quindi se
chiedi www.example.com dal tuo browser Web, il browser presume che tu intenda utilizzare la porta TCP 80 sul
server che offre quel contenuto Web. Pensa a una porta di rete come a una porta per il tuo server Linux. Ogni porta è numerata.
E dietro ogni porta c'è un servizio particolare in attesa di aiutare chi bussa a quella porta.

25
Per controllare le porte del tuo server, l'utility nmap offre diversi utili tipi di scansione. Il file nmap
site ha un intero manuale su tutte le tecniche di scansione delle porte che puoi usare

701

Pagina 742

Parte V: apprendimento delle tecniche di sicurezza di Linux

http://nmap.org/book/man-port-scanning-techniques.html. Qui ci sono due fondamentali


scansioni delle porte per iniziare a controllare il servizio:

■ Scansione porta connessione TCP: per questa scansione, nmap tenta di connettersi alle porte utilizzando
il protocollo TCP (Transmission Control Protocol) sul server. Se una porta è in ascolto, il
tentativo di connessione riuscito.
TCP è un protocollo di rete utilizzato nella suite di protocolli di rete TCP / IP. TCP è un file
protocollo orientato alla connessione. Il suo scopo principale è negoziare e avviare un file
connessione utilizzando quella che viene chiamata "stretta di mano a tre vie". TCP invia una sincronizzazione
pacchetto (SYN) a un server remoto, specificando un numero di porta specifico nel pacchetto.
Il server remoto riceve il SYN e risponde con un pacchetto di riconoscimento
(SYN-ACK) al computer di origine. Il server originale quindi riconosce
(ACK) la risposta e viene stabilita ufficialmente una connessione TCP. Questo a tre vie
la stretta di mano è spesso chiamata SYN-SYN-ACK o SYN, SYN-ACK, ACK.
Se si seleziona una scansione della porta TCP Connect, l'utilità nmap utilizza questa mano a tre
agitare per svolgere una piccola attività investigativa su un server remoto. Tutti i servizi che utilizzano
il protocollo TCP risponderà alla scansione.
■ Scansione porta UDP: per questa scansione, nmap invia un pacchetto UDP a ogni porta del file
sistema sottoposto a scansione. UDP è un altro protocollo popolare nella rete TCP / IP
suite di protocolli. A differenza di TCP, tuttavia, UDP è un protocollo senza connessione. Se la porta è
in ascolto e dispone di un servizio che utilizza il protocollo UDP, risponde alla scansione.

Tieni presente che le utilità FOSS (Free and Open Source Software) sono disponibili anche per coloro che hanno intenti dannosi.
Mentre esegui queste scansioni nmap, renditi conto che i risultati della scansione remota che vedi per il tuo server Linux sono i
stessi risultati della scansione che altri vedranno. Questo ti aiuterà a valutare le impostazioni di sicurezza del tuo sistema in termini di quanto
le informazioni vengono fornite alle scansioni delle porte. Tieni presente che dovresti usare strumenti come nmap solo da solo
sistemi, perché la scansione delle porte sui computer di altre persone può dare l'impressione che si stia tentando di entrare.

Quando esegui l'utilità nmap, fornisce un piccolo report pratico con informazioni sul file
sistema che stai scansionando e le porte che vede. Alle porte viene assegnato uno stato di "stato". nmap
riporta sei possibili stati di porta:

■ aperto: questo è lo stato più pericoloso che una scansione nmap può segnalare per una porta. Un
porta aperta indica che un server dispone di un servizio che gestisce le richieste su questa porta.
Pensalo come un segno sulla porta: "Vieni dentro! Siamo qui per aiutarvi." Ovviamente,
se offri un servizio pubblico, vuoi che il porto sia aperto.
■ closed: una porta chiusa è accessibile, ma non è presente alcun servizio in attesa sull'altra
lato di questa porta. Tuttavia, lo stato della scansione indica ancora che è presente un Linux
server a questo particolare indirizzo IP.
■ filtrata: questo è lo stato migliore per proteggere una porta che non si desidera nessuno
accedere. Non è possibile determinare se un server Linux è effettivamente in fase di scansione

702

Pagina 743

Capitolo 25: Protezione di Linux su una rete

Indirizzo IP. È possibile che un servizio sia in ascolto su una particolare porta, ma
il firewall blocca l'accesso a quella porta, impedendo di fatto qualsiasi accesso al file
servizio tramite la particolare interfaccia di rete.
■ non filtrato: la scansione nmap vede la porta ma non può determinare se la porta lo è
aperto o chiuso.
■ open | filtered: la scansione nmap vede la porta ma non può determinare se la porta lo è
aperto o filtrato.
■ closed | filtered: la scansione nmap vede la porta ma non può determinare se la porta
è chiuso o filtrato.

Per aiutarti a capire meglio come utilizzare l'utilità nmap, rivedi il seguente esempio.
Allo scopo di costruire un elenco di servizi di rete, vengono condotte le scansioni nmap di esempio
su un sistema Fedora. La prima scansione è una scansione TCP Connect dalla riga di comando, utilizzando l'estensione
indirizzo di loopback, 127.0.0.1.

# nmap -sT 127.0.0.1


Avvio di Nmap 5.51 ( http://nmap.org) a 2016-03-22 10:33 EDT
Rapporto di scansione Nmap per localhost.localdomain (127.0.0.1)

L'host è attivo (0,016 s di latenza).


Non mostrato: 998 porte chiuse

SERVIZIO DELLO STATO DI PORTO


25 / tcp aprire smtp
631 / tcp aperto ipp

Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 1,34 secondi

La scansione nmap di TCP Connect segnala che due porte TCP sono aperte e hanno servizi in ascolto
sull'host locale (127.0.0.1) per le richieste a queste porte:

■ Il protocollo SMTP (Simple Mail Transfer Protocol) è in ascolto sulla porta TCP 25.
■ IPP (Internet Printing Protocol) è in ascolto sulla porta TCP 631.

La prossima scansione nmap è una scansione UDP sull'indirizzo di loopback del sistema Fedora.

# nmap -sU 127.0.0.1

Avvio di Nmap 5.51 ( http://nmap.org) a 2016-03-22 10:36 EDT


Rapporto
L'host di scansione
è attivo Nmap
(0.00048s per localhost.localdomain (127.0.0.1)
di latenza).
Non mostrato: 997 porte chiuse
25
STATO DI PORTO SERVIZIO
68 / udp open | dhcpc filtrato

703

Pagina 744

Parte V: apprendimento delle tecniche di sicurezza di Linux

631 / udp open | ipp filtrato

Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 2,24 secondi

La scansione nmap UDP segnala che due porte UDP sono aperte e hanno servizi in ascolto
quelle porte:

■ Il client Dynamic Host Control Protocol (dhcpc) ​è in ascolto sulla porta 68.

■ Internet Printing Protocol (ipp) è in ascolto sulla porta 631.

Notare che l'IPP della porta 631 è elencato sia nella scansione TCP Connect di nmap che nella scansione UDP
perché il protocollo IPP utilizzava sia il protocollo TCP che il protocollo UDP e quindi è elencato in
entrambe le scansioni.

Usando queste due semplici scansioni nmap, TCP Connect e UDP, sul tuo indirizzo di loopback, tu
può creare un elenco dei servizi di rete offerti dal tuo server Linux.

Tieni presente che i numeri di porta sono associati a un particolare protocollo (TCP o UDP) e
una particolare interfaccia di rete. Ad esempio, se si dispone di una scheda di interfaccia di rete (NIC)
su un computer che si affaccia su Internet e su un altro che su una rete privata, potresti
vuoi offrire un servizio privato (come il servizio CUPS per la stampa) alla NIC sul tuo
rete vate. Ma potresti voler filtrare quella porta (631) sulla scheda NIC che si affaccia su Internet.

Utilizzo di nmap per controllare gli annunci dei servizi di rete


Probabilmente vuoi che molte persone visitino il tuo sito Web (servizio httpd). Probabilmente no
desidera che tutti su Internet possano accedere alle condivisioni di file SMB (servizio smb). Produrre
certo di separare correttamente l'accesso a questi due tipi di servizi, vuoi essere in grado
per verificare cosa può vedere uno scanner dannoso dei servizi disponibili sul tuo pubblico
interfacce di rete.

L'idea qui è di confrontare l'aspetto del tuo server Linux dall'interno rispetto a cosa
sembra dall'esterno. Se stabilisci che alcuni servizi di rete sono accessibili
che intendevi mantenere privati, puoi adottare misure per bloccarne l'accesso da
interfacce esterne.

Potresti essere tentato di saltare le scansioni dall'interno della rete interna della tua organizzazione. Non farlo. Attività dannose spesso
avviene dai dipendenti di un'azienda o da qualcuno che sia già penetrato nelle difese esterne.

Di nuovo, l'utilità nmap è di grande aiuto qui. Per avere una visione corretta di come il tuo server Linux
le porte sono visibili, è necessario eseguire scansioni da diverse posizioni. Ad esempio, un semplice file
l'audit imposterebbe le scansioni in questi luoghi:

704

Pagina 745
Capitolo 25: Protezione di Linux su una rete

■ Sul server Linux stesso

■ Da un altro server sulla stessa rete dell'organizzazione


■ Dall'esterno della rete dell'organizzazione

Negli esempi seguenti, viene condotta una parte di un semplice audit. L'utilità nmap viene eseguita su un file
Sistema Fedora, designato come "Host-A". Host-A è il server Linux i cui servizi di rete
devono essere protetti. Host-B è un server Linux, che utilizza la distribuzione Linux Mint ed è attivo
la stessa rete di Host-A.

Le impostazioni di sicurezza su vari componenti di rete, come il firewall del server e i router dell'azienda, dovrebbero essere tutte
essere considerato quando si eseguono scansioni di audit.

Per questo esempio di controllo, viene eseguita una scansione dall'Host-A, utilizzando non l'indirizzo di loopback, ma
l'indirizzo IP effettivo. Innanzitutto, l'indirizzo IP per Host-A viene determinato utilizzando ifconfig
comando. L'indirizzo IP è 10.140.67.23.

# ifconfig

lo Link encap: Local Loopback


inet addr: 127.0.0.1 Maschera: 255.0.0.0
inet6 addr: :: 1/128 Ambito: Host
UP LOOPBACK RUNNING MTU: 16436 Sistema metrico: 1
Pacchetti RX: 4 errori: 0 eliminati: 0 overruns: 0 frame: 0
Pacchetti TX: 4 errori: 0 eliminati: 0 overruns: 0 carrier: 0
collisioni: 0 txqueuelen: 0
Byte RX: 240 (240,0 b) Byte TX: 240 (240,0 b)

p2p1 Link encap: Ethernet HWaddr 08: 00: 27: E5: 89: 5A
inet addr: 10.140.67.23
Bcast: 10.140.67.255 Maschera: 255.255.255.0
inet6 addr: fe80 :: a00: 27ff: fee5: 895a / 64 Ambito: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Sistema metrico: 1
Pacchetti RX: 81 errori: 0 eliminati: 0 overruns: 0 frame: 0
Pacchetti TX: 102 errori: 0 eliminati: 0 overruns: 0 carrier: 0
collisioni: 0 txqueuelen: 1000
Byte RX: 50015 (48,8 KiB) Byte TX: 14721 (14,3 KiB)

Ora, utilizzando l'indirizzo IP Host-A, viene emessa una scansione TCP Connect di nmap dall'Host-A.
La scansione nmap va alla rete per condurre la scansione. Tutte le porte vengono segnalate come
avere uno stato di chiuso.
25
# nmap -sT 10.140.67.23
Avvio di Nmap 5.51 ( http://nmap.org) a 2016-03-22 10:33 EDT
Rapporto di scansione Nmap per 10.140.67.23

705

Pagina 746

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'host è attivo (0,010 secondi di latenza).


Tutte le 1000 porte scansionate su 10.140.67.23 sono chiuse

Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 1,48 secondi

La scansione nmap viene spostata dall'origine su Host-A all'origine su Host-B. Ora il TCP
La scansione della connessione viene tentata sulle porte dell'Host-A dalla riga di comando dell'Host-B.

$ nmap -sT 10.140.67.23


Avvio di Nmap 5.21 ( http://nmap.org) alle 2015-03-22 05:34 HADT

Nota: l'host sembra inattivo. Se è davvero alto,


ma bloccando i nostri ping probe, prova -PN

Nmap fatto: 1 indirizzo IP (0 host in su) scansionato in 0,11 secondi

Qui, nmap fornisce un utile suggerimento. L'host-A sembra essere inattivo o potrebbe semplicemente bloccare il file
sonde. Quindi un'altra scansione di nmap viene tentata da Host-B, usando il consiglio di nmap di disabilitare
le sonde ping della scansione tramite l'opzione -PN.
$ nmap -sT -PN 10.140.67.23
Avvio di Nmap 5.21 ( http://nmap.org) al 22-03-2016 05:55 HADT

Rapporto di scansione Nmap per 10.140.67.23

L'host è attivo (0,0015 secondi di latenza).


Tutte le 1000 porte scansionate su 10.140.67.23 vengono filtrate

Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 5,54 secondi

Puoi vedere che Host-A (10.140.67.23) è attivo e in esecuzione e tutte le sue porte hanno uno stato di
filtrato. Ciò significa che è presente un firewall su Host-A. Queste scansioni da Host-B danno
hai un'idea migliore di ciò che uno scanner dannoso potrebbe vedere durante la scansione del tuo server Linux.
In questo esempio, lo scanner dannoso non vedrebbe molto.

Se hai familiarità con nmap, sai che la scansione TCP SYN è la scansione predefinita utilizzata da nmap. La scansione TCP SYN
fa un ottimo lavoro nel sondare un sistema remoto in modo furtivo. Perché stai sondando il tuo sistema per
per scopi di controllo della sicurezza, ha senso utilizzare le scansioni di utilità nmap più "pesanti". Se vuoi ancora usare
durante la scansione TCP SYN, il comando è nmap -sS ip_address.

I servizi attualmente in esecuzione su Host-A non sono così "succosi". Nell'esempio che segue,
un altro servizio, ssh, viene avviato su Host-A utilizzando il comando systemctl (vedere il Capitolo 15).
Questo dovrebbe dare all'utilità nmap un obiettivo più interessante da cercare.

706

Pagina 747

Capitolo 25: Protezione di Linux su una rete

# systemctl avvia sshd.service


# systemctl stato sshd.service
sshd.service - Demone del server OpenSSH
Loaded: caricato (/lib/systemd/system/sshd.service; disabilitato)
Attivo: attivo (in esecuzione) dal
Giovedì, 22 marzo 2016 10:57:24 -0400; 12s fa
PID principale: 1750 (sshd)
CGroup: nome = systemd: /system/sshd.service
└1750 / usr / sbin / sshd -D

Inoltre, poiché il firewall di Host-A sta bloccando le scansioni nmap da Host-B, lo sarebbe
interessante vedere cosa può segnalare una scansione nmap quando il firewall è inattivo. L'esempio
quello che segue mostra che il firewall è disabilitato su Host-A per un sistema Fedora 21 o RHEL 7
(per altri sistemi, probabilmente è necessario disabilitare il servizio iptables):

# systemctl arresta firewalld.service


# systemctl status firewalld.service

Con un nuovo servizio in esecuzione e il firewall di Host-A abbassato, le scansioni nmap dovrebbero trovare
qualcosa. Di seguito, le scansioni nmap vengono eseguite di nuovo da Host-B. Questa volta il file nmap
L'utility mostra il servizio ssh in esecuzione sulla porta 22 aperta. Notare che il firewall è disattivato
Host-A, entrambe le scansioni nmap raccolgono molte più informazioni. Questo dimostra davvero il
importanza del firewall del tuo server Linux.

# nmap -sT 10.140.67.23


Avvio di Nmap 5.21 ( http://nmap.org) a 2012-03-22 06:22 HADT
Rapporto di scansione Nmap per 10.140.67.23
L'host è attivo (0,016 s di latenza).
Non mostrato: 999 porte chiuse

SERVIZIO DELLO STATO DI PORTO


22 / tcp aprire ssh

Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 0.40 secondi

# nmap -sU 10.140.67.23


[sudo] password per johndoe: ***************
Avvio di Nmap 5.21 ( http://nmap.org) a 2012-03-22 06:22 HADT
Rapporto di scansione Nmap per 10.140.67.23
L'host è attivo (0.00072s di latenza).
Non mostrato: 997 porte chiuse

STATO DI PORTO SERVIZIO


68 / udp open | dhcpc filtrato
631 / udp open | ipp filtrato 25
...
Nmap completato: 1 indirizzo IP (1 host in su) scansionato in 1081,83 secondi
707

Pagina 748

Parte V: apprendimento delle tecniche di sicurezza di Linux

Per condurre una verifica approfondita, assicurati di includere la scansione UDP. Inoltre, ci sono
scansioni nmap aggiuntive che potrebbero essere utili per la tua organizzazione. Guarda il nmap
sito Web dell'utilità per ulteriori suggerimenti.

Se hai seguito e hai abbassato il firewall del tuo server per condurre queste scansioni nmap , assicurati di aumentarlo
di nuovo: systemctl avvia firewalld.service.

Devi ancora implementare i controlli per quei servizi che il tuo server Linux dovrebbe offrire. Uno
modo per ottenere ciò è tramite wrapper TCP.

Controllo dell'accesso ai servizi di rete


Disabilitare completamente un servizio inutilizzato va bene, ma per i servizi di rete necessari, è necessario
impostare il controllo degli accessi. Questo controllo di accesso necessario può essere ottenuto tramite / etc /
hosts.allow e /etc/hosts.deny, per servizi selezionati su sistemi Linux che
incorporare il supporto per TCP Wrapper.

Se ha il supporto per TCP Wrapper, un servizio di rete usa libwrap. Per verificare la presenza di libwrap, tu
può eseguire il comando ldd sul daemon del servizio di rete. Il seguente esempio mostra
che il demone ssh usa i wrapper TCP. Se sshd del tuo sistema Linux non usa TCP
Wrapper, quindi non viene visualizzato alcun output.

$ ldd / usr / sbin / sshd | grep libwrap


libwrap.so.0 => /lib/libwrap.so.0 (0x0012f000)

Quando viene richiesto un servizio di rete che incorpora il supporto TCP Wrapper, gli host.
I file allow e hosts.deny vengono scansionati e controllati per una voce che corrisponde al file
indirizzo del sistema remoto che effettua la richiesta. I seguenti passaggi si verificano quando un remote
il sistema richiede l'accesso a un servizio supportato da TCP Wrapper:

1. Il file hosts.allow viene controllato.

■ Se è elencato l'indirizzo del sistema remoto:


■ L'accesso è consentito.
■ Non vengono effettuati ulteriori controlli TCP Wrapper.
■ Se l'indirizzo del sistema remoto non è elencato, il processo di controllo del wrapper TCP
continua nel file hosts.deny.

2. Il file hosts.deny viene controllato.


■ Se è elencato l'indirizzo del sistema remoto, l'accesso viene negato.
■ Se l'indirizzo del sistema remoto non è elencato, l'accesso è consentito.

708

Pagina 749

Capitolo 25: Protezione di Linux su una rete


L'ordine in cui vengono valutati i file host è importante. Ad esempio, non puoi
negare l'accesso a un host nel file hosts.deny a cui è già stato concesso l'accesso nel file
hosts.allow file.

Non è necessario elencare ogni singolo indirizzo che potrebbe tentare di connettersi al computer. Il
I file hosts.allow e hosts.deny consentono di specificare intere sottoreti e gruppi di file
indirizzi. È anche possibile utilizzare la parola chiave ALL per specificare tutti i possibili indirizzi IP. Anche tu
può limitare voci specifiche in questi file in modo che si applichino solo a servizi di rete specifici.
Considera il seguente esempio di una tipica coppia di file hosts.allow e hosts.deny.

# cat /etc/hosts.allow
# hosts.allow Questo file descrive i nomi degli host che sono
# ha permesso di utilizzare i servizi INET locali, come deciso
# dal server "/ usr / sbin / tcpd".
#
sshd: 199.170.177.
vsftpd: ALL
#
# cat /etc/hosts.deny
# hosts.deny Questo file descrive i nomi degli host che sono
# * non * autorizzato a utilizzare i servizi INET locali, come
# deciso dal server "/ usr / sbin / tcpd".
#
TUTTO TUTTO

Nei file hosts, le righe che iniziano con un carattere # sono commenti e vengono ignorate. Altro
le righe sono costituite da un elenco separato da virgole di nomi di servizi seguito da due punti (:)
e quindi un elenco separato da virgole di indirizzi client da controllare. In questo contesto, un cliente è
qualsiasi computer che tenta di accedere a un servizio di rete sul sistema.

L'esempio precedente è una configurazione piuttosto restrittiva. La linea:

sshd: 199.170.177.

nel file hosts.allow consente le connessioni ai servizi sshd da alcuni remoti


sistemi. La linea:

vsftpd: ALL

consente a tutti i sistemi remoti di connettersi al servizio FTP, vsftpd. Tuttavia, se il telecomando
il sistema non richiede una connessione a sshd o vsftpd, l'accesso gli è stato negato da
riga nel file hosts.deny:

TUTTO TUTTO

Una voce client può essere un indirizzo IP numerico (come 199.170.177.25) o un nome host (come 25
come jukebox.linuxtoys.net). Spesso viene utilizzata una variazione con caratteri jolly che specifica un intero
intervallo di indirizzi. Notare nel file host.allow di esempio, l'IP consentito della voce sshd
l'indirizzo è 199.170.177. Corrisponde a qualsiasi indirizzo IP che inizia con quella stringa, ad esempio

709

Pagina 750

Parte V: apprendimento delle tecniche di sicurezza di Linux

199.170.177.25. Il carattere jolly ALL utilizzato nel file hosts.deny specifica che all
sistemi remoti che raggiungono questo file, richiedendo qualsiasi rete supportata da TCP Wrapper
servizi, sono negati.

Il carattere jolly ALL è stato utilizzato anche nel file hosts.allow di esempio per il servizio vsftpd , indicando TCP Wrapper
per consentire a qualsiasi host di connettersi al servizio FTP sul sistema Linux. Questo è appropriato per eseguire un file
server FTP anonimo a cui chiunque su Internet può accedere. Se non stai eseguendo un sito FTP anonimo, tu
potrebbe non voler utilizzare il flag ALL qui.

Una buona regola generale è quella di rendere il tuo file hosts.deny il più restrittivo possibile e poi
abilita esplicitamente solo i servizi di cui hai veramente bisogno.

Insieme ai wrapper TCP, i firewall controllano anche l'accesso alle porte del tuo sistema Linux.
In effetti, i firewall fanno molto di più che proteggere i servizi di rete.

Lavorare con i firewall


Un firewall in un edificio è un muro ignifugo che impedisce la propagazione del fuoco attraverso il
costruzione. Un firewall per un computer blocca la trasmissione di dati dannosi o indesiderati
dentro e fuori un sistema informatico o una rete. Ad esempio, un firewall può bloccare i dannosi
esegue la scansione dalle porte del server Linux. Un firewall può anche consentire gli aggiornamenti software desiderati a
scaricare sullo stesso server.

Capire i firewall
Sebbene tu possa pensare a un firewall come a una barriera completa, un firewall è davvero giusto
un filtro che controlla ogni pacchetto di rete o richiesta di applicazione in entrata o in uscita da un file
sistema informatico o rete.

Cos'è un pacchetto di rete? Un pacchetto di rete è un dato che è stato suddiviso in blocchi trasmissibili. I pezzi
oppure i pacchetti hanno dati aggiuntivi aggiunti mentre attraversano il modello OSI. È come mettere una lettera
all'interno di una busta in ogni fase mentre si sposta verso il basso. Uno degli scopi di questi dati aggiuntivi è garantire che il pacchetto
E 'arrivo a destinazione sicuro e intatto. I dati aggiuntivi vengono rimossi dal pacchetto mentre esegue il backup del file
Modello OSI a destinazione (come togliere la busta esterna e consegnare la lettera allo strato superiore).

I firewall possono essere inseriti in diverse categorie, a seconda della loro funzione. Ogni
categoria ha un posto importante nella protezione del server e della rete.

710

Pagina 751

Capitolo 25: Protezione di Linux su una rete

■ Un firewall è basato sulla rete o sull'host. Un firewall basato sulla rete è


uno che protegge l'intera rete o sottorete. Un esempio di rete
il firewall è sul posto di lavoro, dove la rete dovrebbe essere protetta da un file
lo screening del firewall del router.
Un firewall basato su host è quello in esecuzione e che protegge un singolo host
o server. Molto probabilmente hai un firewall sul tuo PC a casa. Questo è un host
firewall. Un altro esempio di firewall basato su host è l'applicazione firestarter.
Puoi saperne di più su firestarter su http://www.fs-security.com.
■ Un firewall è un firewall hardware o software. È possibile individuare i firewall
sui dispositivi di rete, come i router. I loro filtri sono configurati nel router
firmware. A casa tua, il tuo provider di servizi Internet (ISP) potrebbe fornire un DSL o
modem via cavo per accedere a Internet. Il modem contiene il firmware del firewall
ed è considerato un firewall hardware.
I firewall possono essere posizionati su un sistema informatico come un'applicazione. L'applicazione
consente di impostare regole di filtraggio che filtrano il traffico in entrata. Questo è un esempio
di un firewall software. Un firewall software è anche chiamato firewall basato su regole.
■ Un firewall è un filtro a livello di rete o un filtro a livello di applicazione. UN
il firewall che esamina i singoli pacchetti di rete è anche chiamato filtro dei pacchetti . UN
Il firewall a livello di rete consente solo a determinati pacchetti di entrare e uscire dal sistema.
Funziona sui livelli inferiori del modello di riferimento OSI.
Un firewall a livello di applicazione filtra i livelli superiori del modello di riferimento OSI.
Questo firewall consente solo ad alcune applicazioni di accedere al / dal sistema.

Puoi vedere come queste categorie di firewall si sovrappongono. La migliore configurazione del firewall è una combinazione
di tutte le categorie. Come con molte pratiche di sicurezza, più livelli hai, più difficile è
serve a penetrare attività dannose.

Implementazione di firewall
Su un sistema Linux, il firewall è un firewall software gestito a livello di rete, basato su host
dall'utilità iptables. Con iptables, puoi creare una serie di regole per ogni file
pacchetto di rete proveniente dal tuo server Linux. Puoi perfezionare le regole per consentire
traffico di rete da una posizione ma non da un'altra. Queste regole essenzialmente fanno
creare un elenco di controllo dell'accesso alla rete per il server Linux.

Fedora, RHEL e altre distribuzioni Linux hanno aggiunto il servizio firewalld


top di iptables, per fornire un modo più dinamico di gestire le regole del firewall. Il firewall
La finestra di configurazione (comando firewall-config) fornisce un modo semplice per aprire le porte
sul tuo firewall e fai il masquerading (instradando indirizzi privati ​a una rete pubblica)
o port forwarding. Il servizio firewalld può reagire ai cambiamenti nelle condizioni, che
25
il servizio iptables statico non può fare altrettanto bene da solo. Abilitando l'accesso a un servizio,
firewalld può anche fare cose come caricare i moduli necessari per consentire l'accesso a un servizio.

711
Pagina 752

Parte V: apprendimento delle tecniche di sicurezza di Linux

L'utility iptables gestisce il firewall Linux, chiamato netfilter. Quindi, vedrai spesso il firewall Linux
denominato netfilter / iptables.

A partire da firewalld
Il servizio firewalld potrebbe essere già installato sul tuo sistema Linux. Se non lo è, puoi
installare il servizio e l'interfaccia utente grafica associata, quindi avviare il fuoco-
servizio walld come segue:

# yum installa firewalld firewall-config


# systemctl avvia firewalld.service
# systemctl abilita firewalld.service

Per gestire il servizio firewalld, è possibile avviare la finestra Configurazione firewall. Fare
questo digitando:

# firewall-config &

La Figura 25.1 mostra un esempio della finestra Configurazione firewall.

FIGURA 25.1

Configurazione firewall

712

Pagina 753

Capitolo 25: Protezione di Linux su una rete

Se tutto ciò che devi fare è aprire alcune porte del firewall per consentire l'accesso a servizi selezionati, questo è
molto facile da fare dalla finestra Configurazione firewall. Con la zona pubblica selezionata,
è sufficiente fare clic sui servizi che si desidera aprire. Viene aperta la porta che consente l'accesso a quel servizio
immediatamente (quando si seleziona la configurazione Runtime) e aperto in modo permanente (quando
si seleziona la configurazione permanente).
Una caratteristica interessante della finestra Configurazione firewall è che, quando selezioni per consentire
accesso a un servizio, fai molto di più che aprire una porta. Ad esempio, abilitare l'FTP
il servizio causa anche il caricamento dei moduli di tracciamento della connessione che consentono porte non standard
a cui accedere tramite il firewall quando necessario.

Come accennato in precedenza, alla base del servizio firewalld c'è la funzione iptables. Se tu
avere un sistema Linux senza il servizio firewalld (o con firewalld disabilitato),
puoi ancora usare il servizio iptables. La sezione successiva descrive come impostare
Il firewall iptables regola manualmente e utilizza direttamente il servizio iptables, senza l'estensione
servizio firewalld.

Comprendere l'utilità iptables


Prima di iniziare a modificare le regole del firewall tramite l'utilità iptables, è necessario
comprendere le nozioni di base di netfilter / iptables, che includono quanto segue:

■ Tabelle

■ Catene

■ Politiche

■ Regole

Ciascuna di queste basi è fondamentale per configurare e gestire il tuo server Linux
firewall correttamente.

tabelle netfilter / iptables


Il firewall iptables ha la capacità di fare molto di più del semplice filtraggio dei pacchetti di basso livello.
Definisce il tipo di funzionalità del firewall in corso. Ci sono quattro tavoli in
l'utility iptables, con una tabella aggiuntiva aggiunta da SELinux. I tavoli offrono il
seguenti funzionalità:

■ filtro: la tabella dei filtri è la funzione di filtraggio dei pacchetti del firewall. In questo
table, le decisioni di controllo degli accessi vengono prese per i pacchetti che viaggiano da, verso e attraverso
il tuo sistema Linux.
■ nat: la tabella nat viene utilizzata per NAT (Network Address Translation). I firewall possono essere
impostato per NAT, che è una funzione di sicurezza diversa dal filtraggio dei pacchetti. 25
■ mangle: come sospetti, i pacchetti vengono alterati (modificati) in base alle regole in
il tavolo mangle. I pacchetti di manipolazione vengono utilizzati nella traduzione degli indirizzi di rete.

713

Pagina 754

Parte V: apprendimento delle tecniche di sicurezza di Linux

■ raw: la tabella raw viene utilizzata per esentare determinati pacchetti di rete da qualcosa
chiamato "monitoraggio della connessione". Questa funzione è importante quando si utilizza la rete
Indirizzo di traduzione e virtualizzazione sul tuo server Linux.
■ sicurezza: questa tabella è disponibile solo sulle distribuzioni Linux che hanno SELinux
(vedere Capitolo 24, "Migliorare la sicurezza di Linux con SELinux"). Il tavolo di sicurezza
viene utilizzato per filtrare i pacchetti di rete utilizzando le regole MAC (vedere il Capitolo 22). Questo tavolo è
utilizzato con la tabella dei filtri. Le regole della tabella di sicurezza vengono applicate solo dopo il
vengono applicate le regole nella tabella dei filtri. In questo modo vengono applicate solo le regole MAC
dopo che le regole DAC (vedere il Capitolo 22) sono state applicate, il che è coerente con SELinux
implementazione.

Di tutte le tabelle elencate, tre si concentrano sulla traduzione degli indirizzi di rete. Pertanto, il filtro
table è la tabella principale su cui concentrarsi per il filtraggio dei pacchetti firewall di base.

catene netfilter / iptables


Il firewall netfilter / iptables classifica i pacchetti di rete in categorie, chiamate
Catene. Ci sono cinque catene (categorie) che un pacchetto di rete può essere designato come,
come segue:

■ INPUT: pacchetti di rete in arrivo nel server Linux


■ FORWARD: pacchetti di rete in arrivo nel server Linux che devono essere instradati
altrove
■ OUTPUT: pacchetti di rete in uscita dal server Linux
■ PREROUTING: utilizzato da NAT, per modificare i pacchetti di rete quando entrano
il server Linux
■ POSTROUTING: utilizzato da NAT, per modificare i pacchetti di rete prima che vengano emessi
del server Linux
Quale tabella netfilter / iptables scegli di lavorare determina quali sono le catene
disponibile per la categorizzazione dei pacchetti di rete. La Tabella 25.1 mostra quali catene sono disponibili
per ogni tavolo.

TABELLA 25.1 Catene disponibili per ogni tabella netfilter / iptables

tavolo Catene disponibili

filtro INPUT, FORWARD, OUTPUT


nat PREROUTING, OUTPUT, POSTROUTING
mangle INPUT, FORWARD, PREROUTING, OUTPUT, POSTROUTING

crudo PREROUTING, OUTPUT

sicurezza INPUT, FORWARD, OUTPUT

714

Pagina 755

Capitolo 25: Protezione di Linux su una rete

Dopo che un pacchetto di rete è stato classificato in una catena specifica, iptables può determinare cosa
politiche o regole si applicano a quel particolare pacchetto.

regole, criteri e obiettivi di netfilter / iptables


Per ogni pacchetto di rete, è possibile impostare una regola che definisce cosa fare con quell'individuo
pacchetto. I pacchetti di rete possono essere identificati in molti modi da netfilter / iptables
firewall. Questi sono alcuni dei modi:

■ Indirizzo IP di origine
■ Indirizzo IP di destinazione

■ Protocollo di rete
■ Porta in entrata
■ Porta in uscita
■ Stato della rete

Se non esiste alcuna regola per un particolare pacchetto, viene utilizzata la politica generale. Ogni pacchetto
categoria o catena ha una politica predefinita. Dopo che un pacchetto di rete corrisponde a un particolare
regola o rientra nella politica predefinita, può verificarsi un'azione sul pacchetto. L'azione intrapresa
dipende da quale target di iptable è impostato. Ecco un paio di azioni (obiettivi) che
puo `essere preso:

■ ACCETTA: il pacchetto di rete viene accettato nel server.


■ REJECT:il pacchetto di rete viene ignorato e non è consentito nel server. Un rifiuto
messaggio viene inviato.
■ DROP: il pacchetto di rete viene rilasciato e non è consentito nel server. Nessun rifiuto
messaggio viene inviato.

Mentre REJECT invia un messaggio di rifiuto, DROP è silenzioso. Puoi considerare l'utilizzo di REJECT
per i dipendenti interni, a cui dovrebbe essere comunicato che stai rifiutando la loro rete in uscita
traffico e perché. Prendi in considerazione l'utilizzo di DROP per il traffico in entrata in modo che qualsiasi personale malintenzionato
non sanno che il loro traffico è stato bloccato.

Ci sono un paio di obiettivi aggiuntivi più sofisticati per iptables, come QUEUE. Puoi saperne di più
su questi obiettivi tramite il comando man iptables.

L'utilità iptables implementa un firewall software utilizzando la tabella dei filtri tramite i criteri
e regole. Ora che hai una comprensione generale dell'implementazione del firewall software 25
si può iniziare a scavare più a fondo nei comandi specifici per l'implementazione del firewall
tramite l'utility iptables.

715
Pagina 756

Parte V: apprendimento delle tecniche di sicurezza di Linux

Utilizzando l'utility iptables


Il tuo server Linux dovrebbe essere fornito con il firewall attivo e funzionante. Comunque è una buona idea
per controllare e vedere se è davvero abilitato. Prima di controllare, devi prima capirlo
i servizi firewall netfilter / iptables sono leggermente diversi a seconda del file
Distribuzione Linux:

■ RHEL 6 o versioni precedenti del firewall netfilter / iptables : il servizio di interfaccia del firewall
in esecuzione su questa distribuzione è iptables. Per vedere se questo servizio firewall è in esecuzione,
digitare service iptables status sulla riga di comando.
■ Per abilitare il firewall, digitare service iptables start nella riga di comando.
■ Per disabilitare il firewall, digitare service iptables stop nella riga di comando.
■ RHEL 7 e i recenti sistemi Fedora netfilter / iptables firewall : il firewall
Il servizio di interfaccia in esecuzione su queste distribuzioni è firewalld. Il iptables
il servizio non viene eseguito direttamente per impostazione predefinita su questi sistemi. Per vedere se questo firewall
service è in esecuzione, digitare systemctl status firewalld.service in
riga di comando.
■ Per abilitare il firewall, digitare systemctl start firewalld.service in
riga di comando.
■ Per disabilitare il firewall, digitare systemctl stop firewalld.service in
riga di comando.
■ Ubuntu netfilter / iptables firewall : il servizio di interfaccia firewall in esecuzione
questa distribuzione è ufw. Per vedere se il servizio firewall è in esecuzione, digita sudo ufw
status nella riga di comando. Il servizio ufw è un'interfaccia per iptables
utilità che non viene eseguita come servizio su Ubuntu. Puoi usare i comandi ufw per
manipolare le regole del firewall. Tuttavia, tutti i comandi dell'utilità iptables sono ancora
valido per Ubuntu:
■ Per abilitare il firewall, digitare sudo ufw enable nella riga di comando.
■ Per disabilitare il firewall, digitare sudo ufw disable nella riga di comando.

Per fortuna, dopo aver controllato lo stato e abilitato o disabilitato netfilter /


iptables firewall, finiscono le differenze tra le distribuzioni.

Per vedere quali criteri e regole sono attualmente in vigore per la tabella dei filtri, digita iptables
-t filtro -vnL nella riga di comando. Nell'esempio che segue, questo comando è
inserito su un sistema Linux Mint.

# iptables -t filtro -vnL


Chain INPUT (policy ACCEPT 0 pacchetti, 0 byte) ...

Notare che sui sistemi con firewalld abilitato, ci sono molte più catene di iptables e
regole elencate per impostazione predefinita rispetto a quelle a cui potresti essere abituato su un sistema che utilizza direttamente iptables. Questo
è fatto per offrire una maggiore flessibilità nella costruzione dei firewall consentendo la divisione delle regole
in zone per diversi tipi di interfacce.

716

Pagina 757

Capitolo 25: Protezione di Linux su una rete

Nell'esempio precedente viene mostrata solo la prima riga dell'output di iptables. Quella linea
mostra che la politica predefinita della catena INPUT viene applicata a tutti i pacchetti di rete che non lo fanno
corrisponde a un'altra regola. Attualmente, sono impostati tutti i criteri di INPUT, FORWARD e OUTPUT predefiniti
accettare. Tutti i pacchetti di rete possono entrare, attraversare e uscire. Un firewall in questo stato è
essenzialmente disabilitato fino a quando non vengono aggiunte regole REJECT o DROP specifiche.

Se il tuo server Linux ha a che fare con pacchetti di rete IP v6, puoi utilizzare l'utility ip6tables per gestire il tuo
wall per indirizzi IPv6. L'utilità ip6tables è quasi identica all'utilità iptables. Per maggiori informazioni,
digita man ip6tables nella riga di comando.

Modifica delle politiche e delle regole di iptables


Prima di iniziare a modificare il firewall netfilter / iptables, è utile capire
alcune opzioni di comando. Di seguito sono riportate alcune opzioni per modificare il firewall:

■- tabella t

Il comando iptables elencato insieme a questa opzione viene applicato alla tabella . Di
impostazione predefinita, viene utilizzata la tabella dei filtri. Esempio:
# iptables -t filter -P OUTPUT DROP

■- Obiettivo catena P.
Imposta la politica generale per una catena particolare . Le regole della catena vengono controllate
per le partite. Se non si verifica alcuna corrispondenza, viene utilizzato il target elencato della catena . Esempio:
# iptables -P INPUT ACCEPT

■- Una catena

Imposta una regola, chiamata "regola aggiunta", che è un'eccezione alla politica generale
per la catena designata. Esempio:
# iptables -A OUTPUT -d 10.140.67.25 -j REJECT

■- Io governo # catena

Inserisce una regola aggiunta in una posizione specifica, designata dalla regola # , nel file
elenco di regole aggiunto per la catena designata. Esempio:
# iptables -I 5 INPUT -s 10.140.67.23 -j DROP

■- Regola catena D n.

Elimina una regola particolare, designata dalla regola # , dalla catena designata.
Esempio:
25
# iptables -D INPUT 5

■- j target

717

Pagina 758

Parte V: apprendimento delle tecniche di sicurezza di Linux

Se i criteri nella regola vengono soddisfatti, il firewall dovrebbe passare a questo designato
destinazione per l'elaborazione. Esempio:
# iptables -A INPUT -s 10.140.67.25 -j DROP

■- d indirizzo IP

Assegna la regola elencata da applicare all'indirizzo IP di destinazione designato .


Esempio:
# iptables -A OUTPUT -d 10.140.67.25 -j REJECT

■- s indirizzo IP

Assegna la regola elencata da applicare all'indirizzo IP di origine designato . Esempio:


# iptables -A INPUT -s 10.140.67.24 -j ACCETTA

■- protocollo p

Assegna la regola elencata da applicare al protocollo designato. Esempio:


# iptables -A INPUT -p icmp -j DROP

■- porta dport #

Assegna la regola elencata da applicare a determinati pacchetti di protocollo in arrivo nella


porta nata # . Esempio:
# iptables -A INPUT -p tcp --dport 22 -j DROP

■- porta sportiva n.

Assegna la regola elencata da applicare a determinati pacchetti di protocollo che escono dal design
porta nata # . Esempio:
# iptables -A OUTPUT -p tcp --sport 22 -j ACCETTA

■- m state - stato dello stato della rete

Assegna la regola elencata da applicare agli stati di rete designati . Esempio:


# iptables -A INPUT -m state --state RELATED, ESTABLISH -j ACCEPT

Per vedere come funzionano le opzioni di iptables, considera il seguente esempio. Hai un Linux
server (Host-A) all'indirizzo IP 10.140.67.23. Ci sono altri due server Linux sul tuo
Rete. Uno è Host-B
10.140.67.25. Il tuo all'indirizzo IP 10.140.67.22
obiettivo è realizzare e l'altro è Host-C all'indirizzo IP
quanto segue:

■ Consentire a Host-C l'accesso completo a Host-A.

■ Blocca le connessioni di accesso remoto utilizzando ssh da Host-B a Host-A.

718

Pagina 759

Capitolo 25: Protezione di Linux su una rete

Impostazione di una politica di Drop. Il codice seguente mostra i criteri predefiniti del firewall dell'Host-A.
In questo esempio, il firewall è completamente aperto senza alcuna restrizione implementata. Non ci sono regole
impostato e le politiche sono tutte impostate su ACCETTA.

# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​sorgente destinazione
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​sorgente destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​sorgente destinazione

Innanzitutto, cosa accadrebbe se la politica INPUT venisse modificata da ACCEPT a DROP? Voluto
che raggiungono l'obiettivo? Guarda cosa succede quando viene provato. Ricorda che se non ci sono regole
elencato per un pacchetto in arrivo, viene seguita la politica della catena. Questa modifica viene apportata a
Il firewall di Host-A nell'esempio che segue.

# iptables -P INPUT DROP


# iptables -vnL
Catena INPUT (policy DROP )
destinazione prot opt ​sorgente destinazione
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​sorgente destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​sorgente destinazione

Per i criteri, non è possibile impostare l'obiettivo su REJECT. Non riesce e viene visualizzato il messaggio "iptables: Bad policy name".
Usa invece DROP come politica.

Host-B tenta di eseguire il ping di Host-A e quindi tenta una connessione ssh come mostrato nel file
esempio che segue. Come puoi vedere, entrambi i tentativi falliscono. Perché i comandi ping sono
bloccato, questo non soddisfa l'obiettivo di bloccare solo le connessioni di accesso remoto utilizzando ssh
da Host-B.

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.

--- 10.140.67.23 statistiche ping ---


2 pacchetti trasmessi, 0 ricevuti, perdita di pacchetti 100% , tempo 1007 ms
$ ssh root@10.140.67.23
25
ssh: connessione all'host 10.140.67.23 porta 22: connessione scaduta

719

Pagina 760
Parte V: apprendimento delle tecniche di sicurezza di Linux

Quando Host-C tenta di eseguire il ping di Host-A e di stabilire una connessione ssh, entrambi i tentativi falliscono.
Pertanto, viene confermato che l'impostazione del firewall, la politica INPUT è uguale a DROP, non è ciò che è
necessario per raggiungere l'obiettivo.

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.

--- 10.140.67.23 statistiche ping ---


2 pacchetti trasmessi, 0 ricevuti, perdita di pacchetti 100%, tempo 1008 ms
$ ssh root@10.140.67.23

ssh: connessione all'host 10.140.67.23 porta 22: connessione scaduta

Blocco di un indirizzo IP di origine. E se invece solo l'indirizzo IP di Host-B fosse bloccato? Quella
consentirebbe a Host-C di raggiungere Host-A. Questa impostazione raggiungerebbe l'obiettivo desiderato?

Nell'esempio che segue, la politica di DROP deve essere prima modificata in ALLOW in Host-
Iptables di A. Dopodiché, è necessario aggiungere una regola specifica per bloccare i pacchetti di rete
Solo l'indirizzo IP di Host-B, 10.140.67.22.

# iptables -P INPUT ACCEPT


# iptables -A INPUT -s 10.140.67.22 -j DROP
# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​sorgente destinazione
DROP all - 10.140.67.22 in qualunque posto
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​sorgente destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​sorgente destinazione

Host-C ora può eseguire correttamente il ping e ssh in Host-A, raggiungendo uno degli obiettivi prefissati.

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.
64 byte da 10.140.67.23: icmp_req = 1 ttl = 64 tempo = 11,7 ms
64 byte da 10.140.67.23: icmp_req = 2 ttl = 64 time = 0.000 ms

--- 10.140.67.23 statistiche ping ---


2 pacchetti trasmessi, 2 ricevuti, 0% di perdita di pacchetti , tempo 1008 ms
rtt min / avg / max / mdev = 0,000 / 5,824 / 11,648 / 5,824 ms
$ ssh root@10.140.67.23
Password di root@10.140.67.23 :

720

Pagina 761

Capitolo 25: Protezione di Linux su una rete

Tuttavia, Host-B non può né eseguire il ping né ssh in Host-A. Pertanto, la regola aggiunta non lo è
abbastanza ciò che è necessario per raggiungere l'intero obiettivo.

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.
--- 10.140.67.23 statistiche ping ---
2 pacchetti trasmessi, 0 ricevuti, perdita di pacchetti 100% , tempo 1007 ms
$ ssh root@10.140.67.23
ssh: connessione all'host 10.140.67.23 porta 22: connessione scaduta

Blocco di un protocollo e di una porta. E se, invece di bloccare completamente l'indirizzo IP di Host-B,
solo le connessioni alla porta ssh (porta 22) dall'indirizzo IP di Host-B sono state bloccate? Voluto
che raggiungono l'obiettivo di consentire a Host-C l'accesso completo a Host-A e bloccare solo ssh
connessioni da Host-B?
Nell'esempio che segue, le regole di iptables per Host-A vengono modificate per provare a bloccare
Indirizzo IP di Host-B dalla porta 22. Notare che l'opzione --dport deve accompagnare un file
protocollo particolare, ad esempio -p tcp. Prima che venga aggiunta la nuova regola, la regola da
l'esempio precedente deve essere cancellato utilizzando l'opzione -D. Altrimenti, la regola del
l'esempio precedente sarebbe stato utilizzato dal firewall netfilter / iptables per i pacchetti da
10.140.67.22 (Host-B).

# iptables -D INPUT 1
# iptables -A INPUT -s 10.140.67.22 -p tcp --dport 22 -j DROP
# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​origine destinazione
DROP tcp - 10.140.67.22 ovunque tcp dpt: ssh
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​origine destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​origine destinazione

Innanzitutto, la nuova regola di iptables viene testata da Host-C per garantire sia i tentativi di ping che ssh
le connessioni rimangono inalterate. Funziona con successo.

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.
64 byte da 10.140.67.23: icmp_req = 1 ttl = 64 time = 1.04 ms
64 byte da 10.140.67.23: icmp_req = 2 ttl = 64 time = 0.740 ms

25

721

Pagina 762

Parte V: apprendimento delle tecniche di sicurezza di Linux

--- 10.140.67.23 statistiche ping ---


2 pacchetti trasmessi, 2 ricevuti, 0% di perdita di pacchetti , tempo 1000 ms
rtt min / avg / max / mdev = 0,740 / 0,892 / 1,045 / 0,155 ms

$ ssh root@10.140.67.23
Password di root@10.140.67.23 :

Successivamente, la nuova regola iptables viene testata da Host-B per garantire che ping funzioni e ssh
le connessioni sono bloccate. Funziona anche con successo!

$ ping -c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56 (84) byte di dati.
64 byte da 10.140.67.23: icmp_req = 1 ttl = 64 time = 1.10 ms
64 byte da 10.140.67.23: icmp_req = 2 ttl = 64 time = 0.781 ms
--- 10.140.67.23 statistiche ping ---
2 pacchetti trasmessi, 2 ricevuti, 0% di perdita di pacchetti , tempo 1001 ms
rtt min / avg / max / mdev = 0,781 / 0,942 / 1,104 / 0,164 ms
$ ssh root@10.140.67.23
ssh: connessione all'host 10.140.67.23 porta 22: connessione scaduta

Anche in questo caso, la Matrice di controllo dell'accesso della tua organizzazione (vedere il Capitolo 22) ti aiuta a creare il file
regole necessarie per il firewall netfilter / iptables sul tuo server Linux. E ciascuno
la modifica dovrebbe essere testata in un ambiente di prova o virtuale prima di implementarla in
firewall del sistema Linux di produzione.

Salvataggio di una configurazione di iptables


Dopo aver svolto tutto il duro lavoro di creazione della configurazione del firewall del tuo server Linux
politiche e regole, vorrai salvarle. Tutte le modifiche devono essere salvate nel file
file di configurazione di iptables, / etc / sysconfig / iptables, perché questo è il file utilizzato
all'avvio del sistema per caricare il firewall.

Nell'esempio che segue, le modifiche apportate in precedenza sono ancora nel firewall. Prima
vengono salvati nel file di configurazione, viene eseguita una copia di backup del file originale. Questo è
sempre una buona idea. Le modifiche vengono quindi salvate utilizzando il comando iptables-save.
Notare che l'output è diretto nel file / etc / sysconfig / iptables usando un redi-
simbolo di rection,> (vedere l'ultima riga di codice nell'esempio).

# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​origine destinazione
DROP tcp - 10.140.67.22 ovunque tcp dpt: ssh
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​origine destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​origine destinazione
# cp /etc/sysconfig/iptables/etc/sysconfig/iptables.bck
# iptables-save> / etc / sysconfig / iptables

722

Pagina 763

Capitolo 25: Protezione di Linux su una rete

Puoi anche rimuovere tutte le modifiche per l'attuale firewall netfilter / iptables
utilizzando l'opzione flush, iptables -F. Dopo che questo è stato completato, tutte le regole (ma non
le politiche) vengono rimosse, come mostrato nel codice che segue. Questo è utile per il test
politiche e regole individuali.

# iptables -F
# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​origine destinazione
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​origine destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​origine destinazione

Un aggiornamento delle regole non influisce sul file di configurazione di iptables. Per ripristinare il firewall
alla sua condizione originale, usa il comando iptables-restore. Nell'esempio that
di seguito, il file di configurazione di iptables viene reindirizzato al comando di ripristino e al file
La regola DROP originale per 10.140.67.22 viene ripristinata.

# iptables-restore </ etc / sysconfig / iptables


# iptables -vnL
Catena INPUT (politica ACCETTA)
destinazione prot opt ​origine destinazione
DROP tcp - 10.140.67.22 ovunque tcp dpt: ssh
Catena FORWARD (policy ACCETTA)
destinazione prot opt ​origine destinazione
OUTPUT catena (politica ACCETTA)
destinazione prot opt ​origine destinazione

Per un sistema Ubuntu, il salvataggio e il ripristino delle modifiche a netfilter / iptables sono molto simili. Puoi
utilizzare ancora il comando iptables-save per creare un file di configurazione di iptables dall'iptables corrente
impostazione e utilizzare iptables-restore per ripristinarlo. Tuttavia, avere una configurazione di iptables salvata viene caricata su
l'avvio è un po 'più complicato. Non esiste alcun file / etc / sysconfig / iptables. Ci sono diverse opzioni per
caricamento di un file di configurazione all'avvio del sistema. Vedere il sito Web della comunità di Ubuntu su https: //help.ubuntu.
com / community / IptablesHowTo per le varie opzioni.

Puoi anche salvare le regole del firewall di netfilter / iptables per creare un rapporto di controllo.
La revisione periodica di queste regole dovrebbe far parte del ciclo di vita del sistema dell'organizzazione
Fase di audit / revisione.

25

723

Pagina 764
Parte V: apprendimento delle tecniche di sicurezza di Linux

Sommario
La protezione del tuo server Linux è fondamentale su una rete. Intrinsecamente, la maggior parte dei dannosi
gli attacchi provengono da una rete, in particolare da Internet. Questo capitolo ha trattato alcuni dei
le basi, come il modello OSI, di cui hai bisogno per iniziare questo processo.

La protezione dei servizi di rete può essere semplificata dopo aver determinato e rimosso eventuali
servizi di rete non necessari. L'utilità nmap ti aiuta qui. Inoltre, puoi usare nmap per
controlla la pubblicità dei servizi di rete del tuo server Linux. Questi audit aiutano a determinare
quali modifiche al firewall sono necessarie.

Per i servizi di rete necessari, è necessario implementare il controllo degli accessi. I wrapper TCP possono aiutare
in questa attività. In base al servizio, l'accesso può essere consentito o negato, ottimizzando l'accesso
a ogni servizio di rete.

Le versioni recenti di Fedora e RHEL hanno aggiunto il servizio firewalld come front-end a
Funzione firewall iptables incorporata nel kernel Linux. Utilizzando il firewalld-config
è possibile aprire facilmente le porte nel firewall per consentire l'accesso ai servizi selezionati. Il
Il firewall netfilter / iptables è un firewall software basato su host, a livello di rete. È
gestito dalle utilità iptables e ip6tables. Con queste utilità, una serie di politiche
e le regole possono essere create per ogni pacchetto di rete proveniente dal tuo server Linux. Questi
i criteri e le regole costituiscono essenzialmente un elenco di controllo degli accessi per la rete di server Linux.

A questo punto del libro, dovresti avere una buona conoscenza di cosa serve per impostare e
protezione dei sistemi desktop e server Linux. Nei prossimi due capitoli ti aiuterò
estendere tale conoscenza al cloud computing e alla virtualizzazione.

Esercizi
Fare riferimento al materiale in questo capitolo per completare le attività che seguono. Se sei bloccato,
le soluzioni alle attività sono mostrate nell'Appendice B (sebbene in Linux, è spesso possibile completare
un'attività in più modi). Prova ciascuno degli esercizi prima di fare riferimento alle risposte. Questi
task presuppongono che tu stia eseguendo un sistema Fedora o Red Hat Enterprise Linux (sebbene alcuni
le attività funzionano anche su altri sistemi Linux).

Si prega di non utilizzare un sistema di produzione per provare i comandi iptables in questi
esercizi. Sebbene i comandi mostrati qui non cambino in modo permanente il tuo firewall
(le vecchie regole torneranno al riavvio del servizio firewall), modificando in modo improprio il tuo
il firewall può causare accessi indesiderati.

1. Installa l'utility Network Mapper sul tuo sistema Linux locale.

2. Eseguire una scansione di TCP Connect sul proprio indirizzo di loopback locale. Quali porte hanno un servizio
correndo su di loro?

3. Eseguire una scansione di UDP Connect sul sistema Linux da un sistema remoto.

724

Pagina 765

Capitolo 25: Protezione di Linux su una rete

4. Verificare se il demone ssh sul proprio sistema Linux utilizza il supporto TCP Wrapper.

5. Utilizzando i file TCP Wrapper, consentire l'accesso agli strumenti ssh sul proprio sistema Linux
da un sistema remoto designato. Nega tutti gli altri accessi.
6. Determina le attuali politiche del firewall netfilter / iptables del tuo sistema Linux
e regole.
7. Svuota le attuali regole del firewall del tuo sistema Linux, quindi ripristinale.

8. Per il firewall del sistema Linux, impostare un criterio di tabella di filtro per la catena di input
rifiutare.

9. Modificare nuovamente il criterio della tabella dei filtri del firewall del sistema Linux in modo che accetti per
catena di input, quindi aggiungere una regola per eliminare tutti i pacchetti di rete dall'indirizzo IP
10.140.67.23.
10. Senza svuotare o ripristinare le regole del firewall del sistema Linux, rimuovere la regola
hai aggiunto sopra.
25

725

Pagina 767
766

Parte VI
Estensione di Linux in
la nuvola

IN QUESTA PARTE
Capitolo 26
Utilizzo di Linux per il cloud computing

Capitolo 27
Distribuzione di Linux nel cloud
Pagina 769
768

CAPITOLO

Usare Linux per


26
Cloud computing
IN QUESTO CAPITOLO
Come viene utilizzato Linux nei cloud

Prova la tecnologia cloud di base

Per gli
computer locale a qualche server su una rete, senza necessariamente sapere come la richiesta
è soddisfatto. Ciò che lo rende un cloud è il modo in cui coloro che forniscono i servizi configurano il proprio computer
utenti cloud, cloud computing significa poter richiedere ai propri
infrastrutture per soddisfare le richieste.

La tecnologia cloud oggi rende possibile visualizzare i data center come pool fluidi e grandi di computer host
ers (hypervisor), controller, nodi di archiviazione, configurazioni di rete e molti altri componenti.
Potresti chiederti cosa abbia a che fare Linux con il cloud computing. Bene, Linux si trova solo nel file
cuore di molte delle odierne tecnologie cloud pubbliche e private.

Questo capitolo introduce ai concetti di cloud computing, in generale, e alle tecnologie cloud
associato a Linux, in particolare. Dopo aver introdotto i concetti del cloud, questo capitolo ti spiega
alcuni degli elementi costitutivi di base della tecnologia cloud: hypervisor, macchine virtuali e condivise
Conservazione.

Dopo aver provato alcune di queste tecnologie cloud di base, il capitolo descrive come
cloud di qualità estendono questi concetti di base in modo che possano scalare per soddisfare le esigenze del moderno
Centri dati.

Panoramica di Linux e cloud computing


Cloud ci porta in un'arena in cui tutto ciò che hai imparato in questo libro viene astratto e
automatizzato. Per il cloud, quando installi un sistema, probabilmente non stai eseguendo l'avvio da un DVD fisico,
cancellando il disco rigido locale e installando Linux direttamente su un computer seduto di fronte a te. voi
non accedono utilizzando una voce nel file / etc / passwd o attingendo alla potenza di elaborazione di un file
macchina singola.

729

Pagina 770

Parte VI: estensione di Linux nel cloud

Invece, stai installando su una macchina virtuale o un contenitore in esecuzione su un host


sistema nel cloud. Le interfacce di rete che vedi potrebbero non essere rappresentate da un file fisico
switch, ma possono essere reti virtuali che esistono su un singolo computer o si estendono su più
hypervisor.

Oggi, ogni aspetto software del cloud computing può essere soddisfatto utilizzando la tecnologia open source
ogy in esecuzione su sistemi Linux. Il mio obiettivo qui non è descrivere come utilizzare ogni aspetto di un file
Ambiente cloud basato su Linux. Invece, voglio dirti come sono le tecnologie emergenti
espandendo tutto ciò che abbiamo trattato in questo libro per lavorare in modo efficiente in un ambiente cloud-
ment. Quindi ti do la possibilità di configurare alcune tecnologie cloud di base per farti un'idea
come funziona tutto.

Hypervisor cloud (noti anche come nodi di calcolo)


Nel cloud computing, i sistemi operativi che servono gli utenti cloud non vengono eseguiti direttamente
computer hardware. Invece, gli hypervisor sono configurati per eseguire molti sistemi operativi come file
quelle che vengono chiamate macchine virtuali.

A seconda del tuo ambiente cloud, potresti sentire un hypervisor denominato calcolo
nodo o semplicemente come host. Poiché gli hypervisor tendono ad essere articoli di base (dozzine o
centinaia di hypervisor possono essere configurati per una posizione), Linux è la scelta logica in quanto
sistema operativo in esecuzione come hypervisor direttamente sull'hardware.

La macchina virtuale basata su kernel (KVM) è la tecnologia di virtualizzazione di base implementata per
trasforma un sistema Linux in un hypervisor. KVM è supportato su Ubuntu, Red Hat Enterprise
Linux, Fedora e molti altri sistemi Linux.

L'altra tecnologia principale che può essere utilizzata al posto di KVM per trasformare un sistema Linux in un file
hypervisor è Xen (www.xenproject.org) . Xen esiste da più tempo rispetto a KVM ed è
supportato nei prodotti di Citrix Systems e Oracle.

Più avanti in questo capitolo, descriverò come verificare se un computer dispone dell'hardware
caratteristiche da utilizzare come hypervisor e come configurarlo per essere utilizzato con KVM.

Controller cloud
Perché una configurazione cloud può includere più hypervisor, pool di archiviazione, più
reti virtuali e molte macchine virtuali, sono necessari strumenti centralizzati per la gestione
e monitorare tali funzionalità. È possibile utilizzare strumenti grafici e basati su comandi per
controllo degli ambienti cloud.

Sebbene non sia considerato un controller cloud completo, il Virtual Machine Manager (virt-
manager) GUI e comando virsh possono essere utilizzati per gestire un piccolo ambiente simile a un cloud
ment. Utilizzando virt-manager, puoi avere un'idea della gestione di più macchine virtuali
attraverso diversi hypervisor e puoi imparare come gestire le reti virtuali e condivise
pool di archiviazione.

730

Pagina 771

Capitolo 26: Utilizzo di Linux per il cloud computing

Le piattaforme cloud in piena regola hanno i propri controller per offrire molto più complesse
interazioni tra i componenti cloud. Per la piattaforma cloud OpenStack, OpenStack
Dashboard (progetto Horizon) fornisce un'interfaccia basata sul web ai componenti OpenStack.
Per Red Hat Enterprise Virtualization (RHEV), RHEV Manager fornisce lo stesso
Caratteristiche. 26
Più avanti in questo capitolo, descriverò come usare virt-manager per gestire il tuo primo
ambiente simile a un mini-cloud.

Archiviazione nel cloud


Nuove esigenze in termini di archiviazione dei dati sorgono quando si spostano i sistemi operativi e le applicazioni
in un ambiente cloud. Affinché una macchina virtuale possa spostarsi per essere eseguita su un'altra
hypervisor, il suo archivio deve essere disponibile da quel nuovo hypervisor. Necessità di archiviazione per i cloud
includere la necessità di luoghi in cui archiviare l'archiviazione back-end per le VM, immagini per l'avvio
VM e database per l'archiviazione delle informazioni sul cloud stesso.

L'archiviazione condivisa tra hypervisor può essere eseguita semplicemente come creare una condivisione NFS (vedere
Capitolo 20) e montarlo sullo stesso punto di montaggio tra più hypervisor. NFS è
uno dei modi più semplici per implementare l'archiviazione condivisa.

Storage condiviso più robusto in grado di gestire gli errori del disco e fornire prestazioni migliori
funziona meglio per i cloud che forniscono servizi critici. Archiviazione a blocchi condivisa, dove monti
un intero disco o partizione del disco, può essere realizzato utilizzando tecnologie come iSCSI o
Fibre Channel.
Ceph ( http://ceph.com) è un progetto open source per la gestione di blocchi e oggetti
archiviazione popolare per la gestione dell'archiviazione in ambienti cloud. GlusterFS (www
.gluster.org) è un filesystem con scalabilità orizzontale che viene spesso utilizzato negli ambienti cloud.

Per il semplice esempio di mini-cloud in questo capitolo, utilizzo NFS per fornire l'archiviazione condivisa
tra gli hypervisor.

Autenticazione cloud
Per essere in grado di limitare la quantità di risorse cloud che un utente può consumare e possibilmente monitorare e
cambiare per tale uso, sono necessari meccanismi di autenticazione. L'autenticazione è necessaria per
coloro che utilizzano le funzionalità cloud nonché coloro che sono autorizzati ad amministrare il cloud
Caratteristiche.

I progetti della piattaforma cloud a volte consentono di connettere meccanismi di autenticazione centralizzati
per convalidare e autorizzare gli utenti cloud. Questi possono includere Kerberos, Microsoft Active Directory,
e altri. In Linux, software Identity, Policy e Audit (IPA) (vedere www.freeipa.org )
offre un set completo di funzionalità di autenticazione che possono essere utilizzate in un cloud aziendale
piattaforma.

731

Pagina 772

Parte VI: estensione di Linux nel cloud

Distribuzione e configurazione del cloud


Se gestisci una grande infrastruttura cloud, non vuoi essere costretto a raggiungerla
ogni macchina e fare clic su un'installazione grafica ogni volta che si desidera aggiungere un hyper-
visore o altro nodo sulla rete. Oggi, molti strumenti possono distribuire e configurare il sistema Linux
semplicemente come riavviare il computer e avviarlo con un programma di installazione preconfigurato.

Nel Capitolo 9, parlo di come utilizzare un server PXE (per avviare automaticamente un programma di installazione Linux
sulla rete dalla scheda dell'interfaccia di rete) e file kickstart (per identificare tutti i file
risposte necessarie per completare l'installazione). Con quella configurazione in atto, puoi semplicemente
avviare un computer da un'interfaccia di rete e tornare subito dopo per trovare un file
sistema Linux installato.

Dopo che un computer è stato distribuito, i sistemi possono essere configurati ed eventualmente monitorati e
aggiornato, utilizzando strumenti come Puppet (http://puppetlabs.com) e Chef (www.chef
.io). Interi ambienti di lavoro possono essere distribuiti in macchine virtuali utilizzando Vagrant
( www.vagrantup.com). Ansible (www.ansible.com) è un altro strumento per l'automazione
Infrastrutture IT e applicazioni che vengono eseguite su di esso.

Piattaforme cloud
Se vuoi implementare il tuo cloud privato all'interno della tua organizzazione, open
Il progetto OpenStack di origine è probabilmente la scelta più popolare. Offre una quantità enorme di
flessibilità e potenza nel modo in cui lo configuri e lo utilizzi.

Red Hat Enterprise Virtualization (RHEV) è un'altra popolare piattaforma cloud. RHEV lo fa
è facile iniziare con un semplice RHEV Manager e uno o due hypervisor e crescere aggiungendo
più hypervisor, pool di archiviazione e altre funzionalità.

Se desideri utilizzare cloud pubblici basati su tecnologia open source per eseguire
In base ai sistemi di cui hai bisogno, puoi utilizzare uno qualsiasi dei diversi provider di cloud. Cloud pubblico
provider che puoi utilizzare per eseguire VM Linux includono Amazon Web Services (www.amaz su
.com / aws) , Google Cloud Platform (https://cloud.google.com) e Rackspace (www
.rackspace.com). Il Capitolo 27 spiega come distribuire Linux su alcuni di questi provider di cloud.

Ora che hai sentito parlare di molte delle tecnologie che compongono il cloud Linux
informatica, puoi avere il tuo primo piccolo assaggio di alcune delle tecnologie fondamentali di
Cloud Linux impostando il tuo mini-cloud nella sezione successiva.

Provare la tecnologia cloud di base


Per aiutarti a comprendere la tecnologia cloud da zero, questa sezione ne illustra alcuni
degli elementi costitutivi di base di una moderna infrastruttura cloud. Usando tre computer, io
aiutarti a creare una configurazione che includa:

732
Pagina 773

Capitolo 26: Utilizzo di Linux per il cloud computing

■ Hypervisor: un hypervisor è un sistema informatico che consente di eseguire altri


sistemi informatici su di esso. Questi altri sistemi sono indicati come macchine virtuali. Una nuvola
l'infrastruttura può avere dozzine o centinaia di hypervisor in esecuzione, possibilmente
eseguendo migliaia di macchine virtuali.
■ Macchine virtuali: possono essere le macchine virtuali eseguite su un hypervisor Linux 26
lo stesso tipo di sistema Linux, un sistema Linux diverso, un sistema Windows o qualsiasi altro
altro tipo di sistema compatibile con l'hardware su cui l'hypervi-
sor corre. Quindi le macchine virtuali che girano sugli hypervisor che costruiamo qui potrebbero
includono Fedora, Ubuntu, RHEL, CentOS, Microsoft Windows e altri.
■ Storage condiviso: per offrire la massima flessibilità, lo storage fornito dagli hypervisor
rendere disponibile alle macchine virtuali è spesso condiviso tra un pool di hypervisor.
Ciò consente a una serie di hypervisor di condividere una serie di immagini che utilizzano per l'installazione o l'avvio
macchine virtuali. Consente inoltre di eseguire lo stesso set di macchine virtuali su qualsiasi hypervi-
sor in quel gruppo e persino passare a un hypervisor diverso senza spegnersi
la VM. Lo spostamento di VM in esecuzione può essere utile se un hypervisor è sovraccarico o
deve essere spento per manutenzione.

La configurazione che creiamo durante questa procedura ti consente di lavorare con macchine virtuali in
seguenti modi:

■ Installare una nuova macchina virtuale su un hypervisor


■ Impostare le funzionalità sulle macchine virtuali
■ Accedere e utilizzare una macchina virtuale in esecuzione su un hypervisor

■ Migrare una macchina virtuale in esecuzione su un altro hypervisor

Le tecnologie che esploriamo qui includono:

■ Kernel Virtualization Module (KVM): KVM è la tecnologia kernel di base che


consente alle macchine virtuali di interagire con il kernel Linux.
■ Emulatore del processore QEMU: viene eseguito un processo qemu per ogni macchina virtuale attiva
sul sistema. QEMU fornisce funzionalità che lo fanno apparire a ogni macchina virtuale
come se fosse in esecuzione su hardware fisico.
■ LibvirtService Daemon (libvirtd): su ciascuno di essi viene eseguito un singolo servizio libvirtd
hypervisor. Il demone libvirtd ascolta le richieste di avvio, arresto, pausa e
altrimenti gestisci le macchine virtuali su un hypervisor. Queste richieste possono provenire da
un'applicazione progettata per gestire macchine virtuali (come virt-manager o
OpenStack Dashboard) o da un'applicazione creata per parlare direttamente con il file
interfaccia di programmazione dell'applicazione libvirt.
■ Virtual Machine Manager : il Virtual Machine Manager (virt-manager
comando) è uno strumento GUI per la gestione delle macchine virtuali. Oltre a lasciarti richiedere
per avviare e arrestare le macchine virtuali, virt-manager consente di installare, configurare e
gestire le VM in modi diversi. Puoi usare il comando virsh per passare le opzioni

733

Pagina 774

Parte VI: estensione di Linux nel cloud

alla riga di comando per lavorare con le macchine virtuali, invece di fare clic in una GUI
finestra.
■ Virtualization Viewer : il comando virt-viewer avvia una macchina virtuale
finestra della console sul desktop. La finestra che appare ti permette di lavorare
una finestra della console su un desktop o un'interfaccia della riga di comando per il virtuale selezionato
macchina (a seconda di ciò che la VM ha da offrire).
Dopo aver creato questa piccola infrastruttura simile a un cloud, hai le basi per ciò che è
a volte indicato come cloud Platform-as-a-Service (o PaaS). Ciò significa che
qualcuno che utilizza il tuo PaaS potrebbe raggruppare il proprio sistema operativo,
applicazione, file di configurazione e dati e distribuirli. Farebbero affidamento sul tuo
PaaS per fornire potenza di elaborazione, archiviazione, memoria, interfacce di rete e
funzionalità di agement necessarie per eseguire le macchine virtuali contenenti le loro applicazioni.

Esempi di PaaS includono OpenStack e Red Hat Enterprise Virtualization


(RHEV). Questi progetti forniscono un modo molto più raffinato di accedere a PaaS
risorse. Il nostro mini-PaaS, tuttavia, ottiene risultati simili.

Configurazione di una piccola nuvola


Con tre macchine fisiche collegate insieme su una rete, è possibile illustrarne alcune
i concetti di base che devi comprendere per creare il tuo cloud. I tre computer
in esecuzione Fedora 21 e la rete che li collega sono configurati come segue:

■ Rete: è stata configurata una rete cablata ad alta velocità per connettere i tre
computer. Le connessioni di rete veloci sono fondamentali per il successo della migrazione delle VM. Nel
in questo esempio, ogni hypervisor ha anche un bridge di rete configurato in modo che ogni virtual
la macchina può acquisire un indirizzo IP direttamente da un servizio DHCP sulla rete.
■ Hypervisor: due computer sono configurati come hypervisor. Un hypervi-
sor (a volte indicato come host o nodo del computer) consente di eseguire virtual
macchine. In Fedora 21, la tecnologia hypervisor di base è chiamata basata sul kernel
Virtual Machine (KVM) mentre le macchine virtuali effettive sono gestite da
servizio libvirtd.
■ Archiviazione: un computer è configurato per offrire l'archiviazione condivisa tra i due
hypervisor. Per semplicità, NFS viene utilizzato per creare l'archiviazione condivisa, sebbene in un file
ambiente di produzione, iSCSI o Fibre Channel sarebbero soluzioni migliori.

A scopo di test, è possibile utilizzare uno dei due hypervisor per fornire l'archiviazione condivisa. Tuttavia, uno dei principali
Lo scopo della configurazione di due hypervisor e di archiviazione condivisa separata è che si desidera essere in grado di chiudere qualsiasi
hypervisor e fare in modo che tutte le macchine virtuali funzionino normalmente. Se disponi di spazio di archiviazione condiviso disponibile da uno dei file
gli hypervisor, non potresti mai arrestare quell'hypervisor senza arrestare tutte le VM che utilizzano lo storage.

734

Pagina 775

Capitolo 26: Utilizzo di Linux per il cloud computing

Configurazione degli hypervisor


In questa procedura, ho installato Fedora 21 su due computer fisici e li ho configurati come
Host KVM che eseguono il servizio libvirtd. Segui questi passaggi per farlo da solo.

26
Passaggio 1: scarica il software Linux
Vai alla pagina Get Fedora (https://getfedora.org) e scarica Fedora 21. Ho scelto di farlo
scarica l'ISO del DVD Fedora 21 edizione 64-bit Workstation. Se una versione successiva di Fedora è
disponibile, potresti probabilmente usarlo invece.

Utilizzare qualsiasi applicazione di masterizzazione DVD disponibile per masterizzare l'immagine su DVD o altrimenti creare il file
immagine disponibile per l'installazione (ad esempio tramite l'avvio PXE).

Passaggio 2: controlla i tuoi computer


I computer che usi come hypervisor in Fedora 21 devono soddisfare alcuni requisiti. voi
dovresti controllare queste cose sul tuo computer prima di iniziare l'installazione:

■ Supporto della virtualizzazione: è possibile verificare il supporto della virtualizzazione esaminando


i flag impostati nella CPU.
■ Memoria : il computer deve disporre di RAM sufficiente non solo per eseguire il funzionamento dell'host
sistema, ma per ogni macchina virtuale che prevedi di eseguire sul sistema.
■ Potenza di elaborazione: tieni presente che ogni macchina virtuale consuma elaborazione
potenza per se stesso e per qualsiasi applicazione in esecuzione all'interno della macchina virtuale.

L'archiviazione è un'altra considerazione. Ma poiché intendiamo configurare l'archiviazione da un


tasso nodo sulla rete, affronteremo il problema in seguito.

Per verificare che le funzionalità disponibili dei tuoi computer soddisfino i requisiti, avvia un Linux
live CD o DVD, apri una finestra di Terminale e digita i seguenti comandi:
# cat / proc / cpuinfo | grep --color -E "vmx | svm | lm"
flag: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts
rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64
monitorare ds_cpl vmx smx es ...
...

Il comando precedente mostra che questo computer è un computer a 64 bit (lm) e che un file
Il chip Intel supporta le funzionalità di virtualizzazione (vmx). Se invece la CPU fosse un chip AMD
di vmx, vedresti svm evidenziato (se il chip AMD supporta la virtualizzazione). Quelli
le impostazioni mostrano che questo computer può essere utilizzato come hypervisor.

Quando si avvia l'esecuzione di VM su un host, la memoria è spesso il collo di bottiglia. Per memoria
requisiti, è necessario aggiungere ciò che è necessario all'host a tutto ciò di cui hai bisogno per ogni VM.

735

Pagina 776

Parte VI: estensione di Linux nel cloud

È possibile ridurre i requisiti di memoria non avendo installato il software Desktop, come la maggior parte
gli hypervisor lo fanno. In questo caso, tuttavia, ho eseguito l'installazione di Fedora Workstation, fornita con
un desktop. Per controllare la memoria e lo scambio sul computer, ho digitato quanto segue:

# free -m
buff / cache condiviso gratuito utilizzato totale disponibile
Mem: 7867 3433 2835298 1598 3860
Scambia: 12287 0 12287

Questo sistema ha circa 8 GB di RAM e 12 GB di swap. Stimo che 4 GB siano buoni per un file
sistema desktop. Se consento 1 GB o 2 GB per ogni VM, questo sistema dovrebbe essere in grado di eseguirne due
a quattro VM insieme al desktop. Verificare i requisiti di memoria per il funzionamento
sistemi e applicazioni che prevedi di eseguire per determinare meglio le tue esigenze di memoria.

Per controllare il numero e i tipi di processori sul tuo computer, digita quanto segue:

# grep processor / proc / cpuinfo


processore: 0
...
processore: 6
processore: 7
# head / proc / cpuinfo
processore: 0
vendor_id: GenuineIntel
famiglia cpu: 6
modello: 60
nome del modello: CPU Intel (R) Core (TM) i7-4800MQ a 2,70 GHz
passo: 3
cpu MHz: 2701.000
dimensione cache: 6144 KB
...

Il primo comando nel codice precedente mostra che ce ne sono otto (da 0 a 7)
processori sul computer. Con il secondo comando, per il primo processore, puoi vedere
che è GenuineIntel, il modello, il nome del modello, la velocità della CPU e altre informazioni.

Per eseguire la migrazione live delle VM tra i due hypervisor, le CPU devono appartenere alla stessa famiglia.
Se non hanno CPU compatibili, è possibile migrare una VM spegnendola su una
hypervisor e avviandolo da un archivio condiviso dall'altro.

Dopo aver dimensionato i due computer hypervisor, avvia l'installazione di Fedora su di essi.

Passaggio 3: installa Linux su hypervisor


Usando il supporto di installazione di Fedora 21 Workstation, inizia a installare i due hypervisor.
Seguire le descrizioni nel Capitolo 9 per installare Fedora. Dovresti sapere queste cose che
sono specifici per l'installazione per questa procedura:

736
Pagina 777

Capitolo 26: Utilizzo di Linux per il cloud computing

■ Assegna un nome agli hypervisor: ho impostato i nomi host sugli hypervisor su


host1.example.com e host2.example.com.
■ Partizionamento: durante il partizionamento, ho cancellato l'intero disco rigido. Quindi ho creato un file
500 MB / partizione di avvio e una partizione di swap da 12 GB, e ho assegnato il resto del file
spazio su disco nella partizione root (/). La directory / var / lib / libvirt / images 26
contiene la maggior parte dei dati su questo sistema, ma questa è una directory condivisa, disponibile da
un altro sistema in rete e condiviso tra i due hypervisor. (Più su
quello dopo.)
■ Rete: se è possibile, attiva le interfacce di rete cablate per ogni
visiera. Gli hypervisor e l'archiviazione dovrebbero essere tutti sulla stessa rete locale, perché
la velocità della connessione di rete tra queste macchine è fondamentale per ottenere
buona performance.
■ Pacchetti software —Durante l'installazione, installo solo il Fedora predefinito
Pacchetti di workstation. Dopo aver completato l'installazione e riavviato il sistema, I.
installare più software necessario per ogni hypervisor.

Riavviare il computer al termine dell'installazione (espellendo il DVD e avviando il file


disco rigido). Dopo il riavvio del sistema, aggiorna il software Fedora, aggiungi nuovi pacchetti,
e riavviare nuovamente il sistema, come segue:

# yum update -y
# yum installa virt-manager libvirt-daemon-config-network
# riavvio

Il pacchetto virt-manager contiene lo strumento GUI per la gestione delle macchine virtuali.
Il pacchetto libvirt-daemon-config-network crea l'interfaccia di rete predefinita che
consente alle macchine virtuali di accedere a reti esterne (tramite l'host) utilizzando Network
Address Translation (NAT). L'intervallo di indirizzi predefinito assegnato alle macchine virtuali è
192.168.122.2 tramite 192.168.122.254.

Altri pacchetti di cui hai bisogno dovrebbero già essere inclusi con l'installazione di Fedora Workstation.
Se hai eseguito un tipo di installazione diverso, assicurati di aver aggiunto anche i seguenti pacchetti:
libvirt-client (per il comando virsh) e libvirt-daemon (per ottenere il lib-
servizio virtd).

Passaggio 4: avvia i servizi sugli hypervisor


Devi assicurarti che il servizio libvirtd sia in esecuzione su entrambi gli hypervisor. Inizio
anche il servizio sshd. Potrebbero essere già in esecuzione, ma solo per assicurarti di eseguire il file
seguente come root su entrambi gli hypervisor:

# systemctl avvia sshd.service


# systemctl abilita sshd.service
# systemctl avvia libvirtd.service
# systemctl abilita libvirtd.service

737

Pagina 778

Parte VI: estensione di Linux nel cloud

Il servizio sshd consente di accedere agli hypervisor sulla rete, se necessario. Il


Il servizio libvirtd è quello con cui potresti non avere familiarità. Sta ascoltando le richieste
per gestire le tue macchine virtuali su ogni host.

Passaggio 5: modifica / etc / hosts o configura DNS


Per facilitare la comunicazione tra gli hypervisor e il sistema di archiviazione, tu
dovrebbe assegnare nomi host a ciascun sistema e associare tali nomi agli indirizzi IP. Impostare
un server DNS a cui puntano tutti i sistemi è probabilmente il modo migliore per farlo. Tuttavia, per
nel nostro semplice esempio, puoi semplicemente modificare il file / etc / hosts su ogni sistema e aggiungere voci
per ogni host.
Di seguito è riportato un esempio di come potrebbero apparire voci aggiuntive nel file / etc / hosts
i tre sistemi utilizzati in questa procedura:

192.168.0.138 host1.example.com host1


192.168.0.139 host2.example.com host2
192.168.0.1 storage.example.com storage

Successivamente è necessario configurare l'archiviazione.

Configurazione dell'archiviazione
È possibile fornire archiviazione in rete agli hypervisor per questa procedura in molti modi. io
ha scelto di configurare un sistema Fedora separato sulla stessa rete locale degli hypervisor e
usa NFS per collegare lo storage condiviso a entrambi gli hypervisor.

NFS non è il metodo più efficiente per condividere lo storage tra hypervisor, ma è uno dei
il più semplice e il più comune da configurare. In questa procedura, utilizzo il Virtualization Manager
finestra (virt-manager) per configurare lo storage pool NFS.

Per motivi di coerenza, la condivisione NFS impostata dal sistema di archiviazione è / var / lib /
directory libvirt / images. È montato nella stessa posizione su ciascuno degli hypervisor.
(Per i test, se hai solo due macchine disponibili, puoi configurare l'archiviazione da una
degli hypervisor. Tieni presente, tuttavia, che questo significa che non puoi disattivare l'iperventismo
sor senza spegnere tutte le VM.)

Passaggio 1: installa il software Linux


Per configurare la tua memoria su un server NFS, puoi usare praticamente qualsiasi sistema Linux che
ha un servizio NFS disponibile. Considera queste cose quando installi Linux:

■ Spazio su disco : assicurarsi di disporre di spazio di archiviazione sufficiente nella partizione


che contiene la directory condivisa. Per questo esempio, / var / lib / libvirt / images
è la directory condivisa.
■ Prestazioni: per prestazioni ottimali, si desidera disporre di un disco con accesso rapido
tempi e velocità di trasferimento dati.

738

Pagina 779

Capitolo 26: Utilizzo di Linux per il cloud computing

Per Fedora e RHEL, il software del server NFS è disponibile dal pacchetto nfs-utils. Per
Ubuntu, hai bisogno del pacchetto nfs-kernel-server.

Al termine dell'installazione iniziale, verificare che il software del server NFS sia installato. Se è
non lo è, puoi installarlo su Fedora o RHEL con questo comando:
26
# yum installa nfs-utils

Per Ubuntu e sistemi simili, digita questo:

# apt-get install nfs-kernel-server

Passaggio 2: configurare la condivisione NFS


Per creare una condivisione NFS, è necessario identificare la directory da condividere e aggiungere informazioni
su di esso nel file / etc / export. Segui questi passi:

un. Crea una directory. Puoi condividere qualsiasi directory contenente lo spazio che desideri
Condividere. Valuta la possibilità di creare una nuova directory e di montare un intero disco o partizione
esso. Per questo esempio, creo una directory chiamata / var / storage:
# mkdir -p / var / storage

b. Consenti esportazione. Sul tuo sistema di archiviazione, crea una voce in / etc / export
file per condividere la directory con i sistemi selezionati (per nome o indirizzo IP). Per
In questo esempio, ho consentito l'accesso in lettura / scrittura (rw) a tutti i sistemi su 192.168.0
sottorete:
/ var / storage 192.168.0. * (no_root_squash, rw, sync)

Passaggio 3: avvia il servizio NFS


Avvia il servizio NFS e apri il firewall sul sistema di archiviazione per consentire l'accesso a quello
servizio. Ecco come:

un. Avvia e abilita NFS. Negli ultimi sistemi Fedora e RHEL, digitare quanto segue
per avviare il server NFS:
# systemctl avvia nfs-server.service
# systemctl abilita nfs-server.service

Su RHEL 6, Fedora precedente e alcuni sistemi Ubuntu, usa questi comandi per iniziare
e abilita il servizio NFS:
# avvio del servizio nfs
# chkconfig nfs attivato

b. Apri il firewall. Per aprire le porte del firewall in modo che possano farlo quelle esterne al sistema locale
usa la tua condivisione NFS, fai quanto segue su Fedora 21:
# firewall-cmd --permanent --add-service = rpc-bind
# firewall-cmd --permanent --add-service = nfs
# systemctl riavvia firewalld

739

Pagina 780

Parte VI: estensione di Linux nel cloud

Per i sistemi che utilizzano iptables direttamente, vedere il Capitolo 20 per informazioni su come farlo
apri il tuo firewall per il servizio NFS.

Passaggio 4: montare la condivisione NFS sugli hypervisor


Accedi a ogni hypervisor e segui questi passaggi per rendere la condivisione disponibile localmente. Nota
che la posizione della directory del punto di montaggio su ogni hypervisor deve essere la stessa.
Ecco come:

un. Controlla la disponibilità della condivisione NFS. Da ciascuno dei due hypervisor, assicurati
che puoi vedere la condivisione disponibile digitando quanto segue:
# showmount -e storage.example.com
Esporta elenco per storage.example.com:

/ var / storage 192.168.0. *

b. Monta la condivisione NFS. Aggiungere le informazioni sulla condivisione al file / etc / fstab.
Per il nostro esempio, per consentire il montaggio della directory dal sistema 192.168.0.1
nella stessa directory localmente ogni volta che il sistema si avvia, la voce in / etc /
Il file fstab potrebbe essere simile a questo:
storage.example.com:/storage / var / lib / libvirt / images nfs default 0 0

c. Prova il montaggio NFS. Per verificare che la voce di montaggio sia corretta, eseguire il file
seguente comando per montare tutte le voci nel file / etc / fstab che non lo hanno
è già stato montato e controlla che la condivisione NFS sia stata montata:
# mount -a
# mount | grep libvirt
storage.example.com:/var/storage su / var / lib / libvirt / images type
nfs4
(rw, relatime, vers = 4.0, rsize = 1048576, wsize = 1048576, namlen = 255, hard,
proto = tcp, port = 0, timeo = 600, retrans = 2, sec = sys,
clientaddr = 192.168.0.1, local_lock = nessuno, addr = 192.168.0.138)

Con i tuoi hypervisor e lo storage ora a posto, puoi ora iniziare a creare il tuo virtuale
macchine.

Creazione di macchine virtuali


Il Virtual Machine Manager (virt-manager) è un buon strumento da utilizzare per creare il tuo primo file
macchine virtuali. Ti guida attraverso l'installazione e la configurazione di macchine virtuali e
fornisce un modo per visualizzare e modificare lo stato delle macchine virtuali esistenti.

Successivamente, quando si capiscono i tipi di funzionalità che servono alla creazione di macchine virtuali,
puoi invece utilizzare il comando virt-install per creare macchine virtuali. Il vantaggio
La caratteristica di virt-install è che puoi creare script o copiare e incollare facilmente una riga di comando in
creare una macchina virtuale, invece di dover fare clic su una finestra della GUI.

740

Pagina 781
Capitolo 26: Utilizzo di Linux per il cloud computing

Hai scaricato l'immagine ISO della Fedora 21 Workstation all'inizio di questo capitolo, quindi la userò
nell'esempio per creare una macchina virtuale. Tuttavia, se preferisci, puoi installarne molti
diverse versioni di Linux o Windows come macchina virtuale.

Passaggio 1: ottieni immagini per creare macchine virtuali 26


Puoi creare una macchina virtuale in molti modi. In generale, inizi con un file pre-costruito
immagine (fondamentalmente una copia di una macchina virtuale funzionante) o semplicemente installare da un'installazione
Immagine ISO in una nuova area di archiviazione. Qui, faremo il secondo e creeremo una VM
dall'immagine ISO di installazione di Fedora 21 Workstation.

Supponendo che tu abbia effettuato l'accesso a uno degli hypervisor come root e che l'immagine ISO sia nel file
directory corrente, copia l'ISO nella directory predefinita utilizzata da virt-manager per l'archiviazione
(/ var / lib / libvirt / images):

# cp Fedora-Live-Workstation-x86_64-21-5.iso / var / lib / libvirt / images /

Poiché quella directory è condivisa da entrambi gli hypervisor, puoi andare a uno qualsiasi degli hypervisor
usa quell'immagine.

Passaggio 2: controlla il bridge di rete


Su ogni hypervisor, dovrebbe esserci un nome bridge di rete predefinito virbr0. Tutti hypervi-
sors verranno aggiunti a questa interfaccia di rete e assegnati automaticamente a un indirizzo IP. Di
impostazione predefinita, l'hypervisor utilizza l'intervallo di indirizzi da 192.168.122.2 a 192.168.122.254
da assegnare alle macchine virtuali. Utilizzando NAT (Network Address Translation), l'host può
instrada i pacchetti dalle macchine virtuali utilizzando questi indirizzi privati ​alla rete esterna
interfacce.

Effettuare le seguenti operazioni su ogni hypervisor per controllare il bridge per ciascuno:

# brctl mostra virbr0


nome del ponte id del ponte Interfacce abilitate STP
virbr0 8000.001aa0d7483e sì vnet0
# ip addr mostra virbr0
5: virbr0: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc noqueue
stato UP predefinito del gruppo
link / etere fe: 54: 00: 57: 71: 67 brd ff: ff: ff: ff: ff: ff
inet 192.168.122.1 brd 192.168.122.255 scope dinamico globale virbr0

Passaggio 3: avviare Virtual Machine Manager (virt-manager)


Dal desktop su uno degli hypervisor, eseguire le seguenti operazioni per aprire Virtual Machine Manager
e collegalo all'hypervisor:

un. Avvia virt-manager . Vai alla schermata Attività, digita Macchina virtuale
Manager nella casella di ricerca e premere Invio o digitare virt-manager dal file
conchiglia. Digita la password di root quando richiesto. Dovresti vedere la macchina virtuale
Finestra Manager.

741

Pagina 782

Parte VI: estensione di Linux nel cloud

b. Verificare la connessione all'hypervisor. Dal menu a comparsa Aggiungi connessione, il file


hypervisor (QEMU / KVM) dovrebbe essere già impostato e la casella di controllo Autoconnect
dovrebbe essere controllato. Fare clic su Connetti per connettersi all'hypervisor locale, in caso contrario
già fatto.

Passaggio 4: verifica i dettagli della connessione


Dopo essersi connessi all'hypervisor, impostare alcuni dettagli di connessione. Per farlo da
Finestra Virtual Machine Manager, eseguire le operazioni seguenti:

un. Visualizza i dettagli della connessione. Selezionare Modifica ➪ Dettagli connessione per visualizzare il file
Finestra Dettagli connessione. Seleziona Panoramica, Reti virtuali, Archiviazione e
Schede Interfacce di rete per familiarizzare con le informazioni di connessione per
il tuo hypervisor. Ad esempio, la scheda Archiviazione viene visualizzata nella Figura 26.1, a dimostrarlo
ci sono 438,40 GB di spazio libero nella posizione utilizzata per impostazione predefinita per l'archiviazione da questo
hypervisor (directory / var / lib / libvirt / images).
FIGURA 26.1

Avvia Virtual Machine Manager e controlla i dettagli della connessione.

742

Pagina 783

Capitolo 26: Utilizzo di Linux per il cloud computing

b. Verificare che il bridge di rete sia disponibile. Seleziona la scheda Interfacce di rete e
assicurati che il bridge che abbiamo appena creato (bridge0) sia nell'elenco delle reti disponibili
interfacce.

Passaggio 5: crea una nuova macchina virtuale 26


Per creare una nuova macchina virtuale dalla finestra Virtual Machine Manager, eseguire il
a seguire:

un. Avvia la procedura guidata. Per avviare la procedura guidata Crea una nuova macchina virtuale, seleziona File ➪
Nuova macchina virtuale. Viene visualizzata la finestra Crea una nuova macchina virtuale.
b. Scegli il metodo di installazione. Sono quattro modi per creare la macchina virtuale
presentata. I primi tre sono modi per identificare la posizione del supporto di installazione.
Il quarto ti consente di importare un'immagine disco esistente. Per il nostro esempio, scegli il primo
selezione (supporto di installazione locale) e fare clic su Avanti.
c. Scegli l'ISO. Seleziona il pulsante Usa immagine ISO e scegli Sfoglia. Nella finestra
che appare, seleziona o vai alla Fedora 21 Workstation ISO, seleziona Scegli
Volume e fai clic su Avanti per continuare.

d. Scegli la memoria e la CPU. Scegli la quantità di RAM e il numero di processi


disponibili per la VM e fare clic su Avanti. Suggerisco almeno 1024 MB di RAM e
almeno un processore. Utilizzare 2048 MB di RAM, se disponibile, è meglio.

e. Abilita archiviazione. Scegli la quantità di spazio su disco che desideri venga consumata dalla VM. io
suggerisci almeno 10 GB per una Fedora Workstation, ma probabilmente potresti cavartela
Di meno. L'immagine qcow2 creata cresce fino alle dimensioni effettivamente consumate (fino a
l'importo allocato), quindi la sovrallocazione dello spazio non causa problemi fino a quando non lo fai effettivamente
prova a usare quello spazio. Fare clic su Avanti.

f. Rivedere le impostazioni prima di avviare l'installazione. Scegli il nome per il file


macchina virtuale e rivedere l'altra impostazione per l'installazione. Fare clic su Avanzate
Opzioni e assicurati che sia selezionata la voce "bridge0". Seleziona Personalizza
Configurazione prima dell'installazione per esaminare ulteriormente le impostazioni. Lascia le altre impostazioni in
predefinito per ora e fare clic su Fine.
g. Rivedi le impostazioni hardware. Se hai selezionato "Personalizza" nel precedente
schermata, è possibile rivedere le impostazioni in modo più dettagliato. Quando sei soddisfatto, seleziona
Inizia l'installazione.
h. Installa la macchina virtuale. Ti viene chiesto di installare il sistema come te
sarebbe se installassi direttamente sull'hardware. Completa l'installazione,
e riavvia la macchina virtuale. Se la finestra della VM non è aperta, fare doppio clic sulla VM
voce (in questo caso, fedora21) nella finestra virt-manager ed effettuare il login. Figura 26.2
mostra un esempio della finestra virt-manager con Fedora 21 Workstation
macchina virtuale visualizzata.

743

Pagina 784

Parte VI: estensione di Linux nel cloud

FIGURA 26.2

Apri la macchina virtuale e inizia a usarla.

Gestione delle macchine virtuali


Dopo aver installato una o più macchine virtuali su un hypervisor, è possibile gestire
ogni VM nello stesso modo in cui gestisci un computer installato direttamente su
hardware. Puoi fare queste cose:

■ Visualizzare il sistema da una console. Fare doppio clic su una VM in esecuzione nella virt-
finestra del manager. Si apre una finestra della console sulla VM, che consente di utilizzare la VM
proprio come faresti da una console fisica per accedere a un sistema operativo installato
direttamente sull'hardware.
■ Arrestarela VM. Fare clic con il pulsante destro del mouse sulla voce VM e selezionare Arresta il sistema. Quindi seleziona
Spegnere (per spegnere correttamente) o Forzare (staccando efficacemente la spina).
Oppure puoi selezionare Riavvia.

744

Pagina 785

Capitolo 26: Utilizzo di Linux per il cloud computing


■ Avviare la VM. Se la VM è attualmente arrestata, fare clic con il pulsante destro del mouse sulla voce e selezionare
Esegui per avviare la VM in esecuzione.
■ Eliminare la VM. Se hai completamente finito di usare la VM, seleziona Elimina. Siete
ti ha chiesto se desideri eliminare anche lo spazio di archiviazione. Deseleziona la casella se lo desideri
mantieni lo spazio di archiviazione associato alla VM. 26
Ora che hai dimestichezza con le tue macchine virtuali, puoi provare a migrare una VM in
un altro hypervisor.

Migrazione di macchine virtuali


Essere in grado di migrare le tue macchine virtuali tra diversi hypervisor ti dà
enorme flessibilità nella gestione dei carichi di lavoro del computer. Ecco alcuni dei file
vantaggi:

■ Migliorare le prestazioni spostando le VM da hypervisor sovraccarichi a altri


che hanno più memoria disponibile e capacità della CPU.
■ Eseguire la manutenzione ordinaria su un hypervisor mantenendo in esecuzione le VM.
■ Sposta le VM dagli hypervisor sottoutilizzati in modo da poterli spegnere per risparmiare energia
fino a quando non saranno nuovamente necessari.
■ Spostare le VM fuori sede se si prevede di chiudere un data center o se si prevede un file
uragano o altra catastrofe per colpire il tuo datacenter.

La migrazione in tempo reale, in particolare, è utile se è necessario lavorare per continuare sulle VM senza
interruzione. La chiave per far funzionare la migrazione live delle VM è configurare il tuo ambiente
propriamente. Assicurati che siano presenti i seguenti elementi:

■ Archiviazione in rete condivisa tra gli hypervisor


■ Le stesse interfacce di rete configurate su ogni hypervisor
■ CPU compatibili tra hypervisor (spesso, un set di hypervisor ha l'estensione
esattamente lo stesso hardware.)
■ Una connessione di rete veloce tra gli hypervisor e lo storage
■ Le versioni uguali o simili del software di virtualizzazione sugli hypervisor (nel ns
caso, abbiamo usato Fedora 21 su entrambi e li abbiamo installati in modo simile.)

Con tutto ciò, la migrazione in tempo reale richiede solo pochi passaggi per andare avanti.

Passaggio 1: identificare altri hypervisor


Supponendo che la finestra del Virtual Machine Manager sia ancora attiva e in esecuzione su uno dei tuoi file
hypervisor, vai a quella finestra ed esegui le seguenti operazioni per connetterti all'altro hypervisor:

745

Pagina 786

Parte VI: estensione di Linux nel cloud

un. Connettiti all'hypervisor. Seleziona File ➪ Aggiungi connessione. L'aggiunta di connessione


dovrebbe apparire la finestra.

b. Aggiungi la connessione. Seleziona la casella di controllo Connetti a host remoto, scegli SSH come
il metodo, utilizzare il nome utente root e digitare il nome host dell'altro hyper-
visor (ad esempio, host1.example.com). Quando fai clic su Connetti, potresti essere
viene richiesto di immettere una password per l'utente root dell'hypervisor remoto e immettere altro
informazione.

Una voce per il nuovo hypervisor dovrebbe apparire nella finestra Virtual Machine Manager.

Passaggio 2: migrare la VM in esecuzione su un altro hypervisor


Fare clic con il pulsante destro del mouse su qualsiasi VM attualmente in esecuzione e selezionare Migrate. Il Migrate the Virtual
Viene visualizzata la finestra Macchina, come mostrato nella Figura 26.3.

FIGURA 26.3

Scegli l'hypervisor in cui migrare la VM.


746

Pagina 787

Capitolo 26: Utilizzo di Linux per il cloud computing

Seleziona il nuovo host. Nel mio esempio, la VM è attualmente in esecuzione su host2, quindi voglio farlo
seleziona host1 come nuovo host. Dopo un po 'di tempo per copiare l'immagine della memoria della VM
sull'altro host, la VM dovrebbe apparire come in esecuzione su quell'host.

Se, per qualche motivo, la migrazione non riesce (CPU incompatibili o altri problemi), puoi farlo
26
spegnere sempre la VM su un host e riavviarla sull'altro host. Facendo questo
richiede solo che lo spazio di archiviazione condiviso sia attivo. Sul secondo host, esegui semplicemente il file
Crea una nuova procedura guidata della macchina virtuale, ma seleziona per eseguire un'immagine esistente invece di un file
installazione ISO.

La configurazione dell'hypervisor che ti ho appena mostrato potrebbe adattarsi bene alla tua casa
workstation o anche una piccola impresa. Sebbene sia oltre lo scopo di questo libro aiutare
sviluppi un'intera piattaforma di cloud computing, è all'interno della nostra carta per aiutarti a utilizzare
diverse piattaforme cloud per eseguire i tuoi sistemi Linux. Il prossimo capitolo ti aiuta a farlo.

Sommario
Linux è la base su cui poggia la maggior parte delle odierne tecnologie cloud emergenti
costruito. Questo capitolo descrive molti dei componenti di base che entrano nella creazione di un cloud
basato su Linux e altre tecnologie open source. Quindi ti aiuta a conoscerne alcuni
di quelle tecnologie di base impostando un paio di hypervisor e avviando virtual
macchine.

Esercizi
Gli esercizi in questa sezione descrivono le attività relative alla configurazione di un hypervisor (host KVM
computer) e utilizzarlo per eseguire macchine virtuali. Se sei bloccato, le soluzioni alle attività lo sono
mostrato nell'Appendice B. Tieni presente che le soluzioni mostrate nell'Appendice B lo sono normalmente
solo uno dei tanti modi per completare un'attività.

Sebbene l'esempio mostrato in questo capitolo per la configurazione degli hypervisor utilizzi tre fisici
macchine, questi esercizi possono essere eseguiti su una singola macchina fisica.

1. Controlla il tuo computer per vedere se può supportare la virtualizzazione KVM.

2. Installa un sistema Linux insieme ai pacchetti necessari per usarlo come host KVM e
per eseguire l'applicazione Virtual Machine Manager.
3. Assicurarsi che i servizi sshd e libvir td siano in esecuzione sul sistema.

4. Procurati un'immagine ISO di installazione di Linux compatibile con il tuo hypervisor e


copiarlo nella directory predefinita utilizzata da Virtual Machine Manager per memorizzare le immagini.
747

Pagina 788

Parte VI: estensione di Linux nel cloud

5. Verificare che il bridge di rete predefinito (virbr0) sia attualmente attivo.

6. Installa una macchina virtuale utilizzando l'immagine ISO copiata in precedenza.

7. Assicurati di poter accedere e utilizzare la macchina virtuale.

8. Verifica che la tua macchina virtuale possa connettersi a Internet o ad un'altra rete
fuori dall'hypervisor.

9. Arrestare la macchina virtuale in modo che non sia più in esecuzione.

10. Avviare nuovamente la macchina virtuale in modo che sia in esecuzione e disponibile.

748

Pagina 789

CAPITOLO
Distribuzione di Linux nel cloud
IN QUESTO CAPITOLO
27
Creazione di immagini cloud Linux

Distribuzione di un'immagine cloud su virt-manager (libvirtd)

Distribuzione di un'immagine cloud su OpenStack

Distribuzione di un'immagine cloud su Amazon EC2

P un DVD fisico, puoi ottenere un'immagine Linux e distribuirla su un cloud. Un modo per farlo è
prendere un'immagine Linux generica (una che è avviabile ma non configurata) e fornire le informazioni
er ottenere un nuovo sistema Linux da usare, invece di eseguire semplicemente un programma di installazione standard da
per configurare quell'immagine secondo le tue esigenze. Un altro modo è rivolgersi a un provider di servizi cloud, scegliere un'immagine,
fare clic sulle selezioni per configurarlo e avviarlo.

Il punto è che il cloud computing offre nuovi modi per avviare e utilizzare i sistemi Linux.
Nel Capitolo 26, ti ho chiesto di eseguire un'installazione Linux standard per creare una macchina virtuale che funzioni
su un hypervisor Linux. In questo capitolo, ti mostro come utilizzare le immagini cloud per avviare un nuovo file
Sistema Linux.

Innanzitutto, descrivo come utilizzare cloud-init per combinare manualmente un'immagine cloud Linux con
informazioni di configurazione, per consentirne l'esecuzione in una varietà di ambienti. Successivamente, dico come un file
processo simile viene eseguito su OpenStack Cloud o Amazon Elastic Compute Cloud (EC2), da
facendo clic su controller cloud facili da usare per scegliere immagini e impostazioni per eseguire Linux
istanza cloud che desideri.

Far funzionare Linux in un cloud


Le piattaforme cloud sono ottime per avviare nuove macchine virtuali in modo rapido ed efficiente. Possono fare
quindi perché non è necessaria una nuova installazione ogni volta che si desidera una nuova istanza di un sistema operativo.

I cloud pubblici, come Amazon EC2 (http://aws.amazon.com/ec2), offrono istanze di


ent distribuzioni Linux da avviare e utilizzare. Scegli un'istanza Linux, come Ubuntu,
Red Hat Enterprise Linux (RHEL) o SUSE Linux Enterprise Server (SLES), ottimizzato per specifiche

749

Pagina 790

Parte VI: estensione di Linux nel cloud

scopi. Ad esempio, esistono istanze ottimizzate per prestazioni elevate


cessazione o applicazioni che richiedono molta memoria.

Il contenuto di un'istanza cloud tende ad essere di natura generica. Ci si aspetta che di più
le informazioni sono allegate all'immagine dall'utente cloud o dal provider cloud che utilizza un servizio
come cloud-init. Queste informazioni rientrano in due categorie generali: metadati e
dati utente:

■ metadati: nei metadati sono incluse le informazioni necessarie prima del


stivali di immagine. Si tratta di dati che sono al di fuori del contenuto dell'immagine e in genere
gestito dal cloud provider. Alcuni di questi dati derivano dal fatto che le cose
come l'archiviazione, la memoria e la potenza di elaborazione derivano da un pool di risorse,
piuttosto che dalla macchina fisica su cui stai installando. Così dicono i metadati
al fornitore di servizi cloud la quantità di tali risorse, e possibilmente altre, da allocare
all'inizio del processo di avvio dell'istanza.
■ dati utente: le informazioni sui dati utente vengono inserite nel sistema operativo che
esiste sull'immagine. Si tratta di dati che la persona che utilizza la macchina virtuale
vides. Ciò potrebbe includere un account utente e una password, file di configurazione,
deve essere eseguito al primo avvio, le identità dei repository software o qualsiasi altra cosa
potresti voler eseguire o modificare all'interno del sistema operativo stesso.

Quando vai a eseguire un'istanza Linux in un ambiente cloud, in genere inserisci il file
metadati e informazioni sui dati utente facendo clic sulle caselle di controllo e compilando i moduli da
un controller cloud basato sul Web (come OpenStack Dashboard o Red Hat Enterprise
Virtualization Manager). Le informazioni potrebbero non essere identificate come metadati e dati utente
quando si configura l'istanza tramite il controller cloud.
Il cloud che utilizzi per eseguire le tue macchine virtuali Linux può essere un cloud pubblico, un privato
cloud o un cloud ibrido. Il tipo di cloud che scegli può dipendere dalle tue esigenze e
Il tuo budget:

■ Cloud pubblico: Amazon EC2 e Google Compute Engine sono esempi di piattaforme cloud
moduli che consentono di avviare e utilizzare macchine virtuali Linux da un'interfaccia basata sul Web
viso. Paghi per il tempo di esecuzione dell'istanza. La quantità di memoria,
anche lo spazio di archiviazione e le CPU virtuali utilizzate per eseguire il servizio sono inclusi nei costi.
Il vantaggio dei cloud pubblici è che non è necessario acquistare e mantenere
la tua infrastruttura cloud.
■ Cloud privato: con un cloud privato, inserisci la tua infrastruttura informatica
luogo (hypervisor, controller, archiviazione, configurazione di rete e così via). Ambientazione
creare il proprio cloud privato significa assumersi maggiori costi iniziali per possedere e mantenere
tain infrastrutture. Ma ti offre maggiore sicurezza e controllo del tuo computer
risorse. Poiché controlli l'infrastruttura, puoi creare le immagini degli utenti
avere accesso alla tua infrastruttura OpenStack e tenerne conto per l'utilizzo da parte dell'utente
infrastruttura a modo tuo.

750

Pagina 791

Capitolo 27: Distribuzione di Linux nel cloud

■ Cloud ibrido: molte aziende stanno cercando soluzioni di cloud ibrido. UN


Il cloud ibrido può consentire a più piattaforme cloud di essere gestite da una struttura centrale.
Ad esempio, Red Hat Cloudforms può distribuire e gestire macchine virtuali su
Piattaforme OpenStack, VMware vSphere e Red Hat Enterprise Virtualization,
provisioning di diversi tipi di carichi di lavoro in ambienti appropriati. A volte
di picco della domanda, Cloudforms può anche indirizzare le macchine virtuali da eseguire su Amazon
Nuvole EC2.

Questi ambienti cloud hanno modi diversi di fornire e configurare il virtuale


macchine. Tuttavia, le funzionalità che i cloud devono fornire alla gestione delle macchine virtuali
sono simili. Avere una comprensione di queste funzionalità può aiutarti quando configuri
ure un sistema Linux da eseguire in un cloud.

Per avere un'idea migliore della configurazione delle istanze cloud Linux, la sezione successiva descrive come
cloud-init funziona per configurare le istanze cloud di Linux. Quindi ti aiuta a crearne uno tuo
27
metadati e file di dati utente e applicali all'istanza cloud in modo che le informazioni possano farlo
essere utilizzato all'avvio dell'immagine cloud.

Creazione di immagini Linux per i cloud


Pensa a cosa hai fatto quando hai installato un sistema Linux nel Capitolo 9. Durante a
processo di installazione manuale, si imposta una password di root, si crea un account utente normale e
password, possibilmente ha definito le interfacce di rete e ha svolto altre attività. L'informazione
è entrato è diventato una parte permanente del sistema operativo che è rimasto ogni volta
hai avviato il sistema.

Quando inizi con un'immagine cloud precostruita come sistema Linux, puoi utilizzare cloud-
init per ottenere un sistema Linux pronto per essere eseguito. La struttura cloud-init (http: // launchpad.
net / cloud-init) imposta un'istanza di macchina virtuale generica da eseguire nel modo desiderato
per funzionare senza passare attraverso un processo di installazione. La sezione successiva descrive alcuni modi di
utilizzando cloud-init.

Configurazione ed esecuzione di un'istanza cloud cloud-init


Nella procedura successiva, ti mostro come creare manualmente dati che possono essere combinati con un file
immagine cloud Linux avviabile, quindi quando viene avviata l'immagine viene configurata in base ai dati.
La combinazione dei dati con l'immagine in fase di runtime consente di modificare i dati ogni volta prima
l'immagine viene eseguita, invece di installarla permanentemente nell'immagine.

Ti suggerisco di eseguire questa procedura su uno degli hypervisor che hai configurato nel Capitolo
26. Questo non solo ti consente di creare i dati personalizzati per la tua immagine cloud Linux, ma
consente inoltre di eseguire quell'immagine come macchina virtuale su quell'hypervisor.

751
Pagina 792

Parte VI: estensione di Linux nel cloud

Per aggiungere dati ed eseguire un'immagine cloud esistente, questa procedura richiede di ottenere un file
immagine cloud, creare file di dati e generare una nuova immagine che combini questi elementi.
Questa procedura è pensata per essere molto semplice per avviare un'immagine cloud. Più tardi, te lo dico
come aggiungere più funzionalità a questi file di dati. Per configurare ed eseguire un'immagine cloud, segui
questi passaggi:

1. Creare un file di metadati cloud-init. Crea un file chiamato meta-data da conservare


dati che identificano le informazioni sull'istanza cloud dall'esterno. Per
Ad esempio, puoi aggiungere un nome per identificare l'istanza (id-istanza), un nome host
(nome host locale) e altre informazioni. Per mantenerlo semplice per il primo tentativo, io
assegna solo due campi (impostali con i nomi che ti piacciono):
id-istanza: FedoraWS01
nome host locale: fedora01

2. Creare un file di dati utente cloud-init. Crea un file denominato user-data da conservare
dati che si configurano all'interno del sistema operativo sull'immagine stessa. Per questo
caso semplice, ho appena impostato una password per l'utente predefinito (fedora) su cloudpass e
cloud-init per non far scadere la password:
# cloud-config
password: cloudpass
chpasswd: {expire: False}

3. Combina i dati in un'immagine separata. Con i metadati e i dati dell'utente


file nella directory corrente, creare un'immagine ISO che contenga quei dati. Dopo,
presentiamo questa immagine come un CD-ROM per l'immagine Linux, quindi cloud-init lo sa
come configurare l'immagine Linux. (Installa prima il pacchetto genisoimage, if
non l'hai già fatto.)
# yum installa genisoimage
# genisoimage -output fedora21-data.iso -volid cidata \
-joliet -rock metadati dei dati utente

4. Ottieni un'immagine cloud di base. Le immagini cloud per Ubuntu, Fedora e RHEL sono configurate
da utilizzare con cloud-init. Ottieni un'immagine cloud Fedora ufficiale (immagini per altri
le distribuzioni sono descritte più avanti) e procedere come segue:
■ Vai su getfedora.org. Apri un browser web e vai su https: // getfedora.
org / en / cloud / download /.
■ Fare clic su OpenStack. Fare clic sul collegamento "Sei un utente OpenStack" in Generale
Scopo e seleziona il pulsante "Download" che appare per ottenere un'immagine qcow2
che può essere utilizzato in un ambiente OpenStack. Il nome dell'immagine è qualcosa
come: Fedora-Cloud-Base-20141203-21.x86_64.qcow2.

5. Snapshot dell'immagine. Probabilmente è necessario eseguire questa procedura alcune volte prima
ottieni l'immagine esatta che desideri. Quindi, invece di utilizzare l'immagine scaricata
direttamente, crea un'istantanea. Per tenere traccia delle mie versioni, ho aggiunto 01 al file
nuovo nome snapshot:

752

Pagina 793

Capitolo 27: Distribuzione di Linux nel cloud

# qemu-img create -f qcow2 \


-o backing_file = Fedora-Cloud-Base-20141203-21.x86_64.qcow2 \
Fedora-Cloud-Base-01.qcow2

6. Copiare i file nella directory delle immagini. È buona norma copiare le immagini nel file
/ var / lib / libvirt / images / directory quando vengono utilizzati su un hypervisor
(servizio libvirtd). Ad esempio, per copiare l'immagine cloud e l'immagine dei dati in quella
directory, digita quanto segue:
# cp Fedora-Cloud-Base-20141203-21.x86_64.qcow2 \
Fedora-Cloud-Base-01.qcow2 \
fedora21-data.iso \
/ var / lib / libvirt / images /

7. Avvia l'istanza cloud. Con i file in posizione, eseguire i seguenti comandi per
avvia un'istanza della tua immagine cloud:
27
# cd / var / lib / libvirt / images
# virt-install --import --name fedora21-01 --ram 4096 --vcpus 2 \
--disk path = Fedora-Cloud-Base-01.qcow2, format = qcow2, bus = virtio \
- percorso del disco = fedora21-data.iso, dispositivo = cdrom \
- bridge di rete = virbr0 &

Il precedente esempio virt-install mostra che la macchina virtuale è assegnata a consumare


4 GB di RAM (--ram 4096) e due CPU virtuali (--vcpus 2). I valori di RAM e VCPU su
il tuo sistema potrebbe essere diverso, a seconda delle risorse del tuo computer.

A questo punto, una macchina virtuale denominata fedora21-01 è in esecuzione sul tuo hypervisor. Come
la macchina virtuale si avvia, dovrebbe aprirsi una finestra della console che consente di accedere al file
nuova macchina virtuale cloud.

Indagare sull'istanza cloud


Per esaminare l'immagine cloud che abbiamo creato puoi aprire l'istanza in esecuzione e guardare
dentro. Un modo per farlo, se non è già aperto, è aprire la macchina virtuale con
virt-viewer:

# virt-viewer fedora21-01

Dalla finestra della console che appare, usa i dati che abbiamo aggiunto all'immagine per accedere.
Usa fedora come utente e cloudpass come password per accedere. L'utente fedora ha
privilegio sudo, quindi puoi utilizzare quell'account per indagare sull'istanza digitandone alcuni
comandi:

Qui puoi vedere dove sono stati copiati i dati utente nell'istanza:

$ sudo cat /var/lib/cloud/instances/FedoraWS01/user-data.txt


# cloud-config
password: cloudpass
chpasswd: {expire: False}

753

Pagina 794

Parte VI: estensione di Linux nel cloud

La configurazione di base del cloud viene eseguita nel file /etc/cloud/cloud.cfg. Puoi vedere
qui che l'account utente root è disabilitato per impostazione predefinita. In fondo al file puoi farlo
vedere che l'utente chiamato fedora è l'utente predefinito e ha il privilegio sudo senza
richiedendo una password.

$ sudo cat /etc/cloud/cloud.cfg


utenti:
- predefinito
disable_root: 1
...
system_info:
utente predefinito:
nome: fedora0
lock_paswd: true
gecos: Fedora Cloud User
gruppi: [wheel, adm, systemd-journal]
sudo: ["ALL = (ALL) NOPASSWD: ALL"]
shell: / bin / bash
distro: fedora
percorsi:
cloud_dir: / var / lib / cloud
templates_dir: / etc / cloud / templates
ssh_svcname: sshd

# vim: sintassi = yaml

Puoi anche vedere altre cose nel file cloud.cfg. Puoi vedere quale cloud_init_
i moduli vengono eseguiti durante l'inizializzazione (come quelli che impostano il nome host o avviano rsyslog
registrazione). Puoi vedere cloud_config_modules che imposta le impostazioni locali, imposta il fuso orario e
eseguire ulteriori strumenti di configurazione (come chef e puppet).

Perché i repository yum sono abilitati, a condizione che tu abbia una connessione di rete disponibile
(DHCP dovrebbe avere assegnato indirizzi alla macchina virtuale per impostazione predefinita), è possibile eseguire l'installazione
qualsiasi pacchetto disponibile dai repository Fedora.
Clonazione dell'istanza cloud
Se decidi che l'istanza cloud che hai creato ti piace, puoi salvarne una copia per eseguirla
successivamente effettuando un clone delle due immagini (cloud e data image) che compongono il cloud
esempio. Per creare un clone dell'istanza cloud in esecuzione, utilizzando virt-manager, eseguire il
a seguire:

1. Avvia virt-manager. Sul sistema host che esegue la macchina virtuale, esegui
il comando virt-manager o avviare Virtual Machine Manager dalle attività
schermo sul desktop.

754

Pagina 795

Capitolo 27: Distribuzione di Linux nel cloud

2. Metti in pausa la macchina virtuale. Fare clic con il pulsante destro del mouse sulla voce dell'istanza della macchina virtuale nel file
virt-manager, e seleziona Pausa. Ciò rende la macchina virtuale inattiva
per il momento.
3. Clona la macchina virtuale. Fare clic con il pulsante destro del mouse sulla voce dell'istanza della macchina virtuale
di nuovo e seleziona Clona. Viene visualizzata la finestra Clone Virtual Machine, come mostrato
nella Figura 27.1.

FIGURA 27.1

La clonazione ti consente di salvare una copia permanente di un'istanza cloud.

27

4. Scegli le impostazioni di clonazione. Per l'immagine di base cloud e l'immagine dei dati, puoi
scegliere di creare nuove copie o condividerle con la macchina virtuale esistente.
Dopo averlo fatto, seleziona clone.

755
Pagina 796

Parte VI: estensione di Linux nel cloud

L'istanza cloud clonata è ora disponibile per l'avvio, l'arresto e la gestione in altro modo come preferisci
dalla finestra Virtual Machine Manager o dal comando virsh.

Prova un'immagine cloud di Ubuntu


Qualsiasi immagine Linux abilitata per cloud-init può essere configurata più o meno allo stesso modo
come è stato appena mostrato per Fedora. Ecco un esempio di come ottenere l'immagine cloud di Ubuntu
in esecuzione senza un provider di servizi cloud sull'hypervisor Linux locale:

1. Scarica il tarball cloud di Ubuntu. Vai al sito di Ubuntu e seleziona il file


rilascio e immagini specifiche desiderate. Ho scaricato ubuntu-14.10-server-
cloudimg-amd64.tar.gz cloud tarball dal seguente sito:
http://cloud-images.ubuntu.com/releases/

2. Decomprimere il tarball cloud. Ho digitato quanto segue per estrarre i file dal
tarball:
# tar xvf ubuntu-14.10-server-cloudimg-amd64.tar.gz

3. Combina i dati in un'immagine separata. Inizia con gli stessi metadati


e file di dati utente che hai usato per Fedora. Cambia i nomi dei metadati in
ubuntu invece di fedora. L'utente predefinito è diverso (ubuntu), ma
puoi assegnare una password allo stesso modo. Esegui questo comando per creare il file
immagine dei dati:
# genisoimage -output ubuntu-data.iso -volid cidata \
-joliet -rock metadati dei dati utente

4. Istantanea dell'immagine. Scatta un'istantanea dell'immagine come segue:


# qemu-img create -f qcow2 \
-o backing_file = utopic-server-cloudimg-amd64.img \
utopic-server-01.img

5. Copiare i file di immagine. Copia i file di immagine di Ubuntu nella directory appropriata. Per
il file immagine di Ubuntu da eseguire, è necessario aggiungere l'immagine floppy per creare il cloud
istanza avviabile:
# cp ubuntu-data.iso \
utopic-server-cloudimg-amd64-floppy \
utopic-server-cloudimg-amd64.img / var / lib / libvirt / images /

6. Avvia l'istanza cloud. Per avviare l'istanza cloud di Ubuntu, eseguire quanto segue
comando:
# cd / var / lib / libvirt / images
# virt-install --import --name ubuntu1410-01 --ram 4096 --vcpus 2 \
--disk path = utopic-server-cloudimg-amd64-floppy, device = floppy \
--disk path = utopic-server-cloudimg-amd64.img, format = raw, bus = virtio \
--disk path = ubuntu-data.iso, device = cdrom --network bridge = virbr0 &

756

Pagina 797

Capitolo 27: Distribuzione di Linux nel cloud

A questo punto, hai un'istanza cloud di Ubuntu semplice in esecuzione. Accedi come utente
ubuntu e la password definita nel file dati utente.

Espansione della configurazione cloud-init


Puoi aggiungere molte più informazioni ai tuoi metadati e file di dati utente per configurare il tuo
istanze cloud. Esempi di impostazioni di cloud-init possono essere trovati su Cloud-Init Config
Pagina degli esempi (http://cloudinit.readthedocs.org/en/latest/topics/examples.
html). Le sezioni seguenti mostrano esempi di impostazioni che puoi aggiungere ai tuoi file di dati utente.
I file di dati utente e metadati sono in formato yaml. Il formato yaml utilizza rientri e delimitatori ben noti. Elementi
in un elenco sono preceduti da un trattino e uno spazio. Chiavi e valori sono separati da due punti e uno spazio. Se tu non sei 27
familiarità con yaml, consiglio di esplorare il sito del progetto Yaml (https://github.com/yaml).

Aggiunta di chiavi ssh con cloud-init


Invece di utilizzare password per accedere alle istanze cloud, puoi utilizzare l'autenticazione basata su chiave
tication insieme al comando ssh per accedere alla rete. Questo è comunemente usato da
fornitori di servizi cloud per consentire l'accesso degli utenti alle immagini cloud.

Se hai già generato chiavi ssh pubbliche e private per l'account utente che intendi utilizzare
utilizzare per ssh nell'istanza cloud, è possibile utilizzare quella chiave pubblica per questa procedura. Se tu
aveva generato una coppia di chiavi RSA, la chiave pubblica si trova nel file id_rsa.pub per impostazione predefinita:

# cat $ HOME / .ssh / id_rsa.pub


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwjxB / rrJY4o
ZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24 / ZBb3S1j7vK2WymOcwEoWekhbZHBAyYeqXK
YQQjUB2E2Mr6qMkmrjQBx6ypxbz + VwADNCwegY5RCUoNjrN43GVu6nSOxhFf7hv6dtCjv
osOvtt0979YS3UcEyrobpNzreGSJ8FMPMRFMWWg68Jz5hOMCIE1IldhpODvQVbTNsn / ST
xO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kIDhf / qu / Zn1kxQ9xfecQ + SUi + 2IwN69o1fNpex
JPFr + Bwjkwcrk58C6uowG5eNSgnuu7GMUkT root@host2.example.com

La chiave pubblica da quel file viene in genere copiata in $ HOME / .ssh / authorized_keys
file per l'utente del sistema remoto a cui si desidera accedere. Possiamo aggiungere la chiave a
quel file sulla nostra istanza cloud utilizzando voci nel file di dati utente che assomiglia a questo:

utenti:
- predefinito
- nome: wsmith
gecos: William B. Smith
gruppo-primario: wsmith
sudo: ALL = (ALL) NOPASSWD: ALL
lock-passwd: true
chiavi ssh

757

Pagina 798

Parte VI: estensione di Linux nel cloud

- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwjx
B / rrJY4oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24 / ZBb3S1j7vK2WymOcwEoWekhbZH
BAyYeqXKYQQjUB2E2Mr6qMkmrjQBx6ypxbz + VwADNCwegY5RCUoNjrN43GVu6nSOxhFf7
hv6dtCjvosOvtt0979YS3UcEyrobpNzreGSJ8FMPMRFMWWg68Jz5hOMCIE1IldhpODvQV
bTNsn / STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kIDhf / qu / Zn1kxQ9xfecQ + SUi + 2IwN6
9o1fNpexJPFr + Bwjkwcrk58C6uowG5eNSgnuu7GMUkT root@host2.example.com

Dalle informazioni precedenti, puoi vedere che wsmith è l'utente predefinito. I gecos
la voce è in genere il nome completo dell'utente, utilizzato nel quinto campo del file / etc / passwd.
La password è bloccata per questo utente. Tuttavia, poiché la voce ssh-rsa dal mio file root
l'account su host2.example.com è fornito qui sotto ssh-authorized-keys per il file
utente, posso accedere all'istanza cloud come wsmith su ssh senza digitare una password (pro
ammesso che la mia chiave privata sia associata a quella chiave pubblica).

Aggiunta di interfacce di rete con cloud-init


Se desideri che le interfacce di rete vengano configurate nelle istanze cloud all'inizio dell'avvio
processo, puoi aggiungere voci di interfacce di rete al tuo file di metadati per quei cloud
istanze. Ecco un esempio:

interfacce di rete: |
iface eth0 inet statico
indirizzo 192.168.100.50
rete 192.168.100.0
maschera di rete 255.255.255.0
trasmissione 192.168.1.255
gateway 192.168.100.1
bootcmd:
- ifdown eth0
- ifup eth0

I valori delle interfacce di rete mostrati qui identificano l'interfaccia eth0 all'interno di
istanza cloud come contenente indirizzi statici (in altre parole, non da DHCP). L'IP
l'indirizzo per l'interfaccia è impostato su 192.168.100.50, mentre il gateway che instrada i pacchetti
out to the world è impostato su 192.168.100.1. Per visualizzare l'interfaccia sul nuovo indirizzo,
bootcmd è impostato per abbassare l'interfaccia (ifdown eth0) e quindi eseguire il backup
(ifup eth0).

Aggiunta di software con cloud-init


Non sei limitato al software già presente sulla tua immagine cloud. All'interno dei tuoi dati utente
file, puoi definire repository yum (in Fedora e RHEL) o repository apt (in Ubuntu
o Debian), quindi identifica i pacchetti che desideri installare quando il cloud
l'istanza viene avviata.

Il seguente esempio mostra come potrebbero apparire le voci in un file di dati utente per aggiungere uno yum
repository (per Fedora o RHEL) nella tua istanza cloud e quindi installa i pacchetti da quello
repository o qualsiasi altro repository abilitato:

758

Pagina 799

Capitolo 27: Distribuzione di Linux nel cloud

myownrepo:
baseurl: http://myrepo.example.com/pub/myrepo/
abilitato: vero
gpgcheck: true
gpgkey: file: /// etc / pki / rpm-gpg / RPM-GPG-KEY-MYREPO
nome: il mio archivio software personale
pacchi:
- nmap
- mycoolcmd
- [libmystuff, 3.10.1-2.fc21.noarch]

Nell'esempio appena mostrato, viene creato un nuovo repository yum nel file / etc / yum.
repos.d / myownrepo.repo. Viene fornita una chiave gpg per verificare la validità del pacchetto installato
età e il controllo GPG è attivato. Dopodiché, viene installato il pacchetto nmap (che si trova in
il repository standard Fedora yum), viene installato il pacchetto mycoolcmd (dal mio private
repository) e viene installata una versione specifica del pacchetto libmystuff.
27

La configurazione dei repository software apt per Ubuntu viene eseguita in modo leggermente diverso. Primaria a prova di errore
e i mirror dei pacchetti apt di sicurezza sono configurati per impostazione predefinita (nel file cloud.cfg in
immagine), insieme alle impostazioni per fare in modo che l'istanza, se eseguita in un cloud Amazon EC2, esegua la ricerca
la regione più vicina per i pacchi. Per aggiungere più archivi, voci nel tuo file di dati utente
potrebbe apparire come segue:

apt_mirror: http://us.archive.ubuntu.com/ubuntu/
apt_mirror_search:
- http://myownmirror.example.com
- http://archive.ubuntu.com
pacchi:
- nmap
- mycoolcmd
- [libmystuff, 3.16.0-25]

La voce myownmirror.example.com dice ad apt di usare il tuo repository apt privato


per cercare i pacchetti. Nota che i pacchetti che vuoi installare possono essere inseriti fondamentalmente
lo stesso formato che hai fatto con Fedora, sebbene le informazioni sulla versione specifica (se inserite)
potrebbe avere un aspetto diverso in alcuni casi.

Puoi aggiungere molte altre impostazioni ai tuoi file di dati utente e metadati. Ancora una volta, fare riferimento a
Pagina degli esempi di configurazione cloud di Cloud-Init (http://cloudinit.readthedocs.org/en/
latest / topics / examples.html) per i dettagli.

Utilizzo di cloud-init nell'informatica aziendale


Finora, gli esempi di cloud-init in questo capitolo si sono concentrati sull'acquisizione di un'immagine cloud,
aggiungendo manualmente i dati di configurazione e eseguendolo temporaneamente come macchina virtuale
il tuo hypervisor locale. Questo approccio è utile se vuoi capire come funziona cloud-init
funziona e le opportunità che hai per regolare le immagini cloud in base alle tue specifiche. Ma
questo approccio non si adatta bene se gestisci grandi imprese di macchine virtuali.

759

Pagina 800
Parte VI: estensione di Linux nel cloud

Cloud-init supporta il concetto di origini dati . Inserendo dati utente e metadati in


un'origine dati, non è necessario inserire manualmente tali informazioni in un'istanza cloud, poiché
l'abbiamo fatto in precedenza in questo capitolo. Invece, quando il servizio cloud-init inizia a funzionare su
l'istanza, sa di cercare non solo nel sistema locale le fonti di dati, ma anche
lato esso.

Per i cloud Amazon EC2, cloud-init interroga un particolare indirizzo IP


( http://169.254.169.254/) per i dati. Ad esempio, potrebbe controllare
http://169.254.169.254/2009-04-04/meta-data/ per i metadati e
http://169.254.169.254/2009-04-04/user-data/ per i dati utente. Ciò consente a
dati di configurazione da memorizzare e accedere da una posizione centrale.

Per quanto riguarda ciò che potrebbe essere all'interno dei metadati e dei dati utente, una configurazione molto più complessa
schemi possono essere sviluppati per la distribuzione delle istanze cloud. Supporta Cloud-init
strumenti di configurazione, come Puppet (http://puppetlabs.com/puppet/puppet -open-
fonte) e Chef (https://www.chef.io/chef/). Questi strumenti ti consentono di applicare script di
informazioni di configurazione alle tue istanze cloud, anche facendo cose come sostituire
ponents o riavviare i servizi secondo necessità per riportare il sistema allo stato desiderato.

A questo punto, tuttavia, il mio lavoro non è trasformarti in un amministratore cloud in piena regola
(poche centinaia di pagine fa, avresti potuto essere un principiante di Linux). Invece, io voglio che tu lo faccia
capire con cosa dovrai occuparti se alla fine atterri in un data center cloud. . .
perché molte persone credono che la maggior parte dei data center sarà gestita come infrastruttura cloud
ture in un futuro non troppo lontano.

Finora in questo capitolo, hai esaminato l'interno della configurazione di Linux per il cloud
informatica. Quindi, facciamo un passo indietro e vediamo come puoi utilizzare due dei più popolari
Piattaforme cloud basate su Linux per eseguire le tue macchine virtuali basate su Linux: OpenStack
e Amazon EC2.

Utilizzo di OpenStack per distribuire immagini cloud


Secondo la maggior parte degli account, OpenStack è oggi il progetto open source più alla moda. Con OpenStack, tu
ottenere una piattaforma in continua evoluzione per la gestione dell'infrastruttura fisica di cloud computing
ture, così come i sistemi virtuali che girano su di esso. OpenStack ti consente di distribuire il tuo
vate cloud o offritelo al mondo come cloud pubblico.

Piuttosto che configurare il tuo cloud OpenStack, ti ​mostrerò come puoi usarlo
OpenStack per distribuire macchine virtuali da un dashboard OpenStack. Se vuoi provarlo
te stesso, OpenStack è disponibile nei seguenti modi:

■ Distribuzioni Linux: Fedora, Ubuntu e CentOS hanno versioni gratuite di OpenStack


che puoi distribuire da solo. Red Hat Enterprise Linux offre una versione di
OpenStack disponibile in abbonamento. È difficile da configurare. Alcuni all-in-one

760

Pagina 801

Capitolo 27: Distribuzione di Linux nel cloud

le configurazioni per OpenStack possono essere eseguite su una singola macchina, ma penso che avrai un file
migliore esperienza se inizi con tre macchine fisiche: un nodo controller
e due hypervisor.
■ Cloud OpenStack pubblici: puoi provare i cloud OpenStack pubblici per variare
costi. Un elenco di cloud OpenStack pubblici è disponibile nel progetto OpenStack
sito (http://www.openstack.org/marketplace/public-clouds/).

Il mio primo punto è aiutarti a eseguire un sistema Linux in un cloud, quando non hai la capacità
possibilità di fare quello che vuoi sui tuoi computer. Tuttavia, l'altro mio punto è mostrarti
come l'interfaccia basata sul web di un fornitore di servizi cloud (come OpenStack Dashboard) può semplificare notevolmente
la configurazione del cloud che abbiamo eseguito manualmente con cloud-init in precedenza in questo capitolo.

A partire da OpenStack Dashboard 27


Inizierò con una configurazione OpenStack che è già in atto. L'ambiente OpenStack
L'amministratore di ronment ha creato un progetto per me chiamato cnegus-test-project e un file
account utente (cnegus) che mi consente di accedere a quel progetto. Ecco cosa ho intenzione di fare:
■ Configurazione della rete: proprio come configurerei un router e collegherei fisicamente il mio
computer in quel router, imposterò una rete virtuale. Quella rete virtuale
il lavoro includerà un insieme di indirizzi che vengono distribuiti alle mie macchine virtuali
tramite DHCP.
■ Configurare le macchine virtuali: passo attraverso il processo di scelta,
configurazione e distribuzione di un paio di macchine virtuali.

La versione di OpenStack utilizzata per questa dimostrazione è Red Hat Enterprise Linux
Piattaforma OpenStack (RHEL-OSP). Tuttavia, l'esperienza sarebbe simile su qualsiasi
Ambiente OpenStack. La sezione successiva mostra come iniziare a configurare il tuo
Rete.

Configurazione della rete virtuale OpenStack


1. Accedi a OpenStack. Usando il nome utente e la password che ti sono stati assegnati da
l'amministratore di OpenStack, accedi a OpenStack Dashboard dal tuo file
programma di navigazione in rete. Dovresti vedere una schermata Panoramica, simile a quella mostrata in
Figura 27.2.
2. Crea una rete. Per creare una rete, dalla colonna di sinistra nelle panoramiche
pagina, seleziona Reti. Dalla schermata Reti che appare, crea una nuova rete
funziona come segue (gli esempi che ho usato sono tra parentesi):

un. Seleziona il pulsante Crea rete.


b. Nella scheda Rete, digita un nome di rete ( mynet ).
c. Nella scheda Subnet, digita un nome di subnet ( mysub01 ), Network
Indirizzo ( 192.168.100.0/24 ), versione IP ( IPv4 ) e IP gateway
( 192.168.100.1 ) e lasciare deselezionato Disable Gateway.

761

Pagina 802

Parte VI: estensione di Linux nel cloud

FIGURA 27.2

Accedi alla dashboard di OpenStack.

d. Nella scheda Dettagli sottorete, digita un intervallo IP separato da virgole


indirizzi nella casella Allocation Pool. Per il mio esempio, ho scelto
192.168.100.10,192.168.100.50 per distribuire un intervallo di indirizzi IP
ai client da 192.168.100.10 a 192.168.100.50. Ottieni un nome server sugger-
gestion dall'amministratore del tuo cloud OpenStack o usa un file public
Server DNS (come 8.8.8.8 o 8.8.4.4 di Google).
e. Seleziona Crea per creare la nuova rete. Viene visualizzata la nuova rete
la schermata Reti.
3. Crea un router. Affinché le tue macchine virtuali possano accedere a Internet,
è necessario identificare un router collegato alla rete privata su uno
l'interfaccia e una rete che può raggiungere l'Internet pubblica dall'altra. Ecco
come farlo:
un. Dalla colonna di sinistra, seleziona Router.
b. Fare clic sul pulsante Crea router.
c. Digita un nome router ( myrouter01 ) e fai clic su Crea router.

d. Seleziona il pulsante Imposta gateway.


e. Dalla schermata Imposta gateway, fare clic sulla casella Rete esterna e
scegli tra le reti esterne disponibili. Lascia il nome del router
e l'ID router così come sono. Fare clic su Imposta gateway. Viene visualizzato il nuovo router
nella schermata Router.

762

Pagina 803

Capitolo 27: Distribuzione di Linux nel cloud

4. Collega la tua rete al router esterno. Dalla schermata Router (tu


dovrebbe essere ancora su quella schermata), seleziona il nome del router appena creato
(myrouter1):
un. Dalla schermata Dettagli router, seleziona il pulsante Aggiungi interfaccia.
b. Dalla schermata Aggiungi interfaccia, fai clic sulla casella Subnet e scegli il file
sottorete creata in precedenza ( mynet: 192.168.100.0/24 mysub01 ).
Non dovrebbe essere necessario modificare il nome del router o l'ID del router.
c. Fare clic su Aggiungi interfaccia.

5. Visualizza la topologia di rete. Fare clic su Topologia di rete nella colonna di sinistra. Poi
passa il puntatore del mouse sul nome del router (myroute01). La Figura 27.3 mostra un file
esempio di come potrebbe apparire la tua configurazione di rete.

27
FIGURA 27.3

Visualizza la topologia di rete dalla dashboard di OpenStack.

Una volta installata la rete, puoi creare chiavi da utilizzare per accedere alle tue macchine virtuali
in OpenStack.

Configurazione delle chiavi per l'accesso remoto


Il modo normale per configurare l'accesso alle macchine virtuali in un ambiente cloud è quello di
creare una coppia di chiavi pubblica / privata che fornisca un accesso sicuro alle macchine virtuali utilizzando
ssh e strumenti correlati dal sistema desktop. La chiave privata è archiviata sul desktop

763

Pagina 804

Parte VI: estensione di Linux nel cloud


directory home dell'utente e la chiave pubblica viene iniettata nella macchina virtuale in modo che tu possa farlo
accedere in remoto (tramite ssh) alla macchina virtuale senza digitare una password. Ecco come fare
imposta le tue chiavi:

1. Selezionare Accesso e sicurezza. Dalla colonna di sinistra, seleziona Accesso e sicurezza.

2. Crea una coppia di chiavi. Se hai già una coppia di chiavi, puoi saltare al passaggio successivo. Se
no, seleziona la scheda Coppie di chiavi e fai clic sul pulsante Crea coppia di chiavi. Quando il file Create
Viene visualizzata la finestra Keypair, eseguire questa operazione:
un. Digita un nome per la coppia di chiavi ( mycloudkey ) e fai clic su Crea coppia di chiavi ma-
tonnellata. Una finestra pop-up chiede se si desidera aprire o salvare il file * .pem.
b. Seleziona Salva file e fai clic su OK. Quando viene richiesto dove salvarlo, salvarlo
nella directory .ssh nella tua directory home.
Sei pronto per distribuire un'istanza OpenStack (macchina virtuale basata su cloud).

Avvio di una macchina virtuale in OpenStack


Per iniziare ad avviare una nuova istanza di macchina virtuale cloud, vai alla colonna di sinistra e seleziona
Istanze. Quindi fare clic sul pulsante Avvia istanza. Viene visualizzata la schermata Avvia istanza. Per
inserisci le informazioni necessarie per avviare l'istanza, segui questi passaggi:

1. Seleziona Dettagli. Dalla scheda Dettagli, seleziona i seguenti elementi:


■ Zona di disponibilità: una zona di disponibilità è costituita da un gruppo di host di elaborazione.
A volte vengono create zone separate per identificare un gruppo di computer che lo sono
fisicamente insieme (ad esempio sullo stesso rack) o che hanno lo stesso hardware
caratteristiche (quindi potrebbero essere utilizzati per gli stessi tipi di applicazioni). Scegline uno
delle zone dalla lista.
■ Nome istanza: assegna all'istanza un nome che ti aiuti a ricordare
Cos'è.
■ Aroma: scegliendo un gusto, assegni una serie di risorse al tuo virtuale
istanza della macchina. Le risorse includono il numero di core della CPU virtuale, il
quantità di memoria disponibile, spazio su disco assegnato e disco temporaneo
spazio disponibile. (Lo spazio temporaneo è lo spazio disponibile dal disco locale
mentre l'istanza è in esecuzione, ma non viene salvata quando l'istanza si arresta.)
I gusti predefiniti includono m1.tiny, m1.small, m1.medium, m1.large e
m1.xlarge. Altre varianti possono essere aggiunte dall'amministratore del cloud.
■ Conteggio istanze: per impostazione predefinita, è impostato su 1, per avviare un'istanza. Cambiare il
numero per avviare più istanze, se lo desideri.
■ Instance Boot Source : l'istanza può essere avviata da un'immagine, uno snapshot,
un volume, un'immagine che include un nuovo volume o un'istantanea del volume che
include un nuovo volume.
■ Nome immagine: selezionare l'immagine che si desidera avviare. I nomi in genere includono
i nomi dei sistemi operativi che stai avviando.

764

Pagina 805

Capitolo 27: Distribuzione di Linux nel cloud

■ Dimensioni del dispositivo e nome del dispositivo (facoltativo) : se è stata selezionata l'istanza
Boot Source, hai scelto di includere un nuovo volume, imposti la dimensione (in GB) e
nome del dispositivo per il volume in questi campi. Per il nome del dispositivo, se scegli
vda come nome del dispositivo (per il primo disco su una macchina virtuale), il rappresentante del dispositivo
il risentimento per quel dispositivo sarebbe / dev / vda.

2. Selezionare Accesso e sicurezza. Seleziona la scheda Accesso e sicurezza e scegli la coppia di chiavi
creato in precedenza.
3. Selezionare Networking. Seleziona la scheda Rete. Dall'elenco delle reti disponibili,
prendi quello che desideri con il mouse e trascinalo nella casella Reti selezionate.

4. Aggiungere le impostazioni di post-creazione. È possibile aggiungere comandi e script che configurano l'estensione
sistema ulteriormente dopo l'avvio. Qui è dove puoi aggiungere i tipi di informazioni
che hai aggiunto nei file di dati utente descritti nelle sezioni su cloud-init ear-
lier in questo capitolo. 27
Seleziona Avvia per avviare la macchina virtuale. Con la macchina virtuale in esecuzione, puoi
accedere a quel sistema selezionando l'istanza e facendo clic sulla scheda Console. Il virtuale
la finestra della console della macchina dovrebbe presentarti con un prompt di login. Se vuoi essere in grado di farlo
accedere alla macchina virtuale utilizzando ssh sulla rete, passare alla sezione successiva.

Accesso alla macchina virtuale tramite ssh


Con la tua chiave pubblica iniettata nella tua macchina virtuale in esecuzione, è pronto per il login
nell'usare ssh. Tuttavia, prima di poterlo fare, devi eseguire questi passaggi:

1. Aggiungere un indirizzo IP mobile. Dal dashboard di OpenStack, seleziona Istanze da


nella colonna di sinistra, fare clic su Altro sulla voce contenente l'istanza e fare clic su Associa
IP mobile. Seleziona il segno più (+) accanto alla casella Indirizzo IP, seleziona un pool che ha
IP mobili disponibili e fare clic su Alloca IP. L'indirizzo assegnato dovrebbe apparire in
il campo Indirizzo IP. Selezionare la porta da associare e fare clic su Associa.

2. Utilizzare ssh per accedere all'istanza. Da un sistema Linux che ha accesso alla rete
su cui è stato assegnato l'indirizzo mobile, eseguire il comando ssh per accedere. Supponendo
il file .pem della tua chiave si chiamava mycloud.pem, l'utente predefinito sull'istanza è
utente-cloud e l'indirizzo IP è 10.10.10.100, è possibile digitare quanto segue per accedere:
# ssh -i mycloud.pem cloud- utente@10.10.10.100

Ora dovresti essere in grado di accedere senza password. Per fare l'amministrazione sul sistema,
puoi usare il comando sudo come utente predefinito.

Utilizzo di Amazon EC2 per distribuire immagini cloud


Amazon Elastic Computer Cloud (Amazon EC2) è una piattaforma cloud particolarmente adatta
per il cloud computing con pagamento in base al consumo. Come OpenStack, ti ​consente di scegliere tra file preconfigurati
immagini della macchina virtuale e configurale secondo le tue necessità.

765

Pagina 806

Parte VI: estensione di Linux nel cloud

Per iniziare a utilizzare Amazon EC2 per avviare macchine virtuali, vai alla Guida introduttiva
Pagina Amazon Web Services e segui i link per creare un nuovo account (http: // aws
.amazon.com / come iniziare /). Dopo aver effettuato l'accesso, l'intera gamma di servizi AWS è
visualizzato. Seleziona EC2 e vedrai la console di gestione EC2, come mostrato nella Figura 27.4.

FIGURA 27.4

Avvia istanze cloud utilizzando la console di gestione di Amazon EC2.

Per avviare la tua prima istanza, seleziona il pulsante Avvia istanza. Ti viene quindi data una scelta
di immagini Linux (Red Hat Enterprise Linux, SUSE Linux, Ubuntu e così via) e Windows
per avviare. La procedura guidata ti guida attraverso la selezione di diversi tipi di istanza (gen-
scopo principale o ottimizzato) e consente di configurare i dettagli dell'istanza, aggiungere spazio di archiviazione, taggare il file
istanza e configurare la sicurezza.

Dopo che la macchina virtuale è stata configurata, puoi lavorare direttamente con la macchina virtuale
da una finestra della console o accedere alla rete utilizzando ssh e coppie di chiavi pubbliche / private.
In qualsiasi momento, puoi tornare alla console di gestione EC2 per tenere traccia del file
risorse che stai consumando e controlla l'integrità delle tue macchine virtuali.

Sommario
Capire in che modo il cloud computing differisce dalla semplice installazione di un sistema operativo
direttamente sull'hardware del computer ti aiuterà ad adattarti man mano che sempre più data center si spostano
verso il cloud computing. All'inizio di questo capitolo, ti ho incoraggiato a mettere le mani
766

Pagina 807

Capitolo 27: Distribuzione di Linux nel cloud

su alcune immagini cloud, combinarle con i dati e avviarle su un hypervisor Linux locale
sor per capire come funzionano le immagini cloud.

Successivamente, ho dimostrato come è possibile avviare le proprie immagini virtuali in un OpenStack


piattaforma cloud. Ciò includeva la configurazione delle interfacce di rete, scegliendo come il virtuale
istanza verrà eseguita e lanciando l'immagine virtuale. Ho anche introdotto rapidamente l'Amazzonia
Servizio Elastic Compute Cloud, dove puoi pagare per utilizzare l'archiviazione su cloud e il tempo di elaborazione
se non disponi di risorse di elaborazione sufficienti.

Questo capitolo non ha esercizi perché intendevo che fosse un allungamento oltre lo scopo di questo
libro. Spero che trovi utile questo materiale dopo aver bloccato il tuo Linux di base
abilità e sono pronti a estendere tali abilità nelle nuvole.

27

767

Pagina 809
808
Parte VII
Appendici

IN QUESTA PARTE
Appendice A
Media

Appendice B
Risposte sugli esercizi

Pagina 811
810

APPENDICE

Media
UN
IN QUESTA APPENDICE
Ottenere distribuzioni Linux

Creazione di un CD o DVD avviabile

A devi trovare un modo per ottenere una distribuzione Linux e quindi installarla o eseguirla dal vivo sul tuo
computer. Fortunatamente, le distribuzioni Linux sono ampiamente disponibili e sono disponibili in una varietà di forme.
meno che tu non abbia acquistato un computer con Linux preinstallato o che qualcuno lo abbia installato per te, te
In questa appendice imparerai a:

■ Ottieni alcune distribuzioni Linux diverse


■ Creare un disco di avvio per installare la distribuzione
■ Avviare Linux da un'unità USB

Per usare questo libro in modo efficace, dovresti avere davanti a te una distribuzione Linux su cui lavorare. Suo
importante essere in grado di provare Linux mentre leggi. Quindi prova gli esempi e fai gli esercizi.
Le distribuzioni Linux sono più comunemente disponibili dai siti Web delle organizzazioni che
produrli. Le sezioni seguenti descrivono i siti Web associati alle distribuzioni Linux che
offrono immagini ISO che puoi scaricare.

Un'ISO è un'immagine disco formattata nel formato del file system ISO 9660, un formato comunemente utilizzato con i CD
e immagini DVD. Poiché si tratta di un formato ben noto, è leggibile dai sistemi Windows, Mac e Linux.
Un'immagine ISO può essere masterizzata su un supporto CD o DVD, a seconda delle dimensioni dell'immagine. Un'immagine ISO nel tuo file
il sistema può essere montato su un sistema Linux in modalità loopback, in modo da poter visualizzare o copiare il suo contenuto.
Quando un'immagine ISO contiene un Live CD di Linux o un'immagine di installazione, le immagini sono avviabili. Ciò significa che invece
di avviare un sistema operativo, come Windows o Linux, dal disco rigido del computer, puoi dire al tuo
computer per eseguire l'avvio dal CD o dal DVD. Ciò consente di eseguire un sistema operativo completamente diverso da quello che è
installato sul disco rigido senza modificare o danneggiare i dati su quel disco.

771

Pagina 812

Appendice A: Media

Ottenere Fedora
Puoi scaricare Fedora dal sito https://getfedora.org . Quella pagina contiene
collegamenti per scaricare immagini per l'installazione di versioni Fedora Workstation, Server e Cloud.

Consiglio di scaricare Fedora Workstation Live Image per lavorare insieme a questo libro perché la maggior parte del libro
funziona con quella distribuzione. Puoi eseguirlo dal vivo senza impegnarti a sovrascrivere il disco rigido del tuo computer fino a quando non lo fai
sentirsi abbastanza a proprio agio da installarlo in modo permanente.

Per testare gli esempi in questo libro, ho usato Fedora 21, 32 bit o Fedora Workstation a 64 bit
Immagine. Se hai una ISO a 64 bit, devi utilizzare una macchina a 64 bit. Se hai una ISO a 32 bit, il file
funziona su macchine a 32 o 64 bit.

Anche le versioni successive di Fedora fornite con un desktop GNOME dovrebbero funzionare. Ecco un collegamento
all'esatta ISO usata per Fedora 21 Workstation : http: //download.fedoraproject
.org / pub / fedora / linux / releases / 21 / Workstation / x86_64 / iso / Fedora-Live-
Workstation-x86_64-21-5.iso. Tieni presente che l'ultima Fedora Workstation ISO
l'immagine non si adatta a un CD, quindi è necessario masterizzarla su DVD. Vedere le descrizioni della masterizzazione di CD / DVD-
strumenti disponibili per Windows, Mac OS X e Linux più avanti in questa appendice.

La Figura A.1 mostra un esempio della pagina Ottieni Fedora.

Oggi, il download predefinito è un'immagine ISO di una Fedora Workstation a 64 bit di tipo PC
(GNOME) Live DVD. Puoi avviare questa immagine sul tuo computer e, se lo desideri, puoi farlo
installalo in modo permanente sul disco rigido del tuo computer. Per scaricare questa immagine, fai
il seguente:

1. Selezionare Workstation, Server o Cloud. Consiglio a Workstation di seguire


questo libro.
2. Selezionare il pulsante Scarica ora e fare clic sul pulsante Scarica. Un pop-up dovrebbe
appare, chiedendoti cosa vuoi fare con l'ISO.

3. Selezionare per salvare l'ISO. A seconda delle impostazioni, ti viene chiesto dove ti trovi
vuoi scaricarlo o inizia semplicemente il download in una cartella predefinita (in Linux,
probabilmente è una cartella Download).

4. Se viene chiesto dove inserire l'ISO, selezionare una cartella con spazio sufficiente
per tenerlo. Ricorda dove si trova questa cartella perché devi individuare l'ISO quando
vai a bruciarlo più tardi.

Se hai bisogno di maggiori informazioni su cosa fare con l'immagine scaricata, ci sono dei link
per aiutarti nella pagina Fedora che appare. Al momento della stesura di questo articolo, ci sono collegamenti a

772
Pagina 813

Appendice A: Media

"Masterizza l'immagine su un disco DVD vuoto", "scrivi l'immagine su un'unità flash USB", "trova comune
suggerimenti "per l'avvio del supporto e leggere la" Guida completa all'installazione ".

FIGURA A.1

Scarica le immagini ISO di Fedora dalla pagina Ottieni Fedora.

Hai altre scelte per scaricare ISO da Fedora. Dalla parte inferiore del file Get
Nella pagina Fedora, puoi scaricare immagini ISO Fedora appositamente configurate chiamate spin
( https://spins.fedoraproject.org). Ecco alcuni tipi speciali di Fedora che gira
potrebbe interessarti:

■ Il desktop gira: le persone che preferiscono il desktop KDE al desktop GNOME possono farlo
scarica la versione di KDE. Se stai provando Linux su un computer con meno memoria o
potenza di elaborazione, considera gli spin Xfce e LXDE (che rappresentano desktop leggeri
con lo stesso nome). Lo spin MATE-Compiz offre più dell'altro estremo, con
effetti desktop come finestre traballanti e desktop che ruotano su un cubo.
UN
■ Giri di sicurezza: uno dei primi utilizzi del supporto live di Linux era di fornire
supporto rimovibile contenente strumenti di sicurezza. Se hai un file non avviabile o altro

773

Pagina 814

Appendice A: Media

computer rotto, la rotazione di sicurezza può essere avviata per riparare i file system, eseguire il debug
problemi di rete o eseguire centinaia di altre attività per controllare e riparare il computer
(anche se il sistema operativo installato è Windows o qualche altra versione di Linux).
■ Design-suite : la versione Design-suite contiene un consolidamento del software per
sforzi creativi. Ciò include strumenti per lavorare con documenti, immagini, video,
audio e altri media.
■ Giochi: prova la vasta gamma di giochi software gratuiti e open source disponibili oggi
nella rotazione di Fedora Games.
Questi giri speciali possono essere divertenti, ma per lavorare insieme alla maggior parte del libro io consiglio
immagine ISO standard della workstation. Dopo aver scaricato l'immagine ISO, passare al file
una descrizione più avanti in questo capitolo di come masterizzare quell'immagine su CD o DVD.

Ottenere Red Hat Enterprise Linux


Molte grandi aziende, agenzie governative e università utilizzano Red Hat Enterprise
Linux per eseguire le proprie applicazioni mission-critical. Sebbene la maggior parte delle procedure in questo libro
funzionerà bene su Fedora, ci sono molti riferimenti a come le cose vengono fatte diversamente in
Red Hat Enterprise Linux perché, quando vai a trovare un lavoro come amministratore di sistema Linux
Nella maggior parte dei casi, lavorerai con i sistemi Red Hat Enterprise Linux.

Sebbene il codice sorgente di Red Hat Enterprise Linux sia disponibile gratuitamente, gli ISO
contenenti i pacchetti che installi (spesso indicati come i binari) sono disponibili solo per
coloro che hanno account sul portale clienti di Red Hat (https: //access.redhat
.com) o tramite copie di valutazione.

Se non hai un account, puoi provare a registrarti per una prova di 30 giorni. Se tu o
la tua azienda ha un account con Red Hat, puoi scaricare le ISO di cui hai bisogno. Vai a
sul sito seguente e seguire le istruzioni per scaricare un Red Hat Enterprise Linux
server ISO o registrati per ottenere una copia di valutazione:

https://access.redhat.com/downloads

Red Hat non offre versioni live di Red Hat Enterprise Linux. Invece, puoi scaricare
DVD di installazione che è possibile installare come descritto nel Capitolo 9 di questo libro.

Se non riesci a ottenere un DVD di installazione di Red Hat Enterprise Linux, puoi ottenere un'esperienza simile utilizzando il
DVD di installazione di CentOS. CentOS non è esattamente lo stesso di RHEL. Tuttavia, se scarichi l'installazione di CentOS
DVD per CentOS 7 dai collegamenti sul sito CentOS (http://www.centos.org/download/), l' installazione
è simile a quella descritta per Red Hat Enterprise Linux nel Capitolo 9.

774

Pagina 815

Appendice A: Media

Ottenere Ubuntu
Molte persone che non conoscono Linux iniziano scaricando e installando Ubuntu. Ubuntu ha un enorme
base di fan e molti collaboratori attivi. Se hai problemi con Ubuntu, ci sono grandi,
forum attivi in ​cui molte persone sono disposte ad aiutarti a superare i problemi.

Se hai già un sistema Ubuntu installato, puoi seguire la maggior parte di questo
libro. Puoi ottenere Ubuntu con un desktop GNOME e la sua dash shell predefinita è simile a
bash (oppure puoi passare a bash in Ubuntu per abbinare gli esempi di shell in questo libro).
Sebbene la maggior parte degli esempi di questo libro si concentri su Fedora e RHEL, ne ho aggiunti molti
più riferimenti a Ubuntu attraverso il libro in questa edizione.

Per ottenere Ubuntu, puoi scaricare un'immagine ISO live o un supporto di installazione da
la pagina di download di Ubuntu : http://www.ubuntu.com/download/ubuntu/
scarica sul desktop.

La Figura A.2 mostra un esempio della pagina Download Ubuntu Desktop.

FIGURA A.2

Scarica le immagini ISO di Ubuntu Live CD o scegli un download alternativo.


Come con Fedora, il modo più semplice per scaricare Ubuntu è selezionare Ubuntu Live CD a 64 bit,
scaricalo e masterizzalo. Ecco come farlo dalla pagina Scarica Ubuntu:

1. Fare clic sul pulsante Download. Per impostazione predefinita, questo scarica il 64 bit più recente UN
Immagine ISO live del desktop di Ubuntu.

2. O ti viene chiesto dove vuoi scaricare l'immagine ISO o semplicemente inizia


download in una cartella predefinita.

775

Pagina 816

Appendice A: Media

3. Se ti viene chiesto dove mettere l'ISO, seleziona una cartella con spazio sufficiente per contenere
l'ISO. Ricorda dove si trova questa cartella perché devi individuare l'ISO quando
vai a bruciarlo più tardi.

Una volta completato il download, masterizza l'immagine ISO su un DVD utilizzando le procedure descritte in
la sezione "Creazione di CD e DVD Linux".

Sono disponibili anche altri tipi di supporti di installazione di Ubuntu. Per trovare altri file Ubuntu
media, vai alla pagina dei download alternativi (http://www.ubuntu.com/download /
download alternativi). Da questo sito è possibile ottenere file multimediali che contengono una varietà di file
installazioni desktop e server.

Creazione di CD e DVD Linux


Dopo aver scaricato un'immagine CD o DVD di Linux, è possibile utilizzare diversi strumenti per creare
CD o DVD avviabili per l'installazione o semplicemente per eseguire Linux dal vivo da tali supporti.
Prima di iniziare, devi disporre di quanto segue:

■ Immagini ISO di DVD o CD: scaricare le immagini ISO sul computer che rappresentano
il DVD o CD fisico che alla fine masterizzerai. Oggi molte immagini ISO di Linux lo sono
troppo grande per stare su un DVD (compresi quelli per RHEL, Fedora e Ubuntu).
■ DVD / CD vuoti: sono necessari DVD o CD vuoti su cui masterizzare le immagini. I CD reggono
a circa 700 MB; I DVD possono contenere fino a circa 4,7 GB (singolo strato).
■ Masterizzatore CD / DVD: è necessaria un'unità in grado di masterizzare CD o DVD,
a seconda di quale stai bruciando. Non tutte le unità CD / DVD possono masterizzare DVD
(soprattutto quelli più anziani). Quindi potrebbe essere necessario trovare un computer con un'unità che
ha quella capacità.

Le sezioni seguenti descrivono come masterizzare CD e DVD avviabili da Windows, Mac


Sistemi OS X e Linux.

Masterizzazione di CD / DVD in Windows


Se hai scaricato la tua immagine ISO di Linux su un sistema Windows, puoi masterizzarla
immagine su CD o DVD in modi diversi. Ecco alcuni esempi:

■ Windows: nelle ultime versioni di Windows, la funzione di masterizzazione di immagini ISO su


Il CD o il DVD è integrato in Windows. Dopo aver scaricato un'immagine ISO, è sufficiente inserire
il CD o il DVD appropriato nell'unità del computer (supponendo che l'unità sia
in grado), fai clic con il pulsante destro del mouse sull'icona dell'immagine ISO dalla cartella in cui l'hai scaricata e
selezionare Masterizza immagine disco. Quando viene visualizzata la finestra Windows Disc Image Burner,
selezionare Masterizza per masterizzare l'immagine.

776
Pagina 817

Appendice A: Media

■ Roxio Creator: questa applicazione Windows di terze parti contiene molte funzionalità per
ripping e masterizzazione di CD e DVD. Puoi leggere informazioni sul prodotto qui : http: //
www.roxio.com/enu/products/creator/.
■ Nero CD / DVD Burning ROM: Nero è un altro popolare software di masterizzazione di CD / DVD
prodotto per sistemi Windows. Puoi trovare ulteriori informazioni su Nero qui : http: //
www.nero.com.

Masterizzazione di CD / DVD su un sistema Mac OS X.


Come Windows, Mac OS X ha un software di masterizzazione CD / DVD integrato nel sistema operativo. Per
masterizza un'immagine ISO su disco su un sistema Mac OS X, segui questi passaggi:

1. Scarica l'immagine ISO che desideri sul tuo sistema Mac OS X. Un'icona che rappresenta
l'ISO dovrebbe apparire sul desktop.

2. Inserire un CD o DVD vuoto nel masterizzatore CD / DVD, a seconda delle dimensioni di


l'immagine.

3. Fare clic con il pulsante destro del mouse sull'icona che rappresenta l'ISO di Linux appena scaricato e selezionare
Masterizza "Linux" su disco. Viene visualizzata una finestra pop-up che chiede se sei sicuro di volerlo
brucia l'immagine.
4. Inserisci il nome che vuoi dare all'ISO e la velocità di scrittura. Quindi seleziona Masterizza.
L'immagine inizia a essere masterizzata su disco.

5. Dopo che l'immagine è stata masterizzata, espellere il disco; sei pronto per avviare il CD o
DVD su un computer appropriato.

Masterizzazione di CD / DVD in Linux


Linux ha strumenti grafici e da riga di comando per masterizzare immagini di CD e DVD su dispositivi fisici
cal media. Gli esempi in questa sezione mostrano come utilizzare K3b dal desktop o da cdrecord
(o wodim) per masterizzare immagini ISO su CD o DVD. Se non sono installati, puoi installarli entrambi
uno come segue:

# yum installa k3b


# yum installa wodim

Masterizzazione di CD da un desktop Linux


Ecco come creare CD Linux avviabili da un sistema Linux in esecuzione (come Fedora)
utilizzando K3b. K3b viene fornito con il desktop KDE ma funziona anche sul desktop GNOME.

1. Scarica le immagini ISO che desideri sul disco rigido del tuo computer. (L'immagine di un CD è
di dimensioni inferiori a circa 700 MB. Le immagini DVD a strato singolo sono inferiori a 4,7 GB.) UN
2. Aprire un'applicazione di masterizzazione di CD / DVD. Per questa procedura, consiglio il CD K3b e
DVD Kreator ( http://www.k3b.org). In Fedora, seleziona Attività e digita K3b

777

Pagina 818

Appendice A: Media

(o digita k3b da una finestra di Terminale). Il "K3b - The CD and DVD Kreator"
appare la finestra.

3. Dalla finestra K3b, seleziona Strumenti ➪ Masterizza immagine per masterizzare un'immagine ISO di CD o DVD.
Ti viene chiesto di scegliere un file immagine.

4. Individuare l'immagine appena scaricata o copiata sul disco rigido e selezionarla.


Dopo aver selezionato l'immagine desiderata, viene visualizzata la finestra Masterizza immagine
un checksum sull'immagine. (Spesso, puoi confrontare il numero di checksum che
appare accanto al numero in un file md5 dalla directory di download in cui si
ottenuto l'immagine, per assicurarsi che l'immagine non fosse danneggiata.) La Figura A.3 mostra il file
Finestra Masterizza immagine CD pronta per masterizzare un'immagine di Fedora.

FIGURA A.3
Usa K3b per masterizzare i tuoi CD o DVD Linux.

5. Inserire un CD o DVD vuoto nell'unità CD / DVD, che può essere una combinazione di CD /
Unità DVD. (Se viene visualizzata una finestra di CD / DVD Creator, è possibile chiuderla.)

778

Pagina 819

Appendice A: Media

6. Verificare le impostazioni nella finestra Masterizza immagine CD (spesso, le impostazioni predefinite vanno bene, ma
potresti voler rallentare la velocità in caso di ustioni brutte). Puoi anche
selezionare la casella di controllo Simula per provare la masterizzazione prima di scrivere effettivamente sul CD /
DVD. Fare clic su Start per continuare.
7. Al termine della masterizzazione del CD, espellerlo (o potrebbe essere espulso automaticamente) e contrassegnare
in modo appropriato (informazioni come il nome della distribuzione, il numero di versione, la data,
e nome dell'immagine ISO).

Ora sei pronto per iniziare l'installazione (o l'avvio) della distribuzione Linux che hai appena masterizzato.

Masterizzazione di CD da una riga di comando Linux


Se non hai una GUI o non ti dispiace lavorare dalla shell, puoi usare cdrecord
comando per masterizzare gli ISO. Con un CD vuoto inserito e l'immagine ISO che vuoi masterizzare
nella directory corrente, è possibile utilizzare la seguente semplice riga di comando per masterizzare un CD
immagine su CD utilizzando cdrecord:

# cdrecord -v qualunque.iso

Vedere la pagina man di cdrecord (man cdrecord) per altre opzioni disponibili con
comando cdrecord.

Avvio di Linux da un'unità USB


Invece di masterizzare immagini ISO su un CD o DVD, puoi mettere il tuo sistema Linux su una USB
guidare. Le unità USB offrono il vantaggio di essere scrivibili e leggibili, quindi puoi farlo
salva i tuoi contenuti tra le sessioni. La maggior parte dei computer moderni può avviarsi da un'unità USB,
anche se potrebbe essere necessario interrompere il processo di avvio per dire al BIOS di avviarsi da USB
invece del disco rigido o dell'unità CD / DVD.

Puoi trovare le procedure per mettere Fedora e Ubuntu su un'unità USB di seguito
località:

■ Fedora su unità USB: utilizzando uno strumento chiamato Live USB Creator (https: // fedorahosted
.org / liveusb-creator /), puoi installare un'immagine ISO Fedora su un'unità USB
in Windows o Linux. Per eseguire Fedora da quell'unità, inseriscila in una USB
porta del computer, riavvia il computer, interrompi il BIOS mentre si avvia
ing (possibilmente
utilizzando F12)
Live USB e selezionare
Creator si trova per l'avvio da un'unità USB. La procedura per
su https://fedoraproject.org/wiki/
How_to_create_and_use_Live_USB.
■ Ubuntu su unità USB: Ubuntu dispone di procedure per la creazione di un'unità USB avviabile UN
con Ubuntu su di esso che funziona da Windows, Mac OS X o Linux. Per scoprire come
per fare ciò, vai alla pagina di download di Ubuntu e in "Semplici modi per passare a

779

Pagina 820

Appendice A: Media

Ubuntu ", cerca la procedura appropriata" Come creare una chiavetta USB avviabile ... "
dure per Ubuntu, Windows o Mac OS X: http://www.ubuntu.com/download/
ubuntu / downloaddesktop.

Visita il sito web della Bibbia di Linux


Per trovare collegamenti a varie distribuzioni Linux e altri contenuti utili relativi a Linux, andare su Linux
Bible , sito web della nona edizione : http://www.wiley.com/go/linuxbible 9.

780

Pagina 821
APPENDICE

Risposte sugli esercizi


B
Questa appendice fornisce le risposte a ciascuno degli esercizi del capitolo. Ci sono molti modi per farlo
eseguire attività in Linux. Le risposte fornite qui sono suggerimenti.

Alcuni esercizi richiedono la modifica dei file di sistema che potrebbero cambiare il funzionamento di base
del tuo sistema, o addirittura renderlo non avviabile. Pertanto, ti consiglio di fare gli esercizi su un file
Sistema Linux che sei libero di modificare e cancellare se qualcosa dovesse andare storto.

Capitolo 2: Creazione del desktop Linux perfetto


La sezione seguente descrive in dettaglio alcuni modi in cui queste attività possono essere completate su GNOME 2 e
Desktop GNOME 3.

1. Per iniziare, hai bisogno di un sistema Linux di fronte a te per eseguire le procedure in questo libro.
È preferibile un sistema installato in modo da non perdere le modifiche al riavvio. Iniziare
fuori, puoi usare un Fedora Live CD (o un sistema installato), un sistema installato con Ubuntu o un file
Sistema installato Red Hat Enterprise Linux. Ecco le tue scelte:
■ Fedora Live CD (GNOME 3): prendi un Fedora Live CD come descritto nell'Appendice A. Eseguilo live,
come descritto nella sezione "Avvio con Fedora GNOME Desktop Live CD" del capitolo
2, oppure installalo ed eseguilo dal disco rigido come descritto nel Capitolo 9, "Installazione di Linux".
■ Ubuntu (GNOME 3) : installa Ubuntu e installa il software GNOME Shell come descritto
all'inizio del capitolo 2.
■ Red Hat Enterprise Linux 7 (GNOME 3): installa Red Hat Enterprise Linux 7 come file
descritto nel capitolo 9.
■ Red Hat Enterprise Linux 6 o versioni precedenti (GNOME 2): installare Red Hat Enterprise Linux 6
come descritto nel capitolo 9.

2. Per avviare il browser web Firefox e andare alla home page di GNOME (http://gnome.org),
ci sono alcuni semplici passaggi da eseguire. Se la rete non funziona, fare riferimento al Capitolo 14,
"Administering Networking", per assistenza sulla connessione a reti cablate e wireless.
■ Per GNOME 3, è possibile premere il tasto Windows per accedere alla schermata Panoramica. Quindi digita
Firefox per evidenziare solo l'icona del browser Web Firefox. Premi Invio per avviarlo. genere
http://gnome.org nella casella della posizione e premere Invio.
■ PerGNOME 2, selezionare l'icona di Firefox dalla barra dei menu in alto. generehttp://gnome.org
nella casella della posizione e premere Invio.

781

Pagina 822

Appendice B: Risposte agli esercizi

3. Per scegliere uno sfondo che ti piace dal sito d'arte GNOME (http: // gnome-look.
org), scaricalo nella cartella Immagini e selezionalo come sfondo corrente
su entrambi i sistemi GNOME 2 e GNOME 3, procedi come segue:
un. Digita http://gnome-look.org/ nella casella del percorso di Firefox e premi Invio.

b. Trova uno sfondo che ti piace e selezionalo, quindi fai clic su Zoom per visualizzarlo.

c. Fare clic con il pulsante destro del mouse sull'immagine e selezionare Imposta come sfondo del desktop.

d. Dal popup che appare, seleziona la posizione e il colore dello sfondo


Immagine.

e. Seleziona il pulsante Imposta sfondo del desktop. L'immagine viene utilizzata come desktop
sfondo e l'immagine viene copiata nel file Firefox_wallpaper.png in
la tua directory home.
4. Per avviare una finestra di Nautilus File Manager e spostarla nel secondo spazio di lavoro su
sul desktop, procedi come segue:
■ Per GNOME 3:

un. Premi il tasto Windows.


b. Prendi l'icona File dal Dash (lato sinistro) e trascinala su un lavoro inutilizzato-
spazio sul lato destro. Una nuova istanza di Nautilus inizia in quell'area di lavoro.
■ Per GNOME 2:

un. Apri la cartella Home dal desktop GNOME 2 (doppio clic).

b. Fare clic con il pulsante destro del mouse sulla barra del titolo di Nautilus visualizzata e selezionare Sposta
a destra dell'area di lavoro o passa a un'altra area di lavoro (puoi selezionare quale
spazio di lavoro desiderato dall'elenco).

5. Per trovare l'immagine scaricata da utilizzare come sfondo del desktop e aprirla
in qualsiasi visualizzatore di immagini, prima vai alla tua cartella Home.
L'immagine dovrebbe apparire in quella cartella quando apri Nautilus. Semplicemente doppio
fare clic sull'icona Firefox_wallpaper.png per aprire l'immagine nell'immagine predefinita
spettatore. Se hai più visualizzatori di immagini sul tuo sistema, fai clic con il pulsante destro del mouse sull'icona e
selezionare l'applicazione che si desidera utilizzare per aprirla.

6. Spostarsi avanti e indietro tra l'area di lavoro con Firefox su di esso e quella con
il file manager Nautilus è abbastanza semplice.

Se hai eseguito correttamente gli esercizi precedenti, Nautilus e Firefox dovrebbero essere in formato
diversi spazi di lavoro. Ecco come spostarti tra questi spazi di lavoro in GNOME
3 e GNOME 2:
■ In GNOME 3, premere il tasto Windows e fare doppio clic sull'area di lavoro desiderata
la colonna di destra. In alternativa, puoi andare direttamente all'applicazione tu
desiderato premendo Alt + Tab e premendo nuovamente Tab per evidenziare l'applicazione
che vuoi aprire.

782

Pagina 823

Appendice B: Risposte agli esercizi

■ In GNOME 2, selezionare l'area di lavoro desiderata con il mouse facendo clic su


piccola rappresentazione dello spazio di lavoro nella parte destra del pannello inferiore. Se
ti capita di avere Effetti del desktop abilitati (Sistema ➪ Preferenze Desktop
Effetti ➪ Compiz), prova a premere Ctrl + Alt + freccia destra (o freccia sinistra) per ruotare fino a
area di lavoro successiva.
7. Per aprire un elenco di applicazioni installate sul sistema e selezionare un'immagine
visualizzatore per aprire da tale elenco utilizzando il minor numero di clic o sequenze di tasti possibile, eseguire il
a seguire:
■ In GNOME 3, spostare il mouse nell'angolo superiore sinistro dello schermo per accedere al file
Schermata panoramica. Seleziona Applicazioni, seleziona Grafica dalla colonna di destra e
quindi seleziona Visualizzatore immagini.
■ In GNOME 2, selezionare Applicazioni ➪ Grafica ➪ Visualizzatore di immagini per aprire un'immagine
finestra del visualizzatore sul desktop.

8. Per modificare la visualizzazione delle finestre nell'area di lavoro corrente in visualizzazioni più piccole di
quelle finestre che puoi attraversare, fai quanto segue:
■ In GNOME 3, con più finestre aperte su più aree di lavoro, premere e
tieni premuti i tasti Alt + Tab. Continuando a tenere premuto il tasto Alt, premi Tab finché non lo fai
evidenzia l'applicazione che desideri. Rilascia il tasto Alt per selezionarlo. (Notare che
le applicazioni che non si trovano nell'area di lavoro corrente si trovano a destra di una riga
dividendo le icone.)
■ In GNOME 2, con più finestre aperte su più aree di lavoro, tenere premuto
i tasti Ctrl + Alt + Tab. Continuando a tenere premuti i tasti Ctrl + Alt, premi Tab
finché non avrai evidenziato l'applicazione che desideri. Rilascia i tasti Ctrl e Alt
tasti per selezionarlo.

9. Per avviare un lettore musicale dal desktop utilizzando solo la tastiera, eseguire le operazioni
a seguire:
■ In GNOME 3:

un. Premere il tasto Windows per accedere alla schermata Panoramica.

b. Digita Rhyth (finché l'icona non appare ed è evidenziata) e premi Invio. (Nel
Ubuntu, se non hai Rhythmbox installato, digita Bansh per aprire il file
Banshee Media Player.)
■ In GNOME 2:

Premi Alt + F2. Dalla casella Esegui applicazione che appare, digita rhythmbox e
premere Invio.

10. Per scattare una foto del desktop utilizzando solo sequenze di tasti, premere il tasto Print Screen
per acquisire uno screenshot dell'intero desktop sia in GNOME 3 che in GNOME 2. Premere
B
Alt + Stampa schermo per acquisire uno screenshot solo della finestra corrente. In entrambi i casi, il file
le immagini vengono salvate nella cartella Immagini nella cartella Inizio.
783

Pagina 824

Appendice B: Risposte agli esercizi

Capitolo 3: Utilizzo della shell


1. Per cambiare console virtuale e tornare al desktop:

un. Tieni premuto Ctrl + Alt e premi F2 (Ctrl + Alt + F2). Dovrebbe apparire una console basata su testo.

b. Digita il tuo nome utente (premi Invio) e la password (premi Invio).

c. Digita alcuni comandi, come id , pwd e ls .

d. Digita exit per uscire dalla shell e tornare al prompt di login.

e. Premi Ctrl + Alt + F1 per tornare alla console virtuale che contiene il desktop. (Su
diversi sistemi Linux, il desktop può trovarsi su diverse console virtuali.
Ctrl + Alt + F7 è un altro posto comune per trovarlo.)

2. Per la finestra di Terminale, per rendere il carattere rosso e lo sfondo giallo:

un. Dal desktop GNOME, selezionare Applicazioni ➪ Strumenti di sistema ➪ Terminale per aprire
una finestra di terminale.

b. Dalla finestra Terminale, seleziona Modifica ➪ Profili.

c. Con Default evidenziato dalla finestra Profili, seleziona Modifica.

d. Seleziona la scheda Colori e deseleziona la casella Usa i colori dal tema del sistema.

e. Seleziona la casella accanto a Colore testo, fai clic sul colore rosso che desideri dal colore
e fare clic su OK.

f. Seleziona la casella accanto a Colore di sfondo, fai clic sul colore giallo da cui desideri
la ruota dei colori e fare clic su OK.

g. Fare clic su Chiudi in ogni finestra per tornare alla finestra Terminale con il nuovo
colori.

h. Torna indietro e seleziona nuovamente la casella Usa i colori dal tema del sistema per tornare al file
colori predefiniti del terminale.

3. Per trovare il comando mount e la pagina man di tracepath:


■ Eseguire il tipo mount per vedere che la posizione del comando mount è / bin / mount.
■ Eseguire locate tracepath per vedere che la pagina man di tracepath si trova in
/usr/share/man/man8/tracepath.8.gz.

4. Per eseguire, richiamare e modificare questi comandi come descritto:


$ cat / etc / passwd
$ ls $ HOME
$ date

un. Premi la freccia su finché non vedi il comando cat / etc / passwd. Se tuo
il cursore non è già alla fine della riga, premi Ctrl + E per arrivarci. Backspace
sopra la parola passwd, digitare la parola gruppo e premere Invio.

b. Digita man ls e trova l'opzione per elencare per ora (-t). Premere la freccia su fino a
vedrai il comando ls $ HOME. Utilizzare il tasto freccia sinistra o Alt + B per posizionare

784

Pagina 825

Appendice B: Risposte agli esercizi


il cursore a sinistra di $ HOME. Digita -t , quindi la riga appare come ls -t $ HOME.
Premi Invio per eseguire il comando.

c. Digitare man date per visualizzare la pagina man della data. Utilizzare la freccia su per richiamare il file
comando data e aggiungi l'indicatore di formato che hai trovato. Un unico formato% D
l'indicatore ottiene i risultati di cui hai bisogno:
$ date +% D
12/08/11

5. Utilizzare il completamento con tabulazione per digitare basename / usr / share / doc / . Digita basen <Tab>
/ u <Tab> sh <Tab> do <Tab> per ottenere il nome base / usr / share / doc /.

6. Invia / etc / services al comando less: $ cat / etc / services | meno .

7.Fai visualizzare l'output del comando data in questo formato: Oggi è giovedì,
10 dicembre 2015.
$ echo "Oggi è $ (date + '% A,% B% d,% Y')"

8. Visualizza le variabili per trovare il tuo nome host corrente, nome utente, shell e home
directory.
$ echo $ HOSTNAME
$ echo $ USERNAME
$ echo $ SHELL
$ echo $ HOME

9. Per aggiungere un alias mypass permanente che visualizzi il contenuto di / etc / passwd
file:
un. Digita nano $ HOME / .bashrc .

b. Spostare il cursore su una riga aperta nella parte inferiore della pagina (premere Invio per aprire
una nuova riga se necessario).

c. Sulla sua riga, digita alias m = "cat / etc / passwd" .

d. Digita Ctrl + O per salvare e Ctrl + X per uscire dal file.

d. Digita source $ HOME / .bashrc .

e. Digita alias m per assicurarti che l'alias sia stato impostato correttamente: alias m = 'cat / etc /
passwd '.
f. Digita m (il file / etc / passwd viene visualizzato sullo schermo).

10. Per visualizzare la pagina man per la chiamata di sistema mount, utilizzare il comando man -k
per trovare le pagine man che includono la parola mount (usando ^ si garantisce solo che
vengono visualizzati i comandi che iniziano con la parola mount). Quindi usa la montatura
comando con il numero di sezione corretto (2) per ottenere la pagina man mount corretta:
$ man -k ^ mount B
montare (2) - monta il file system
montare (8) - monta un filesystem
mountpoint (1) - controlla se una directory è un punto di montaggio
mountstats (8) - Visualizza le statistiche del client NFS per montaggio

785

Pagina 826

Appendice B: Risposte agli esercizi

$ man 2 mount
MOUNT (2) Manuale del programmatore Linux MONTATURA (2)
NOME
mount - monta il file system
SINOSSI
#include <sys / mount.h>
.
.
.

Capitolo 4: Spostarsi nel filesystem


1. Creare la directory dei progetti, creare nove file vuoti (da house1 a house9) e list
solo quei file.
$ mkdir $ HOME / progetti /
$ touch $ HOME / progetti / casa {1..9}
$ ls $ HOME / progetti / casa {1..9}

2. Crea il percorso della directory $ HOME / progetti / case / porte / e creane alcuni
file vuoti in quel percorso.
$ cd
$ mkdir progetti / case
$ touch $ HOME / progetti / case / bungalow.txt
$ mkdir $ HOME / progetti / case / porte /
$ touch $ HOME / progetti / case / porte / bifold.txt
$ mkdir -p $ HOME / progetti / esterni / vegetazione /
$ touch progetti / esterni / vegetazione / paesaggio.txt

3. Copiare i file house1 e house5 nella directory $ HOME / projects / houses /.


$ cp $ HOME / progetti / casa [15] $ HOME / progetti / case

4. Copiare in modo ricorsivo la directory / usr / share / doc / initscripts * in $ HOME /


progetti / directory.
$ cp -ra / usr / share / doc / initscripts * / $ HOME / projects /

5. Elenca ricorsivamente il contenuto della directory $ HOME / projects /. Pipe l'output


al comando less in modo da poter sfogliare l'output.
$ ls -lR $ HOME / progetti / | Di meno

6. Rimuovere i file house6, house7 e house8 senza che venga richiesto.


$ rm -f $ HOME / progetti / casa [678]

7. Spostare house3 e house4 nella directory $ HOME / progetti / case / porte.


$ mv progetti / casa {3,4} progetti / case / porte /

8. Rimuovere la directory $ HOME / progetti / case / porte e il suo contenuto.


$ rm -rf progetti / case / porte /

786

Pagina 827

Appendice B: Risposte agli esercizi

9. Modificare i permessi sul file $ HOME / projects / house2 in modo che possa essere letto
e scritto dall'utente proprietario del file, letto solo dal gruppo e non ha
permesso per altri.
$ chmod 640 $ HOME / progetti / casa2

10. Modificare in modo ricorsivo i permessi della directory $ HOME / projects / in modo che
nessuno ha il permesso di scrittura su alcun file o directory al di sotto di quel punto nel file
sistema.
$ chmod -R aw $ HOME / progetti /
$ ls -lR / home / joe / projects /
/ home / joe / progetti /:
totale 12
-r - r - r--. 1 joe joe 0 16 gennaio 06:49 house1
-r - r -----. 1 joe joe 0 16 gennaio 06:49 house2
-r - r - r--. 1 joe joe 0 16 gennaio 06:49 house5
-r - r - r--. 1 joe joe 0 16 gennaio 06:49 house9
dr-xr-xr-x. 2 joe joe 4096 16 gennaio 06:57 case
dr-xr-xr-x. 2 joe joe 4096 1 luglio 2014 initscripts-9.03.40
dr-xr-xr-x. 3 joe joe 4096 16 gennaio 06:53 all'aperto

Capitolo 5: Lavorare con i file di testo


1. Seguire questi passaggi per creare il file / tmp / services, quindi modificarlo in modo tale
"WorldWideWeb" appare come "World Wide Web".
$ cp / etc / services / tmp
$ vi / tmp / services
/ WorldWideWeb <Enter>
cwWorld Wide Web <Esc>

Le due righe successive mostrano il prima e il dopo.


http 80 / tcp www www-http # WorldWideWeb HTTP
http 80 / tcp www www-http # World Wide Web HTTP

2. Un modo per spostare il paragrafo nel file / tmp / services è cercare il file
prima riga del paragrafo, eliminare cinque righe (5dd), andare alla fine del file (G) e
inserire nel testo (p):
$ vi / tmp / services
/ Nota che è <Invio>
5dd
G
p
B
3. Per utilizzare la modalità ex per cercare ogni occorrenza del termine tcp (case sensitive) in
il tuo file / tmp / services e modificalo in QUALUNQUE, puoi digitare quanto segue:
$ vi / tmp / services
: g / tcp / s // QUALUNQUE / g <Enter>
787

Pagina 828

Appendice B: Risposte agli esercizi

4. Per cercare nella directory / etc ogni file chiamato passwd e reindirizzare gli errori da
la tua ricerca in / dev / null, puoi digitare quanto segue:
$ trova / etc -name passwd 2> / dev / null

5. Crea una directory nella tua home directory chiamata TEST. Crea file in quella directory
tory denominato uno, due e tre che hanno autorizzazioni di lettura / scrittura / esecuzione complete su
per tutti (utente, gruppo e altro). Costruisci un comando find che trovi
quei file e tutti gli altri file che hanno il permesso di scrittura possono essere aperti ad "altri" da
la tua home directory e sotto.
$ mkdir $ HOME / TEST
$ touch $ HOME / TEST / {uno, due, tre}
$ chmod 777 $ HOME / TEST / {uno, due, tre}
$ trova $ HOME -perm -002 -type f -ls
148120 0 -rwxrwxrwx 1 chris chris 0 1 gennaio 08:56 / home / chris / TEST / due
148918 0 -rwxrwxrwx 1 chris chris 0 1 gen 08:56 home / chris / TEST / tre
147306 0 -rwxrwxrwx 1 chris chris 0 1 gennaio 08:56 / home / chris / TEST / one

6. Trova i file nella directory / usr / share / doc che non sono stati modificati in
più di 300 giorni.
$ trova / usr / share / doc -mtime +300

7. Creare una directory / tmp / FILES. Trova tutti i file nella directory / usr / share che
sono più di 5 MB e meno di 10 MB e copiali nella directory / tmp / FILES.
$ mkdir / tmp / FILES
$ find / usr / share -size + 5M -size -10M -exec cp {} / tmp / FILES \;
$ du -sh / tmp / FILES / *
7.0M /tmp/FILES/cangjie5.db
5.4M /tmp/FILES/cangjie-big.db
8.3M /tmp/FILES/icon-theme.cache

8. Trova tutti i file nella directory / tmp / FILES e fai una copia di backup di ogni file
nella stessa directory. Usa il nome esistente di ogni file e aggiungi semplicemente .mybackup a
creare ogni file di backup.
$ find / tmp / FILES / -type f -exec cp {} {} .mybackup \;

9. Installa il pacchetto kernel-doc in Fedora o Red Hat Enterprise Linux. Utilizzando


grep, cerca all'interno dei file contenuti in / usr / share / doc / kernel-doc *
directory per il termine e1000 (senza distinzione tra maiuscole e minuscole) ed elenca i nomi dei file che
contenere quel termine.

NOTA: Il pacchetto kernel-doc è stato abbandonato per Fedora 21. Per completare questo esercizio
per Fedora 21, installa kernel-core e usa / usr / share / kcbench-data /
linux - * / directory della documentazione invece di / usr / share / doc / kernel-doc *.
# yum installa kernel-doc
$ cd / usr / share / doc / kernel-doc *
$ grep -rli e1000.
./Documentation/powerpc/booting-without-of.txt
./Documentation/networking/e100.txt
...

788

Pagina 829

Appendice B: Risposte agli esercizi

10. Cerca di nuovo il termine e1000 nella stessa posizione, ma questa volta elenca ogni riga
che contiene il termine ed evidenzia il termine a colori.
$ cd / usr / share / doc / kernel-doc- *
$ grep -ri - colore e1000.
Capitolo 6: Gestione dei processi in esecuzione
1. Per elencare tutti i processi in esecuzione sul sistema con un set completo di colonne, durante il piping
l'output su less, digita quanto segue:
$ ps -ef | Di meno

2. Per elencare tutti i processi in esecuzione sul sistema e ordinare quei processi in base al nome di
l'utente che esegue ogni processo, digita quanto segue:
$ ps -ef --sort = utente | Di meno

3. Per elencare tutti i processi in esecuzione sul sistema con i nomi di colonna ID processo, utente
nome, nome del gruppo, valore accettabile, dimensione della memoria virtuale, dimensione della memoria residente e comp
mand, digita quanto segue:
$ ps -eo 'pid, utente, gruppo, nice, vsz, rss, comm' | Di meno
PID USER GROUP NI VSZ RSS COMMAND
1 radice radice 0 19324 1236 init
2 root root 0 0 0 kthreadd
3 root root - 0 0 migrazione / 0
4 root root 0 0 0 ksoftirqd / 0

4. Per eseguire il comando in alto e poi andare avanti e indietro tra l'ordinamento in base all'utilizzo della CPU
e consumo di memoria, digitare quanto segue:
$ top
P
M
P
M

5. Per avviare il processo gedit dal desktop e utilizzare la finestra Monitor di sistema
per terminare quel processo, digita quanto segue:
$ gedit &

Successivamente, in GNOME 2 selezionare Applicazioni ➪ Strumenti di sistema ➪ Monitor di sistema o in GNOME


3 digitare Monitor di sistema dalla schermata Attività e premere Invio. Trova il file gedit
processo nella scheda Processi (puoi ordinare alfabeticamente per renderlo più semplice
facendo clic sull'intestazione Nome processo). Fai clic con il pulsante destro del mouse sul comando gedit, quindiB
selezionare Termina processo o Termina processo; la finestra di gedit sullo schermo dovrebbe
scomparire.

789

Pagina 830

Appendice B: Risposte agli esercizi

6. Per eseguire il processo gedit e utilizzare il comando kill per inviare un segnale di pausa
(interrompi) quel processo, digita quanto segue:
$ gedit &
[1] 21532
$ kill -SIGSTOP 21578

7. Per usare il comando killall per dire al comando gedit (messo in pausa nel precedente
esercizio) per continuare a lavorare, procedi come segue:
$ killall -SIGCONT gedit

Assicurati che il testo che hai digitato dopo che gedit è stato messo in pausa ora appaia nella finestra.

8. Per installare il comando xeyes, eseguirlo circa 20 volte in background ed eseguire


killall per uccidere tutti i 20 processi xeyes contemporaneamente, digita quanto segue:
# yum installa xorg-x11-app
$ xeyes &
$ xeyes &
...
$ killall xeyes

Ricorda, devi essere l'utente root per installare il pacchetto. Dopodiché, ricorda-
ber per ripetere il comando xeyes 20 volte. Allarga le finestre sul tuo
schermo e muovi il mouse per divertirti a guardare gli occhi muoversi. Tutti gli xeyes vincono
dows dovrebbe scomparire immediatamente quando digiti killall xeyes.

9. Come utente normale, esegui il comando gedit in modo che inizi con un bel valore di 5.
$ nice -n 5 gedit &
[1] 21578

10. Per utilizzare il comando renice per modificare il valore piacevole del comando gedit tu
appena iniziato a 7, digita quanto segue:
$ renice -n 7 21578
21578: vecchia priorità 0, nuova priorità 7
Usa qualsiasi comando ti piaccia per verificare che il valore corrente corretto per il comando gedit
mand è ora impostato su 7. Ad esempio, puoi digitare questo:
$ ps -eo 'pid, user, nice, comm' | grep gedit
21578 chris 7 gedit

Capitolo 7: Scrittura di semplici script di shell


1. Ecco un esempio di come creare uno script nella directory $ HOME / bin chiamata
myownscript. Quando lo script viene eseguito, dovrebbe produrre informazioni che hanno l'aspetto
segue:
Oggi è sabato 10 dicembre 15:45:04 EDT 2016.
Sei in / home / joe e il tuo host è abc.example.com.

790

Pagina 831

Appendice B: Risposte agli esercizi

I seguenti passaggi mostrano un modo per creare lo script denominato myownscript:

un. Se non esiste già, crea una directory bin:


$ mkdir $ HOME / bin

b. Utilizzando qualsiasi editor di testo, crea uno script chiamato $ HOME / bin / myownscript that
contiene quanto segue:
#! / bin / bash
# mioownscript
# Elenca alcune informazioni sul tuo sistema attuale
echo "Oggi è $ (data)."
echo "Sei in $ (pwd) e il tuo host è $ (hostname)."

c. Rendi eseguibile lo script:


$ chmod 755 $ HOME / bin / mioownscript

2. Per creare uno script che legge tre parametri posizionali dalla riga di comando,
assegna questi parametri alle variabili denominate rispettivamente ONE, TWO e THREE,
e quindi restituisce tali informazioni nel formato specificato, eseguire le seguenti operazioni:

un. Sostituisci X con il numero di parametri e Y con tutti i parametri inseriti.


Quindi sostituire A con il contenuto della variabile UNO, B con la variabile DUE e C
con variabile TRE.
Ecco un esempio di cosa potrebbe contenere quello script:
#! / bin / bash
# la mia posizione
UNO = $ 1
DUE = $ 2
TRE = $ 3
echo "Ci sono $ # parametri che includono: $ @"
echo "Il primo è $ UNO, il secondo è $ DUE, il terzo è
$ TRE ".

b. Per creare uno script chiamato $ HOME / bin / myposition e far eseguire lo script-
in grado, digita questo:
$ chmod 755 $ HOME / bin / myposition

c. Per testarlo, eseguilo con alcuni argomenti della riga di comando, come nel seguente:
$ myposition Dov'è il mio Hat Buddy?
Ci sono 5 parametri che includono: Where Is My Hat Buddy?
Il primo è Dove, il secondo è È, il terzo è Mio.

3. Per creare lo script descritto, procedi come segue:

un. Per creare un file chiamato $ HOME / bin / myhome e renderlo eseguibile, digita questo: B
$ touch $ HOME / bin / myhome
$ chmod 755 $ HOME / bin / myhome

791
Pagina 832

Appendice B: Risposte agli esercizi

b. Ecco come potrebbe apparire lo script myhome:


#! / bin / bash
# casa mia
leggi -p "In che strada sei cresciuto?" mystreet
leggi -p "In che città sei cresciuto?" mytown
echo "La strada in cui sono cresciuto era $ mystreet e la città lo era
$ mytown. "

c. Esegui lo script per verificare che funzioni. L'esempio seguente mostra quale input
e l'output per lo script potrebbe essere simile a:
$ myhome
In quale via sei cresciuto? Harrison
In che città sei cresciuto? Princeton
La strada in cui sono cresciuto era Harrison e la città era Princeton.

4. Per creare lo script richiesto, effettuare le seguenti operazioni:

un. Utilizzando un qualsiasi editor di testo, crea uno script chiamato $ HOME / bin / myos e crea il file
eseguibile script:
$ touch $ HOME / bin / myos
$ chmod 755 $ HOME / bin / myos

b. Lo script potrebbe contenere quanto segue:


#! / bin / bash
# myos
read -p "Qual è il tuo sistema operativo preferito, Mac, Windows o
Linux? "opsys
se [$ opsys = Mac]; poi
echo "Il Mac è carino, ma non abbastanza resistente per me."
elif [$ opsys = Windows]; poi
echo "Ho usato Windows una volta. A cosa serve quella schermata blu?"
elif [$ opsys = Linux]; poi
echo "Ottima scelta!"
altro
echo "$ opsys è un sistema operativo?"
fi

5. Per creare uno script denominato $ HOME / bin / animals che esegua le parole alce, mucca,
oca, e semina attraverso un ciclo for e aggiungi ciascuna di queste parole al file
Alla fine della riga, "Ho un ...", procedi come segue:

un. Rendi eseguibile lo script:


$ touch $ HOME / bin / animali
$ chmod 755 $ HOME / bin / animali

b. Lo script potrebbe contenere quanto segue:


#! / bin / bash
# animali

792

Pagina 833

Appendice B: Risposte agli esercizi

per ANIMALI in alce vacca oca scrofa; fare


echo "Ho $ ANIMALS"
fatto

c. Quando esegui lo script, l'output dovrebbe essere il seguente:


$ animali
Ho un alce
Ho una mucca
Ho un'oca
Ho una scrofa
Capitolo 8: Learning System Administration
1. È possibile aprire la finestra Data e ora da un desktop GNOME in RHEL o Fedora da
facendo una delle seguenti operazioni:
■ Se non è già installato, installa il pacchetto system-config-date (yum
install system-config-date).
■ Aprire una finestra di Terminale e digitare system-config-date . Se lo fai come file
utente normale, viene richiesta la password di root.
■ Da un desktop GNOME 2.X, selezionare Data e ora amministrazione di sistema.
■ Da un desktop GNOME 3, selezionare Attività e digitare System-Config-Date. quando
si apre la finestra Data e ora, selezionare la scheda Fuso orario per controllare l'ora
zona.
2. Per utilizzare System Monitor per ordinare tutti i processi in esecuzione sul sistema in base al nome utente,
digitare Monitor di sistema dalla schermata Attività e premere Invio. Fare clic sulle impostazioni
(icona con tre linee), fare clic su Tutti i processi e fare clic sulla colonna Utente. Questo
ordina i processi in base al nome utente. Scorri verso il basso per vedere i processi.
3. Per trovare tutti i file nella directory / var / spool di proprietà di altri utenti
di root e fai un lungo elenco, digita quanto segue (ti consiglio di diventare
root per trovare file che potrebbero essere chiusi ad altri utenti):
$ su -
Password: *********
# trova / var / spool -not -user root -ls | Di meno

4. Per diventare utente root e creare un file di testo vuoto o semplice denominato /mnt/test.txt,
digitare quanto segue:
$ su -
Password: ********* B
# tocca /mnt/test.txt
# ls -l /mnt/test.txt
-rw-r - r--. 1 root root 0 Jan 9 21:51 /mnt/test.txt

793

Pagina 834

Appendice B: Risposte agli esercizi

5. Per diventare root e modificare il file / etc / sudoers per consentire il proprio account utente regolare
(ad esempio, bill) per avere il pieno privilegio di root tramite il comando sudo, eseguire il
a seguire:
$ su -
Password: *********
# visudo
o
bill ALL = (ALL) ALL
Esc ZZ

Poiché visudo apre il file / etc / sudoers in vi, l'esempio digita o per aprire un file
riga, quindi digita la riga per consentire a bill di avere il pieno privilegio di root. Dopo il
viene digitata una riga, premere ESC per tornare alla modalità di comando e digitare ZZ per scrivere e uscire.

6. Usare il comando sudo per creare un file chiamato /mnt/test2.txt e verificarlo


il file è lì e di proprietà dell'utente root, digita quanto segue:
[bill] $ sudo touch /mnt/test2.txt
Confidiamo che abbiate ricevuto la solita conferenza dal sistema locale
Amministratore. Di solito si riduce a queste tre cose:
# 1) Rispetta la privacy degli altri.
# 2) Pensa prima di digitare.
# 3) Da un grande potere derivano grandi responsabilità.
[sudo] password per fattura:
*********
[fattura] $ ls -l /mnt/text2.txt
-rw-r - r--. 1 root root 0 Jan 9 23:37 /mnt/text2.txt

7. Eseguire le seguenti operazioni per montare e smontare un'unità USB e guardare il diario di sistema
durante questo processo:

un. Esegui il comando journalctl -f come root in una finestra di Terminale e guarda il file
output da qui per i prossimi passaggi.
# journalctl -f
25 gennaio 16:07:59 kernel host2: usb 1-1.1: nuovo dispositivo USB ad alta velocità
numero 16 utilizzando ehci-pci
25 gennaio 16:07:59 kernel host2: usb 1-1.1: nuovo dispositivo USB trovato,
idVendor = 0ea0, idProduct = 2168
25 gennaio 16:07:59 kernel host2: usb 1-1.1: Nuove stringhe del dispositivo USB:
Mfr = 1, Prodotto = 2, SerialNumber = 3
25 gennaio 16:07:59 kernel host2: usb 1-1.1: Prodotto: Flash Disk
25 gennaio 16:07:59 kernel host2: usb 1-1.1: produttore: USB
...
25 gennaio 16:08:01 kernel host2: sd 18: 0: 0: 0: [sdb] Protezione da scrittura disattivata
25 gennaio 16:08:01 kernel host2: sd 18: 0: 0: 0: [sdb]
Supponendo che la cache dell'unità: scrivi
25 gennaio 16:08:01 kernel host2: sdb: sdb1
25 gennaio 16:08:01 kernel host2: sd 18: 0: 0: 0: [sdb]
Disco rimovibile SCSI collegato

794

Pagina 835

Appendice B: Risposte agli esercizi

b. Collega un'unità di archiviazione USB, che dovrebbe montare un filesystem da quell'unità


automaticamente. In caso contrario, eseguire i seguenti comandi in un secondo terminale
(come root) per creare una directory del punto di montaggio e montare il dispositivo:
# mkdir / mnt / test
# montare / dev / sdb1 / mnt / test

c. Smonta il dispositivo e scollega l'unità USB:


# umount / dev / sdb1

8. Per vedere quali dispositivi USB sono collegati al computer, digitare quanto segue:
$ lsusb

9. Per caricare il modulo bttv, elencare i moduli che sono stati caricati e scaricarlo, digitare
il seguente:
# modprobe -a bttv
# lsmod | grep bttv
bttv 124516 0
v4l2_common 10572 1 bttv
videobuf_dma_sg 9814 1 bttv
videobuf_core 20076 2 bttv, videobuf_dma_sg
btcx_risc 4416 1 bttv
rc_core 19686 7 ir_lirc_codec, ir_sony_decoder,
ir_jvc_decoder, ir_rc6_decoder
tveeprom 14042 1 bttv
videodev 76244 3 bttv, v4l2_common, uvcvideo
i2c_algo_bit 5728 2 bttv, i915
i2c_core 31274 9 bttv, v4l2_common, tveeprom, videodev,
i2c_i801, i915, drm_kms_helper

Notare che sono stati caricati altri moduli (v4l2_common, videodev e altri)
quando hai caricato bttv con modprobe -a.
10. Digitare quanto segue per rimuovere il modulo bttv insieme a qualsiasi altro modulo
ne sono stati caricati. Notare che erano spariti tutti dopo aver eseguito modprobe -r.
# modprobe -r bttv
# lsmod | grep bttv

Capitolo 9: Installazione di Linux


1. Per installare un sistema Fedora da Fedora live media, segui le istruzioni in
Sezione "Installazione di Fedora da Live Media". In generale, questi passaggi includono:
un. Avvio del supporto Live. B
b. Selezione di installare sul disco rigido all'avvio del sistema.

c. Aggiunta di informazioni dalla pagina di riepilogo sulla lingua, archiviazione,


nome host, fuso orario, password di root e altri elementi necessari inizialmente
configura il tuo sistema.

795

Pagina 836
Appendice B: Risposte agli esercizi

d. Riavviare il computer, rimuovere il supporto Live, quindi il file appena installato


il sistema si avvia dal disco rigido.

2. Per aggiornare i pacchetti, dopo che l'installazione del supporto Fedora Live è stata completata, eseguire il
a seguire:

un. Riavvia il computer e compila le prime domande di avvio come richiesto.

b. Utilizzando una connessione cablata o wireless, assicurati di avere una connessione a


Internet. Fare riferimento al Capitolo 14, "Amministrazione della rete", in caso di problemi
ottenere il corretto funzionamento della connessione di rete. Apri una shell come root
user e digita yum update .
c. Quando richiesto, digita y per accettare l'elenco di pacchetti visualizzato. Il sistema
inizia a scaricare e installare i pacchetti.
3. Per eseguire l'installazione di RHEL in modalità testo, procedi come segue:

un. Avvia il DVD RHEL.

b. Quando vedi il menu di avvio, evidenzia una delle voci di avvio dell'installazione e
premere Tab. Spostare il cursore a destra alla fine della riga del kernel e digitare il
testo dell'opzione erale alla fine di quella riga. Premi Invio per avviare il programma di installazione.

c. Prova il resto dell'installazione in modalità testo.

4. Per impostare il partizionamento del disco come descritto nella Domanda 4 per un Red Hat Enterprise
Installazione da DVD di Linux, procedi come segue:

Questa procedura alla fine elimina tutto il contenuto sul disco rigido. Se vuoi usare questo esercizio solo per esercitarti
partizionamento, è possibile riavviare il computer prima di fare clic su Avanti alla fine di questa procedura senza danneggiare
il tuo disco rigido. Dopo aver eseguito la partizione del disco, presumere che tutti i dati siano stati eliminati.

un. Su un computer puoi cancellare con almeno 10 GB di spazio su disco, inserisci un RHEL
DVD di installazione, riavviare e iniziare a scorrere le schermate di installazione.
b. Quando si arriva alla schermata Riepilogo installazione, selezionare Installazione
Destinazione.
c. Dalla schermata Destinazione installazione, selezionare il dispositivo da utilizzare per l'installazione
lation (probabilmente sda ​se hai un singolo hard disk che puoi completamente
cancella o vda per un'installazione virtuale).

d. Seleziona il pulsante "Configurerò il partizionamento".

e. Selezionare Fine per accedere alla schermata Partizionamento manuale.

f. Se lo spazio su disco esistente è già consumato, è necessario eliminare le parti-


prima di procedere.

g. Fare clic sul pulsante più (+) nella parte inferiore dello schermo. Quindi aggiungi ciascuno dei seguenti
abbassare i punti di montaggio:

796

Pagina 837

Appendice B: Risposte agli esercizi

/ avvio - 400M
/ - 3G
/ var - 2G

/ home -2G
h. Seleziona Fatto. Dovresti vedere un riepilogo delle modifiche.

io. Se le modifiche sembrano accettabili, seleziona Accetta modifiche. Se sei solo pratico
e non si desidera effettivamente modificare le partizioni, selezionare Annulla e torna a
Partizionamento personalizzato. Quindi esci semplicemente dal programma di installazione.

Capitolo 10: Acquisizione e gestione del software


1. Per cercare
digitare nel repository
quanto segue: YUM il pacchetto che fornisce il comando mogrify,
# yum fornisce mogrify

2. Per visualizzare le informazioni sul pacchetto che fornisce il comando mogrify e


determinare qual è la home page (URL) di quel pacchetto, digitare quanto segue:
# yum info ImageMagick

Vedrai che l'URL della home page di ImageMagick è http: // www


.imagemagick.org.

3. Per installare il pacchetto contenente il comando mogrify, digita quanto segue:


# yum installa ImageMagick

4. Per elencare tutti i file di documentazione contenuti nel pacchetto che fornisce il
comando mogrify, digita quanto segue:
# rpm -qd ImageMagick
...
/usr/share/doc/ImageMagick/README.txt
...
/usr/share/man/man1/identify.1.gz
/usr/share/man/man1/import.1.gz
/usr/share/man/man1/mogrify.1.gz

5. Per esaminare il registro delle modifiche del pacchetto che fornisce il comp di mogrify
mand, digita quanto segue:
# rpm -q --changelog ImageMagick | Di meno

6. Per eliminare il comando mogrify dal sistema e verificarne il pacchetto


B
il database RPM per vedere che il comando è effettivamente mancante, digitare quanto segue:
# digita mogrify
mogrify è / usr / bin / mogrify
# rm / usr / bin / mogrify

797

Pagina 838

Appendice B: Risposte agli esercizi

rm rimuovere il file normale "/ usr / bin / mogrify"? y


# rpm -V ImageMagick
manca / usr / bin / mogrify

7. Per reinstallare il pacchetto che fornisce il comando mogrify e assicurarsi che il file
l'intero pacchetto è di nuovo intatto, digitare quanto segue:
# yum reinstallare ImageMagick
# rpm -V ImageMagick

8. Per scaricare il pacchetto che fornisce il comando mogrify al tuo file


directory, digita quanto segue:
# yumdownloader ImageMagick
ImageMagick-6.8.8.10-5.fc21.x86_64.rpm

9. Per visualizzare informazioni generali sul pacchetto appena scaricato tramite query
il file RPM del pacchetto nella directory corrente, digita quanto segue:
# rpm -qip ImageMagick-6.8.8.10-5.fc21.x86_64.rpm
Nome : ImageMagick
Versione: 6.8.8.10
Versione: 5.fc21
Architettura: x86_64
...

10. Per rimuovere il pacchetto contenente il comando mogrify dal sistema, digitare
il seguente:
# yum rimuovi ImageMagick

Capitolo 11: Gestione degli account utente


Per domande che riguardano l'aggiunta e la rimozione di account utente, puoi utilizzare la finestra Utenti
dow, la finestra User Manager o strumenti della riga di comando come useradd e usermod. Il
il punto è assicurarsi di ottenere i risultati corretti mostrati nelle risposte che seguono, non
necessariamente farlo esattamente nello stesso modo in cui l'ho fatto io. Esistono diversi modi per ottenere il
stessi risultati. Le risposte qui mostrano come completare gli esercizi dalla riga di comando.
(Diventa utente root quando vedi un prompt #.)

1. Per aggiungere un account utente locale al sistema Linux che ha un nome utente jbaxter
e un nome completo di John Baxter, che utilizza / bin / sh come shell predefinita, e cioè
il successivo UID disponibile (il tuo potrebbe essere diverso da quello mostrato qui), digita il seguente
muggito. È possibile utilizzare il comando grep per controllare il nuovo account utente. Quindi imposta
la password per jbaxter a: My1N1te0ut!
# useradd -c "John Baxter" -s / bin / sh jbaxter
# grep jbaxter / etc / passwd
jbaxter: x: 1001: 1001: John Baxter: / home / jbaxter: / bin / sh
# passwd jbaxter

798

Pagina 839

Appendice B: Risposte agli esercizi

Modifica della password per l'utente jbaxter


Nuova password: My1N1te0ut!
Digita nuovamente la nuova password: My1N1te0ut!
passwd: tutti i token di autenticazione sono stati aggiornati correttamente

2. Per creare un account di gruppo denominato testing che utilizza l'ID gruppo 315, digitare
a seguire:
# groupadd -g 315 test
# grep test / etc / group
test: x: 315:

3. Per aggiungere jbaxter al gruppo di test e al gruppo di contenitori, digitare quanto segue:
# usermod -aG testing, bin jbaxter
# grep jbaxter / etc / group
bin: x: 1: bin, daemon, jbaxter
jbaxter: x: 1001:
test: x: 315: jbaxter

4. Per diventare jbaxter e impostare temporaneamente il gruppo di test come predefinito di jbaxter
group, esegui touch /home/jbaxter/file.txt, così il gruppo di test viene assegnato
come gruppo del file e procedi come segue:
$ su - jbaxter
Password: My1N1te0ut!
sh-4.2 $ test newgrp
sh-4.2 $ touch /home/jbaxter/file.txt
sh-4.2 $ ls -l /home/baxter/file.txt
-rw-rw-r--. 1 test jbaxter 0 gennaio 25 06:42 /home/jbaxter/file.txt
sh-4.2 $ exit; Uscita

5. Annotare quale ID utente è stato assegnato a jbaxter, quindi eliminare l'account utente
senza eliminare la home directory assegnata a jbaxter.
$ userdel jbaxter

6. Utilizzare il seguente comando per trovare qualsiasi file nella directory / home (e qualsiasi sottodirectory
rubriche) che vengono assegnati all'ID utente che apparteneva recentemente all'utente denominato
jbaxter (quando l'ho fatto, l'UID / GID erano entrambi 1001; il tuo potrebbe differire). Notare che
il nome utente jbaxter non è più assegnato sul sistema, quindi qualsiasi file quell'utente
creati sono elencati come appartenenti a UID 1001 e GID 1001, ad eccezione di un paio di file
che sono stati assegnati al gruppo di test, a causa del comando newgrp eseguito in precedenza:
# find / home -uid 1001 -ls
262184 4 drwx ------ 4 1001 1001 4096 25 gennaio 08:00 / home / jbaxter
262193 4 -rw-r - r-- 1 1001 1001176 27 gennaio 2011 / home / jbaxter /
.bash_profile
262196 4 -rw ------- 1 13602 testing 93 Jan 25 08:00 / home / jbaxter / B
.bash_history
262194 0 -rw-rw-r-- 1 13602 testing 0 Jan 25 07:59 / home / jbaxter /
file.txt
...

799

Pagina 840
Appendice B: Risposte agli esercizi

7. Eseguire questi comandi per copiare il file / etc / services in / etc / skel / direc-
tory; quindi aggiungi un nuovo utente al sistema chiamato mjones, con un nome completo di Mary
Jones e una home directory di / home / maryjones. Elenca la sua home directory da creare
sicuro che il file dei servizi sia lì.
# cp / etc / services / etc / skel /
# useradd -d / home / maryjones -c "Mary Jones" mjones
# ls -l / home / maryjones
totale 628
-rw-r - r--. 1 mjones mjones 640999 25 gennaio 06:27 servizi

8. Eseguire il comando seguente per trovare tutti i file nella directory / home a cui appartengono
mjones. Se hai eseguito gli esercizi in ordine, nota che dopo aver eliminato l'utente con
l'ID utente e l'ID gruppo più alti, quei numeri sono stati assegnati a mjones. Di conseguenza,
tutti i file lasciati nel sistema da jbaxter ora appartengono a mjones. (Per questo motivo, tu
dovrebbe rimuovere o modificare la proprietà dei file lasciati quando elimini un utente.)
# find / home -user mjones -ls
262184 4 drwx ------ 4 mjones mjones 4096 25 gennaio 08:00 / home / jbaxter
262193 4 -rw-r - r-- 1 mjones mjones 176 27 gennaio 2011 / home / jbaxter /
.bash_profile
262189 4 -rw-r - r-- 1 mjones mjones 18 27 gennaio 2011 / home / jbaxter /
.bash_logout
262194 0 -rw-rw-r-- 1 test di mjones 0 Jan 25 07:59 / home / jbaxter /
file.txt
262188 4 -rw-r - r-- 1 mjones mjones 124 27 gennaio 2011 / home / jbaxter /
.bashrc
262197 4 drwx ------ 4 mjones mjones 4096 25 gennaio 08:27 / home /
maryjones
262207 4 -rw-r - r-- 1 mjones mjones 176 27 gennaio 2011 / home /
Maryjones /
.bash_profile
262202 4 -rw-r - r-- 1 mjones mjones 18 27 gennaio 2011 / home / maryjones /
.bash_logout
262206628 -rw-r - r-- 1 mjones mjones 640999 25 gennaio 08:27 / home /
maryjones / servizi
262201 4 -rw-r - r-- 1 mjones mjones 124 27 gennaio 2011 / home /
maryjones / .bashrc

9. Come utente mjones, è possibile utilizzare quanto segue per creare un file chiamato / tmp / maryfile
.txt e utilizza gli ACL per assegnare l'autorizzazione di lettura / scrittura dell'utente bin e il gruppo lp di lettura /
il permesso di scrittura per quel file.
[mjones] $ touch /tmp/maryfile.txt
[mjones] $ setfacl -mu: bin: rw /tmp/maryfile.txt
[mjones] $ setfacl -mg: lp: rw /tmp/maryfile.txt
[mjones] $ getfacl /tmp/maryfile.txt
# file: tmp / maryfile.txt
# proprietario: mjones

800

Pagina 841

Appendice B: Risposte agli esercizi

# gruppo: mjones
utente :: rw-
utente: bin: rw-
gruppo :: rw-
gruppo: lp: rw-
maschera :: rw-
altro :: r -

10. Eseguire questa serie di comandi (come mjones) per creare una directory denominata / tmp / mydir
e usa gli ACL per assegnargli le autorizzazioni predefinite in modo che l'utente adm abbia letto /
autorizzazione di scrittura / esecuzione per quella directory e tutti i file o directory creati in essa.
Verifica che abbia funzionato creando la directory / tmp / mydir / testing / e / tmp /
mydir / newfile.txt.
[mary] $ mkdir / tmp / mydir
[mary] $ setfacl -md: u: adm: rwx / tmp / mydir
[mjones] $ getfacl / tmp / mydir
# file: tmp / mydir
# proprietario: mjones
# gruppo: mjones
utente :: rwx
gruppo :: rwx
altro :: rx
predefinito: utente :: rwx
predefinito: utente: adm: rwx
predefinito: gruppo :: rwx
predefinito: mask :: rwx
predefinito: altro :: rx
[mjones] $ mkdir / tmp / mydir / testing
[mjones] $ touch /tmp/mydir/newfile.txt
[mjones] $ getfacl / tmp / mydir / testing /
# file: tmp / mydir / testing /
# proprietario: mjones
# gruppo: mjones
utente :: rwx
utente: adm: rwx
gruppo :: rwx
maschera :: rwx
altro :: rx
predefinito: utente :: rwx
predefinito: utente: adm: rwx
predefinito: gruppo :: rwx
predefinito: mask :: rwx
predefinito: altro :: rx
[mjones] $ getfacl /tmp/mydir/newfile.txt
# file: tmp / mydir / newfile.txt
B
# proprietario: mjones
# gruppo: mjones
utente :: rw-

801

Pagina 842

Appendice B: Risposte agli esercizi

utente: adm: rwx #effective: rw-


gruppo :: rwx #effective: rw-
maschera :: rw-
altro :: r--

Notare che l'utente adm ha effettivamente solo il permesso rw. Per rimediare, tu
è necessario espandere i permessi della maschera. Un modo per farlo è con chmod
comando, come segue:
[mjones] $ chmod 775 /tmp/mydir/newfile.txt
[mjones] $ getfacl /tmp/mydir/newfile.txt
# file: tmp / mydir / newfile.txt
# proprietario: mjones
# gruppo: mjones
utente :: rwx
utente: adm: rwx
gruppo :: rwx
maschera :: rwx
altro :: rx

Capitolo 12: Gestione di dischi e file system


1. Per determinare il nome del dispositivo di un'unità flash USB che si desidera inserire
sul computer, digitare quanto segue e inserire l'unità flash USB (premere Ctrl + C dopo
hai visto i messaggi appropriati).
# tail -f / var / log / messages
kernel: [sdb] 15667200 blocchi logici da 512 byte:
(8,02 GB / 7,47 GiB)
11 febbraio 21:55:59 kernel cnegus: sd 7: 0: 0: 0:
[sdb] La protezione da scrittura è disattivata
11 febbraio 21:55:59 kernel cnegus: [sdb] Supponendo
cache del disco: scrivi
11 febbraio 21:55:59 kernel cnegus: [sdb] Supponendo
cache del disco: scrivi

2. Per elencare le partizioni sull'unità flash USB su un sistema RHEL 6, digitare quanto segue:
# fdisk -c -u -l / dev / sdb
Per elencare le partizioni su un sistema RHEL 7 o Fedora, digitare quanto segue:
# fdisk -l / dev / sdb

3. Per eliminare le partizioni sull'unità flash USB, supponendo che device / dev / sdb, eseguire il
a seguire:
# fdisk / dev / sdb
Comando (m per aiuto): d
Numero di partizione (1-6): 6
Comando (m per aiuto): d

802

Pagina 843

Appendice B: Risposte agli esercizi

Numero di partizione (1-5): 5


Comando (m per aiuto): d
Numero di partizione (1-5): 4
Comando (m per aiuto): d
Numero di partizione (1-4): 3
Comando (m per aiuto): d
Numero di partizione (1-4): 2
Comando (m per aiuto): d
Partizione selezionata 1
Comando (m per aiuto): w
# partprobe / dev / sdb

4. Per aggiungere una partizione Linux da 100 MB, una partizione di scambio da 200 MB e una partizione LVM da 500 MB a
nell'unità flash USB, digitare quanto segue:
# fdisk / dev / sdb

Comando (m per aiuto): n


Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 1
Primo settore (2048-15667199, predefinito 2048): <ENTER>
Ultimo settore, + settori o + dimensione {K, M, G} (predefinito 15667199): + 100M
Comando (m per aiuto): n
Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 2
Primo settore (616448-8342527, predefinito 616448): <ENTER>
Ultimo settore, + settori o + dimensione {K, M, G} (predefinito 15667199): + 200M
Comando (m per aiuto): n
Azione di comando
e esteso
p partizione primaria (1-4)
p
Numero di partizione (1-4): 3
Primo settore (616448-15667199, predefinito 616448): <ENTER>
Utilizzo del valore predefinito 616448
Ultimo settore, + settori o + dimensione {K, M, G} (predefinito 15667199): + 500M
Comando (m per aiuto): t
Numero di partizione (1-4): 2
Codice esadecimale (digitare L per elencare i codici): 82
Cambiato il tipo di sistema della partizione da 2 a 82 (Linux swap / Solaris) B
Comando (m per aiuto): t
Numero di partizione (1-4): 3
Codice esadecimale (digitare L per elencare i codici): 8e

803

Pagina 844

Appendice B: Risposte agli esercizi


Tipo di sistema modificato della partizione da 3 a 8e (Linux LVM)
Comando (m per aiuto): w
# partprobe / dev / sdb
# grep sdb / proc / partitions
8 16 7833600 sdb
8 17 102400 sdb1
8 18 204800 sdb2
8 19 512000 sdb3

5. Per inserire un filesystem ext3 sulla partizione Linux, digita quanto segue:
# mkfs -t ext3 / dev / sdb1

6. Per creare un punto di montaggio chiamato / mnt / mypart e montare la partizione Linux su di esso
temporaneamente, procedi come segue:
# mkdir / mnt / mypart
# mount -t ext3 / dev / sdb1 / mnt / mypart

7. Abilitare la partizione di swap e accenderla in modo che lo spazio di swap aggiuntivo sia immediatamente
disponibile, digitare quanto segue:
# mkswap / dev / sdb2
# swapon / dev / sdb2

8. Per creare un gruppo di volumi chiamato abc dalla partizione LVM, creare un logi-
cal volume da quel gruppo chiamato dati, crea temporaneamente un filesystem VFAT su di esso
montare il volume logico su una nuova directory denominata / mnt / test, quindi controllare
che è stato montato correttamente, digita quanto segue:
# pvcreate / dev / sdb3
# vgcreate abc / dev / sdb3
# lvcreate -n data -L 200M abc
# mkfs -t vfat / dev / mapper / abc-data
# mkdir / mnt / test
# mount / dev / mapper / abc-data / mnt / test

9. Per aumentare il volume logico da 200 MB a 300 MB, digitare quanto segue:
# lvextend -L + 100M / dev / mapper / abc-data
# resize2fs -p / dev / mapper / abc-data

10. Per rimuovere in modo sicuro l'unità flash USB dal computer, procedere come segue:
# umount / dev / sdb1
# swapoff / dev / sdb2
# umount / mnt / test
# lvremove / dev / mapper / abc-data
# vgremove abc
# pvremove / dev / sdb3

È ora possibile rimuovere in modo sicuro l'unità flash USB dal computer.

804

Pagina 845

Appendice B: Risposte agli esercizi

Capitolo 13: Comprensione dell'amministrazione del server


1. Per accedere a qualsiasi account su un altro computer utilizzando il comando ssh, digita
di seguito, quindi inserisci la password quando richiesto:
$ ssh joe @ localhost
password di joe @ localhost:
*********
[joe] $

2. Per visualizzare il contenuto di un file remoto / etc / system-release e avere il suo


tende visualizzate sul sistema locale utilizzando l'esecuzione remota con il comando ssh,
eseguire le seguenti operazioni:
$ ssh joe @ localhost "cat / etc / system-release"
password di joe @ localhost: *********
Fedora versione 21 (Twenty One)

3. Usare l'inoltro X11 per visualizzare una finestra gedit sul tuo sistema locale e poi
salvare un file nella directory home remota, eseguire le seguenti operazioni:
$ ssh -X joe @ localhost "gedit newfile"
password di joe @ localhost: ********
$ ssh joe @ localhost "cat newfile"
password di joe @ localhost: ********
Questo è il testo dal file che ho salvato nella directory home remota di Joe

4. Per copiare ricorsivamente tutti i file dalla directory / usr / share / selinux su un file
sistema
gli orari remoto nellasui
di modifica directory / tmp sul
file vengono sistema all'ora
aggiornati locale sul
in modo talelocale
sistema che tutti i file
quando vengono copiati, eseguire le seguenti operazioni:
$ scp -r joe @ localhost: / usr / share / selinux / tmp
password di joe @ localhost: ********
irc.pp.bz2 100% 9673 9,5 KB / s 00:00
dcc.pp.bz2 100% 15 KB 15,2 KB / s 00:01
$ ls -l / tmp / selinux | testa
totale 20
drwxr-xr-x. 3 radice radice 4096 18 aprile 05:52 devel
drwxr-xr-x. 2 root root 4096 18 aprile 05:52 pacchetti
drwxr-xr-x. 2 root root 12288 Apr 18 05:52 mirato

5. Per copiare in modo ricorsivo tutti i file dalla directory / usr / share / logwatch su un file
sistema remoto nella directory / tmp sul sistema locale in modo tale che tutti i file
i tempi di modifica sui file dal sistema remoto vengono mantenuti sul file
sistema locale, prova questo:
$ rsync -av joe @ localhost: / usr / share / logwatch / tmp B
password di joe @ localhost: ********
ricezione dell'elenco di file incrementali

805

Pagina 846

Appendice B: Risposte agli esercizi

logwatch /
logwatch / default.conf /
logwatch / default.conf / logwatch.conf
$ ls -l / tmp / logwatch | testa
totale 16
drwxr-xr-x. 5 root root 4096 19 aprile 2011 default.conf
drwxr-xr-x. 4 root root 4096 28 febbraio 2011 dist.conf
drwxr-xr-x. 2 root root 4096 19 aprile 2011 lib

6. Per creare una coppia di chiavi pubblica / privata da utilizzare per le comunicazioni SSH (nessuna passphrase
sulla chiave), copia il file della chiave pubblica nell'account di un utente remoto con ssh-copy-id,
e utilizzare l'autenticazione basata su chiave per accedere a quell'account utente senza doverlo fare
inserisci una password, utilizza il codice seguente:
$ ssh-keygen
Generazione della coppia di chiavi RSA pubblica / privata.
Immettere il file in cui salvare la chiave (/home/joe/.ssh/id_rsa): INVIO
/home/joe/.ssh/id_rsa esiste già.
Immettere la passphrase (vuota per nessuna passphrase): INVIO
Immettere di nuovo la stessa passphrase: INVIO
La tua identificazione è stata salvata in /home/joe/.ssh/id_rsa.
La tua chiave pubblica è stata salvata in /home/joe/.ssh/id_rsa.pub.
L'impronta digitale chiave è:
58: ab: c1: 95: b6: 10: 7a: aa: 7c: c5: ab: bd: f3: 4f: 89: 1e joe@cnegus.csb
L'immagine randomart della chiave è:
$ ssh-copy-id -i ~ / .ssh / id_rsa.pub joe @ localhost
password di joe @ localhost: ********
Ora prova ad accedere alla macchina, con "ssh 'joe @ localhost'",
e il check-in:
.ssh / authorized_keys
per assicurarci di non aver aggiunto chiavi extra che non ti aspettavi.
$ ssh joe @ localhost
$ cat .ssh / authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyN2Psp5 / LRUC9E8BDCx53yPUa0qoOPd
v6H4sF3vmn04V6E7D1iXpzwPzdo4rpvmR1ZiinHR2xGAEr2uZag7feKgLnww2KPcQ6S
iR7lzrOhQjV + SGb / a1dxrIeZqKMq1Tk07G4EvboIrq // 9J47vI4l7iNu0xRmjI3TTxa
DdCTbpG6J3uSJm1BKzdUtwb413x35W2bRgMI75aIdeBsDgQBBiOdu + zuTMrXJj2viCA
XeJ7gIwRvBaMQdOSvSdlkX353tmIjmJheWdgCccM / 1jKdoELpaevg9anCe / yUP3so31
tTo4I + qTfzAQD5 + 66oqW0LgMkWVvfZI7dUz3WUPmcMw == chris@abc.example.com

7. Per creare una voce in /etc/rsyslog.conf che memorizzi tutti i messaggi di autenticazione
a livello di informazioni e superiore in un file denominato / var / log / myauth, eseguire le operazioni seguenti.
Guarda da un terminale mentre i dati arrivano.
# vim /etc/rsyslog.conf
authpriv.info / var / log / myauth
# servizio rsyslog riavvio
o
# systemctl riavvia rsyslog.service
<Terminal 1> <Terminal 2>

806
Pagina 847

Appendice B: Risposte agli esercizi

# tail -f / var / log / miaauth $ ssh joe @ localhost


18 aprile 06:19:34 abc unix_chkpwd [30631] joe @ localhost's password:
18 aprile 06:19:34 abc sshd [30631] Autorizzazione negata, riprova
: pam_unix (sshd: auth):
errore di autenticazione; logname = uid = 501
euid = 501 tty = ssh ruser = rhost = localhost
utente = joe
18 aprile 06:19:34 abc sshd [30631]:
Password non riuscita per joe da
127.0.0.1 porta 5564 ssh2

8. Per determinare le strutture di directory più grandi in / usr / share, ordinarle da


dalla più grande alla più piccola ed elenca le prime 10 di queste directory in termini di dimensione utilizzando
il comando du, digitare quanto segue:
$ du -s / usr / share / * | sort -rn | testa

527800 / usr / share / locale


277108 / usr / share / fonts
265772 / usr / share / icons
253844 / usr / share / doc
...

9. Per mostrare lo spazio attualmente utilizzato e disponibile da tutti i filesystem


collegato al sistema locale, ma esclude qualsiasi file system tmpfs o devtmpfs da
utilizzando il comando df, digitare quanto segue:
$ df -h -x tmpfs -x devtmpfs
Dimensioni del file system utilizzate disponibili Usa% montato su
/ deev / sda4 20G 4.2G 16G 22% /

10. Per trovare qualsiasi file nella directory / usr di dimensioni superiori a 10 MB, eseguire il
a seguire:
$ find / usr -size + 10M
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/rt.jar
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.3/jre/lib/rt.jar
/usr/lib/llvm/libLLVM-2.9.so
/usr/lib/flash-plugin/libflashplayer.so

Capitolo 14: Amministrazione della rete


1. Per utilizzare il desktop per verificare che NetworkManager abbia avviato correttamente il tuo file
interfaccia di rete (cablata o wireless), effettuare le seguenti operazioni:

Fare clic con il pulsante sinistro del mouse sull'icona NetworkManager nel pannello superiore. Qualsiasi attivo cablato o wireless
B
le connessioni di rete dovrebbero essere evidenziate in grassetto.

807

Pagina 848

Appendice B: Risposte agli esercizi

Se non è connesso alla rete, selezionare dall'elenco di reti cablate o wireless


funziona disponibile, quindi inserisci il nome utente e la password, se richiesto, per iniziare
una connessione attiva.
2. Per eseguire un comando per controllare le interfacce di rete attive disponibili sul tuo computer
puter, digitare:
$ ifconfig

o
$ ip addr mostra

3. Prova a contattare google.com dalla riga di comando in modo da garantire tale DNS
funziona correttamente:
$ ping google.com
Ctrl-C

4. Eseguire un comando per verificare le rotte utilizzate per comunicare all'esterno del proprio
rete locale, digitare:
$ route

5. Per tracciare il percorso intrapreso per connettersi a google.com, utilizzare traceroute


comando:
$ traceroute google.com

6. Per disattivare e disabilitare NetworkManager e avviare il servizio di rete, eseguire il


a seguire:
Da un sistema RHEL 6, digitare:
# servizio NetworkManager stop
# riavvio della rete di servizio
# chkconfig NetworkManager disattivato
# chkconfig rete attiva

Per RHEL 7 o sistemi Fedora più recenti, digitare:


# systemctl arresta NetworkManager.service
# systemctl disabilita NetworkManager.service
# riavvio della rete di servizio
# chkconfig rete attiva

7. Per creare una voce host che consenta di comunicare con il sistema host locale
utilizzando il nome myownhost, procedi come segue:
Modifica il file / etc / hosts (vi / etc / hosts) e aggiungi myownhost alla fine del file
voce localhost in modo che appaia come segue (quindi eseguire il ping di myownhost per vedere se ha funzionato):
127.0.0.1 localhost.localdomain localhost myownhost
# ping myownhost
Ctrl + C

808

Pagina 849

Appendice B: Risposte agli esercizi

8. Per aggiungere il server DNS pubblico di Google (indirizzo IP 8.8.8.8) come ultimo nell'elenco di file
Server DNS, esegui la seguente azione:

Fai una copia del tuo file resolv.conf prima di procedere (quindi copialo di nuovo dopo
la procedura è fatta):
# cp /etc/resolv.conf $ HOME

Se stai utilizzando il servizio NetworkManager, fai clic con il pulsante sinistro del mouse sull'icona NetworkManager
e seleziona Impostazioni di rete. Seleziona le Impostazioni IPv4. Quindi seleziona la casella Metodo
e scegli Solo indirizzi automatici (DHCP) e inserisci 8.8.8.8 nel servizio DNS
ers box (insieme a qualsiasi altro server DNS necessario). Se non funziona, provane uno
dei server DNS elencati nel file resolv.conf che hai appena copiato a casa tua
directory.
Oppure, se stai usando il servizio di rete, modifica direttamente il file /etc/resolv.conf,
quindi il file include almeno la seguente riga:
server dei nomi 8.8.8.8

In entrambi i casi, utilizza il comando dig per verificare che il server DNS sia stato in grado di farlo
risolvere un indirizzo:
# dig google.com
...
google.com. 91941 IN NS ns3.google.com.
;; Tempo query: 0 msec
;; SERVER: 8.8.8.8 # 53 (8.8.8.8)
;; QUANDO: lunedì 30 aprile 13:57:44 2012
;; DIMENSIONE MSG rcvd: 276

9. Per creare un percorso personalizzato che diriga il traffico destinato a


192.168.99.0/255.255.255.0 ad un indirizzo IP sulla rete locale, come
come 192.168.0.5 (assicurandoti prima che la rete 10.0.99 non venga utilizzata nel tuo
location), procedi come segue:
Determina il nome della tua interfaccia di rete. Per RHEL, la tua prima rete inter-
la faccia è probabilmente eth0. In tal caso, come root eseguire i seguenti comandi:
# cd / etc / sysconfig / network-scripts
# vi route-eth0

Aggiungi le seguenti righe a quel file:


INDIRIZZO 0 = 192.168.99.0
NETMASK0 = 255.255.255.0
GATEWAY0 = 192.168.0.5

Riavvia la rete ed esegui il percorso per vedere che il percorso è attivo:


# riavvio della rete di servizio
B
# percorso
Destination Gateway Genmask Flag Metrico Ref Usa Iface
predefinito 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

809

Pagina 850

Appendice B: Risposte agli esercizi

192.168.0.0 * 255.255.255.0 U 1 0 0 eth0


192.168.99.0 192.168.0.5 255.255.255.0 UG 0 0 0 eth0

Per verificare se il tuo sistema è stato configurato per consentire ai pacchetti IPv4 di essere
instradati tra le interfacce di rete sul sistema, digitare quanto segue:
# cat / proc / sys / net / ipv4 / ip_forward
0

Uno 0 indica che l'inoltro dei pacchetti IPv4 è disabilitato; un 1 indica che è abilitato.

Capitolo 15: Avvio e arresto dei servizi


1. Per determinare quale daemon di inizializzazione sta attualmente utilizzando il server, considerare
il seguente:
■ Hai Upstart se il tuo server Linux esegue una delle seguenti distribuzioni:
RHEL versione 6, Fedora versioni dalla 9 alla 14, Ubuntu versioni 6-14.10 o open-
SUSE versioni 11.3–12.1 e il comando strings mostra l'inizializzazione Upstart
processo in uso come dimostrato nel seguente esempio:
$ strings / sbin / init | grep -i upstart
upstart- devel@lists.ubuntu.com
UPSTART_CONFDIR
UPSTART_NO_SESSIONS
...

■ Hai il demone systemd se il tuo server Linux esegue Fedora versione 15 o


versioni successive, RHEL 7, Ubuntu 15.04 o OpenSUSE 12.02 o versioni successive. In alcuni casi, PID
1 è il processo systemd. Nei casi precedenti, PID 1 è il demone init. Per dire se
è un demone di inizializzazione di systemd, a cui puoi eseguire il seguente comando stringhe
mostra systemd in uso:
# stringhe / sbin / init | grep -i systemd
systemd.unit =
systemd.log_target =
systemd.log_level =
...

■ Molto probabilmente, hai il demone init SysVinit o BSD se il tuo demone init non lo è
il demone di inizializzazione di Upstart o systemd. Ma ricontrolla su http: // wikipedia
.org / wiki / Init.

2. Gli strumenti utilizzati per gestire i servizi dipendono principalmente dall'inizializzazione


il sistema è in uso. Prova a eseguire i comandi initctl, systemctl e service su
determinare il tipo di script di inizializzazione in uso per il servizio ssh sul sistema:
■ Un risultato positivo, mostrato qui, significa che sshd è stato convertito in Upstart:
# initctl status ssh
ssh avvio / esecuzione, processo 2390

810
Pagina 851

Appendice B: Risposte agli esercizi

■ Per systemd, un risultato positivo, mostrato qui, significa che sshd è stato convertito
a systemd:
# systemctl stato sshd.service
sshd.service - Demone del server OpenSSH
Loaded: caricato (/lib/systemd/system/sshd.service; abilitato)
Attivo: attivo (in esecuzione) da lunedì, 30 aprile 2015 12:35:20 ...

■ Se non vedi risultati positivi per i test precedenti, prova il seguente


mand per il demone di inizializzazione SysVinit. Un risultato positivo qui, insieme al negativo
risultati per i test precedenti, significa che sshd sta ancora utilizzando il demone SysVinit.
# stato del servizio ssh
sshd (pid 2390) è in esecuzione ...

3. Per determinare il runlevel precedente e corrente del tuo server, usa il runlevel comp
mand. Funziona ancora su tutti i demoni init:
$ runlevel
N3

4. Per modificare il runlevel predefinito o l'unità di destinazione sul server Linux, è possibile eseguirne uno
dei seguenti (a seconda del demone di inizializzazione del server):
■ Per SysVinit, modificare il file / etc / inittab e cambiare il # nella riga
id: # : initdefault: a 2, 3, 4 o 5.
■ Per il daemon Upstart, modificare il file / etc / inittab e cambiare il # nella riga
id: # : initdefault: a 2, 3, 4 o 5.
■ Per systemd, modificare il collegamento simbolico default.target in quello desiderato
runlevel # .target, dove # è 2, 3, 4 o 5. Di seguito viene mostrato
come modificare il collegamento simbolico per l'unità di destinazione in runlevel3.target.
# ln -sf /lib/systemd/system/runlevel3.target \
/etc/systemd/system/default.target
/lib/systemd/system/runlevel3.target

5. Per elencare i servizi in esecuzione (o attivi) sul server, è necessario utilizzare diversi
comandi, a seconda del demone di inizializzazione che stai utilizzando.
■ Per SysVinit, utilizzare il comando di servizio come mostrato in questo esempio:
# service --status-all | grep in esecuzione ... | ordinare
anacron (pid 2162) è in esecuzione ...
atd (pid 2172) è in esecuzione ...
...

■ Per Upstart, utilizzare il comando initctl. Tuttavia, assicurati anche di utilizzare l'estensione
comando di servizio, perché non tutti i servizi potrebbero essere stati portati su Upstart:
B
# initctl list | avvio / esecuzione di grep
tty (/ dev / tty3) avvio / esecuzione, processo 1163
...

811

Pagina 852

Appendice B: Risposte agli esercizi

# service --status-all | grep in esecuzione


abrtd (pid 1118) è in esecuzione ...
...

■ Per systemd, utilizzare il comando systemctl, come segue:


# systemctl list-unit-files --type = service | grep -v disabilitato
UNIT FILE STATO
abrt-ccpp.service abilitato
abrt-oops.service abilitato
...

6. Per elencare i servizi in esecuzione (o attivi) sul server Linux, utilizzare l'appropriato
ate comandi determinati nella risposta 5 per il demone di inizializzazione del server
sta usando.
7. Per ogni daemon di inizializzazione, i seguenti comandi mostrano un particolare servizio
stato attuale di vice:
■ Per SysVinit, viene utilizzato il comando service service_name status.
■ Per Upstart, il initctl stato di service_name viene utilizzato il comando.
■ Per systemd, lo stato di systemctl service_name viene utilizzato il comando.

8. Per mostrare lo stato del daemon cups sul tuo server Linux, usa quanto segue:
■ Per SysVinit:
# stato delle tazze di servizio
cupsd (pid 8236) è in esecuzione ...

■ Per Upstart:
# initctl status cups
le tazze si avviano / funzionano, processo 2390

■ Ricordare che se un servizio non è stato ancora portato su Upstart, è necessario utilizzarlo
il comando di servizio invece di initctl.
■ Per systemd:
# systemctl status cups.service
cups.service - Servizio di stampa CUPS
Loaded: caricato (/lib/systemd/system/cups.service; abilitato)
Attivo: attivo (in esecuzione) da Tue, 01 May 2015 04:43: 5 ...
PID principale: 17003 (cupsd)
CGroup: nome = systemd: /system/cups.service
17003 / usr / sbin / cupsd -f

9. Per tentare di riavviare il daemon cups sul server Linux, utilizzare quanto segue:
■ Per SysVinit:
# riavvio delle tazze di servizio
Fermare le tazze: [ OK ]
Tazze iniziali: [ OK ]

812

Pagina 853

Appendice B: Risposte agli esercizi

■ Per Upstart:
# initctl riavvia tazze
le tazze iniziano / funzionano, processo 2490

■ Ricordare che se un servizio non è stato ancora portato su Upstart, è necessario utilizzarlo
il comando di servizio invece di initctl.
■ Per systemd:
# systemctl riavvia cups.service

10. Per tentare di ricaricare il daemon cups sul server Linux, utilizzare quanto segue:
■ Per SysVinit:
# ricariche dei bicchieri di servizio
Ricarica tazze: [ OK ]

■ Per Upstart:
# initctl ricarica le tazze

Ricorda che se un servizio non è stato ancora portato su Upstart, devi usare il
comando di servizio invece di initctl.
■ Per systemd, questa è una domanda trabocchetto. Non è possibile ricaricare il daemon di cups su un file
server Linux di systemd!
# systemctl ricaricare cups.service
Impossibile emettere la chiamata al metodo: il ricaricamento del tipo di lavoro è
non applicabile per il servizio di coppe unitarie.

Capitolo 16: Configurazione di un server di stampa


1. Per utilizzare la finestra Impostazioni di stampa per aggiungere una nuova stampante chiamata myprinter al tuo
sistema (stampante PostScript generica, collegata a una porta), eseguire le seguenti operazioni da
Fedora 21:
un. Installa il pacchetto system-config-printer:
# yum install system-config-printer
b. Dal desktop GNOME 3, seleziona Impostazioni di stampa dalla schermata Attività.
c. Sblocca l'interfaccia e inserisci la password di root.

d. Seleziona il pulsante Aggiungi.

e. Selezionare un LPT o un'altra porta come dispositivo e fare clic su Avanti.

f. Per il driver, scegli Generic e fai clic su Forward; quindi scegli PostScript e
fare clic su Avanti.
B
g. Fare clic su Avanti per saltare tutte le opzioni installabili, se necessario.

813

Pagina 854

Appendice B: Risposte agli esercizi

h. Per il nome della stampante, chiamalo myprinter, dagli qualsiasi descrizione e posizione
ti piace e fai clic su Applica.

io. Fare clic su Annulla per non stampare una pagina di prova. La stampante dovrebbe apparire nella stampa
Finestra delle impostazioni.

2. Per utilizzare il comando lpc per vedere lo stato di tutte le tue stampanti, digita quanto segue:
# stato lpc
myprinter:
l'accodamento è abilitato
la stampa è abilitata
nessuna voce
demone presente

3. Per utilizzare il comando lpr per stampare il file / etc / hosts, digita quanto segue:
$ lpr / etc / hosts -P mia stampante

4. Per controllare la coda di stampa per quella stampante, digitare quanto segue:
# lpq -P myprinter
myprinter non è pronto
File lavoro proprietario di rango Dimensione totale
1 ° root 655 host 1024 byte

5. Per rimuovere il lavoro di stampa dalla coda (annullarlo), digitare quanto segue.
# lprm -P mia stampante

6. Per utilizzare la finestra di stampa per configurare l'impostazione del server di base che pubblica il tuo file
stampanti in modo che altri sistemi sulla tua rete locale possano stampare sulle tue stampanti, esegui il
a seguire:
un. Su un desktop GNOME 3, dalla schermata Attività, digitare Impostazioni di stampa e
premere Invio.

b. Selezionare Server ➪ Impostazioni e digitare la password di root se richiesta.

c. Fare clic sulla casella di controllo accanto a Pubblica stampanti condivise connesse a questo sistema,
e fare clic su OK.

7. Per consentire l'amministrazione remota del sistema da un browser web, seguire questi
passaggi:

un. Su un desktop GNOME 3, dalla schermata Attività, digitare Impostazioni di stampa e


premere Invio.

b. Selezionare Server ➪ Impostazioni e digitare la password di root se richiesta.

c. Fare clic sulla casella di controllo accanto a Consenti amministrazione remota e fare clic su OK.

8. Per dimostrare che è possibile eseguire l'amministrazione remota del sistema da un web
browser su un altro sistema, procedi come segue:

814

Pagina 855
Appendice B: Risposte agli esercizi

un. Nella casella della posizione da una finestra del browser da un altro computer sulla rete-
work, digita quanto segue sostituendo hostname con il nome o l'indirizzo IP di
il sistema che esegue il servizio di stampa: http: // nome host : 631 .
b. Digita root come utente e la password di root, quando richiesto. La casa di CUPS
dovrebbe apparire da quel sistema.

9. Per utilizzare il comando netstat per vedere quali indirizzi è in ascolto il demone cupsd
in corso, digitare quanto segue:
# netstat -tupln | grep 631
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 6492 / cupsd

10. Per eliminare la voce della stampante myprinter dal sistema, procedere come segue:

un. Fare clic sul pulsante Sblocca e digitare la password di root quando richiesto.

b. Dalla finestra Impostazioni di stampa, fare clic con il pulsante destro del mouse sull'icona myprinter e selezionare Elimina.

c. Quando richiesto, seleziona nuovamente Elimina.

Capitolo 17: Configurazione di un server Web


1. Per installare tutti i pacchetti associati al gruppo Web Server su un sistema Fedora
tem, fai quanto segue:
# yum groupinstall "Server web"

2. Per creare un file chiamato index.html nella directory assegnata a DocumentRoot in


il file di configurazione principale di Apache (con le parole My Own Web Server all'interno), fai
il seguente:
un. Determina la posizione di DocumentRoot:
# grep ^ DocumentRoot /etc/httpd/conf/httpd.conf
DocumentRoot "/ var / www / html"

b. Ripeti le parole "My Own Web Server" nel file index.html che si trova in
DocumentRoot:
# echo "Il mio server web"> /var/www/html/index.html

3. Per avviare il server Web Apache e impostarlo per l'avvio automatico all'avvio,
quindi controlla che sia disponibile da un browser web sul tuo host locale, procedi come segue
lowing (dovresti vedere le parole "My Own Web Server" visualizzate se funziona
propriamente):
Il servizio httpd viene avviato e abilitato in modo diverso su diversi sistemi Linux. Nel
Fedora recente o RHEL 7 o successivo, digita quanto segue:
B
# systemctl avvia httpd.service
# systemctl abilita httpd.service

815

Pagina 856

Appendice B: Risposte agli esercizi

In RHEL 6 o versioni precedenti, digita:


# servizio httpd start
# chkconfig httpd attivo

4. Per utilizzare il comando netstat per vedere su quali porte è in ascolto il server httpd,
digitare quanto segue:
# netstat -tupln | grep httpd
tcp6 0 0 ::: 80 ::: * ASCOLTA 2496 / httpd
tcp6 0 0 ::: 443 ::: * LISTEN 2496 / httpd

5. Prova a connetterti al tuo server web Apache da un browser web esterno a


sistema locale. Se non riesce, correggi eventuali problemi riscontrati indagando
il firewall, SELinux e altre funzionalità di sicurezza.
Se non hai ancora impostato il DNS, utilizza l'indirizzo IP del server per visualizzare il tuo
Server Apache da un browser Web remoto, come http://192.168.0.1. Se tu
non sono in grado di connettersi, riprovare a connettersi al server dal browser dopo aver
formando ciascuno dei seguenti passaggi sul sistema che esegue il server Apache:
# iptables -F
# setenforce 0
# chmod 644 /var/www/html/index.html

Il comando iptables -F svuota temporaneamente le regole del firewall. Se ci si collega a


dopo che il server web ha successo, è necessario aggiungere nuove regole del firewall per aprire tcp
porte 80 e 443 sul server. Su un sistema che utilizza il servizio firewalld, eseguire questa operazione
facendo clic sulla casella di controllo accanto a tali porte nella finestra Firewall. Per i sistemi
eseguendo il servizio iptables, aggiungi le seguenti regole prima dell'ultimo DROP o
REGOLA RIFIUTA.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

Il comando setenforce 0 mette temporaneamente SELinux in modalità permissiva. Se


dopo che la connessione al server web riesce, è necessario correggere il file SELinux
contesto e / o problemi booleani (probabilmente il contesto del file in questo caso). Il seguente
dovrebbe funzionare:
# chcon --reference = / var / www / html /var/www/html/index.html

Se il comando chmod funziona, significa che l'utente e il gruppo di apache non lo hanno fatto
avere il permesso di lettura per il file. Dovresti essere in grado di lasciare le nuove autorizzazioni come
loro sono.

6. Per utilizzare il comando openssl o simile per creare la propria chiave RSA privata e
certificato SSL autofirmato, procedi come segue:
# yum install openssl
# cd / etc / pki / tls / private
# openssl genrsa -out server.key 1024
# chmod 600 server.key

816

Pagina 857

Appendice B: Risposte agli esercizi

# cd / etc / pki / tls / certs


# openssl req -new -x509 -nodes -sha1 -days 365 \
-key /etc/pki/tls/private/server.key \
-out server.crt
Nome paese (codice di 2 lettere) [AU]: USA
Nome dello stato o della provincia (nome completo) [Some-State]: NJ
Nome località (ad es. Città) []: Princeton
Nome dell'organizzazione (ad es. Azienda) [Internet Widgits Pty
Ltd]: SOLO PER USO DI PROVA
Nome unità organizzativa (ad esempio, sezione) []: SOLO PER USO DI PROVA
Nome comune (ad esempio, il TUO nome) []: secure.example.org
Indirizzo e-mail []: dom@example.org

Ora dovresti avere un file chiave /etc/pki/tls/private/server.key e un file


/etc/pki/tls/certs/server.crt file del certificato.

7. Per configurare il server Web Apache per utilizzare la chiave e il certificato autofirmato
offrire contenuti protetti (HTTPS), procedi come segue:
un. Modificare il file /etc/httpd/conf.d/ssl.conf per cambiare la chiave e il certificato
cate le posizioni per utilizzare quelle appena create:
SSLCertificateFile / etc / pki / tls / certs / server.crt
SSLCertificateKeyFile / etc / pki / tls / private / server.key

b. Riavvia il servizio httpd:


# systemctl riavvia httpd.service

8. Per utilizzare un browser Web per creare una connessione HTTPS al server Web e visualizzare
il contenuto del certificato che hai creato, procedi come segue:
Dal sistema che esegue il server Apache, digitare https: // localhost nella
casella della posizione del browser. Dovresti vedere un messaggio che dice: "Questa connessione è
Untrusted. " Per completare la connessione, procedi come segue:

un. Fare clic su Capisco i rischi.

b. Fare clic su Aggiungi eccezione.

c. Fare clic su Ottieni certificato.

d. Fare clic su Conferma eccezione di sicurezza.

9. Per creare un file chiamato /etc/httpd/conf.d/example.org.conf, che gira


sull'hosting virtuale basato sul nome e crea un host virtuale che 1) ascolta sulla porta
80 su tutte le interfacce, 2) ha un amministratore del server joe@example.org, 3) ha un file
nome del server joe.example.org, 4) ha DocumentRoot di / var / www / html /
joe.example.org e 5) ha un DirectoryIndex che include almeno index.
html e creare un file index.html in DocumentRoot che contenga le parole B
"Benvenuto nella casa di Joe" all'interno, procedi come segue:

817

Pagina 858

Appendice B: Risposte agli esercizi

Crea un file example.org.conf simile al seguente:


NameVirtualHost *: 80
<VirtualHost *: 80>
ServerAdmin joe @
example.org
ServerName joe.
example.org
ServerAlias web.example.org
DocumentRoot /var/www/html/joe.example.org/
DirectoryIndex index.html
</VirtualHost>

Ecco come puoi creare il testo da inserire nel file index.html:


# echo "Benvenuto nella casa di Joe"> /var/www/html/joe.example
.org / index.html

10. Per aggiungere il testo joe.example.org alla fine della voce localhost nel tuo file
/ etc / hosts sulla macchina su cui è in esecuzione il server web e controllarlo
digitando http://joe.example.org nella casella della posizione del tuo browser web a
vedere "Benvenuti nella casa di Joe" quando viene visualizzata la pagina, eseguire le seguenti operazioni:
un. Ricarica il file httpd.conf modificato nell'esercizio precedente:
# apachectl grazioso

b. Modifica il file / etc / hosts con qualsiasi editor di testo in modo che la riga dell'host locale appaia come
segue:
127.0.0.1 localhost.localdomain localhost joe.example.org

c. Da un browser sul sistema locale in cui è in esecuzione httpd, dovresti essere in grado
digitare http://joe.example.org nella casella della posizione per accedere ad Apache
server Web utilizzando l'autenticazione basata sul nome.

Capitolo 18: Configurazione di un server FTP

Non eseguire le attività descritte qui su un server FTP pubblico funzionante, perché queste attività interferiranno con il suo file
operazioni. (Tuttavia, puoi utilizzare queste attività per configurare un nuovo server FTP.)

1. Per determinare quale pacchetto fornisce il servizio Very Secure FTP Daemon, digitare
seguendo come root:
# yum cerca "FTP molto sicuro"
...
================== N / S abbinato: FTP molto sicuro ==================
vsftpd.i686: Daemon Ftp molto sicuro

818

Pagina 859
Appendice B: Risposte agli esercizi

La ricerca ha trovato il pacchetto vsftpd.

2. Per installare il pacchetto Very Secure FTP Daemon sul sistema e cercare il file
file di configurazione in quel pacchetto, digitare quanto segue:
# yum installa vsftpd
# rpm -qc vsftpd | Di meno

3. Per avviare il servizio Very Secure FTP Daemon e impostarlo per l'avvio quando il sistema
boots, digita quanto segue su un sistema Fedora o Red Hat Enterprise Linux 7:
# systemctl avvia vsftpd.service
# systemctl abilita vsftpd.service

Su un sistema Red Hat Enterprise Linux 6, digita quanto segue:


# avvio del servizio vsftpd
# chkconfig vsftpd su

4. Sul sistema su cui è in esecuzione il server FTP, digitare quanto segue per creare un file denominato
test nella directory FTP anonima che contiene le parole "Benvenuto nel tuo
vsftpd server ":
# echo "Benvenuto nel tuo server vsftpd"> / var / ftp / test

5. Per aprire il file di prova dalla home directory dell'FTP anonimo, utilizzando un browser web
sul sistema che esegue il tuo server FTP, procedi come segue:
Avviare il browser Web Firefox, digitare quanto segue nella casella della posizione e premere
Accedere:
ftp: // localhost / test

Il testo "Benvenuto nel tuo server Daemon FTP molto sicuro" dovrebbe apparire nel file
Finestra di Firefox.
6. Per accedere al file di prova nella home directory dell'FTP anonimo, eseguire le seguenti operazioni. (Se
non puoi accedere al file, controlla che il tuo firewall, SELinux e wrapper TCP lo siano
configurato per consentire l'accesso a quel file, come descritto qui.)

un. Digita quanto segue nella casella della posizione di un browser su un sistema sulla tua rete-
lavoro che può raggiungere il server FTP (sostituire l' host con il
nome host o indirizzo IP specificato):
ftp: // host / test

Se non riesci a visualizzare il messaggio di benvenuto nella finestra del browser, controlla cosa potrebbe
impedire l'accesso. Per disattivare temporaneamente il firewall (svuota il file iptables
regole), digita il seguente comando come utente root da una shell sul tuo FTP
sistema server e poi riprova ad accedere al sito:
# iptables -F B
b. Per disabilitare temporaneamente SELinux, digitare quanto segue e quindi provare ad accedere al file
sito di nuovo:
# setenforce 0

819

Pagina 860

Appendice B: Risposte agli esercizi

c. Per disabilitare temporaneamente i wrapper TCP, aggiungere quanto segue all'inizio del file
/etc/hosts.allow file (assicurati di rimuovere di nuovo questa riga al termine del test):
TUTTO TUTTO

Dopo aver determinato la causa della non disponibilità del file sul tuo server FTP, vai
torna alla sezione "Protezione del server FTP" e segui i passaggi per determinare cosa
potrebbe bloccare l'accesso al tuo file. Queste sono probabili possibilità:

■ Per iptables, assicurarsi che sia presente una regola che apre la porta TCP 21 sul server.
■ Per SELinux, assicurati che il contesto del file sia impostato su public_content_t.
■ Per i wrapper TCP, assicurarsi che sia presente una riga vsftpd: ALL o simile nel file
/etc/hosts.allow file. Una voce come questa dovrebbe essere necessaria solo se presente
è una riga nel file /etc/hosts.deny che nega l'accesso ai servizi che sono
non esplicitamente consentito.

7. Per configurare il server Daemon FTP molto sicuro per consentire il caricamento dei file da parte di anony-
utenti mous in una directory denominata in, eseguire le seguenti operazioni come root sul server FTP:

un. Creare la directory in come segue:


# mkdir / var / ftp / in
# chown ftp: ftp / var / ftp / in
# chmod 770 / var / ftp / in
b. All'interno del file /etc/vsftpd/vsftpd.conf, assicurati che quanto segue
le variabili sono impostate:
anonymous_enable = SÌ
write_enable = YES
anon_upload_enable = SÌ

c. Per Fedora 20 o RHEL 7, apri la finestra Configurazione firewall e controlla il file


Casella FTP sotto servizi per aprire l'accesso al tuo servizio FTP. Per i precedenti RHEL e
Sistemi Fedora, configura il tuo firewall iptables per consentire nuove richieste
Porta TCP 21 aggiungendo la seguente regola ad un certo punto prima di un DROP o
REJECT regola nel tuo file / etc / sysconfig / iptables:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

d. Configura il tuo firewall iptables per monitorare la connessione caricando il file


modulo appropriato al file / etc / sysconfig / iptables-config:
IPTABLES_MODULES = "nf_conntrack_ftp"

e. Affinché SELinux consenta il caricamento nella directory, impostare prima i contesti dei file correttamente:
# semanage fcontext -a -t public_content_rw_t "/var/ftp/in(/.*)?"
# restorecon -F -R -v / var / ftp / in

f. Quindi, imposta SELinux Boolean per consentire il caricamento:


# setsebool -P allow_ftpd_anon_write on

820

Pagina 861

Appendice B: Risposte agli esercizi

g. Riavvia il servizio vsftpd (service vsftpd restart o systemctl


riavviare vsftpd.service).

8. Per installare il client FTP lftp (se non hai un secondo sistema Linux, installa
lftp sullo stesso host che esegue il server FTP) e prova a caricare il file / etc / hosts
file nella directory in arrivo sul server, eseguire i seguenti comandi come
utente root:
# yum installa lftp
# lftp localhost
lftp localhost: /> cd in
lftp localhost: / in> inserisci / etc / hosts
89 byte trasferiti
lftp localhost: / in> quit

Non sarai in grado di vedere che hai copiato il file hosts nella directory in arrivo.
Tuttavia, digitare quanto segue da una shell sull'host su cui è in esecuzione il server FTP
assicurati che il file hosts sia lì:
# ls / var / ftp / negli host

Se non puoi caricare il file, risolvi il problema come descritto nell'Esercizio 7,


ricontrolla le tue impostazioni vsftpd.conf e controlla la proprietà e le autorizzazioni su
la directory / var / ftp / in.

9. Utilizzando qualsiasi client FTP che scegli, visita la directory / pub / linux / docs / man-pages
tory sul sito ftp://kernel.org ed elenca i contenuti di quella directory. Ecco
come farlo con il client lftp:
# lftp ftp://kernel.org/pub/linux/docs/man-pages
cd ok, cwd = / pub / linux / docs / man-pages
lftp kernel.org:/pub/linux/docs/man-pages> ls
drwxrwsr-x 2536536 24576 10 maggio 20:29 Archivio
-rw-rw-r-- 1536536 1135808 Feb 09 23:23 man-pages-3.34.tar.bz2
-rw-rw-r-- 1536536 1674738 Feb 09 23:23 man-pages-3.34.tar.gz
-rw-rw-r-- 1536536543 Feb 09 23:23 man-pages-3.34.tar.sign
...

10. Utilizzando qualsiasi client FTP scelto, scarica il file man-pages-3.78.tar.gz


dalla directory kernel.org che hai appena visitato alla directory / tmp sul tuo
sistema locale.
# lftp ftp://kernel.org/pub/linux/docs/man-pages
cd ok, cwd = / pub / linux / docs / man-pages
lftp kernel.org:man-pages> get man-pages-3.78.tar.gz
1739208 byte trasferiti in 4 secondi (481.0 K / s)
lftp kernel.org:man-pages> quit
B
821

Pagina 862

Appendice B: Risposte agli esercizi

Capitolo 19: Configurazione di una condivisione file di Windows


(Samba) Server
1. Per installare i pacchetti samba e samba-client, digitare quanto segue come root da
una shell sul sistema locale:
# yum installa samba samba-client

2. Per avviare e abilitare i servizi smb e nmb, digitare quanto segue come root da un file
shell sul sistema locale:
# systemctl abilita smb.service
# systemctl avvia smb.service
# systemctl abilita nmb.service
# systemctl avvia nmb.service

o
# chkconfig smb su
# service smb start
# chkconfig nmb attivato
# avvio del servizio nmb

3. Per impostare il gruppo di lavoro del server Samba su TESTGROUP, il nome netbios su
MYTEST, e la stringa del server a Samba Test System, come utente root in una modifica di testo
tor, apri il file /etc/samba/smb.conf e cambia tre righe in modo che appaiano come
segue:
gruppo di lavoro = TESTGROUP
nome netbios = MYTEST
stringa del server = Samba Test System

4. Per aggiungere un utente Linux denominato phil al sistema e aggiungere una password Linux e
Password di Samba per phil, digita quanto segue come utente root da una shell (assicurati di
ricorda le password che hai impostato):
# useradd phil
# passwd phil
Nuova password: *******
Digita nuovamente la nuova password: *******
# smbpasswd -a phil
Nuova password SMB: *******
Digita nuovamente la nuova password SMB: *******
Aggiunto utente phil.

5. Per impostare la sezione [homes] in modo che le directory home siano navigabili (sì) e
scrivibile (sì), e quel phil è l'unico utente valido, apri il file / etc / samba / smb.
conf come root e cambia la sezione [homes] in modo che appaia come segue:
[le case]
comment = Directory home

822

Pagina 863

Appendice B: Risposte agli esercizi

sfogliabile = sì
scrivibile
utenti = sì= fil
validi

6. Per impostare SELinux Booleans necessari per fare in modo che phil possa accedere alla sua casa
directory tramite un client Samba, digitare quanto segue come root da una shell:
# setsebool -P samba_enable_home_dirs on

7. Dal sistema locale, utilizzare il comando smbclient per elencare le case condivise
è disponibile.
# smbclient -L localhost
Inserisci la password di root:
<ENTER>
Accesso anonimo riuscito
Dominio = [DATAGROUP] OS = [Unix] Server = [Samba 4.1.15]
Nome condivisione Tipo Commento
--------- ---- -------
le case Directory home del disco
...

8. Per connettersi alla condivisione homes da una finestra Nautilus (file manager) sul file
Il sistema locale del server Samba per l'utente phil in un modo che consente di trascinare e
trascina i file in quella cartella, procedi come segue:
un. Apri la finestra di Nautilus (seleziona l'icona dei file).

b. Sotto l'intestazione Rete nel riquadro di sinistra, seleziona Connetti al server.

c. Digita l'indirizzo del server. Ad esempio , smb: // localhost / phil /.

d. Quando richiesto, digita phil come nome utente e inserisci la password di phil.

e. Apri un'altra finestra di Nautilus e rilascia un file nella cartella homes di phil.

9. Per aprire il firewall in modo che chiunque abbia accesso al server possa accedere al file
Servizio Samba (demoni smbd e nmbd), puoi semplicemente aprire il firewall
Finestra di configurazione e selezionare le caselle di controllo samba e samba-client. Se
il tuo sistema esegue iptables di base (e non il servizio firewalld), cambia
il file / etc / sysconfig / iptables in modo che il firewall appaia come segue
(le regole che aggiungi sono quelle in grassetto):
*filtro
: INPUT ACCETTA [0: 0]
: INOLTRO ACCETTA [0: 0]
: OUTPUT ACCETTA [0: 0]
-A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
-A INPUT -p icmp -j ACCETTA
-A INPUT -i lo -j ACCETTA B
-I INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCETTA
-I INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCETTA
-I INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-I INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

823

Pagina 864

Appendice B: Risposte agli esercizi

-A INPUT -j REJECT --reject-with icmp-host-vietato


-A FORWARD -j REJECT --reject-with icmp-host-disabled
COMMETTERE

Quindi digitare quanto segue per ricaricare le regole del firewall:


# riavviare iptables del servizio

10. Per aprire nuovamente la condivisione delle case come utente phil da un altro sistema sulla rete
work (Windows o Linux) e assicurati di poter trascinare i file su di esso, esegui il
a seguire:
Questo passaggio è in realtà solo la ripetizione dell'esempio Nautilus descritto in precedenza o
accedendo a una finestra di Windows Explorer e aprendo la condivisione (selezionando Rete,
quindi il server Samba). Il trucco è assicurarsi che il servizio sia stato reso disponibile
in grado attraverso le funzionalità di sicurezza del server Linux.
Se non riesci ad accedere alla condivisione Samba, prova a disabilitare il firewall e poi
capace di SELinux. Se la condivisione è accessibile quando disattivi uno di questi servizi
vizi, torna indietro ed esegui il debug dei problemi con il servizio che non funziona:
# setenforce 0
# servizio iptables stop

Dopo aver risolto il problema, reimpostare SELinux in modalità Enforcing e riavviare


iptables:
# setenforce 1
# inizio del servizio iptables
Capitolo 20: Configurazione di un file server NFS
1. Per installare i pacchetti necessari per configurare il servizio NFS sul sistema Linux
scegli, digita quanto segue come utente root in una shell (Fedora o RHEL):
# yum installa nfs-utils

2. Per elencare i file di documentazione forniti nel pacchetto che fornisce NFS
software server, digitare quanto segue:
# rpm -qd nfs-utils
/usr/share/doc/nfs-utils-1.2.5/ChangeLog
...
/usr/share/man/man5/exports.5.gz
/usr/share/man/man5/nfs.5.gz
/usr/share/man/man5/nfsmount.conf.5.gz
/usr/share/man/man7/nfsd.7.gz
/usr/share/man/man8/blkmapd.8.gz
/usr/share/man/man8/exportfs.8.gz
...

824

Pagina 865

Appendice B: Risposte agli esercizi

3. Per avviare e abilitare il servizio NFS, digitare quanto segue come utente root su NFS
server:
# systemctl avvia nfs-server.service
# systemctl abilita nfs-server.service

4. Per controllare lo stato del servizio NFS appena avviato sul server NFS, digitare
seguendo come utente root:
# systemctl stato nfs-server.service

5. Per condividere una directory / var / mystuff dal tuo server NFS come disponibile a tutti,
in sola lettura e con l'utente root sul client che ha accesso root alla condivisione, per primo
creare la directory di montaggio come segue:
# mkdir / var / mystuff

Quindi creare una voce nel file / etc / export simile alla seguente:
/ var / mystuff * (ro, no_root_squash, insicuro)

Per rendere disponibile la condivisione, digita quanto segue:


# exportfs -v -a
esportazione *: / var / mystuff

6. Per assicurarti che la condivisione che hai creato sia accessibile a tutti gli host, controlla prima quello
rpcbind non viene bloccato dai wrapper TCP aggiungendo la seguente voce al file
inizio del file /etc/hosts.allow:
rpcbind: ALL

Per aprire il firewall nei sistemi che utilizzano firewalld (RHEL 7 e il recente sistema Fedora
tems), installa il pacchetto firewall-config. Quindi esegui firewall-config e da
nella finestra Configurazione firewall che appare, assicurati che nfs e rpc-bind
sono selezionati per le impostazioni del firewall permanente.
Per aprire le porte necessarie per consentire ai client di raggiungere NFS tramite iptables fire-
wall (RHEL 6 e precedenti sistemi Fedora senza firewalld), è necessario aprire in
almeno le porte TCP e UDP 111 (rpcbind), 20048 (mountd) e 2049 (nfs) da aggiungere-
inserire le seguenti regole nel file / etc / sysconfig / iptables e avviare il
servizio iptables:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20048 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 20048 -j ACCEPT

SELinux dovrebbe essere in grado di condividere i filesystem NFS mentre è in modalità Enforcing senza B
eventuali modifiche ai contesti di file o booleani. Per assicurarti che la condivisione che hai creato possa essere
in sola lettura condivisa, esegui il seguente comando come utente root sul server NFS:
# setsebool -P nfs_export_all_ro on

825
Pagina 866

Appendice B: Risposte agli esercizi

7. Per visualizzare le condivisioni disponibili dal server NFS, assumendo che il server NFS sia denominato
nfsserver, digita quanto segue dal client NFS:
# showmount -e nfsserver
Elenco di esportazione per nfsserver:
/ var / mystuff *

8. Per creare una directory chiamata / var / remote e montare temporaneamente il file / var /
directory mystuff dal server NFS (denominato nfsserver in questo esempio) su
quel punto di montaggio, digitare quanto segue come utente root dal client NFS:
# mkdir / var / remote
# mount -t nfs nfsserver: / var / mystuff / var / remote

9. Per aggiungere una voce in modo che lo stesso montaggio venga eseguito automaticamente al riavvio,
prima smonta / var / remote come segue:
# umount / var / remote

Quindi aggiungi una voce come la seguente in / etc / fstab sul sistema client:
/ var / remote nfsserver: / var / mystuff nfs bg, ro 0 0

Per verificare che la condivisione sia configurata correttamente, digitare quanto segue sul client NFS
come utente root:
# mount -a
# mount -t nfs
nfsserver: / var / mystuff su / var / remote tipo nfs4
(ro, vers = 4, rsize = 524288 ...

10. Per copiare alcuni file nella directory / var / mystuff, digitare quanto segue su NFS
server:
# cp / etc / hosts / etc / services / var / mystuff

Dal client NFS, per assicurarti di poter vedere i file appena aggiunti a quella directory
e per assicurarti di non poter scrivere file in quella directory dal client, digita
a seguire:
# ls / var / remote
servizi host
# touch / var / remote / file1
touch: impossibile toccare "/ var / remote / file1": file system di sola lettura

Capitolo 21: Risoluzione dei problemi di Linux


1. Per accedere alla modalità Setup dalla schermata del BIOS sul computer, eseguire le seguenti operazioni:

un. Riavvia il computer.

b. Entro pochi secondi, dovresti vedere la schermata del BIOS, con un'indicazione di
quale tasto funzione premere per accedere alla modalità Setup. (Sulla mia workstation Dell, è
il tasto funzione F2.)

826

Pagina 867

Appendice B: Risposte agli esercizi

c. Dovrebbe apparire la schermata del BIOS. (Se il sistema avvia l'avvio di Linux, non l'hai fatto
premere il tasto funzione abbastanza velocemente.)

2. Dalla schermata di configurazione del BIOS, effettuare le seguenti operazioni per determinare se il proprio computer
è a 32 o 64 bit, indipendentemente dal fatto che includa il supporto per la virtualizzazione e che il tuo
la scheda di interfaccia di rete è in grado di eseguire l'avvio PXE.
La tua esperienza potrebbe essere leggermente diversa dalla mia, a seconda del tuo computer
e sistema Linux. La schermata di configurazione del BIOS è diversa per i diversi computer. Nel
generale, tuttavia, puoi usare i tasti freccia e i tasti tab per spostarti tra i diversi
colonne e premere Invio per selezionare una voce.
■ Sulla mia workstation Dell, sotto l'intestazione Sistema, evidenzio Informazioni sul processore
per vedere che il mio è un computer con tecnologia a 64 bit. Guarda nelle informazioni sul processore, o
simile, sezione sul tuo computer per vedere il tipo di processore che hai.
■ Sulla mia workstation Dell, sotto l'intestazione Dispositivi integrati, evidenzio
NIC integrato e premere Invio. La schermata NIC integrata che appare al
a destra mi consente di scegliere di abilitare o disabilitare la NIC (On o Off) o abilitare con PXE
o RPL (se intendo avviare il computer dalla rete).
3. Per interrompere il processo di avvio per accedere al boot loader GRUB, eseguire le seguenti operazioni:

un. Riavvia il computer.

b. Subito dopo la scomparsa della schermata del BIOS, quando viene visualizzato il conto alla rovescia per l'avvio
il sistema Linux, premere un tasto qualsiasi (forse la barra spaziatrice).

c. Dovrebbe apparire il menu del boot loader di GRUB, pronto per consentirti di selezionare quale
kernel del sistema operativo da avviare.
4. Per avviare il computer al runlevel 1 in modo da poter eseguire la manutenzione del sistema,
vai alla schermata di avvio di GRUB (come descritto nell'esercizio precedente), quindi esegui
il seguente:

un. Usa i tasti freccia per evidenziare il sistema operativo e il kernel che desideri
avvio.
b. Digita e per visualizzare le voci necessarie per avviare il sistema operativo.

c. Spostare il cursore sulla riga che includeva il kernel. (Dovrebbe includere il file
parola vmlinuz da qualche parte sulla linea.)
d. Spostare il cursore alla fine di quella riga, aggiungere uno spazio e quindi digitare il numero
1 o init = / bin / bash .

e. Segui le istruzioni per avviare la nuova voce. Probabilmente dovrai premere


Ctrl + X o premere Invio; quindi quando vedi la schermata successiva, digita b .

Se ha funzionato, il sistema dovrebbe ignorare il prompt di accesso e avviarsi direttamente


a una shell utente root, dove è possibile eseguire attività amministrative senza fornire un file B
parola d'ordine.

5. Per avviare Red Hat Enterprise Linux (tramite RHEL 6. x ) in modo da poter confermare ciascuno
quando viene avviato, eseguire le seguenti operazioni:

827

Pagina 868

Appendice B: Risposte agli esercizi

un. Segui i due esercizi precedenti, ma invece di mettere un 1 alla fine di a


riga del kernel, inserisci la parola conferma.

b. Quando il processo di avvio arriva al punto in cui sta avviando i servizi runlevel,
ti viene chiesto di confermare (Y) o negare (N) ogni servizio, o continuare (C) a
avvia semplicemente tutti gli altri servizi.
Nota che questa opzione non è disponibile con le ultime Fedora e Ubuntu
rilasci.
6. Per guardare i messaggi che sono stati prodotti nel ring buffer del kernel (che mostra
l'attività del kernel all'avvio), digita quanto segue dalla shell dopo
il sistema termina l'avvio:
# dmesg | Di meno

O su un sistema che utilizza systemd, digita quanto segue:


# journalctl -k

7. Eseguire un aggiornamento yum di prova da Fedora o RHEL ed escludere qualsiasi pacchetto del kernel
che è disponibile, digita quanto segue (quando richiesto, digita N per non andare effettivamente
tramite l'aggiornamento, se sono disponibili aggiornamenti):
# yum update --exclude = 'kernel *'

8. Per verificare quali processi stanno ascoltando le connessioni in entrata sul tuo sistema
tem, digita quanto segue:
# netstat -tupln | Di meno

9. Per verificare quali porte sono aperte sull'interfaccia di rete esterna, eseguire il
a seguire:

Se possibile, esegui il comando nmap da un altro sistema Linux sulla tua rete,
sostituendo il tuo host con il nome host o l'indirizzo IP del tuo sistema:
# nmap tuohost
10. Per svuotare la cache della pagina del sistema e osservare l'effetto che ha sulla memoria
utilizzo, eseguire le seguenti operazioni:

un. Seleziona Terminale da un menu dell'applicazione sul desktop (si trova su


menu ferenti per diversi sistemi).
b. Esegui il comando top (per guardare i processi attualmente in esecuzione sul tuo sistema
tem), quindi digitare una M maiuscola per ordinare i processi in base a quelli che consumano di più
memoria.
c. Dalla finestra Terminale, seleziona File e Apri terminale per aprirne un secondo
Finestra terminale.

d. Dalla seconda finestra di Terminale, diventa utente root (su -).

e. Mentre guardi la riga Mem (colonna usata) nella prima finestra di Terminale, digita
quanto segue dalla seconda finestra di Terminale:
# echo 3> / proc / sys / vm / drop_caches

828

Pagina 869

Appendice B: Risposte agli esercizi

f. La memoria RES utilizzata dovrebbe diminuire in modo significativo sulla riga Mem. I numeri
nella colonna RES per ogni processo dovrebbe anche scendere.

Capitolo 22: Comprensione della sicurezza Linux di base


1. Per controllare i messaggi di registro dal diario di systemd per NetworkManager.ser-
vice, sshd.service e auditd.service services, digita quanto segue:
# journalctl -u NetworkManager.service
...
# journalctl -u sshd.service
...
# journalctl -u auditd.service
...

2. Le password utente vengono memorizzate nel file / etc / shadow. Per vedere i suoi permessi, digita ls
-l / etc / shadow nella riga di comando. (Se nessun file shadow esce, è necessario
eseguire pwconv.)
Le seguenti sono le impostazioni appropriate:
# ls -l / etc / shadow
----------. 1 radice radice 1049 10 febbraio 09:45 / etc / shadow

3. Per determinare la durata della password del tuo account e se scadrà utilizzando un file
comando singolo, digita chage -l nome_utente. Per esempio:
# chage -l chris

4. Per avviare l'audit delle scritture in / etc / shadow con il daemon auditd, digitare
seguendo nella riga di comando:
# auditctl -w / etc / shadow -pw

Per controllare le impostazioni di audit, digita auditctl -l nella riga di comando.


5. Per creare un report dal daemon auditd sul file / etc / shadow, digitare
ausearch -f / etc / shadow nella riga di comando. Per disattivare l'auditing
quel file, digita auditctl -W / etc / shadow -pw nella riga di comando.

6. Per installare il pacchetto lemon, danneggiate il file / usr / bin / lemon, verificate che il file
il file è stato manomesso e rimuovere il pacchetto di limone, digitare quanto segue:
# yum install -y lemon
# cp / etc / services / usr / bin / lemon
# rpm -V limone
S.5 .... T. / usr / bin / lemon
# yum cancella il limone B
Dal file lemon originale, la dimensione del file (S), md4sum (5) e la modifica
i tempi (T) differiscono tutti. Per Ubuntu, installa il pacchetto con apt-get install
lemon e digita debsums lemon per controllarlo.

829
Pagina 870

Appendice B: Risposte agli esercizi

7. Se sospetti di aver subito un attacco dannoso al tuo sistema oggi e importante


file binari sono stati modificati, è possibile trovare questi file modificati digitando il
seguendo nella riga di comando: trova la directory -mtime -1 per le directory,
/ bin, / sbin, / usr / bin e / usr / sbin.

8. Per installare ed eseguire chkrootkit per vedere se l'attacco dannoso dall'esercizio


sopra installato un rootkit, scegli la tua distribuzione e fai quanto segue:

un. Per installare su una distribuzione Fedora o RHEL, digita yum install chkrootkit
dalla riga di comando.

b. Per installare su una distribuzione Ubuntu o basata su Debian, digita sudo apt-get
installa chkrootkit dalla riga di comando.

c. Per eseguire il controllo, digita chkrootkit nella riga di comando e controlla il file
risultati.

9. Per trovare file in qualsiasi punto del sistema con il set di autorizzazioni SetUID o SetGID, digitare
trova / -perm / 6000 nella riga di comando.

10. Installa il pacchetto Aide, esegui il comando AIDE per inizializzare il database AIDE,
copiare il database nella posizione corretta ed eseguire il comando aide per controllare
se sono stati modificati file importanti sul sistema.
# yum install aide
# aide -i
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# aiutante -C

Per rendere l'output più interessante, potresti installare il pacchetto lemon


(descritto in un esercizio precedente) prima di eseguire l'aiutante -i e modificarlo prima di correre-
ning aide -C per vedere come appare un binario modificato da aide.

Capitolo 23: Comprensione della sicurezza Linux avanzata


Per fare i primi esercizi, devi avere installato il pacchetto gnupg2. Questo non è
installato di default in Ubuntu, sebbene sia per le recenti versioni di Fedora e RHEL.

1. Per crittografare un file utilizzando l'utilità gpg2 e una chiave simmetrica, digitare quanto segue
comando (l'utility gpg2 richiede una passphrase per proteggere la chiave simmetrica):
$ gpg2 -c nomefile

2. Per generare una coppia di chiavi utilizzando l'utilità gpg2, digita quanto segue:
$ gpg2 --gen-key

È necessario fornire le seguenti informazioni:


un. Che tipo di chiave asimmetrica desideri:

■ RSA e RSA (predefinito)


■ DSA ed Elgamal

830

Pagina 871

Appendice B: Risposte agli esercizi

■ DSA (solo segno)

■ RSA (solo segno)

b. Quale dimensione della chiave (in numero di bit) vuoi

c. Per quanti giorni, settimane, mesi, anni la chiave dovrebbe essere valida. (Puoi anche
richiedere che la chiave sia valida in modo permanente.)

d. Il tuo vero nome, indirizzo e-mail e un commento per creare l'ID utente per
chiave pubblica
e. Una passphrase per la chiave privata

3. Per elencare le chiavi che hai generato, digita:


$ gpg2 --list-chiavi

4. Per crittografare un file e aggiungere la tua firma digitale utilizzando l'utility gpg2, esegui il
a seguire:

un. Devi prima aver generato un portachiavi (esercizio 2).

b. Dopo aver generato il keyring, digita:


$ gpg2 --output EncryptedSignedFile --sign FiletoEncryptSign

5. Utilizzare l'utilità di digest del messaggio appropriata per assicurarsi che il file scaricato sia
non danneggiato, è necessario eseguire le seguenti operazioni. (Ricorda che anche un messaggio digest è
chiamato checksum.)

un. Rivedere il sito Web di download per il file o il numero MD5 o SHA-1.
■ Se si tratta di un numero di checksum, è necessario andare al passaggio successivo.
■ Se si tratta di un file di checksum, è necessario scaricare anche quel file e quindi utilizzarlo
il comando cat per visualizzare il contenuto del file di checksum sullo schermo.

b. Se è un MD5, digita quanto segue nella riga di comando e confronta il numero


bers al file checksum MD5 o al numero sul sito Web:
$ md5sum FirstDownloadedFile

c. Se è un hash SHA-1, digita quanto segue nella riga di comando e confronta il file
numeri al file checksum SHA-1 o al numero sul sito Web:
$ sha1sum FirstDownloadedFile

6. Per determinare se il comando su sul sistema Linux è compatibile con PAM, digitare:
$ ldd $ (quale su) | grep pam
libpam.so.0 => /lib64/libpam.so.0 (0x00007fac89d48000)
libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fac89b44000)

Se il comando su sul tuo sistema Linux è compatibile con PAM, vedrai il nome di una libreria PAM B
elencato quando si immette il comando ldd.

7. Per determinare se il comando su ha un file di configurazione PAM, digitare:


$ ls /etc/pam.d/su

831

Pagina 872

Appendice B: Risposte agli esercizi

Se il file esiste, digita nella riga di comando per visualizzarne il contenuto. Il PAM con-
i testi che utilizza è uno dei seguenti: autenticazione, account, password, sessione.
$ cat /etc/pam.d/su

8. Per elencare i vari moduli PAM sul tuo sistema Fedora o RHEL, digita:
$ ls /lib/security/pam*.so

Per elencare i vari moduli PAM sul tuo sistema Ubuntu Linux, digita:
$ sudo trova / -name pam * .so .

9. Per trovare il file di configurazione "altro" di PAM sul sistema, digitare ls /etc/pam.d/
altro nella riga di comando. Un "altro" file di configurazione che applica Implicit
Deny dovrebbe essere simile al codice seguente:
$ cat /etc/pam.d/other
#% PAM-1.0
auth ha richiesto pam_deny.so
account richiesto pam_deny.so
password richiesta pam_deny.so
sessione richiesta pam_deny.so

10. Per trovare il file di configurazione dei limiti PAM, digitare:


$ ls /etc/security/limits.conf

Visualizza il contenuto del file digitando quanto segue:


$ cat /etc/security/limits.conf

Le impostazioni in questo file per evitare che un fork bomba sia simile al seguente:
@staff hard nproc 50
@staff hard maxlogins 1

Capitolo 24: Migliorare la sicurezza di Linux con SELinux


1. Per impostare il sistema in modalità permissiva per SELinux, digitare setenforce
permissivo dalla riga di comando. Sarebbe anche accettabile digitare
setenforce 0 nella riga di comando.

2. Per impostare il sistema in modalità operativa di applicazione per SELinux senza cambiare
nel file di configurazione primaria di SELinux, usare cautela. È meglio non eseguirlo
comando sul sistema per un esercizio fino a quando non si è pronti per SELinux
forzata. Utilizzare il seguente comando: setenforce enforcing al comando
linea. Sarebbe anche accettabile digitare setenforce 1 nella riga di comando.
3. Per trovare e visualizzare il tipo di policy SELinux permanente (impostato all'avvio), andare su
file di configurazione principale di SELinux, / etc / selinux / config. Per visualizzarlo, digita cat
/ etc / selinux / config | grep SELINUX = nella riga di comando. Per essere sicuri di come
è attualmente impostato, digita il comando getenforce.

832

Pagina 873

Appendice B: Risposte agli esercizi

4. Per elencare il contesto di sicurezza del file / etc / hosts e identificare la diversa sicurezza
attributi di contesto, digita ls -Z / etc / hosts nella riga di comando:
$ ls -Z / etc / hosts
-rw-r - r--. root root system_u: object_r: net_conf_t: s0 / etc / hosts

un. Il contesto utente del file è system_u, che indica un file di sistema.

b. Il ruolo del file è object_r, che indica un oggetto nel file system (un file di testo,
in questo caso).
c. Il tipo di file è net_conf_t, perché il file è un file di configurazione di rete.

d. Il livello di sensibilità del file è s0, che indica il livello di sicurezza più basso. (Questo numero
ber può essere elencato in un intervallo di numeri da s0 a s3.)

e. Il livello di categoria del file inizia con ac e termina con un numero. Potrebbe essere elencato
in un intervallo di numeri, come c0-c102. Questo non è richiesto se non in altamente
ambienti protetti e non è impostato qui.

5. Per creare un file chiamato test.html e assegnarne il tipo come httpd_sys_content_t,


digitare quanto segue:
$ touch test.html
$ chcon -t httpd_sys_content_t test.html
$ ls -Z test.html
-rw-rw-r--. chris chris unconfined_u: object_r: httpd_sys_content_t: s0
test.html

6. Per elencare il contesto di sicurezza di un processo corrente e identificare i diversi


attributi di testo, digita questo nella riga di comando:
$ ps -efZ | grep crond
system_u: system_r: crond_t: s0-s0: c0.c1023 root 665 1 0
Sep18? 00:00:00 / usr / sbin / crond -n

un. Il contesto utente del processo è system_u, che indica un processo di sistema.

b. Il ruolo del processo è system_r, che indica un ruolo di sistema.

c. Il tipo o il dominio del processo è crond_t.

d. Il livello di sensibilità del processo inizia s0-s0, indicando che non è altamente sensibile
sitivo. (È protetto dai normali standard Linux, tuttavia, perché il processo lo è
eseguito come utente root.)
e. Il livello di categoria del processo è c0.c1023, con c0 che indica che il cat-
egory inoltre non è molto sicuro dal punto di vista di SELinux.

7. Per creare un file /etc/test.txt, modificare il contesto del file in user_tmp_t, ripristinare
al suo contenuto appropriato (il contesto predefinito per la directory / etc) e rimuovi
il file, digita quanto segue: B
# tocca /etc/test.txt
# ls -Z /etc/test.txt
-rw-r - r--. root root unconfined_u: object_r: etc_t: s0 /etc/test.txt

833

Pagina 874
Appendice B: Risposte agli esercizi

# chcon -t user_tmp_t /etc/test.txt


# ls -Z /etc/test.txt
-rw-r - r--. root root unconfined_u: object_r: user_tmp_t: s0 / etc /
test.txt
# restorecon /etc/test.txt
# ls -Z /etc/test.txt
-rw-r - r--. root root unconfined_u: object_r: etc_t: s0 /etc/test.txt
# rm /etc/test.txt
rm: rimuovere il normale file vuoto "/etc/test.txt"? y

8. Per determinare quale booleano consente agli utenti di accedere alle loro directory home tramite FTP
e attiva permanentemente quel booleano, digita i seguenti comandi:
# getsebool -a | grep ftp
ftp_home_dir -> off
ftpd_anon_write -> off
...
# setsebool -P ftp_home_dir = on
# getsebool ftp_home_dir
ftp_home_dir -> on

9. Per elencare tutti i moduli della politica di SELinux sul sistema, insieme al numero di versione
bers, tipo semodule –l.

Se hai scelto ls /etc/selinux/targeted/modules/active/modules/*.pp come risposta a


Domanda 9, va bene, ma questo comando non fornisce i numeri di versione dei moduli della politica. Solo
semodule -l fornisce i numeri di versione.

10. Per preparare il sistema all'esecuzione di un server FTP vsftpd protetto da SELinux,
accedi come un normale (usiamo chris in questo esempio) e prova a copiare un file (che
dovrebbe causare un rifiuto AVC), digitare quanto segue:
# getenforce
Far rispettare
# yum installa vsftpd lftp rsyslog setroubleshoot-server
# systemctl avvia syslog
# systemctl avvia vsftpd
# semodule -DB
# getsebool ftp_home_dir
ftp_home_dir -> off
# lftp -u chris localhost
Password: ********
lftp chris @ localhost: ~> inserisci / etc / services
put: Accesso non riuscito: 553 Impossibile creare il file. (Servizi)
lftp chris @ localhost: ~> esci

834

Pagina 875

Appendice B: Risposte agli esercizi

Per visualizzare le informazioni sul rifiuto e modificare il valore booleano per consentire l'accesso FTP,
eseguire le seguenti operazioni:
# ausearch -m avc
tipo = AVC msg = audit (1411217594.188: 70555): avc: negato {create} per
pid = 25470 comm = "vsftpd" name = "servizi"
scontext = system_u: system_r: ftpd_t: s0-s0: c0.c1023
tcontext = system_u: object_r: user_home_t: s0 tclass = file
# journalctl | grep "SELinux sta impedendo"
20 settembre 08:53:18 fedora20 setroubleshoot: SELinux sta impedendo / usr /
sbin / vsftpd da creare l'accesso sui servizi di file. Per
messaggi completi di SELinux. correre
sealert -l 2ad99cba-13d8-4bb1-8d74-bbfc31b68f8b
# sealert -l 2ad99cba-13d8-4bb1-8d74-bbfc31b68f8b
SELinux impedisce a / usr / sbin / vsftpd di creare l'accesso al file
gshadow.
*** Il plug-in catchall_boolean (47,5 confidenza) suggerisce *********
Se vuoi determinare se ftpd può leggere e scrivere file
nelle home
Quindi devidirectory degli utenti.
dirlo a SELinux abilitando
il valore booleano "ftp_home_dir".
Puoi leggere la pagina man 'user_selinux' per maggiori dettagli.
Esegui setsebool -P ftp_home_dir 1

Capitolo 25: Protezione di Linux su una rete


1. Per installare l'utility Network Mapper (aka nmap) sul tuo sistema Linux locale:

un. Su Fedora o RHEL, digita yum install nmap nella riga di comando.

b. Su Ubuntu, nmap potrebbe essere preinstallato. In caso contrario, digita sudo apt-get
installa nmap dalla riga di comando.

2. Per eseguire una scansione TCP Connect sull'indirizzo di loopback locale, digitare nmap -sT
127.0.0.1 nella riga di comando. Le porte che hai in esecuzione sul tuo server Linux
varierà. Tuttavia, potrebbero essere simili ai seguenti:
# nmap -sT 127.0.0.1
...
SERVIZIO DELLO STATO DI PORTO
25 / tcp aprire smtp
631 / tcp aperto ipp

3. Per eseguire una scansione di connessione UDP sul sistema Linux da un sistema remoto:

un. Determina l'indirizzo IP del tuo server Linux digitando ifconfig al comando
linea. L'output sarà simile al seguente e all'indirizzo IP del sistema B
segue "inet addr:" nell'output del comando ifconfig.

835

Pagina 876

Appendice B: Risposte agli esercizi

# ifconfig
...
p2p1 Link encap: Ethernet HWaddr 08: 00: 27: E5: 89: 5A
inet addr: 10.140.67.23

b. Da un sistema Linux remoto, digita il comando nmap -sU IP address in


riga di comando, utilizzando l' indirizzo IP ottenuto da sopra. Per esempio:
# nmap -sU 10.140.67.23

4. Per verificare se il demone ssh sul sistema Linux utilizza il supporto TCP Wrapper,
digita ldd / usr / sbin / sshd | grep libwrap dalla riga di comando. L'output
sarà simile al seguente se utilizza il supporto per TCP Wrapper. In caso contrario,
non ci sarà output.
$ ldd / usr / sbin / sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x0012f000)

5. Per consentire l'accesso agli strumenti ssh sul sistema Linux da un remoto designato
e negare tutti gli altri accessi utilizzando TCP Wrapper, è necessario modificare sia il file
/etc/hosts.allow e il file /etc/hosts.deny. Le modifiche lo faranno
avere un aspetto simile al seguente:
# cat /etc/hosts.allow
...
sshd: 10.140.67.32
#
# cat /etc/hosts.deny
# ...
TUTTO TUTTO

6. Per determinare le attuali politiche del firewall netfilter / iptables del proprio sistema Linux
e regole, digita iptables -vnL nella riga di comando.

7. Per svuotare le attuali regole del firewall del tuo sistema Linux, digita iptables -F nel menu
linea mand. Per ripristinare le regole del firewall sui vecchi sistemi Fedora o RHEL 6,
digita iptables-restore </ etc / sysconfig / iptables . Su un RHEL 7 o recente
Sistema Fedora, digita systemctl restart firewalld.service per ripristinarlo
le regole del firewall permanente del sistema.

8. Questa è una domanda trabocchetto! Non è possibile impostare il rifiuto della politica del firewall di un sistema Linux.
Puoi impostarlo per eliminare, ma non rifiutare. Per impostare la tabella dei filtri del firewall del tuo sistema Linux
per la catena di input a una politica di DROP, digitare iptables -P INPUT DROP in
riga di comando.

9. Per modificare nuovamente il criterio della tabella dei filtri del firewall del sistema Linux in modo che accetti per
catena di input, digitare iptables -P INPUT ACCEPT nella riga di comando. Per aggiungere un file
regola per eliminare tutti i pacchetti di rete dall'indirizzo IP, 10.140.67.23, digitare iptables
-A INPUT -s 10.140.67.23 -j DROP nella riga di comando.

836

Pagina 877

Appendice B: Risposte agli esercizi

10. Per rimuovere la regola aggiunta sopra, senza svuotare o ripristinare il sistema Linux
le regole del firewall, digitare iptables -D INPUT 1 sulla riga di comando. Questo è
supponendo che la regola aggiunta sopra sia la regola 1. In caso contrario, modifica 1 in
numero di regola priato nel comando iptables.

Capitolo 26: Utilizzo di Linux per il cloud computing


1. Per controllare il tuo computer per vedere se può supportare la virtualizzazione KVM, digita
a seguire:
# cat / proc / cpuinfo | grep --color -E "vmx | svm | lm"
flag: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good
xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor
ds_cpl vmx smx es ...
...
La CPU deve supportare vmx o svm. Il lm indica che si tratta di un 64 bit
computer.

2. Per installare un sistema Linux insieme ai pacchetti necessari per usarlo come host KVM
e per eseguire l'applicazione Virtual Machine Manager, procedi come segue:

un. Ottieni un'immagine live o di installazione da un sito Linux (come getfedora.org),


e masterizzalo su un DVD (o rendilo disponibile per l'installazione).

b. Avvia l'immagine di installazione e seleziona per installarla su un disco rigido.

c. Per una Fedora Workstation, una volta completata l'installazione e riavviato,


installare il seguente pacchetto (per diverse distribuzioni Linux, potrebbe essere necessario
per installare un pacchetto che fornisce anche libvirtd):
# yum installa virt-manager libvirt-daemon-config-network

3. Per assicurarti che i servizi sshd e libvirtd siano in esecuzione sul sistema,
digitare quanto segue:
# systemctl avvia sshd.service
# systemctl abilita sshd.service
# systemctl avvia libvirtd.service
# systemctl abilita libvirtd.service

4. Procurati un'immagine ISO di installazione di Linux compatibile con il tuo hypervisor e


copiarlo nella directory predefinita utilizzata da Virtual Machine Manager per memorizzare le immagini.
Ad esempio, se il DVD Fedora Workstation si trova nella directory corrente, puoi farlo
digitare quanto segue:
B
# cp Fedora-Live-Workstation-x86_64-21-5.iso / var / lib / libvirt / images /

837

Pagina 878

Appendice B: Risposte agli esercizi


5. Per controllare le impostazioni sul bridge di rete predefinito (virbr0), digitare quanto segue:
# spettacolo brctl
nome bridge ID bridge Interfacce abilitate per STP virbr0
8000.000000000000 sì
# ip addr mostra virbr0
4: virbr0: <NO-CARRIER, BROADCAST, MULTICAST, UP> mtu 1500 qdisc
noqueue state UP gruppo predefinito
link / etere de: 21: 23: 0e: 2b: c1 brd ff: ff: ff: ff: ff: ff
inet 192.168.122.1/24 brd 192.168.122.255 scope globale virbr0
valid_lft per sempre preferito_lft per sempre

6. Per installare una macchina virtuale utilizzando l'immagine ISO copiata in precedenza, eseguire il
a seguire.

un. Digita questo comando:


# virt-manager &

b. Seleziona File, quindi seleziona Nuova macchina virtuale.

c. Seleziona Supporto di installazione locale e fai clic su Avanti.

d. Seleziona Sfoglia, scegli l'ISO live o installa, fai clic su Scegli volume e fai clic su
Inoltrare.

e. Seleziona memoria e CPU e fai clic su Avanti.

f. Seleziona la dimensione del disco che desideri utilizzare e fai clic su Avanti.

g. Seleziona "Rete virtuale predefinita: NAT" (potrebbe essere già selezionato).

h. Se tutto sembra a posto, fai clic su Fine.

io. Seguire il processo di installazione indicato dall'ISO di installazione.

7. Per assicurarti di poter accedere e utilizzare la macchina virtuale, procedi come segue:

un. Fare doppio clic sulla voce per la nuova macchina virtuale.

b. Quando viene visualizzata la finestra del visualizzatore, accedi come faresti normalmente.

8. Per verificare che la tua macchina virtuale possa connettersi a Internet o ad un'altra rete
fuori dall'hypervisor, eseguire una delle seguenti operazioni:
■ Aprire un browser Web e provare a connettersi a un sito Web su Internet.

■ Aprire una finestra di Terminale, digitare ping redh at.com, quindi premere Ctrl + C per
Uscita.
9. Arrestare la macchina virtuale in modo che non sia più in esecuzione.

un. Fare clic con il tasto destro del mouse sulla voce per la VM nella finestra virt-manager.

b. Seleziona Chiudi sessione, quindi seleziona di nuovo Arresta il sistema.

c. Se la VM non si spegne immediatamente, puoi invece selezionare Force Off, ma


è come staccare la spina e rischia la perdita di dati.

10. Avviare nuovamente la macchina virtuale in modo che sia in esecuzione e disponibile.
Fare clic con il pulsante destro del mouse sulla voce della macchina virtuale e selezionare Esegui.

838

Pagina 879

Indice
! (punto esclamativo), 80, 155, 160, 267, 495 Rifiuti di Access Vector Cache (AVC), 670, 673, 689-692, 694,
"(virgolette doppie), 155, 160, 262, 266 697, 834
# (segno cancelletto), 67 account PAM context, 651
$ (simbolo del dollaro), 67, 79, 85, 89, 155, 156 ACL (elenchi di controllo degli accessi), 271–276
$ # variabile, 156–157 acpi = opzione off boot, 217
Notazione $ (()), 159 rapporti di attività, 323
$ @ variabile, 156 Advanced Encryption Standard (AES), 630, 631, 645
Variabile $ 0, 156 Advanced Intrusion Detection Environment (aiutante), 620–622
% (percentuale), 145 AES (Advanced Encryption Standard), 630, 631, 645
& (e commerciale), 82, 83-84, 144, 162 aescrypt, 645
(backtick), 39, 84, 155 filesystem affs, 303
'(virgolette singole), 155 aiutante, 620–622
((parentesi sinistra), 82, 155 Progetto AIGLX (Accelerated Indirect GLX), 58-60
> (segno maggiore di), 82, 103 comando alias, 75, 87
<(meno del segno), 82, 103 alias
) (parentesi destra), 82, 155 alias di comando, 75, 87
* (asterisco), 108, 128, 155, 163, 263, 288, 534, 571 Indirizzi IP, 356–357
+ (segno più), 107, 111, 112, 129, 138, 145, 272, 292, 521 file alias, 186
- (trattino), 71-72, 106, 129, 130, 165, 757 elenco di tutti gli utenti, 107, 132
- (segno meno), 111, 145 Tasti Alt + SysRq, 585
- (doppio trattino), 71-72 amanda utility, 593
/ (barra in avanti), 94, 97, 99, 100, 124, 533 Amazon EC2, 765-766
\! carattere speciale, 90 installatore anaconda, 17, 212, 213, 216, 219, 275
\ # carattere speciale, 90 Ansible, 344
\ $ carattere speciale, 90 accesso amministrativo apache, 190
\ [carattere speciale, 90 Apache Software Foundation (ASF), 450
\] carattere speciale, 90 Server web Apache, 449
; (punto e virgola), 82, 83, 132, 444, 516, 517, 659 file di configurazione, 457–462
= (segno di uguale), 71-72 installazione, 450–454
? (punto interrogativo), 103, 124, 128, 534 pubblicazione di contenuti web, 464–465
[] (parentesi), 89, 103, 124, 243, 337, 418 fissaggio, 455–457
\ (barra rovesciata), 90, 108, 115, 132, 155, 515 SSL / TLS, 465–471
\ carattere speciale, 90 partenza, 454–455
^ (accento circonflesso), 165 risoluzione dei problemi, 471–475
{} (parentesi graffe), 105, 131-132, 157 host virtuali, aggiunta, 462–464
| (tubo), 8, 82–83, 103, 139, 162, 166 file apache2.conf, 457
~ (tilde), 79, 101, 108, 119 Mela
3DES, 631 OS X contro Linux, 6
stampanti, 427, 433
lanciatori di applicazioni, 55–56
UN Estensione del menu Applicazioni, 42–43
percorso assoluto, 100 Connessioni appSocket, 427, 433
Progetto Accelerated Indirect GLX (AIGLX), 58-60 ARC4, 631
Elenchi di controllo degli accessi (ACL), 271–276 ArcFour, 631

839

Pagina 880

Indice

argomenti, 71-74 File .bashrc, 91–92


Aroha, Ryan Sawhill, 647 bash shell, 65-66. Vedi anche shell
tasti freccia completamento della riga di comando, 79–80
Desktop 3D AIGLX, 59, 60 modifica dalla riga di comando, 77–79
cronologia dei comandi, 81 file di configurazione, 88–89
modifica dalla riga di comando, 77, 78 variabili d'ambiente, 85–88, 88–89
Desktop GNOME 3, 39, 40 metacaratteri corrispondenti ai file, 102–103
GRUB Legacy, 226 metacaratteri di reindirizzamento file, 103–104
vi editor di testo, 120 comandi di localizzazione, 74–76
ASF (Apache Software Foundation), 450 spostare i programmi tra lo sfondo e il primo piano,
cenere, 65 144
crittografia a chiave asimmetrica, 466, 633–637 espansione dei parametri, 157–158
AT&T Bell Laboratories, 7–10 prompt, setting, 89–91
Estrattore di CD audio, 195 comandi in esecuzione, 70–73
log di audit, SELinux, 612–614, 690 shell history, 76–77, 80–82
file audit.log, 689–690 variabili non tipizzate, 158–159
comando audit2allow, 674, 687, 695 Variabile d'ambiente BASH_VERSION, 86
comando audit2why, 687 file bashrc, 88, 89, 186
auditd, 612–614, 625, 689–690, 692, 829 bc command, 158–159
auditing di sistemi Linux, 622–624 bcrypt, 645
servizi di rete di controllo, 699–710 file system befs, 302
auditing di annunci pubblicitari, 704–708 Bell Laboratories, 7–10
controllo dell'accesso, 708–710 Modello di sicurezza dell'accesso obbligatorio Bell-LaPadula, 672
valutazione dell'accesso, 701-704 Berkeley Software Distribution. Vedi BSD
comando aureport, 690 Berkeley Software Distribution License, 15-16
comando ausearch, 612–613, 614, 690, 835 bin accesso amministrativo, 190
contesto PAM auth, 651 directory / bin, 98
comando authconfig, 279, 655–657, 660, 665 comandi amministrativi, 183
authconfig-gtk, 176 comandi utente, 74–75
Finestra Configurazione autenticazione, 279–281 bind pacchetto, 317
Autenticazione, strumento di amministrazione grafico, 176 BIOS, 225–226, 554–557, 779
struttura autofs, 545-548 comando blkid, 306
login amministrativo avahi, 190 cifrari a blocchi, 628, 630, 631
Rifiuti AVC (Access Vector Cache), 670, 673, 689-692, 694, dispositivi di blocco, 110
697, 834 Blowfish, 630, 645
Bluetooth, 42
Booleani, gestione SELinux tramite, 688–689
B / directory di avvio, 98, 223
Società “Baby Bell”, 9 /boot/grub/grub.conf, 226–229
comandi in background, 83–84 /boot/grub2/grub.cfg, 230–231
processi in background, 139 Registro di avvio, 609
uccisione, 146-148 file boot.log, 189, 609
elenco, 138–143 avvio
riferendosi a, 145–146 opzioni di avvio, 216–219
renicing, 148-149 avvio doppio, 216–219
partenza, 144–145 Boot loader GRUB, 224–231
BackTrack, 623 risoluzione dei problemi, 551–568
script della shell di backup, 168 da unità USB, 799–780
comando basename, 95 caratteri di espansione delle parentesi graffe, 105
Variabile d'ambiente BASH, 86 Brasero, 195
File .bash_history, 82 strumenti di gestione grafica basati su browser, 177
/.bash_logout file, 89 BSD (Berkeley Software Distribution)
/.bash_profile file, 88 Querela AT&T, 13
File /.bashrc, 89 origine di, 9-10
840

Pagina 881

Indice

btmp file, 610 OpenStack, 5, 18, 177, 211, 731, 732, 750, 752, 760–765
filesystem btrfs, 302 Distribuzione di OpenStack, 760–765
comandi incorporati, 75 piattaforme, 732
fornitura di archiviazione in rete, 738–740
RHELOSP (Red Hat Enterprise Linux OpenStack
C Piattaforma), 177
Sezione della pagina man di C Library Functions, 93 installazione, 734–747
Linguaggio di programmazione C, 9 deposito, 731
Guscio C, 65, 69, 70 struttura cloud-init, 751–753, 757–760
Caesar Cipher, 630 file cloud.cfg, 754
comando case, 162–163 Cloudforms, 187, 751
Astuccio . . . esac, 163 raggruppamento, 5
CAST5, 631, 647 cnegus-test-project, 761
ccrypt, 645 comandi
comando cd, 100–102 amministrativo, 182–183
CDP (Clean Desk Policy), 592 alias, 75, 87
account utente centralizzati, 278–281 argomenti, 71-74
Ceph, 5, 731 risultati aritmetici, superamento, 84-85
CERT (Computer Emergency Readiness Team), 623 comandi in background, 83–84
certificati, SSL, 280, 465–471 da incasso, 75
cgroups, 149–151 completamento della riga di comando, 79–80
comando chage, 76, 594–595, 600–601, 603 modifica dalla riga di comando, 77–79
catene, netfilter / iptables firewall, 714–715 scoperta, 74-76
dispositivi di carattere, 110 ottenere informazioni su, 92–94
comando chcat, 685 elenco della storia, 75, 76–77, 80–82
comando chcon, 465, 685, 816, 833, 834 pagine man, 70, 93–94
checkmodule, 687 opzioni, 71–74
checkpolicy, 687 tubazioni tra 82 e 83
checksum, 628 relativi alla stampa, 439–441
Chef, 344, 732 ricordando, 76–82
chkconfig --list sshd comando, 325 in esecuzione, 70-76
chkconfig sshd a comando, 325 comandi sequenziali, 83
chkrootkit, 619–620 prompt della shell, 67
comando chmod, 100, 101–102, 104, 111–112, 168, 273, 276 sostituzione, 84
accesso amministrativo chrony, 190 sintassi, 71–73
filesystem cifs, 302 amministrazione del sistema, 182–183
testo cifrato. Vedi anche decrittazione; crittografia Sistema di stampa UNIX comune.Vedi CUPS
hashing, 628–630 Vulnerabilità ed esposizioni comuni (CVE), 607
ClamAV, 618 Window manager di Compiz, 50, 51, 58
attributo del livello di classificazione, SELinux, 673 revisioni di conformità, 623
Politica Clean Desk (CDP), 592 nodi di calcolo, 730
Errore "Client negato dalla configurazione del server", 474 Computer Emergency Readiness Team (CERT), 623
cloud computing, 729–748, 749–767 Editor di configurazione, 176
Distribuzione di Amazon EC2, 765-766 errori di configurazione, 472–474
autenticazione, 731 file di configurazione
cgroups, 149–151 amministrativo, 183–188
controller cloud, 730–731 Server web Apache, 457–462
tipi di nuvole, 75–751 bash shell, 88-89
installazioni Linux basate su cloud, 211 networking, 362–367
creazione di immagini Linux, 751–760 contesti, PAM, 650–651
creazione di macchine virtuali, 740–744 flag di controllo, PAM, 651–652
distribuzione, 732 gruppi di controllo, 149–151
esercizi, 747–748, 837–838 comando cp, 114
hypervisor, 730, 735–738 utilità cpio, 593

841

Pagina 882

Indice

utilità cracklib, 598 decrittazione, 628


Cron Log, 609 chiavi crittografiche, 631–637
file crontab, 186, 571 cifrari crittografici, 630-631
pacchetto crypto-utils, 452 firme digitali, 637–639
crittografia, 627-648 fallimenti di dipendenza, 569-571
crittografia / decrittografia DES (Data Encryption Standard), 466, 631
chiavi di cifratura, 631–637 directory / dev, 98
cifrari, 630 Sezione della pagina man Dispositivi e file speciali, 93
firme digitali, 637–639 comando df, 341–342
esercizi, 668, 830–832 Server DHCP, 207, 210, 348, 349, 355, 363–364, 372, 576
hashing, 628–630 Algoritmo di firma digitale (DSA), 638
comando cryptsetup, 641–642 firme digitali, 637–639
file crypttab, 562, 640–641 direttive, server web Apache, 457–460
csh, 65, 69, 70 directory
csh.cshrc, 186 percorso assoluto, 100
COPPE, 423–446. Vedi anche stampanti; stampa aggiunta di corrente a PATH, 91
aggiunta di stampanti, 425–426 assegnazione di partizioni, 223–224
stampa dalla riga di comando, 439–441 cambiando, 100–102
configurazione del server CUPS, 436–437 cambiare i permessi, 101–102, 104, 111–112, 168, 273, 276
configurazione dei server di stampa, 441–443 creazione, 100, 101, 109, 162
caratteristiche, 423–425 crittografia, 642-645
configurazione manuale, 438–439 Directory GID, 276–278
Finestra Impostazioni di stampa, 428–435 elenco, 105–108
avvio del server CUPS, 437–438 Direttiva DirectoryIndex, 459
amministrazione basata sul web, 426–428 Errore "Indice di directory vietato dalla regola", 475
pacchetto di tazze, 317 Modalità disabilitata, SELinux, 673–674, 680–682
File cupsd.conf, 436–437 ripristino di emergenza, 592–593
percorsi personalizzati, 370–371 Controlli di accesso discrezionale (DAC), 669–670
comando di taglio, 165 archiviazione su disco, 283–284
CVE (Common Vulnerabilities and Exposures), 607 Analizzatore utilizzo disco, 176
Utility Disco, 177
distribuzioni, 16-20. Vedi anche distribuzioni specifiche
D comando dmesg, 191, 192–183, 203
d carattere speciale, 90 dmesg, 609, 610
DAC (Discretionary Access Controls), 669–670 Server DNS
processi daemon, 4–5 /etc/resolv.conf, 366–367
cgroups e, 149-150 configurazione di Linux come, 372–373
controllo dei file di configurazione, 183 risoluzione del nome host, 576–577
directory / etc / httpd, 184 comunicazione hypervisor-sistema di archiviazione, 738
Directory /etc/xinetd.d, 185–186 configurazione dell'interfaccia, 355–358
numeri di porta e, 320 File named.conf, 187
File rsyslog.conf, 187 query, controllo, 367
in esecuzione con accessi amministrativi separati, 190 Esame RHCE, 25-26
directory / sbin, 99 comando dnsdomainname, 355
Udev e, 194 Domain Name System, strumento di amministrazione grafico, 176
directory / usr / sbin, 182 Pacchetto dovecot, 317
xinetd.conf, 188 Registro di dpkg, 609
Maledetto piccolo Linux, 202 File dpkg.log, 609
trattino, 65, 69 DSA (algoritmo di firma digitale), 638
Data Encryption Standard (DES), 466, 631 du command, 342–343
Data e ora, strumento di amministrazione grafico, 176 avvio doppio, 214–215
comando data --help, 73 terminali stupidi, 144
comando data, 70, 72-73 dump utility, 291, 305, 307, 593, 606, 610
Imballaggio DEB, 236-238 Duplicità, 646

842

Pagina 883

Indice

/ etc / file hostname, 186, 365


E / etc / hosts file, 79, 186, 365–366, 738
comando eco, 79–80, 85, 92 /etc/hosts.allow file, 186, 322
El Gamal, 631 /etc/hosts.d file, 186
OS elementare, 19 /etc/hosts.deny file, 186, 322
dichiarazioni elif, 160 directory / etc / httpd, 184
Criptosistemi a curva ellittica, 631 directory /etc/httpd/conf.d, 452
comando emacs, 118 /etc/httpd/conf.d/ssl.conf file, 467
comando encryptfs, 642–645 Directory /etc/init.d, 184–185
crittografia, 628 / etc / inittab file, 187, 382–386, 389–391, 398–399,
chiavi crittografiche, 631–637 412–413
cifrari crittografici, 630-631 /etc/logrotate.d/httpd file, 451
firme digitali, 637–639 /etc/logrotate.d/samba file, 502
directory, 642–645 /etc/logrotate.d/vsftpd file, 480
file, 645 directory / etc / mail, 185
filesystem, 640–642 / etc / mtab file, 187
dal desktop GNOME, 646–647 File /etc/mtools.conf, 187
con pirite, 647-648 /etc/named.conf file, 187, 373
SSL / TLS, 465–471 File /etc/nfsmount.conf, 545
Modalità di applicazione, SELinux, 674, 680–682 /etc/nsswitch.conf, 187, 366–367
ambienti aziendali File /etc/ntp.conf, 187
Installazione di Linux, 211–213 /etc/pam.d file, 650
configurazione di rete, 371–373 /etc/pam.d.vsftpd file, 480
Gestione dei pacchetti RPM, 256–257 /etc/pam.d/common-auth file, 660
Samba, 525 /etc/pam.d/other file, 655
amministrazione del server, 344 /etc/pam.d/passwd file, 661
gestione account utente / gruppo, 270–278 /etc/pam.d/su file, 664
comando env, 85 /etc/pam.d/system-auth file, 659, 661–663, 666
variabili ambientali / etc / passwd file, 69, 71, 82, 187, 264, 269, 278, 279, 280,
bash shell, 88-89 601–603
in espansione, 85 directory / etc / pcmcia, 185
errata, 607 /etc/pki/tls/private/localhost.key file, 468
ErrorDocument direction, 459 /etc/pki/tsl/cert/localhost.crt file, 468
esac, 163 directory / etc / postfix, 185
sfuggire ai personaggi della shell, 155 directory / etc / ppp, 185
directory / etc, 98, 184, 186–188 / etc / printcap file, 187
/ etc / aliases, 186 / etc / profile file, 88, 89, 187
File /etc/apache2/apache2.conf, 457 / etc / protocols file, 187
/ etc / bashrc file, 88, 89, 186 directory /etc/rc.d//rc#.d, 384
File /etc/cloud/cloud.cfg, 754 directory /etc/rc.d/rc5.d, 384
directory / etc / cron, 184 directory /etc/rc?.d, 185
/ etc / crontab file, 186 /etc/resolv.conf, 349, 364, 366
/ etc / crypttab file, 562, 641–642 / etc / rpc file, 187
/etc/csh.cshrc, 186 File /etc/rsyslog.conf, 187, 335–336
Directory / etc / cups, 184, 424 directory / etc / samba, 502
/etc/cups/cupsd.conf, 436–437 File /etc/samba/smb.conf, 444, 511, 516–521
/etc/cups/mime.types file, 439 / etc / samba / smbusers, 502
/etc/cups/printers.conf file, 435, 438–439, 442–443 directory / etc / security, 185
/ etc / directory predefinita, 184 File /etc/security/limits.conf, 657–658, 832
/ etc / export file, 186, 528, 529, 531, 532–535 /etc/security/time.conf, 659–660
/ etc / fstab file, 186, 274, 275, 276, 305–306 / etc / selinux / config, 679–680
/ etc / group file, 186 / etc / services file, 187, 699–700
/ etc / gshadow file, 186 / etc / shadow file, 187, 628
File /etc/host.conf, 186 / etc / shells file, 187

843

Pagina 884

Indice

directory / etc / skel, 185 esporta il file 186, 528, 529, 531, 532–535
/ etc / sudoers file, 187 comando expr, 158–159
directory / etc / sysconfig, 185 filesystem ext, 302
/ etc / sysconfig / file di rete, 365 filesystem ext2, 302
Directory / etc / sysconfig / network-scripts, 363, 365 filesystem ext3, 302
/ etc / sysconfig / rhn / up2date, 242 filesystem ext4, 302
/ etc / sysconfig / samba, 502, 503 Runlevel in modalità multiutente estesa, 382
/etc/sysct1.conf file, 25
directory / etc / systemd, 185
/ etc / systemd / directory di sistema, 420 F
/ etc / termcap file, 188 Facebook, stack LAMP, 3
/etc/tmpfiles.d/httpd.conf file, 451 falsi positivi, 619
/ etc / ttytab file, 381 comando fc, 81–82
/ etc / vsftpd / chroot_list file, 489 Variabile d'ambiente FCEDIT, 86
/ etc / vsftpd / ftpusers file, 481, 489 Dispositivi FCoE (Fibre Channel over Ethernet), 220
/ etc / vsftpd / file_elenco_utente, 481, 489 Comando fdisk, 222–223, 286–288, 289, 290, 292, 296, 557,
/etc/vsftpd/vsftpd.conf file, 480, 488 802–803
directory / etc / X11, 188 Fedora
/etc/X11/xorg.conf file, 60 comando ls con alias, 105
Directory /etc/xinetd.d, 185–186 script di backup, 168
/ etc / xinetd / conf file, 188 script della shell di backup, 168
/etc/yum.conf file, 242 avvio da unità USB, 779
File /etc/yum.repos.d/*.repo, 243 download, 772–774
Collegamento del canale Ethernet, 368–370 Terminale GNOME, 68
Variabile d'ambiente EUID, 86 installazione da live media, 203–207
eseguire bit, 106, 107, 110, 111, 129, 276–278 editor di testo mcedit, 118
esercizi e risposte Finestra Configurazione server NFS, 531–532
Server web Apache, 475–476, 815–818 contro RHEL, 18
sicurezza di base, 624–625, 829–830 pacchetti server, 316–318
cloud computing, 747–748, 837–838 comando sudo, 174
crittografia, 668, 830–832 system-config- * tools, 175–177
filesystem, 115–116, 786–787 emulatori di terminale, 68
Server FTP, 497, 818–821 comando updatedb, 125
GNOME, 61, 781–783 console virtuali, commutazione tra, 69
Installazione Linux, 231–232, 795–797 Fedora Security Spin, 623
sicurezza di rete, 724–725, 835–837 Dispositivi Fibre Channel over Ethernet (FCoE), 220
networking, 374–375, 807–810 Sezione della pagina man Formati e convenzioni dei file, 93
Server NFS, 550, 824–826 Errore "Autorizzazioni file impediscono l'accesso", 474
PAM, 668, 830–832 reindirizzamento file, 8, 103–104
stampa, 446–447, 813–815 condivisione di file. Vedi Samba
processi, 151–152, 789–790 metacaratteri corrispondenti ai file, 102–103
Pacchetti RPM, 258, 797–798 File
Server Samba, 526, 822–824 copia, 329-332
SELinux, 696–697, 832–835 crittografia, 645
amministrazione del server, 345–346, 805–807 scoperta, 125-133
shell, 95, 784–786 trova comando, 127-132
script di shell, 169, 790–793 comando grep, 132–133
servizi di avviamento / arresto, 422, 810–813 comando Locate, 125–126
amministrazione del sistema, 199-200, 793-795 integrità, garanzia, 639–640
file di testo, 134–135, 787–789 elenco, 105–108
risoluzione dei problemi Linux, 587–588, 826–829 contesto di sicurezza, SELinux, 683, 684–685
account utente e di gruppo, 281–282, 798–802 filesystem, 97–116
pacchetto exim, 317 comandi di base, 100–102
comando di uscita, 69, 75, 81, 87, 88 copia di file, 114

844
Pagina 885

Indice

creazione, 310–311 File fstab, 186, 305-306


gerarchia delle directory, 97–99 Client FTP, 492–496
esercizi, 115–116, 311–312, 786–787, 802–804 Registro FTP, 609
integrità, garanzia, 640–642 Server FTP, 477–497
elenco di file / directory, 105–109 consentendo il caricamento, 489–491
metacaratteri, 102-105 configurazione, 488–492
monitoraggio, 615–622 esercizi, 497, 818–821
montaggio, 301–310 Client FTP, 492–496
spostamento di file, 114 installazione, 479–480
permessi, 109–113, 603–604 fissaggio, 483–488
rimozione di file, 114–115 partenza, 480–483
scansioni, 616–618 accesso utente, 488–489
fissaggio, 603-606 Registro trasferimenti FTP, 609
smontaggio, 309
tabella dei filtri, iptables, 713
trova comando, 127-132, 343 G
trovare Sezione della pagina di manuale dei giochi, 94
comandi, 74–76 gconf-editor, 52, 176
File editor di testo gedit, 117, 118, 152, 181, 328–329
trova comando, 127-132 parser di espressioni regolari generali. Vedi comando grep
comando grep, 132–133 Distribuzione Gentoo, 16
comando Locate, 125–126 bin login, 190
pacchetti, 246–247 editor di testo nano, 118
impronte digitali, 628 aggiornamenti in corso, 214
Firefox, accesso al server FTP, 493 pacchetto software, 236
applicazione firestarter, 711 comando getenforce, 486, 539, 680, 697, 834
Firewall, strumento di amministrazione grafico, 176 getent command, 280
servizio firewalld, 316, 712–713 comando getfacl, 271
firewall, 710–724 comando getsebool, 509, 688, 697, 834, 689694
categorie, 710–711 filesystem gfs2, 303
servizio firewalld, 316, 321, 712–713 client gFTP, 495–496
iptables utility, 316, 713–724 Gibson Research Corporation, 624
apertura per FTP, 483–486 Directory GID, 276–278
apertura per NFS, 537-538 Identificatori univoci globali (GUID), 286
Esame RHCE, 26 GlusterFS, 5
Configurazione di Samba, 507–508 Desktop GNOME 2, 49–60
dispositivi RAID firmware, 220 Gestore delle finestre di Metacity, 50–52
comando firstboot, 210 pannelli, 50, 53–57
Database della "prima immagine", 620–622 Monitor di sistema, 142–143
comando fixfiles, 685 Desktop GNOME 3, 33–49
pacchetto foomatic, 317 casella di comando, 40
per. . . fare loop, 163–164 Immagine live desktop Fedora GNOME, 32–33
processi in primo piano, 137–152 installazione del software, 46–48
uccisione, 146-148 File manager Nautilus, 45–46, 47, 50, 195–196, 522–523
limitando con cgroups, 149-151 navigazione con la tastiera, 38–41
elenco, 138–143 navigazione con il mouse, 34–38
gestione, 144-146 Lettore musicale Rhythmbox, 48–49, 195, 196
renicing, 148-149 estensioni della shell, 42–45
bombe a forcella, 657 installazione, 41–42
FOSS (software gratuito e open source), 12 arresto, 49
software gratuito, 12 Monitor di sistema, 142–143
Directory del software libero, 12 Menu Finestra, 37
Free Software Foundation (FSF), 11-12, 26 Log di GNOME Display Manager, 609
FreeBSD, 13, 225 Terminale GNOME, 68

845

Pagina 886

Indice

Strumento di modifica di GNOME, 44–45 comando di aiuto, 92–93


gnome-disks, 177 qui documenti, 104
gnome-system-monitor, 142–143 qui testo, 104
gnome-terminal, 68 Autenticazione di Esiodo, 176
gnome-utils, 176 Variabile d'ambiente HISTCMD, 86
Progetto GNU Hurd, 12 Variabile d'ambiente HISTFILE, 82, 86
GNU Lesser General Public License (LGPL), 15 Variabile d'ambiente HISTFILESIZE, 86
Progetto GNU, 11-12, 14 comando storico, 75, 76–77, 80–81, 80–82
Licenza pubblica GNU (GPL), 12, 14, 15, 27 storia di Linux, 6–16
pacchetto gnupg2, 632 Directory $ HOME, 184
Google Cloud Platform, 732 / home directory, 97, 98, 224
gpg, 645 Variabile d'ambiente HOME, 86, 108–109, 155
demone gpg-agent, 632 firewall basati su host, 711
gpg-zip, 646 file host.conf, 186
gpg2, 632–637, 632–639, 830–831 comando hostname, 70–71
gpgcheck, 242 file nome host, 186
gpgcheck, 242 file hosts, 79, 186
gpgkey, 243 file hosts.allow, 186
GPL (GNU Public License), 12, 14, 15, 27 file hosts.deny, 186
GRand Unified Bootloader (GRUB), 224–231 Variabile d'ambiente HOSTTYPE, 86
opzione di avvio grafico, 217 Connessioni HP JetDirect, 427, 433
Runlevel in modalità grafica, 382 filesystem hpfs, 303
strumenti di amministrazione grafica del sistema, 175–177 pacchetto hpijs, 317
comando grep, 69, 84, 132–133, 165 HTTP, strumento di amministrazione grafico, 176
conti di gruppo, 269-270 pacchetto httpd, 184, 254–255, 317, 318, 449, 450–453
creazione, 270 Pacchetto httpd-manual, 317, 452
esercizi, 281–282, 798–802 Progetto Hurd, 12
dirigere nell'impresa, 270-278 cloud ibrido, 751
associazione di processo, 137, 268-270 RHELOSP, 177
file di gruppo, 186 hypervisor, 730
comando groupadd, 270 configurazione, 735–738
comando groupmod, 270 creazione di macchine virtuali, 740–744
GRUB (GRand Unified Bootloader), 224–231 gestione di macchine virtuali, 744–745
GRUB 2, 229–231 migrazione di macchine virtuali, 745–747
GRUB Legacy, 225–229 fornitura di archiviazione in rete, 738–740
grub.cfg, 230–231
file grub.conf, 226–229
File gshadow, 186 io
Partizioni GUID (Global Unique Identifiers), 286 comando id, 73
IDEA, 631
processo di identificazione e autenticazione, 648
H Software IDS (Intrusion Detection System), 620–622
h carattere speciale, 90 Se . . . dichiarazioni elif, 160
Hadoop, 450 Se . . . poi dichiarazioni, 159–162
HAL (Hardware Abstraction Layer), 194 comando ifconfig, 353
Arresto runlevel, 382 includere flag di controllo, PAM, 652
dischi rigidi comando info, 93
partizionamento, 285–295 sistemi di inizializzazione
panoramica sull'archiviazione, 283–284 vantaggi, 377
hardware systemd, 378–386
opzioni di avvio per la disabilitazione, 217 aggiunta di nuovi servizi, 419–422
requisiti, 202–203 retrocompatibilità con SysVinit, 397–99
password con hash, 601–603 nozioni di base, 392–397
hashing, 628–630 servizi di controllo per, 402–403

846

Pagina 887

Indice

configurazione della destinazione predefinita, 413–414 iptables, 316, 321, 578–579, 713–724, 816, 819–820,
configurazione di servizi persistenti, 410–412 823–825, 836
avvio / arresto, 406–408 Server web Apache, 455–456
SysVinit, 378–386 catene, 714–715
aggiunta di servizi, 414–417 Server FTP, 483–486
servizi di controllo per, 400–401 Server NFS, 536–538
configurazione di servizi persistenti, 408–409 politiche, 715, 717–722
runlevel predefinito, 412–413 regole, 715, 717–722
disabilitazione dei servizi, 409 Server Samba, 507–508
avvio e arresto dei servizi, 403–404 salvataggio della configurazione, 722–724
compatibilità con le versioni precedenti di systemd, 397–399 proteggere Apache, 455–456
Compatibilità con le versioni precedenti di Upstart, 388–392 tabelle, 713–714
Upstart, 554 obiettivi, 715
aggiunta di nuovi servizi, 417–419 Immagini ISO, 628, 771–779
retrocompatibilità con SysVinit, 388–392 filesystem iso9660, 302
servizi di controllo per, 401–402
configurazione del runlevel predefinito, 413
configurazione di servizi persistenti, 409–410 J
servizi di avviamento / arresto, 405 JBoss, 18
inittab file, 187, 382–386, 389–391, 398–399, editor di testo jed, 118
412–413 file system jfs, 303
installazione joe text editor, 118
Server web Apache, 450–454 John the Ripper, 614–615
Server FTP, 479–480 comando journalctl, 188–189, 192, 200, 317, 334,
Linux, 201–232 608, 610–611
installatore anaconda, 17, 212, 213, 216, 219, 275
opzioni di avvio, 216–219
installazioni basate su cloud, 211 K
avvio doppio, 214–215 Guscio K, 65, 69, 70
ambienti aziendali, 211–213 K3b, 777–778
da Live media, 203–207 file system kafs, 302
Boot loader GRUB, 224–231 Kali Linux, 19
requisiti hardware, 202–203 editor di testo kate, 118
partizionamento di dischi rigidi, 220–224 editor di testo kedit, 118
DVD di installazione RHEL, 208–210 Registro del kernel, 609
deposito specializzato, 219–220 Macchina virtuale basata su kernel.Vedi KVM
procedure di aggiornamento, 213–214 Kernighan, Brian, 9
virtualizzazione, 216 coppie di chiavi, 633–637
Server NFS, 529–530 portachiavi, 633–637, 639, 668, 831
Pacchetti RPM, 239–240, 253 autenticazione basata su chiave, 332–334
Samba, 500–502 Kickstart, 177
server, 316–318 file kickstart, 177, 212, 213, 216, 218–219, 257
aritmetica dei numeri interi, 158–159 comando killall, 146-148, 152
copia interattiva, 332 processi di uccisione, 146-148
Protocollo di stampa Internet (IPP), 424, 427, 432–433 Distribuzione KNOPPIX, 16, 32, 214, 237
Software Intrusion Detection System (IDS), 620–622 pacchetto krb5-server, 317
Software di prevenzione delle intrusioni, 620 ksh, 65, 69, 70
comando ip addr show, 352 KVM (Kernel Virtualization Module), 730, 733, 735–738
Indirizzi IP, 348–349. Vedi anche l' utilità iptables
Collegamento del canale Ethernet, 368–370
impostazione degli alias, 356–357 L
impostazione manuale, 355–356 Stack LAMPADA, 3
stabilire percorsi, 357–358 Lingua, strumento di amministrazione grafico, 176
IPP (Internet Printing Protocol), 424, 427, 432–433 Last.fm, 49

847

Pagina 888

Indice

comando lastlog, 610 per. . . fare, 163–164


file lastlog, 609, 610 fino a . . . fare, 164
Registro LastLog, 609 mentre . . . fare, 164
LDAP (Lightweight Directory Access Protocol), 279–281, login amministrativo lp, 190
317, 452, 547 comando lpc, 440–441
Stampanti LDP / LPR, 433–434 Comando lpr, 435, 440
meno comando, 77 Comando lprm, 441
Lesser General Public License (LGPL), 15 Comando ls, 71–72, 102–103, 105–108, 105–109
lascia il comando, 158–159 comando lscpu, 194
attributo level, contesto di sicurezza SELinux, 675–677 Comando lsmod, 197–198
comando lftp, 493–495 comando lspci, 193
LGPL (GNU Lesser General Public License), 15 comando lsusb, 193–194
directory / lib, 98 LUKS (Linux Unified Key Setup), 640
/ lib / systemd / directory di sistema, 420 comando lvdisplay, 299
libpam.so, 648 LVM (gestione del volume logico), 295-301
libvirtd, 733, 735–738 comando lvs, 641–642
licenze, open source, 15-16, 27. Vedi anche GPL LXDE (ambiente desktop X11 leggero), 14, 29, 31,
File limits.conf, 657–658, 832 32, 250–251
Linux LXLE, 19
CD / DVD avviabile, creazione, 776–779
distribuzioni, 16-20. Vedi anche distribuzioni specifiche
panoramica delle funzioni, 4–5 M
storia di, 6-16 Magnatune, 49
installazione, 201–232 Variabile d'ambiente MAIL, 85, 86
panoramica, 4–6 Registro di posta, 609
opportunità professionali, 20–26 Mail Transport Agent (MTA), 317
vs. sistemi operativi proprietari, 6 file maillog, 609
Linux Foundation, 14, 20 comando uomo, 93–94
Linux Mint, 19 pagine man, 70, 93–94
Linux Unified Key Setup (LUKS), 640 Distribuzione Mandrake, 17
Guida dell'amministratore di sistema Linux-PAM, 667 Distribuzione Mandriva, 17
listato tavolo mangle, iptables, 713
moduli, 197–198 MariaDB, 26, 318
processi, 138–143 MBR (Master Boot Record), 286
con il comando ps, 138-140 editor di testo mcedit, 118
con System Monitor, 142–143 md5sum, 252, 256, 628–629, 639, 831
con il comando superiore, 140–141 / directory multimediale, 98
immagini ISO live di Linux, 32–33, 203–207 memoria, risoluzione dei problemi, 580–585
load_policy, 687 digest di messaggi, 628
stampanti locali, 429–432 file di registro dei messaggi, 189, 337, 338–339, 610, 690–691
file localhost.crt, 468 metacaratteri
file localhost.key, 468 $ (simbolo del dollaro), 85
comando Locate, 75, 76, 125–126 & (e commerciale), 82, 83-84, 144, 162
registrazione ; (punto e virgola), 82, 83, 132, 444, 516, 659
Registrazione di SELinux, 689–692 | (tubo), 8, 82–83, 103, 139, 162, 166
registrazione del sistema, 334–340 sostituzione dei comandi, 84
gestione del volume logico (LVM), 295-301 definizione di, 82
Registro di accesso, 609 file-direction, 103-104
Log di disconnessione, 609 corrispondenza dei file, 102–103
logrotate, 322–323 ricerche di testo, 124
file logrotate.d / samba, 502 Gestore delle finestre di Metacity, 50–52
logrotate.d / vsftpd file, 480 file mime.types, 439
logwatch, 322, 339–340 mini-PaaS, 734
loop Polizza minima, SELinux, 678, 682

848
Pagina 889

Indice

Minix, 6–7, 13, 221, 302 comando mv, 114


filesystem minix, 302 Database MySQL, 3, 318, 452, 609
directory / misc, 98 pacchetto mysql, 318
Sezione della pagina di manuale Varie, 94 Registro del server MySQL, 609
Licenza MIT, 16 pacchetto mysql-server, 318
Comando mkdir, 100, 101, 109, 162 file mysqld.log, 609
comando mkfs, 310–311
Comando mkswap, 303-304
MLS (sicurezza multilivello), 672–673 N
Politica MLS, SELinux, 678, 682 n carattere speciale, 90
directory / mnt, 98 File named.conf, 187, 373
pacchetto mod_perl, 452 editor di testo nano, 89, 118
Pacchetto mod_ssl, 452, 467 tavolo nat, iptables, 713
modulo mod_userdir, 464–465 File manager Nautilus, 45–46, 47, 50, 195–196,
comando modprobe, 198 522–523
moduli filesystem ncpfs, 303
elenco, 197–198 NCSA HTTPD, 450
caricamento, 198 Editor di testo nedit, 118
PAM, 652–653 Nero, 777
rimozione, 198–199 / net directory, 546–547
sistemi di monitoraggio, 608–622 Netto / 1, 13
filesystem, 615–622 Netto / 2, 13
file di registro, 608–611 NetBSD, 13, 225
account utente, 612–615 firewall netfilter / iptables. Vedi utilità iptables
comando mount, 307–309, 541–544 maschera di rete, 355, 356, 357, 361, 370
montaggio di filesystem, 301–310 Database Network Information Service (NIS),
definizione di filesystem montabili, 305-306 279, 366
disabilitazione delle aree di scambio, 304–305 pacchetti di rete, 710
abilitazione delle aree di scambio, 303-304 sicurezza della rete
comando mount, 307–309 auditing di annunci pubblicitari, 704–708
File system NFS, 541–548 servizi di rete di controllo, 699–710
filesystem supportati, 301–303 controllo dell'accesso, 708–710
smontaggio dei filesystem, 309, 549 valutazione dell'accesso, 701-704
Licenza Mozilla, 16 firewall, 710–724
filesystem msdos, 302 categorie, 710–711
MTA (Mail Transport Agent), 317 servizio firewalld, 712–713
file mtab, 187 utilità iptables, 321, 713–724
File mtools.conf, 187 firewall basati sulla rete, 711
file multi-user.target, 395–397, 398–399, 413–414, directory degli script di rete, 363
420–421, 567 networking, 347–375
Progetto Multics, 8 controllo delle interfacce di rete, 350–355
Runlevel multilivello più networking, 562–563 file di configurazione, 362–367
dispositivi multipath, 220 configurazione
Runlevel modalità multiutente, 382 dalla riga di comando, 360–371
multiutente più stato di rete (rc3.d), 185 nell'impresa, 371-373
Runlevel multiutente, 562 interfacce di rete, 355–358
stato multiutente (rc2.d), 185 connessioni proxy, 358–359
Multiutente, rete e interfaccia utente grafica modifica delle connessioni, 360–362
runlevel, 563 esercizi, 374–375, 807–810
multiutente, rete, più stato di accesso GUI (rc5.d), 185 risoluzione dei problemi, 573–580
Estensione Music Integration, 43 NetworkManager, 348
lettori musicali controllo delle interfacce di rete, 350–352
Estensione Music Integration, 43 configurazione delle interfacce di rete, 355–358
Rhythmbox, 48–49, 195, 196 configurazione delle connessioni proxy, 358–359

849

Pagina 890

Indice

NetworkManager (continua)
disabilitante, 412 O
modifica del file /etc/resolv.conf, 366 Variabile d'ambiente OLDPWD, 86, 108
modifica delle connessioni, 360–362 azioni con un comando, 162
spegnimento, 363 Laboratori di sviluppo open source, 14
comando newgrp, 269 Open Source Initiative (OSI), 12, 14-16
login amministrativo di news, 190 software open source, 12
Registro delle notizie, 609 Fonti aperte: voci dalla rivoluzione open source, 14
Server NFS, 527–550 OpenBSD, 13, 225
attività di configurazione dell'amministrazione, 527–528 pacchetto openldap, 317
esercizi, 550, 824–826 pacchetto openldap-servers, 317
installazione, 529–530 pacchetto openssh-client, 324, 326
montaggio di file system NFS, 541–548 Pacchetto openssh-server, 324–326
Esame RHCE, 26 comando openssl, 263, 469–470, 473, 476, 646,
fissaggio, 536-540 816–817
condivisione di filesystem NFS, 531–536 OpenStack, 5, 18, 177, 211, 731, 732, 750, 752,
partenza, 530–531 760–765
visualizzazione di condivisioni, 540–541 implementazione cloud, 760–765
NFS, strumento di amministrazione grafico, 176 sistemi operativi
pacchetto nfs-server, 530 panoramica, 4–6
Pacchetto nfs-utils, 529–530 proprietario, 6
nfs_export_all_ro contesto di file SELinux, 539 modalità operative, SELinux, 673–674, 680–682
nfs_export_all_rw Contesto file SELinux, 539 directory / opt, 98
File nfsmount.conf, 545 flag di controllo opzionale, PAM, 652
NFSv4, 536 Direttiva sulle opzioni, 459
buon comando, 148-149 opzioni, comando, 71–74
database nis, 279, 366 OS X contro Linux, 6
database nisplus, 366 OSI (Open Source Initiative), 12, 14-16, 710, 711
Utilità nmap, 701–708 Variabile d'ambiente OSTYPE, 80, 86
servizio nmb, 502 Schermata panoramica
partenza, 505–506 Desktop GNOME 3, 34, 35, 40
fermandosi, 506 Dashboard di OpenStack, 723–724
Comando nmtui, 360, 362
nnn carattere speciale, 90
opzione di avvio nodma, 217
P
opzione di avvio nofb, 217 Collezioni di pacchetti, 316
opzione di avvio nofirewire, 217 Gruppi di pacchetti, 316
opzione di avvio noide, 217 pacchi. Vedi i pacchetti software
opzione di avvio noipv6, 217 filtri per pacchetti, 711
opzione di avvio nompath, 217 PAM (Pluggable Authentication Module), 648–667

non ripudio, 593 amministrazione, 654-667


opzione di avvio nonet, 217 buone password, rafforzamento, 660-663
opzione di avvio noparport, 217 File di configurazione dell'applicazione compatibili con PAM,
opzione di avvio nopcmcia, 217 654–655

opzione di avvio di noprobe, 217 risorse, attuazione, 657-658


opzione di avvio noscsi, 217 sudo use, incoraggiante, 664
Estensione Notifications Alert, 43 file di configurazione degli eventi di sistema, 653–654, 655–657

opzione di avvio nousb, 217 limitazioni di tempo, attuazione, 658–660

File nsswitch.conf, 187 account utente, blocco, 665-667


filesystem ntfs, 303 processo di autenticazione, 649–654

File ntp.conf, 187 benefici, 649

Pacchetto ntpd, 26, 317, 317, 319 contesti, 650–651

opzione di avvio numa-off, 217 flag di controllo, 651–652

850

Pagina 891

Indice

esercizi, 668, 830–832 pacchetto php-ldap, 452


fonti di informazione, 667 sicurezza fisica, 591–592
moduli, 652–653 comando ping, 353
Riferimento modulo PAM, 667 tubo (|), 8, 82–83, 103, 139, 162, 166
utilità pam-auth-config, 656 Estensione dell'indicatore di stato dei luoghi, 42–43
Applicazioni compatibili con PAM, 648–649 testo in chiaro, 627
modulo pam-limits, 657 Modulo di autenticazione inseribile. Vedi PAM
File pam.conf, 667 podcast, 48–49
pam.d file, 650 policies, iptables, 715, 717–722
pam.d.vsftpd file, 480 regole politiche, SELinux, 672, 678–679, 686–688
File pam.d / common-auth, 660 tipi di criteri, SELinux, 677–678, 682
pam.d / altro file, 655 policyoreutils-gui, 176
pam.d / passwd file, 661 portabilità di UNIX, 8–9
pam.d / su file, 664 parametri posizionali, 156–157, 169
pam.d / system-auth file, 661–663 POSIX (Portable Operating System Interface),
Modulo pam_cracklib, 660–664 10, 14, 642
modulo pam_deny.so, 655 login amministrativo postfix, 190
modulo pam_tully2, 665-667 pacchetto postfisso, 317
modulo pam_wheel, 664 pacchetto postgresql, 318
pannelli, desktop GNOME 2, 50, 53–57 Servizio PostgreSQL, 318
tavoli delle partizioni, 286 pacchetto postgresql-server, 318
partizionamento, 220–224, 285–295 Variabile d'ambiente PPID, 80, 86
Partizioni LVM, 295-301 Errori di "fine prematura delle intestazioni di script", 475
dischi con partizioni multiple, 292–295 Estensione modalità presentazione, 43
tipi di partizione, 221–222 Tasto Print Screen, Metacity, 52
Partizioni RAID, 221–222 server di stampa, configurazione, 441–445
ragioni per, 220–221 Finestra Impostazioni di stampa, 428–435
dischi a partizione singola, 288–291 file printcap, 187
suggerimenti per la creazione, 222–224 stampanti. Vedi anche CUPS
visualizzazione delle partizioni, 286–288 aggiungendo, 425–426
file passdb.tdb, 521 LDP / LPR, 433–434
comando passwd, 598–599 locale, 429–432
file passwd, 69, 71, 82, 187, 601–603 come server di stampa, 441–445
contesto PAM password, 651 Finestra Impostazioni di stampa, 428–435
password, 321, 596–602 telecomando, 432–435
migliori pratiche, 599-601 SMB, 434–435
rilevamento di password errate per gli account, stato, elenco, 440–441
614–615 amministrazione CUPS basata sul web, 426–428
applicazione con PAM, 660-663 file printers.conf, 435, 438–439, 442–443
hash, 601-603 stampa. Vedi anche CUPS
Finestra Password e chiavi, GNOME, 646 esercizi, 446–447, 813–815
Variabile d'ambiente PATH, 86, 91, comando lpr, 440
92, 182 rimozione dei lavori di stampa, 441
test di penetrazione, 623 Stampa, strumento di amministrazione grafico, 176
errori di autorizzazione, 474–475 cloud privato,
crittografia 750 privata, 466, 632-633
a chiave
permessi
ACL (elenchi di controllo degli accessi), 271–276 crittografia a chiave privata / pubblica, 466, 633-637
Apache, 455 directory / proc, 99
filesystem, 109–113, 603–604 filesystem proc, 302
Samba, 510-511 sandbox di processo, 670
Modalità permissiva, SELinux, 674, 680–682 processi, 137–152
servizi persistenti, abilitazione, 408–412 uccisione, 146-148
pacchetto php, 452 limitando con cgroups, 149-151

851

Pagina 892

Indice

processi (continua) rc2.d (stato multiutente), 185


elenco, 138–143 rc3.d (multiutente più stato di rete), 185
con il comando ps, 138-140 RC4, 466, 631
con System Monitor, 142–143 rc4.d (stato definito dall'utente), 185
con il comando superiore, 140–141 RC5, 631
ID processo, 137 rc5.d (multiutente, rete, più stato di accesso GUI), 185
riferendosi ai processi in background, 145–146 RC6, 631
renicing, 148-149 rc6.d (stato di riavvio), 185
contesto di sicurezza, SELinux, 685–686 comando di lettura, 157
avvio di processi in background, 144–145 Riavvia runlevel, 382, ​563
file di profilo, 88, 89, 187 stato di riavvio (rc6.d), 185
costrutti di programmazione, 66 richiamo dei comandi, 76–82
comando case, 162–163 Red Hat Certified Engineer (RHCE), 21, 22-23, 24-26
per. . . fare loop, 163–164 Red Hat Certified System Administrator (RHCSA), 21, 22–24
Se . . . poi dichiarazioni, 159–162 Red Hat Cloudforms, 187, 751
espansione dei parametri, 157–158 Red Hat Enterprise Linux. Vedi RHEL
fino a . . . fare loop, 164 Red Hat Enterprise Linux OpenStack Platform (RHELOSP), 177
mentre . . . fare loop, 164 Red Hat Enterprise Virtualization, 18
prompt, shell, 67 Red Hat Enterprise Virtualization (RHEV), 177
Variabile d'ambiente PROMPT_COMMAND, 87 filesystem reiserfs, 302
sistemi operativi proprietari, 6 accesso remoto
file protocolli, 187 chiavi di configurazione per, 763–764
connessioni proxy, configurazione, 358–359 gestione con SSH, 323–334
comando ps -el, 676–677 stampanti remote, 432–435
comando ps -eZ, 677 comando renice, 148–149
comando ps, 138-140 File * .repo, 243
Variabile d'ambiente PS1, 80, 85, 87, 89-91, 90, 91 archivi
Variabile d'ambiente PS2, 80, 89 opzioni di avvio, 218–219
Variabile d'ambiente PS3, 80, 89 fallimenti di dipendenza, 569-571
Variabile d'ambiente PS4, 80, 89 gestire con YUM, 240–252
cloud pubblico, 750 ripudio, 593
FTP pubblico, 46 Flag di controllo richiesto, PAM, 652
pubblicazione di contenuti web, 464–465 bandiera di controllo richiesta, PAM, 652
Puppet, 344, 732 modalità di salvataggio, 585–587
pacchetto pure-ftpd, 317 parole riservate, ordine di comando e, 75
comando pvdisplay, 299 risoluzione = opzione di avvio 1024x768, 217
comando pwd, 70–71, 100–102, 478, 495 Restorecon command, 487, 510, 513, 540, 685, 693, 820,
Variabile d'ambiente PWD, 80, 87, 108 834
Pirite, 647-648 directory di eliminazione limitate, 278
RHCE (Red Hat Certified Engineer), 21, 22-23, 24-26
RHCSA (Red Had Certified System Administrator), 21, 22-24
Q RHEL (Red Hat Enterprise Linux), 17-18
QEMU, 733, 742 comando ls con alias, 105
script di backup, 168
strumenti di amministrazione basati su browser, 177
R contro Fedora, 18
Partizioni RAID, 221–222 Terminale GNOME, 68
tavoli arcobaleno, 602 installazione, 208–211
Variabile d'ambiente RANDOM, 87 Immagine ISO, 774
tavolo grezzo, iptables, 714 editor di testo mcedit, 118
Raymond, Eric S., 16 anni Guida alla rete, 26
RBAC (Role Based Access Controls), 669, 670, 671-672, 673 RHELOSP, 177
rc0.d (stato di arresto), 185 RHEV, 177
rc1.d (stato utente singolo), 185 abbonamenti software, 21

852

Pagina 893
Indice

comando sudo, 174 in ambienti aziendali, 525


Guida per l'amministratore di sistema, 26 installazione, 500–502
system-config- * tools, 175–177 fissaggio, 506-511
emulatori di terminale, 68 partenza, 502–506
comando updatedb, 125 fermandosi, 506
Piattaforma RHEL OpenStack, 18 Registro di Samba, 609
RHELOSP (Red Hat Enterprise Linux OpenStack Platform), Samba NFS, 176
177 pacchetto samba, 500–502
RHEV (Red Hat Enterprise Virtualization), 177, 732 Samba SWAT, 500
Lettore musicale Rhythmbox, 48–49, 195, 196 pacchetto samba-client, 501
Rijndael, 631. 645 pacchetto samba-common, 500–502
Ritchie, Dennis, 8, 9 pacchetto samba-config-samba, 501
comando rlogin, 323 pacchetto samba-swat, 501
comando rm, 87, 114–115 pacchetto samba-winbind, 501
comando rmdir, 115 comando sandbox, 686
Comando rmmod, 198–199 controllo della sanità mentale, 181, 183
comando rmp -V, 323 Istituto SANS, 624
attributo ruolo, contesto di sicurezza SELinux, 675–677 Operazione di Santa Cruz (SCO), 10, 11
Controlli di accesso basati sui ruoli (RBAC), 669, 670, 671-672, 673 comando sar, 323, 340–341
/ directory root, 97–98, 99 directory / sbin, 99, 182
Password di root, strumento di amministrazione grafico, 176 scansione del filesystem, 616–618
utente root, 177–182 SCC (Secure Computing Corporation), 669
rootkit, 619–620 SCO (Operazione Santa Cruz), 10, 11
comando route, 353–354, 358 comando scp, 321, 323, 324, 326, 329-330, 329-332, 334
router, Linux as, 371–372 Cavalluccio marino, 646, 647
Roxio Creator, 777 comando sealert, 690–691
accesso amministrativo rpc, 190 secondo comando, 683
file rpc, 187 Variabile d'ambiente SECONDS, 87
comando rpm, 252–256 crittografia a chiave segreta, 466, 632-633
Pacchetti RPM, 236–237, 238–240 Secure WebDav, 46
installazione, 239–240, 247–249. 253, 253 Secure Computing Corporation (SCC), 669
gestire con YUM, 240–252 file di registro sicuro, 189
richiesta di informazioni, 254–255 Shell sicuro. Vedi SSH
rimozione, 248–249, 253 Secure Sockets Layer (SSL), 465–471, 816
cercando, 246–247 sicurezza
aggiornamento, 249–251 Server web Apache, 455–457, 465–471
verifica, 255–256 crittografia, 627-648
Algoritmo RSA, 631, 635, 638 crittografia / decrittografia, 630–639
Comando rsync, 330–332 esercizi, 668, 830–832
rsyslog, 317, 322–323, 334–339, 344 hashing, 628–630
File rsyslog.conf, 187, 335–336 ripristino di emergenza, 592–593
rsyslogd, 188, 189, 319–320, 322–323, 334, 337–339, sicurezza del file system, 603–606
689–690, 692 Server FTP, 483–488
regole, iptables, 715, 717–722 sicurezza della rete
comando runcon, 686 auditing di annunci pubblicitari, 704–708
comandi in esecuzione, 70-76 servizi di rete di controllo, 699–710
controllo dell'accesso, 708–710
valutazione dell'accesso, 701-704
S firewall, 710–724
carattere speciale s, 90 Server NFS, 536–540
Samba, 499-526 PAM (Pluggable Authentication Modules), 648–667
accesso alle condivisioni, 521–525 password, 596–602
configurazione, 511–521 sicurezza fisica, 591–592
esercizi, 526, 822–824 Samba, 506-511

853

Pagina 894

Indice

sicurezza (continua) server aziendali, 344


SELinux. Vedi SELinux esercizi, 345–346, 805–807
sicurezza del server, 321–322 installazione di server, 316–318
impostazioni del file di configurazione, 322 server di monitoraggio, 322–323
firewall, 321 categorie di pacchetti, 316–318
protezione tramite password, 321 accesso remoto, gestione, 323–334
SELinux, 322 protezione dei server, 321–322
TCP Wrapper, 322 server di avvio, 319–320
account utente, 593–596 registrazione del sistema, configurazione, 334–340
attributo di autorizzazione di sicurezza, SELinux, 673 risorse di sistema, controllo, 340–341
contesti di sicurezza, SELinux, 672, 674–677, 683–686 spazio di sistema, controllo, 341–343
etichette di sicurezza, SELinux, 672, 684–685 errori interni del server, 474–475
Registro di sicurezza, 609 comando di avvio del servizio ssh, 325
revisioni sulla sicurezza, 623–624 comando di avvio del servizio sshd, 325
tavolo di sicurezza, iptables, 714 servizi, 377–422
comando sed, 166 aggiungendo, 414–422
SELinux runlevel predefinito, configurazione, 412–414
Server web Apache, 456–457 demone di inizializzazione, 378–399
Rifiuti AVC (Access Vector Cache), 670, 673, 689-692, servizi persistenti, abilitazione, 408–412
694, 697, 834 stato, controllo, 399-403
benefici, 669–671 arresto e avviamento, 403–408
configurazione, 679–689 unità di destinazione, configurazione, 412–414
tramite Booleans, 688–689 file dei servizi, 187, 699–700
per server FTP, 486–487 Servizi, strumento di amministrazione grafico, 176
modalità, 680–682 contesto PAM della sessione, 651
per i server NFS, 539–540 impostare GID, 107, 270, 271, 276–277
pacchetti di regole politiche, 686–688 imposta UID, 107, 276–277
tipo di politica, 682 comando setfacl, 271, 272–274
per Samba, 508–510 comando setsebool, 487, 509, 518, 540, 688–689, 694
contesti di sicurezza, 683–686 comando sftp, 332
esercizi, 696–697, 832–835 Hash SHA-1, 630, 639, 831
fonti di informazione, 695 Hash SHA-2, 630, 639–640
registrazione, 689–692 comando sha1sum, 639, 831
MLS (sicurezza multilivello), 672–673 comando sha224sum, 639–640
modalità operative, 673–674, 680–682 file shadow, 187, 628
regole politiche, 672, 678–679, 686–688 cartelle condivise, Samba, 513–514
tipi di criteri, 677–678, 682 conchiglia
Esame RHCE, 25 scegliendo, 69–70
proteggere Apache, 456–457 comandi. Vedi comandi
contesti di sicurezza, 672, 674–677, 683–686 default, identificazione, 69
TE (Type Enforcement), 671–672 variabili d'ambiente, 85-88
risoluzione dei problemi, 689–694 sfuggire ai personaggi della shell, 155
Gestione SELinux, 176 esercizi, 95, 784–786
comando semestrale, 487, 509, 510, 540, 684, 693, 820 uscita, 88
comando semodulo, 686, 687, 692, 834 rapido, 67
semodule_deps, 687 partenza, 66-69
semodule_expand, 687 storia delle conchiglie, 76–66, 80–82
semodule_link, 687 script di shell, 153–168
semodule_package, 687 esempio di backup, 168
Sendmail Log, 609 argomenti della riga di comando, 154
pacchetto sendmail, 317 debug, 154
comandi sequenziali, 83 esecuzione, 154
amministrazione del server esercizi, 169, 790–793
configurazione dei server, 318–319 aritmetica dei numeri interi, 158–159

854

Pagina 895

Indice

costrutti di programmazione, 159-164 file spooler, 609


esempio di elenco telefonico, 167–168 SQL Server, 318
programmi di manipolazione del testo, 164–166 Registro di calamari, 609
variabili, 154–158 pacchetto di calamari, 317, 453
file shell, 187 SSH (Secure Shell), 323–334
Variabile d'ambiente SHLVL, 87 strumenti client, 326–332
comando showmount, 540–541 autenticazione basata su chiave, 332–334
Runlevel di arresto, 562 servizio openssh-server, 324–326
stato di arresto (rc0.d), 185 Esame RHCE, 26
Segnale SIGABRT, 147 comando ssh
Segnale SIGCONT, 146, 147 per l'esecuzione remota, 328–329
Segnale SIGHUP, 146, 147, 148 per l'accesso remoto, 326–328
Segnale SIGINT, 147 Inoltro X11, 328–329
Segnale SIGKILL, 146, 147 comando ssh-copy, 333
segnali, 146–148 comando ssh-copy-id, 346
firme, 628 comando ssh-keygen, 333
Segnale SIGQUIT, 147 comando ssh256sum, 639–640
Segnale SIGSTOP, 146, 147 comando ssh384sum, 639–640
Segnale SIGTERM, 146, 147, 148 comando ssh512sum, 639–640
Runlevel modalità utente singolo, 382 servizio sshd, 320, 324–326, 332, 334
Runlevel per utente singolo, 562 SSL (Secure Sockets Layer), 465–471, 816
file stato utente singolo (rc1.d), 185 ssl.conf, 467
opzione di avvio skipddc, 217 Stallman, Richard M., 11 anni
Slackware, 16, 202 comando status ssh, 325
Stampanti SMB, 434–435 interrompere il processo, 147
servizio smb, 502–505 cifrari a flusso, 628, 631
partenza, 503–505 editor di flusso (sed), 166
fermandosi, 506 comando su, 174, 178–179
file smb.conf, 183, 444, 511, 516–521 maschera di sottorete, 349, 351
comando smbclient, 504, 505, 508, 515 flag di controllo substack, PAM, 652
comando smbpasswd, 521 sostituzione di comandi, 84
file smbusers, 502 comando sudo, 174, 180–182, 664
Snort, 620 file sudoers, 187
pacchetti software flag di controllo sufficiente, PAM, 652
DEB, 236-238 Autorizzazioni SUID, 603–606
esercizi, 258, 797–798 Sun Microsystems, 11
RPM, 238-240 NIS (Network Information Service), 279
installazione, 239–240, 253 PAM (Pluggable Authentication Modules), 610
gestione in azienda, 256–257 scelta shell e, 70
gestire con YUM, 240–252 filesystem ufs, 303
richiesta di informazioni, 254–255 VirtualBox, 216
verifica, 255–256 SVID (System V Interface Definition), 10, 14
file di configurazione del test di integrità, 183 aree di scambio
categorie di pacchetti server, 316–318 disabilitante, 304-305
tarball, 236-237 abilitazione, 303-304
risoluzione dei problemi, 568–573 comando di scambio, 304–305
aggiornamento, 607 collegamenti simbolici, 106, 108, 110, 161, 330, 331, 399,
verifica, 615–616 414, 421, 618
Finestra del software, 47, 233–235 crittografia simmetrica, 466, 632-633
Spacewalk, 257 sintassi, 71–73
SpamAssassin,
personaggi 450
speciali / sysconfig
file / samba
sysct1.conf, 25 file, 502
inserimento, 78, 90 Caricatore di avvio SYSLINUX, 224
metacaratteri, 102-105 syslogd, 189

855

Pagina 896

Indice

pacchetto sysstat, 323, 340, 565 SysVinit, 378–386


System Activity Reporter (sar), 323, 340–341 aggiunta di servizi, 414–417
amministrazione di sistema servizi di controllo per, 400–401
comandi amministrativi, 182–183 configurazione di servizi persistenti, 408–409
controllo / configurazione dell'hardware, 190–199 runlevel predefinito, 412–413
file di configurazione, 183–188 disabilitazione dei servizi, 409
strumenti grafici, 175–177 avvio e arresto dei servizi, 403–404
file di registro, 188–189 compatibilità con le versioni precedenti di systemd, 397–399
systemd journal, 188–189 Compatibilità con le versioni precedenti di Upstart, 388–392
utilizzo di altri account amministrativi, 189-190
utilizzando l'account utente root, 177–182
Pagina man degli strumenti di amministrazione del sistema e dei demoni T
sezione, 94 t carattere speciale, 90
Sezione della pagina man System Calls, 93 tarball, 236-237
Registro di sistema, 610 unità di destinazione, configurazione, 412–414
Monitor di sistema, 142–143 Politica mirata, SELinux, 678, 682
monitoraggio del sistema, 608–622 politiche SELinux mirate, 672
filesystem, 615–622 target, iptables, 715
file di registro, 608–611 tcsh, 65, 69
account utente, 612–615 TCP Wrapper
risorse di sistema, monitoraggio, 340–341 consentendo l'accesso FTP in, 486
Finestra Impostazioni di sistema, desktop GNOME 3, 41–42 Accesso NFS, 539
spazio di sistema, controllo, 341–343 TE (Type Enforcement), 671–672
System V init, 552–553 script di shell per elenco telefonico, 167–168
Definizione dell'interfaccia System V (SVID), 10, 14 comando telnet, 323
system-config-bind, 176 file termcap, 188
data-configurazione-sistema, 176 Finestra terminale, 68–69
system-config-firewall, 176 comando testparm, 183
system-config-httpd, 176 testo
system-config-kickstart, 177 comando di taglio, 165
system-config-network, 360 comando grep, 165
system-config-nfs, 176, 532 comando sed, 166
stampante-configurazione-sistema, 176, 317, 425, 429, comando tr, 165–166
432–433 editor di testo. Vedi anche editor specifici
system-config-rootpassword, 176 struttura dei file di configurazione, 184
system-config-samba, 176, 444, 500, 501, 511–516 esercizi, 134–135, 787–789
system-config-selinux, 509, 689 vi, 117–124
servizi-di-configurazione-sistema, 176 aggiunta di testo, 119–120
system-config-users, 176 modifica del testo, 121–122
comando systemctl, 438 copia del testo, 121–122
systemctl abilita il comando sshd.service, 325 eliminazione del testo, 121–122
comando systemctl list-unit-files, 393–394 modalità ex, 124
systemctl avvia il comando sshd.service, 325 uscendo, 122–123
comando systemctl status sshd.service, 325 comandi di movimento, 123
systemd, 378–386 muoversi nel testo, 120–121
aggiunta di nuovi servizi, 419–422 incollare testo, 122
retrocompatibilità con SysVinit, 397–99 ricerca di testo, 124
nozioni di base, 392–397 esercitazione, 124
servizi di controllo per, 402–403 file di testo
configurazione della destinazione predefinita, 413–414 editing, 117–124
configurazione di servizi persistenti, 410–412 scoperta, 125-134
avvio / arresto, 406–408 The Open Group, 14
systemd journal, 188–189 Thompson, Ken, 8
systemd, 553–554 file time.conf, 659–660

856

Pagina 897

Indice
TLS (Transport Layer Security), 280, 452, 465–471 UEFI (Unified Extensible Firmware Interface), 554–557
Variabile d'ambiente TMOUT, 87, 91 filesystem ufs, 303
directory / tmp, 99, 224 comando umask, 112–113
comando togglebool, 688 comando umount, 309, 549
TomCat, 450 filesystem umsdos, 302
comando superiore, 140–141, 583–584 comando unalias, 87
Torvalds, Linus, 6–7, 10, 13–14, 26 comando uname, 72, 155–156
comando tattile, 102, 105 Runlevel indefinito, 563
comando tr, 165–166 Unified Extensible Firmware Interface (UEFI), 554–557
comando traceroute, 354–355 United States Computer Emergency Readiness Team, 623
Transport Layer Security (TLS), 280, 452, 465–471 Univel, 10
tripwire, 620 UNIX
risoluzione dei problemi commercializzato, 9-11
avvio, 551–568 elementi fondamentali, 8–9
esercizi, 587–588, 826–829 Progetto GNU, 11, 12, 14
memoria, 580–585 portabilità, 8-9
networking, 573–580 UNIX Laboratory, 10-11
in modalità di salvataggio, 585–587 UNIX System Laboratories (USL), 10-11
SELinux, 689–694 UnixWare, 10, 11
pacchetti software, 568–573 smontaggio dei filesystem, 309, 549
server web, 471–475 fino a quando ... fai il loop, 164
TrueCrypt, 640 variabili non tipizzate, 158
ttytab file, 381 file up2date, 242
comando tune2fs, 275 comando update-rc.d ssh defaults, 325
attributo tipo, contesto di sicurezza SELinux, comando updatedb, 125–126, 149
675–677 in aggiornamento
digitare comando, 75 Linux, 213–214
Type Enforcement, SELinux, 671–672 pacchetti, 249–251
pacchetti software, 607
Upstart, 554
U aggiunta di nuovi servizi, 417–419
u carattere speciale, 90 retrocompatibilità con SysVinit, 388–392
Ubuntu servizi di controllo per, 401–402
File di configurazione di Apache, 457 configurazione del runlevel predefinito, 413
autofs, installazione, 545 configurazione di servizi persistenti, 409–410
avvio da unità USB, 779–780 servizi di avviamento / arresto, 405
installazione di chkrootkit, 619 Upstart init daemon, 378, 379, 380, 386–392
Pacchetti ClamAV, 618 fornitori di software a monte, 239
immagini di nuvole, 756–757 Unità USB, avvio da, 779–780
Boot loader GRUB, 224–231 use_nfs_home_dirs Contesto file SELinux, 539–540
installazione dal DVD di installazione, 201 profili utente
Installazione di John the Ripper, 614 centralizzato, 278-281
Immagine ISO live, 775–776 creazione, 259-268
comando lvs, installazione, 641 aggiunta di utenti, 262-265
firewall netfilter / iptables, 716, 724 cancellazione di utenti, 268
installazione di nmap, 701 modificare gli utenti, 266-267
installazione openssh-server, 324 impostazione dei valori predefiniti dell'utente, 265-266
Moduli PAM, reperimento, 652 definizione in / etc / password, 69
Installazione di SELinux, 670 esercizi, 281–282, 798–802
Pacchetti delle politiche di SELinux, controllo, 682 / home directory, 224
privilegio sudo, 174 bloccaggio con PAM, 665–667
opzioni di aggiornamento, 213–214 dirigere nell'impresa, 270-278
verifica dei pacchetti, 616 monitoraggio, 612–615
installazione di vsftpd, 479 Nautilus, 45

857

Pagina 898

Indice

account utente (continua) vi editor di testo, 117–124


associazione di processo, 137, 142 aggiunta di testo, 119–120
radice, 177–182 modifica del testo, 121–122
Samba, 512–513 copia del testo, 121–122
fissaggio, 593–596 eliminazione del testo, 121–122
amministratori di sistema e, 174 modalità ex, 124
attributo utente, contesto di sicurezza SELinux, 674–677 uscendo, 122–123
Sezione della pagina man dei comandi utente, 93 comandi di movimento, 123
Runlevel definito dall'utente, 382 muoversi nel testo, 120–121
Variabile d'ambiente USER, 85 incollare testo, 122
stato definito dall'utente (rc4.d), 185 ricerca di testo, 124
comando useradd, 260, 262-266 esercitazione, 124
comando userdel, 268 comando vim, 119, 124, 184, 318, 561
comando usermod, 266-267 comando vimtutor, 124, 181
Utenti e gruppi, strumento di amministrazione grafico, 176 virt-install, 740, 753, 756
Finestra utenti, 259, 261, 262, 279 virt-manager, 730, 733–734, 737, 740–744,
USL (UNIX System Laboratories), 10-11 754–755
directory / usr, 99, 223 virt-viewer, 734
directory / usr / bin, 74, 183 console virtuali, 69
directory / usr / local / bin, 74 uscita dal guscio, 88
directory / usr / sbin, 182 tty1, 73
Registro UUCP, 610 host virtuali, aggiunta, 462–464
macchine virtuali, 730
creazione, 740–744
V gestione, 744-745
Vagrant, 344, 732 migrazione, 745-747
directory / var, 99, 224 installazioni di virtual network computing (vnc), 218
/ var / allusers
directory / var directory, 107, 132
/ autofs, 546 VirtualBox, 204, 216
virtualizzazione, 5
directory / var / cache / yum, 243, 252, 572, 573 Installazione di Linux, 216
directory / var / ftp, 478, 481, 482, 487, 490 Red Hat Enterprise Virtualization, 18, 177
/ var / lib / libvirt / images directory, 737, 738, 741 Piattaforma RHEL OpenStack, 18
directory / var / lib / rpm, 244, 252, 572 Xen, 5, 204, 216, 730
/var/lib/samba/private/passdb.tdb file, 521 firme dei virus, 618
/ var / log directory, 322, 334, 336, 608–611 virus, 618–622
/var/log/audit/audit.log file, 689–690 VMWare, 204, 216
/ var / log / httpd directory, 475 installazioni vnc (virtual network computing),
/var/log/httpd/error.log file, 472 218
/ var / log / messages file, 337 opzione di avvio vnc, 218
directory / var / log / samba, 502, 510 vncconnect = hostname [: port] opzione di avvio, 218
/ var / log / file sicuro, 594 vncpassword = opzione di avvio con password, 218
/ var / logs / dmesg file, 192–193 gruppi di volumi, 295-301, 804
/ var / directory denominata, 373 vsftpd, 317, 477–479. Vedi anche server FTP
directory / var / salesdocs, 268 installazione, 479–480
directory / var / stuff, 275–276 Configurazione Internet, 491–492
/ var / www / directory degli errori, 451–452 relativa ai permessi dei file Linux, 488
/ var / www / html directory, 455 fissaggio, 483–488
directory / var / www / manual, 452 partenza, 480–483
verifica dei pacchetti RPM, 255–256 accesso utente, 488–489
Daemon FTP molto sicuro.Vedi vsftpd scrivendo a, 489–491
filesystem vfat, 302 file vsftpd.conf, 480, 488
Comando vgdisplay, 299 file vsftpd.log, 609

858

Pagina 899

Indice

Opzione di avvio xdriver-vesa, 217


W Xen, 5, 204, 216, 730
w carattere speciale, 90 comando xeyes, 152
server web Desktop Xfce, 14, 29, 31, 32
Server web Apache xferlog, 609
file di configurazione, 457–462 File XFree86.0.log, 189
installazione, 450–454 xfs filesystem, 303
pubblicazione di contenuti web, 464–465 xinetd.conf, 188
fissaggio, 455–457 File Xorg.0.log, 189, 610
SSL / TLS, 465–471 File xorg.conf, 60, 188
partenza, 454–455
risoluzione dei problemi, 471–475
host virtuali, aggiunta, 462–464 Y
Esame RHCE, 25 pacchetto ypserv, 317
risoluzione dei problemi, 471–475 Progetto YUM (Yellowdog Updater Modified), 240–252
pacchetto webalizer, 453 download di pacchetti, 252
pacchetto webalizer, 317 installazione di pacchetti, 247–249
WebDav, 46 mantenimento del database / cache dei pacchetti, 251–252
mentre ... fai loop, 164 rimozione di pacchetti, 248–249
chi sono io comando, 69 alla ricerca di pacchetti, 246–247
chi comanda, 73 aggiornamento dei pacchetti, 249–251
Winbind, 279 utilizzo con archivi di terze parti, 244–245
Estensione Window List, 42–43 comando yum, 241–244, 245–252
gestori di finestre, 31 YUM Log, 610
Compiz, 50, 51, 58 file yum.conf, 242
Metacity, 50-52 File yum.log, 242, 610
menu della finestra, desktop GNOME 3, 37
finestre
condivisione di file. Vedi Samba Z
contro Linux, 6 Zipcloak, 646
Immagine ISO di Linux, masterizzazione, 776-777 Zorin OS, 19
Selettore area di lavoro, Metacity, 52, 58
file wtmp, 610

X
X Windowing System, 30–32
Registro X.Org X11, 610
Inoltro X11, 328–329
859

Pagina 900

Licenza pubblica generale GNU


Versione 3, 29 giugno 2007

Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

Tutti sono autorizzati a copiare e distribuire copie letterali di questo documento di licenza, ma
non è consentito cambiarlo.

Preambolo
La GNU General Public License è una licenza gratuita con copyleft per software e altri tipi di
lavori.

Le licenze per la maggior parte del software e altri lavori pratici sono progettate per portare via il tuo file
libertà di condividere e modificare le opere. Al contrario, la GNU General Public License lo è
destinato a garantire la libertà di condividere e modificare tutte le versioni di un programma, in
assicurati che rimanga software gratuito per tutti i suoi utenti. Noi, la Free Software Foundation, utilizziamo
la GNU General Public License per la maggior parte del nostro software; si applica anche a qualsiasi altro lavoro
rilasciato in questo modo dai suoi autori. Puoi applicarlo anche ai tuoi programmi.

Quando parliamo di software libero, ci riferiamo alla libertà, non al prezzo. Il nostro pubblico in generale
Le licenze sono progettate per assicurarti la libertà di distribuire copie gratuite
software (e addebitarli se lo desideri), che ricevi il codice sorgente o puoi ottenerlo se lo desideri
lo vuoi, che puoi cambiare il software o usarne parti in nuovi programmi gratuiti, e questo
sai che puoi fare queste cose.

Per proteggere i tuoi diritti, dobbiamo impedire ad altri di negarti tali diritti o di chiedere
di rinunciare ai diritti. Pertanto, hai determinate responsabilità se distribuisci
copie del software, o se lo modificate: responsabilità nel rispetto della libertà altrui.

Ad esempio, se distribuisci copie di un programma del genere, gratuitamente oa pagamento, tu


deve trasmettere ai destinatari le stesse libertà che hai ricevuto. Devi essere sicuro
che anche loro ricevono o possono ottenere il codice sorgente. E devi mostrare loro questi termini così
conoscono i loro diritti.

Gli sviluppatori che utilizzano la GNU GPL proteggono i tuoi diritti con due passaggi: (1) rivendicano il copyright su
il software e (2) offrirti questa Licenza dandoti il ​permesso legale di copiare e distribuire
e / o modificarlo.

Per la protezione degli sviluppatori e degli autori, la GPL spiega chiaramente che non esiste
garanzia per questo software gratuito. Per il bene degli utenti e degli autori, la GPL lo richiede
le versioni modificate devono essere contrassegnate come modificate, in modo che i loro problemi non vengano attribuiti
erroneamente agli autori di versioni precedenti.

Pagina 901

Licenza pubblica generale GNU

Alcuni dispositivi sono progettati per negare agli utenti l'accesso per installare o eseguire versioni modificate di
software al loro interno, sebbene il produttore possa farlo. Questo è fondamentalmente incom-
patible con l'obiettivo di proteggere la libertà degli utenti di modificare il software. Il sistematico
modello di taledove
precisamente abuso si verifica
è più nell'area
inaccettabile. dei prodotti
Pertanto, che progettato
abbiamo le personequesta
possono utilizzare,
versione dellache
GPLè pre-
vietare la pratica per quei prodotti. Se tali problemi sorgono sostanzialmente in altri
domini, siamo pronti a estendere questa disposizione a tali domini nelle versioni future di
la GPL, come necessario per proteggere la libertà degli utenti.

Infine, ogni programma è costantemente minacciato dai brevetti software. Gli Stati non dovrebbero
consentire ai brevetti di limitare lo sviluppo e l'uso di software su computer di uso generale,
ma in quelli che lo fanno, vogliamo evitare il pericolo speciale che i brevetti hanno applicato a un libero
potrebbe renderlo effettivamente proprietario. Per evitare ciò, la GPL assicura che i brevetti
non può essere utilizzato per rendere il programma non libero.

Seguono i termini e le condizioni precisi per la copia, distribuzione e modifica.

Termini e condizioni
0. Definizioni.

"Questa Licenza" si riferisce alla versione 3 della GNU General Public License.

"Copyright" indica anche leggi simili al copyright che si applicano ad altri tipi di opere, come
maschere a semiconduttore.

"Il Programma" si riferisce a qualsiasi lavoro soggetto a copyright concesso in licenza in base a questa Licenza. Ogni licenziatario
è indicato come "tu". "Licenziatari" e "destinatari" possono essere individui o organizzazioni.

"Modificare" un'opera significa copiare o adattare tutta o parte dell'opera in modo


il permesso di copyright, diverso dalla realizzazione di una copia esatta. Il lavoro risultante è
chiamato "versione modificata" del lavoro precedente o un lavoro "basato su" il lavoro precedente.

Un "lavoro coperto" indica il Programma non modificato o un'opera basata sul Programma.

“Propagare” un'opera significa farci qualsiasi cosa, senza permesso, farebbe


sei direttamente o secondariamente responsabile per violazione ai sensi della legge sul copyright applicabile, ad eccezione di
eseguendolo su un computer o modificando una copia privata. La propagazione include la copia,
distribuzione (con o senza modifiche), messa a disposizione del pubblico e in alcuni
paesi anche altre attività.

Per "trasmettere" un'opera si intende qualsiasi tipo di propagazione che consenta ad altre parti di fare o
ricevere copie. Mera interazione con un utente attraverso una rete di computer, senza trasferimento
di una copia, non sta trasmettendo.

Pagina 902

Licenza pubblica generale GNU

Un'interfaccia utente interattiva visualizza "Avvisi legali appropriati" nella misura in cui ciò
include una funzione comoda e ben visibile che (1) visualizza un appropriato
avviso di copyright e (2) comunica all'utente che non esiste alcuna garanzia per il lavoro (ad eccezione di
la misura in cui vengono fornite le garanzie), che i licenziatari possano trasmettere il lavoro in base a questo
Licenza e come visualizzare una copia di questa Licenza. Se l'interfaccia presenta un elenco di comandi utente
comandi o opzioni, come un menu, un elemento in evidenza nell'elenco soddisfa questo criterio.

1. Codice sorgente.

Il "codice sorgente" di un'opera indica la forma preferita dell'opera per apportare modifiche
zioni ad esso. "Codice oggetto" indica qualsiasi forma non originale di un'opera. Una "interfaccia standard"
indica un'interfaccia che è uno standard ufficiale definito da uno standard riconosciuto
body, o, nel caso di interfacce specificate per un particolare linguaggio di programmazione, one
che è ampiamente utilizzato tra gli sviluppatori che lavorano in quella lingua. Le "Librerie di sistema" di
un'opera eseguibile include qualsiasi cosa, tranne il lavoro nel suo insieme, che (a) è incluso
nella normale forma di confezionamento di un componente principale, ma che non fa parte di tale componente principale
Componente, e (b) serve solo per consentire l'uso del lavoro con quella Componente Principale, o per
implementare un'interfaccia standard per la quale è disponibile al pubblico un'implementazione in formato
modulo del codice sorgente. Una "componente principale", in questo contesto, significa una componente essenziale principale
(kernel, sistema a finestre e così via) del sistema operativo specifico (se presente) su cui il file
viene eseguito un lavoro eseguibile o un compilatore utilizzato per produrre il lavoro o un interprete del codice oggetto
utilizzato per eseguirlo. La "Sorgente corrispondente" per un'opera in forma di codice oggetto significa tutti i file
codice sorgente necessario per generare, installare e (per un lavoro eseguibile) eseguire il codice oggetto
e di modificare il lavoro, inclusi gli script per controllare tali attività. Tuttavia, non è così
includere le librerie di sistema del lavoro o strumenti generici o generalmente disponibili gratuitamente
programmi che vengono utilizzati non modificati nello svolgimento di tali attività ma che non ne fanno parte
del lavoro. Ad esempio, Origine corrispondente include file di definizione dell'interfaccia associati
con i file sorgente per il lavoro e il codice sorgente per le librerie condivise e le dinamiche
sottoprogrammi collegati in modo chiaro che il lavoro è specificamente progettato per richiedere, ad esempio da
comunicazione intima dei dati o flusso di controllo tra questi sottoprogrammi e altre parti
del lavoro. La sorgente corrispondente non deve includere nulla che gli utenti possano rigenerare
automaticamente da altre parti della sorgente corrispondente.

La Sorgente Corrispondente per un'opera sotto forma di codice sorgente è la stessa opera.

2. Autorizzazioni di base.

Tutti i diritti concessi in base a questa Licenza sono garantiti per la durata del copyright sul Programma,
e sono irrevocabili purché siano soddisfatte le condizioni indicate. Questa Licenza afferma esplicitamente
il tuo permesso illimitato per eseguire il Programma non modificato. L'output dall'esecuzione di un file
il lavoro coperto è coperto da questa Licenza solo se l'output, dato il suo contenuto, costituisce un file
lavoro coperto. Questa Licenza riconosce i tuoi diritti di fair use o altro equivalente, come
previsto dalla legge sul diritto d'autore.

Pagina 903

Licenza pubblica generale GNU

Puoi realizzare, eseguire e propagare opere coperte che non trasmetti, senza condizioni
fintanto che la tua licenza resta in vigore. Puoi trasmettere le opere coperte a
altri al solo scopo di far loro apportare modifiche esclusivamente per te, o
fornirti le strutture per eseguire tali lavori, a condizione che tu rispetti i termini
di questa Licenza nel trasmettere tutto il materiale per il quale non controlli il copyright. Quelli così
fare o eseguire i lavori coperti per te deve farlo esclusivamente per tuo conto, ai sensi
la tua direzione e il tuo controllo, a condizioni che vietano loro di fare qualsiasi copia del tuo
materiale protetto da copyright al di fuori del loro rapporto con te.

Il trasporto in qualsiasi altra circostanza è consentito esclusivamente alle condizioni indicate


sotto. La sublicenza non è consentita; la sezione 10 lo rende superfluo.

3. Protezione dei diritti legali degli utenti dalla legge antielusione.

Nessun lavoro coperto sarà considerato parte di una misura tecnologica efficace in alcun modo
legge applicabile che adempie agli obblighi previsti dall'articolo 11 del trattato sul diritto d'autore dell'OMPI adottato
il 20 dicembre 1996, o leggi simili che ne proibiscono o limitano l'elusione
le misure.

Quando si trasmette un'opera coperta da garanzia, si rinuncia a qualsiasi potere legale di vietare l'elusione
misure tecnologiche nella misura in cui tale elusione viene effettuata esercitando i diritti
sotto questa Licenza in relazione al lavoro coperto e declinate qualsiasi intenzione di farlo
limitare il funzionamento o la modifica del lavoro come mezzo di esecuzione, contro il lavoro
gli utenti, i diritti legali vostri o di terzi per vietare l'elusione delle misure tecnologiche.

4. Trasmissione di copie letterali.

Potete trasmettere copie letterali del codice sorgente del Programma così come lo ricevete, in qualsiasi
mezzo, a condizione di pubblicare in modo ben visibile e appropriato su ogni copia un file
avviso di copyright appropriato; mantenere intatti tutti gli avvisi che affermano che questa Licenza e qualsiasi altra
i termini permissivi aggiunti in accordo con la sezione 7 si applicano al codice; mantenere intatti tutti gli avvisi
dell'assenza di qualsiasi garanzia; e dare a tutti i destinatari una copia di questa Licenza insieme al
Programma.

Puoi addebitare qualsiasi prezzo o nessun prezzo per ogni copia che trasmetti e puoi offrire
supporto o protezione in garanzia a pagamento.

5. Trasmissione di versioni sorgente modificate.

È possibile trasmettere un lavoro basato sul Programma o le modifiche per produrlo dal
Programma, sotto forma di codice sorgente secondo i termini della sezione 4, a condizione che anche tu
soddisfare tutte queste condizioni:

a) L'opera deve recare avvisi ben visibili che affermino che l'hai modificata e che fornisca a
data rilevante.
Pagina 904

Licenza pubblica generale GNU

b) Il lavoro deve riportare avvisi in evidenza che affermano che è rilasciato sotto questa Licenza
e qualsiasi condizione aggiunta nella sezione 7. Questo requisito modifica il requisito
nella sezione 4 per "mantenere intatti tutti gli avvisi".
c) Devi concedere in licenza l'intera opera, nel suo insieme, sotto questa Licenza a chiunque
entra in possesso di una copia. Questa licenza si applicherà quindi, insieme a qualsiasi
sezione 7 termini aggiuntivi applicabili, all'intera opera, e tutte le sue parti,
indipendentemente da come sono confezionati. Questa licenza non dà il permesso di licenza
il lavoro in qualsiasi altro modo, ma non invalida tale autorizzazione se ne hai
ricevuto separatamente.
d) Se l'opera dispone di interfacce utente interattive, ciascuna deve visualizzare Appropriate Legal
Avvisi; tuttavia, se il Programma dispone di interfacce interattive che non vengono visualizzate
Avvisi legali appropriati, il tuo lavoro non deve obbligarli a farlo.
Una compilazione di un lavoro coperto con altri lavori separati e indipendenti, che non lo sono
per loro natura estensioni del lavoro coperto, e che non sono combinate con esso come
per formare un programma più grande, in o su un volume di un supporto di archiviazione o di distribuzione, è chiamato un file
"Aggregato" se la compilazione e il relativo copyright non vengono utilizzati per limitare l'accesso o
diritti legali degli utenti della raccolta oltre a quanto consentito dalle singole opere. Inclusione
di un'opera coperta in un insieme non fa sì che la presente Licenza si applichi alle altre parti di
l'aggregato.

6. Trasmissione di moduli non originali.

Puoi trasmettere un lavoro coperto sotto forma di codice oggetto secondo i termini delle sezioni 4 e 5,
a condizione che trasmettiate anche la sorgente corrispondente leggibile dalla macchina secondo i termini
di questa Licenza, in uno di questi modi:

a) Trasmettere il codice oggetto in, o incarnato in, un prodotto fisico (incluso un file
mezzo di distribuzione), accompagnato dalla Sorgente corrispondente fissata su un bene durevole
supporto fisico utilizzato abitualmente per l'interscambio di software.
b) Trasmettere il codice oggetto in, o incarnato in, un prodotto fisico (incluso un file
mezzo di distribuzione), accompagnata da un'offerta scritta, valida per almeno tre anni
e valido fino a quando offri pezzi di ricambio o assistenza clienti per quel prodotto
model, per dare a chiunque possieda il codice oggetto (1) una copia del file
Origine corrispondente per tutto il software nel prodotto coperto da questo
Licenza, su un supporto fisico durevole abitualmente utilizzato per l'interscambio di software,
per un prezzo non superiore al costo ragionevole per eseguire fisicamente questo trasporto
o (2) accesso per copiare la Sorgente corrispondente da un server di rete
gratuitamente.
c) Trasmettere copie individuali del codice oggetto con una copia dell'offerta scritta per promuovere
vide la fonte corrispondente. Questa alternativa è consentita solo occasionalmente e
non commerciale, e solo se hai ricevuto il codice oggetto con tale offerta, in formato
in accordo con la sottosezione 6b.

Pagina 905

Licenza pubblica generale GNU

d) Trasmettere il codice oggetto offrendo l'accesso da un luogo designato (gratis o per un file
addebito) e offrire allo stesso modo un accesso equivalente alla Sorgente corrispondente
attraverso lo stesso luogo senza ulteriori costi. Non è necessario che i destinatari lo richiedano
copia la sorgente corrispondente insieme al codice oggetto. Se il posto in cui copiare il file
il codice oggetto è un server di rete, la Sorgente corrispondente potrebbe trovarsi su un altro
server (gestito da te o da una terza parte) che supporta servizi di copia equivalenti,
a condizione di mantenere chiare indicazioni accanto al codice dell'oggetto che dicono dove trovare
la fonte corrispondente. Indipendentemente da quale server ospita il file Corresponding
Fonte, rimani obbligato a garantire che sia disponibile per tutto il tempo necessario
soddisfare questi requisiti.

e) Trasmettere il codice oggetto utilizzando la trasmissione peer-to-peer, a condizione di informare gli altri
coetanei in cui vengono offerti il ​codice oggetto e l'origine corrispondente del lavoro
al pubblico in generale gratuitamente ai sensi del comma 6d.
Una parte separabile del codice oggetto, il cui codice sorgente è escluso dal
Sorgente corrispondente come libreria di sistema, non deve essere inclusa nel trasporto dell'oggetto
codice di lavoro.

Un "Prodotto utente" è o (1) un "prodotto di consumo", il che significa qualsiasi personale tangibile
proprietà che viene normalmente utilizzata per scopi personali, familiari o domestici, o (2) qualsiasi-
cosa progettata o venduta per l'incorporazione in un'abitazione. Nel determinare se un prodotto
è un prodotto di consumo, i casi dubbi devono essere risolti a favore della copertura. Per un particolare
prodotto ricevuto da un particolare utente, "normalmente utilizzato" si riferisce a un uso tipico o comune di
quella classe di prodotto, indipendentemente dallo stato del particolare utente o dal modo in cui
il particolare utente utilizza effettivamente, si aspetta o ci si aspetta che utilizzi il prodotto. Un prodotto è
un prodotto di consumo indipendentemente dal fatto che il prodotto abbia o meno
usi di prova o non di consumo, a meno che tali usi non rappresentino l'unica modalità d'uso significativa di
il prodotto.

"Informazioni sull'installazione" per un Prodotto utente indica qualsiasi metodo, procedura, autorizzazione
chiavi o altre informazioni necessarie per installare ed eseguire versioni modificate di un
e funziona in quel Prodotto utente da una versione modificata della sua sorgente corrispondente. Il
le informazioni devono essere sufficienti per garantire il funzionamento continuo dell'oggetto modificato
il codice non viene in nessun caso impedito o interferito solo perché è stata apportata una modifica.

Se si trasmette un lavoro di codice oggetto in questa sezione in, o con, o specificamente per l'uso in,
un Prodotto dell'Utente e il trasferimento avviene come parte di una transazione in cui il diritto di
il possesso e l'uso del Prodotto dell'Utente viene trasferito al destinatario in perpetuo o per a
a tempo determinato (indipendentemente da come la transazione è caratterizzata), la Fonte corrispondente
trasmesse in questa sezione devono essere accompagnate dalle informazioni sull'installazione. Ma questo
Il requisito non si applica se né tu né terze parti conservate la possibilità di eseguire l'installazione
codice oggetto modificato sul prodotto utente (ad esempio, il lavoro è stato installato nella ROM).

Il requisito di fornire le informazioni di installazione non include il requisito di


può fornire servizi di supporto, garanzia o aggiornamenti per un lavoro che è stato modificato

Pagina 906

Licenza pubblica generale GNU

o installato dal destinatario, o per il Prodotto utente in cui è stato modificato o


installato. L'accesso a una rete può essere negato quando la modifica stessa materialmente e
influisce negativamente sul funzionamento della rete o viola le regole e i protocolli per
comunicazione attraverso la rete.

Fonte corrispondente trasmessa e Informazioni sull'installazione fornite, in accordo con


questa sezione deve essere in un formato documentato pubblicamente (e con un'implementazione
disponibile al pubblico sotto forma di codice sorgente) e non deve richiedere password o chiavi speciali
per disimballare, leggere o copiare.

7. Termini aggiuntivi.

I "permessi aggiuntivi" sono termini che integrano i termini di questa Licenza


eccezioni a una o più delle sue condizioni. Autorizzazioni aggiuntive applicabili
all'intero Programma saranno trattati come se fossero inclusi in questa Licenza, al
nella misura in cui sono validi ai sensi della legge applicabile. Se le autorizzazioni aggiuntive si applicano solo alla parte
del Programma, quella parte può essere utilizzata separatamente in base a tali autorizzazioni, ma l'intera
Il programma rimane regolato da questa Licenza senza riguardo alle autorizzazioni aggiuntive.

Quando trasmetti una copia di un'opera coperta, puoi, a tua discrezione, rimuovere qualsiasi altra
autorizzazioni da quella copia o da qualsiasi parte di essa. (È possibile scrivere autorizzazioni aggiuntive
richiedere la loro rimozione in alcuni casi quando si modifica il lavoro.) È possibile inserire
autorizzazioni aggiuntive sul materiale, aggiunte da te a un'opera coperta, per la quale hai o
può dare il permesso di copyright appropriato.

Nonostante qualsiasi altra disposizione di questa Licenza, per il materiale aggiunto a una copertura
lavoro, puoi (se autorizzato dai detentori del copyright di quel materiale) integrare il file
termini di questa licenza con termini:

a) Esonero di garanzia o limitazione di responsabilità diversamente dai termini delle sezioni 15


e 16 di questa Licenza; o
b) Richiedere la conservazione di ragionevoli note legali o attribuzioni dell'autore specificate in
tale materiale o nelle appropriate Avvisi legali visualizzati dalle opere che lo contengono;
o
c) Proibire la falsa dichiarazione dell'origine di tale materiale o richiederla
le versioni modificate di tale materiale devono essere contrassegnate in modo ragionevole come diverse da
la versione originale; o
d) Limitare l'uso a fini pubblicitari di nomi di licenzianti o autori di
Materiale; o
e) Rifiuto di concedere diritti ai sensi della legge sui marchi per l'uso di alcuni nomi commerciali,
marchi di fabbrica o marchi di servizio; o
f) La richiesta di risarcimento ai licenzianti e agli autori di quel materiale da parte di chiunque
veicola il materiale (o versioni modificate dello stesso) con ipotesi contrattuali di
responsabilità nei confronti del destinatario, per qualsiasi responsabilità che queste ipotesi contrattuali
imporre direttamente a quei licenziatari e autori.

Pagina 907

Licenza pubblica generale GNU

Tutti gli altri termini aggiuntivi non permissivi sono considerati "ulteriori restrizioni" all'interno del
significato della sezione 10. Se il Programma così come lo avete ricevuto, o parte di esso, contiene un avviso
affermando che è regolato da questa Licenza insieme a un termine che rappresenta un'ulteriore restrizione,
puoi rimuovere quel termine. Se un documento di licenza contiene un'ulteriore restrizione ma lo consente
rilicendendo o trasferendo sotto questa Licenza, puoi aggiungere a un materiale di lavoro coperto
erned dai termini di tale documento di licenza, a condizione che l'ulteriore restrizione non lo sia
sopravvivere a tale rilascio di licenza o trasporto.

Se aggiungi termini a un'opera coperta in accordo con questa sezione, devi inserire, nella relativa
evanti file sorgente, una dichiarazione dei termini aggiuntivi che si applicano a tali file o un avviso
indicando dove trovare i termini applicabili.

Termini aggiuntivi, permissivi o non permissivi, possono essere indicati separatamente sotto forma di
licenza scritta o dichiarata come eccezioni; i requisiti di cui sopra si applicano in entrambi i casi.

8. Risoluzione.

L'utente non può propagare o modificare un'opera coperta salvo quanto espressamente previsto in questo
Licenza. Qualsiasi tentativo altrimenti di propagarlo o modificarlo è nullo e lo farà automaticamente
terminare i tuoi diritti ai sensi della presente Licenza (comprese eventuali licenze di brevetto concesse ai sensi del
terzo paragrafo della sezione 11).

Tuttavia, se cessi tutte le violazioni di questa Licenza, la tua licenza da una particolare copia-
il titolare del diritto è reintegrato (a) provvisoriamente, a meno che e fino a quando il titolare del diritto d'autore non è esplicitamente
e infine termina la tua licenza, e (b) in modo permanente, se il detentore del copyright non riesce a farlo
informarti della violazione con mezzi ragionevoli prima di 60 giorni dopo la cessazione.

Inoltre, la tua licenza da un particolare detentore del copyright viene ripristinata in modo permanente se il file
Il titolare del copyright ti avvisa della violazione con mezzi ragionevoli, questo è il primo
volta che hai ricevuto notifica di violazione di questa Licenza (per qualsiasi opera) da quella copia-
titolare dei diritti e rimedi alla violazione entro 30 giorni dalla ricezione della notifica.

La cessazione dei diritti ai sensi di questa sezione non comporta la cessazione delle licenze delle parti
che hanno ricevuto copie o diritti da te ai sensi della presente Licenza. Se i tuoi diritti sono stati
terminato e non ripristinato in modo permanente, non sei idoneo a ricevere nuove licenze per
lo stesso materiale nella sezione 10.

9. Accettazione non richiesta per avere copie.

Non è necessario accettare questa Licenza per ricevere o eseguire una copia del Programma.
Propagazione accessoria di un lavoro coperto che si verifica esclusivamente come conseguenza dell'utilizzo di peer-
Allo stesso modo la trasmissione a peer per ricevere una copia non richiede l'accettazione. Tuttavia,
nient'altro che questa Licenza ti concede il permesso di propagare o modificare qualsiasi coperto
lavoro. Queste azioni violano il copyright se non si accetta questa Licenza. Pertanto, da
modificando o propagando un'opera coperta, si indica l'accettazione della presente Licenza a
fare così.
Pagina 908

Licenza pubblica generale GNU

10. Licenza automatica dei destinatari a valle.

Ogni volta che trasmetti un'opera coperta, il destinatario riceve automaticamente una licenza da
i licenziatari originali, per eseguire, modificare e diffondere tale lavoro, soggetto a questa Licenza. voi
non sono responsabili del rispetto da parte di terzi della presente Licenza.

Una "transazione dell'entità" è una transazione che trasferisce il controllo di un'organizzazione, o di una sostanza
sostanzialmente tutte le risorse di una, o la suddivisione di un'organizzazione o l'unione di organizzazioni. Se propa-
la gazione di un lavoro coperto risulta da una transazione dell'entità, ciascuna parte di quella transazione
chi riceve una copia dell'opera riceve anche le eventuali licenze per l'opera del partito
predecessore in interessi aveva o poteva dare ai sensi del paragrafo precedente, più un diritto a
possesso della Sorgente Corrispondente del lavoro dal predecessore interessato, se il
il predecessore ce l'ha o può ottenerlo con sforzi ragionevoli.

Non è possibile imporre ulteriori restrizioni all'esercizio dei diritti concessi o


affermato sotto questa Licenza. Ad esempio, non puoi imporre una tariffa di licenza, royalty o
altri addebiti per l'esercizio dei diritti concessi in base alla presente Licenza e non è possibile avviare
contenzioso (inclusa una rivendicazione incrociata o una domanda riconvenzionale in una causa) in cui si sostiene che qualsiasi brevetto
il reclamo viene violato facendo, utilizzando, vendendo, offrendo in vendita o importando il Programma o
qualsiasi parte di esso.

11. Brevetti.

Un "collaboratore" è un detentore del copyright che autorizza l'uso in base a questa Licenza del Programma
o un'opera su cui si basa il Programma. Il lavoro così concesso in licenza è chiamato del contributore
"Versione collaboratore".

Le "rivendicazioni di brevetto essenziali" di un contributore sono tutte le rivendicazioni di brevetto possedute o controllate da
contributore, già acquisito o successivamente acquisito, che verrebbe violato da
un modo, consentito dalla presente Licenza, di creare, utilizzare o vendere il suo contributore
sion, ma non includere affermazioni che verrebbero violate solo come conseguenza di ulteriori
modifica della versione del contributore. Ai fini di questa definizione, "controllo" include
il diritto di concedere sottolicenze di brevetto in modo coerente con i requisiti di questo
Licenza.

Ogni collaboratore ti concede una licenza di brevetto non esclusiva, mondiale, esente da royalty sotto
le rivendicazioni di brevetto essenziali del contributore, per fare, utilizzare, vendere, offrire in vendita, importare e altro
In questo modo eseguire, modificare e propagare i contenuti della sua versione contributor.

Nei tre paragrafi seguenti, una "licenza di brevetto" è un accordo o impegno esplicito
menzione, comunque denominata, per non far valere un brevetto (come un'autorizzazione espressa a
praticare un brevetto o un patto di non intentare causa per violazione di brevetto). Per "concedere" un tale brevetto
licenza a una parte significa fare un tale accordo o impegno a non far valere un brevetto
contro il partito.

Pagina 909

Licenza pubblica generale GNU

Se trasmetti un'opera coperta, affidandoti consapevolmente a una licenza di brevetto, e il corrispondente


La fonte dell'opera non può essere copiata da nessuno, gratuitamente e nei termini
di questa Licenza, tramite un server di rete pubblicamente disponibile o altro facilmente accessibile
significa, quindi è necessario (1) fare in modo che la Sorgente corrispondente sia così disponibile, o (2)
fare in modo di privarsi del beneficio della licenza di brevetto per questo particolare lavoro,
o (3) organizzare, in modo coerente con i requisiti di questa Licenza, l'estensione
la licenza di brevetto ai destinatari a valle. "Fare affidamento consapevolmente" significa che hai reale
sapendo che, fatta eccezione per la licenza di brevetto, trasmetti il ​lavoro coperto in un paese,
o l'utilizzo da parte del destinatario del lavoro coperto in un paese, violerebbe uno o più identificativi
brevetti affidabili in quel paese che hai motivo di ritenere validi.

Se, ai sensi o in relazione a una singola transazione o accordo, trasmetti, o


propagarsi procurandosi il trasferimento di un'opera coperta e concedere ad alcuni una licenza di brevetto
delle parti che ricevono l'opera coperta autorizzandole a utilizzare, propagare, modificare o
trasmettere una copia specifica del lavoro coperto, quindi la licenza di brevetto concessa è automatica
esteso a tutti i destinatari del lavoro coperto e delle opere basate su di esso.

Una licenza di brevetto è "discriminatoria" se non include nell'ambito della sua copertura,
vieta l'esercizio o è condizionato al mancato esercizio di uno o più diritti
che sono specificatamente concessi in base a questa Licenza. Non puoi trasmettere un lavoro coperto se tu
sono parte di un accordo con una terza parte che si occupa di distribuzione
software, in base al quale effettui il pagamento a terze parti in base all'entità del tuo
attività di trasferimento del lavoro, e in virtù della quale il terzo concede, a uno qualsiasi dei
parti che riceverebbero il lavoro coperto da te, una licenza di brevetto discriminatoria (a)
in relazione alle copie del lavoro coperto da te trasmesso (o copie fatte da quelle
copie), o (b) principalmente per e in connessione con prodotti o compilazioni specifici che
contenere l'opera coperta, a meno che tu non abbia sottoscritto tale accordo o quella licenza di brevetto
è stato concesso, prima del 28 marzo 2007.

Niente in questa Licenza deve essere interpretato come escludente o limitante qualsiasi licenza implicita o
altre difese contro le violazioni che potrebbero essere altrimenti disponibili all'utente in base alle disposizioni applicabili
legge sui brevetti.

12. Nessuna rinuncia alla libertà altrui.

Se le condizioni ti vengono imposte (sia per ordine del tribunale, accordo o altro), quello
contraddicono le condizioni di questa Licenza, non ti esonerano dalle condizioni di
questa licenza. Se non riesci a trasmettere un lavoro coperto in modo da soddisfare contemporaneamente il tuo
obblighi previsti dalla presente Licenza e qualsiasi altro obbligo pertinente, quindi come conseguenza
potresti non trasmetterlo affatto. Ad esempio, se accetti i termini che ti obbligano a riscuotere
una royalty per ulteriore trasmissione da parte di coloro a cui trasmetti il ​Programma, l'unico modo
potresti soddisfare entrambi questi termini e questa Licenza sarebbe di astenersi completamente dal
veying il programma.

13. Utilizzare con GNU Affero General Public License.

Pagina 910

Licenza pubblica generale GNU

Nonostante qualsiasi altra disposizione di questa Licenza, hai il permesso di collegare o


combina qualsiasi lavoro coperto con un lavoro concesso in licenza con la versione 3 di GNU Affero General
Licenza pubblica in un unico lavoro combinato e per trasmettere il lavoro risultante. I termini di
questa Licenza continuerà ad applicarsi alla parte che è l'opera coperta, ma allo speciale
requisiti della GNU Affero General Public License, sezione 13, riguardanti l'interazione
attraverso una rete si applicherà alla combinazione in quanto tale.

14. Versioni riviste di questa licenza.

La Free Software Foundation può pubblicare versioni riviste e / o nuove del GNU General
Licenza pubblica di volta in volta. Tali nuove versioni saranno simili nello spirito al presente
versione, ma può differire nei dettagli per affrontare nuovi problemi o preoccupazioni.

A ciascuna versione viene assegnato un numero di versione distintivo. Se il programma specifica che un certificato
Si applica la versione numerata della GNU General Public License "o qualsiasi versione successiva"
it, hai la possibilità di seguire i termini e le condizioni uno di quelli numerati
versione o di qualsiasi versione successiva pubblicata dalla Free Software Foundation. Se il programma
non specifica un numero di versione della GNU General Public License, puoi sceglierne uno qualsiasi
versione mai pubblicata dalla Free Software Foundation.

Se il Programma specifica che un proxy può decidere quali versioni future di GNU General
È possibile utilizzare la Public License, la dichiarazione pubblica di accettazione di una versione perma-
ti autorizza definitivamente a scegliere quella versione per il Programma.

Le versioni successive della licenza potrebbero fornire autorizzazioni aggiuntive o diverse. Tuttavia, no
obblighi aggiuntivi sono imposti a qualsiasi autore o detentore del copyright come conseguenza del tuo
scegliendo di seguire una versione successiva.

15. Esclusione di garanzia.

NON C'È ALCUNA GARANZIA PER IL PROGRAMMA, NELLA MISURA CONSENTITA DA APPLICABILE
LEGGE. SALVO QUANDO ALTRIMENTI DICHIARATO PER SCRITTO I TITOLARI DEL COPYRIGHT E / O
ALTRE PARTI FORNISCONO IL PROGRAMMA “COSÌ COM'È” SENZA ALCUN TIPO DI GARANZIA
ESPLICITE O IMPLICITE, INCLUSE, MA NON LIMITATE A, LE GARANZIE IMPLICITE DI
COMMERCIABILITÀ E IDONEITÀ PER UN PARTICOLARE SCOPO. L'INTERO RISCHIO RELATIVO AL
LA QUALITÀ E LE PRESTAZIONI DEL PROGRAMMA SONO CON TE. SE IL PROGRAMMA DOVREBBE PROVA
DIFETTOSO, TI ASSUMI IL COSTO DI TUTTE LE MANUTENZIONE, RIPARAZIONE O CORREZIONE NECESSARIE.

16. Limitazione di responsabilità.


IN NESSUN CASO SE NON RICHIESTO DALLA LEGGE VIGENTE O ACCETTATO PER SCRITTO IN ALCUN CASO
TITOLARE DEL COPYRIGHT O QUALSIASI ALTRA PARTE CHE MODIFICA E / O TRASMETTE IL PROGRAMMA
COME SOPRA CONSENTITO, ESSERE RESPONSABILE PER DANNI, COMPRESI QUALSIASI GENERALE,
DANNI SPECIALI, INCIDENTALI O CONSEQUENZIALI DERIVANTI DALL'USO O DALL'INABILITÀ
PER USARE IL PROGRAMMA (COMPRESO MA NON LIMITATO ALLA PERDITA DI DATI O DATI ESSERE
RESI INESATTI O PERDITE SOSTENUTE DA VOI O DA TERZI O DA UN MANCATO

Pagina 911

Licenza pubblica generale GNU

IL PROGRAMMA PER FUNZIONARE CON QUALSIASI ALTRI PROGRAMMI), ANCHE SE TALE TITOLARE O ALTRO
LA PARTE È STATA INFORMATA DELLA POSSIBILITÀ DI TALI DANNI.

17. Interpretazione delle sezioni 15 e 16.

Se il disclaimer di garanzia e limitazione di responsabilità di cui sopra non può essere fornito
effetto legale locale secondo i loro termini, i tribunali del riesame applicheranno la legge locale che
si avvicina più da vicino a una rinuncia assoluta a qualsiasi responsabilità civile in relazione al
Programma, a meno che una garanzia o un'assunzione di responsabilità non accompagni una copia del Programma in formato
ritorno a pagamento.

FINE DEI TERMINI E DELLE CONDIZIONI

Come applicare questi termini ai nuovi programmi


Se sviluppi un nuovo programma e desideri che sia di grande utilità possibile per
pubblico, il modo migliore per ottenere questo risultato è renderlo un software gratuito che tutti possono
ridistribuire e modificare in base a questi termini.

A tal fine, allegare al programma le seguenti comunicazioni. È più sicuro collegarli al file
inizio di ogni file sorgente per affermare in modo più efficace l'esclusione della garanzia; e ogni file
dovrebbe avere almeno la riga "copyright" e un puntatore a dove si trova l'avviso completo.

<una riga per dare il nome del programma e una breve idea di cosa fa.>
Copyright (C) <year> <nome dell'autore>
Questo programma è un software gratuito: puoi ridistribuirlo e / o modificarlo secondo i termini
della GNU General Public License come pubblicata dalla Free Software Foundation,
o la versione 3 della licenza o (a tua scelta) qualsiasi versione successiva.
Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA
GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ
PER UNO SCOPO PARTICOLARE. Vedere la GNU General Public License per maggiori dettagli.
Insieme a questo dovresti aver ricevuto una copia della GNU General Public License
programma. In caso contrario, vedere http://www.gnu.org/licenses/.
Aggiungi anche informazioni su come contattarti tramite posta elettronica e cartacea.

Se il programma interagisce con il terminale, fai in modo che emetta un breve avviso come questo quando viene visualizzato
inizia in modalità interattiva:

<programma> Copyright (C) <anno> <nome dell'autore>


Questo programma viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA; per i dettagli digitare "show w".

Questo è un software gratuito e sei libero di ridistribuirlo a determinate condizioni;


digitare "mostra c" per i dettagli.

Pagina 912
Licenza pubblica generale GNU

Gli ipotetici comandi 'show w' e 'show c' dovrebbero mostrare le parti appropriate del file
Licenza pubblica generale. Naturalmente, i comandi del tuo programma potrebbero essere diversi; per una GUI
l'interfaccia, useresti un "riquadro informazioni".

Dovresti anche chiedere al tuo datore di lavoro (se lavori come programmatore) o alla scuola, se esiste, di firmare un
"Disclaimer copyright" per il programma, se necessario.

Per ulteriori informazioni su questo e su come applicare e seguire la GNU GPL, vedere http: // www
.gnu.org / licenze /.

La GNU General Public License non consente di incorporare il programma in


programmi etary. Se il tuo programma è una libreria di subroutine, potresti considerarlo più utile
per consentire il collegamento di applicazioni proprietarie con la libreria. Se questo è quello che vuoi fare,
utilizzare la GNU Lesser General Public License invece di questa Licenza. Ma prima, leggi
http://www.gnu.org/philosophy/why-not-lgpl.html.

Pagina 914
913

CONTRATTO DI LICENZA CON L'UTENTE FINALE DI WILEY


Vai a www.wiley.com/go/eula per accedere all'EULA dell'ebook di Wiley.

Potrebbero piacerti anche