Blocchi di un file system

Documenti analoghi
Cenno al file system di base di Linux

Esempio di domande sul file system

FILE SYSTEM 2. I-nodes (o Inodes)

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

File System Unix. Generalità

Lezione 2: Comandi avanzati della Shell di Unix

Il file system di Unix. Caratteristiche generali dei FS comunemente usati da Unix/Linux

Senza Soluzioni. Può un altro utente non appartenente al gruppo di mgiorgio, eseguire gli stessi comandi?

i link Unix i link Unix gli hard link (link fisici)

Lezione 2: Comandi avanzati della Shell di Unix

Sistemi Operativi FILE SYSTEM : INTERFACCIA. D. Talia - UNICAL. Sistemi Operativi 8.1

SHELL: File e Filesystem

Sistemi operativi e distribuiti

File-System! Introduzione al File-System! Struttura dei File! Concetto di File!

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi Ivan Scagnetto

File System I parte. File System

Gestione dei processi nel sistema operativo Unix

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

LABORATORIO DI SISTEMI OPERATIVI

Gestione del file system. Astrazione di File System. Attributi del file. File

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

Lezione XII.IV Gestione dei file Uso della shell I permessi di accesso

File System ext2. Struttura del filesystem ext2.

Interfaccia del file system

Il File System. Sistemi Operativi L-A AA

Permessi base e speciali in Unix-Linux

Il file system. Il File System. Attributi del file. File

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

Il File System. Sistemi Operativi T AA

Corso di Sistemi Operativi I/II. Introduzione a Linux. Il File System. Ruggero Donida Labati

Sistemi Operativi. L interfaccia del file system

Sistemi Operativi. Esercitazione 12. Corso di Laurea Triennale in Ingegneria Informatica.

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Capitolo Silberschatz

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Il File System. Il file È un insieme di informazioni: programmi dati testi

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il sistema operativo LINUX Esercitazione 3

File System. Capitolo Silberschatz

File System. File system gerarchico. Proteggere la propria home directory ... / = Root nodi interni: directory foglie: directory vuote o file

Sistemi Operativi Da Unix a GNU/Linux (parte 3)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva Processi

Modulo 12: File System

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

Struttura interna del sistema operativo Linux

Accesso a Linux. E Mumolo - DIA

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

File System e Interprete Comandi

CAP9. Device drivers

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

Simulazione esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Introduzione alla. Alessandra Giordani Lunedì 11 marzo

Logico e fisico. Fisico: legato agli aspetti costruttivi e tecnologici HARDWARE Logico: legato al significato e all organizzazione SOFTWARE FISICO

Controllo degli accessi in UNIX

Controllo degli accessi in UNIX - parte I

Sistemi Operativi 1. Mattia Monga. 6 giugno Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Controllo degli accessi in UNIX - parte I

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 2. Editor Utenti Permessi

ORGANIZZAZIONE del FILE SYSTEM SISTEMA OPERATIVO UNIX FILE SYSTEM. FILE astrazione unificante del sistema operativo

Sistemi Operativi (Laboratorio)

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 2. Editor Utenti Permessi

Introduzione all'uso del sistema operativo Ubuntu

Modulo 13: System call relative al File System

Linux e la shell Bash

Sistemi Operativi 1. Mattia Monga. 28 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Lab. di Sistemi Operativi

Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica

Esercizio 2 Scrivere un programma C che: Prende in input da linea di comando il nome di una directory ed il nome di un file. Se non e' possibile aprir

File System Linux Comandi Base per orientarsi con la Bash

Sistemi Operativi. Bruschi Martignoni Monga. File system Astrazioni utente Metadati Tecniche implementative. Sistemi Operativi

Architettura degli elaboratori Docente:

Capitolo 11: l interfaccia del file system

Laboratorio di Sistemi Operativi

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 3. Gestione utenti (prosecuzione) MBR e GPT Partizioni

Seconda provetta di sistemi operativi, 2/12/2010 Soluzioni

Sistemi Operativi. II Semestre - Marzo/Giugno 2012 Matricole congr. 0 mod 3. File & Directory

Laboratorio di Sistemi Operativi

A confronto Linux e Microsoft. d i A g n e s e D a i d o n e

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

I.S. Sobrero. Dipartimento di Informatica. Utilizzo. 16/02/2007 Marco Marchisotti

Sistemi Operativi 1. Lezione XX: Memoria di massa. Hard disk. Mattia Monga. a.a. 2008/09

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Si può simulare una struttura di directory a multilivelli con una struttura di directory a singolo livello?"

Corso Linux ARCES. Lezione 3: Lavorare con la Shell

Lezione 3: Programmazione della Shell di Unix

Editor, Utenti e Permessi Insegnamento di Sistemi Operativi di Rete Master Universitario in Tecnologie Internet

Lezione 15 File system: uso

File System. Sistemi Operativi Lezione 19

Processi. Introduzione. Effective user/group id. Fork

Transcript:

Blocchi di un file system Un file deve essere composto da un numero intero di settori (la testina legge almeno un settore). I settori di un file non possono essere contigui (tutti sulla stessa traccia e su tracce dello stesso cilindro) o far crescere un file sarebbe molto complicato. Quindi, se un file ha bisogno di spazio, il file system gli dà un blocco di n settori contigui, ma non garantisce che i vari blocchi del file siano contigui. Ogni blocco ha un indirizzo (p.es. 0,1,2,...) che il S.O. sa tradurre nell indirizzo del settore iniziale sul disco. Quanto dovrebbe valere n? Blocchi grossi danno maggiore velocità: leggere 200 settori è più veloce se sono tutti nello stesso blocco, quindi contigui. Inoltre, sono richiesti meno bit per indirizzare blocchi grossi Blocchi piccoli sprecano meno spazio (frammentazione interna) La scelta comune su UNIX è avere blocchi di 0.5, 1 o 2 K, cioè, con settori di 0.5 K, blocchi di 1, 2 o 4 settori. 16 bit=2b indirizzano 64K blocchi (64M se blocco = 2 settori) Unix - File system 25/03/99 19.00 1/12

Il file system di UNIX In UNIX, ogni file ha un descrittore che si chiama i-node. Un i-node per un file ha questa struttura: I-NODE tipo (p. es. dir) del file e modi (rwx) numero links al file uid dell'owner gid dell'owner dimensione file blocco puntatori puntatori a blocchi file puntatori a blocchi file tempo ultima modifica i-node (p.es. creazione) tempo ultimo uso (read o exec) tempo ultima modifica indirizzo 1 blocco file...... indirizzo 10 blocco file puntatore indiretto singolo puntatore indiretto doppio puntatore indiretto triplo blocco puntatori blocco puntatori blocco puntatori puntatori a blocchi file UNIX spesso ha indirizzi di blocchi a 32 bit (4 byte) e blocchi di 1K. blocco può contenere 256 indirizzi di (o puntatori a) blocchi. indirizzi dei primi 10 blocchi (10K) del file sono nell i-node puntatore indiretto singolo = indirizzo di blocco contenente gli indirizzi di al più 256 blocchi di un file (tot. 266 blocchi) puntatore indiretto doppio = indirizzo di blocco contenente gli indirizzi di 256 blocchi contenenti ciascuno gli indirizzi di 256 blocchi di un file (tot. 266+2562=65802blocchi=64Mbyte) puntatore indiretto triplo consente file di 128 Gigabytes! Per file più grossi si può aumentare la grandezza del blocco. Tempi di accesso: max 3 accessi per trovare qualsiasi blocco Unix - File system 25/03/99 19.00 2/12

Struttura della directory in UNIX Per localizzare un file, occorre quindi il suo i-node. Come si trova? Ogni directory di UNIX è un file che contiene un elemento di 16 byte per ogni file, p. es. recipes, contenuto nella directory. (UNIX non permette di modificare direttamente quest informazione) Dei 16 byte di un elemento di directory: 14 sono il nome semplice p.es. recipes. i primi 2 sono lo i-number (numero per trovare lo i-node). Quindi in tutto si possono avere 64K i-nodes. P. es. $ od -cb. 0000000 4 ;. \0 \0 \0 \0 \0 \0 \0 \0 064 073 056 000 000 000 000 000 000 000 000 0000020 273 (.. \0 \0 \0 \0 \0 \0 \0 273 050 056 056 000 000 000 000 000 000 000 0000040 252 ; r e c i p e s \0 \0 252 073 162 145 143 151 160 145 163 000 000 Problema 1: trovare lo i-node del file /usr/jim/recipes lo i-node della root sta in un posto prefissato nel disco. nella root, la entry usr dà lo i-node di usr ora si può esaminare usr trovando lo i-node di jim allo stesso modo si trova lo i-node desiderato di recipes Problema 2: trovare lo i-node del file../work lo i-node della dir corrente è noto nella dir si trova lo i-node di.. (nell esempio sopra 273 050) si procede come prima Unix - File system 25/03/99 19.00 3/12

I-nodes e ls La nozione di i-node contribuisce a spiegare le opzioni di ls. ls -i ls -l ls -lc ls -lu mostra lo i-number per ogni file listato mostra il tempo di modifica (scrittura) mostra il tempo di modifica dell i-node mostra il tempo dell ultimo uso (lettura o esecuzione) Inizialmente gli effetti delle opzioni coincidono: $ ls -l junk ls: file junk not found $ date Tue Sep 27 08:08:14 EST 1992 date >junk $ ls -l junk -rw-rw-rw- 1 utente1 $ ls -lc junk -rw-rw-rw- 1 utente1 $ ls -lu junk -rw-rw-rw- 1 utente1 29 Sep 27 08:08 junk 29 Sep 27 08:08 junk 29 Sep 27 08:08 junk Alle 12:07, junk cambia, ls -l e ls -lc danno la nuova ora $ date Tue Sep 27 12:07:24 EST 1992 date >junk $ ls -l junk -rw-rw-rw- 1 utente1 $ ls -lc junk -rw-rw-rw- 1 utente1 Ma ls -lu mostra ancora la vecchia: $ ls -lu junk rw-rw-rw- 1 utente1 29 Sep 27 12:07 junk 29 Sep 27 12:07 junk 29 Sep 27 08:08 junk Se poi si cambiano i permessi per junk, solo ls -lc varia $ chmod o-rw junk $ ls -lc junk rw-rw---- 1 utente1 29 Sep 27 12:11 junk Unix - File system 25/03/99 19.00 4/12

Link sui file Un file può avere 2 nomi (albero directory grafo diretto aciclico). Comando: ln src dest Per dare al file /bin/ed anche il nome /user/bin/edt: # ln /bin/ed /user/bin/edt in /user/bin compare un elemento di 16 byte, con nome edt e i-number uguale a quello di /bin/ed nell i-node di /bin/ed (e ora di /user/bin/edt), n.link++ Infatti: # ls -li /user/bin/edt 15768 -rwxrwxrwx 2 root 27920 Sep 8 1988 /bin/ed 15768 -rwxrwxrwx 2 root 27920 Sep 8 1988 /user/bin/edt I due file sono dunque del tutto indistinguibili (stesso i-node): dir /bin dir /user/bin ed edt Owner=root n.links=2 Problema 1. rm /bin/ed dovrebbe cancellare anche /user/bin/edt e l i-node; ma non c è sufficiente informazione per trovare /user/bin/edt; quindi: rm decrementa n. links in i-node, ma non può eliminare i-node e /usr/bin/edt Problema 2. Dopo la cancellazione di /bin/ed, root è ancora owner di i-node; se c'è accounting paga per l uso dei blocchi, ma non può né vuole usarli: solo l owner di /user continua a usarli, attraverso /user/bin/edt Unix - File system 25/03/99 19.00 5/12

Link simbolici L alternativa al link ordinario è il link simbolico: ln -s src dest $ ln -s /bin/ed /user/bin/edt crea un file /user/bin/edt contenente i caratteri /bin/ed /user/bin/edt è un nuovo file con i-node nuovo di tipo link FS Unix usa il nome memorizzato in /user/bin/edt (link) per trovare l originale /bin/ed ma per le applicazioni (p.es. shell) /user/bin/edt è un file a pieno titolo, di contenuto coincidente con quello di /bin/ed dir /bin dir /user/bin file /user/bin/edt /bin/ed ed edt Owner=root n.links=1 Owner=user link simbolico i-node i-node (di tipo LINK) Vantaggi: Svantaggi: la cancellazione del link non crea problemi, la cancellazione dell originale nemmeno, il nome contenuto nel link può essere anche di rete + spazio richiesto (i-node e blocco per il link); + tempo necessario per gli accessi. Svantaggio di link simbolici e non: programmi ricorsivi come du rischiano di essere ingannati (incontrano più volte lo stesso file nella loro visita ricorsiva dell albero). Unix - File system 25/03/99 19.00 6/12

Protezione in UNIX Dominio di protezione di un processo: insieme di risorse a cui esso ha accesso In Unix ogni utente è individuato da uno user-id o uid appartiene a un (solo) gruppo, individuato da group-id o gid In Unix ogni risorsa: è vista come un file (p.es. periferiche) ogni file ha un owner definito dall uid, che appartiene a un gid ogni file ha distinti diritti di accesso rwx per: utente uid utente con uguale gid utente con diverso gid A ogni istante un processo gira con specifici uid e gid che ne definiscono univocamente il dominio di protezione. I 9 diritti d accesso a un file sono memorizzati nel suo i-node come bit di protezione: solo l owner del file può modificarne l i-node, quindi in particolare i permessi con chmod NB: un permesso w per other consente di scrivere sul file, ma non sull i-node e quindi non di usare chmod per la stessa ragione, l uso di chmod non varia il tempo di modifica del file, ma quello dell i-node Unix - File system 25/03/99 19.00 7/12

Dominio di protezione e bit setuid Per un processo uid e gid variano nel tempo e con essi il dominio di protezione. Così processi appartenenti a un certo utente possono eseguire comandi privilegiati, p. es. passwd o mkdir. In questi casi, il processo che aveva uid corrispondente p. es. a utente1 assume uid e gid di root. Il meccanismo che assicura ciò è il setuid bit dei file eseguibili. Si tratta di un campo dell i-node del file eseguibile. Se il bit è a 1, ls -l mostra un s al posto del primo x: $ ls -l /bin/passwd -rwsr-xr-x 1 root Un programma con bit setuid s: 8759 Nov 28 1992 /bin/passwd viene eseguito con l uid dell owner del programma (qui root) non con l uid del processo che ha richiesto l esecuzione. Così ogni processo può modificare file importanti, ma solo sotto il controllo di un programma setuid autorizzato a farlo. Altro esempio: gioco pacman eseguito con uid di utente1 Alla fine pacman deve scrivere il risultato su un file hiscore di cui è owner games con rw-r--r-- pacman non può ma invoca il programma memorizzato nel file wrthisc con owner games e bit di protezione rwsr-xr-x Unix - File system 25/03/99 19.00 8/12

Permessi e directory I permessi sulla directory. si possono vedere con: $ ls -ld. ls -l mostra file e dir contenuti in. drwxrwxr-x 1 user1 75 Nov 25 08:23. logicamente: directory = contenitore di file/directory concretamente: directory = file contenente tabella con una entry (nome,i-node) per ogni file/dir logicamente contenuto 75 è la grandezza della directory come file-tabella w permette di modificare la dir. in quanto file-tabella; è quindi necessario per creare e cancellare file (logicamente) nella dir NB: per cancellare /...d/f basta w per d (non serve per f), ma (vedi sotto) serve anche x per tutte le dir in /d r permette di leggere la directory in quanto file-tabella x, per una directory, indica permesso di accesso alla directory, cioè di uso (esecuzione, lettura ) dei file nella directory; questo permesso è richiesto oltre a quello proprio dei file Unix - File system 25/03/99 19.00 9/12

Permessi nulli per gp sulla home dir di user1 Esempi: dir e permessi (user1 user1) $ ls -ld. * drwx------ 3 user1 users 1024 Mar 25 17:22. -rw------- 1 user1 users 2 Mar 25 17:22 f gp non può eseguire ls (gp gp) $ ls -ld /home/user1 ; ls -l /home/user1 drwx------ 3 user1 users 1024 Mar 25 17:22 /home/user1 ls: /home/user1: Permission denied user1 dà il permesso di lettura al gruppo di gp e crea un eseguibile runme: (user1 user1) $ chmod g+r. (user1 user1) $ echo echo ciao >runme ; chmod ug+rx runme Ora gp può leggere il file-tabella /home/user1 ma non i suoi contenuti, anche se rx (gp gp) $ ls -l /home/user1 viene letta la directory, ma non il contenuto ls: /home/user1/f: Permission denied i nomi provengono dalla dir=file tabella ls: /home/user1/runme: Permission denied (gp gp) $ /home/user1/runme ; cat /home/user1/runme bash: /home/user1/runme: Permission denied cat: /home/user1/runme: Permission denied user1 rende il contenuto della sua dir accessibile: (user1 user1) $ chmod g+x. Ora i contenuti di user1 sono accessibili a gp, purché lo siano individualmente: (gp gp) $ ls -l /home/user1 -rw------- 1 user1 users 2 Mar 25 17:22 f -rwxr-xr-- 1 user1 users 10 Mar 25 17:44 runme (gp gp) $ /home/user1/runme ciao (gp gp) $ cat /home/user1/runme /home/user1/f echo ciao cat: /home/user1/f: Permission denied Un permesso x ma non r sulla dir, (user1 user1) $ chmod g-r. lascia i file contenuti della dir accessibili a gp, ma per usarli gp deve conoscerne l esistenza: (gp gp)$ /home/user1/runme; cat /home/user1/runme; ls /home/user1/runme ciao echo ciao /home/user1/runme (gp gp) $ ls /home/user1 se gp non sa che runme esiste non può scoprirlo ls: /home/user1: Permission denied Unix - File system 25/03/99 19.00 10/12

Le device La directory /dev contiene file corrispondenti a dispositivi fisici. P. es.: $ ls -l /dev crw--w--w- 1 root crw-r--r-- 1 root crw-r--r-- 1 root brw-rw-rw- 1 root crw-rw-rw- 1 root 0, 0 Sep 27 23:09 console 3, 1 Sep 28 23:09 kmem 3, 0 May 08 23:09 mem 1, 64 Sep 02 21:49 mt0 3, 2 Sep 28 23:39 null si possono trattare i dispositivi fisici in modo uniforme, usando l astrazione fornita dal concetto di file; ciò sia a livello di uso che di programmazione P. es per copiare (in modo rudimentale) un file su nastro: $ cp f /dev/mt0 Qui sia l utente che il programmatore di cp possono ignorare che /dev/mt0 è un nastro: ciò che comporta vedere un nastro come un file è a carico del sistema operativo Le device sono caratterizzate da un modo b (block) o c (character) e da due numeri: major (individua il tipo di dispositivo) e minor (distingue dispositivi simili) Le device mem e kmem sono la memoria fisica e la memoria del kernel (sistema operativo). /dev/null serve a buttare l output di un programma, per vederne solo i messaggi di errore o il tempo di esecuzione (via time) e non l output Unix - File system 25/03/99 19.00 11/12

Device (cont.) $ ls -l /dev... brw-r---w- 1 root 2, 0 Sep 02 21:49 rp00 brw--w--w- 1 root 2, 1 Sep 02 21:49 rp01 crw--w--w- 1 utente1 1, 4 Dec 01 12:00 tty4 rp00 e rp01 sono partizioni dello stesso disco. Per vedere quale contiene il file system di utente: $ mount rp01 on /usr dunque rp00 contiene la root e rp01 contiene /usr. Al boot time il file system contiene già la root /, ma /usr è vuoto; riceverà subito il file system di rp01 con: $ mount /dev/rp01 /usr eseguita dallo script di startup. Il mount è per lo più trasparente, ma: non sono ammessi link attraverso file system montati se si esaurisce lo spazio disponibile su una partizione (vederlo con df) non lo si può ampliare con mount Per /dev/tty4 si noti come sia divenuto dell utente1 che lo usa. Tutti possono scrivere su tty4, p.es. con $ echo ciao > /dev/tty4 (utente1 può impedirlo con mesg n) Unix - File system 25/03/99 19.00 12/12