Il sistema di permessi Unix
Su Linux ogni file e directory ha tre categorie di permessi:
- User (u) — il proprietario del file
- Group (g) — il gruppo a cui appartiene il file
- Others (o) — tutti gli altri utenti
Per ciascuna categoria esistono tre tipi di permesso:
- r (read, 4) — lettura: aprire e leggere il file
- w (write, 2) — scrittura: modificare o eliminare il file
- x (execute, 1) — esecuzione: eseguire il file come programma (o aprire la directory)
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ì:
- Posizione 1:
-file ordinario,ddirectory,llink simbolico - Posizioni 2-4: permessi del proprietario (user)
- Posizioni 5-7: permessi del gruppo
- Posizioni 8-10: permessi degli altri
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 |
|---|---|---|---|---|
| 7 | ✅ | ✅ | ✅ | Tutti i permessi |
| 6 | ✅ | ✅ | ❌ | Lettura + Scrittura |
| 5 | ✅ | ❌ | ✅ | Lettura + Esecuzione |
| 4 | ✅ | ❌ | ❌ | Solo lettura |
| 2 | ❌ | ✅ | ❌ | Solo scrittura |
| 0 | ❌ | ❌ | ❌ | Nessun 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
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.
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.
Usa il comando ls -la nella directory. L'output mostra i permessi in formato simbolico (es. -rwxr-xr-x) accanto al nome del file.
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.