BIBBIA Linux® PDF
BIBBIA Linux® PDF
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
Pubblicato da
John Wiley & Sons, Inc.
10475 Crosspoint Boulevard
Indianapolis, NEL 46256
www.wiley.com
ISBN: 978-1-118-99987-5
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.
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
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.
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
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
xiii
Pagina 16
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
xv
Pagina 18
Contenuti
xvi
Pagina 19
Contenuti
xvii
Pagina 20
Contenuti
xviii
Pagina 21
Contenuti
xix
Pagina 22
Contenuti
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
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
xxii
Pagina 25
Contenuti
xxiii
Pagina 26
Contenuti
Pagina 27
Contenuti
xxv
Pagina 28
Contenuti
xxvi
Pagina 29
Contenuti
xxvii
Pagina 30
Contenuti
xxviii
Pagina 31
Contenuti
xxix
Pagina 32
Contenuti
xxx
Pagina 33
Contenuti
xxxi
Pagina 34
Contenuti
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:
xxxiii
Pagina 36
introduzione
La parte I, "Guida introduttiva", include due capitoli progettati per aiutarti a capire cosa
Linux è e inizia con un desktop Linux:
■ 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:
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.
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: ******
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!
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
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
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.
Pagina 45
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
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.
Pagina 47
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 ( [email protected])
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).
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
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:
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
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):
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.
Pagina 50
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.
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
■ 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.
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
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:
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
È 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.
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
codice assembly riscritto nel linguaggio di programmazione C, che ha reso possibile l'avvio
portarlo su altre macchine.
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.
14
Pagina 55
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
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. "
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.
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
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.
■ 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.
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
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
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.
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.
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.
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
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.
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
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.
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
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
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.
24
Pagina 65
■ 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.
■ 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
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
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
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:
29
Pagina 70
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:
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.
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
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.
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
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.
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
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.
33
Pagina 74
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
34
Pagina 75
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
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
36
Pagina 77
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
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.
■ 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
FIGURA 2.6
Premere Ctrl + Alt + Tab per visualizzare aree del desktop aggiuntive da selezionare.
39
Pagina 80
Parte I: Guida introduttiva
FIGURA 2.7
■ 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
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.
FIGURA 2.8
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
■ 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.
■ 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
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
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
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
seleziona la categoria Aspetto e cambia il tema Icone e il tema GTK + come preferisci
dalle caselle a discesa.
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
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
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).
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
Connessione Internet, è possibile eseguire lo strumento Aggiungi / Rimuovi software per scaricare e installare
uno qualsiasi dei migliaia di pacchetti Fedora.
FIGURA 2.12
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
repository e utilizzare i comandi yum e rpm per gestire il software in Fedora e Red Hat
Enterprise Linux.
FIGURA 2.13
La Figura 2.14 mostra un esempio della finestra Rhythmbox con musica riprodotta da un file
libreria audio importata.
■ 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
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
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.
49
Pagina 90
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:
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.
50
Pagina 91
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
51
Pagina 92
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.
52
Pagina 93
■ 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.
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
■ 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
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.
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
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.
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.
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
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
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
■ 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
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.)
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
■ 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"
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
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.
Pagina 103
102
Seconda parte
Diventare un Linux
Power user
Capitolo 5
Lavorare con file di testo
Pagina 105
104
CAPITOLO
Utilizzando la Shell
IN QUESTO CAPITOLO
3
Capire la shell di Linux
Usare i comandi
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
È 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:
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.
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
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 ".
# 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
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
■ 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:
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
Se stai usando Linux da un desktop grafico, probabilmente accederai molto spesso al file
shell da una finestra di Terminale.
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.
$ 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.
69
Pagina 110
■ 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
$ pwd
/ home / chris
$ hostname
mydesktop
70
Pagina 111
$ 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.
$ 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.
71
Pagina 112
$ ls --hide = Desktop
Documenti Musica Video pubblici
Scarica modelli di immagini
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
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
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
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.
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
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.
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:
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.
77
Pagina 118
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.
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.
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
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 + Y Incolla il testo precedente Ruota indietro per tagliare il testo in precedenza e incollalo.
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:
79
Pagina 120
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 :
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).
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
■! 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
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.
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.
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
indicare la formattazione. Per vedere come appariva realmente il documento, avrebbero usato un comando
come il seguente:
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 (;):
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.
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
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).
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.)
84
Pagina 125
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.
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
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.
Variabile Descrizione
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.
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
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.
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
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
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.
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
File Descrizione
~ / .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:
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.
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:
89
Pagina 130
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] $.
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.)
\d Visualizza il nome del giorno, il mese e il numero del giorno della data corrente, ad esempio
ple, sabato 23 gennaio.
\ 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.
90
Pagina 131
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.
■ 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.
91
Pagina 132
■ 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
■ 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
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.
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
Continua
93
Pagina 134
Sezione
Numero Nome sezione Descrizione
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.
■ 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.
95
Pagina 137
136
CAPITOLO
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).
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
FIGURA 4.1
Joe
memo1.doc
■/ 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
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".
■ 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
Comando Risultato
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.
$ cd ~
$ pwd
/ home / chris
$ cd ~ / Musica
100
Pagina 141
$ 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
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.
101
Pagina 142
Questo passaggio modifica le autorizzazioni della directory per darti accesso completo e
tutti gli altri non hanno accesso. (Le nuove autorizzazioni dovrebbero essere rwx ------.)
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.
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:
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
$ 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).
$ 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
■ <: 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
Di seguito sono riportati alcuni esempi di righe di comando in cui le informazioni sono dirette a e
dai file:
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:
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:
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:
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
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:
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
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.
^ ^^^^^ ^
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
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).
■ 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
■ ..— Due punti (..) si riferiscono a una directory direttamente sopra la directory 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.
$ ls -a
. apple docs pompelmo pointer_to_apple .stuff watermelon
.. banana uva .hiddendir script.sh .tmpfile
$ ls -at
.tmpfile .hiddendir .. docs watermelon banana script.sh
. .stuff pointer_to_apple pompelmo mela uva
108
Pagina 149
$ 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:
Per elencare tutti i file e le directory in modo ricorsivo dalla directory corrente in basso:
$ ls -R
...
$ 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
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.
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:
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
Di seguito sono riportati alcuni esempi di come modificare l'autorizzazione su un file (denominato file) e cosa il
il permesso risultante sarebbe:
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:
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.
111
Pagina 152
$ chmod aw file
$ chmod ox file
Allo stesso modo, i seguenti esempi iniziano con tutte le autorizzazioni chiuse (---------). Il vantaggio
sign viene utilizzato con chmod per attivare i permessi:
$ chmod a + x file
$ 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:
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.
$ umask
0002
112
Pagina 153
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:
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.
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:
113
Pagina 154
$ 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:
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
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
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
Ricerca di 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.
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
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.
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.
■ 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.
■ 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
$ vi / tmp / test
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
■ 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.
120
Pagina 161
■ 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).
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
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:
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
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
123
Pagina 164
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:
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.)
124
Pagina 165
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).
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ì"
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
■ 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
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
più flessibile, puoi utilizzare caratteri di corrispondenza file, come asterischi (*) e domanda
segni (?), come nei seguenti esempi:
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.
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
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.
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ù.
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.
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.
■ 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
■ 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
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:
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
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.
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
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):
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).
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.
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
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.
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
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.
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
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.
$ 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
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.
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
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.
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
FIGURA 6.1
In esecuzione
compiti
6
RAM
Scambiare
spazio
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:
141
Pagina 182
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
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
FIGURA 6.3
143
Pagina 184
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 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:
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
$ 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.
$ 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:
145
Pagina 186
■ %? 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.
$ bg% 5
Dopodiché, il lavoro viene eseguito in background. La sua voce di lavoro appare come segue:
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
SIGHUP 1 Rilevato blocco sul terminale di controllo o morte del processo di controllo.
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.
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
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
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.
■ 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
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:
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.
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.
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:
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
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:
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.
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
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
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.
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
■ 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.
154
Pagina 195
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):
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
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).
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:
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.
#! / 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:
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
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.
#! / 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:
157
Pagina 198
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.
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
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
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.
159
Pagina 200
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).
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
-f file Il file esiste ed è un file normale (ad esempio, non una directory,
socket, pipe, link o file di dispositivo)?
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 -ne var2 La prima variabile non è uguale alla seconda variabile?
161
Pagina 202
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.
# 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.
162
Pagina 203
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 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
163
Pagina 204
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
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.
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
164
Pagina 205
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.
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:
$ 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 .
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).
165
Pagina 206
L'esempio seguente traduce tutte le lettere maiuscole in lettere minuscole e visualizza il file
parole mescolate in maiuscolo e minuscolo come risultato:
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:
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.
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.
166
Pagina 207
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
167
Pagina 208
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
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
#
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
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.
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.
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
Comprensione dei comandi amministrativi, dei file di configurazione e dei file di registro
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.
173
Pagina 214
■ 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
Il modo più semplice per iniziare l'amministrazione del sistema è utilizzare alcuni strumenti di amministrazione grafici.
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.
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
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:
I seguenti strumenti grafici sono disponibili sia in Fedora che in Red Hat Enterprise Linux:
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):
176
Pagina 217
■ 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.
Ad esempio, se stai usando Red Hat Enterprise Linux, ci sono interfacce basate su browser
per la gestione dei seguenti progetti:
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
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:
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.
178
Pagina 219
■ 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
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.
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
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
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
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.
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
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
? è 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
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.
■ 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
■ 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.
187
Pagina 228
■ 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 /).
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).
# 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
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.
Fare riferimento al Capitolo 13, "Informazioni sull'amministrazione del server", per informazioni sulla configurazione
la funzione rsyslogd.
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.
190
Pagina 231
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.
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
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
( [email protected] )
(versione gcc 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC))
# 1 SMP mercoledì 17 settembre 22:34:21 UTC 2014
192
Pagina 233
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
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.
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
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
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.
195
Pagina 236
■ 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
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.
# 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
Per trovare informazioni su uno qualsiasi dei moduli caricati, utilizzare il comando modinfo. Per
esempio, puoi digitare quanto segue:
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:
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.
198
Pagina 239
# 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
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
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
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
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.
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.
202
Pagina 243
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.
203
Pagina 244
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.)
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.
FIGURA 9.1
205
Pagina 246
FIGURA 9.2
206
Pagina 247
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
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.
209
Pagina 250
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
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.
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.
211
Pagina 252
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:
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
213
Pagina 254
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:
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
■ 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
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.
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:
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
Per il momento, tuttavia, puoi ancora utilizzare le opzioni mostrate nelle prossime sezioni
con l'inst. prefisso.
numa-off Per disabilitare l'accesso alla memoria non uniforme (NUMA) per l'architettura AMD64
skipddc Non sondare il DDC del monitor (la sonda può appendere l'installatore)
217
Pagina 258
vncconnect = hostname [: port] Collegarsi al nome host del client VNC e alla porta opzionale
218
Pagina 259
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.
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).
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.
219
Pagina 260
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:
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
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.
■ 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
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.
222
Pagina 263
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.
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
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.
■ 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
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.
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
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.
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
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.
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.
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
I sistemi operativi Microsoft richiedono l'utilizzo del chainloader per avviarli da GRUB perché GRUB
non offre supporto nativo per i sistemi operativi Windows.
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
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:
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:
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
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.
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
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
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.
233
Pagina 274
FIGURA 10.1
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
è 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.
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
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).
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
■ 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.
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
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.
# 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).
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:
238
Pagina 279
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.
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
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:
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.
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
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:
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
1 /etc/yum.conf
3 /etc/yum.repos.d/
myrepo.repo
[myrepo]
nome = Il mio repository
baseurl = http://myrepo.example.com/pub/myrepo
241
Pagina 282
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.
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
[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.
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.
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
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.
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.
244
Pagina 285
■ 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:
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):
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.
245
Pagina 286
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:
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:
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
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.
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:
247
Pagina 288
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:
Puoi rimuovere un singolo pacchetto con il sottocomando erase. Ad esempio, per cancellare il file
pacchetto emacs, puoi digitare quanto segue:
248
Pagina 289
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.
# yum check-update
... kernel.x86_64 3.10.0-123.6.3.el7 rhel-7-server-rpms
249
Pagina 290
# 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
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:
250
Pagina 291
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.
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:
251
Pagina 292
è 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.
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).
252
Pagina 293
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.
# 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:
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:
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.
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
È 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).
254
Pagina 295
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.
255
Pagina 296
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:
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.
È 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
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
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à).
4. Elenca tutti i file di documentazione contenuti nel pacchetto che fornisce l'estensione
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.
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.
È 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
FIGURA 11.1
■ 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
FIGURA 11.2
261
Pagina 302
Parte III: diventare un amministratore di sistema Linux
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.
■ -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
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:
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
Nella creazione dell'account per Sara, il comando useradd esegue diverse azioni:
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:
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:
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
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.
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
■ -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:
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).
266
Pagina 307
■ -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.
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
# 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:
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):
Pagina 309
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:
■ 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:
È 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
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:
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).
■ 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
■ 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.
■ 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
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] $ 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
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).
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
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-:
■ 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
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:
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:
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:
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
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:
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.
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.
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".
276
Pagina 317
2. Aggiungi alcuni utenti al gruppo con cui desideri condividere file (ho usato mary):
# usermod -aG sales mary
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
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
277
Pagina 318
gruppo. Ora, chiunque appartenga al gruppo di vendita può leggere o scrivere quel file, in base a
autorizzazioni di gruppo.
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:
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.
278
Pagina 319
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.
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).
279
Pagina 320
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 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:
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:
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.
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
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?
282
Pagina 323
CAPITOLO
12
Gestione di dischi e file system
IN QUESTO CAPITOLO
Creazione di partizioni del disco
Aggiunta di 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.
Pagina 324
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
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.
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.
285
Pagina 326
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.
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):
286
Pagina 327
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:
Pagina 328
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à.
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.
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
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
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.
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
290
Pagina 331
È 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
291
Pagina 332
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
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
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
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
■ 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.
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.
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:
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.
# vgdisplay vg_abc
--- Gruppo di volumi ---
Nome VG vg_abc
ID di sistema
296
Pagina 337
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
/ 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:
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.
Gruppo di volumi
vg_abc
(vg)
298
Pagina 339
Ora che sai come funziona LVM, la sezione successiva mostra come creare logico LVM
volumi da zero.
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
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
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
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
3. Ridimensiona il filesystem per adattarlo alla nuova dimensione del volume logico:
# resize2fs -p / dev / mapper / myvg0-music
300
Pagina 341
# 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.
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.
301
Pagina 342
Pagina 343
■ 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.
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
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
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
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
# free -m
Mem: 1955 1720 235 0 42 1310
- / + buffer / cache: 367 1588
Scambio: 819 0 819
# / 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
/ 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
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.
307
Pagina 348
$ 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:
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:
308
Pagina 349
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:
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.
Questo smonta il dispositivo dal punto di montaggio / mnt / test. Puoi anche smontare usando
questa forma:
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
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.
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.
310
Pagina 351
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
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.
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.
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
Capitolo 17
Configurazione di un server Web
Pagina 355
354
CAPITOLO
Capire il server
13
Amministrazione
IN QUESTO CAPITOLO
Amministrazione di server Linux
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.
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.
316
Pagina 357
■ 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
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
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.
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
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
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".
È 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 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
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. "
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
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.
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 ).
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.
323
Pagina 364
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:
324
Pagina 365
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.
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
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
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.
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.
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).
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 [email protected]
L'autenticità dell'host "10 .140.67.23 (10.140.67.23) "
non può essere stabilito.
326
Pagina 367
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
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:
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:
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:
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
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 [email protected]
password di [email protected] : **********
$ system-config-network &
$ gedit &
$ exit
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 [email protected]: / tmp
password di [email protected] : ***************
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 [email protected]: / usr / share / man / man1 / / tmp /
password di [email protected] : ***************
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
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:
■ 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:
330
Pagina 371
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.
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:
Successivamente, sul sistema locale, esegui rsync per copiare qualsiasi nuovo file (in questo caso, solo il file
directory e il nuovo file, 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
Il risultato è che il file dei servizi viene eliminato sul sistema locale, rendendo il file remoto e
strutture di directory locali sincronizzate.
$ sftp [email protected]
Connessione a jd.example.com
password di [email protected] : ***************
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.
332
Pagina 373
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 [email protected]
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:
333
Pagina 374
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:
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.
È 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.
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
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):
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.
336
Pagina 377
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:
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.
337
Pagina 378
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.
■ 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
338
Pagina 379
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.
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 = [email protected]
# posta
Heirloom Mail versione 12.5 7/5/10. Genere ? per un aiuto.
"/ var / spool / mail / root": 2 messaggi 2 nuovi
> N 1 [email protected] Sun Feb 15 04:02 45/664 "Logwatch for abc"
2 [email protected] lun 16 feb 04:02 45/664 "Logwatch per abc"
&1
&x
339
Pagina 380
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.
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
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.
Pagina 382
$ 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:
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
$ 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.
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:
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):
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
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
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
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
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.
10. Trova tutti i file nella directory / usr di dimensioni superiori a 10 MB.
346
Pagina 387
CAPITOLO
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
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:
348
Pagina 389
349
Pagina 390
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.
FIGURA 14.1
350
Pagina 391
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
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.
# 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.
352
Pagina 393
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)
$ 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.
# 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
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
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.
# 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.
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.
355
Pagina 396
■ 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
■È 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
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:
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.
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
# 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
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.
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).
358
Pagina 399
■ 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
359
Pagina 400
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.
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).
Pagina 401
FIGURA 14.5
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.
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
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.
362
Pagina 403
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 RHEL 7 e sistemi Fedora più recenti che utilizzano il comando systemctl per avviare, arrestare,
abilitare e disabilitare i servizi, è possibile digitare quanto segue:
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
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
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
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).
GATEWAY = 192.168.0.1
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.
365
Pagina 406
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:
/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:
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
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:
367
Pagina 408
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:
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
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"
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
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:
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.
■ 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
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.
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.
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
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.)
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.
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.
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.
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.
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
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.
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
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.
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.
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
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
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.
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
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.
■ RHEL versione 6
■ Fedora versioni dalla 9 alla 14
■ Versioni Ubuntu 6–14.10
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
■ 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- [email protected]
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.
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
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:
# Trap CTRL-ALT-CANC
ca :: ctrlaltdel: / sbin / shutdown -t3 -r ora
pf :: powerfail: / sbin / shutdown -f -h +2
"Interruzione di corrente; arresto del sistema"
381
Pagina 422
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
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.
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
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
# 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
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
384
Pagina 425
# 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
385
Pagina 426
. /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).
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
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
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.
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:
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.
388
Pagina 429
Capitolo 15: Avvio e arresto dei servizi
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.
$ 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
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
390
Pagina 431
$ 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.
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.
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.
391
Pagina 432
■ 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.
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
393
Pagina 434
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
394
Pagina 435
■ 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.
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:
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.
Pagina 436
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.
È 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.
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
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.
397
Pagina 438
■ 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.
398
Pagina 439
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
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:
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.
399
Pagina 440
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.
# 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.
400
Pagina 441
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.
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.
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
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 è.
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.
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
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.
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.
403
Pagina 444
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.
Per riavviare un servizio SysVinit, viene utilizzata l'opzione di riavvio. Questa opzione interrompe il servizio e
quindi lo riavvia immediatamente.
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.
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.
Se un servizio SysVinit viene interrotto quando si tenta di ricaricarlo, viene visualizzato lo stato FAILED.
Questo è mostrato nel seguente esempio:
404
Pagina 445
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
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.
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
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.
407
Pagina 448
Parte IV: diventare un amministratore di server Linux
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.
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
# 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:
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:
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.
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.
409
Pagina 450
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.
410
Pagina 451
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:
411
Pagina 452
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.
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.
412
Pagina 453
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.
$ 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
■ 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
# 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.
# 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
Pagina 455
2. Spostare lo script di servizio nuovo o personalizzato nella posizione corretta per SysVinit
gestione.
3. Aggiungere il servizio a un runlevel specifico.
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
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.
# 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
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
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
418
Pagina 459
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:
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.
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.
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
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.
È possibile inserire il file dell'unità di configurazione del servizio di sistema in uno dei due seguenti
località:
I file qui sono usati dal sistema anche se c'è un file con lo stesso nome in / lib /
directory 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.
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
# 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
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
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).
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?
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?
422
Pagina 463
CAPITOLO
16
Configurazione di un server di stampa
IN QUESTO CAPITOLO
Capire la stampa in Linux
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).
423
Pagina 464
Invece di usare la finestra Impostazioni di stampa, puoi configurare la stampa CUPS in altri
modi anche:
424
Pagina 465
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:
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
425
Pagina 466
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.
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
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.
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
■ 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
428
Pagina 469
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).
1. Selezionare Impostazioni di stampa dalla schermata Attività o digitare quanto segue come root
utente da una finestra di Terminale:
# system-config-printer &
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.
Pagina 470
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
431
Pagina 472
■ 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.
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:
3. A seconda del tipo di porte che hai sul tuo computer, seleziona una delle
il seguente:
432
Pagina 473
■ 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.
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).
Pagina 474
■ 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.)
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:
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
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: //:
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:
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.
435
Pagina 476
strumenti e file di configurazione forniti con CUPS. Le sezioni seguenti descrivono come
utilizzare alcune caratteristiche speciali di CUPS.
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
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
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:
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:
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).
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
In Fedora 21 e RHEL 7, si utilizza il comando systemctl invece del servizio per l'avvio
e fermare i servizi:
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:
Consultare il Capitolo 15, "Avvio e arresto dei servizi", per ulteriori informazioni su systemctl
e comandi di servizio per lavorare con i servizi.
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
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
Dopodiché, puoi stampare i file come dati grezzi sulle tue stampanti senza usare l'opzione -oraw per stampare i comandi.
È 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
$ 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:
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:
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 .
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
attualmente disabilitato (offline), sebbene la coda sia abilitata in modo che le persone possano continuare a inviare
lavori alla stampante.
$ 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
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
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.
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:
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:
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
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
443
Pagina 484
predefinito. La sezione successiva mostra l'aspetto delle impostazioni risultanti e come potresti farlo
voglio cambiarli.
[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
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
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.
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.
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.
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
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
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).
449
Pagina 490
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).
# yumdownloader httpd
# rpm -qpi httpd- * rpm
Nome : httpd
Versione: 2.4.10
Versione: 1.fc20
450
Pagina 491
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
/ 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:
Ecco i pacchetti, insieme al pacchetto httpd, nel gruppo Server Web in Fedora
che ottieni per impostazione predefinita:
452
Pagina 493
FIGURA 17.1
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
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:
Nei recenti sistemi Fedora e RHEL 7, si abilita e si avvia httpd utilizzando systemctl
comando:
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
log files. Riavvia il servizio httpd affinché le modifiche abbiano effetto. Digita il comando ps su
assicurati che le opzioni abbiano effetto:
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.
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:
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
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:
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:
456
Pagina 497
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.
457
Pagina 498
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.
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
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.
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
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.
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.
Le seguenti impostazioni mostrano le posizioni in cui il server httpd sta ottenendo e mettendo
contenuto per impostazione predefinita:
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
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
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.
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
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 [email protected]
ServerName www.example.org
ServerAlias web.example.org
DocumentRoot /var/www/html/example.org/
DirectoryIndex index.php index.html index.htm
</VirtualHost>
463
Pagina 504
■ 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.
464
Pagina 505
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>
4. Impostare l'autorizzazione di esecuzione (come utente root) per consentire al daemon httpd di accedere
la home directory:
# chmod + x / home / home / *
6. Impostare il booleano SELinux per consentire agli utenti di condividere il contenuto HTML dalla propria casa
directory:
# setsebool –P httpd_enable_homedirs true
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 .
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#).
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
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.
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:
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
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:
FIGURA 17.2
Questa pagina ti avverte che non c'è modo di verificare chi ha creato il certificato che stai accettando.
468
Pagina 509
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.
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.
469
Pagina 510
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.
470
Pagina 511
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.
471
Pagina 512
# apachectl configtest
Sintassi OK
# apachectl grazioso
/ usr / sbin / apachectl grazioso: httpd riavviato con grazia
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.
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
È 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.
473
Pagina 514
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.
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.
474
Pagina 515
■ 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
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à.
4. Utilizzare il comando netstat per vedere su quali porte è in ascolto il server httpd.
8. Utilizzare un browser Web per creare una connessione HTTPS al server Web e visualizzare il file
contenuto del certificato che hai creato.
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
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
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
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.
Se stai usando Ubuntu (o un'altra distribuzione Linux basata su pacchetti Debian), digita il
seguente per installare 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:
È 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:
479
Pagina 520
/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.
Ora hai vsftpd installato e hai dato una rapida occhiata al suo contenuto. Il prossimo passo
è avviare e testare il servizio vsftpd.
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.
In Red Hat Enterprise Linux 6, sono necessari due comandi per visualizzare le stesse informazioni:
481
Pagina 522
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:
Ora, su entrambi i sistemi, puoi verificare che il servizio sia in esecuzione utilizzando netstat
comando:
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:
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
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.
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).
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
È 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
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
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:
485
Pagina 526
Prova di nuovo ad accedere al tuo server FTP da un sistema remoto (utilizzando un browser web o alcuni
altro client FTP).
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:
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 ).
# getenforce
Far rispettare
# grep ^ SELINUX = / etc / sysconfig / selinux
SELINUX = imporre
■ 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
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:
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:
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
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.
Ricordarsi di riavviare il servizio vsftpd dopo aver apportato modifiche alla configurazione.
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:
488
Pagina 529
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.
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
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:
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
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.
/usr/share/doc/vsftpd-*/EXAMPLE/INTERNET_SITE/vsftpd.conf
# 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
# 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
# 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à.
# 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.
492
Pagina 533
tra il client e il server FTP, è possibile utilizzare client FTP da riga di comando. Il seguente
la sezione descrive alcuni di questi strumenti.
FIGURA 18.2
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:
493
Pagina 534
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:
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
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.
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
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
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
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.
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
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.
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.
Ecco una guida rapida per far funzionare Samba SWAT sul tuo sistema RHEL 6:
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:
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:
501
Pagina 542
Dimensioni installate: 25 M.
Va bene [y / d / N]: y
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.
■ 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
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:
# 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
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:
504
Pagina 545
In RHEL 6 e versioni precedenti, digitare quanto segue per avviare il servizio 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:
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
Samba su sistemi esterni al sistema locale, oltre a consentire alcune funzionalità di Samba che potrebbero
essere disattivato da SELinux.
In RHEL 6 e versioni precedenti, digitare quanto segue per arrestare i servizi smb e nmb:
Per impedire l'avvio dei servizi smb e nmb al successivo riavvio del sistema, digitare
i seguenti comandi in Fedora o RHEL 7:
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
■ 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.
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
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.
508
Pagina 549
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:
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:
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
509
Pagina 550
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:
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:
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.
510
Pagina 551
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:
# 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.
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
FIGURA 19.1
FIGURA 19.2
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.
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
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
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
FIGURA 19.4
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
514
Pagina 555
qualsiasi utente assegnato alla condivisione può accedervi. Per fare queste cose, digita quanto segue come
utente root da una shell sul server Samba:
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):
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
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.
■ [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.
[globale]
gruppo di lavoro = gruppo di dati
stringa del server = Dati di vendita
516
Pagina 557
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
[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
518
Pagina 559
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.
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).
[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.
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.
Di seguito sono riportati alcuni esempi di host che consentono e host negano le voci:
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
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:
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:
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:
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.
521
Pagina 562
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
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
FIGURA 19.7
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:
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:
523
Pagina 564
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.
FIGURA 19.8
524
Pagina 565
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.
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.
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
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.
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
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
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
/ 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 /
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
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.
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:
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
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:
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:
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
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.
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
FIGURA 20.2
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:
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
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.
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
■ 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
■ 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.)
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.
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.
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
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.
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.
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
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.
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
537
Pagina 578
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:
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:
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
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.
# 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:
539
Pagina 580
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:
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.
540
Pagina 581
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.
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
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.
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.)
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
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.
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):
543
Pagina 584
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
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.
[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.
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
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.
$ 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.
546
Pagina 587
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.
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.
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
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.
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
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
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.
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.
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
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.
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.
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.
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
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.
■ Accensione dell'alimentazione
■ Avvio dell'hardware (dal BIOS o dal firmware UEFI)
551
Pagina 592
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.
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
È 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.
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
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.
■ 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
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
■ 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.
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:
558
Pagina 599
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).
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
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.
Pagina 601
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.
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
■ 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.
562
Pagina 603
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
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
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
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.
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
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.
# 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
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:
566
Pagina 607
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
...
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.
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
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:
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
Quando incontri un problema di dipendenza, ecco alcune cose che puoi fare per provare a farlo
Risolvi il problema:
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
■ 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 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:
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
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:
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:
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.
A questo punto, il sistema ottiene informazioni aggiornate dai repository la prossima volta che un file
il comando yum viene eseguito.
573
Pagina 614
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.
# 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.
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
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 ---
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
# 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.
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
576
Pagina 617
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.
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.
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
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.
578
Pagina 619
# 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:
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.
Pagina 620
systemctl status httpd to check), la prossima cosa da controllare è che sia in ascolto
le porte e le interfacce di rete appropriate.
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:
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).
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
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.
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.
581
Pagina 622
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.
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
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.
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
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.
584
Pagina 625
■ 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.
585
Pagina 626
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.)
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:
586
Pagina 627
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
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.
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
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.
591
Pagina 632
La sicurezza fisica di base della sala server include elementi come questi:
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".
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
■ 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à.
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
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:
■ Tutto l'uso di sudo (who, what, when) è registrato in / var / log / secure.
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.
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.
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.
La data di scadenza dell'account è stata modificata con successo per tim al 1 gennaio 2017.
594
Pagina 635
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.
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
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.
$ 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.
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
■ 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.
■ 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:
■ Lettere minuscole
■ Lettere maiuscole
■ Numeri
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
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.
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
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.
■ 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
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.
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.
600
Pagina 641
# 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 -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.
601
Pagina 642
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.
È 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
Quanto segue è anche memorizzato nel file / etc / shadow, oltre al nome dell'account
e password con hash:
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.
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.
603
Pagina 644
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:
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.
■ 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
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:
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
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
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
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:
■ nodev
■ noexec
■ nodev
■ noexec
606
Pagina 647
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.
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.
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
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.
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.
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.
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.
608
Pagina 649
Continua
609
Pagina 650
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
dmesg dmesg
lastlog lastlog
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.
# journalctl -k
- I registri iniziano a domenica 17 agosto 2014 15:33:30 EDT,
610
Pagina 651
...
# 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
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:
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:
612
Pagina 653
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:
613
Pagina 654
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.
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:
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
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.
# 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.
615
Pagina 656
Codice Discrepanza
L Collegamenti simbolici
U Proprietà dell'utente
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.
616
Pagina 657
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:
È 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.
Continua
617
Pagina 658
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.
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
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.
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
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.
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
620
Pagina 661
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
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.
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.
622
Pagina 663
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
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.
623
Pagina 664
■ 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
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.
8. Installa ed esegui chkrootkit per vedere se è stato installato l'attacco dannoso dell'Esercizio 7
un rootkit.
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
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.
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
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:
■ 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
Numero Digest 5 (MD5) che puoi utilizzare per assicurarti che l'immagine ISO scaricata non lo fosse
danneggiato durante il download.
FIGURA 23.1
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
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.
■ 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 .
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.
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
Metodo Descrizione
Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso fino a
Chiave a 128 bit per crittografia / decrittografia.
Cifratura a blocchi, crittografia dei dati in blocchi a 64 bit utilizzando lo stesso 56 bit
chiave per crittografare / decrittografare.
Crittografia simmetrica.
I dati vengono crittografati fino a 48 volte con 3 diverse chiavi a 56 bit prima
il processo di crittografia è completato.
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.
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.
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.
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.
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.
632
Pagina 673
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
23
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
$ 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
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) < [email protected]>
sub 2048R / 0F0E0672 2015-12-087 [scadenza: 15/12/2016]
634
Pagina 675
Nell'esempio precedente, l'utilità gpg2 richiede diverse specifiche per generare il file
chiavi private / pubbliche desiderate:
■ 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) < [email protected]>
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.
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
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:
$ ls MessageForJohn
MessageForJohn
$ gpg2 --out JillsMessage --decrypt MessageForJohn
636
Pagina 677
Per rivedere, i passaggi necessari per la crittografia / decrittografia dei file utilizzando chiavi asimmetriche
include il seguente:
4. Le persone che desiderano inviarti file crittografati aggiungono la tua chiave pubblica al loro portachiavi.
Puoi vedere perché le chiavi asimmetriche possono causare confusione! Ricordalo in asimmetrico
crittografia, ogni chiave pubblica e privata è un insieme accoppiato che funziona insieme.
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.
5. Il destinatario ricrea l'hash o il digest del messaggio del file crittografato ricevuto.
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
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.
■ Crea un digest del messaggio (noto anche come hash) del file del messaggio
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.
638
Pagina 679
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.
$ 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
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
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
FIGURA 23.4
FIGURA 23.5
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
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.
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.
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
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.
643
Pagina 684
■ Tipo di chiave
■ Passphrase
■ Cipher
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.
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.
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.
644
Pagina 685
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.
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.
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.
645
Pagina 686
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.
Attrezzo Descrizione
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.
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.
■ 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.
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
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.
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
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.
I vantaggi dell'utilizzo di PAM sul proprio sistema Linux includono quanto segue:
Sebbene i vantaggi di PAM semplifichino la gestione dell'autenticazione, il modo in cui PAM effettivamente
funziona non è così semplice.
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
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.
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 è:
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.
650
Pagina 691
Capitolo 23: Comprensione della sicurezza Linux avanzata
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
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.
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
TABELLA 23.4 Flag di controllo della configurazione PAM e gestione delle risposte
necessario Se fallito, restituisce uno stato di errore all'applicazione, dopo il resto dei contesti
sono stati eseguiti nello stack.
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.)
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.
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".
Su Ubuntu, per trovare i tuoi moduli PAM, digita il comando sudo find / -name pam * .so nella riga di comando.
652
Pagina 693
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
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
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.
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.
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.
$ 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
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.
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.
655
Pagina 696
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.
656
Pagina 697
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.
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.
$ 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
Il dominio e il tipo degli elementi di formato richiedono una spiegazione ulteriore rispetto a quanto documentato
nel file di configurazione:
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 #.
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.
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.
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.
658
Pagina 699
$ 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
...
■ 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)
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.
659
Pagina 700
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.
È possibile utilizzare moduli PAM e file di configurazione aggiuntivi per impostare ancora più restrizioni
sugli argomenti. Un importante modulo di sicurezza è pam_cracklib.
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
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
■ riprova =N
■ Predefinito =1
■ Chiedi all'utente al massimo N volte prima di tornare con un errore.
661
Pagina 702
■ 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
■ 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
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:
663
Pagina 704
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:
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
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
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
# 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.
■ 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.
667
Pagina 708
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à).
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.
668
Pagina 709
CAPITOLO
24
Migliorare la sicurezza di Linux con
SELinux
IN QUESTO CAPITOLO
Informazioni sui vantaggi di SELinux
Configurazione di 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.
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).
669
Pagina 710
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.
670
Pagina 711
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.
■ 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:
■ 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
$ ls -Z my_stuff
-rw-rw-r--. johndoe johndoe
unconfined_u: object_r: user_home_t: s0 my_stuff
671
Pagina 712
■ 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.
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.
Pagina 713
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.
■ Modalità operative
■ Contesti di sicurezza
■ Tipi di 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.
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
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.
■ 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.
■ 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
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à
675
Pagina 716
$ id
uid = 1000 (johndoe) gid = 1000 (johndoe) gruppi = 1000 (johndoe)
context = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023
$ ls -Z my_stuff
-rw-rw-r--. johndoe johndoe
unconfined_u: object_r: user_home_t: s0 my_stuff
676
Pagina 717
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.
■ livello—
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.
■ Mirato
■ MLS
■ Minimo
677
Pagina 718
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.
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.
678
Pagina 719
# 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:
679
Pagina 720
Questo file di configurazione principale di SELinux consente di impostare la modalità e il tipo di politica.
# 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.
# setenforce 0
# getenforce
680
Pagina 721
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.
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.
681
Pagina 722
Il file di configurazione di SELinux primario non contiene solo l'impostazione della modalità. Inoltre specifica
ifies il tipo di criterio, che verrà applicato.
■ 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.
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
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.
Opzione Descrizione
-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.
# 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:
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
# 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.
# 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.
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.
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
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
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
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
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.
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.
688
Pagina 729
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.
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.
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:
689
Pagina 730
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.
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.
690
Pagina 731
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
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.
Pagina 732
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.
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.
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
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:
Ora il demone httpd ha il permesso di accedere ai file HTML nel loro non standard
posizione della directory.
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.
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
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:
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.
È 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
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.
■ 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
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à).
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.)
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
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
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.
699
Pagina 740
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
Per installare nmap su una distribuzione Fedora o RHEL, usa il comando yum (usando root
privilegi), come mostrato nell'esempio che segue.
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
■ 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
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.
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.
703
Pagina 744
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.
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.
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
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
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
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.
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
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
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):
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.
Pagina 748
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.
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.
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:
708
Pagina 749
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.
sshd: 199.170.177.
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
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.
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
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.
711
Pagina 752
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:
Per gestire il servizio firewalld, è possibile avviare la finestra Configurazione firewall. Fare
questo digitando:
# firewall-config &
FIGURA 25.1
Configurazione firewall
712
Pagina 753
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.
■ Tabelle
■ Catene
■ Politiche
■ Regole
Ciascuna di queste basi è fondamentale per configurare e gestire il tuo server Linux
firewall correttamente.
■ 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
■ 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.
714
Pagina 755
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.
■ 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:
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
■ 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 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.
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
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.
■- 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
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
■- s indirizzo IP
■- protocollo p
■- porta dport #
■- 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
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:
718
Pagina 759
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.
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.
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.
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.
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
720
Pagina 761
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 [email protected]
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
$ ssh [email protected]
Password di [email protected] :
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 [email protected]
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.
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
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.
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.
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
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
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.
729
Pagina 770
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.
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
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.
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
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.
732
Pagina 773
La configurazione che creiamo durante questa procedura ti consente di lavorare con macchine virtuali in
seguenti modi:
733
Pagina 774
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.
■ 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
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).
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
È 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:
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.
736
Pagina 777
# 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).
737
Pagina 778
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.)
738
Pagina 779
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
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)
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
Per i sistemi che utilizzano iptables direttamente, vedere il Capitolo 20 per informazioni su come farlo
apri il tuo firewall per il servizio NFS.
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:
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.
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.
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):
Poiché quella directory è condivisa da entrambi gli hypervisor, puoi andare a uno qualsiasi degli hypervisor
usa quell'immagine.
Effettuare le seguenti operazioni su ogni hypervisor per controllare il bridge per ciascuno:
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
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
742
Pagina 783
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.
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.
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.
743
Pagina 784
FIGURA 26.2
■ 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
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:
Con tutto ciò, la migrazione in tempo reale richiede solo pochi passaggi per andare avanti.
745
Pagina 786
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.
FIGURA 26.3
Pagina 787
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.
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.
Pagina 788
8. Verifica che la tua macchina virtuale possa connettersi a Internet o ad un'altra rete
fuori dall'hypervisor.
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
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.
749
Pagina 790
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:
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
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.
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.
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
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:
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}
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
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 &
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.
# 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:
753
Pagina 794
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.
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
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
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
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.
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
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
A questo punto, hai un'istanza cloud di Ubuntu semplice in esecuzione. Accedi come utente
ubuntu e la password definita nel file dati utente.
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:
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
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwjx
B / rrJY4oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24 / ZBb3S1j7vK2WymOcwEoWekhbZH
BAyYeqXKYQQjUB2E2Mr6qMkmrjQBx6ypxbz + VwADNCwegY5RCUoNjrN43GVu6nSOxhFf7
hv6dtCjvosOvtt0979YS3UcEyrobpNzreGSJ8FMPMRFMWWg68Jz5hOMCIE1IldhpODvQV
bTNsn / STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kIDhf / qu / Zn1kxQ9xfecQ + SUi + 2IwN6
9o1fNpexJPFr + Bwjkwcrk58C6uowG5eNSgnuu7GMUkT [email protected]
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).
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).
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
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]
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.
759
Pagina 800
Parte VI: estensione di Linux nel cloud
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.
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:
760
Pagina 801
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.
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.
761
Pagina 802
FIGURA 27.2
762
Pagina 803
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
Una volta installata la rete, puoi creare chiavi da utilizzare per accedere alle tue macchine virtuali
in OpenStack.
763
Pagina 804
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).
764
Pagina 805
■ 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.
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- [email protected]
Ora dovresti essere in grado di accedere senza password. Per fare l'amministrazione sul sistema,
puoi usare il comando sudo come utente predefinito.
765
Pagina 806
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
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
su alcune immagini cloud, combinarle con i dati e avviarle su un hypervisor Linux locale
sor per capire come funzionano le immagini cloud.
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
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:
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.
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:
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
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.
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.
FIGURA A.2
1. Fare clic sul pulsante Download. Per impostazione predefinita, questo scarica il 64 bit più recente UN
Immagine ISO live del desktop di Ubuntu.
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.
■ 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à.
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.
1. Scarica l'immagine ISO che desideri sul tuo sistema Mac OS X. Un'icona che rappresenta
l'ISO dovrebbe apparire sul desktop.
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.
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.
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.
# cdrecord -v qualunque.iso
Vedere la pagina man di cdrecord (man cdrecord) per altre opzioni disponibili con
comando cdrecord.
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.
780
Pagina 821
APPENDICE
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.
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
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.
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:
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
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:
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
un. Tieni premuto Ctrl + Alt e premi F2 (Ctrl + Alt + F2). Dovrebbe apparire una console basata su testo.
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.)
un. Dal desktop GNOME, selezionare Applicazioni ➪ Strumenti di sistema ➪ Terminale per aprire
una finestra di terminale.
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.
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
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 /.
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).
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
$ man 2 mount
MOUNT (2) Manuale del programmatore Linux MONTATURA (2)
NOME
mount - monta il file system
SINOSSI
#include <sys / mount.h>
.
.
.
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
786
Pagina 827
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
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
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 \;
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
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 &
789
Pagina 830
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.
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
790
Pagina 831
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)."
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:
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.
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
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.
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
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:
792
Pagina 833
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
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.
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
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
795
Pagina 836
Appendice B: Risposte agli esercizi
2. Per aggiornare i pacchetti, dopo che l'installazione del supporto Fedora Live è stata completata, eseguire il
a seguire:
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.
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).
g. Fare clic sul pulsante più (+) nella parte inferiore dello schermo. Quindi aggiungi ciascuno dei seguenti
abbassare i punti di montaggio:
796
Pagina 837
/ 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.
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
797
Pagina 838
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
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
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
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
# 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
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
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
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
803
Pagina 844
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
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
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 [email protected]
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 == [email protected]
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
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
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
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
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
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
809
Pagina 850
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.
■ 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.
810
Pagina 851
■ 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 ...
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
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
■ 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.
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
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.
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:
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.
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
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
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
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
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:
817
Pagina 858
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.
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
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
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
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:
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
820
Pagina 861
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
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
...
Pagina 862
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
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).
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
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
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
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)
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
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
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
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:
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 .
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
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
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:
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
f. La memoria RES utilizzata dovrebbe diminuire in modo significativo sulla riga Mem. I numeri
nella colonna RES per ogni processo dovrebbe anche scendere.
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
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
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
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
830
Pagina 871
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
4. Per crittografare un file e aggiungere la tua firma digitale utilizzando l'utility gpg2, esegui il
a seguire:
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.
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.
831
Pagina 872
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
Le impostazioni in questo file per evitare che un fork bomba sia simile al seguente:
@staff hard nproc 50
@staff hard maxlogins 1
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
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.
un. Il contesto utente del processo è system_u, che indica un processo di sistema.
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
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.
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
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
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
# ifconfig
...
p2p1 Link encap: Ethernet HWaddr 08: 00: 27: E5: 89: 5A
inet addr: 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
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.
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:
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
837
Pagina 878
6. Per installare una macchina virtuale utilizzando l'immagine ISO copiata in precedenza, eseguire il
a seguire.
d. Seleziona Sfoglia, scegli l'ISO live o installa, fai clic su Scegli volume e fai clic su
Inoltrare.
f. Seleziona la dimensione del disco che desideri utilizzare e fai clic su Avanti.
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.
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
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
842
Pagina 883
Indice
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
845
Pagina 886
Indice
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
848
Pagina 889
Indice
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
850
Pagina 891
Indice
851
Pagina 892
Indice
852
Pagina 893
Indice
853
Pagina 894
Indice
854
Pagina 895
Indice
855
Pagina 896
Indice
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
858
Pagina 899
Indice
X
X Windowing System, 30–32
Registro X.Org X11, 610
Inoltro X11, 328–329
859
Pagina 900
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.
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
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.
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.
Un "lavoro coperto" indica il Programma non modificato o un'opera basata sul Programma.
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
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
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.
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.
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.
È 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
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.
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
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).
Pagina 906
7. Termini aggiuntivi.
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:
Pagina 907
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.
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
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.
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
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.
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.
Pagina 910
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.
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.
Pagina 911
IL PROGRAMMA PER FUNZIONARE CON QUALSIASI ALTRI PROGRAMMI), ANCHE SE TALE TITOLARE O ALTRO
LA PARTE È STATA INFORMATA DELLA POSSIBILITÀ DI TALI DANNI.
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.
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:
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 /.
Pagina 914
913