fb-pixel

Come cambiare i permessi con il comando chmod su Linux

Vuoi sapere come cambiare i permessi di file e directory su Linux? In questa guida impareremo a usare il comando chmod che ci permette di impostare i permessi usando la modalità che preferiamo.

Iniziamo dal vedere la sintassi di questo comando e le due modalità: simbolica e numerica. Passeremo poi a vedere numerosi esempi che ci aiuteranno a capire al meglio come funzionano i permessi.

Sintassi del comando chmod

Il comando chmod sta per “change mode” e serve a modificare i permessi di file e cartelle. Possiamo infatti usare questo comando per definire chi può leggere, scrivere ed eseguire i file.

Finora abbiamo visto come usare alcuni dei comandi principali per lavorare sui file:

  • copiare con cp;
  • spostare con mv;
  • mostrare i file con cat;
  • fare una ricerca con grep.

Adesso vediamo un altro comando fondamentale di Linux, chmod, che ci permette di gestire i permessi.

La sintassi di base del comando è questa:

chmod [opzioni] [modalità] nome-file

Bisogna quindi specificare il nome del file o della cartella, e scegliere la modalità da usare per impostare i permessi.

Partiamo perciò proprio da questo primo aspetto e vediamo quali sono le due modalità che possiamo usare.

Come funzionano i permessi su Linux

I permessi su Linux ci permettono di regolare tre diverse azioni:

  • lettura
  • scrittura
  • esecuzione.

Queste tre azioni vengono definite per tre tipologie di utente:

  • il proprietario del file (owner / user);
  • il gruppo di utenti (group);
  • tutti gli altri utenti (others).

Tieni presente che ogni file e cartella su Linux è associato a un proprietario e a un gruppo, per modificarli si utilizza il comando chown.

I permessi possono essere definiti con due rappresentazioni diverse:

  • simbolica
  • ottale (che per semplicità chiameremo numerica).

Si può usare l’una o l’altra modalità in base a come ci viene più comodo.

Iniziamo da quella simbolica.

Come funziona la rappresentazione simbolica dei permessi

Possiamo indicare la tipologia di permessi attraverso dei simboli, o meglio delle lettere, in questo modo:

  • r (read) indica il permesso di lettura;
  • w (write) quello di scrittura;
  • x (execute) l’esecuzione.

Per finire, la presenza di un “-” indica che il permesso non è stato concesso.

Quando verifichiamo i permessi di un file ci vengono mostrati raggruppati in tre triplette, in questo modo:

-rw-r--r--

I permessi seguono sempre lo stesso schema:

  • rw- (cioè i primi tre caratteri) rappresentano i permessi del proprietario;
  • r– quelli del gruppo
  • r– quelli degli altri.

In questo esempio quindi:

  • il proprietario ha il permesso di leggere (r) e scrivere (w) il file.
  • il gruppo ha solo il permesso di lettura (r);
  • tutti gli altri hanno solo il permesso di lettura (r).

Nota che il primo “-” indica che si tratta dei permessi di un file, invece per le cartelle avremmo visto una “d”.

Come funziona la rappresentazione numerica dei permessi

I permessi di lettura, scrittura ed esecuzione dei file possono anche essere rappresentati in forma numerica.

Nello specifico ogni permesso è rappresentato da un numero:

r4
w2
x1
0

In forma numerica, i valori della tripletta (esempio: rw-) verranno sommati come in questo esempio:

Permessi Linux Rappresentazione Simbolica Ottale

In questo esempio quindi per dare i seguenti permessi:

  • lettura e scrittura al proprietario (6)
  • lettura e scrittura al gruppo (6)
  • lettura agli altri (4).

Dovremo usare il valore numerico 664.

Se ora non ti è abbastanza chiaro, non preoccuparti, perché vedremo con degli esempi pratici come fare ad assegnare i permessi.

Per il momento, la cosa importante da capire è qual è il nesso tra la rappresentazione simbolica (r,w,x,-) e quella numerica (664, 644, 755).

Casi d’uso del comando chmod

Adesso che abbiamo iniziato a comprendere come funzionano e a cosa servono i permessi su file e cartelle di Linux, possiamo fare un altro passo avanti e vedere nella pratica come modificarli.

Per prima cosa ti spiegherò come verificare i permessi attuali. Poi vedremo come fare a impostare i permessi con entrambe le modalità: simbolica e numerica.

Come verificare i permessi di un file o una cartella

Per controllare quali sono i permessi di un file o una cartella da terminale, possiamo usare questo comando:

ls -l nome-file

Il comando ls (list) ci permette di mostrare i contenuti di una cartella. Inoltre, se usato con l’opzione l e il nome di un file ci permette di avere informazioni dettagliate e quindi anche di conoscere i permessi.

In questo esempio con il comando:

ls -l appunti.txt

Possiamo vedere quali sono i permessi di questo file:

-rw-rw-r-- 
Verificare Permessi File Linux

Questo significa che avremo questi permessi:

  • utente (in questo esempio “vbox”) lettura e scrittura (rw-);
  • gruppo (vbox) lettura e scrittura (rw-);
  • altri solo lettura (r–).

Nota che in questo caso prima dei permessi c’è il simbolo “-” per indicare che si tratta di un file. Nel caso di una cartella vedremo una “d”, mentre per i link simbolici vedremo una “l”.

Per vedere i permessi di tutti i file e le cartelle all’interno della cartella corrente possiamo usare il comando:

ls -l

In questo esempio puoi vedere che sono presenti un file e una cartella:

  • i permessi del file iniziano con “-“
  • quelli delle cartelle iniziano con una “d”.
Verificare Permessi Cartelle E File Linux

Nell’esempio qui sopra i permessi per la cartella “Articoli” sono questi:

drwxrwxr-x

Questo significa che:

  • il proprietario ha permessi di lettura, scrittura e esecuzione (rwx);
  • il gruppo: lettura, scrittura ed esecuzione (rwx);
  • gli altri: lettura ed esecuzione (r-x).

Passiamo allo step successivo e vediamo come fare a modificare i permessi.

Come assegnare i permessi (modalità simbolica)

Possiamo modificare i permessi attuali usando la modalità simbolica, cioè sfruttando questi simboli: r, w e x per i tre tipi di permessi.

Per poterlo fare dobbiamo anche conoscere queste altre opzioni per identificare il tipo di utente:

  • u per indicare il proprietario del file (user);
  • g per il gruppo (group);
  • o per tutti gli altri (others);
  • a per tutti i precedenti (u,g e o) (all).

Gli operatori che possiamo utilizzare sono:

  • + per aggiungere i permessi;
  • - per rimuoverli;
  • = per impostare i permessi come specificato di seguito.

Per chiarire bene l’utilizzo di questi operatori, vediamo degli esempi specifici.

Aggiungere i permessi

Vediamo un esempio pratico per l’aggiunta di un permesso.

Abbiamo questo file di partenza, documento.txt, con i seguenti permessi:

-r--r--r--

Vogliamo aggiungere il permesso di scrittura al proprietario, allora useremo il comando chmod in questo modo:

chmod u+w documento.txt

Cosa abbiamo fatto?

Dopo il comando abbiamo specificato il tipo di utente (u per user), usato l’operatore “+” per l’aggiunta del permesso e specificato “w” per il permesso di scrittura.

Assegnare Permessi Con Chmod Simbolici

Prima e dopo del comando chmod, ho utilizzato il comando “ls -l” per verificare che i permessi fossero cambiati correttamente.

A questo punto, posso usare il comando chmod per assegnare permessi anche al gruppo o a tutti gli altri utenti.

Ad esempio per assegnare i permessi di scrittura (w) al gruppo (g), userò questo comando:

chmod g+w documento.txt

Rimuovere i permessi

Possiamo anche usare chmod per rimuovere i permessi. In questo esempio, i permessi iniziali del mio documento sono:

-rw-rw-rw-

In questo caso per rimuovere il permesso di scrittura dal gruppo userò il comando seguente:

chmod g-w documento.txt

Nel dettaglio:

  • “g” indica che voglio modificare il permesso del gruppo.
  • “-” è l’operatore che ci consente di rimuovere i permessi.
  • “w” è il permesso di scrittura.
Rimuovere Permessi Con Chmod Simbolici Esempio

Aggiornare più permessi con un solo comando

Nota che se vuoi rimuovere (o aggiungere) i permessi da più utenti, ad esempio da “gruppo” e da “altri”, puoi combinare il comando.

Per esempio, abbiamo di nuovo la situazione di partenza del documento, con i seguenti permessi:

-rw-rw-rw-

In questo caso voglio rimuovere i permessi di lettura e di scrittura da “gruppo” (g) e “altri” (o) e lasciare invariati quelli dell’utente (u).

chmod go-rw documento.txt

Con questo comando:

  • “go” – stiamo agendo su gruppo (g) e altri (o)
  • “-” stiamo rimuovendo i permessi
  • “rw” sono i permessi che vengono rimossi.

Quindi stiamo rimuovendo i permessi di lettura e scrittura da gruppo e altri, e i permessi del documento, dopo la modifica, saranno questi:

-rw-------

Puoi vedere l’esempio che riporto qui:

Rimuovere Permessi Chmod Multipli Esempio

Impostare i permessi

Finora abbiamo visto gli operatori “+” e “-” che ci permettono rispettivamente di aggiungere o rimuovere i permessi.

L’altra alternativa che abbiamo è quella di impostare direttamente i nuovi permessi usando l’operatore “=“.

Per esempio abbiamo il nostro file con i seguenti permessi:

-r--r--r--

Se vogliamo impostare per l’utente i permessi di lettura e scrittura, ci basta usare il comando chmod in questo modo:

chmod u=rw documento.txt

Nel dettaglio:

  • con “u” stiamo specificando che vogliamo cambiare i permessi dell’utente;
  • usiamo il simbolo “=” per definire i permessi;
  • rw” stiamo impostando i permessi di lettura e scrittura.

Come puoi vedere nell’esempio, con questo comando stiamo cambiando solo i permessi dell’utente, senza modificare quelli del “gruppo” o degli “altri“.

Impostare Permessi Chmod Uguale Esempio

Come assegnare i permessi (modalità numerica)

Un altro metodo per assegnare i permessi è quello di utilizzare la modalità numerica.

Per semplicità possiamo fare riferimento a questa tabella per non dover convertire o ricordare i valori numerici. Abbiamo raccolto le impostazioni più comuni.

Permessi in simboliPermessi numericiSpiegazione
-rw——-600L’utente ha il permesso di lettura e scrittura.
-rw-r–r–644L’utente ha il permesso di lettura e scrittura. Gruppo e altri: solo lettura.
-rw-rw-rw-666Utente, gruppo e altri hanno il permesso di lettura e scrittura.
-rwx——700L’utente ha il permesso di lettura, scrittura ed esecuzione.
drwx——700L’utente ha il permesso di lettura, scrittura ed esecuzione (in una cartella)
-rwx–x–x711L’utente ha il permesso di lettura, scrittura ed esecuzione. Gruppo e altri: solo esecuzione.
-rwxr-xr-x755L’utente ha il permesso di lettura, scrittura ed esecuzione. Gruppo e altri: lettura ed esecuzione.
-rwxrwxrwx777Utente, gruppo e altri (quindi tutti) possono leggere, scrivere ed eseguire.

Qui è necessaria una breve, ma importante nota: quando impostiamo i permessi dobbiamo sapere che ci possono essere rischi di sicurezza. In particolare i permessi 666 e 777 danno la possibilità a tutti di leggere, scrivere ed eseguire i file e vanno quindi utilizzati con la massima cautela.

Per impostare i permessi con questa modalità ci basta usare il comando seguente:

chmod 644 documento.txt

Questo comando equivale a impostare questi permessi:

-rw-r--r--
Assegnare Permessi Chmod Numerico Esempio

Impostare i permessi in modo ricorsivo per le cartelle

Se vogliamo assegnare i permessi a una cartella e a tutto il suo contenuto (file e sottocartelle), possiamo usare l’opzione -R che ci permette di fare una modifica in modo ricorsivo.

Per esempio per cambiare i permessi della cartella “Articoli”, userò il comando in questo modo:

chmod -R 755 Articoli

Con questo comando stiamo impostando i permessi in questo modo:

  • l’utente può leggere, scrivere ed eseguire;
  • il gruppo può leggere ed eseguire;
  • gli altri possono leggere ed eseguire.

In pratica le modifiche possono essere effettuate solo dall’utente.

Questo equivale ad avere i seguenti permessi:

drwxr-xr-x
Permessi Ricorsivi Cartella Chmod

Come usare chmod con le opzioni

Come altri comandi Linux, anche chmod ha delle opzioni che possiamo usare per fare delle operazioni più avanzate.

Un esempio lo abbiamo visto poco fa con l’opzione -R che ci consente di applicare le modifiche ai file all’interno di una cartella.

Adesso vediamo la differenza tra due opzioni:

  • c (changes)
  • v (verbose).

Queste due opzioni combinate con il comando chmod sono simili:

  • l’opzione -v ci permette di mostrare un output che ci dice che cosa sta succedendo.
  • L’opzione -c ci mostra l’output solo se c’è stata una modifica.

Vediamo un esempio per capire meglio come funzionano.

Chmod Opzioni C V

In questo esempio ho usato il comando seguente:

chmod -c 664 documento.txt

Visto che i permessi del file sono stati modificati, mi è stato mostrato l’output:

il modo di 'documento.txt' è stato cambiato da 0644 (rw-r--r--) in 0664 (rw-rw-r--)

Successivamente ridando lo stesso comando, non c’è stata più la modifica e quindi non c’è stato un output.

Se, invece, diamo il comando con l’opzione v:

chmod -v 664 documento.txt

Vedremo il seguente messaggio che ci dice che i permessi sono stati mantenuti senza modifiche:

il modo di 'documento.txt' è stato mantenuto pari a 0664 (rw-rw-r--)

Ricapitolando:

  • se vogliamo vedere un avviso solo quando ci sono modifiche, possiamo usare l’opzione -c (–changes);
  • altrimenti, se vogliamo ricevere avvisi per tutti i file (anche quando restano inalterati), usiamo l’opzione -v (–verbose).

Se vuoi approfondire qualche aspetto più tecnico dell’uso del comando chmod, puoi sempre consultare la pagina del manuale.

Conclusioni

Con il comando chmod possiamo modificare i permessi di file e cartelle direttamente da terminale.

Quando cambiamo i permessi possiamo usare la modalità simbolica o numerica, la prima è più intuitiva ma è più lunga da utilizzare perché richiede di scrivere ogni volta i permessi per esteso. La modalità numerica, invece, all’inizio può sembrare più complessa da comprendere, ma poi diventa più rapida da utilizzare una volta appreso come si fa.

Tu quale modalità preferisci usare per cambiare i permessi? Faccelo sapere in un commento.


Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *