1 of 15

Gestione avanzata di

files e directory

Raspberryitaly Community Lessons

raspberryitaly.com

2 of 15

Tipi di file

Come detto precedentemente, per visualizzare l’elenco completo dei file è necessario usare il comando ls.

Il comando accetta varie opzioni come -a, -l o -i. L'opzione -l (l sta per long) e permette di visualizzare alcuni dettagli importanti di ciascun file.

Ad esempio usando ls -l , si ottiene:

-rw-r--r-x 1 max utenti 207 Feb 20 11:55 file1

-rwxr--r-- 1 max utenti 120 Feb 21 10:15 file2

-r--r--r-- 1 max utenti 558 Feb 12 10:22 file3

-rw-r-x--- 1 max utenti 210 Feb 18 12:10 file4

Distinguiamo i dati forniti:

  • Tipofile, permessi, link, nome proprietario, gruppo utenti, dimensione, data e ora, nome file.

Il nome del file e l'ultima informazione presente in ogni riga.

Il primo carattere indica il tipo di file, puo essere un trattino o una 'd'. Il trattino indica un comune file, mentre la 'd' indica che si tratta di una directory.

3 of 15

Tipi di file possibili

  • Come detto prima, il primo carattere dei dettagli forniti indica il tipo di file, ma i tipi di file possibili in Linux sono ben 8!

I tipi di file possibili:

  • - file regolare
  • d directory
  • l link (collegamento)
  • b periferica a blocchi con buffer
  • c periferica a caratteri con buffer
  • u periferica a caratteri senza buffer
  • p pipe FIFO
  • s socket

NB: Già, perché persino le periferiche, le connessioni e i servizi all’interno del sistema sono viste come file! Con tutti i vantaggi e svantaggi del caso! :)

4 of 15

Le altre caratteristiche dei file

ESEMPIO:

-rw-r-x--- 1 max utenti 210 Mar 18 12:10 file4

rw- r-x --- Questi nove caratteri, successivi a quello del tipo, indicano i permessi di accesso al file.

  • Segue il numero di link, il nome del proprietario del file, il nome del gruppo a cui appartiene il proprietario, le dimensioni in byte, la data e l'ora dell'ultima modifica ed infine il nome del file stesso.

  • Nell'esempio precedente il file 'file4' e lungo 210 byte (210 caratteri) e stato modificato il 18 marzo alle ore 12:10. Il suo proprietario e max che appartiene al gruppo utenti. Questo file ha un unico link e non e una directory ma un comune file.

5 of 15

Scusi.. Permesso?!

Noi sappiamo che, un file può essere letto o visualizzato solo se si possiede il permesso in lettura. Può essere sovrascritto, cancellato o modificato se si possiede il permesso in scrittura e può essere eseguito solo se si possiede il permesso di esecuzione.

Parliamo di permessi di accesso ai file, qualsiasi file può essere acceduto o meno da 3 categorie di utenti:

  • il proprietario del file,
  • il gruppo di utenti a cui appartiene il proprietario,
  • tutti gli altri utenti che posseggono un account sul sistema.

Questi permessi non sono altro che una terna di caratteri, per ogni categoria utenti composta da:

r, w, x, -

ESEMPIO:

-rw-r-x--- 1 max utenti 210 Mar 18 12:10 file4

Isoliamo i permessi.

6 of 15

La terna dei permessi

rw- r-x ---

Abbiamo detto che i permessi di accesso al file sono 9 caratteri, suddivisi in blocchi di 3, uno per gruppo.

  • I primi 3 caratteri sono relativi al proprietario del file,
  • I successivi 3 sono relativi al gruppo al quale appartiene il proprietario,
  • Gli ultimi 3 sono relativi a tutti gli altri utenti del sistema.

Ogni terna può contenere i caratteri '-', 'r', 'w' o 'x'. Il carattere '-' disabilita un permesso.

  • Il primo carattere di ciascuna terna può assumere i valori '-' o 'r'. Il carattere 'r' sta per read, cioè lettura ed indica la possibilità di leggere il file mentre il carattere '-' al contrario indica che la lettura di tale file non è possibile.
  • Il secondo carattere di ciascuna terna può assumere i valori '-' o 'w'. Il carattere 'w' sta per write, cioè scrittura ed indica la possibilità di scrivere il file.
  • Il terzo carattere di ciascuna terna può assumere i valori '-' o 'x'. Il carattere 'x' sta per eXecute, cioè esecuzione ed indica la possibilità di eseguire il file.

7 of 15

Ricapitolando!

Quindi:

  • Se osserviamo la prima terna allora stiamo considerando i permessi di accesso al file posseduti dal proprietario.
  • Se osserviamo la seconda terna stiamo considerando i permessi posseduti dal gruppo a cui appartiene il proprietario.
  • Se osserviamo la terza terna, stiamo considerando i permessi di accesso posseduti da tutti gli altri utenti su tale file.

NotaBene: L'utente root o supervisore è il proprietario di tutti i file del sistema, pertanto può leggere, scrivere ed eseguire qualsiasi file. Inoltre l'utente root può modificare i permessi dei file in modo da allargare o restringere l'accesso ad alcuni file agli altri utenti del sistema.

8 of 15

Comando modifica permessi

Per modificare i permessi di accesso di un file occorre usare il comando chmod. Tale comando accetta due argomenti: un elenco di variazioni di permessi ed un elenco di file sui quali agire.

Per abilitare un permesso occorre usare il simbolo '+' affianco al tipo di permesso che si desidera modificare. Ad esempio la stringa '+w' abilita il permesso di scrittura mentre la stringa '+x' abilita il permesso di esecuzione. Al contrario per disabilitare un permesso occorre usare il simbolo '-'. È possibile usare una qualsiasi combinazione di questi simboli.

Ad esempio, il comando:

chmod +w-x dati

abilita la scrittura e disabilita l'esecuzione del file 'dati' per tutti gli utenti.

Per specificare la tipologia di utenti ai quali abilitare o disabilitare dei permessi esistono 3 simboli: 'u', 'g' ed 'o'. Il simbolo 'u' sta per user ed indica il proprietario del file, il simbolo 'g' sta per group ed indica il gruppo di utenti del quale fa parte il proprietario ed infine 'o' sta per other, cioè tutti gli altri utenti.

Il simbolo che specifica la categoria di utenti per i quali si desidera modificare i permessi, va specificato prima degli altri simboli.

9 of 15

Altre cose da sapere su chmod

Per abilitare più permessi non occorre ripetere il simbolo '+' più volte, così come non è necessario per il simbolo '-'.

Ad esempio per abilitare sia la lettura che la lettura, si può scrivere +rw mentre per abilitare in lettura e disabilitare la scrittura e l'esecuzione occorrerà scrivere +r-wx e così via.

Se non viene specificata alcuna categoria di utenti si intende modificare i permessi per tutte le categorie. Per specificare tutte le categorie si può usare anche il simbolo 'a' , tale simbolo infatta sta per all, cioè tutti.

Notare che tra i vari simboli non esiste alcuno spazio, occorre infatti scrivere tutti i simboli uno affianco all'altro senza interporre degli spazi: in caso contrario il sistema risponderà con un messaggio di errore.

10 of 15

Maschere binarie

Il modo di specificare i permessi di accesso che utilizza i simboli r, w e x viene definito simbolico, ma non è l'unico modo possibile, esiste infatti un altro modo definito assoluto. Le cosidette maschere binarie.

Il vantaggio delle maschere binarie è la possibilità di cambiare tutti i permessi usando un solo comando, lo svantaggio è minore semplicità d'uso. Infatti, in una maschera binaria le tre categorie di utenti ossia le tre terne di simboli diventano 3 cifre in formato ottale, nel senso che ciascuna categoria è rappresentata da un numero in base 8.

Per rappresentare le 3 terne corrispondenti alle tre categorie di utenti sono sufficienti 3 cifre ottali. La prima cifra ottale infatti e relativa al proprietario del file, la seconda al gruppo a cui appartiene e la terza a tutti gli altri utenti del sistema.

Ad esempio, per abilitare tutti i permessi al proprietario del file 'dati' e permettere a tutti gli altri utenti solo la lettura e l'esecuzione occorrerà usare il comando chmod in questo modo:

chmod 755 dati

1

001

--x

2

010

-w-

3

011

-wx

4

100

r--

5

101

r-x

6

110

rw-

7

111

rwx

Di seguito, una tabella di specifiche:

La cifra ottale 0 corrisponde alla cifra binaria 000 mentre la cifra ottale 4 ad esempio, corrisponde alla cifra binaria 100.

11 of 15

Permessi di accesso alle directory

Come già detto le directory sono anch’ esse dei file speciali. Conseguentemente, è evidente che è possibile specificare i permessi di accesso anche per le directory. Esistono comunque delle sottili differenze..

  • Il permesso di lettura su una directory permette di elencare tutti i file contenuti all'interno, permette cioè di leggerne il contenuto. Il permesso di scrittura permette di aggiungere nuovi file nella directory, permette cioè di scrivere al suo interno. Il permesso di esecuzione infine, permette di accedere all'interno della directory.

  • Se un file leggibile, scrivibile ed eseguibile viene posto all'interno di una directory che non è accessibile (perché ha il permesso di esecuzione disabilitato) il file stesso diventa inaccessibile! Per accedere ad un file pertanto,non è sufficiente abilitarne i permessi ma occorre che la directory che lo contiene, così come la directory genitrice e tutte le altre directory padre siano abilitate in esecuzione. Non occorre che tali directory siano abilitate anche in lettura. In questo modo si potrà accedere al file accedendo a tutte le directory del percorso senza però poter visionare il contenuto di tutte le directory.

12 of 15

Esempio

  • Ad esempio il file :

/home/mau/guida.html

  • può essere accessibile a tutti gli utenti del sistema se guida.html ha il permesso di lettura abilitato, se la directory mau ha il permesso di esecuzione abilitato per tutti gli utenti e se la directory home ha il permesso di esecuzione abilitato per tutti gli utenti. L'utente Francesca pertanto potrà leggere il file guida.html tranquillamente, ma non potrà elencare il contenuto della directory mau nè quello della directory home.

13 of 15

Cambiare il proprietario di un file

Anche se un utente può accedere ad un file, solo il proprietario può cambiarne i permessi. Se si vuole quindi cedere il controllo di un file ad un altro utente, occorre cambiarne il proprietario. Per cambiare il proprietario di un file occorre usare il comando chown. Chown sta per 'change owner', cioè cambia proprietario.

Il comando chown accetta due argomenti il primo che è il nome del nuovo proprietario e il secondo che è il nome di un file o un elenco di file. Ad esempio per cambiare il proprietario di guida.htm occorre che il proprietario scriva:

chown francesca guida.html

Allo stesso modo è possibile cambiare il gruppo su un file utilizzando questa volta il comando chgrp. Il comando chgrp sta per 'change group' cioè cambia gruppo ed accetta 2 argomenti: il nuovo gruppo ed il file (o l'elenco di file) che deve essere modificato.

Attenzione: i comandi chmod, chown e chgrp non hanno effetto su filesystem di tipo FAT (opzione -t vfat del comando mount).

Questo perchè il filesystem di tipo FAT non supporta i permessi sui file come Linux. Quindi, nel caso si abbia un sistema con dual boot dove convivono Linux e Windows nello stesso disco e si tenti di eseguire il comando chmod, si otterrà il messaggio di errore: 'operation not permitted'.

- In altre parole una partizione Windows avrà root come proprietario di default.

14 of 15

Esercizio 1

  • Visualizzare i file della propria home directory ordinati in base alla data di ultima modifica
  • Visualizzare i file ordinati in base alla dimensione
  • Visualizzare i file nascosti della propria home (cosa hanno di particolare questi file?)
  • Ottenere l’elenco delle subdirectory contenute ricorsivamente nella propria home.
  • Utilizzare man ls per trovare le opzioni richieste

15 of 15

Esercizio 2

Creare nella home directory una cartella pippo.

• Dentro la cartella pippo, creare due file: pluto e paperino.

• Revocare i permessi di read alla cartella pippo.

• Che tipo operazioni è possibile eseguire nella directory? Quali sono quelle negate?

• Revocare i permessi di execute alla cartella pippo.

• Che tipo operazioni è possibile eseguire nella directory? Quali sono quelle negate?