La gestione dei permessi dei file in Linux è uno degli aspetti fondamentali della sicurezza e dell’amministrazione del sistema. Comprendere come funzionano i permessi consente di proteggere dati sensibili, garantire la corretta esecuzione delle applicazioni e prevenire accessi non autorizzati.
Verificare i permessi
Il modo più semplice per vedere i permessi di un file è l’utilizzo del comando
ls -l
drwxr-xr-x 2 user group 6 Feb 14 test
-rwxr-xr-- 1 user group 4096 Feb 14 file.txtche visualizza nella prima parte della riga i permessi con questa struttura [Tipo][User][Group][Others]. Nell’esempio vediamo una cartella ed un file, analizziamo i permessi
Nel caso del file
- – : File standard (può essere d in caso di directory o l nel caso di link simbolico)
- rwx : proprietario con permessi di lettura, scrittura, esecuzione
- r-x : gruppo con permessi di lettura ed esecuzione
- r– : altri con permessi di sola lettura
Nel caso di directory
- r : consente di visualizzare il contenuto
- w : consente di creare o eliminare file
- x : consente di attraversare la directory (cd)
Possiamo quindi riassumere dicendo che ogni file e directory in Linux è associato a tre categorie di utenti
- Proprietario (User)
- Gruppo (Group)
- Altri utenti (Others)
e per ciascuna categoria possono essere assegnati tre tipi di permessi
| Simbolo | Significato | Per i file | Per le directory |
|---|---|---|---|
| r | Read (lettura) | Visualizzare il contenuto | Elencare i file nella directory |
| w | Write (scrittura) | Modificare il file | Creare/eliminare file |
| x | Execute (esecuzione) | Eseguire il file | Entrare nella directory (cd) |
La modalità numerica (ottale)
Linux utilizza una rappresentazione numerica dei permessi basata su valori
| Permesso | Valore |
|---|---|
| r | 4 |
| w | 2 |
| x | 1 |
dove la somma determina il valore finale
| Permesso | Valore |
|---|---|
| 7 | rwx (4+2+1) |
| 6 | rw- (4+2+0) |
| 5 | r-x (4+1+0) |
| 4 | r– (4+0+0) |
| 3 | -wx (0+2+1) |
| 2 | -w- (0+2+0) |
| 1 | –x (0+0+1) |
| 0 | — (0+0+0) |
un esempio pratico per assegnare i permessi è
chmod 755 file.txtdove Proprietario: 7 → rwx, Gruppo: 5 → r-x, Altri: 5 → r-x
Utilizzando l’opzione -R (ricorsivo) nel comando applicheremo i permessi a tutti i file e le directory all’interno del percorso specificato
# Esempio struttura directory
file.txt
cartella/
├─ script.sh
└─ data.txt
# Comando per modificare i permessi in modo ricorsivo
chmod -R 755 cartellaTutte le directory e tutti i file dentro cartella avranno permessi rwxr-xr-x
La modalità simbolica
Oltre alla modalità numerica, è possibile modificare i permessi in modo più granulare
# Aggiunge il permesso di esecuzione all'utente (proprietario)
chmod u+x file.txt
# Rimuove il permesso di scrittura al gruppo
chmod g-w file.txt
# Imposta per “others” solo il permesso di lettura, rimuovendo qualsiasi altro permesso precedente
chmod o=r file.txt
# Aggiunge il permesso di esecuzione a tutti
chmod a+x file.txtdove
- u = user
- g = group
- o = others
- a = all
Questa modalità è utile per modifiche rapide senza dover ricalcolare il valore numerico complessivo
Proprietà dei File: chown e chgrp
Nel sistema Linux, ogni file e directory è associato a un proprietario (utente) e a un gruppo, elementi fondamentali per il corretto funzionamento del modello di sicurezza basato sui permessi.
Il comando chown (change owner) consente di modificare il proprietario di un file e, opzionalmente, anche il gruppo associato. È uno strumento cruciale quando si configurano applicazioni web, servizi di sistema o ambienti multiutente. Ad esempio, assegnare la proprietà di una directory applicativa all’utente che esegue il servizio, permette di evitare errori di accesso e riduce il rischio di configurazioni insicure come permessi eccessivamente permissivi (ad esempio 777).
Il comando chgrp (change group), invece, modifica esclusivamente il gruppo associato a file e directory. È particolarmente utile nei contesti collaborativi, dove più utenti appartengono allo stesso gruppo di lavoro e devono poter accedere alle stesse risorse.
Vediamo qualche esempio di utilizzo
| Comando | Cosa fa | Risultato |
|---|---|---|
chown carlo file.txt | Cambia il proprietario di un file | Proprietario del file diventa “carlo” mentre il gruppo resta invariato |
chown carlo:staff file.txt | Cambia proprietario e gruppo | Il proprietario del file diventa “carlo” ed il gruppo “staff” |
chown :staff file.txt | Cambia solo il gruppo | Il proprietario rimane invariato mentre il gruppo diventa “staff” |
chown -R carlo:staff /srv/progetto | Applica ricorsivamente proprietà a directory e file | Tutti i file e sottodirectory diventano con proprietario “carlo” e gruppo “staff” |
chgrp staff file.txt | Cambia solo il gruppo | Il gruppo del file diventa “staff” mentre il proprietario resta invariato |
chgrp -R staff /srv/progetto | Cambia gruppo ricorsivamente su directory | Tutti i file e directory sotto /srv/progetto avranno come gruppo “staff” |
Un esempio pratico
Supponiamo di avere un server web con Nginx che non riesce a leggere i file del sito e restituisce l’errore “403 Forbidden”. Nel nostro esempio abbiamo
- Web server in esecuzione come utente: nginx
- Directory del sito: /var/www/miosito
- Proprietario attuale: root
- Permessi errati: 700
Iniziamo a verificare i permessi
ls -ld /var/www/miosito
drwx------ 2 root root 4096 Feb 14 /var/www/miositoIn questa situazione, il problema è che il web server non ha accesso ai file. Vediamo come poter correggere
# Modifica il proprietario
chown -R nginx:nginx /var/www/miosito
# Modifica i permessi di accesso
chmod -R 750 /var/www/miositoqueste modifiche permetteranno al sito di funzionare correttamente.
