Permessi e proprietà

Se avete passato abbastanza tempo in Linux, prima o poi vi sarete imbattuti nel seguente errore “Permesso negato” (“Permission denied!”). Questo significa che avete appena tentato di compiere un’azione che non avevate il permesso di fare. (Ovvio, no?)

Vediamo quindi cosa sono i permessi e perché esistono. Ad ogni file e cartella su linux vengono associati nove bit che ne determinano le proprietà di accesso ed esecuzione. Gli utenti in Linux non hanno tutti gli stessi diritti, quindi non tutti possono accedere a determinati file. In particolare di un file si può avere il permesso di:

  • Read: Lettura. Con questo permesso è possibile visualizzare il file
  • Write: Scrittura. È possibile modificare il file, sovrascriverlo e cancellarlo
  • Execute: Nel caso di un file eseguibile o programma, la possibilità di farlo girare

Ma come si vedono i permessi di ciascun file? In realtà l’abbiamo già visto, ma non ci abbiamo fatto caso. Utilizzando il comando ls con i parametri a ed l otteniamo il seguente risultato

11 - perm

Accanto a ciascun file o cartella, troviamo stringhe di questo tipo “-rw-r–r–“. Come è possibile intuire, si riferiscono ai permessi del file, ma analizziamo meglio queste stringhe.

Nella prima posizione possiamo vedere se il file che stiamo trattando è una cartella oppure no. Infatti, laddove è una directory, in prima posizione troviamo una “d”, mentre in caso contrario, non troviamo nulla. In seguito ci sono i nove bit di read, write e execute. Perché nove?

I permessi a loro volta sono divisi in tre triplette: quella del proprietario del file, quella del gruppo a cui appartiene e quella di tutti gli altri. Prendiamo come esempio la prima riga dell’immagine soprastante.

drwxr-xr-x

Stiamo trattando una cartella, il cui proprietario è un utente di nome “lykos” che appartiene al gruppo di utenti “users”. La prima tripletta (rwx) si riferisce al proprietario, lykos, che ha il permesso di leggere, scrivere ed eseguire il file (o cartella, come in questo caso). La seconda tripletta (r-x) ci indica che la cartella può essere vista e aperta dagli altri utenti del gruppo “users” a cui appartiene il proprietario, ma che non possono modificarne il nome o cancellarla.

Gli stessi permessi sono dati a tutti gli altri utenti (coloro che non fanno parte del gruppo “users”) come ci mostra la terza tripletta (r-x).

Cambiare i permessi di un file

Supponiamo di voler permettere a “john”, utente del gruppo “users” di modificare il file2 presente nella cartella. Per cambiare i permessi di un file o di una cartella, utilizzeremo il comando chmod come nell’esempio

11 -perm2

È possibile notare che dopo l’esecuzione del comando il file2 presenta il permesso di write nella seconda tripletta. Perchè 664? Il sistema linux assegna al permesso read il valore 4, al permesso write il valore 2 e ad execute il valore 1. Ciascuna delle cifre di 664 si riferisce a una tripletta. Il comando si traduce in questo modo: chmod 6 (4 + 2 = read + write per il proprietario) 6 (4 + 2 = read + write per il gruppo) 4 (read=4) per gli altri di un determinato file.

In questo modo si capisce che il permesso “massimo” che si può avere su ciascun file è 777 (permette a tutti di fare tutto)

Se volete approfondire questo argomento o avete dubbi, non esitate a scriverlo sotto nei commenti. Alla prossima!

Please follow and like us: