Corso Linux

139
Corso Base su Corso Base su Linux Linux Basato su Fedora 7 Basato su Fedora 7 Lezione 1 Lezione 1

description

 

Transcript of Corso Linux

Page 1: Corso Linux

Corso Base suCorso Base suLinuxLinux

Basato su Fedora 7Basato su Fedora 7Lezione 1Lezione 1

Page 2: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 2

Linux: Corso baseObiettivi del corso

●Fornire le informazioni per installare, configurare e amministrare un sistema Linux.●Dare una buona preparazione sistemistica, utile sia per sysadmin Linux che Unix in genere.

●Mettere in grado i partecipanti di approfondire necessità specifiche conoscendo le basi del sistema operativo.

●Affrontare problematiche reali, confrontare Linux con altri sistemi operativi e fare diretti riferimenti al mondo Internet.

Prerequisiti

● Buona conoscenza e affinità con i computer (hardware e software) ed Internet.● Conoscenza dei protocolli TCP/IP● Conoscenza di altri sistemi operativi Unix e dell'inglese (preferibile).

Page 3: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 3

Background e storiaCos'è Unix ?

Unix è un sistema operativo, nato nel 1969 presso i Bell Labs ad opera di Dennis Ritchie, Ken Thompson, Brian Kernighan ed altri programmatori.

Inizialmente chiunque fosse interessato e possedesse l'hardware occorrente, poteva chiedere ad un costo irrisorio un nastro del software ed i relativi manuali stampati.

Questo accadeva prima dell'avvento dei personal computer, pertanto si trattava in genere di università e centri di ricerca. I singoli centri modificavano il codice sorgente ampliando e personalizzando il sistema in base alle loro necessità.

Una tappa importante è stata raggiunta alla fine degli anni '70 con la realizzazione della versione BSD (Berkley System Distribution) ad opera di alcuni esperti di informatica dell'Università della California di Berkley, che apportarono diverse migliorie, la più importante fu l'adozione del protocollo TCP/IP.

Il codice sorgente venne reso pubblicamente disponibile con una licenza che ne consentiva la distribuzione con o senza codice sorgente, a condizione che queste parti del codice venissero ascrittte a Berkley.

Page 4: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 4

Il software libero (free)Evoluzione di Unix

La popolarità di Unix aumentò con il trascorrere degli anni.La Berkley cedette ad AT&T i diritti sul software e Unix divenne un prodotto

commerciale, con costo elevato ed il codice sorgente non era incluso.Anche acquistando separatamente una copia dei sorgenti, non era più possibile

modificarli e condividere le migliorie apportate con altri programmatori.Altre società commerciali adottarono la modalità di distribuzione del software senza

sorgenti, ponendo le basi di un nuovo modello di sviluppo proprietario.

Nel 1984 Richard Stallman, invece di cedere a questa nuova tendenza, decise di dare vita ad un nuovo sistema operativo di tipo Unix il cui codice sorgente potesse essere liberamente copiato e modificato. Nacque il progetto GNU (GNU is Not Unix).

Il nuovo modello di sviluppo prese il nome di Software Libero (free software).Venne scritta una licenza specifica GNU General Public License (nota come GPL,

http://www.gnu.org/copyleft/gpl.txt) che aggirasse i limiti imposti dai diritti d'autore e consentisse a chiunque di copiare e modificare un lavoro, seppur nel rispetto di condizioni e termini rigorosi.

E' anche nota come licenza copyleft in contrapposizione al più noto copyright.

Page 5: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 5

Open SourceOpen Source o Sorgente Aperto

Il termine Open Source venne introdotto nel 1998 quale termine commerciale per indicare il “software libero”.Si voleva enfatizzare il fatto che il software Open Source non vuol dire necessariamente GRATUITO.E' stata fondata la OSI (Open Source Initiative) allo scopo di promuovere il software conforme alla Open Source Directive.Libero indica diverse “libertà” ad esempio:- Ridistribuzione Libera del software e del codice- Il Codice Sorgente è Aperto e disponibile per lettura, modifiche, analisi, controllo- Prodotti derivati da prodotti GPL devono avere licenza GPL- Copyright dell'autore

Differenza tra Open Source e Software Liberofree as beer vs. free as speech

Riferimentihttp://www.opensource.org/http://www.gnu.org/philosophy/free-software-for-freedom.html

Page 6: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 6

LinuxLa genesi

Agli inizi degli anni '90, Linus Torvald, uno studente finlandese in scienze dell'informazine iniziò ad apportare variazioni a Minix, un sistema operativo di tipo Unix per personal computer allora utilizzato nei corsi universitari sui sistemi operativi.

Torvald decise di migliorare il componente principale del software alla base di Minix, chiamato kernel, e di scriverne uno proprio.

Alla fine del 1991, Torvald pubblicò la prima versione di questo kernel su Internet e la battezzò “Linux”, un gioco di parole basato sul suo nome e Minix.

La forza di questo progetto fu l'adozione della licenza GNU GPL, in questo modo Linux risultava un software che poteva essere liberamente utilizzato, copiato e modificato da chiunque, a condizione che le stesse libertà fossero estese a tutte le copie e le varianti.

Nel tempo e da tutto il mondo migliaia di programmatori sparsi sull'intero pianeta contribuirono al suo progetto e Linux è diventato un sistema operativo completo, moderno e che può essere utilizzato sia da programmatori che da non addetti ai lavori.

Page 7: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 7

Fasi dello sviluppoDate importanti

Luglio 1991 Linus Benedict Torvalds, ancora un giovane studente dell' Università di Helsinki, inizia a lavorare al suo hobby: Linux.

5 Ottobre 1991 Nello stesso anno viene rilasciata la versione 0.02. Il post su usenet che ne annuncia la presenza è diventato un classico.

Gennaio 1992 Viene rilasciata la versione 0.12. Risulta relativamente stabile e supporta vario hardware.

Aprile 1992 Rilasciate la versione 0.95 e 0.96. Il salto è diretto dalla 0.12. Nascono le prime distribuzioni: la MCC Linux e la SLS.

1994 Viene rilasciata la prima versione definitiva 1.0.

Nascono RedHat, Debian, SUSE ad oggi le distribuzioni più diffuse.Linux, che resta copyrighted by Linus Torvalds, diventa ufficialmente un software aperto, abbracciando in pieno la General Public License (GPL) del movimento GNU Open Source.Nascono i primi LUGs (Linux User Groups), ormai diffusi anche in Italia.

Page 8: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 8

Fasi dello sviluppoDate importanti1995 Compaiono sul mercato nuove distribuzione commerciali come Caldera Linux.

Kernel 1.2 out in Marzo.Dal kernel 1.3 in sviluppo si passerà direttamente al 2.0

1996 Rilasciata la versione 2.0.Compaiono le prime versioni tradotte in più lingue.Linux necessita di una mascotte: nasce TUX, il pinguino più famoso al mondo.

1999 Dopo lunga attesa il kernel 2.2 vede la luce.

2001 Agli inizi dell'anno, dopo varie pre-version, su kernel.org appare l'immagine da 19.788.626 byte del 2.4.0 La prima release di un altro stable thread.

Oggi Linux è una reale alternativa al mondo Microsoft e Unix, si ritrova milioni di utenti, migliaia di sviluppatori e un mercato in espansione.E' presente in sistemi integrati, è usato per il controllo di dispositivi robotizzati e ha volato a bordo dello shuttle, praticamente gira su oggetti elettronici di tutti i tipi, dai palmari alle workstation Alpha, risultando l'OS in assoluto più soggetto a porting.

Page 9: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 9

KernelCos'è il kernel ?

Per kernel si intende il cuore di un sistema operativo.

Il codice che gestisce le risorse presenti sul sistema e le rende disponibili alle applicazioni.

Il kernel si occupa principalmente di gestire:

- le comunicazioni con l'hardware del sistema (device driver)- i file system e la memoria- l'accesso alle risorse da parte dei processi (le applicazioni eseguite sul sistema)

Page 10: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 10

KernelVersioni del kernel

Le versioni del kernel Linux sono identificate con numeri dal significato ben preciso. Per esempio il kernel 2.6.22 uno degli ultimi rilasciati ha:

Il Major Number identifica il valore più alto della revisione del kernel.

Il rilascio di un kernel con un Major Number successivo rappresenta un evoluzione “notevole” in termini di funzionalità e/o di architettura rispetto il precedente. I kernel della serie 1.x sono ormai piuttosto vecchi e non più usati.

2

6

Major Number

Minor Number

22 Revision (patch)

Major Number

Page 11: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 11

Kernel

Se Pari il kernel viene considerato stable e pronto per sistemi in produzione, Se Dispari si considera in development da usare con cautela o per sperimentazione. Le release stable sono sempre figlie delle devel precedenti. Per esempio il kernel stable è la versione 2.6.22, mentre quello in sviluppo è la 2.7.x (da cui deriverà la 2.8.x o direttamente la 3.0.x). Solitamente nei kernel stable si tende a fare maintenance e ad implementare solo le features strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalità.

Indica la revisione (patch) corrente. E' un numero progressivo che parte da 0. Tra due revisioni successive possono passare da pochi giorni a varie settimane.

Esistono inoltre varie patch temporanee, anche non di Torwalds stesso (comuni sono le -ac patch, di Alan Cox) che rappresentano stadi intermedi STABILI prima della release di una revisione definitiva. Ha senso utilizzarle subito solo in caso di utilizzo di kernel con gravi problemi di sicurezza o stabilità.

Minor Number

Revision (patch)

Page 12: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 12

KernelMonolitico o modulare ?Monolitico E' un singolo file binario eseguibile in modalità "kernel" che contiene il

gestore del processo, della memoria, del sistema, device driver ecc.. Esempi di tali sistemi sono UNIX, Linux, MS-DOS.

Modulare Per kernel Modulare si intende un kernel, con la capacità di caricare o scaricare parti di codice (moduli) secondo necessità e richieste. Può esserlo Linux configurandolo in fase di pre-compilazione.

Vantaggi e svantaggi

● Il kernel monolitico è più veloce, poichè tutto il codice è già stato caricato al bootstrap dell'OS, ma di contro occupa maggiori risorse del sistema.

● Un altro punto a favore è la maggiore stabilità: non richiede moduli evitando così pericolose dipendenze.

Il kernel modulare è quello utilizzato da tutte le distribuzioni LINUX.

Page 13: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 13

DistribuzioniKernel e ProgrammiUna Distribuzione (distro) è un confezionamento (packaging) di Linux, con procedure che rendono comoda e semplice l'installazione del Sistema Operativo e degli applicativi.

Le distribuzioni differiscono per:● Numero e versioni dei programmi installabili;● Versione del kernel utilizzata e modalità di pre-installazione (il kernel solitamente non

viene compilato durante una normale installazione);● Procedura di installazione (interfaccia utente e possibilità di definire opzioni e

scegliere quale software installare);● Organizzazione di file di configurazione, programmi, log nel file system;● Configurazioni predefinite del software installato.

Alcune distribuzioni sono disponibili in forma gratuita sotto licenza GPL.Altre sono a pagamento. Il costo è giustificato da:● maggiore stabilità (viene eseguito un debug più spinto prima di rilasciare una

versione)● presenza di programmi con licenza NON GPL● supporto tecnico

Page 14: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 14

DistribuzioniPrincipali distribuzioni

NoteDistribuzione WebRedHat www.redhat.com

Fedora 7 fedoraproject.org

Mandriva 2007 SpringS.U.S.E 10.2

Slackware 12

Debian 4.0 Rev 1

Orientata ad applicazioni di tipo Enterprise

Versione Open Source derivata da RedHat

ex Mandrake ha dovuto cambiare nome per problemi di copyright

Acquisita da Novell. Tramite Novell Open enterprise Server supporta i servizi Netware.

Una delle prime amata dai “puristi”

Storica

Preinstallata da DELL (Acer e Asus a breve)

KDE come Desktop Environmet

www.mandriva.org

www.suse.com

www.slackware.comndriva.orgwww.debian.com

www.ubuntu.comUbuntu 7.04

Kubuntu 7.04 (Feisty)

www.kubuntu.com

Linspire Pubblicizzata come la più facile da usare www.linspire.com

Page 15: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 15

DistribuzioniDistribuzioni specifiche

Un sito che contiene un elenco ragionato delle distribuzioni è: http://distrowatch.com

NoteDistribuzione WebCAElinux www.caelinux.com

INSERT www.inside-security.de

Gentoox

EduKnoppix

Devil-Linux

floppyfw

Specifica per il Computer Aided Engineering Recovery di sistemi Windows/Linux

Per l'utilizzo su su XboX

Interamente Italiana orientata a studenti e docenti

Firewall su CD Live

Firewall che sta su un floppy da 3.5”

Contiene programmi educativi

Ottimizzata per le prestazioni, indicata per computer poco potenti

gentoox.shallax.com

www.eduknoppix.org

www.devil-linux.org

www.zelow.no/floppyfw

Edubuntu 7.04

Xubuntu 7.04 (Feisty Fawn)

www.edubuntu.com

www.xubuntu.com

Per realizzare un server NASFreeNAS www.freenas.org

Page 16: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 16

Installazione - PreparazioneRaccolta informazioni sull'HardwareSolitamente durante l'installazione l'hardware viene rilevato automaticamente, ma possono esserci rari casi in cui questo non accade.In genere se si usa un PC standard con una nuova distribuzione non ci sono problemi nel riconoscimento di componenti e periferiche.

E' buona norma prima di iniziare una installazione conoscere le seguenti informazioni:● Sapere quali e quanti Hard Disk sono presenti sul sistema, come sono partizionati,

quali sono cancellabili.● Il tipo di computer su cui viene fatta l'installazione (server, desktop, laptop)● Configurazione di rete, se prevista (indirizzo IP, subnetmask, nome macchina, server

DNS).● Configurazioni base del sistema (layout di tastiera, nomi utenti e password, timezone)● I servizi che dovrà offrire (deve diventare un server? Di che tipo? Web, ftp, ecc ?)● I programmi che interessa installare (solitamente è possibile sceglierli per gruppi).

ImportanteLinux non è scritto SOLO per CPU Intel, vengono supportate moltissime architetture, ad esempio: Motorola 68K, Sun SPARC, Alpha, HP PA-Risc, ecc., nonché processori per sistemi embedded (System On Chip): ARM, Xscale, Etrax, ecc.

Page 17: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 17

Installazione – Requisiti di sistemaImportanteIn realtà, non esistono requisiti minimi, scegliendo la giusta distribuzione è possibile ancora oggi installare Linux su computer con processore Intel 80386, 4 Mb di RAM e HD da 20 Mb.Tutto dipende dall'uso che si deve fare.

Configurazione consigliata Distinguiamo tra i due principali campi di applicazione

DesktopProcessore di classe Pentium minimo 2 GhzRAM 512 Mb (meglio 1 Gb)Hard Disk 60 Gb (IDE o SATA)CD-ROM (meglio DVD)Scheda video con 32 Mb RAM (128 Mb e compatibile Open GL per usare effetti 3D)

ServerProcessore di classe Pentium minimo 2 GhzRAM 1 Gb (maggiori quantità dipendono dai servizi attivi)Hard Disk 60 Gb per il sistema operativo Hard disk aggiuntivi per i dati meglio se in architettura SCSICD-ROM (meglio DVD)

Page 18: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 18

Installazione – PartizionamentoDurante l'installazione verrà chiesto come partizionare il disco rigido.diskdruid o fdisk sono i programmi più utilizzati dalle varie distribuzioni.

Minimo

Sono richieste almeno due partizioni:- una partizione generale (/, root) in cui saranno memorizzati tutti i file.- una partizione di swap (usata come Memoria Virtuale)

Consigliato

E' preferibile creare le seguenti partizioni:- / (root), sotto la quale stanno tutte le altre directory- /boot (dove risiedono il kernel ed i file di boot. 120 Mb di spazio possono bastare)- /var (file che cambiano di dimensione, tipicamente i log. E' utile averla su partizione indipendente per evitare che un aumento inatteso dei log riempa tutto il filesystem (100 Mb).

- /home (file di tutti gli utenti. Può essere piccola e praticamente inutilizzata (mail, dns server) o molto grossa e piena di documenti (web, file server)

- /tmp dove risiedono file temporanei.

Page 19: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 19

Installazione – RipartizionamentoQualora ci trovassimo con un disco rigido già partizionato è possibile installare ugualmente Linux senza perdere i dati esistenti utilizzando Gparted.

Gnome PARTition Editor - http://gparted.sourceforge.net/

E' possibile ridimensionare le partizioni esistenti mantenendone il contenuto inalterato e liberare lo spazio necessario all'installazione di Linux.

Alcune distribuzioni permettono di utilizzare questo software durante l'installazione.

Si può scaricare una distribuzione Live minima (circa 50 Mb) per creare un CD o una chiave USB avviabile per eseguire il partizionamento e poi procedere all'installazione della propria distribuzione.

IMPORTANTEESEGUIRE SEMPRE UNA COPIA DEI DATI. In caso di un problema o una errata operazione è FACILISSIMO perdere il contenuto del proprio disco rigido.

Page 20: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 20

Installazione – DispositiviDevice

In Linux (come in Unix) i dispositivi sono rappresentati da file contenuti all'interno della cartella /dev.In particolare i dischi rigidi di tipo IDE vengono indicati con:

/dev/hda per il primo disco presente sul primo controller IDE/dev/hdb per il secondo disco IDEe così via.....

Qualora il disco fosse con architettura SCSI o SATA verrebbe identificato con /dev/sdaAllo stesso modo le partizioni presenti nel disco /dev/sda vengono indicate con:/dev/sda1, /dev/sda2, ecc..

Mount Point

Le partizioni per essere visibili devono essere montate all'interno di una directory sotto /.

Per ognuna va indicato il relativo punto di mount:

/dev/hda1=> /home/dev/sda2 => /

Page 21: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 21

Installazione – Boot LoaderDefinizioneIl boot loader effettua il caricamento del sistema operativo (NTLDR in Windows).I boot loader più diffusi sono LILO (LInux LOader) e GRUB, quest'ultimo sta progressivamente sostituendo LILO poiché essendo nato successivamente, ha migliorato alcune funzionalità e superato alcuni limiti di LILO.

Boot ManagerLILO o GRUB non si limitano SOLO al caricamento di Linux, ma sono a tutti gli effetti dei veri e propri BOOT MANAGER.Questo vuol dire che possono eseguire il caricamento di altri sistemi operativi (windows ad esempio) presenti sul disco rigido, dando all'utente in fase di boot la possibilità di scegliere quale usare.

InstallazioneDurante l'installazione verrà chiesto se installare il boot loader nel Master Boot Record (MBR) o all'interno di una partizione Linux (ext2 o ext3).Normalmente si installa nel MBR quando Linux è il solo sistema operativo o si vuole usare il boot loader anche come come boot manager.Utilizzando un boot manager differente l'installazione VA ESEGUITA all'interno della partizione principale di Linux / (root).L'installazione del boot loader va eseguita con molta cura, un errore può causare l'impossibilità di avviare il/i sistema/i operativo/i presenti su disco rigido.

Page 22: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 22

Installazione – Pacchetti

Tipologia

In genere ogni distribuzione permette di scegliere il tipo di installazione che si vuol fare proponendo tra 3 tipologie:

● Desktop – Per un utilizzo personale (equivalente a Windows XP/Vista)● Server● Ufficio – Con programmi specifici per office automation

Oltre a questo esistono delle distribuzioni create per utilizzi specifici, ad esempio per CAE, Educative, Media Center, ecc..

Page 23: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 23

Installazione – PacchettiPackage Manager (PM)L'utilizzo dei Package Manager permette di installare, aggiornare, verificare o rimuovere i programmi con molta facilità.I programmi vengono raccolti all'interno di un singolo file che contiene anche le istruzioni per l'installazione e la disinstallazione necessarie al Package Manager.

I PM esistenti sono:● rpm nato con le distribuzioni Red Hat (Red Hat Package Manager) è utilizzato oggi

da diverse distribuzioni.I file pacchettizzati hanno come estensione .rpm.

● dpkg creato da Debian e utilizzato dalle distribuzioni da essa derivate, utilizza un formato differente con estensione .deb.E' stato il primo ad avere uno strumento per la soluzione delle dipendenze chiamato apt (Advanced Package Tool)

Altri PM che riconoscono le dipendenze tra i pacchetti sono (su base rpm):YUM (Yellow dog Updater Modified) utilizzato da FedoraYaSt (Yet Another Setup Tool) utilizzato da SUSEurpmi utilizzato da Mandriva

Page 24: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 24

Installazione – UtentiDifferenze tra gli utentiIn ambienti Unix e quindi anche su Linux esistono differenze fra i vari utenti, definite dai permessi e dall'acceso ai file e comandi che un'utente può lanciare.

E' convenzione che i semplici utenti possono scrivere, leggere e modificare file solo all'interno del loro ambiente (home) e lanciare semplici comandi che non influiscono sulla configurazione del sistema.

Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come superuser ovvero come utente root.

In fase di installazione di una macchina Linux si consiglia di scegliere una password di root piuttosto complicata (ma ricordabile!) e di creare immediatamente un normale utente con il quale operare per tutte le attività di tipo NON AMMINISTRATIVO.

Page 25: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 25

Installazione – rootUtente root

L'utente root è l'amministratore del sistema con tutti i poteri che comporta questo ruolo, quindi è molto importante che l'accesso a root sia limitato solo al reale amministratore di sistema (sysadm) E PER IL TEMPO STRETTAMENTE NECESSARIO.

●L'utente root ha poteri assoluti sul sistema:

● Aggiungere, Eliminare e modificare account (altri utenti)● Installare e configurare servizi● Accesso completo (lettura e scrittura) di tutti i file presenti nel filesystem● Aggiungere e Modificare il Filesystem● Distruggere tutto con un solo comando

IL POTERE DI ROOT SUL SISTEMA È ASSOLUTO

Page 26: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 26

Installazione – Problemi comuniMolti problemi che si presentano in fase di installazione possono essere risolti passando dei parametri al kernel in fase di avvio tramite il bootloader:

ide=nodma Il sistema si blocca dopo il boot dal CD/DVD

apm=off Il sistema si blocca dopo aver abilitato l'APM o in modo casuale

acpi=off Il sistema si blocca in modo casualenohlt

nofirewire Il sistema si blocca durante la ricerca di dispositivi firewire

nofb Se lo schermo diventa bianco o mostra caratteri strani dopo il boot (specialmente per LCD)

altri parametri che permettono di superare il blocco del sistema durante l'installazione:noapic, nopcmcia, nousb, pci=off

Page 27: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 27

Interfaccia graficaX Windows Linux oltre ad offrire la possibilità di interagire con il sistema via linea di comando propone un ambiente grafico a finestre che è sicuramente più familiare per chi è abituato a Windows.Questo ambiente viene comunemente chiamato X (X windows system) che nel tempo è diventato lo standard GUI (graphic user interface) di Unix e Linux.

L'ambiente grafico X è composto essenzialmente da tre parti:

Windows manager E' il gestore delle finestre, cioè fornisce un metodo per lavorare con le finestre. Esistono molteplici gestori: motif è lo standard commerciale più utilizzato ma i gestori più famosi utilizzati in ambiente Linux sono KDE, Enlightenment, Sawfish, AfterStep, e FVWM

Server X E' il processo che si occupa di gestire il display, ovvero si occupa di far interagire l'utente con la GUI. Esistono molteplici server X, ma su Linux il più utilizzato è di gran lunga Xfree86 oggi sostituito da Xorg, fornito gratuitamente. Alternative commerciali sono Accelerated-X e Metro-X.

Page 28: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 28

Ambiente DesktopKDE vs. Gnome

Kde (K Desktop Enviroment)

Comprende oltre un windows manager un'intero ambiente desktop molto user friendly, inoltre fornisce vari sistemi integrati per la gestione e configurazione del sistema

Gnome (GNU Network Object Model Enviroment)

A differenza di KDE Gnome è solo l'ambiente desktop per cui ha bisogno di un windows manager come FVWM (Fantastic Virtual Windows Manager).Anche Gnome offre dei propri sistemi integrati per la gestione della macchina.

Ogni distribuzione solitamente prevede la possibilità di installare ed utilizzare sia Gnome che KDE, è poi possibile modificarli e aggiornarli secondo le proprie necessità.

Page 29: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 29

ProgrammiLe varie distribuzioni attingono i loro software prevalentemente da progetti Open

Source, pertanto differenti distribuzioni forniscono gli stessi software a meno della versione.

Il “project management” di ogni distribuzione decide quale release utilizzare di un particolare software preferendo ad esempio, la stabilità o una maggiore funzionalità.

Anche in questo caso come per il kernel esiste sempre una versione stable del software ed una in stato di develop.

E' possibile anche che in qualche distribuzione vengano applicate delle patch o delle customizzazioni al fine di migliorare qualche aspetto o risolvere qualche bug.

Nell'ottica della licenza GPL queste modifiche saranno disponibili anche sulle altre nel giro di poco tempo sempre se ritenute necessarie dai rispettivi “project management”, in genere tramite la distribuzioni di pacchetti di update.

Alcune distribuzioni dispongono di un repository chiamato contrib o extra, nel quale si trovano software (sotto forma di packages) non distribuiti “ufficialmente” e quindi non supportati, ma di interesse per la comunità che qualcuno o qualche gruppo di lavoro ha adattato per integrarli nella specifica distribuzione.

Page 30: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 30

Programmi di uso comuneSuite Office

Open Office Suite office che comprende word processor, foglio elettronico, presentazione, database. E' disponibile anche per l'ambiente windows.

Star Office Come il precedente però con licenza commerciale, vanta maggiori funzionalità soprattutto per il database.

Posta Elettronica

Thunderbird Deriva dal progetto Mozilla

Evolution Posta Elettronica simile ad Outlook

Browser

Firefox Browser perla navigazione su InternetIes4Linux Uno script che permette di installare sotto Linux, Internet Explorer 5,

5.5 e 6Opera Analogo alla versione per Windows

Page 31: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 31

Programmi - PVR

Page 32: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 32

Installazione – DemoQemu

E' un software di virtualizzazione disponibile nelle varie distribuzioni Linux.Permette di emulare un computer e relative periferiche via software.

Nell'uso base è sufficiente usare due comandi:qemu-img per creare un disco virtualeqemu per eseguire il software di virtualizzazione

Sintassi:qemu-img create -f qcow <nome_file_img> <dimensione>

es:qemu-img create -f qcow mandriva.img 4G

Sintassi:qemu [-kernel-kqemu] -m 512 -cdrom immagine_cd.iso -boot d <nome_file_img>

es:qemu [-kernel-kqemu] -m 512 -cdrom mandriva.iso -boot d mandriva.img

Page 33: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 6 ott 2007

Pag. 33

Installazione – DemoKqemu – Full virtualization modeE' un modulo acceleratore che velocizza l'esecuzione della macchina virtuale (qemu).Implementa il “Full Virtualization mode” dove le istruzioni della macchina virtuale vengono eseguite direttamente dalla CPU senza traduzione.

L'accelerazione è possibile solo quando si emula un Sistema Operativo (guest) per CPU x86 su un computer (host) con lo stesso tipo di CPU.Kqemu è un modulo kernel che va caricato manualmente prima dell'esecuzione di Qemu.

insmod kqemu oppure modprobe kqemu

e bisogna richiamare qemu con l'opzione “-kernel-kqemu”

Può essere utile qualora si debbano usare programmi scritti per altri S.O., ad esempio Windows 2000/XP.

DURANTE L'INSTALLAZIONE DI WINDOWS NON VA' ABILITATA!!CAUSA IL CRASH DEL SISTEMA OPERATIVO GUEST IMPEDENDONE L'INSTALLAZIONE.SI PUO' ABILITARE AD INSTALLAZIONE CONCLUSA.

Page 34: Corso Linux

Corso Base suCorso Base suLinuxLinux

Fine Lezione 1Fine Lezione 1

Page 35: Corso Linux

Corso Base suCorso Base suLinuxLinux

Basato su Fedora 7Basato su Fedora 7Lezione 2Lezione 2

Page 36: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 2

File systemPer file system si intende l'astrazione (metodi e protocolli) con cui si organizzano i file su un supporto fisico ad accesso casuale (floppy, cdrom, hard-disk, ecc)

Le informazioni riguardanti un oggetto (file o directory) di un file system sono contenute in un inode, che viene identificato da un numero progressivo e descrive le caratteristiche base di un oggetto: permessi, data di modifica, tipo, posizione ecc.

Un sistema Linux, come ogni sistema Unix, ha una directory principale, chiamata root ed indicata con / sotto la quale si trovano TUTTE le altre directory e TUTTI gli altri file system eventualmente montati sul sistema (floppy, cdrom, condivisione di rete ecc.).

Il principio è radicalmente diverso da quello presente nel mondo Windows, dove ogni device o risorsa ha un suo nome o lettera identificativa al cui interno si trovano le directory del relativo file system.

Il file system usato in Linux è l' ext2Dal kernel 2.4.x è disponibile un'evoluzione dell'ext2, l'ext3 che ha il vantaggio di essere un journal file system

Page 37: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 3

Organizzazione del file system/ Radice (root)------------------------------------------------------------------------------------------------------------/root Home dell'utente root------------------------------------------------------------------------------------------------------------/boot Contiene tutte le immagini del kernel e file indispensabili al bootstrap------------------------------------------------------------------------------------------------------------/etc Contiene i file di configurazione del sistema e dei programmi installati------------------------------------------------------------------------------------------------------------/home Contiene le home degli utenti tranne quella di root------------------------------------------------------------------------------------------------------------/usr Contiene binari, documentazione, librerie e sorgenti della maggior parte

dei programmi (e i sorgenti del kernel)------------------------------------------------------------------------------------------------------------/var File contenenti informazioni dinamiche (log, pid file, directory di spool).------------------------------------------------------------------------------------------------------------/proc File system virtuale. Contiene, come se fossero file e directory, dati

dinamici sul sistema e sui processi------------------------------------------------------------------------------------------------------------/dev Contiene i file per la gestione dei dispositivi sia a blocchi (hdd) che a

carattere (tty) oltre a file speciali (/dev/null)

Page 38: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 4

Organizzazione del file system

/sbin Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin/ )

------------------------------------------------------------------------------------------------------------/bin Contiene comandi e programmi base per tutti gli utenti (altri comandi

sono in /usr/bin/ )------------------------------------------------------------------------------------------------------------/lib File delle librerie di sistema utilizzate dai programmi------------------------------------------------------------------------------------------------------------/tmp Contiene i file temporanei ------------------------------------------------------------------------------------------------------------/usr/tmp Altra directory che contiene file temporanei------------------------------------------------------------------------------------------------------------/usr/doc Documentazione sul sistema------------------------------------------------------------------------------------------------------------/mnt Directory sotto la quale vengono montati altri file system (floppy,

cdrom, chiavi USB, oartizioni NTFS, ecc)------------------------------------------------------------------------------------------------------------/media Come /mnt si trova in diverse distribuzioni, ma non fa parte della

struttura standard (è usata dal demone automount).

Page 39: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 5

Montaggio del file systemPrima di poter utilizzare un file system (es: CDROM, floppy, tape, condivisione di rete windows, directory nfs, partizione fat32 di un hard disk, ecc) questo deve essere formattato e montato in una sotto directory della root ( / ).

Una volta montato il file system risulta accessibile a programmi e utenti in modo trasparente e diventa parte integrante dell'albero delle directory sotto /

Dopo l'uso il file system può essere smontato (operazione necessaria per espellere un CDROM, un floppy o una chiave USB).

La directory su cui viene montato un file system (mount point) può anche non essere vuota, ma nel momento in cui ci viene montato un file system, i dati ivi contenuti non sono più visibili fino a quando non si smonta il file system.

Per montare un file system si usa il comando mount.

Sintassi:mount -t [tipo fs] [opzioni] device mount_point

esempio:$ mount -t ntfs -o r /dev/sda1 /mnt/windows

Page 40: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 6

Mountmount -t [tipo fs] [opzioni] device directory

[tipo fs] è il tipo di file system da montare.

Linux riconosce un elevato numero di file system:adfs, affs, autofs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs.

Il parametro [-t tipo_fs] è un parametro opzionale, se non viene specificato il comando mount tenterà di individuare il file system in automatico.

Qualora il file system non venisse riconosciuto, il comando terminerebbe con un errore e bisogna ripeterlo specificando manualmente il tipo di file system.

Per montare tutti i file system indicati nel file /etc/fstab si usa il prametro '-a'$ mount -a

Per ulteriori informazioni consultare la pagina del manuale:$ man mount

Page 41: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 7

Comandi per i file systemAltri comandi utili nella gestione dei file system sono:

umount [ opzioni ] device Smonta un dispositivo (necessario)

df [opzioni] [file] Verifica lo spazio libero su disco

du [opzioni] [file] Visualizza lo spazio occupato da file e directory

fsck [opzioni] dispositivo Verifica l'integrità e ripara il file system

mkfs [opzioni] dispositivo Crea un file system (formatta)

fdformat device Formatta a basso livello un floppy

Si ricordi che un file system è individuato con il device corrispondente:

/dev/hda1 Prima partizione del primo disco IDE/dev/sda2 Seconda partizione del primo disco SCSI/dev/fd0 Primo floppy disk

Page 42: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 8

FSTABNel file /etc/fstab vengono configurate le informazioni sui vari file system(da montare al boot o no) preimpostati sul sistema.

Il suo formato prevede per ogni riga le seguenti informazioni:

1- Dispositivo da montare, si può indicare il device corrispondente (/dev/hda1) o l'etichetta del file system (ext2 o xfs) preceduta dalla keyword LABEL.

2- Mount point sul file system principale3- file system Type da utilizzare (es: ext2, ext3, iso9660, nfs...)4- Opzioni specifiche per il mount:

defaults= monta il dispositivo al bootnoauto = montaggio solo su richiesta dell'utenteuser = permette il montaggio anche agli utenti

5- Indica se deve essere eseguito il backup usando il comando dump (0=NO). 6- Controllo del file system al boot. Uno 0 indica NESSUN CHECK.

Il controllo viene eseguito in ordine numerico crescente.#/etc/fstabLABEL=/ / ext3 defaults 1 1LABEL=/boot1 /boot ext3 defaults 1 2/dev/cdrom /mnt/cdrom iso9660 noauto, user 0 0proc /proc proc defaults 0 0/dev/sda2 none swap defaults 0 0

Page 43: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 9

LINKIl comando ln crea un link (alias) di un file o directory.

Quando si opera sul link è come se si operasse direttamente sul file tranne che quando si rimuove il link (non si cancella il file).

Hard LinkPer default ln crea un hard link: di fatto un altro nome per un file esistente.Originale e link sono indistinguibili, condividono lo stesso inode.Non si possono creare hard link fra file system diversi e su directory.

$ ln [opzioni] nome sorgente [nome destinazione]

Link symbolicoDetto anche soft link o symlink, si ottiene specificando l'opzione “-s”.E' un tipo speciale di file che si riferisce ad un file (inode) diversoPuò essere creato su file system diversi (nfs, cdrom ecc.) e su file che non esistono. Si capisce di quale file sono un link.

$ ln -s nome file [nome link]

L'uso dei link è completamente trasparente e NON impatta sulle performance del sistema.

Page 44: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 10

Utenti e GruppiUTENTI

Si possono creare più account che vengono memorizzati nel file /etc/passwd.Ogni riga del file passwd è del tipo:

username:passwd:UID:GID:user_data:home_dir:shell

UID = User IDentifier è un valore numerico univocoGID = Group Identifier è un valore numerico univocouser_data = Nome e Cognome dell'utente, telefono, ecc...home_dir = directory di lavoro dell'utenteshell = shell che utilizzerà l'utente

es: root:passwd:0:0:root:/root:/bin/bash

GRUPPI

Linux gestisce anche gruppi di utenti, per condividere file e per favorire la collaborazione. Ogni utente deve appartenere ad almeno un gruppo.

I gruppi sono definiti nel file /etc/group, ogni riga ha la forma del tipo:group_name:passwd:GID:users_list

es: adm:passwd:4:root, adm, daemon

Page 45: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 11

Attributi di file e directoryOgni file appartiene ad un utente e a un gruppo.Per visualizzare utente e gruppo di un file si usa il comando “ls -l”.

$ ls -l /etc/passwd-rw-r--r-- 1 root adm 77266 Dec 13 17:18 /etc/passwd

In questo caso l'utente proprietario è root, mentre il gruppo è adm.

E' possibile cambiare (avendo i permessi) l'utente ed il gruppo con i comandi:chown (change owner) e chgrp (change group)

Sintassi: chown nome_utente nome_filees:

$ chown topolino /etc/passwd-rw-r--r-- 1 topolino adm 77266 Dec 13 17:18 /etc/passwd

Sintassi: chgrp nome_gruppo nome_filees:

$ chown pluto /etc/passwd-rw-r--r-- 1 topolino pluto 77266 Dec 13 17:18 /etc/passwd

Al posto del nome utente e del gruppo è possibile specificare i rispettivi UID e GID.

Page 46: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 12

Permessi su file e directoryOgni file dispone di permessi separati per tre categorie di utenti:

- utente proprietario- gruppo proprietario- il resto degli utenti

Per ogni categoria esistono tre tipi di permessi:- lettura definito dal flag r (Read)- scrittura definito dal flag w (Write)- esecuzione definito dal flag x (eXecution)

Per le directory questi flag hanno un significato diverso:- lettura = poter visualizzare i file contenuti- scrittura = creare, copiare o spostare i file contenuti- esecuzione = poter usare il nome della directory in un PATH

$ ls -l /etc/passwd-rw-r--r-- 1 root root 77266 Dec 13 17:18 /etc/passwd

permessi altri utentipermessi gruppo proprietariopermessi utente proprietario

Page 47: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 13

Modifica dei permessi su file e directoryPer modificare le modalità di accesso ad un file si usa il comando:

chmod (change mode)

Sintassi: chmod operazione nome_file

L'operazione a sua volta è composta da: categoria , azione e permesso

Carattere Categoriau utente proprietario del fileg gruppo proprietario del fileo tutti gli altri utenti del sistemaa tutti gli utenti; equivale a 'ugo'

Operazione Azione+ Aggiunge permessi ai permessi esistenti- Rimuove permessi dai permessi esistenti= Assegna i permessi al file

Permesso: r,w,x hanno il significato visto in precedenza

Page 48: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 14

Uso di chmodProteggere un file dalla scrittura

$ chmod go-w cruise

Rendere un file privato$ chmod go= cruise

Rendere un file pubblico$ chmod a+rw cruise

Rendere un file pubblico$ chmod a+x myscript

IMPORTANTE!!Il superutente, root, può sempre accedere a qualsiasi file presente sul sistema, indipendentemente dai suoi permessi di accesso.

NOTADi fatto rwx, sono la rappresentazione dello stato di tre bit, partendo dal più significativo si ha: r = 4, w=2, x= 1pertanto i comandi chmod possono essere impartiti anche in forma numerica:

$ chmod 700 myscript abilita tutti i permessi solo all'owner (file privato)

Page 49: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 15

Comandi di uso frequente$ touch nome file [INVIO]

aggiorna la data e l'ora di un file, se il file non esiste crea un file vuoto

$ mkdir nome directory [INVIO]crea una directory

$ mkdir –p work/completed/2001 [INVIO]crea la directory 2001 e le directory superiori se non esistono.

$ cd nome directory [INVIO]cambia directory

$ cd [INVIO]rende come corrente la directory home

$ pwd [INVIO]visualizza il PATH in cui ci si trova

$ ls -R [INVIO]visualizza il contenuto della directory corrente e delle sotto directory.

Page 50: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 16

Comandi di uso frequente$ cp file_sorgente file_destinazione [INVIO]

copia il file_sorgente creando il nuovo file_destinazione

$ mv file_sorgente file_°destinazione [INVIO]rinomina o sposta il file_sorgente in file_destinazione

$ ls -a visualizza i file nascosti quelli in cui il primo carattere del nome è un punto (.)

E' possibile utilizzare dei caratteri speciali all'interno del nome dei file:

* Corrisponde ad una serie di nessuno o più caratteri.* da solo indica tutti i file*.txt indica i soli file con estensione txt

? Simile ad * ma sostituisce un generico carattere cas? equivale a tutti i file di 4 caratteri la aventi le prime tre uguali a cas

~ rappresenta la home directory dell'utente~ = /home/pippocd ~/prova equivale al comando: cd /home/pippo/prova

Page 51: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 17

Comandi di uso frequente$ find percorso -name nome_file [INVIO]

visualizza tutti i file che si trovano sotto “percorso” aventi “nome_file”.

$ find /tmp -size +10000k [INVIO]visualizza i file memorizzati sotto /tmp aventi dimensione maggiore di 10000k

$ find /home -user topolino [INVIO]visualizza i file memorizzati sotto /home di proprietà di topolino

$ which programma [INVIO]visualizza il percorso completo di dove si trova il comando

$ grep nome [INVIO]filtra le righe che contengono la parola “nome”

$ more programma [INVIO]interrompe la visualizzazione quando si riempie lo schermo ed attende la pressione di un tasto per proseguire

$ man comando [INVIO]visualizza la pagina del manuale relativa a “comando”

Page 52: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 18

Il processo di boot

Il processo di boot di una macchina Linux comporta diverse fasi:

1- All'accensione il BIOS (Basic Input Output System) memorizzato su memoria ROM non volatile, definisce l'ordine dei device da usare per effettuare il boot.

2- Il BOOT SECTOR del primo device di boot contiene il codice (o i riferimenti su dove trovarlo) del loader che esegue il bootstrap del sistema operativo.

3- Il loader lancia il caricamento del kernel di Linux, che si copia in memoria ed esegue i controlli e il riconoscimento dell'hardware presente.

4- A fine caricamento il kernel esegue il processo init, padre di tutti i processi, che gestisce il caricamento di tutti gli altri programmi da eseguire per completare il boot

Page 53: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 19

Il BIOSOgni sistema Intel ha sulla motherboard un BIOS su ROM (ormai su memorie FLASH) con cui gestire l'hardware del sistema.

All'avvio di un computer non c'è nulla in RAM e nessun programma predefinito da caricare.Le istruzioni su come procedere sono nella memoria non volatile del BIOS, in cui, fra le impostazioni definibili dall'utente, c'e' la sequenza dei dispositivi da usare per il boot.

Nei BIOS più recenti è possibile effettuare il boot da floppy, cdrom, dvd, hard disk (potendo scegliere se dare precedenza a HD IDE, SATA o SCSI) e altri dispositivi quali chiavi USB, Zip o scheda di rete.

Il BIOS cerca, nell'ordine configurato, il boot sector sui diversi dispositivi di boot previsti.

Gli hard disk hanno un boot sector per ogni partizione e un unico Master Boot Record (MBR) che è il boot sector dell'intero hard disk.Se si esegue il boot da un hard disk, è il codice contenuto nel MBR che viene eseguito

Page 54: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 20

I Linux Loader

Esistono diversi loader che eseguono il bootstrap del sistema operativo Linux:

Su sistemi Intel Based: LILO, GRUB, LOADLIN, SYSLINUX, BOOTLIN;su sistemi Alpha si usa MILO, mentre su sistemi Sparc SILO.

Tutti svolgono la stessa funzione. Loadlin e Syslinux sono programmi DOS che eseguono il kernel caricandolo da una partizione DOS, altri sono adattamenti di LILO che riguardano sistemi non basati su processori Intel.

Windows usa come loader VBR (Volume Boot Record) che si occupa di caricare l'NTLDR ed utilizza il file boot.ini per la configurazione.

KernelIl kernel, invocato dal loader, viene caricato in memoria ed inizializza i vari device driver, visualizzando vari messaggi utili per capire e conoscere il proprio sistema.

INITL'ultima operazione eseguita dal kernel alla fine del suo caricamento è il lancio del processo init, il padre di tutti i processi.Da questo momento tutto il codice eseguito lavora in user space (in kernel space lavorano solo il kernel e i suoi moduli).

Page 55: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 21

LILOLILO è uno dei LInux LOader più diffusi, permette il boot sia di Linux che di altri sistemi operativi.Generalmente l'installazione di Linux provvede a creare ed installare LILO (se si è scelto di installare il loader direttamente sull'hard disk e non su floppy) ma in caso di kernel upgrade o aggiunta di un nuovo sistema operativo sulla macchina può essere necessario modificare le impostazioni di LILO manualmente.

Tutte le impostazioni di LILO sono definite nel file /etc/lilo.conf che contiene una parte di configurazione globale e una o più parti relative alle diverse immagini del kernel o sistemi operativi che si vogliono poter caricare.

Il comando /sbin/lilo installa sul MBR o sul settore di boot di una partizione il LILO secondo le indicazioni date in /etc/lilo.conf.Al momento del boot LILO inoltre presenta la possibilità di dare comandi vari e di scegliere quale sistema operativo o versione di kernel lanciare.

ATTENZIONE: Operare maldestramente con LILO e il MBR può impedire il boot del sistema operativo, si suggerisce sempre di avere un dischetto di boot disponibile da utilizzare in caso di danni o problemi con l'MBR.

Page 56: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 22

Configurare il LILOIl file /etc/lilo.conf è diviso in diverse sezioni, analizziamole in dettaglio:

Global Options prompt Visualizza un prompt per scegliere il Sistema operativo

di cui eseguire il boot e passare dei parametri al kernel.

timeout=50 Definisce il tempo in decimi di secondo che lilo aspetta prima di caricare l'immagine di default.

default=linux Indica quale sistema operativo caricare di default.

boot=/dev/hda Indica il device dove installare LILO./dev/hda1 = boot record della prima partizione

map=/boot/map Indica la posizione del map file, che contiene la posizione fisica del kernel in un formato interpretabile da LILO.

install=/boot/boot.b Definisce il file che il comando /sbin/lilo installa sul settore di boot. E' il binario vero e proprio di LILO.

message=/boot/message Definisce un file contenente del testo da visualizzare al boot.

linear Genera indirizzi di settore lineari, invece di indirizzi di settore/head/cilinder, che possono dare problemi nel caso di dischi di grandi capacità. E' consigliabile metterlo.

Page 57: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 23

Configurare il LILOLabel Options per Linux

image=/boot/vmlinuz-2.4.7-10 Indica dove risiede l'immagine del kernel da caricare.

label=linux Definisce il nome associato a questa immagine, è quello che si può scrivere nel LILO command prompt all'avvio per caricare questa immagine.

initrd=/boot/initrd-2.4.7-10.img Definisce la posizione dell'immagine dell'initial ram disk.Il kernel usa questo file system come RAM disk, ne esegue il file linuxrc e poi monta il vero file system su Hard Disk. Serve, ad esempio, per installare un kernel modulare su Hard Disk SCSI, per i quali i driver sono disponibili come moduli e non possono essere caricati direttamente.

read-only Indica al kernel di montare la root, sotto definita, in modoread-only durante la fase di boot. Così facendo è possibile eseguire un file system check durante il boot senza rischi. Prima di passare il controllo delle operazioni al processo init, il kernel monta nuovamente la root in read-write.

root=/dev/hda3 Definisce in quale partizione si trova la root del sistema.

Page 58: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 24

Configurare il LILO

Label Options per Windows

label=Windows_2000 Definisce il nome della label associata a questo OS

other=/dev/hda1 Indica la partizione in cui risiede un sistema operativo diverso da Linux.

optional Omette l'immagine del kernel se non è disponibile al momento della creazione del map file.

Opzioni aggiuntive Al boot quando appare la scritta LILO:, premendo il tasto [TAB] vengono visualizzate le label disponibili per il boot.Per passare dei parametri al kernel dal LILO prompt, si usa il comando append Per una scheda di rete, ad esempio, che usi l'IRQ 10 e l'indirizzo di I/O 210 (potrebbe essere necessario per schede di rete ISA o EISA non PnP):

append = "ether=10,0x210,eth0"

Opzioni importanti per la sicurezza (utilizzabili sia nell'area global che label) sono:

password=pippo Indica che è necessaria una password (pippo) per poter dare comandi al prompt di LILO

restricted Indica che la password serve solo quando si devono passare dei parametri al boot, ma non per scegliere la label da caricare.

Page 59: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 25

GRUB

GRUB è un boot loader multipiattaforma estremamente flessibile e potente.

Ha un propria CLI in cui inserire a mano i parametri di boot o può presentare un'interfaccia a menu configurabile tramite il file /etc/grub.conf.

Per installare grub sul settore di avvio basta dare il comando:grub-install /dev/hda

Differentemente da LILO non c'è bisogno di ridare il comando ogni volta che si cambia la configurazione.

E' sufficiente modificare il file di configurazione e al successivo riavvio del computer verranno presentate le nuove opzioni.

E' più sicuro poiché si evita di riscrivere il MBR e di avere un boot loader inconsistente a causa di una opzione non corretta.

Utilizzando la CLI di GRUB, disponibile durante la fase di boot, si possono variare i parametri di boot esistenti o specificare un comando di boot completamente nuovo.

Page 60: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 26

Configurazione di GRUBSegue un esempio di /etc/grub.conf che esegue le stesse operazioni del file /etc/lilo.conf mostrato in precedenza.

default=0 Imposta come default la prima "label" sotto indicatatimeout=10 Imposta a 10 secondi il tempo di attesa prima di caricare

automaticamente l'entry di default.splashimage=(hd0,2)/boot/grub/splash.xpm.gz

Indica dove trovare l'immagine da visualizza nella schermata di bootpassword --md5 $1$6ðòüZßXÈ$bXTLL8IbDhnwmjyaNNcPG.

Imposta una password, criptata, da fornire per poter accedere al menu o alla command-line.

title Red Hat Linux (2.4.7-10) Titolo della prima scelta del menu ("label")

root (hd0,2) Hard disk (primary master) e partizione (terza) del device di root.kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/hda3

Path nel quale si trova il kernelinitrd /boot/initrd-2.4.7-10.img

Path del file system da montare su Ram Disk al boot.

title DOS Il titolo della seconda scelta del menurootnoverify (hd0,0) Hard disk (primary master) e partizione (prima) del device di root.

Non tenta di montare la partizione.chainloader +1 Prova a caricare in cascata il primo blocco della partizione sopra

definita.

Page 61: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 27

KernelQuando il boot loader esegue il kernel, questo prosegue con il riconoscimento e l'inizializzazione dell'hardware presente.

Per ridurre l'occupazione di memoria su disco il kernel normalmente è compresso, pertanto la prima operazione da eseguire è quella di decomprimerlo in memoria.

Durante il caricamento presenta a video una serie di informazioni, a volte fin troppo dettagliate, sull'hardware trovato.

Per vedere i messaggi del kernel creati durante l'ultimo boot basta digitare il comando dmesg, che visualizza esattamente quanto viene visualizzato dal kernel durante il boot (a volte in tempi troppo rapidi per essere leggibile).

A fine caricamento il kernel lancia il processo init il padre di tutti i processi.

Page 62: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 28

Messaggi del KernelSegue un esempio di un dmesg. Alcune parti variano a seconda dell'hardware presente sul sistema, altre sono sostanzialmente uguali su tutti i sistemi Linux.

Linux version 2.4.13 (root@llocalhost) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)) #5 Fri Nov 9 16:36:50 CET 2001Mostra le versioni del kernel (2.4.13), del compilatore interno (gcc) e del sistema operativo

Calibrating delay loop... 666.82 BogoMIPSTest per verificare la velocità del processore. Valori più alti indicano prestazioni migliori.

Memory: 62272k/65536k available (1091k kernel code, 2880k reserved, 315k data, 212k init, 0k highmem)Rilevazione della memoria fisica disponibile.

CPU: Intel Pentium II (Deschutes) stepping 01Identificazione del processore

Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabledttyS00 at 0x03f8 (irq = 4) is a 16550AttyS01 at 0x02f8 (irq = 3) is a 16550AInizializzazione delle porte seriali

hda: IBM-DTTA-351010, ATA DISK driveIdentificazione dell'hard-disk

Partition check:hda: hda1 hda2 < hda5 hda6 hda7 hda8 >Verifica dell'integrità delle partizioni da montare.

Page 63: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 29

INIT

Init è il padre di tutti i processi, il suo ruolo consiste nel gestire il lancio di tutti i programmi necessari per rendere il sistema attivo creando i processi a partire da uno script nel file /etc/inittab.

Nell'inittab vengono definiti:● le directory con gli script di avvio per i diversi runlevel (/etc/rc.d/rc.0);● il runlevel di default;● altri script e comandi che vengono eseguiti al boot o in condizioni particolari.

Il primo script lanciato da inittab è (su Fedora 7) /etc/rc.d/rc.sysinit.

Tra le varie operazioni di init viene eseguito il controllo sulla consistenza dei file system, se si trovano errori che non possono essere riparati automaticamente è possibile che il processo di boot si blocchi.

In questo caso viene richiesta la password di root e viene eseguita una shell dalla quale si può eseguire un file system check manuale.Dopo aver verificato su quale partizione il kernel si è fermato, si può dare il comando: fsck.ext2

Es: fsck.ext2 /dev/hda5

Page 64: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 30

/etc/inittabIl primo script lanciato da inittab è (su Fedora 7) /etc/rc.d/rc.sysinit, che esegue varie operazioni tra cui:

● Impostazioni di alcuni path generali nella variabile $PATH;● Configurazione dell'ambiente di rete;● Avvio della partizione di swap per la memoria virtuale;● Impostazione del nome dell'host;● Check del file system root;● Check delle quote di spazio assegnate agli utenti, se previste;● Mount del file system root in modalità scrittura/lettura;● Preparazione del sistema per caricamento dei moduli;● Check delle dipendenze dei moduli; ● Check di tutti i file system ed eventuali riparazioni;● Mount di tutti i file system;● Pulizia di file di supporto al boot e di processi non più attivi;● Umount dell'initrd;● Impostazione dell'orologio;● Inizializzazione delle porte seriali;● Caricamento Moduli;● Attivazione dei servizi del runlevel.

Page 65: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 31

RunlevelInit viene configurato in modo da potere portare il sistema in diversi livelli operativi ognuno dei quali presenta caratteristiche diverse (programmi e servizi in esecuzione), detti runlevel.

In genere su Linux sono utilizzati i seguenti livelli:Runlevel 0 : /etc/rc.d/rc0.d Avvia la sequenza di arresto del sistema (shutdown)

Runlevel 1: /etc/rc.d/rc1.d Modalità singolo utente, nessun altro utente può collegarsi, il servizio di rete è disabilitato.

Runlevel 2: /etc/rc.d/rc2.d Multiutente, il servizio rete è attivo ma è disabilitato il file sharing.

Runlevel 3: /etc/rc.d/rc3.d Multiutente, predefinito quando si opera in modalità testuale, tutti i servizi sono attivi.

Runlevel 4: /etc/rc.d/rc4.d Inutilizzato. Può essere dedicato ad usi personali

Runlevel 5: /etc/rc.d/rc5.d E' il runlevel predefinito quando si vuole avviare Linux in modalità grafica (viene eseguito il server X)

Runlevel 6: /etc/rc.d/rc6.d Il runlevel 6 è quello di reboot.

Lo script /etc/rc.d/rc gestisce quali processi far partire a seconda del runlevel, andando ad analizzare le singole directory /etc/rc.d/rc#.d.

Page 66: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 32

RunlevelGli script per la gestione dei processi di tutti i runlevel si trovano nella directory /etc/rc.d/init.d.

Nelle directory dei vari runlevel, invece, esistono una serie di symlink con nomi del tipo S12syslog o K65identd che puntano agli script contenuti in /etc/rc.d/init.d.

I nomi dei link presentano la seguente nomenclatura:<azione><ordine><nome>

azione può essere S (start) o K (kill). S fa partire il servizio associatoK ferma il servizio corrispondente.

ordine indica in l'ordine di esecuzione degli script (dal più basso al più alto).

nome è lo stesso del file presente sotto init.d

Lo script /etc/rc.d/rc è lo script “padre”, quello che a secondo del runlevel richiesto si occupa di eseguire gli script contenuti nella directory corrispondente.

Page 67: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 33

RunlevelEsempi:

Se abbiamo il file /etc/rc.d/rc3.d/S85httpd (link a /etc/rc.d/init.d/httpd), si avrà un server web avviato quando la macchina si troverà al runlevel 3.

Se vogliamo, invece, che venga avviato il server web in questo runlevel, basterà rinominare il file, sostituendo la lettera K alla S:

mv /etc/rc.d/rc3.d/S85httpd /etc/rc.d/rc3.d/K85httpd

Gli script possono anche essere utilizzati direttamente dall'utente per gestire i singoli servizi:

/etc/rc.d/init.d/httpd [start | stop | restart] fa partire, ferma, riavvia il server Web

Sotto Fedora i servizi possono essere attivati anche con il comando:service nome_servizio (start | stop | restart)

Page 68: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 34

Gestione dei serviziLa configurazione dei servizi per i vari runlevel mostrata finora permette una grande versatilità, ma non è facilmente gestibile.

Per aiutare l'utente nella configurazione dei servizi disponibili al boot si possono usare dei tool testuali o grafici.

I più comuni sono:

serviceconf permette di configurare i servizi per i singoli runlevel (grafico)ntsysv per configurare i servizi del runlevel corrente

(testuale con interfaccia semigrafica)chkconfig per tutti i runlevel. (testuale a riga di comando)

E' consigliabile disattivare tutti i servizi che non si utilizzano per due OTTIMI motivi:

● minore consumo di risorse: soprattutto CPU e RAM● sicurezza: un servizio attivo è passibile di attacchi da parte di hacker

Page 69: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 35

Installazione dei programmiInizialmente in Unix l'installazione dei programmi doveva essere eseguita manualmente e richiedeva la compilazione dei sorgenti in genere scritti in C/C++.

Ancora oggi questo metodo è utilizzato anche se è stato affiancato da soluzioni più sofisticate e più facili da utilizzare.

Per installare un programma partendo dal codice sorgente è necessario:● scaricare i file sorgente normalmente raccolti in un file di tipo tar.gz● decomprimere il file di archivio: tar xvzf programma.tar.gz● posizionarsi nella cartella ottenuta: cd programma● se presente il file configure digitare: ./configure

verrà creato il file con le istruzioni per la compilazione, il Makefile● digitare il comando: make● digitare il comando (opzionale): make install

Per disinstallare un programma se presente si usa il comando: make unistallDiversamente vanno cancellati a mano tutti i file installati.

La personalizzazione del kernel di Linux deve essere eseguita in questo modo.Nella cartella che contiene i sorgenti del kernel digitare:

make menuconfig per selezionare le opzioni necessariemake bZimage per creare l'immagine compressa del kernel

Page 70: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 36

Vantaggi nell'uso dei sorgentiLo svantaggio dovuto ad una maggiore complessità e necessità di una conoscenza più approfondita delle fasi di compilazione, viene ampiamente ripagato dai vantaggi forniti dall'uso dei sorgenti.

Poter installare software e compilare lo stesso kernel tramite i sorgenti ha dei grandi vantaggi che l'installazione diretta di binari non offre.

● Aumento delle performance tramite ottimizzazioni e razionalizzazioni,● Possibilità di customizzazione,● Possibilità di correzione di bugs tramite patch● Possibilità di eseguire aggiornamenti in modo rapido, appena sul sito del

produttore appaiono i sorgenti di una nuova versione.

In particolare per il kernel la necessità di compilazione è quasi d'obbligo su sistemi in produzione per i quali non si vogliano mantenere kernel generici o con il supporto di innumerevoli moduli come quelli comunemente forniti nelle distribuzioni standard.Si ricordi che un kernel monolitico, ad esempio, ha una maggiore velocità di esecuzione, una minore occupazione di memoria ed una maggiore stabilità.

Page 71: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 37

RPMRed Hat ha creato diversi anni fa una utility, RPM (Red Hat Package Manager), che facilità tutte le operazioni necessarie alla gestione dei programmi.

RPM, serve per installare, disinstallare, aggiornare, interrogare, verificare e costruire pacchetti software (packages).

RPM gestisce le dipendenze solo di primo livello (non è recursivo).Se per l'installazione di un package come prerequisito è necessario un altro package, RPM indica il package mancante, ma non se a sua volta “dipende” da altri.

Analogamente se si prova a disinstallare un package da cui ne dipendono altri si viene avvisati di questa evenienza e l'operazione viene interrotta.

Gli RPM automaticamente copiano i file di un pacchetto nelle directory giuste (logs in /var/log, file di configurazione in /etc/, binari in /usr/bin o /usr/sbin, script di startup in /etc/rc.d/init.d/ ecc.) e verificano la presenza di conflitti o installazioni più recenti.Un RPM non cancella mai nulla che non abbia installato.Se deve sostituire o cancellare un file di configurazione, per esempio, mantiene il file esistente aggiungendo il suffisso .rpmsave.

Page 72: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 38

Uso di RPMComandi principali

rpm -i [opzioni] [pacchetti] Installazione pacchetti RPMrpm -U [opzioni] [pacchetti] Aggiornamento di pacchetti RPMrpm -e [opzioni] [pacchetti] Disinstallazione di pacchetti RPMrpm -q [opzioni] [pacchetti] Interrogazione di pacchetti RPMrpm -V [pacchetto] Verifica del pacchetto

esempi:$ rpm -qa | grep smb Visualizza i pacchetti il cui nome contiene “smb”libsmbios-libs-0.13.10-1.fc7libsmbclient-3.0.26a-0.fc7smb4k-0.8.4-1.fc7

$ rpm -ql smb4k | more Elenca file contenuti in un pacchetto installato

$ rpm -qlp smb4k.rpm | more Elenca file contenuti in un pacchetto rpm

rpm usa un database nel quale memorizza i pacchetti installati.

Fedora durante la fase di installazione crea il file /root/install.log che contiene l'elenco di tutti i pacchetti installati.Per avere un elenco aggiornato di tutti i pacchetti installati sul sistema, si può impartire il comando: rpm -qa | sort > /root/install.log

Page 73: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 39

RPMConvenzione dei nomi dei package

nome-versione-release.arch.rpmesempio:

efax-0.8a-11.i386.rpm ottimizzato per cpu Intel 386efax-0.8a-11.i686.rpm ottimizzato per cpu Intel P4 e successiveefax-0.8a-11.x86_64.rpm ottimizzato per S.O. a 64 bit e cpu Intel a 64 bit

Per la ricerca dei pacchetti precompilati si può usare il comando rpmfind o il sito: http://rpmfind.net/linux/RPM/

Interfacce grafiche per RPMPer un uso più comodo si possono gestire gli rpm usando delle interfacce grafiche.Le più comuni sono: gnorpm, kpackage, xrp, rpmdrake, pkgview

Svantaggi● I file sono già compilati, se si intende customizzare alcuni flag di compilazione si

deve sempre farlo manualmente partendo da un tar.gz;● Non sempre nuovi RPM vengono resi disponibili in tempi brevi quando esce una

nuova versione di un programma.● La gestione delle dipendenze non prevede la recursione.

Ulteriori informazioni sono disponibili su: http://www.rpm.org

Page 74: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 40

YUM Yellow dog Updater, ModifiedYum (http://linux.duke.edu/projects/yum/) è un gestore di package automatico per sistemi che usano il formato rpm.Yum trova le dipendenze e mostra quali altri package devono essere installati oltre quello indicato per una corretta installazione.

Rispetto RPM presenta le seguenti caratteristiche:● Uso di Repositori multipli● File di configurazione semplice● Calcola correttamente le dipendenze (anche recursivamente)● Uso del formato rpm● Interfaccia utente semplificata.

L'uso è molto semplice:yum [install | update | remove] package_1 [package_2 .... package_n]

Per configurare yum si usa il file /etc/yum.conf

Per la ricerca dei package yum si appoggia a dei Repository

Anche per yum esistono dei frontend grafici, fedora usa pirutSi può installare un altro frontend che presenta delle funzioni avanzate: yumex

$ yum install yumex

Page 75: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 41

YUM RepositoryFedora si appoggia ai suoi Repository ufficiali, ma è conveniente aggiungerne altri al fine di poter scegliere tra un più ampio ventaglio di software già precompilato per la propria distribuzione.Per aggiungere dei repository è sufficiente creare un nuovo file con estensione .repo all'interno della cartella /etc/yum/repos.d

$ cat /etc/yum.repos.d/livna.repo[livna]name=Livna for Fedora Core $releasever - $basearch - Basebaseurl= http://rpm.livna.org/fedora/$releasever/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-livna

$ cat /etc/yum.repos.d/dries.repo[dries]name=Extra Fedora rpms dries - $releasever - $basearchbaseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/fc$releasever/

$basearch/RPMS.dries/gpgkey=http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txtgpgcheck=1enabled=1

Page 76: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 18 ott 2007

Pag. 42

Altri package managerQuanto detto finora per la gestione dei pacchetti rpm, vale non solo per Fedora, ma per tutte le distribuzioni che utilizzano l'rpm come package manger.

Altri package manager evoluti tipo yum sono:YaSt (Yet Another Setup Tool) utilizzato da SUSEurpmi utilizzato da Mandriva

DPKG

Le distribuzioni debian e quelle su essa basate usano dpkg (al posto di rpm) e apt (equivalente a yum)

Le funzionalità sono simili a quelle di rmp ed yum, cambia la sintassi dei comandi.Per ulteriori approfondimenti si rimanda alla pagina del manuale:

man dpkgman apt

e al link: http://it.wikipedia.org/wiki/Advanced_Packaging_Tool

Anche in questo caso esistono dei frontend grafici che ne facilitano l'utilizzo:apitude, synaptic, dselect e gnome-apt

Page 77: Corso Linux

Corso Base suCorso Base suLinuxLinux

Fine Lezione 2Fine Lezione 2

Page 78: Corso Linux

Corso Base suCorso Base suLinuxLinux

Basato su Fedora 7Basato su Fedora 7Lezione 3Lezione 3

Page 79: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 2

Multiutenza

Linux è un sistema operativo multiutente

● Utenti diversi possono avere accesso al sistema e alle risorse ad esso connesse simultaneamente

● Accesso diretto: tramite console● Accesso remoto: via rete.● Ad ogni utente viene assegnato un identificativo (nome utente) ed una password.● I dati, i programmi e le impostazioni sono completamente separati tra utenti

diversi.● La sicurezza è garantita da meccanismi di protezione basati su ACL (Access

Control List) che permettono di limitare l'accesso ai files.

Page 80: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 3

Login e LogoutLogin

E' l'operazione di autenticazione, tramite nome utente e password, che permette all'utente l'accesso alle risorse del sistema.

L'accesso può avvenire in modalità testuale (shell) oppure in modalità grafica

Il login può essere eseguito da locale o da remoto.

Lo scopo è di verificare che l'utente abbia i requisiti per accedere al sistema o ad un suo servizio e metterlo in condizione di interagire con la macchina.

Logout

E' il processo opposto del login: chiude la shell (o l'ambiente grafico) aperta con il precedente login e tutti i programmi lanciati dall'utente.

Fa in modo che l'utente debba ripetere il login per accedere nuovamente al sistema.

Page 81: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 4

La Shell

La shell è l'interfaccia testuale tramite la quale l'utente può operare sul sistema.Viene lanciata dal processo di login dopo che il processo di autenticazione è

andato a buon fine.

La shell è un programma che gestisce la comunicazione fra utente e sistema operativo interpretando ed eseguendo i comandi dell'utente.

Può avere diversi utilizzi:

● Uso interattivo: il sistema attende i comandi digitati dall'utente, che possono redirezionare input ed output;

● Configurazione: definire variabili e parametri che vengono utilizzati in ogni interazione dell'utente con la macchina;

● Programmazione: utilizzando comandi di sistema e funzionalità della shell è possibile realizzare piccoli programmi (script shell) in grado di automatizzare operazioni e reagire ad eventi.

Page 82: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 5

Quale Shell ?

Esistono molteplici shell, ognuna delle quali presenta caratteristiche e peculiarità proprie, di seguito sono riportate le più utilizzate in ambiente Unix.

sh Bourne shell, è disponibile su qualsiasi ambiente UNIX, quindi è la più utilizzata per creare script shell compatibili e cross-platform.

csh C shell, prende il nome dal linguaggio di programmazione, ovviamente le funzionalità di tale shell derivano in modo diretto dal C.

bash Bourne Again Shell. Una delle ultime nate, offre le stesse capacità della C shell, con l'aggiunta di alcune funzionalità come l'history dei comandi e la TAB Completion

ksh Korn shell. Largamente diffusa è compatibile con la sh sulla parte di scripting ed ha tutte le funzionalità di interazione della csh. http://www.kornshell.com/

tcsh E' un'evoluzione della csh, con cui mantiene piena compatibilità e introduce feature come command line editing e name completion.

Sulla gran parte delle distribuzioni Linux è preimpostata di default la shell bash.La sintassi dei comandi presenti in questo corso è basata sulla bash.

Page 83: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 6

BASHBash acronimo di Bourne Again SHell, è la shell di gran lunga più utilizzata in

ambiente Linux.

Alcune sue caratteristiche (presenti anche in altre shell):- Possibilità di editare la command line- Autocompletion dei comandi usando il tasto TAB- Possibilità di definire alias per i comandi- History infinita (o quasi) dei comandi inseriti- Funzionalità di scripting e funzioni condizionali e di ciclo.- Possibilità di definire funzioni e alias- Possibilità di gestire array indicizzati di dimensioni infinite- Gestione e controllo dei job- Espressioni aritmetiche- Caratteri jolly (metacaratteri) nella gestione dei nomi di file

Nel seguito utilizzeremo i principali comandi della shell, ma l'unico vero modo per conoscere la bash è usarla.

Sui sistemi Linux viene lanciata automaticamente dopo il login, alternativamente basta scrivere bash (trovandosi in un'altra shell) per eseguirla.

Page 84: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 7

BASH - Prompt Il prompt dei comandi si presenta, in genere, con la seguente forma:

[username@hostname ~]$ (prompt utente)

Nel caso dell'utente root il carattere finale $ è sostituito con un ## per ricordare che si ha il controllo completo sul sistema ed un comando errato può creare problemi rilevanti.

[username@hostname ~]# (prompt root)

Il carattere tilde (~) denota la home directory, cioè la directory di lavoro dell'utente, nella quale ci si trova dopo aver eseguito il login.

Quando si esegue un cambio directory la tilde viene sostituita dal nome della directory stessa.

[username@hostname Desktop]$

Page 85: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 8

BASH – Personalizzazione del promptCambiando il valore della variabile d'ambiente PS1, si può personalizzare il prompt della shell.

Per modificare il contenuto di una variabile, basta digitarne il nome seguito dal segno uguale (=) e dalla stringa che deve sostituire l'attuale contenuto.

$ PS1='Mio prompt \W $:' [INVIO] => Mio prompt ~ $:

Esistono alcuni caratteri speciali che permettono di ottenere un particolare output:Carattere speciale Output di testo

\d Data corrente\h Hostname\w Path corrente\W Directory attuale\u Username\t Ora corrente nel formato 24 ore\@ Ora corrente nel formato 12 ore

Page 86: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 9

Caratteri speciali

Stringhe

Alcuni caratteri sono riservati e hanno un significato particolare per la shell, per poter trasferire uno di questi caratteri ad un comando come argomento è necessario racchiuderlo tra apici (').

Una qualunque sequenza di caratteri racchiusa tra apici è una STRINGA.

'mia stringa'

Qualora la stringa contenga un apice al suo interno è possibile racchiuderla tra due caratteri doppio apice (“).

“l'aurora”

Per passare una stringa contenente caratteri speciali ad un comando è necessario farla precedere dal carattere $

Page 87: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 10

Sequenze di EscapeAlcuni caratteri speciali devono essere scritti come sequenze di codici Escape.

In tabella sono riportati i principali:

$ echo $'Prima riga\nSeconda riga\n'

Si ricordi di anteporre il carattere $

Sequenza di Escape Descrizione

\a Avviso (fa suonare il campanello di sistema)\b Backspace\e Escape\f Avanzamento foglio\n Nuova riga\r Ritorno a capo\\ Barra rovesciata\NNN Carattere il cui codice ASCII è NNN (in base 8)

Page 88: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 11

Cronologia e Line editingLa shell bash ha la proprietà di conservare la cronologia dei comandi impartiti in un elenco sequenziale.

Vengono memorizzati i comandi della sessione corrente e delle precedenti.

Per impostazione predefinita la bash conserva 500 eventi, ma è un parametro che pùò essere variato.

La cronologia è memorizzata in un file di testo all'interno della home chiamato .bash_history

Per ripetere il comando precedente è sufficiente premere il tasto “freccia su” (↑).

Usando i tasti cursore su (↑) e giù (↓) ci si muove tra i comandi precedentemente impartiti.

Quando viene evidenziato il comando cercato, si può editare spostandosi all'interno della riga con i tasti cursore sinistra (←) e destra (→) .

Page 89: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 12

Cronologia uso avanzato Il comando history visualizza l'intero elenco della cronologia dei comandi.E' di aiuto quando l'elenco è lungo e l'uso dei tasti cursore richiederebbe molto tempo per individuare un evento dato diversi comandi fa.

$ history [INVIO]1 who2 ls3 ps4 history$

Se l'elenco supera la lunghezza di una pagina è possibile usare il comando:

$ history | more (è necessario premere un tasto per avanzare)

e per cercare un particolare comando si può usare:

$ history | grep ls (filtra le righe che contengono la parola “ls”)2 ls$

Page 90: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 13

Cronologia uso avanzatoConoscendo il numero dell'evento è possibile eseguirlo digitando il punto esclamativo (!) seguito dal numero dell'evento:

$ !<numero evento> [INVIO]

Premendo i tasti <CTRL>+r è possibile eseguire una ricerca inversa all'interno della cronologia:

$ <CTRL>+r (reverse-i-search)'': grep

Una volta impostata la stringa di ricerca per trovare gli altri elementi contenuti nella cronologia bisogna ripetere la pressione dei tasti <CTRL>+r.

Page 91: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 14

Ridirigere Input ed OutputLa shell sposta il testo in “stream”, ovvero in flussi.

Sono presenti tre flussi:

Standard output: costituito dallo schermo del terminaleStandard input: di default è la tastiera.Standard error: è un flusso specifico per i messaggi di errore normalmente

indirizzato anche esso allo schermo.

Ognuno di questi flussi può essere rediretto ad un file o anche ad un altro comando.

Reindirizzamento dei flussi ad un file

Standard input: si usa l'operatore minore '<'.$ apropos < my_keywords [INVIO]

Standard output: si usa l'operatore maggiore '>'.$ ls > my_dir [INVIO]

Standard error: si usa l'operatore '2>'.$ gcc -c my_program.c 2> my_errors [INVIO]

Page 92: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 15

Ridirigere Input ed Output

Ridirigere l'output all'input di un altro comando

Tale operazione è detta piping, e si verifica quando si connette lo standard output allo standard input di un altro comando.

Questa operazione viene eseguita specificando i due comandi in sequenza, separati dal carattere barra verticale “|” (detto pipe).

I comandi così costituiti prendono il nome di pipeline

esempio:$ ls -l | more

In questo modo lo standard output del comando ls viene ridiretto allo standard input del comando more, che si occupa di bloccare lo scrolling ed attendere la pressione di un tasto per continuare la visualizzazione.

Page 93: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 16

Ridirezione nella BASHLa BASH identifica con un numero i flussi:

0 = Standard input - 1 = Standard output - 2 = Standard error

&n è la sintassi con la quale si ridirige un flusso ad un file già aperto.

Ad esempio 2>&1 ridirige 2 (standard error) a 1 (standard output).Se 1 è stato ridiretto ad un file anche 2 verrà rediretto allo stesso file.

NOTA: In altre shell i caratteri usati per effettuare il Redirectory possono variare

Carattere Azione

> Ridirige lo standard output2> Ridirige lo standard error2>&1 Ridirige lo standard error sullo standard output< Ridirige lo standard input| Esegue il pipe dello standard output su un altro programma

>> Ridirige lo standard output accodando i dati

2>&1 | Esegue il pipe dello standard error e standard output

Page 94: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 17

Gestione dei JOBI processi eseguiti in una shell costituiscono i JOB dell'utente.

Più job possono essere eseguiti all'interno di una shell, ma solo un job può essere attivo sul terminale, quello che legge lo standard input e scrive lo standard output.

Questo processo prende il nome di job in foreground (primo piano), mentre l'esecuzione degli altri job viene definita in background (sfondo).

La shell assegna a ciascun processo un numero di job univoco che può essere utilizzato come argomento per i comandi che operano sui job.

Per passare un numero di job ad un programma bisogna farlo precedere dal carattere %

Visualizzazione dei job in esecuzione

Si utilizza il comando jobs:$ jobs [INVIO][1] – Stopped vi[2] + Stopped apropos shell

Page 95: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 18

Operazioni sui JOBArrestare un job

Digitando <CTRL>+c si interrompe il job in foreground prima del suo completamento uscendo dal programma.Utilizzando il comando kill si può interrompere un job in background, specificando il numero di job come argomento.Per interrompere il job numero 2, digitare:

$ kill %2 [INVIO]

Sospendere un job

Digitando <CTRL>+z, il job in foreground viene sospeso ed appare il seguente messaggio sul terminale:

[1] + Stopped apropos shell

Se ci sono job sospesi al momento della disconnessione, la shell impedisce il logout e visualizza quanto segue:

$ logout [INVIO]There are stopped jobs.

Page 96: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 19

Operazioni sui JOBEseguire un job in background

I nuovi job vengono eseguiti in foreground a meno che non si specifichi diversamente.Per eseguire un job in background si deve terminare la riga di comando con il carattere “&”

$ apropos shell > shell-commands & [INVIO][1] 6575

La shell visualizza il numero di job (in questo caso 1) ed il PID (Process IDentifier) del job (in questo caso 6575)

Al termine del job in background, la shell visualizza il numero di job, il comando e il testo “Done”, per indicare che il job è stato correttamente ultimato.

[1]+ Done apropos shell > shell-commands

Page 97: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 20

Operazioni sui JOBSpostare un job in background

Per spostare un job dall'esecuzione in foreground a quella in background bisogna:

● Sospenderlo (<CTRL>+z)● Digitare il comando bg (per “background”)

Per eseguire un job in background si deve terminare la riga di comando con il carattere “&”

$ apropos shell > shell-commands [INVIO]<CTRL>+z[1]+ Stopped apropos shell > shell-commands$ bg [INVIO][1]+ apropos shell &

Se ci sono diversi job in stato sospeso (Stopped) si deve specificare il numero di job che si vuole portare in background

$ bg %4 [INVIO]

Page 98: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 21

Operazioni sui JOBSpostare un job in foreground

Per spostare un job dall'esecuzione in background a quella in foreground si usa il comando fg.

Per spostare in foreground il job in background più recente:

$ fg [INVIO]

Se ci fossero più job in background si deve specificare il numero di job:

$ fg %3 [INVIO]

Page 99: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 22

Personalizzare la ShellL'ambiente di lavoro può essere personalizzato in modo da rendere il lavoro più confortevole o migliorarne l'efficienza.Una delle personalizzazione è la modifica del prompt vista in precedenza.

Alias di un comando

L'alias è un nome che rappresenta un altro comando.$ alias ll=”ls -l --color=tty”

Modificare il percorso di ricerca (PATH)

E' possibile modificare il percorso di ricerca tramite la variabile d'ambiente PATH.

Il comando: $ PATH=/usr/bin:/bin:/sbin assegna le directory /usr/bin, /bin e /sbin al percorso di ricerca

Mentre il comando:$ PATH=$PATH:/mia_directory

appende /mia_directory al percorso di ricerca. E' equivalente a scrivere:$ PATH=/usr/bin:/bin:/sbin:/mia_directory

Page 100: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 23

Configurare la ShellLe personalizzazioni operate in precedenza vengono perse se si esegue il logout.Per rendere permanenti le impostazioni si possono inserire i comandi all'interno di file di configurazione che vengono richiamati all'apertura della Shell.

Si usano i seguenti file di configurazione:

/etc/profile Permette una configurazione globaleModificabile solo dall'utente root (o da un utente amministratore)

.bash_profile, .bash_login, .profile, .bashrc e .bash_logoutModificabili dai singoli utenti e contenuti nella home directory:

Se la shell è richiamata dal processo di login (login shell) vengono richiamati nell'ordine i file:

/etc/profile, .bash_profile, .bash_login, .profile

Se non è una login shell viene richiamato il file .bashrc

Alla chiusura della shell viene richiamato il file .bash_logout

Page 101: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 24

Configurare la ShellUn esempio di file di configurazione della shell è riportato di seguito:

# Make color directory listingalias ll=”ls –color=auto”

#Set a custom PATHPATH=”/usr/local/bin:/usr/bin:/bin”

#Set a custom shell promptPS1=”[\W] $ “

Queste righe possono essere inserite in uno dei file visti in precedenza, è cura dell'utente scegliere quello corretto in base al risultato che vuole ottenere.

Page 102: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 25

Editor di testoIn Linux esistono una moltitudine di editor di testo alcuni utilizzabili in terminale altri in ambiente grafico.

Noi approfondiremo l'uso di “VI” (si legge “vi-ai” o “vai”), uno degli editor più utilizzati nel mondo Unix.

In particolare nelle distribuzioni Linux più recenti si trova VIM un clone di VI, migliorato in alcune funzionalità.

Un altro editor molto popolare in ambiente Unix è Emacs.

Da segnalare anche LaTeX che è uno dei migliori linguaggi per la stampa e la realizzazione di testi di carattere scientifico.A differenza di altri word-processor del tipo "WYSIWYG”, LaTeX è un vero e proprio linguaggio di programmazione che consente di gestire il testo e le immagini nel modo desiderato, oltre ad offrire la possibilità di implementare nuove funzioni per specifiche esigenze.

Page 103: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 26

VIIn VI esistono tre modi di funzionamento:

COMMAND MODE Il cursore è posizionato sul testo.La tastiera è utilizzabile solo per impartire comandi.I caratteri digitati non vengono visualizzati.

INPUT MODE Tutti i caratteri digitati vengono visualizzati ed inseriti nel testo.

DIRECTIVE MODE Ci si trova posizionati con il cursore nella linea direttive, l'ultima linea dello schermo, e si possono impartire a "vi" tutti i comandi per il controllo del file.

I passaggi di stato avvengono con i seguenti caratteri:

DIRECTIVE MODE ---> COMMAND MODE <RETURN> o due volte <ESC> COMMAND MODE ---> INPUT MODE i, a, A, o, O, c, R... INPUT MODE ---> COMMAND MODE <ESC> COMMAND MODE ---> DIRECTIVE MODE :

Page 104: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 27

VI - Command ModePer editare un file si usa il comando:

$ VI nome_file [nome_file1 [file2..... file_n] ]

All'apertura ci si trova in CM i comandi più frequenti di questa modalità sono:

SPOSTAMENTI DI BASEh,l,k,j muovono il cursore rispettivamente a sinistra, destra, sopra e sottoG posizionamento sull'ultima riga di testo#G posizionamento sulla riga numero “#” (es: 3G, 123G)

OPERAZIONI SUL VIDEO^D, ^U si posiziona mezza pagina AVANTI o INDIETRO^F, ^B si posiziona sulla pagina SUCCESSIVA o PRECEDENTEH, M, L posiziona il cursore ad INIZIO, META' o FINE PAGINA

LINEA$ posiziona il cursore alla fine della riga corrente.^ posiziona il cursore sul primo carattere NON-BLANK0 posiziona il cursore sulla prima colonna#| posiziona il cursore sulla colonna numero “#”

Page 105: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 28

VI - Command ModeEDIT

. ripete l'ultimo comando impartito o OPEN: inserisce una riga sotto quella correnteO OPEN: inserisce una riga SOPRA quella correntei INSERT: inserisce caratteri a sinistra del cursoreI INSERT: inserisce caratteri all'inizio della rigaa APPEND: aggiunge caratteri a destra del cursoreA APPEND: aggiunge caratteri alla fine della rigaJ JOIN: concatena la riga successiva alla precedente#s SUBSTITUTE: sostituisce "#" caratteri, di default 1 carattere#S SUBSTITUTE: sostituisce "#" linee, di default 1 linea#r REPLACE: sostituisce "#" caratteri, di default 1 carattereR REPLACE: entra in modalità di sovrascritturacw CHANGE WORD: sostituisce la parola correntecc CHANGE: cambia l'intera lineaC CHANGE: cambia fino alla fine della linea

Nota: in tutte le modalità di inserzione di testo elencate sopra (i,a,o,c,r), èpossibile anteporre un numero a queste; ciò comporterà l'esecuzione della funzione desiderata tante volte quante specificate con quel numero.

Page 106: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 29

VI - Command ed Input ModeEDIT

u annulla l'ultima modificap PASTE: incolla il contenuto del buffer prima del cursore P PASTE: incolla il contenuto del buffer DOPO il cursore “ [1-9]P PASTE: incolla uno dei buffer numerati dove vengono memorizzate le

cancellazioni con il metodo First-In-Last-Out#dd cancella “#” righe, di default 1D cancella dalla posizione corrente fino al termine della rigax cancella il carattere su cui è posizionato il cursoe (#x)X cancella il carattere che PRECEDE il cursore (#X)/stringa trova la parola “stringa” cercando in avanti?stringa trova la parola “stringa” cercando INDIETRO/, ? ripetono la ricerca in avanti o indietro

INPUT MODEIn questo modo si scrive e si può effettuare un editing semplice del file di testo.

● I tasti cursore permettono di muoversi nel testo● Il tasto backspace cancella il carattere posto a sinistra del cursore● Il tasto canc cancella i caratteri a destra del cursore

Page 107: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 30

VI – Directive ModeIn directive mode i comandi impartiti sono prevalentemente diretti all'uso dei file

:#1, #2 co #3 copia dal numero di linea #1 a #2 dopo la linea #3:#1, #2 d cancella le linee da #1 a #2:#dd cancella “#” righe, di default 1:#1, #2 m #3 MOVE: sposta le righe da #1 a #2 dopo la riga #3:#1, #2 p stampa le righe da #1 a #2 :r [nome file] apre il file “nome file” inserendolo nella posizione in cui si trova il

cursore:n passa al file successivo qualora siano stati aperti più file:rew ricomincia ad editare partendo dal primo file della lista:q esce da VI:q! forza l'esecuzione del comando che lo precede in questo caso esce

senza registrare le modifiche:w registra le modifiche su disco:w nome_file registra le modifiche nel file “nome file” (salva con nome)

Si possono impartire più comandi in una sola volta.es: :wq! Forza la registrazione del file e poi esce.

Page 108: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 31

VI – OpzioniLe opzioni influenzano l'ambiente dell'editor VI con lo scopo di adattarlo alle esigenze dell'utente.

L'editor 'vi' ha 3 tipi di opzioni: ● a valori numerici● a valori stringa ● a valori booleani (vero, falso).

Si attribuisce un valore alle opzioni numeriche o a valori stringa con il comando: :set opzione=valore

Si attribuisce il valore "vero" alle opzioni booleane (cioè le si attiva) con::set opzione

Si attribuisce un valore "falso" alle opzioni booleane (cioè le si disattiva) con::set noopzione

Per avere una lista di tutte le opzioni: :set allPer avere una lista di tutte le opzioni modificate: :setPer avere il valore di una opzione di tipo numerico o stringa: :set opzione

Una opzione molto utile è quella che visualizza i numeri di riga::set nu (:set nonu li nasconde)

Page 109: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 32

Processi

Ogni comando che si lancia ed ogni servizio attivo sul sistema danno origine a uno o più processi.

Un processo consta di: codice eseguibile, posizione di esecuzione, i dati che gestisce, i file aperti, l'ambiente di esecuzione e le credenziali.

Quando lo stesso programma è eseguito più volte nel sistema, anche da parte di utenti diversi, alcune parti dello stesso possono essere condivise (shared) in memoria: il codice in esecuzione e le eventuali librerie di sistema caricate ad esempio.

Il Process IDentifier (PID) è un numero univocamente associato ad un processo nel momento in cui viene generato.Ogni processo deve essere generato da un altro processo di cui si definisce il PPID (Parent PID).Si parla quindi di processo padre (parent) e processo figlio (child).

Il processo INIT è l'unico che non ha padre essendo il primo processo mandato in esecuzione, per questo si definisce anche il Padre di tutti i Padri ed il suo PID = 1.

Page 110: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 33

Stato di un processo

Un processo si può trovare in uno dei seguenti stati:

Ready E' pronto per essere eseguito.Running E' in esecuzione su una CPU del sistema.Sleeping Attende un evento.Swapped Parte del processo e' stato trasferito su disco, per liberare

memoria per altri processi.Terminated Il processo e' terminato. Invio del segnale SIGCHLD al parent.Zombie Il processo ha terminato la sua esecuzione, ma il parent non ha

raccolto il segnale SIGCHLD. Il processo mantiene ancora allocate delle risorse.

Ad ogni processo è associata una priorità, un valore che varia fra -20 e 19 (valori più alti indicano una priorità più bassa), che determina quanta CPU time rispetto agli altri il sistema gli deve dedicare.

Un processo può generare una copia di se stesso (fork), cha ha PID diverso e PPID uguale al proprio PID (uso frequente per i servizi di rete).

Page 111: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 34

Monitoraggio dei processips -ef

mostra una lista dei processi attivi

pstree [-c]mostra la lista dei processi con una struttura ad albero, così da individuare facilment i padri e i figli. L'opzione -c elenca tutti i processi anche se hanno lo stesso nome, diveramente vengono raggruppati.

top E' un programma che visualizza in tempo reale lo stato dei processi.Durante la visualizzazione è possibile ordinare i processi secondo una delle seguenti proprietà:

N - Ordina secondo PIDA - Ordina secondo età (per prima i più recenti)P - Ordina secondo utilizzo CPUM - Ordina secondo memoria utilizzata

Page 112: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 35

Operazioni sui processiSegnali

Per gestire un processo è possibile inviargli dei segnali ognuno dei quali svolge una diversa funzione.

Quelli di uso più frequelnte sono (tra parentesi il numero associato):

SIGKILL (9) termina il processo incondizionatamenteSIGTERM (15) termina il processo.Permette il rilascio controllato delle risorse.SIGINT (2) equivale a <CTRL>+c (interrompe il processo)SIGTSTP equivale a <CTRL>+z (sospende il processo)

Per SIGTSTP non è stato indicato il numero del segnale poiché può variare secondo il sistema, si usa pertanto il nome simbolico.

Comandi per i processi

kill -[signal] pid invia un segnale al processo avente numero pid.Kill -9 pid “uccide” il processokillall [opzioni] nome invia un segnale a tutti i processi aventi nome.bg porta il processo in backgroundfg porta il processo in foregroundnice <priorità> <comando> esegue il comando con la priorità specificata

Page 113: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 36

Gestione e analisi dei logLa gestione e l'analisi dei log è un'attività sistemistica che richiede una certa attenzione.

Su macchine ad alto traffico, o sotto attacco DOS o con particolari problemi ricorrenti, le dimensioni dei log possono crescere a dismisura in pochissimo tempo, fino a SATURARE il file system.

I log sono contenuti nella directory /var/log

Per questo motivo è sempre consigliabile montare la directory /var usando una partizione indipendente, che, anche se piena, non blocca il funzionamento del sistema.

E' importante gestirli programmando una rotazione ad intervalli regolari (logrotate) e compattando i log vecchi.

Può essere utile anche monitorare i log (logwatch) con opportune applicazioni che possano avvertire il sysadm quando si verificano determinate condizioni.

Page 114: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 37

SyslogdIn tutti i sistemi Unix è il demone syslogd che si occupa di gestire i diversi log di sistema ed è configurabile tramite il file /etc/syslog.conf

ll file /etc/syslogd.conf presenta una sintassi semplice, per ogni riga si indica un'attività di logging nella forma:

facility.loglevel destination

La facility indica la parte del sistema che genera l'errore. Può essere auth, cron, daemon, kern, lpr, mail, news, user, syslog, ecc..

Il loglevel indica il livello di criticità del messaggio: debug, info, notice, warning, error, crit, alert, emerg.

La destination è il file nel quale verranno memorizzati gli errori.

E' possibile usare wildmask (*), negazioni (!), uguaglianze (=) e (;) per separare più valori di faciliy.loglevel.

es:*.info;mail.none /var/log/messages qualunque messaggio eccetto mail mail.* /var/log/mailog qualunque messaggio riguardante le mail cron.* /var/log/cron log del crontab

Page 115: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 38

Gestione degli utentiLa gestione degli utenti comprende le operazioni di

● Aggiunta● Modifica● Assegnazione / cambio password

di tutti gli utenti che possono accedere in shell alla macchina.

Per aggiungere manualmente un utente al sistema si deve (come root):

● Editare /etc/passwd aggiungendo una riga per il nuovo utente;● Editare /etc/group aggiungendo un nuovo gruppo per il nuovo utente (non

indispensabile);● Se esiste il file /etc/shadow editarlo aggiungendo una nuova riga per l'utente;● Creare la home del nuovo utente: mkdir /home/nomeutente● Ricreare l'ambiente base nella nuova home: cp /etc/skel /home/nomeutente● Modificare il proprietario della home:

chown -R nomeutente:nomegruppo /home/nomeutente● Modificare i permessi della home: chmod -700 /home/nomeutente● Modificare la password dell'utente: passwd nomeutente

Page 116: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 39

Gestione utenti: comandi e fileLe operazioni necessarie per la creazione di un utente possono essere semplificate utilizzando i seguenti comandi:

useradd [opzioni] nomeutente Aggiunge un utente, è possibile tramite le varie opzioni disponibili modificare tutte le impostazioni di default legate all'utente.

userdel [-r] nomeutente Elimina un'utente, da sottolineare che la sua home con il suo contenuto non viene cancellata.

groupadd [-g GID] nomegruppo Aggiunge un gruppo.groupdel nomegruppo Elimina un gruppo.

passwd [nomeutente] Modifica la password di un'utente

chsh [-s shell] [nomeutente] Cambia il tipo si shell disponibile al login di un'utente

NOTA: Il file /etc/shadow è il database delle password usato nei sistemi Unix più evoluti. In esso sono elencate per ogni utente la password (criptata) e vari parametri ad essa connessi (ultima modifica, durata massima e minima, ecc...). Ad esso fanno riferimento diversi files, fra cui /etc/passwd e tutti i comandi per la gestione degli utenti (useradd, userdel, usermod).

Page 117: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 40

Backup e archiviazionePer effettuare il backup di file e cartelle si usa il programma tar (tape archive) nato per effettuare la copia su un dispositivo sequenziale (nastro magnetico /dev/st0), ma è possibile usando l'opzione “-f” specificare anche un file.

tar è comunemente utilizzato in abbinamento con un'utility di compressione per ridurre le dimensioni del file di archivio: gzip, bzip2 o compress (ormai obsoleto).

Per convenzione si usano le seguenti estensioni:.tar per i file di archivio.tar.gz o .tgz per i file di archivio compressi con gzip.tar.bz2 o tbz2 per i file di archivio compressi con bzip2.tar.Z per i file di archivio compressi con compress

Utility di compressione disponibili sotto Unix

gzip [num] file Comprime nel formato gz. [num] indica il livello di compressione.gunzip file Decomprime un file in formato gzbzip2 file Comprime in formato bz2. E' più efficiente di gzipbunzip2 Decomprime un file in formato gz(un)compress comprime e decomprime nel formato .Zzip e unzip sono disponibili per compatibilità con il mondo windows

Page 118: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 41

Uso di TARSintassi:

tar <operazioni> [opzioni]

Operazioni comuni [-]A --catenate –concatenate [-]c --create [-]d --diff –compare [-]r --append [-]t –list [-]u --update [-]x --extract –get --delete

Opzioni comuni -f, --file F -Z, (compress) -j, --bzip -z, --gzip -p, --preserve-permissions -v, --verbose

Esempitar -cvzf copia.tgz * crea l'archivio compresso con gzip, copia.tgz, di tutti ifile

presenti nella directory corrente (sottodirectory incluse)visualizzando i dettagli durante l'operazione.

tar -xjf copia.tbz2 decomprime l'acrhivio compresso con bzip2, copia.tbz2, nella directory corrente, senza visualizzare i dettagli.

Page 119: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 42

rsyncrsync permette la copia differenziale di file via rete, ottimizzando i tempi di backup e ripristino dei dati.Es: rsync -av 10.0.0.10:dircondivisa/* /backup/10.0.0.10/home/-av Modo archivio. Mantiene permessi ed ownership.10.0.0.10 è l'indirizzo IP della sorgentedircondivisa è la cartella da copiare/backup/10.0.0.10/home path locale della macchina su cui vengono copiati i file.

La prima volta che si esegue questo comando tutti i file presenti nella dircondivisa di 10.0.0.10 vengono copiati, le volte successive vengono copiati solo quelli modificati dall'ultimo backup.

Sull'host 10.0.0.10 deve essere in esecuzione rsync in modalità server (rsync --daemon) ed il file /etc/rsyncd.conf deve contenere una struttura simile:

[dircondivisa] Il nome della condivisione che rsycnd esporta.path = /home/ Il path locale corrispondente a questa condivisioneread only = yes Per un backup non è necessario avere permessi in scritturauid = root L'utente con cui rsync accede ai file: root può leggere tutti i filegid = root Il gruppo con cui rsync accede al file system.hosts allow = 10.0.0.2 Gli IP da cui è possibile collegarsi via rsync (ACL).list = false Impedisce di elencare le condivisioni disponibili sul server rsync

Page 120: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 19 ott 2007

Pag. 43

BackupPCSono disponibili anche degli strumenti per eseguire un backup avanzato, uno di questi è BackupPc

BackupPC un sistema di backup che presenta una tipologia client/server, di livello enterprise ad alte performance per eseguire il backup di computer Linux e Windows sui dischi di un server o su un NAS.E' altamente configurabile tramite un interfaccia web scritta in Perl.In aggiunta si possono trasferire su nastro i dati già copiati sul server

E' stato testato sulle seguenti piattaforme:Linux, Freenix e Solaris per la parte serverLinux, Win95, Win98, Win2000 e WinXP per la parte client.

La configurazione e l'uso di questo prodotto esula dallo scopo del corso.

Sul sito web: http://backuppc.sourceforge.net/ è possibile trovare tutte la documentazione necessaria per la sua installazione e l'utilizzo.

Page 121: Corso Linux

Corso Base suCorso Base suLinuxLinux

Fine Lezione 3Fine Lezione 3

Page 122: Corso Linux

Corso Base suCorso Base suLinuxLinux

Basato su Fedora 7Basato su Fedora 7Lezione 4Lezione 4

Page 123: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 2

Configurare la rete

Esistono diversi metodi per configurare il servizio di rete:

● editare i singoli file di configurazione del networking (per applicare le modifiche si deve fare ripartire il servizio di rete);

● usare comandi shell come ifconfig e route● utilizzare strumenti di configurazione con interfaccia a finestra come setup,

netconfig, linuxconf, webmin, system-config-network e altri facilmente individuabili su desktop KDE o GNOME.

Dove possibile si consiglia di usare questi ultimi per la maggiore facilità d'uso.

La modifica manuale dei file di configurazione è complicata dal fatto che nelle varie distribuzioni Linux esistono delle differenze, pertanto i file da modificare variano secondo la distribuzione, benché alcuni ovviamente coincidono.

Le schede di rete vengono indicate con:eth0 – eth0:1 – eth0:22 La prima scheda di rete, eth0:x sono IP Virtuali eth1 - eth1:3 seconda scheda di rete e relativi IP Virtualippp0 Point to point

Page 124: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 3

File di configurazioneQuanto riportato di seguito si applica alla distribuzione Fedora 7, in altre distribuzioni il nome dei file e la loro ubicazione può essere differente.

/etc/sysconfig/network Contiene le principali configurazioni per il Networking:hostname, domainname, default gateway.Esempio con impostazioni base:NETWORKING=yes ; Attiva il networkingHOSTNAME=tux ; Nome dell'hostGATEWAY=10.0.0.1 ; IP del default gateway

/etc/hosts Contiene il mapping fra indirizzi e hostname ed alias. Segue un esempio.127.0.0.1 localhost.localdomain localhost10.0.0.22 tux.dominio.it tux pinguino

/etc/services Contiene il mapping tra i numeri di porta e i nomi dei servizi.

/etc/host.conf Specifica l'ordine secondo il quale il sistema effettuerà la ricerca di informazioni per risolvere gli indirizzi.Usato dalla resolver library in sistemi con libc versione 5.order hosts,bind ; usa prima /etc/hosts e poi DNS per risolvere

gli IP.

/etc/nsswitch.conf Uguale ad host.conf nei sistemi con libc versione 6 (glibc).E' sempe meglio avere entrambi i file correttamente configurati.

Page 125: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 4

File di configurazione/etc/resolv.conf File di configurazione del client DNS.

Contiene gli indirizzi dei server DNS e un possibile dominio dell'host e l'ordine di ricercanameserver 10.0.0.150 ; IP del DNS server primarionameserver 192.168.1.10 ; IP del DNS server secondariodomain dominio.it ; Nome del dominio dove si trova l'hostoptions timeout:6 ; E' il timeout per le query DNS.

/etc/sysconfig/networking/device/ifcfg-eth0/etc/sysconfig/networking/device/ifcfg-eth0:1

File di configurazione della scheda di rete eth0.

DEVICE=eth0 Nome del dispositivoBOOTPROTO=none BOOTP disabilitatoHWADDR=00:11:2f:d1:ca:38 MAC addressONBOOT=yes Attivata al bootDHCP_HOSTNAME=brontolo nome dell'host IPADDR=192.168.1.10 indirizzo IPNETMASK=255.255.255.0 maschera di reteGATEWAY=192.168.1.1 default gateway

Page 126: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 5

Comandi di shell per configurare la reteQuesti comandi in genere valgono fino al successivo reboot, si usano per verificare una configurazione prima di apportare le modifiche ai file di configurazione.

ifconfig [interface] [options] | address Permette di configurare le interfacce di rete.

Ifconfig Elenca tutte le interfacce attive e le relative impostazioniifconfig eth0 [up | down] Attiva o disattiva l'interfaccia eth0ifconfig eth2 192.168.0.56 netmask 255.255.255.0 Configura /dev/eth2 con indirizzo ip 192.168.0.56 (/24)

route [ opzioni ] [comando] [parametri] Permette di manipolare la tabella di routing

route -n Visualizza informazioni di routing evitando di risolvere gli iproute add -net 192.56.76.0 netmask 255.255.255.0 gw 192.168.0.1

Aggiunge una route statica per la rete 192.56.76.0/24, usando 192.168.0.1 come gateway

route add -net 0.0.0.0/0 gw 192.168.0.1Imposta 192.168.0.1 come default gateway

A volte è necessario riavviare i servizi di rete per attivare una nuova configurazione, si può fare utilizzando lo script di init : /etc/init.d/network (start | stop | restart)

In Fedora si può usare anche il comando: service network [ start | stop | restart ]

Page 127: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 6

Diagnosi della retenetstat [opzioni]

Interroga /proc/net/* e visualizza informazioni sul networking subsystem di Linux permettendo di conoscere lo stato e l'utilizzo dei servizi di rete.

Opzioni utili:-n Disabilita il reverse lookup-r Visualizza la tabella di routing-p Visualizza i programmi che utilizzano la connessione-s VIsualizza statistiche per i singoli protocolli-a Visualizza tutte le connessioni: attive e in listening

arp [opzioni]

Visualizza e manipola l'ARP cache del sistema. Estrapola le informazioni da /proc/net/arp

Opzioni utili:-n Disabilita il reverse lookup-a Visualizza l'arp cache del sistema-d host Rimuove l'host specificato dalla arp cache

Page 128: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 7

Diagnosi della retetcpdump [opzioni] [espressioni]

Tool di packet sniffing, è possibile utilizzare filtri ed effettuare il dump su file.Visualizza le intestazioni dei pacchetti, non il contenuto.

Opzioni utili:-i eth# Specifica l'interfaccia su cui ascolatare-c ## Esce dopo aver ricevuto il numero specificato di pacchetti-r nomefile Utilizza il file specificato come input per i dati da filtrare-w nomefile Scrive su file il risultato dello sniffing -n Non risolve i nomi degli host

Le espressioni definiscono i criteri con cui filtrare i pacchetti. Se non vengono definite vengono visualizzati tutti i pacchetti.

type Ha come possibili valori: host - net - portEs: tcpdump host pippo, tcpdump port 80, tcpdump net 10.0

dir Indica la direzione dei pacchetti: src - dst - src or dst - src and dstEs: tcpdump src host pippo, tcpdump dst port 80

proto Restringe il dump al protocollo specificato: ether - fddi - tr - ip - ip6 - arp - rarp - decnet - tcp - udp

Es: tcpdump tcp dst port 80

Page 129: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 8

Altri strumenti di utilità

ping ip Invia ICMP ECHO REQUEST all'IP specificato.

traceroute [opzioni] ip Ricostruisce il percorso che effettua un pacchetto verso la destinazione definitita, visualizzando tempi medi, minimi e massimi per superare un certo hop.

nslookup [opzioni ] Esegue query interattive a server DNS.Recentemente viene preferito dig.

dig @server domain query-type Alternativa più dettagliata e completa a nslookup.

lynx [url] e links [url] Web browser testuali.Links è più evoluto e supporta anche frame

ftp [opzioni] [url] FTP client. Un'alternativa valida su Linux è ncftp.

wget [opzioni] [url] Utility polifunzionale per scaricare file via http o ftpPermette di effettuare il mirror di siti Web (-m)

whois [opzioni] Esegue un whois lookup

mail [email protected] Invia una mail all'indirizzo specificato.

Page 130: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 9

Linux come firewall

La gestione delle funzioni di packet filtering, natting e forwarding dal kernel 2.4 è affidata al netfilter subsystem, gestibile tramite il comando iptables.La gestione delle funzioni di firewalling su Linux ha subito nel corso degli anni cambiamenti progressivi.Nel kernel 2.x questa funzione è affidata ad un comando con sintassi simile: ipchains.Nei kernel precedenti il comando utilizzato era ipfadm.

Iptables basa la sua funzionalità su diverse tabelle (tables) a cui sono applicate delle catene (chains) con le regole di filtering definite dall'utente.

La gestione delle tabelle tramite iptables esula dagli obiettivi di questo corso.

Per gestire in modo agevole Linux come firewall si consiglia l'uso di fwbuilder, un frontend grafico che permette di creare le tabelle di firewall in modo visuale, verificarne la correttezza e applicarle al sistema.

Sempre usando yum: $ yum install fwbuilder

che dovrebbe installare queste dipendenze se non presenti: fwbuilder, libfwbuilder, fwbuilder-ipt, fwbuilder-ipf o fwbuilder-pf, gcc, gdk_pixbuf, glib, glibc-2.2.4, gtk, gtkmm, libsigc++, libstdc++, libxml2, libxslt, libz, openssl-0.9.6b, ucdsnmp, xshared

Page 131: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 10

Server Web

In Linux il server http standard è Apache.Se già non è presente sul sistema si deve installare: $ yum install httpdI pacchetti necessari per un'installazione tipica verranno selezionati automaticamente.

I file di configurazione si trovano nella directory /etc/httpd.Il principale è /etc/httpd/conf/http.conf che contiene tutti i parametri di configurazione del server WEB.

Alla fine dell'installazione si deve solo verificare che il servizio httpd sia attivo usando uno dei metodi visti in precedenza (ntsysv ad esempio).

I parametri di configurazione sono molteplici e si rimanda al sito www.apache.orgper una lettura approfondita, poiché il server dopo l'installazione è già funzionante.

Di seguito si riportano i path delle cartelle principali usati di default:DocumentRoot /var/www/html/ nella quale memorizzare le pagine Web,/cgi-bin /var/www/cgi-bin per i programmi cgi

Page 132: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 11

Server FTPIn Fedora il server FTP utilizzato è vsftp.Se già non è presente sul sistema si deve installare: $ yum install vsftpd

I file di configurazione si trovano nella directory /etc/vsftpd./etc/vsftpd.conf contiene tutti i parametri di configurazione del server ftp.vsftpd permette il resume dei file, cioè la possibilità di riprendere il download dal punto in cui era stato interrotto.La configurazione base non permette all'utente root di accedere in modalità ftp.Questa limitazione è voluta per ragioni di sicurezza, infatti l'autenticazione degli utenti da parte del servizio ftp avviene “in chiaro”, cioè login e password passano nella rete senza crittografia e sono leggibili con programmi di sniffing (tshark).

Alla fine dell'installazione si deve verificare che il servizio vsftpd sia attivo.I parametri di configurazione sono molteplici e si rimanda alla pagina del manuale relativa: man vsftpd o man vsftpd.confSi consiglia di attivare il seguente parametro nel caso di un sistema usato da più utenti per evitare che possano leggere cartelle di livello superiore:chroot_list_enable=YES

Di default Fedora usa SFTP un server FTP che usa il protocollo SSH per garantire la massima sicurezza, si consiglia di usare questo server.

Page 133: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 12

Samba serverIl servizio SAMBA implementa sotto Linux il protocollo SMB di windows.SMB è un protocollo proprietario Microsoft che permette tra le altre funzionalità la condivisione di file e stampanti in una rete windows.

Si compone della parte client (per connettersi a condivisioni create in ambiente windows) e della parte server per condividere risorse Unix verso client windows.

I pacchetti da installare sono:yum install samba installa il server sambayum install samba-client installa il client di accesso alle condivisioni smbyum install samba-common installa software necessario sia al server che al clientyum install system-config-samba installa il tool di configurazione graficoyum install samba-swat installa il tool di configurazione Webyum install smb4k installa il tool grafico di accesso alle condivisioni smb

system-config-samba permette una configurazione rapida del server: creazione di utenti e condivisione di file e cartelle.

swat permette di configurare sotto tutti gli aspetti il server samba, può essere utilizzato in alternativa alla modifica diretta del file di configurazione /etc/samba/smb.conf

Per attivare swat si deve usare ntsysv o system-config-services per indicare che il servizio deve essere attivo e poi riavviare il demone xinetd: $ service xinetd restartPer usare swat è sufficiente aprire un comune browser e puntare al'indirizzo http://sambaserver:901 (per l'accesso al server locale: http://localhost:901)

Page 134: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 13

CUPSLa gestione delle stampanti in ambiente Linux ha subito un'evoluzione rapidissima.Dalla stampa gestita tramite il demone lpd nato quando esistevano le stampanti a caratteri, si è giunti alla nuova architettura CUPS (Common Unix Printing System).

CUPS implementa una gestione nuova della stampa con un'architettura modulare che permette di mantenere la compatibilità con i vecchi protocolli e una facile aggiunta di nuovi.

Supporta tra gli altri il protocollo IPP (Internet Printer Protocol) che permette di stampare attraverso internet garantendo una sicurezza elevata poichè usa un sistema di autenticazione e di crittografia.

Per l'installazione è sufficiente digitare in una shell: $ yum install cups

La configurazione può essere effettuata tramite l'interfaccia Web disponibile al link:http://localhost:631 in qualunque sistema sul quale sia installato CUPS.

Usando Fedora si può usare anche il tool: system-config-printers

Page 135: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 14

CUPS architettura

smb share

Page 136: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 15

NFS

Network File System

NFS è' un file system che permette la condivisione di directory tra computer connessi in rete.

Nel file di configurazione /etc/exports è riportata la ACL per il file system da condividere. Sono elencate le directory condivise, gli host che le possono usare (montare) e le opzioni di condivisione.

Si basa sui servizi: nfsd e mountd

Ogni riga del file exports rappresenta un'esportazione ed ha la forma:<directory condivisa> host1(opzioni) [host2(opzioni)] ... [hostn(opzioni)]

#sample file /etc/exports/projects proj*.local.domain(rw)/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)/srv/www -sync,rw 192.168.1.0/24

Page 137: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 16

Uso di condivisioni NFSL'accesso alle condivisioni NFS oltre ad essere controllato dalla ACL presente nel file /etc/exports è legato ai permessi tipici dei file sotto Unix.E' importante quindi verificare i permessi e l'appartenenza del file ad utente e gruppo.

Per gestire le esportazioni di directory si può editare direttamente il file /etc/exports oppure utilizzare il front end grafico disponibile sotto Fedora: system-config-nfs

Se si apportano modifiche al file exports è necessario riavviare il servizio nfs:$ service nfs restart oppure /etc/inet.d/nfs restart

Per usare i file system NFS condivisi su un pc remoto è necessario usare il comando mount alla pari di come si effetua il montaggio degli altri file system.Nel caso di condivisioni NFS il device sorgente va indicato nella forma:nome_host:/direcotry_condivisa

E' possibile aggiungere il path NFS al file /etc/fstab per eseguire il mount al boot del sistema, ad esempio:<nome_condivisione> <punto di mount> <tipo FS> <opzioni>server:/path_remoto /dir_locale nfs default 0 0

Page 138: Corso Linux

Linux: Corso Base Dott. Ing. Pierluigi Bucolo – 20 ott 2007

Pag. 17

WebminPer semplificare le opereazioni di amministrazione e configurazione dei vari servizi disponibili in ambiente Linux, si consiglia di installare Webmin, un tool di configurazione con interfaccia Web.

Per la distribuzione Fedora 7 il pacchetto precompilato si trova aggiungendo un nuovo repository:$ vi /etc/yum.repos.d/campworld.repo[campworld] name=CampWorld repo baseurl=http://www.campworld.net/repos/FC7/ enabled=1 gpgcheck=0

yum install webmin

Per accedere al tool aprire il borwser e puntare all'indirizzo: https://localhost:10000.Si ponga attenzione all'utilizzo del protocollo https che garnatisce la massima sicurezza.

Questo tool presenta il grande vantaggio di permettere la configurazione remota di un server Linux, poichè l'interfaccia WEB (dopo aver configurato correttamente la security) è richiamabile da qualunque PC connesso in rete.

Page 139: Corso Linux

Corso Base suCorso Base suLinuxLinux

Fine Lezione 4Fine Lezione 4