back to top

Gestire i permessi in Linux: chmod, chown, chgrp

Per poter operare su file e cartelle all’interno di Linux รจ necessario disporre dei necessari permessi. A tal proposito vedremo, nel dettaglio, il funzionamento dei comandi chmod, chown e chgrp.

Cosa sono i permessi?

I sistemi Unix-Like (come Linux) sono stati tra i primi ambienti multi-utente e sono noti per il modo in cui gestiscono i permessi all’interno del filesystem. Ma cosa sono i permessi?

Pubblicitร 

I permessi non sono altro che le autorizzazioni necessarie affinchรฉ un utente possa accedere ai file ed alle cartelle del sistema. In altre parole: ciascun utente puรฒ accedere o meno ad un determinato file o cartella a seconda che l’amministratore di sistema gli abbia conferito o meno la necessaria autorizzazione.

I permessi possono consentire ad un utente (o gruppo di utenti) di accedere ad un file o una cartella in lettura (r), scrittura (w) o esecuzione(x). Vediamo nel dettaglio cosa significa:

  • lettura (r come read) – l’utente (o il gruppo cui appartiene) puoi leggere il contenuto; nel caso delle directory l’utente potrร  vedere i file e le sotto-cartelle in quest’ultima contenute;
  • scrittura (w come write) – l’utente (o il gruppo cui appartiene) puรฒ modificare il contenuto di un file; nel caso delle directory permette di modificarne il contenuto aggiungendo o rimuovendo elementi al suo interno;
  • esecuzione (x come execute) – l’utente (o il gruppo cui appartiene) puรฒ eseguire un file eseguibile; nel caso delle directory consente di accedere al loro contenuto.

Cartelle, file e permessi

In diverse lezioni della nostra guida ci siamo soffermati sulle modalitร  di gestione di file e cartelle. In questa lezione vedremo un argomento strettamente correlato: la gestione dei permessi (argomento molto importante essendo Linux un sistema multi-utente come detto nella lezione precedente e ricordato poco sopra).

Abbiamo giร  visto il comando ls, in particolar modo abbiamo giร  detto che l’utilizzo della sintassi:

ls -al

ha la funzione di stampare a video l’elenco dei file (anche quelli nascosti) e delle cartelle presenti nella posizione corrente. L’output generato da questo comando รจ ricco di informazioni:

Gestire permessi di utenti e gruppi

Nell’immagine qui sopra ho evidenziato le informazioni utili ai fini di questa lezione:

  • colonna dei permessi
  • utente proprietario / gruppo

La colonna dei permessi contiene 10 lettere (o trattini):

  • il primo spazio indica la tipologia dell’elemento e puรฒ avere i seguenti valori: d (directory), l (link simbolico), (file);
  • i nove caratteri successivi indicano, appunto, i permessi. Piรน precisamente si tratta di tre distinti gruppi di 3 permessi (r = lettura; w = scrittura; x = esecuzione, = non permesso). Il primo gruppo da tre riguarda il proprietario, il secondo riguarda il gruppo ed il terzo riguarda gli altri utenti.

Nel nostro esempio si tratta di due file, per entrambi il proprietario puรฒ leggere e scrivere (rw-), mentre il gruppo e gli altri utenti possono solo leggere (r–).

Le due colonne proprietario e gruppo indicano, rispettivamente l’utente proprietario del file ed il gruppo di appartenenza.

Dopo questa lunga, ma doverosa, premessa veniamo al nocciolo della questione, ovvero come gestire e modificare queste informazioni. A tal scopo linux dispone di comandi ad hoc. Vediamoli in rassegna:

chmod

E’ il comando che modifica i permessi (lettura, scrittura, esecuzione). Il comando in oggetto ha una duplice sintassi, vediamole entrambe:

1) chmod con sintassi simbolica

Consente di assegnare diversi permessi al proprietario, al gruppo ed agli altri utenti. La sintassi รจ la seguente:

chmod a=rwx nomefile

nel nostro esempio abbiamo assegnato a tutti (a = all) tutti i permessi (rwx). A sinistra del simbolo uguale (=) abbiamo l’assegnatario del permessi, a destra i permessi assegnati. L’assegnatario viene identificato attraverso una lettera:

  • a (tutti)
  • u (utente proprietario)
  • g (gruppo)
  • o (altri utenti)

I permessi, invece, sono identificati dalle tre lettere r, w e x che abbiamo giร  visto in precedenza.

2) chmod con sintassi ottale

Con questa sintassi i permessi vengono assegnati a tutti i livelli simultaneamente. Al posto delle lettere rwx si utilizzano 3 numeri. Facciamo un esempio:

chmod 777 nomefile

Nel nostro esempio abbiamo assegnato a tutti i massimi permessi (cioรจ “rwx” come nell’esempio precedente). In questa sintassi i tre numeri definiscono i permessi dei tre livelli: il primo numero riguarda l’utente proprietario, il secondo il gruppo, il terzo gli altri utenti. Di seguito una tabella dei valori numerici e del loro significato:

  • 7 corrisponde a rwx
  • 6 corrisponde a rw
  • 5 corrisponde a rx
  • 4 corrisponde a r
  • 3 corrisponde a wx
  • 2 corrisponde a w
  • 1 corrisponde a x
  • 0 negato ogni accesso

Se ad esempio avessimo voluto assegnare al proprietario tutti i permessi, al gruppo solo lettura ed esecuzione (ma non scrittura) ed agli altri utenti nulla, avremmo scritto:

chmod 750 nomefile

N.B. il permesso di scrittura รจ quello piรน “delicato”: chi possiede questo permesso potrร  non solo modificare i file ma anche cancellarli! Si faccia attenzione quindi ad usarlo con la massima attenzione e parsimonia.

chown e chgrp

Il comando chown รจ utilizzato per cambiare l’utente proprietario e/o il gruppo assegnato ad un file o ad una directory. La sintassi di chown รจ molto semplice:

chown nomeproprietario:nomegruppo nomefile

puรฒ essere utilizzato anche per il solo proprietario (in questo caso รจ possibile omettere il nomegruppo):

chown nomeproprietario nomefile

Facciamo un esempio: poniamo di voler assegnare il file immagine.jpg all’utente ‘pippo’ ed al gruppo ‘grafici’:

chown pippo:grafici immagine.jpg

Molto simile a chown รจ chgrp che si limita a cambiare il gruppo di un file o directory (senza poter intervenire sul proprietario). La sintassi รจ la seguente:

chgrp nomegruppo nomefile

chmod, chown, chgrp in modalitร  ricorsiva

Tutti e tre i comandi visti in questa lezione supportano la modalitร  ricorsiva. Tal modalitร  รจ molto comoda se si deve agire su una cartella e su tutto quanto รจ in essa contenuto. Per attivare la modalitร  ricorsiva:

chmod -R 777 nomecartella
chown -R nomeproprietario:nomegruppo nomecartella
chgrp -R nomegruppo nomecartella
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).