Sistemi Operativi
Salvatore Campagna
Email: [email protected]
Politecnico di Torino
Dipartimento di Automatica e Informatica
Orario

Lezioni in aula
◦ Martedì 11.30 – 13.00 – Aula 14

Esercitazione in laboratorio
◦ Squadra B: Martedì 16.00 – 19.00 (16.00 –
17.30 assistito) - LABINF
◦ Squadra A: Mercoledì 16.00 – 19.00 (16.00 –
17.30 assistito) – LAIB 1D

Squadre
◦ A: ABBATE – LECCA
◦ B: LEGORA - ZECCHI
Info

URL slide lezione e esercitazione
◦ http://www.cad.polito.it/~campagna/so/

Risorse cartacee e elettroniche
◦ http://tldp.org/LDP/abs/html/
◦ http://tldp.org/LDP/abs/abs-guide.pdf
◦ “The Linux A-Z”, Phil Cornes ISBN
0132347091
◦ Internet
Programma del corso
Parte I – Introduzione a Linux/UNIX
 Parte II – Introduzione alla shell e
comandi base
 Parte III – Comandi avanzati
 Parte IV – Shell scripting
 Parte V – L’editor Vi(m)

Introduzione
Linux/UNIX è un sistema operativo
multiutente
 Questo vuol dire che può essere
utilizzato da più utenti
contemporaneamente
 E’perciò necessaria una procedura di login
per l’identificazione e l’accesso al sistema

Introduzione
Una sessione di lavoro inizia con
l’invocazione, da parte dell’ambiente, del
programma login
 L’utente accede al sistema fornendo nome
utente e password
 Dopo l’accesso l’utente è identificato da
uno user ID
 La sessione termina con i comandi logout
o exit o con la combinazione Ctrl + D

Introduzione
Linux/UNIX è un sistema operativo
multitasking
 Il multitasking rappresenta la capacità di
un sistema (dare l’impressione per sistemi
a core singolo) di eseguire più programmi
contemporaneamente
 L’obiettivo è quello di massimizzare e
ottimizzare l’utilizzo delle risorse

Introduzione
Il sistema operativo è organizzato su più
livelli detti layer
Applicazioni
Shell
Librerie
Kernel
Hardware
Struttura dei comandi
L’interazione tra l’utente e il sistema
operativo avviene tramite comandi
impartiti attraverso una shell
 La struttura generica di un comando è:
comando [opzioni] [argomenti]
 Le opzioni modificano il comportamento
del programma
 Gli argomenti forniscono i dati su cui il
programma opera

Struttura dei comandi
Per proseguire un comando sulla riga
successiva terminare la riga con “\”
(backslash)
Esempio: find test_dir –name “test.*” \
-print0 | xargs -0 | grep “OK”
 Per eseguire una serie di comandi usare
“;” come separatore
Esempio: ls -la; cd test_dir; touch file.txt

Il file system
Caratteristiche principali:
 Gerarchico (organizzazione ad albero)
 Formato da directory e file
 Non esistono estensione e versione
 L’accesso a file e directory è basato sui
permessi
Layout file system
Il file system
La directory radice è “/” (slash)
 La directory corrente è indicata con “.”
 La directory padre della directory corrente
è indicata con “..”
 Il separatore di directory è “/” (slash)
 Ogni file o directory è raggiungibile
attreverso un pathname assoluto o relativo
Esempio (assoluto): /home/alice/work/file.txt
Esempio (relativo): alice/work/file.txt

Il file system
Il nome di un file è una sequenza
qualunque di caratteri
 No estensione e versione
 E’comune usare comunque estensioni
“standard”
Esempio: .c .o .so .ko .p .a
 Un file il cui nome comincia con “.” non
viene normalemente visualizzato

Nomi dei file

Sconsigliato l’uso di caratteri “particolari”
nei nomi di file
◦/ \ “ ' * ; ? [ ] ( ) ~
◦! $ { } < > # @ & |


E’possibile usare lo spazio ma attenzione
Provare I seguenti comandi e verificare
l’effetto:
◦ touch file prova.txt (crea due file)
◦ touch “file prova.txt” (crea un file)
◦ touch file\ prova2.txt (crea un file)
I file – i-node

Struttura dati che archivia:
◦ il proprietario e il gruppo di appartenenza
◦ dimensione del file e la sua locazione fisica;
◦ le informazioni temporali di modifica (mtime),
ultimo accesso (atime) e di cambio di stato
(ctime)
◦ i permessi d'accesso
◦ il numero di collegamenti fisici che
referenziano l'inode
I file – i-node
Ogni i-node è identificato da un numero
univoco (i-node id) per il dispositivo
 Ogni file è un collegamento fisico ad un inode (associazione nome collegamento
fisico  i-node id)
 Quando si accede a un file si recuperano
le informazioni dal suo i-node

Collegamenti tra file
Un collegamento è un oggetto del file
system che permette di fare riferimento
ad un altro file del file system attraverso
un nome diverso
 Il file originale è accessibile attraverso più
file
 In UNIX/Linux esistono due tipi di
collegamenti (link)

◦ Simbolici (soft link)
◦ Fisici (hard link)
Collegamenti simbolici
Si creano con il comando ln –s oppure
con cp -s
 E’ un file contenente un percorso relativo
o assoluto al file o directory a cui fa
riferimento
 Se il file puntato viene rimosso il link
simbolico rimane orfano
 Il link simbolico può fare riferimento
anche ad un file su un altro file system

Collegamenti fisici
Si creano con il comando ln
 Associa un nome di file all’i-node
 Non può restare orfano
 La rimozione di un file avviene solo se
tutti gli hard link sono rimossi
 I link e il file puntato dal link devono far
parte dello stesso file system

Permessi


L’accesso a file e directory avviene
attraverso l’assegnazione di permessi
Permessi di base o attributi
◦ Lettura – read (r)
◦ Scrittura – write (w)
◦ Esecuzione – exec (x)

Tre classi di utente
◦ Proprietario del file o directory – user (u)
◦ Gruppo a cui appartiene il proprietario - group(g)
◦ Gli altri - others (o)
Permessi su directory
Lettura – Read(r) – Possibilità di elencare
il contenuto (ls)
 Scrittura – Write (w) – Possibilità di
creare e/o cancellare file (touch, rm,…)
 Execuzione – Exec (x) – Possibilità di
attreversare la directory (cd,…)

Permessi
Dato un file i permessi sono espressi d a
una tripletta a cui corrisponde una valore
binario e/o ottale
 1 indica permesso settato, 0 permesso
non settato
 Corrispondenza 1:1 con una stringa
binaria o ottale
 Esempio: rwxr-xr-x = 111101101 = 755
 Permssi per user, group e others

Permessi speciali per eseguibili
Setuid: esecuzione con i privilegi del
proprietario del file
 Setgid: esecuzione con i permessi del
gruppo
 Sticky: se settatto per una directory indica
che i file possono essere cancellati e
spostati solamente dagli utenti proprietari
o dal proprietario della directory o da
root

Comandi principali
Gestione file e directory
 Gestione permessi
 Visualizzazione di file

Il comando man
Il comando «più importante» su un sistema
UNIX/Linux è man
 Ogni pagina man è un documento
esplicativo di un comando
 Per accedere a una pagina man si usa il
comando man [sezione] <comando>
 La sezione specifica la categoria di
manuale al quale si vuole accedere

Il comando man

Sezioni:
◦
◦
◦
◦
◦
◦
◦
◦
1: comandi generali
2: chiamate di sistema
3: funzioni della libreria standard del C
4: file speciali e driver
5: formato di file e convenzioni
6: giochi e screensaver
7: miscellanea
8: amministrazione del sistema, comandi e
demoni
Copia e spostamento di file
cp [opzioni] <src> <dest>: copia uno o
più file da SRC a DEST (che può essere
una directory)
 rm [opzioni] <file>: cancella il file
 mv [opzioni] <src> <dest>: sposta file e
directory in altri file (rinomina) o
directory

Opzioni comuni
-r (recursive): esegue ricorsivamente su
tutti i file contenuti nelle sottodirectory
 -i (interactive): chiede conferma per
ognuno dei file
 -f (force): esegue il comando senza
chiedere conferma

Gestione directory
cd <directory>: cambia la directory
corrente con quella indicata
 pwd: mostra la directory corrente
 mkdir <directory>: crea una nuova
directory
 rmdir <directory>: cancella una directory
vuota

Gestione link
ln <target> <alias>: crea un hard link (link
fisico) <alias> a un file o directory
<target>
 ln –s <target> <alias>: crea un soft link
(link simbolico) <alias> a un file o
directory <target>

Cambiare i permessi
chmod è il comando per cambiare i
permessi di accesso ai file
 chmod <permessi> <file>
 I permessi possono essere specificati
simbolicamente o numericamente
 La rappresentazione numerica sfrutta la
corrispondenza permessi  valore ottale

Cambiare i permessi
Esempio: permessi con rappresentazione
numerica
chmod 644 <file>:equivale ad un file con
permessi rw-r--r-- = 110 100 100, per u, g, a
 La notazione simbolica usa i seguenti simboli
per indicare l’utente:

◦
◦
◦
◦
u: (user) proprietario
g: (group) gruppo del proprietario
o: (others) altri
a: (all) tutti
Cambiare i permessi
I simboli per indicare il permesso r, w e x
 Modificatori:
◦ +: aggiunge permessi specificati alle
classi selezionate; non rimuove permessi
già concessi ma non specificati
◦ =: imposta i permessi specificati nelle
classi selezionate; rimuove eventuali
permessi già concessi ma non specificati
◦ -: rimuove i permessi specificati dalle
classi selezionate

Cambiare i permessi

Esempi:
◦ chmod u+r: aggiunge il permesso di lettura al
proprietario
◦ chmod u=wx: imposta i permessi di scrittura
e esecuzione per il proprietario e rimuove
tutti gli altri
◦ chmod a+x: aggiunge il permesso di
esecuzione per tutti
◦ chmod o-x: toglie il permesso di esecuzione
per gli altri
Gestione permessi

umask permette di impostare i permessi
da negare di default quando un file viene
creato
◦ umask <maschera>
Il comando senza la maschera restituisce
la maschera corrente
 Se la maschera è 022 allora i file vengono
creati con permessi 755 = rwxr-xr-x

Gestione permessi

Per cambiare proprietario e/o gruppo del
file usare il comando chown (change
owner)
◦ chown [opzioni] utente [:gruppo] file
◦ chown [opzioni] uid [:gid] file

-R opera ricorsivamente su tutti i file di
una directory
Comando ls
ls (list segments) visualizza l’elenco di file
in una directory e le informazioni
riguardanti ciascun file
 Opzioni comuni:

◦
◦
◦
◦
◦
◦
-a: visualizza file nascosti (che iniziano con “.”)
-l: formato esteso
-g: include il gruppo
-t: ordina i file in ordine temporale
-r: inverte l’ordine
-R: opera ricorsivamente sulle sottodirectory
Comando ls – Un esempio
# ls -alg ~/tmp
total 84
drwx------ 6
drwxr-xr-x 19
-rw-r--r-- 1
drwxr-x--- 2
-rw------- 1
-rw------- 1
drwxr-xr-x 2
-rw-r----- 1
-rw------- 1
-rw-r----- 1
-rw-r----- 1
-rw-r----- 1
drwx------ 2
maino
maino
maino
maino
maino
maino
maino
maino
maino
maino
maino
maino
maino
staff
staff
staff
staff
staff
staff
staff
staff
staff
staff
staff
staff
staff
512
1024
1240
512
2416
332
512
27930
28077
70
1364
62
512
Sep
Sep
Jan
May
Jun
Jun
May
Mar
Mar
Jun
May
May
May
1
6
21
22
30
18
22
12
12
2
6
6
25
16:14
09:06
1992
14:08
15:24
15:29
14:08
23:19
22:52
18:00
14:20
14:21
14:36
.
..
AA.readme
examples
gendata.c
local.c
man
new.tex
numer.tex
prova.tex
random.c
random.h
testprof
Visualizzazione di file di testo
Con un editor interattivo: vi, emacs, …
 cat <file1>[<file2>…]: (catenate):
visualizza i file passati sulla riga di
comando concatenandoli (in successione)
 head [-n <#righe>] <file>: visualizza le
prime n righe di un file
 tail [-n <#righe>] <file>: visualizza le
ultime n righe di un file

Visualizzazione file di testo




pg <file>
more <file>
less <file>
Durante la visualizzazione
◦
◦
◦
◦
◦
◦
spazio: prossima pagina
return: (Invio): prossima riga
b: pagina precedente
/pattern: prossima occorrenza di pattern
?pattern: occorrenza precedente di pattern
q: chiude l’editor
Riepilogo comandi
man
 mkdir, rmdir
 cp, mv, rm, ln
 pwd
 chmod, chown, umask
 ls
 cat, head, tail, pg, more, less

Scarica

Slide - CAD Group - Politecnico di Torino