La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1.1 Implementazione del file system Una possibile visualizzazione del file system di un sistema Unix.

Presentazioni simili


Presentazione sul tema: "1.1 Implementazione del file system Una possibile visualizzazione del file system di un sistema Unix."— Transcript della presentazione:

1 1.1 Implementazione del file system Una possibile visualizzazione del file system di un sistema Unix.

2 1.2 Implementazione dei files Allocazione di un file come lista concatenata di blocchi di memoria. Non è il metodo usato in un sistema UNIX

3 1.3 Index Node (inode) A ciascun file di qualunque tipo, memorizzato in una partizione del disco, viene associato un numero (detto il suo inumber) che è di fatto lindice di un elemento di un array memorizzato sul disco. Ciascun elemento dellarray è un inode che memorizza le informazioni di tipo amministrativo riguardanti un singolo file (come ad esempio, nel momento in cui il file viene creato, chi è lautore e dove sono memorizzati i blocchi di dati di questo file sulla partizione del disco). Queste informazioni possono essere visualizzate usando il comando stat: $ stat file1 File: `file1' Size: 123 Blocks: 8 IO Block: 4096 Regular File Device: 306h/774d Inode: Links: 2 Access:(0644/-rw-r--r--)Uid:(501/lferrari)Gid:(501/docenti) Access: :58: Modify: :58: Change: :05:

4 1.4 Implementazione dei files Un esempio di inode: contiene soltanto i primi n indirizzi dei blocchi del file.

5 1.5 Un inode UNIX

6 1.6 Implementazione delle directories È in realtà linode di un file che viene memorizzato in una directory accanto al nome del file. Quindi, essenzialmente, le directories sono semplici tabelle che associano i nomi dei files con gli inode. Ogni coppia costituita da file name e inode in una directory viene chiamata un link. games mail news work inode

7 1.7 Collegamenti ai files Un link è un puntatore a un altro file. Si ricordi che una directory non è altro che una lista di nomi e inode di files. Un elemento di una directory può essere un hard link, nel quale linode punta direttamente a un altro file. Quando viene creato un hard link, questo acquista lo stesso inumber del file linkato. Lutility ln crea un link tra files. $ cat > file Hello ! ^D $ ls -l file -rw-rw-r-- 1 lferrari lferrari 8 apr 7 14:22 file $ ln file fileln $ ls -li file* rw-rw-r-- 2 lferrari lferrari 8 apr 7 14:22 file rw-rw-r-- 2 lferrari lferrari 8 apr 7 14:22 fileln $ rm file $ ls -l fileln -rw-rw-r-- 1 lferrari lferrari 8 apr 7 14:22 fileln

8 1.8 Collegamenti ai files Se lultimo argomento è il nome di una directory, allora lhard link viene creato nella directory a tutti i filenames specificati. $ mkdir ~/didattica/corsi $ ln file* ~/didattica/corsi $ ls -l -rw-rw-r-- 2 lferrari lferrari 8 apr 7 14:22 fileln $ cd $ rm fileln $ ls -l ~/didattica/corsi/ -rw-rw-r-- 1 lferrari lferrari 8 apr 7 14:22 fileln Non si può creare un hard link da un file su un file system ad un file su un altro (diverso) file system. Per aggirare questo problema, si può invece creare un link simbolico.

9 1.9 Collegamenti ai files Di default, ln crea hard links; usando lopzione -s, crea invece links simbolici (o soft). $ ln -s /usr/include/stdio.h stdio.h $ ls -l stdio.h lrwxrwxrwx 1 lferrari lferrari 20 apr 7 14:46 stdio.h -> /usr/include/stdio.h $ ln -s ~/didattica/corsi/fileln file $ ls -l file lrwxrwxrwx 1 lferrari lferrari 37 apr 7 14:50 file -> /home/lferrari/didattica/corsi/fileln $ rm ~/didattica/corsi/fileln $ ls –l file lrwxrwxrwx 1 lferrari lferrari 37 apr 7 14:50 file -> /home/lferrari/didattica/corsi/fileln $ cat file cat: file: No such file or directory

10 1.10 Attributi di un file I timestamp: a ciascun file sono associate tre date: La data di creazione La data dellultima modifica La data dellultimo accesso Il proprietario: ogni file è di proprietà di un utente del sistema. Il gruppo: a ogni file è anche associato un gruppo di utenti. Il gruppo di utenti più comune si chiama users, ed è spesso condiviso da tutti gli utenti del sistema. I permessi: a ogni file sono associati dei permessi, che stabiliscono chi può accedere a quel file, o cambiarlo, o, nel caso di programmi, eseguirlo. Ciascuno di questi permessi può essere assegnato separatamente al proprietario, al gruppo e a tutti gli altri utenti.

11 1.11 Attributi di un file Le informazioni riguardanti un file possono essere ottenute utilizzando il comando ls –l. $ ls -l totale 28 drwxrwxr-x 4 lferrari lferrari 4096 mar 27 16:52 Desktop/ drwxrwxr-x 2 lferrari lferrari 4096 mar 21 17:35 didattica/ drwxr-xr-x 2 lferrari lferrari 4096 mar 14 19:21 Documents/ -rwx lferrari lferrari 1999 mar 31 13:25 file* -rw-r--r-- 1 lferrari lferrari 123 mar 31 12:58 file1 drwxrwxr-x 2 lferrari lferrari 4096 mar 21 17:35 ricerca/ drwx lferrari lferrari 4096 mar 14 18:50 tmp/ In aggiunta al nome di ciascun file, mostra il tipo di file, i permessi, il numero di hard links, il nome del proprietario, il nome del gruppo, la dimensione in bytes, e un timestamp, di solito la data dellultima modifica.

12 1.12 Permessi Tutto in UNIX è gestito tramite files, perfino laccesso alle periferiche (tramite i files in '/dev') quali stampanti, modem, schede audio ecc. Se non si hanno i permessi relativi a un file che rappresenta una periferica, non si può utilizzare quella periferica. Il primo concetto riguardante i permessi è quello di possesso. Il comando chown imposta il proprietario di files e directories (che, di default, è colui che ha creato il file o la directories). Di solito, quando si possiede un file, si può fare ciò che si desidera con quel file. Spesso più di un account necessita di accedere a un file o a una periferica. Cambiare il possesso di tale file ogni volta che qualcunaltro ha bisogno di accedervi sarebbe perlomeno molto spiacevole. Questo è il motivo per cui il possesso è fornito non solo per singoli accounts ma anche per gruppi. I gruppi sono definiti in /etc/group, un elemento di questo file si presenta così: group_name:x:group_ID:group_member

13 1.13 Permessi Per vedere la lista dei gruppi dei quali il proprio account corrente è membro, si usa il comando $ groups Quindi, se si è membri di un gruppo e quel gruppo possiede dei permessi riguardanti un file, si può lavorare su quel file, anche se non se ne è proprietari. In media un sistema UNIX ha qualcosa come files, e spesso di più. La maggioranza di essi deve poter essere accessibile a tutti gli utenti del sistema, in un modo o nellaltro. Un modo per ottenere ciò potrebbe essere quello di creare un gruppo 'catch-all' che contenga tutti gli accounts del sistema e assegni tutti i file da condividere a questo gruppo. Pertanto, possiamo dividere i permessi sui files in 3 categorie: Permessi del proprietario Permessi di gruppo Permessi per tutti gli altri

14 1.14 Permessi Loutput del comando ls -l mostra i permessi per un file/directory $ ls -l drwxrwxr-x 4 lferrari lferrari 4096 mar 27 16:52 Desktop/ drwxr-xr-x 2 lferrari lferrari 4096 mar 14 19:21 Documents/ -rwx lferrari lferrari 1999 mar 31 13:25 file* -rw-r--r-- 1 lferrari lferrari 123 mar 31 12:58 file1 drwxrwxr-x 2 lferrari lferrari 4096 mar 21 17:35 ricerca/ drwx lferrari lferrari 4096 mar 14 18:50 tmp/ dove letichetta 'r' sta per lettura, 'w' per scrittura e 'x' per esecuzione. Il primo campo ha tre opzioni, d, l o -, ove d indica una directory, l un link simbolico, e - un file. Gli altri nove campi indicano i permessi per il proprietario, i permessi di gruppo e i permessi per tutti gli altri. Owner | Group | Others = rw- | r-- | r-- ( file1)

15 1.15 Permessi per le directories I permessi per le directories sono diversi dai permessi per i files. Nelle righe seguenti: drwxrwxr-x 4 lferrari lferrari 4096 mar 27 16:52 Desktop/ drwxr-xr-x 2 lferrari lferrari 4096 mar 14 19:21 Documents/ drwx lferrari lferrari 4096 mar 14 18:50 tmp/ r indica che il contenuto della directory può essere elencato w indica che il contenuto della directory può essere cambiato (copiare, spostare, creare nuovi files) x indica che gli utenti possono eseguire il comando " cd " relativamente a quella directory, nonchè leggere, scrivere, eseguire programmi e fare ricerche nella directory.

16 1.16 Cambiare le impostazioni dei permessi Il comando chmod permette di cambiare le impostazioni dei permessi di un file/directory. Occorre specificare 3 cifre col comando chmod. Tali cifre stabiliscono su quali permessi si andrà ad agire. La prima cifra determina i permessi per il proprietario, la seconda cifra determina i permessi per il gruppo, e la terza per gli altri. Per cambiare i permessi relativi al file file1 digitare: chmod XYZ file1 ove XYZ rappresenta una terna di cifre, ad es. 666 Ciascuna cifra è la somma di 4 per il permesso di lettura, 2 per il permesso di scrittura e 1 per il permesso di esecuzione. user group others chmod 640 file1 rw- r chmod 754 file1 rwx r-x r-- chmod 664 file1 rw- rw- r--

17 1.17 Cambiare le impostazioni dei permessi chmod a+rw hello.c chmod o-w hello.c chmod og+rx prog* chmod g=rw rep* chmod +w * Lopzione -R cambia uno dopo laltro i permessi di una directory e dei suoi contenuti. ChiAzionePermesso u = utente pr.+ = aggiung.r = lettura g = gruppo- = cancellarew = scrittura o = altri= = assegn.x = esecuz. a = tutti

18 1.18 Cambiare i gruppi Se si è membri di parecchi gruppi e si crea un file, qual è il gruppo di appartenenza del file? Sebbene si possa essere membri di più gruppi, soltanto uno di essi è il proprio gruppo effettivo in ogni ben preciso istante. Quando un processo crea un file, tale file viene immediatamente assegnato al proprio gruppo effettivo. Lamministratore del sistema sceglie quale dei gruppi di ciascuno verrà usato come gruppo effettivo della propria shell di login. In ogni caso, ognuno può creare una shell con un gruppo effettivo diverso usando lutility newgrp. $ date > ~/test1 … crea test1 da una shell del gruppo lferrari $ newgrp informatica $ date > ~/test2 … crea test2 da una shell del gruppo informatica ^D $ ls –lg test* -rw-r--r-- 1 lferrari 30 mar 27 16:52 test1 -rw-r--r-- 1 informatica 30 mar 27 16:52 test2

19 1.19 Il file system proc di Linux Il file system proc non memorizza dati, piuttosto esso crea una directory per ogni processo. Il nome della directory è il PID del processo. $ cd /proc ; ls 1/1023/1089/1111/… 1839/ … 2289/ … $ ps PID TTYTIMECMD 1839pst/ bash 2289pst/ ps Una directory di proc raggruppa le informazioni appropriate riguardanti quel processo (command line, environ strings, status, …). $ cd 1839 ; ls cmdline cwd environ exe fd maps mem mounts stat statm status Pertanto, le directory di proc contengono molte informazioni sulla CPU, sulle partizioni del disco, sulle periferiche,... In molti casi, i file di proc sono utilizzati nei programmi. pstree: mostra le dipendenze fra tutti i processi attivi. kill: termina un processo.

20 1.20 Mounting Il sistema operativo attacca un file system fisico al proprio file system virtuale tramite il comando mount. Questa operazione è detta mounting e la sintassi del comando relativo è: $ mount –t type device mount-point Esempi: $ mount –t ext2 /dev/hda6 / La partizione di tipo ext2 viene chiamata hda6. ( hd per hard drive, a per il primo di questi, e 6 per la sesta partizione). La documentazione delle periferiche è in /usr/src/linux/Documentation/devices.txt. $ mount –t vfat /dev/hda1 /mnt/windows $ mount –t msdos /dev/fd0 /mnt/floppy $ mount –t iso9660 /dev/hdc /mnt/cdrom Il comando mount è usato dal superutente (root). Il sistema operativo esegue mount –a durante il boot. Questo comando monta i file systems elencati in /etc/fstab. Si può smontare un file system usando umount. umount /mnt/floppy

21 1.21 Comprimere i files I tipi di file compresso in Linux sono: file.Z – compressi con compress : $ compress file1 $ uncompress file1.Z file.z, file.gz – compressi col programma zip di GNU: zip, gzip. $ gzip huge_file $ gunzip huge_file.gz file.bz2 – compressi con bzip2 $ bzip2 huge_file $ bunzip2 huge_file.bz2 Si può visionare un file in un archivio compresso senza estrarlo, tramite zcat o bzcat. $ zcat huge_file.gz $ bzcat huge_file.bz2

22 1.22 Archiviare i files Si può usare tar per immagazzinare i files in un archivio, per estrarli da un archivio e per fare altre manipolazioni. La sintassi di tar è: $ tar options tarfilename filelists Alcune opzioni sono: -c creare un archivio -x estrarre da un archivio -t elencare i contenuti di un archivio -v visualizza informazioni aggiuntive -u aggiunge i files nuovi o modificati a un archivio esistente -f usa tarfilename come filename dellarchivio (il nome di tarfilename è /dev/rmt0 di default) Esempio: tar -cvf logfile.tar logs.* tar -tvf logfile.tar tar -xvf logfile.tar tar -cvzf logfile.tar.gz logs.*


Scaricare ppt "1.1 Implementazione del file system Una possibile visualizzazione del file system di un sistema Unix."

Presentazioni simili


Annunci Google