Comando chmod in Linux: cambiare i permessi di file e directory
chmod modifica i permessi di lettura, scrittura ed esecuzione di file e directory. Puoi indicare un modo numerico oppure una modifica simbolica; prima di intervenire, verifica il percorso e i permessi attuali del destinatario.
I permessi distinguono il proprietario, gli altri utenti appartenenti al gruppo del file e gli utenti rimanenti. Il comando per cambiare la proprietà è chown, non chmod. Normalmente puoi cambiare i permessi dei file che possiedi; per altri file servono privilegi appropriati. L’appartenenza al gruppo, da sola, non dà il diritto di modificarne i permessi.
Sintassi di base
chmod [opzioni] modo file...
Le parentesi quadre indicano opzioni facoltative; file... indica uno o più percorsi. Sono segnaposto, non testo da copiare alla lettera. Gli esempi usano GNU chmod: consulta man chmod sul sistema effettivo per opzioni e differenze dell’implementazione.
Nel modo simbolico, u seleziona il proprietario, g il gruppo, o gli altri utenti e a tutti. Segue un operatore: + aggiunge, - rimuove e = assegna i permessi indicati per le categorie selezionate. Usa esplicitamente la categoria quando vuoi rendere chiaro l’effetto: omettendola, anche la maschera umask può influire sui bit modificati.
Esempi d’uso
Per provare i comandi, lavora in una directory di esercitazione con file tuoi e privi di dati importanti. Prepara un piccolo script chiamato script.sh e un file di testo chiamato report.txt. Un nome già esistente non viene protetto automaticamente dagli esempi: verifica prima di creare o sovrascrivere file.
Aggiungere il permesso di esecuzione al proprietario
chmod u+x script.sh
Aggiunge il bit di esecuzione del proprietario mantenendo gli altri permessi ordinari. Non aggiunge l’esecuzione al gruppo o agli altri utenti. Il bit da solo non rende valido uno script: servono anche contenuto e interprete corretti e un ambiente che consenta l’esecuzione.
Impostare i permessi con un numero
chmod 644 report.txt
Per un file normale, 644 imposta lettura e scrittura al proprietario e sola lettura al gruppo e agli altri. Ogni cifra è ottale: lettura vale 4, scrittura 2 ed esecuzione 1; si sommano i valori desiderati. L’ordine delle tre cifre è proprietario, gruppo, altri.
Controllare prima e dopo la modifica
ls -l report.txt
chmod go-rwx report.txt
ls -l report.txt
Con un file inizialmente a 644, la parte dei permessi passa da -rw-r--r-- a -rw-------, cioè 600. I bit del proprietario rimangono invariati: se erano diversi, anche il risultato sarà diverso. Nomi, date, dimensioni e altri campi mostrati da ls dipendono dal file.
Verificare il modo numerico applicato
640 concede lettura e scrittura al proprietario, lettura al gruppo e nessun permesso agli altri. In una directory di prova, verifica che demo.txt non esista già: la prima riga seguente lo crea, ma sovrascriverebbe il contenuto di un file omonimo.
printf 'demo\n' > demo.txt
chmod 640 demo.txt
stat -c '%a %n' demo.txt
Risultato atteso con GNU stat su un filesystem Linux che applica questi permessi:
640 demo.txt
%a mostra il modo ottale e %n il nome. Normalmente chmod non stampa nulla quando riesce; controlla comunque gli errori e verifica con stat o ls -l. Su filesystem con una diversa rappresentazione dei permessi, il numero richiesto può non apparire come previsto.
Per esempio, una verifica con GNU chmod e stat 8.32 in Git Bash su Windows ha restituito stato di uscita zero per il cambio a 640, mentre stat ha continuato a mostrare 644. Questo risultato descrive quell’ambiente Windows e non verifica i permessi Linux: per l’esercizio completo usa un ambiente Linux e un filesystem appropriato.
Il modo numerico assegna i permessi ordinari nel loro insieme; una modifica come chmod g+w report.txt aggiunge invece solo la scrittura al gruppo. Prima di una modifica reale, annota il modo precedente. Per un file normale privo di bit speciali puoi ripristinarlo impostando il valore annotato sullo stesso percorso e verificando di nuovo; non presumere che tutti i file fossero originariamente a 644.
Formati e opzioni principali
| Formato o opzione | Significato |
|---|---|
u/g/o/a |
Proprietario, gruppo, altri utenti o tutte le categorie. |
+ / - / = |
Aggiunge, rimuove oppure assegna i permessi per le categorie selezionate. |
r/w/x |
Lettura, scrittura ed esecuzione; sulle directory, x è il permesso di ricerca e attraversamento. |
-R |
Applica la modifica ricorsivamente alla directory e ai suoi contenuti. Controlla prima l’intero ambito. |
--reference=file |
Usa il modo del file di riferimento per i destinatari. Non copia proprietario e contenuto. |
Nei nomi di percorso contenenti spazi usa le virgolette. Il parametro file in --reference=file va sostituito con un riferimento realmente controllato. I dettagli delle opzioni sono descritti nel manuale GNU chmod(1).
Directory e precauzioni
Su una directory, lettura consente di elencare i nomi, scrittura riguarda la creazione e rimozione delle voci, mentre esecuzione significa ricerca e attraversamento. Le operazioni concrete richiedono combinazioni appropriate, spesso anche x sulle directory del percorso. Dare a una directory il modo 644 come a un documento può quindi impedirne l’uso normale.
Evita chmod -R 777 come rimedio generico: amplia l’accesso a tutti e assegna l’esecuzione anche a file che potrebbero non averne bisogno. Prima di usare -R, controlla percorso e contenuti con find o ls e considera i collegamenti simbolici. Un collegamento passato direttamente al comando può far modificare il file a cui punta: non trattarlo come una copia indipendente.
ACL (Access Control Lists, elenchi di controllo degli accessi), SELinux (Security-Enhanced Linux, un sistema di controllo della sicurezza) e opzioni di montaggio possono incidere sull’accesso oltre ai bit ordinari. Inoltre GNU chmod può conservare i bit speciali setuid (set-user-ID) e setgid (set-group-ID) delle directory quando usi un normale modo numerico: non assumere che tre cifre cancellino ogni attributo. La documentazione GNU sui permessi spiega struttura dei bit, modi numerici ed eccezioni per le directory.
Domande frequenti
Che cosa significa chmod 755?
Il proprietario ha lettura, scrittura ed esecuzione (7); gruppo e altri hanno lettura ed esecuzione (5). Su un file il bit x riguarda l’esecuzione come programma, su una directory la ricerca e l’attraversamento. Non è un’impostazione adatta automaticamente a ogni file o directory.
Documentazione di riferimento
Consulta il manuale chmod(1) di GNU coreutils e il manuale mantenuto nel progetto GNU coreutils per opzioni, privilegi richiesti e comportamento dei collegamenti simbolici. Confrontali con la documentazione installata sulla macchina su cui esegui il comando.




