1
Parte 1
Introduzione a Linux
Organizzazione a strati del software
Informatica - A.A. 2009/2010 - LInux 0.1
2
Tipi di sistemi operativi
Hp/UXOSF/1
MICROSOFT Windows
Informatica - A.A. 2009/2010 - LInux 0.2
Origini dell’open source: Unix
• Cronistoria– Anni ‘60: progetto MULTICS
Sviluppato ai Bell LabsSistema operativo multiuso interattivoTroppo ambizioso, troppo complesso
– 1970: dalle ceneri del progetto MULTICS nasce UNICS (in seguito UNIX)♦ sviluppato in Assembly (linguaggio di bassissimo livello) presso♦ sviluppato in Assembly (linguaggio di bassissimo livello) presso
Bell Labs♦ Nasce dallo sforzo di D. Ritchie e K. Thompson
– 1976: Kernighan & Ritchie usano un nuovo linguaggio(il C) per riscrivere UNIX
Informatica - A.A. 2009/2010 - LInux 0.3
3
I punti di forza di Linux• Multiutenza
– Più utenti ciascuno con le sue impostazioni– Supporto per la sicurezza tra gli utenti
• Multitasking– Più flussi di esecuzione in parallelo
• Supporto SMP – Sistemi con più processori per il calcolo spinto
• Grandi capacità di networking– Il protocollo TCP/IP nasce su una variante di Unix
• Stabile– Le soluzioni più avanzate nei sistemi operativi sono state
implementate per prime su Unix Anni di sviluppo e di bug fixing
Informatica - A.A. 2009/2010 - LInux 0.4
Concetti base di Unix
• Unix non è un unico sistema operativo ma una interafamiglia di sistemi operativi
• Negli anni si sono diffusi tanti “dialetti” Unix– BSD– System V– AIX– HP/UX– SCO
• Subdole incompatibilità tra i vari UnixProgetto GNU/Linux
Informatica - A.A. 2009/2010 - LInux 0.5
4
GNU
Nel 1983 un giovane ricercatore Richardricercatore, Richard Stallman, decide di scrivere un nuovo sistema operativo compatibile con il modello UNIXGNU: GNU is not UNIXGNU: GNU is not UNIX
Informatica - A.A. 2009/2010 - LInux 0.6
Il progetto GNU
Un grande problema del progetto GNU è l'assenza di un kernel− Il nucleo del sistema operativo− Doveva essere basato su microkernel Mach− Mach non era ancora pronto a quel tempo
L'ambiente GNU deve appoggiarsi su kernelpreesistenti limitandone di fatto l'adozionepreesistenti, limitandone di fatto l'adozione
Ma forse è giunto il momento di spostarsi in Finlandia...
Informatica - A.A. 2009/2010 - LInux 0.7
5
Linux
• Nel 1991, un giovane studente universitario di Helsinki, Linus Torvalds, decide di scrivere il pezzo mancante (il kernel)pezzo mancante (il kernel)
“I’m doing a (free) operatingsystem (just a hobby, won’t bebig and professional like gnu) “
Un anno dopo, viene rilasciata la
Informatica - A.A. 2009/2010 - LInux 0.8
versione 0.99Nasce l'ambiente GNU/LinuxDalla prima implementazione si è fatta molta strada...
Diffusione di LinuxAd oggi Linux è una scelta molto popolare in molteplici contesti
S− Server Web− Sistemi di rete (es. server farm di Second Life)− Applicazioni scientifiche (vedi Top500)− Sistemi embedded (es. ebooks)
Informatica - A.A. 2009/2010 - LInux 0.9
6
Il concetto di distribuzione Linux• Un sistema GNU/Linux si compone di
– Un kernel (Linux)– Software applicativo– Software applicativo
• La quantità di software è impressionante• Le sorgenti da cui recuperare questo software sono
molteplici• Tutto il software è disponibile sotto forma di sorgente
E' i ti bil l l i di i t tt• E' impraticabile la soluzione di scaricare a mano tuttoil software e compilarlo
• Non ci sono speranze di riuscire e tenere aggiornato ilsoftware seguendo questa strada
Informatica - A.A. 2009/2010 - LInux 0.10
Il concetto di distribuzione Linux (2)
• Alcune organizzazioni si occupano di:– Raccogliere tutto il software– Compilarlo (o automatizzare la compilazione per
l'utente)– Metterlo a disposizione in modo che possa essere
scaricato dalla rete da un unico repository o burned su CDMantenere il software aggiornato (sia per nuove– Mantenere il software aggiornato (sia per nuoveversioni sia per patch legate alla sicurezza)
Informatica - A.A. 2009/2010 - LInux 0.11
7
Pacchetti software• Una distribuzione comprende svariati software
– Strumenti di sviluppoEditor– Editor
– Server di rete• Ogni software viene racchiuso in un pacchetto che
comprende sia il programma che i dati di cui ilprogramma necessita (e.g. icone, file di appoggio, documentazione))
• Alcuni software hanno delle dipendenze– Non posso installare un editor grafico se non ho prima
installato l'interfaccia grafica– Gestione di dipendenze (e conflitti) problematica
Informatica - A.A. 2009/2010 - LInux 0.12
Le principali distribuzioni Linux• Debian• Ubuntu
Mepis
• Knoppix - Gnoppix• Red-Hat• Fedora core• SUSE Linux
Sl k ( t )
Nasce nel 2003: inizialmente derivata dalla distribuzione Debian, ora la sua base di partenza è Ubuntu (pacchetti sofwarecon estensione .deb)
• Slackware (.tgz)• Gentoo• Elenco completo: http://www.distrowatch.com
Informatica - A.A. 2009/2010 - LInux 0.13
8
Linux
I primi passi…• Sistema multiutente
• necessità di autenticarsi al sistema• procedura di login• procedura di login
• Componenti principali del sistema• Kernel: gestisce le risorse base del sistema
(memoria, dischi, rete, CPU)• Shell: interfaccia utente testuale notevole
potenza espressiva al prezzo di una curva dipotenza espressiva al prezzo di una curva diapprendimento piuttosto impegnativa
• GUI: interfaccia utente grafica, semplice dausare, a cui si appoggia il Desktop environment
Informatica - A.A. 2009/2010 - LInux 0.15
9
Interfaccia grafica • GUI (Graphical User Interface) cambia aspetto
a seconda della distribuzione usataD kt i t iù ti G• Desktop environment più usati: Gnome e KDE – entrambi altamente personalizzabili
Informatica - A.A. 2009/2010 - LInux 0.16
La riga di comando• Metodo molto rapido e potente per digitare i
comandi ed eseguire azioniMeno intuitiva delle interfacce grafiche• Meno intuitiva delle interfacce grafiche
• Più o meno sempre la stessa all’apparenza• Acceduta da SHELL (o Terminale)• Shell del progetto GNU: BASH
– Bourne Again Shell (il seguito della shell diBourne), 1989-2004
• NOTA: i comandi sono sensibili all'utilizzo delle maiuscole e delle minuscole (case sensitive)
Informatica - A.A. 2009/2010 - LInux 0.17
10
Alcuni comandi shell• Comandi shell di base (per la sopravvivenza)
– ls: mostra contenuto di una directorycd dir: entro nella directory dir– cd dir: entro nella directory dir
– passwd: cambio password– file filename: stampa il tipo di file di filename– cat filename: mostra il contenuto di filename– pwd: stampa la directory corrente– man command: pagine di manuale su command– man command: pagine di manuale su command
• Ciascuno dei comandi di shell va battuto in seguitoal prompt
• Ciascun comando termina con la pressione del testo Enter
Informatica - A.A. 2009/2010 - LInux 0.18
Opzioni ed argomenti
• I comandi prevedono opzioni ed argomenti– opzioni: specificano la modalità di operazione– argomenti: specificano su cosa si opera (spesso
si tratta del nome di un file)• Formato:
– nome_del_comando opzioni argomenti• Opzioni:p
– formato esteso ( ls –all )– formato breve ( ls -a )
♦ più opzioni con un solo – (ls -al equivalente adls -a -l), se non è richiesto un argomento per l'opzione
Informatica - A.A. 2009/2010 - LInux 0.19
11
Organizzazione gerarchica dei fileI file sono organizzati in maniera gerarchica (ad albero)
File: contenitori di datiFile: contenitori di datiDirectory (cartelle): contenitori di file e di directory
Filesystem: un gruppo di directory e file, a partire da una directory radice (root) /
Informatica - A.A. 2009/2010 - LInux 0.20
bin/ usr/
local/
Percorsi relativi/assolutiCiascun file può essere acceduto seguendo il percorso (path) dalla directory radice al file
P th l t i t d ll tPath assoluto: si parte dalla root/usr/local è il path assoluto
Path relativo: si parte da un'altra directorylocal è il path relativo di terminal rispetto alla directory /usr
/
Informatica - A.A. 2009/2010 - LInux 0.21
bin/ usr/
local/
12
Accesso ai file
Simboli speciali utilizzati nei percorsi:“/”: indica la directory radice ed è un separatore nel percorso“.”: indica la directory in cui l'utente si trova attualmente“..”: indica la directory immediatamente superiore a quella attuale
Un percorso relativo di solito si indica riferendosi allaUn percorso relativo di solito si indica riferendosi alla directory attuale:
./sottodir1/sottodir2/file
./local
Informatica - A.A. 2009/2010 - LInux 0.22
Visione delle directoryCome stampiamo a video la directory corrente?
pwdCome visualizziamo il contenuto di una directory dirqualsiasi?
ls dirAlcune opzioni comuni di ls:
-a: visualizza tutti i file, anche quelli nascosti (ilcui nome comincia con il carattere .)cui nome comincia con il carattere .)-r: visualizza ricorsivamente tutto l'albero disottodirectory-l: formato lungo (tutte le informazioni di un file)
Informatica - A.A. 2009/2010 - LInux 0.23
13
Utenti e gruppiGli utenti dei sistemi UNIX sono classificati in user e group
user: nome identificativo (di solito <= 8 caratteri) che( )caratterizza l'utente
memorizzati nel file /etc/passwd insieme a tutte le loroaltre proprietà
group: è un insieme di utentimemorizzati nel file /etc/group
Ciascun file ha associati:un utente creatore del file (owner)un gruppo di utenti che lavorano sul file (group)
Utenti e gruppi permettono di garantire permessi diaccessi ai file a gruppi di utenti distinti
Informatica - A.A. 2009/2010 - LInux 0.24
Permessi sui file
Schema linux di permessi: rwxRead: permesso di lettura sul fileWrite: permesso di scrittura sul fileeXecute: permesso di esecuzione del file
Tre insiemi di permessi associati ad un file:owner: permessi rwx dell'ownergroup: permessi rwx del gruppoother: permessi rwx per tutti gli altri
Informatica - A.A. 2009/2010 - LInux 0.25
14
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Informatica - A.A. 2009/2010 - LInux 0.26
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Tipo di file e permessi particolari-: file regolare (eseguibile, file testo)b: dispositivo a blocchi
Informatica - A.A. 2009/2010 - LInux 0.27
c: dispositivo a caratterid: directoryl: links: socket
15
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Permessi dell'ownerr: l'owner (root) può leggere il filew: l'owner (root) può scrivere il filex: l'owner (root) può eseguire il file
Informatica - A.A. 2009/2010 - LInux 0.28
NOTA: il bit x può anche essere impostato ads: setuid bit (esecuzione con i privilegi dell'owner)accesso diretto risorse HW da parte di utenti
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Permessi del gruppor: tutti gli utenti del gruppo root possono leggereil file
Informatica - A.A. 2009/2010 - LInux 0.29
-: tutti gli utenti del gruppo root non possono scrivere il filex: tutti gli utenti del gruppo root possono eseguire il file
16
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Permessi di tutti gli altrir: tutti gli altri possono leggere il file-: tutti gli altri non possono scrivere il file
Informatica - A.A. 2009/2010 - LInux 0.30
x: tutti gli altri possono eseguire il file
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Numero di hard link al file
Informatica - A.A. 2009/2010 - LInux 0.31
17
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Owner del filel'utente root
Gruppo del file il gruppo root
Informatica - A.A. 2009/2010 - LInux 0.32
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Dimensione del file in byte
Informatica - A.A. 2009/2010 - LInux 0.33
18
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Data ed ora di creazione
Informatica - A.A. 2009/2010 - LInux 0.34
Proprietà dei file
• Visibili con il comando ls -l-rwxr-xr-x 1 root root 75716 Jul 26 17:14 /bin/ls
Path assoluto del file
Informatica - A.A. 2009/2010 - LInux 0.35
19
Creazione di file e directory• mkdir: creazione di directory• rmdir: rimozione di directory
to ch i di fil ti• touch: creazione di file vuoti• rm: rimozione di file e directory
– -r: cancella in maniera ricorsiva le sottodirectory– -f: forza la cancellazione senza chiedere
• NOTA: in Linux NON esiste un meccanismo semplice per l'operazione di undelete (annullamentosemplice per l'operazione di undelete (annullamento cancellazione file)– se per sbaglio cancellate un file, l'avete perso
per sempre– a meno che non siate dei bravi hacker...
Informatica - A.A. 2009/2010 - LInux 0.36
Modifica utente owner e gruppo
chown: permette di modificare owner e gruppoiniziale di un file
chown <opzioni> <owner>:<gruppo> <file>chgrp <opzioni> <gruppo> <directory>-R: opera ricorsivamente sulle sottodirectory
Informatica - A.A. 2009/2010 - LInux 0.37
20
Modifica permessi su un filechmod: permette di modificare i permessiassociati ad un fileDue modalità:
Ottale - rappresentazione ottale dei permessiSimbolica
Il primo set di caratteri rappresenta il tipo dipermesso: u=user, g=group, o=other, a=all (ugo)Il secondo set di caratteri rappresenta una mascheraIl secondo set di caratteri rappresenta una mascheradei permessi: r=read, w=write, x=executefra i due set di caratteri viene messo un + per abilitare i permessi oppure un – per disabilitarliES: chmod g+x nome_file
chmod ugo+wInformatica - A.A. 2009/2010 - LInux 0.38
Copia e spostamento di file• cp: copia file/directory
– cp <opzioni> <sorgente> <destinazione>-r: copia ricorsivamente sorgente in destinazione– -r: copia ricorsivamente sorgente in destinazione(con tutte le sottodirectory)
– -p: preserva (quando possibile) utenze e permessioriginali dei file
– -a: modalità archivio (equivalente a -r -p, ed altro)• mv: sposta file/directory
– mv <opzioni> <sorgente> <destinazione>
Informatica - A.A. 2009/2010 - LInux 0.39
21
Ricerca di file
• find: cerca il file richiesto in un albero di directory– find <directory> -name <nome file>– find <directory> -iname <nome file>– Permette anche di eseguire comandi sui file
trovati– E’ lento (si scorre tutte le sottodirectory)
• locate: interroga un database di locazioni deifilfile– aggiornato tramite il comando updatedb– veloce– non permette di eseguire comandi sui risultati
Informatica - A.A. 2009/2010 - LInux 0.40
Ricerca di contenuti nei file
• grep: cerca la stringa richiesta nell'albero di directoryspecificato, e stampa le corrispondenze (match)– grep <opzioni> <stringa> <directory/file>– -r: opera ricorsivamente nelle sottodirectory– -i: trascura maiuscole/minuscole (case
insensitive)– -H: stampa il file contenente la stringa
n: stampa il numero di riga del file contenente– -n: stampa il numero di riga del file contenentela stringa
Informatica - A.A. 2009/2010 - LInux 0.41
22
Visione contenuto file
• cat: stampa il contenuto del file su terminale• more: visione di un file non bufferizzata (solo in avanti)• less: visione di un file bufferizzata (avanti e indietro)
– less -Mr presenta un indicatore di progresso dilettura
• head: stampa le prime n righe di un file– head -n 10 file
• tail: stampa le ultime n righe di un file• tail: stampa le ultime n righe di un file– tail -n 10 file– tail -f file output bufferizzato
• echo: stampa una stringa su terminale
Informatica - A.A. 2009/2010 - LInux 0.42
Redirezione
• Deviazione dei canali standard (standard input, standard output e standard error) da/verso altre destinazioni
• Usa appositi comandi di redirezione– comando > nome_file– comando < nome_file– comando >> nome_file
Redirezione outputRedirezione input
R di i t t– comando1 | comando2
Informatica - A.A. 2009/2010 - LInux 0.43
Redirezione output con funzione “appendi”
Pipeline