Dev · 6 min lettura

Come funzionano i permessi chmod su Linux

I permessi Unix sono uno dei concetti fondamentali per chi lavora su server Linux. Vediamo come funziona il sistema r/w/x, la notazione ottale e i comandi chmod e chown.

Il sistema di permessi Unix

Su Linux ogni file e directory ha tre categorie di permessi:

Per ciascuna categoria esistono tre tipi di permesso:

Come leggere i permessi: ls -la

Il comando ls -la mostra i permessi in formato simbolico:

-rwxr-xr-x  1 mario www-data  4096 mag 10 12:00 script.sh
drwxr-xr-x  2 mario www-data  4096 mag 10 12:00 public/

La prima colonna di 10 caratteri si legge così:

La notazione ottale: come funziona

Ogni permesso vale un numero: r=4, w=2, x=1. Sommandoli si ottiene il valore ottale per quella categoria:

Valore r w x Significato
7Tutti i permessi
6Lettura + Scrittura
5Lettura + Esecuzione
4Solo lettura
2Solo scrittura
0Nessun permesso

I permessi più comuni

# 755: file eseguibili, directory web pubbliche
chmod 755 script.sh        # rwxr-xr-x

# 644: file di configurazione, HTML, CSS
chmod 644 index.html       # rw-r--r--

# 600: chiavi SSH, file con dati sensibili
chmod 600 ~/.ssh/id_rsa    # rw-------

# 777: tutti i permessi (evitare in produzione!)
chmod 777 temp/            # rwxrwxrwx

Notazione simbolica di chmod

In alternativa all'ottale, puoi usare la notazione simbolica:

# Aggiunge esecuzione per tutti
chmod +x script.sh

# Rimuove scrittura al gruppo e agli altri
chmod go-w file.txt

# Imposta esattamente r+w per il proprietario
chmod u=rw,go=r config.php

# Ricorsivo su tutta una directory
chmod -R 755 /var/www/html/

chown: cambiare il proprietario

# Cambia proprietario
chown mario file.txt

# Cambia proprietario e gruppo
chown mario:www-data file.txt

# Ricorsivo
chown -R www-data:www-data /var/www/html/

FAQ

Cosa significa chmod 755?

chmod 755 imposta: proprietario ha lettura+scrittura+esecuzione (7), gruppo ha lettura+esecuzione (5), altri hanno lettura+esecuzione (5). È il tipico permesso per file eseguibili e directory web.

Cosa significa chmod 644?

chmod 644 imposta: proprietario ha lettura+scrittura (6), gruppo ha solo lettura (4), altri hanno solo lettura (4). È il tipico permesso per file statici e di configurazione.

Come vedere i permessi di un file su Linux?

Usa il comando ls -la nella directory. L'output mostra i permessi in formato simbolico (es. -rwxr-xr-x) accanto al nome del file.

Perché chmod 777 è pericoloso?

Con 777 qualsiasi utente del sistema può leggere, modificare ed eseguire il file. Su un server web condiviso questo significa che altri utenti o processi compromessi possono modificare i tuoi file.

chmod in pratica: i comandi più usati

I comandi chmod che usi ogni giorno: chmod 755 script.sh — il proprietario può leggere/scrivere/eseguire, gli altri solo leggere/eseguire (standard per script e directory); chmod 644 config.json — il proprietario legge/scrive, gli altri solo leggono (standard per file di configurazione); chmod 600 ~/.ssh/id_rsa — solo il proprietario legge/scrive, nessun altro ha accesso (obbligatorio per chiavi SSH private); chmod +x deploy.sh — aggiunge il permesso di esecuzione per tutti senza cambiare gli altri permessi; chmod -R 755 /var/www/html — applica ricorsivamente a tutta la directory.

chown: cambiare proprietario e gruppo

chown utente:gruppo file cambia proprietario e gruppo. Esempi pratici: chown www-data:www-data /var/www/html -R — assegna i file web all'utente nginx/Apache; chown -R $USER:$USER ./progetto — riassegna all'utente corrente dopo un'operazione con sudo; chown root:root /etc/crontab — file di sistema devono essere di root. Attenzione: chown richiede sudo o essere root. Su file in /etc/ e /usr/ non cambiare mai il proprietario senza sapere esattamente cosa stai facendo.

Permessi sicuri per applicazioni web

La configurazione sicura per un sito web tipico: directory — 755 (o 750 per maggiore sicurezza); file PHP/script — 644; file di configurazione con credenziali — 600 o 640; file caricati dagli utenti — 644, mai 755 (un file caricato non dovrebbe mai essere eseguibile). Evita il classico errore di usare 777 per "far funzionare" le cose — stai dando accesso completo a tutti gli utenti del sistema. Se il web server non riesce a leggere i file, il problema è quasi sempre il proprietario (chown) non i permessi (chmod).

#
Hash Generator
Verifica l'integrità di file con hash MD5/SHA.
Usa il tool →