I permessi dei file

()

Essendo nato come sistema multiutente, ogni kernel di tipo unix-like come Linux deve fornire dei meccanismi di identificazione dei vari utenti, sulla base dei quali poi possa venire imposto un adeguato controllo degli accessi e delle operazioni che questi possono eseguire all’interno del sistema.

La struttura di sicurezza tradizionale di un sistema unix-like e estremamente semplice, tanto da essere in certi casi considerata troppo primitiva

Essa prevede una distinzione fondamentale fra l’amministratore del sistema, per il quale non esiste nessuna restrizione, e tutti gli altri utenti, per i quali invece vengono effettuati vari controlli, a seconda delle operazioni che vengo-no richieste. all’interno del sistema il kernel identifica ogni utente con un numero identificativo, chiamato user ID o UID.

Questo è nullo per l’amministratore e diverso da zero per tutti gli altri utenti.

Si tenga presente che quello che conta e comunque l’user ID, non il nome utente, questo infatti e solo un’etichetta che potrebbe essere qualunque ciascun username e’ abbinato ad un user ID, che sarà quello che verra utilizzato dal kernel per tutti i programmi che l’utente lancer una volta entrato nel sistema.

Gli utenti poi possono venire raggruppati in gruppi; come per gli utenti ogni gruppo ha un nome (detto groupname) ed un corrispondente identi catore numerico, il group ID o GID. Inoltre ad ogni utente e sempre associato almeno un gruppo, detto gruppo primario o gruppo principale.

Ogni processo, quando viene lanciato, eredita dal padre l’informazione relativa all’utente per conto del quale viene eseguito e di tutti i gruppi a cui questo appartiene.

In questo modo una volta entrati nel sistema tutti i programmi verranno eseguiti per conto dell’utente che ha effettuato la procedura di login. Si evita cosi che utenti diversi possano danneggiarsi fra loro o danneggiare il sistema.

I permessi dei  file

La gestione dei permessi dei file in un sistema unix-like e tutto sommato abbastanza elementare; esistono estensioni che permettono di renderla piu sottile e flessibile, ma nella maggior parte dei casi il controllo di accesso standard e piu che su ciente. In sostanza per il sistema esistono tre livelli di privilegi:

i privilegi dell’utente, indicati con la lettera u, (dall’inglese user).

i privilegi del gruppo, indicati con la lettera g, (dall’inglese group).

i privilegi di tutti gli altri, indicati con la lettera o, (dall’inglese other).

e tre permessi base:

permesso di lettura, indicato con la lettera r, (dall’inglese read).

permesso di scrittura, indicato con la lettera w, (dall’inglese write).

permesso di esecuzione, indicato con la lettera x, (dall’inglese execute).

il cui significato e abbastanza ovvio.

Ogni file e’ associato ad un utente, che e’ detto proprietario del file e ad un gruppo (detto a sua volta gruppo proprietario), per ciascuno dei tre livelli di privilegio (utente, gruppo e altri) e possibile specificare uno dei tre permessi (lettura, scrittura, esecuzione). Questi vengono riportati nella versione estesa dell’output del comando ls:

La lettura dell’output di questo comando ci permette di vedere che i sorgenti dei programmi contenuti nella directory in oggetto hanno quelli che sono in genere i permessi di default per i le di dati, si ha cioe il permesso di scrittura solo per il proprietario, quello di lettura per tutti quanti (proprietario, gruppo e altri) e l’assenza completa del permesso di esecuzione.

In generale un utente potrà effettuare solo le azioni per le quali ha i permessi, nel caso dei permessi appena illustrati questo comporta che un utente puo leggere i file di un altro ma non puo modificarli o cancellarli.

In realtà il meccanismo del controllo e abbastanza peculiare, e questo, se non capito fino in fondo, puo dar luogo a qualche confusione.

La verifica dei permessi di accesso ad un file prevede infatti i seguenti passi, eseguiti esattamente in questa sequenza:

1 se il processo viene eseguito dall'amministratore l'accesso viene sempre garantito, senza che sia eseguito nessun controllo;

2 se il processo viene eseguito dal proprietario del file allora:

2-1 vengono controllati i permessi corrispondenti all’utente (i primi tre di g. 1.5)

2-2 se questi sono assegnati per l’operazione richiesta, l’accesso e consentito; altrimenti l’accesso è negato;

3 se il processo viene eseguito da un utente che appartiene al gruppo proprietario del file allora:

3-1 vengono controllati i permessi corrispondenti al gruppo (i centrali in g. 1.5), e se questi sono assegnati per l’operazione richiesta, l’accesso e consentito; altrimenti l’accesso e negato;

4 se il processo viene eseguito da un qualunque altro utente allora:

4-1 vengono controllati i permessi corrispondenti a tutti gli altri (gli ultimi di g. 1.5), e se questi sono assegnati per l’operazione richiesta, l’accesso e consentito; altrimenti l’accesso e negato.

Si noti bene come in questa sequenza di controlli, una volta che la decisione riguardo l’accesso e presa, i passi successivi non vengono piu eseguiti.

Tutto cio significa ad esempio che se un utente non ha il permesso di scrittura per un proprio file, questi non potra scriverci, anche qualora il permesso di scrittura per il gruppo o per tutti gli altri fossero garantiti.

Tipi di permessi su Linux

Ogni file ha tre tipi di permessi

Permesso di lettura (r). Dove la r sta per read.

E’ il permesso che consente di vedere il contenuto.

Nota. Nel caso delle directory il permesso r consente la lettura della directory.

Permesso di scrittura (w).

Dove la w sta per write.

E’ il permesso di scrivere o modificare il contenuto del file.

Nota. Nel caso delle directory il permesso w consente di modificare il contenuto della directory.

Permesso di esecuzione (x).

Dove la x sta per eXecute

In genere, si tratta di un programma eseguibile.

Nota. Nel caso delle directory il permesso x consente di accedere al contenuto dei files e dei metadati delle voci della directory. A questi si aggiunge il simbolo del trattino (-) che indica la mancanza del permesso. A seconda della posizione in cui si trova nella stringa dei permessi, il trattino può indicare l’assenza del permesso a leggere, scrivere o eseguire il file.

Come vedere i permessi su Linux

Per vedere la lista dei permessi dei files, entro in una directory qualsiasi di Linux.

cd /usr

Poi digito il comando ls -l sulla linea di comando.

ls -l

Il sistema operativo visualizza l’elenco dei files presenti nella directory e i relativi permessi.

i permessi dei files su Linux

Come funzionano i permessi su Linux?

La stringa dei permessi di un file è composta da 10 caratteri. Ogni posizione della stringa è associata a una specifica informazione o permesso a seconda del carattere che compare ( drw- ).

il significato e la posizione dei permessi delle cartelle e dei files su Linux

I permessi possono essere associati a tre categorie di utenti:
L’utente (u). Dove la lettera u significa user.
Il gruppo (g). Dove la lettera g significa group.
Gli altri utenti (o). Dove la lettera o significa others.

Il tipo di file

La prima posizione indica la tipologia del file ( file normale, directory, link ).

il primo carattere della stringa dei permessi

I permessi dell’utente

I tre caratteri dalla seconda alla quarta posizione indicano i permessi dell’utente a cui appartiene il file.

i permessi dell'utente sul file

Ogni posizione è associata a un particolare permesso:

Il permesso di lettura ( r ). La seconda posizione indica il permesso di lettura ( r ) o meno ( – ) sul file da parte dell’utente proprietario.

Il permesso di scrittura ( w ). La terza posizione indica il permesso di scrittura ( r ) o meno ( – ) sul file da parte dell’utente.

Il permesso di esecuzione ( x ). La quarta posizione indica il permesso di scrittura ( r ) o meno ( – ) sul file da parte dell’utente.

Il trattino indica la mancanza del permesso a leggere, scrivere o eseguire il file, a seconda della posizione in cui compare.

I permessi del gruppo

i permessi del gruppo sul file

I tre caratteri dalla quinta alla settima posizione sono i permessi del gruppo associato al file.

Anche in questo caso ogni singola posizione è associata a uno specifico permesso:

Il permesso di lettura ( r ). La quinta posizione è il permesso di lettura ( r ) o meno ( – ) sul file da parte del gruppo.

Il permesso di scrittura ( w ). La sesta posizione è il permesso di scrittura ( r ) o meno ( – ) sul file da parte del gruppo.

Il permesso di esecuzione ( x ). La settima posizione è il permesso di scrittura ( r ) o meno ( – ) sul file da parte del gruppo.

I permessi degli altri utenti

i permessi degli altri utenti sul file

I tre caratteri dall’ottava alla decima posizione sono i permessi degli altri utenti ( others ) sul file.

Ogni posizione è associata a uno specifico permesso:

Il permesso di lettura ( r ). L’ottava posizione è il permesso di lettura ( r ) o meno ( – ) sul file da parte degli utenti.

Il permesso di scrittura ( w ). La nona posizione è il permesso di scrittura ( r ) o meno ( – ) sul file da parte degli utenti.

Il permesso di esecuzione ( x ). La decima posizione è il permesso di scrittura ( r ) o meno ( – ) sul file da parte degli utenti.

Un esempio pratico

i permessi dei files su Linux

Nella cartella /usr viene visualizzato il seguente elenco di files.

Il primo file della lista, quello chiamato “local”, ha la seguente stringa dei permessi: drwxr-xr-x

Ora cerchiamo di capire il significato dei permessi.

La lettera “d” nella posizione iniziale mi fa capire che si tratta di una directory.

drwxr-xr-x

La combinazione “rwx” nei permessi degli utenti indica che l’utente può leggere, scrivere ed eseguire il files.

drwxr-xr-x

La combinazione “r-x” nei permessi del gruppo vuol dire che gli altri utenti del gruppo associato al file possono leggere ed eseguire

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?