Permessi e proprietà dei file Linux: una base fondamentale per la sicurezza
Quando utilizziamo Linux, può capitare di provare ad aprire un file e ricevere un messaggio di accesso negato, oppure di non riuscire a modificare una configurazione. In altri casi, potremmo voler impedire ad altri utenti del computer di leggere i nostri documenti.
Dietro queste situazioni c’è spesso un meccanismo fondamentale: il sistema dei permessi dei file.
Linux permette di stabilire chi può leggere, modificare o eseguire un file e chi può accedere a una directory. Comprendere queste regole ci aiuta non soltanto a risolvere piccoli problemi quotidiani, ma anche a rendere più sicuro il nostro sistema.
Non serve imparare tutto a memoria. Partiamo da alcuni esempi semplici e vediamo come applicarli con consapevolezza.
Come leggere i permessi di un file Linux
Apriamo il terminale e proviamo a elencare i file della nostra directory corrente con informazioni dettagliate:
ls -l
Il risultato potrebbe contenere una riga simile a questa:
-rw-r--r-- 1 mario utenti 1250 ott 20 10:30 appunti.txt
La prima parte, -rw-r--r--, descrive il tipo di elemento e i suoi permessi. Subito dopo troviamo il numero di collegamenti, il proprietario, il gruppo, la dimensione, la data e il nome del file.
Per il momento concentriamoci sui permessi. Il primo carattere indica il tipo di elemento: un trattino identifica normalmente un file regolare, mentre d indica una directory.
I nove caratteri successivi sono organizzati in tre gruppi:
rw-: permessi del proprietario;r--: permessi del gruppo;r--: permessi degli altri utenti.
Le lettere che incontreremo più spesso sono tre. r significa read, cioè leggere; w significa write, ovvero scrivere o modificare; x significa execute, cioè eseguire. Il trattino indica che quel permesso non è concesso.
Nel nostro esempio, il proprietario può leggere e modificare il file, mentre gli altri utenti possono soltanto leggerlo. Nessuno, attraverso questi permessi, ha il diritto di eseguirlo.
Questa distinzione è importante: la proprietà di un file e i permessi di accesso sono due informazioni collegate, ma differenti.
Proprietario, gruppo e altri utenti
Linux associa normalmente a ogni file un proprietario e un gruppo. I permessi vengono poi valutati in base alla relazione tra l’utente che sta accedendo e il file.
Il proprietario è l’utente a cui il file appartiene. Il gruppo consente di condividere determinati diritti tra più utenti, mentre la categoria degli altri comprende gli utenti che non rientrano nelle prime due categorie.
Per vedere proprietario e gruppo possiamo usare:
ls -l appunti.txt
Se vogliamo informazioni più esplicite, è utile anche il comando:
stat appunti.txt
Quest’ultimo mostra diversi dettagli, compresi proprietario, gruppo e modalità dei permessi.
C’è però una particolarità da ricordare: i permessi di una directory non funzionano esattamente come quelli di un normale file. Su una directory, r permette di elencarne i contenuti, w consente di modificarne le voci — per esempio creare o rimuovere file, se sono soddisfatte anche le altre condizioni — e x permette di attraversarla, cioè raggiungere gli elementi contenuti al suo interno.
Per questo motivo, quando non riusciamo ad aprire un file, il problema potrebbe trovarsi anche in una delle directory che compongono il suo percorso.
Modificare i permessi con chmod
Il comando chmod permette di cambiare i permessi di un file o di una directory. Possiamo utilizzarlo con una sintassi simbolica, che è spesso la più intuitiva quando stiamo imparando.
Immaginiamo di aver creato uno script chiamato saluto.sh e di voler consentire al proprietario di eseguirlo:
chmod u+x saluto.sh
La lettera u indica il proprietario (user), mentre +x aggiunge il permesso di esecuzione. In modo analogo, g identifica il gruppo e o gli altri utenti.
Se vogliamo togliere agli altri utenti il permesso di lettura da un file, possiamo scrivere:
chmod o-r appunti.txt
Prima di modificare i permessi, è buona abitudine controllare la situazione iniziale con ls -l. In questo modo possiamo verificare con precisione quali diritti stiamo cambiando.
Esiste anche una notazione numerica, molto diffusa nelle guide Linux. I valori sono:
4per la lettura;2per la scrittura;1per l’esecuzione.
Sommando questi valori otteniamo il permesso desiderato per ciascuna categoria. Per esempio, 7 equivale a lettura, scrittura ed esecuzione; 5 equivale a lettura ed esecuzione; 4 significa sola lettura.
Possiamo quindi impostare i permessi di un file con:
chmod 644 appunti.txt
Il risultato sarà rw-r--r--: il proprietario potrà leggere e modificare il file, mentre gruppo e altri potranno soltanto leggerlo.
Un altro esempio è:
chmod 750 script.sh
In questo caso, il proprietario avrà tutti i permessi, il gruppo potrà leggere ed eseguire il file, mentre gli altri non avranno alcun permesso.
Non esiste un valore corretto per ogni situazione: la scelta dipende da cosa contiene il file e da chi deve poterlo utilizzare.
Cambiare proprietario e gruppo con chown
A volte il problema non riguarda i permessi, ma il fatto che un file appartenga all’utente sbagliato. Per modificare proprietario o gruppo si utilizza chown.
Per esempio, un amministratore potrebbe assegnare un file all’utente mario con il gruppo utenti:
sudo chown mario:utenti appunti.txt
Il comando richiede sudo perché cambiare la proprietà di un file è normalmente un’operazione riservata all’amministratore o al proprietario con privilegi adeguati.
Naturalmente, mario e utenti sono nomi di esempio: nel nostro sistema dobbiamo utilizzare utenti e gruppi realmente esistenti.
Per verificare il risultato possiamo eseguire nuovamente:
ls -l appunti.txt
È importante non usare chown indiscriminatamente. Cambiare la proprietà di file di sistema o di directory utilizzate dalle applicazioni può impedire il corretto funzionamento di programmi e servizi.
Gli errori da evitare per mantenere Linux sicuro
Quando incontriamo un errore di permessi, potremmo essere tentati di applicare una soluzione drastica:
chmod 777 file
Questo comando concede lettura, scrittura ed esecuzione a proprietario, gruppo e altri utenti. Può sembrare una soluzione rapida, ma spesso concede molti più diritti del necessario.
Un file modificabile da tutti gli utenti locali può essere alterato da chi non dovrebbe avere accesso in scrittura. Per uno script, inoltre, il permesso di esecuzione non è sempre necessario: dipende da come intendiamo utilizzarlo.
Prestiamo particolare attenzione anche alle opzioni ricorsive, come chmod -R e chown -R, che possono applicare una modifica a molti file e directory contemporaneamente. Un errore nel percorso può avere conseguenze estese e difficili da correggere.
Il metodo più sicuro è procedere per gradi: identifichiamo il file interessato, controlliamo proprietario e permessi, capiamo quale accesso manca e modifichiamo soltanto ciò che serve. Quando possibile, proviamo prima su un file di test.
Una piccola abitudine che migliora la sicurezza
I permessi Linux non sono un ostacolo da aggirare, ma uno strumento che ci aiuta a controllare l’accesso ai dati. Se un file è leggibile soltanto dal proprietario, gli altri utenti locali non potranno normalmente leggerlo attraverso i permessi standard; restano comunque da considerare privilegi amministrativi, accessi fisici, backup e altri possibili canali.
Il principio da tenere a mente è quello del minimo privilegio: concedere a ogni utente e programma soltanto i diritti di cui ha realmente bisogno.
Quando qualcosa non funziona, quindi, evitiamo di assegnare tutti i permessi nella speranza che il problema scompaia. Impariamo invece a leggere ls -l, verificare la proprietà con stat e utilizzare chmod e chown con uno scopo preciso.
È una piccola competenza che torna utile sul computer personale, su un server Linux e in qualsiasi homelab. E rappresenta uno dei primi passi per amministrare il nostro sistema con maggiore sicurezza e consapevolezza.
LICENZA E CONDIZIONI D’USO
Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy.Â
CONTATTI DELL’AUTORE
Marco Ciammella marco@orvietolinux.it
Orvieto Linux User Group info@orvietolinux.it