Lavorando con Linux è pressoché indispensabile conoscere l'uso del comando chmod. Questo comando permette di assegnare i permessi ai files e directories delle varie applicazioni, allo scopo di decidere chi può leggere, scrivere o eseguire una determinata risorsa.

La questione non riguarda solo la sicurezza o la privacy dei dati, ma il corretto funzionamento delle applicazioni. Una delle principali differenze tra i sistemi Windows e Linux è proprio la politica sull'argomento delle “default permissions”. Su Windows si assume come default che un programma possa essere eseguito da qualsiasi utente, a meno che non venga specificato diversamente. Su Linux avviene spesso il contrario: per default una risorsa non è mai eseguibile, e può essere gestita solo dall'utente che l'ha creata. Ecco perché è importante saper gestire i permessi di gruppi e utenti in modo corretto: senza questa conoscenza rischiamo di non riuscire ad eseguire le applicazioni che ci servono.

Utenti, gruppi e permessi

Per comprendere il funzionamento del comando chmod è necessario saper interpretare alcune informazioni fornite dalla shell. Quando elenchiamo le risorse presenti all'interno di una directory (tramite il comando ls o ll), otteniamo un elenco di questo tipo

-rw-r--r-- 1 L500 None 180 10 mar 17.39 foo

-rwxr-xr-x 1 L500 None 65 9 mar 14.38 signup.sh

drwxr-xr-x 1 L500 None 0 22 mar 10.36 tmp

quello che ci serve, per capire i permessi assegnati ad utenti e gruppi di utenti, è la chiave di lettura dei simboli stampati all'inizio di ogni riga. Il “trucco” per leggere agevolmente queste informazioni è il criterio di separazione dei simboli, ovvero: i caratteri stampati all'inizio di ogni riga vanno divisi secondo il modello 1-3-3-3. Se stessimo parlando della formazione di una squadra sportiva, possiamo immaginare uno sport che richieda squadre di 10 giocatori, di cui 1 è il portiere mentre gli altri 9 giocano sul campo. Con questa analogia, il “modulo” 1-3-3-3 ci dice che abbiamo 1 portiere, 3 giocatori in difesa, 3 al centrocampo e 3 in attacco.

Applicando il modulo alla sigla “-rw-r--r--” (la prima delle tre righe viste sopra) risulta

  • portiere: -
  • difesa: rw-
  • centrocampo: r--
  • attacco: r--

questo perché abbiamo diviso la sigla “-rw-r--r--” in 4 gruppi di simboli. Una volta imparato a raggruppare i simboli in terzine, possiamo abbandonare la similitudine calcistica e capire il vero significato della codifica. Il primo carattere (il portiere) descrive il tipo di risorsa: il simbolo indica un file, la lettera d una directory, la lettera l un link simbolico.

La risorsa elencata come “-rw-r--r--” è quindi un file, perché il primo simbolo della riga è -.

Per capire il significato delle tre terzine può tornarci utile ricordare la sigla UGO, ovvero: User, Group e Others. La lettura corretta della riga “-rw-r--r--” è quindi

  • Tipo di risorsa: -
  • Permessi utente proprietario (User): rw-
  • Permessi del gruppo proprietario (Group): r--
  • Permessi altri utenti e/o gruppi (Others): r--

a questo punto tutto dovrebbe essere abbastanza intuitivo. Il simbolo r indica il permesso di lettura (read), il simbolo w indica il permesso di scrittura (write), mentre il simbolo x, se presente, indica il permesso di esecuzione (execute). Le informazioni e i permessi per questa risorsa sono quindi

  • Tipo di risorsa: file
  • Permessi proprietario: leggere e scrivere
  • Permessi del gruppo: solo lettura
  • Permessi altri utenti: solo lettura

Il comando chmod

Una volta compresa la chiave di lettura delle informazioni su utenti, gruppi e permessi, l'uso del comando chmod è semplice ed intuitivo. Basta specificare su chi vogliamo agire, cosa vogliamo cambiare e come vogliamo cambiarlo. Ad esempio

chmod u+x foo

specifica che per l'utente proprietario (simbolo u) dobbiamo aggiungere (simbolo +) il permesso di esecuzione (simbolo x) per la risorsa foo. Analogamente il comando

chmod g-w foo

rimuove (simbolo -) i permessi di scrittura dal gruppo proprietario della risorsa foo.

Consideriamo infine il comando

chmod o=r foo

che assegna (simbolo =) i permessi di lettura della risorsa foo a tutti gli altri, ovvero gli utenti diversi dall'utente proprietario e non appartenenti al gruppo proprietario.

Conclusioni

Abbiamo visto come usare i simboli +, - e = per gestire i permessi sulle risorse. Il simbolo + aggiunge permessi a quelli già esistenti, il simbolo rimuove un permesso da quelli esistenti, mentre il simbolo = permette di impostare i permessi come vogliamo, sovrascrivendo la configurazione precedente.

Usando poi il simbolo a per indicare all users and groups possiamo assegnare (o rimuovere) velocemente tutti i permessi che ci servono, ad esempio

chmod a=rxw foo

assegna tutti i permessi possibili a tutti gli utenti e gruppi, mentre il comando

chmod a-rxw foo

rimuove tutti i permessi possibili a tutti gli utenti e gruppi.

E' possibile eseguire gli stessi comandi in modo molto sintetico tramite la notazione ottale, ma si tratta di una notazione che risulta comoda dopo un po' di esperienza. La notazione che abbiamo visto oggi è detta invece simbolica perché più intuitiva: basta ricordare la sigla UGO e i caratteri r, w, x per gestire i permessi di qualsiasi risorsa.

Ti potrebbero interessare

Hosting per la SEO: quanto è importante la velocità del server per posizionare il tuo sito?

Se stai pensando di aprire un sito web per la tua attività, uno dei primi problemi con cui ti verrai a scontrare sarà la SEO, cioè i processi di ottimizzazione della tua piattaforma atti a far si che si posizioni nelle prime pagine dei [...]

Server dedicati: cosa sono e come usufruirne nel modo migliore

Cosa sono i Server dedicati

I server dedicati sono uno strumento molto importante per chiunque abbia intenzione di migliorare la propria esperienza su Internet sotto ogni punto di vista. In linea di massima, un server [...]

Hosting per WordPress: di cosa parliamo esattamente?

Ci troviamo davanti ad una precisa terminologia informatica che però, in breve, sta a rappresentare un servizio molto semplice: che tu sia una piccola azienda o un nome già importante sul mercato, hai la possibilità di pubblicizzare e [...]

Cisco
DELL
Intel
NetApp
Proxmox
Ripe