Diventa padrone dei permessi Linux

Comprendere davvero ls -l, chmod e chown: leggere e gestire i permessi in Linux

Obiettivo: interpretare e modificare i permessi in modo consapevole, senza imparare a memoria.
← Torna alla teoria Linux
Perché esistono i permessi?

Nei sistemi GNU/Linux file e cartelle non sono liberamente accessibili. Il sistema nasce per essere multiutente e ogni oggetto del filesystem è protetto da un sistema di permessi che garantisce sicurezza e isolamento.

  • Controllo degli accessi
  • Separazione tra utenti
  • Protezione da modifiche accidentali
I comandi principali per la gestione dei permessi sono chmod e chown.
Utenti e gruppi

Ogni distribuzione Linux prevede utenti e gruppi. Alla creazione di un utente viene generalmente creato un gruppo omonimo. Un utente può appartenere a più gruppi.

Gli utenti standard non possono modificare permessi o proprietà di file che non appartengono loro.
Come leggere l’output di ls -l

Il comando ls -l mostra i file con dettagli: tra questi, i permessi sono la parte più importante.

Esempio:
-rw-r--r-- 1 mario mario  120 Jan 26 10:30 lezione.txt
A) Scomposizione di -rw-r--r--
  • Primo carattere (tipo):
    • - = file normale
    • d = directory (cartella)
    • l = link simbolico
  • 9 caratteri successivi in 3 gruppi da 3:
    • utente (owner) → rw-
    • gruppor--
    • altri (others) → r--
B) Significato di r / w / x
  • r = read → puoi leggere
  • w = write → puoi scrivere/modificare
  • x = execute → puoi eseguire (o “attraversare” una directory)
  • - = permesso assente
Nota fondamentale: x cambia significato tra file e cartelle
  • Su un file: x significa “posso eseguirlo” (es. ./run.sh).
  • Su una directory: x significa “posso entrarci/attraversarla” (es. cd, accesso ai contenuti).
Perché 644 e 755 funzionano: la logica dei numeri

I permessi numerici hanno 3 cifre: utente / gruppo / altri. Ogni cifra è la somma di tre “pesi”:

  • r = 4
  • w = 2
  • x = 1
Tabella rapida (quella da ricordare)
Numero Somma Permessi
7 4 + 2 + 1 rwx
6 4 + 2 rw-
5 4 + 1 r-x
4 4 r--
Spiegazione “vera” di 644
  • 6 (utente) = rw- → legge e scrive
  • 4 (gruppo) = r-- → legge soltanto
  • 4 (altri) = r-- → legge soltanto
Risultato:
rw-r--r--
Tipico per: file di testo, documenti, file da leggere.
Spiegazione “vera” di 755
  • 7 (utente) = rwx → legge, scrive, esegue
  • 5 (gruppo) = r-x → legge ed esegue
  • 5 (altri) = r-x → legge ed esegue
Risultato:
rwxr-xr-x
Tipico per: script e soprattutto directory (per permettere l’accesso).
Cambiare permessi: chmod (base)

chmod modifica i permessi. Puoi farlo in due modi: simbolico (aggiungo/tolgo una cosa) oppure numerico (imposto tutto).

A) Modalità simbolica (semplice e sicura)
chmod u+x script.sh
  • u = user (proprietario)
  • + = aggiungi
  • x = esecuzione
B) Modalità numerica (impostazione completa)
chmod 644 docs/lezione.txt
chmod 755 una_cartella
Regola pratica
  • File di testo → spesso 644
  • Script eseguibili → spesso 755 (oppure 700 se vuoi che solo tu possa eseguire)
  • Directory → spesso 755 (perché serve x per entrarci)
Proprietario e gruppo: cosa sono e come verificarli

In ls -l vedi anche proprietario e gruppo (nell’esempio: mario mario). Questo serve perché Linux decide i permessi così:

  1. Se sei il proprietario → vale la tripletta “utente”.
  2. Altrimenti, se sei in quel gruppo → vale la tripletta “gruppo”.
  3. Altrimenti → vale la tripletta “altri”.
Comandi (sicuri) per vedere identità e gruppi
id
groups
Nota (solo concetto): chown
chown cambia proprietario/gruppo, ma di solito richiede privilegi (sudo). È un comando potente: si usa con attenzione e non serve per capire i permessi di base.
Micro-esercizio (3 minuti): crea uno script, rendilo eseguibile, verifica

Obiettivo: vedere con mano che senza x uno script non parte, e che ls -l ti fa capire subito cosa manca.

Comandi:
echo -e '#!/bin/bash\necho "Ciao Linux"' > run.sh
chmod +x run.sh
ls -l run.sh
./run.sh
Cosa devi osservare
  • Dopo chmod +x run.sh in ls -l deve comparire almeno una x (di solito nell’owner).
  • Se fai ./run.sh e ricevi “Permission denied”, vuol dire: manca x (o la directory non ha i permessi corretti).
  • La prima riga #!/bin/bash serve a dire “con quale interprete eseguire lo script”.
Riepilogo rapido
  • ls -l → prima lettera: tipo; poi 9 caratteri: permessi (utente/gruppo/altri).
  • r=4, w=2, x=1 → i numeri (644/755) sono somme.
  • 644rw-r--r-- (file “leggibile”, scrivibile solo dal proprietario).
  • 755rwxr-xr-x (eseguibile/attraversabile da tutti, scrivibile solo dal proprietario).
  • x su directory = puoi entrarci; senza x spesso “non passi”.
  • chmod u+x file aggiunge esecuzione al proprietario; chmod 644/755 imposta tutto.
  • id e groups ti dicono chi sei e quali permessi di gruppo ti si applicano.