Tutto sui permessi dei file Linux e chmod
I permessi indicano quali utenti possono leggere, scrivere o eseguire i file. È importante dare accesso solo a chi ne ha bisogno, per mantenere il sistema sicuro e funzionante.
Cosa sono i permessi dei file?
I permessi controllano chi può leggere, scrivere o eseguire un file o una cartella in un sistema Linux. Esistono per mantenere i dati al sicuro, evitare modifiche indesiderate e assicurare che i programmi vengano eseguiti solo quando previsto. I permessi sono uno dei pilastri della sicurezza Linux — senza di essi chiunque potrebbe cambiare file di sistema o leggere i tuoi dati privati. I permessi si impostano con il comando chmod, che vedremo nel dettaglio qui sotto.Tipi di utente
Su Linux i permessi si applicano separatamente a tre categorie di utenti:
Proprietario
Di solito chi ha creato o possiede il file.
Gruppo
Altri utenti che fanno parte del gruppo del file.
Altri
Tutti gli altri nel sistema che non sono il proprietario né nel gruppo.
Tipi di permesso
Lettura (r)
Vedere il contenuto di un file o l'elenco dei file in una cartella.
Scrittura (w)
Modificare un file o aggiungere/rimuovere file in una cartella.
Esecuzione (x)
Eseguire un file come programma o entrare in una cartella.
Il comando chmod
chmod sta per “change mode”. Modifica i permessi di un file o di una cartella.Puoi usarlo in forma simbolica (lettere, come rwx) o numerica (numeri ottali, come 777).Funziona su singoli file o intere cartelle.Rappresentazione simbolica
La prima opzione per specificare i permessi è la modalità simbolica, che usa lettere per definire i permessi per ciascun tipo di utente. È più facile da ricordare, leggere e capire, ma è più verbosa dell'ottale. r significa lettura, w scrittura e x esecuzione. Se uno di questi caratteri è sostituito da un trattino (-), quel permesso non è concesso.
Rappresentazione ottale (numerica)
La modalità ottale usa numeri per rappresentare i permessi. Dove lettura = 4, scrittura = 2 ed esecuzione = 1. Poi si sommano per ottenere un numero; in questo esempio 7, che significa che l'utente indicato può leggere, scrivere ed eseguire il file. Come prima, si specifica nell'ordine proprietario, gruppo e altri. Quindi 755 significa proprietario rwx (7), gruppo rx (5) e altri rx (5).
Se questi numeri ti sembrano casuali, sappi che si calcolano come cifre binarie. Quindi 111 (rwx) vale 7, 101 (r-x) vale 5 e 100 (r--) vale 4.

Aggiornare un singolo permesso
Spesso non vuoi cambiare tutti i permessi di un file/cartella, ma solo una parte. Per esempio, aggiungere l'esecuzione al solo proprietario, togliere la scrittura agli utenti pubblici o mettere il gruppo in sola lettura. Si fa in modalità simbolica con gli operatori `+`, `-` o `=`, seguendo il formato `chmod [chi][operatore][permesso] file`. Dove `chi` può essere `u` (proprietario), `g` (gruppo), `o` (altri) o `a` (tutti). `operatore` può essere `+` (aggiungi), `-` (rimuovi) o `=` (imposta esattamente). Esempio: `chmod g-w file.txt` rimuove la scrittura dal gruppo.

Modificare i permessi in modo ricorsivo
Usa l'opzione `-R` per cambiare i permessi di tutti i file e le cartelle dentro una directory. Per esempio: `chmod -R 755 /var/www` applica 755 a ogni file e cartella sotto /var/www. Fai attenzione: cambi ricorsivi possono rompere file di sistema se usati male.Proprietà e chmod
I permessi lavorano assieme alla proprietà. Ogni file ha un proprietario e un gruppo.
Se devi cambiare chi è proprietario di un file, usa `chown`.
Esempio: `sudo chown user:group file.txt` cambia sia proprietario sia gruppo.
Bit speciali
Oltre a lettura/scrittura/esecuzione, Linux ha bit di permesso speciali:
Setuid (4)
Esegue il file con i permessi del proprietario invece di quelli dell'utente che lo avvia.
Setgid (2)
Esegue il file con i permessi del gruppo. Nelle cartelle, i nuovi file ereditano il gruppo.
Sticky (1)
Nelle cartelle impedisce agli utenti di eliminare file che non possiedono. Comune in /tmp.
Preset chmod comuni
Ecco set di permessi comuni e i loro usi:
| Octal | Meaning |
|---|---|
| 600 | Il proprietario può leggere/scrivere. Nessun accesso per altri. Chiavi SSH private. |
| 644 | Il proprietario può leggere/scrivere. Gli altri possono leggere. Predefinito per molti file. |
| 700 | Il proprietario ha controllo totale. Nessun accesso per altri. Script privati. |
| 755 | Il proprietario può leggere/scrivere/eseguire. Gli altri possono leggere/eseguire. Comune per gli script. |
| 777 | Tutti possono leggere/scrivere/eseguire. Evita salvo per cartelle condivise temporanee. |

Debug dei permessi dei file
Se qualcosa non funziona, potresti vedere questi errori:
- Permission denied - Controlla di avere esecuzione sui file o lettura sulle cartelle. Aggiungi con `chmod +x file` o `chmod +r cartella`.
- Operation not permitted - Potresti aver bisogno di `sudo` per modificare file di sistema.
- Read-only file system - Il filesystem è montato in sola lettura. Rimonta con scrittura o contatta l'amministratore.
- Cannot open file: No such file or directory - Il percorso potrebbe essere errato. Verifica con `ls`.
Consigli di sicurezza
- Rendi eseguibile un file solo se serve davvero.
- Usa 600 per file privati e 644 per file leggibili pubblicamente.
- Evita 777 a meno che non sia strettamente necessario.
- Controlla i permessi con `ls -l` prima di cambiarli.
- Prova le modifiche prima su file non critici.