Questa è una pillola di ripasso, nata dalla domanda di Marco (grazie Marchino): come funzionano i permessi sui file in Linux. Il concetto è semplice, ma va capito bene perché lo userai di continuo.
Le tre zone: UGO
In un sistema Linux gli utenti sono divisi, rispetto a ogni singolo file, in tre zone, dalla più vicina al file alla più lontana:
- user: l’utente proprietario del file;
- group: il gruppo proprietario del file;
- others: tutti gli altri, cioè chiunque non sia il proprietario né membro del gruppo proprietario.
Per ricordartele c’è un acronimo facilissimo, come il famoso ragioniere: u, g, o, cioè UGO.
I tre permessi: rwx
A ciascuna delle tre zone si può assegnare un insieme di tre permessi:
- r (read): lettura;
- w (write): scrittura;
- x (execute): esecuzione.
Anche qui un acronimo da imparare a memoria: rwx. UGO e rwx sono le uniche due cose da mandare a memoria quando si parla di permessi.
Leggere i permessi con ls -L
Creiamo un file di prova:
echo "prova permessi" > permessi.txt
ls -l permessi.txt
L’output è qualcosa del genere:
-rw-r--r-- 1 root root 15 ott 18 20:28 permessi.txt
Quello che ci interessa è la prima colonna, la sequenza di trattini e lettere, e le due colonne successive, che dicono utente e gruppo proprietari del file. In questo esempio ho creato il file da root, quindi utente root e gruppo root. Chiunque non sia root e non sia nel gruppo root rientra in others.
Il primo carattere della sequenza indica il tipo: un trattino è un file normale, una d è una directory (ce ne sono altri, ma per ora basta così). Seguono nove caratteri, in tre triplette:
- i primi tre sono i permessi dello user;
- i secondi tre sono i permessi del group;
- gli ultimi tre sono i permessi di others.
In ogni tripletta le lettere stanno sempre nella stessa posizione, rwx. Se al posto di una lettera c’è un trattino, quel permesso manca. Quindi rw-r–r– significa: il proprietario può leggere e scrivere, il gruppo può solo leggere, tutti gli altri possono solo leggere.
Cosa significano davvero
Per i file:
- read: leggere il contenuto del file;
- write: modificare il contenuto o cancellare il file;
- execute: mandare il file in esecuzione (un eseguibile, uno script).
Per le cartelle il significato cambia un po’:
- read: elencare i file contenuti nella cartella;
- write: creare, modificare e rimuovere file dentro la cartella;
- execute: entrare nella cartella e attraversarla per accedere alle sue sottocartelle e ai file che contengono. È il permesso meno intuitivo, ma una volta capito è facile.
Conclusione
Riassumendo: la stringa che apre l’output di ls -l raggruppa i permessi in tre triplette, user, group e others, e ogni lettera presente indica un permesso attivo. Nell’articolo successivo vediamo i comandi per modificare permessi, proprietario e gruppo.
Link e risorse
- il video su YouTube
- esempi e comandi della puntata su GitHub
- chmod(1), man page — il comando chmod
- Permessi e attributi sulla wiki di Arch — in inglese
- inode(7), man page — il campo st_mode
Sostieni il canale
PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!
questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!
