Guida 2026 alla Certificazione Energetica APE per Immobili

Gestire i permessi di file e cartelle in Linux è fondamentale per la sicurezza e la stabilità del tuo sistema.

Questa guida pratica di Kwontento ti fornirà una comprensione approfondita dei permessi, dei proprietari e dei gruppi, insieme a comandi essenziali e scenari reali. Imparerai a configurare correttamente le autorizzazioni per proteggere i tuoi dati e garantire il corretto funzionamento delle applicazioni.

07Avvertenze e Rischi Comuni

08Conclusione: La Chiave della Sicurezza Linux

Introduzione ai Permessi Linux

Introduzione ai Permessi Linux

Nel cuore di ogni sistema operativo basato su Linux risiede un robusto meccanismo di gestione dei permessi, progettato per controllare chi può fare cosa con file e cartelle. Questo sistema è la pietra angolare della sicurezza, prevenendo accessi non autorizzati e garantendo che i processi eseguano solo le operazioni per cui sono stati autorizzati.

Ogni file e cartella in Linux è associato a un proprietario (utente), un gruppo e un set di permessi che definiscono le azioni consentite per il proprietario, i membri del gruppo e tutti gli altri utenti del sistema.

Comprendere a fondo questo sistema è essenziale per la sicurezza e l’integrità di qualsiasi ambiente Linux nel 2026.

Perché i permessi sono così importanti?

Senza un controllo granulare sui permessi, qualsiasi utente o processo potrebbe potenzialmente leggere, modificare o eliminare file critici di sistema, dati sensibili o configurazioni di applicazioni. Questo porterebbe a vulnerabilità di sicurezza, instabilità del sistema e violazioni della privacy.

Ad esempio, un server web che non ha i permessi corretti sui suoi file di configurazione potrebbe essere vulnerabile ad attacchi che permettono la modifica del contenuto del sito o l’esecuzione di codice arbitrario.

Le tre categorie di utenti

I permessi in Linux sono definiti per tre categorie principali di utenti:

  • Proprietario (User): L’utente che possiede il file o la directory. Solitamente, è l’utente che ha creato il file.
  • Gruppo (Group): Un gruppo di utenti a cui il file o la directory è assegnato. Tutti i membri di questo gruppo condivideranno gli stessi permessi definiti per il gruppo.
  • Altri (Others): Tutti gli altri utenti del sistema che non sono né il proprietario né membri del gruppo associato al file.

Questa suddivisione permette un controllo flessibile e granulare, adattabile a diverse esigenze di condivisione e sicurezza all’interno di un ambiente multi-utente.

Capire la Rappresentazione dei Permessi: Simbolica e Numerica

Capire la Rappresentazione dei Permessi: Simbolica e Numerica

I permessi di file e cartelle in Linux possono essere espressi in due modi principali: la notazione simbolica e la notazione numerica (ottale). Entrambe sono fondamentali per la gestione quotidiana del sistema.

La Notazione Simbolica: rwx

La notazione simbolica utilizza lettere per rappresentare i tre tipi di permessi fondamentali: lettura, scrittura ed esecuzione.

  • r (read): Permesso di lettura.
  • w (write): Permesso di scrittura.
  • x (execute): Permesso di esecuzione.

Quando si visualizzano i permessi di un file con il comando ls -l, si ottiene una stringa di 10 caratteri. Il primo carattere indica il tipo di file (es. - per un file regolare, d per una directory). I successivi nove caratteri sono divisi in tre gruppi da tre, che corrispondono ai permessi per proprietario, gruppo e altri.

Esempio: -rwxr-xr– indica un file regolare con permessi di lettura, scrittura ed esecuzione per il proprietario, lettura ed esecuzione per il gruppo, e solo lettura per gli altri.

La Notazione Numerica (Ottale): 755, 644

La notazione numerica, o ottale, assegna un valore numerico a ciascun permesso:

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1
  • – (nessun permesso) = 0

La somma di questi valori per ogni gruppo (proprietario, gruppo, altri) forma un numero ottale a tre cifre. Ad esempio:

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r– = 4+0+0 = 4

Quindi, -rwxr-xr-- (simbolico) corrisponde a 754 (numerico):

  • Proprietario: rwx (7)
  • Gruppo: r-x (5)
  • Altri: r– (4)

La notazione numerica è spesso preferita negli script e nei comandi per la sua concisione e chiarezza.

Il Comando chmod: Cambiare i Permessi

Il Comando chmod: Cambiare i Permessi

Il comando chmod (change mode) è lo strumento principale per modificare i permessi di file e directory in Linux. Può essere utilizzato sia con la notazione simbolica che con quella numerica.

Uso di chmod con Notazione Numerica

Questo è l’approccio più comune e diretto. Si specifica un numero ottale a tre cifre (o quattro, se si includono i permessi speciali) seguito dal nome del file o della directory.

Esempio pratico: dare al proprietario tutti i permessi, al gruppo solo lettura ed esecuzione, e agli altri solo lettura.

chmod 754 miofile.txt

Qui, 7 per il proprietario (rwx), 5 per il gruppo (r-x), e 4 per gli altri (r–).

Uso di chmod con Notazione Simbolica

La notazione simbolica permette di aggiungere (+), rimuovere (-) o impostare esattamente (=) permessi specifici per proprietario (u), gruppo (g), altri (o) o tutti (a).

Aggiungere il permesso di scrittura al gruppo per un file:

chmod g+w miofile.txt

Rimuovere il permesso di esecuzione da tutti gli altri:

chmod o-x miofile.txt

Impostare i permessi esattamente a rwx per il proprietario e r-x per gruppo e altri:

chmod u=rwx,go=rx miofile.txt

Opzione Ricorsiva -R

Per applicare i permessi a una directory e a tutti i file e sottocartelle al suo interno, si usa l’opzione -R (ricorsiva).

chmod -R 755 mia_cartella/

Questo comando è estremamente potente e deve essere usato con cautela, specialmente su directory di sistema.

Il Comando chown: Cambiare Proprietario e Gruppo

Il Comando chown: Cambiare Proprietario e Gruppo

Mentre chmod gestisce i permessi, il comando chown (change owner) è utilizzato per modificare il proprietario (utente) e/o il gruppo di un file o di una directory.

Questo comando è cruciale per la gestione della proprietà dei file, specialmente in ambienti multi-utente o su server.

Cambiare il Proprietario

Per cambiare il proprietario di un file, si usa la sintassi chown nuovo_proprietario file_o_directory. Questo comando richiede privilegi di superutente (root), quindi di solito si usa con sudo.

sudo chown utente_nuovo miofile.txt

Cambiare il Gruppo

Per cambiare solo il gruppo di un file, si può usare il comando chgrp, oppure chown con la sintassi :nuovo_gruppo.

sudo chown :nuovo_gruppo miofile.txt

Questo esempio cambia solo il gruppo, mantenendo lo stesso proprietario.

Cambiare Proprietario e Gruppo Contemporaneamente

Per cambiare sia il proprietario che il gruppo in un’unica operazione, si usa la sintassi chown nuovo_proprietario:nuovo_gruppo file_o_directory.

sudo chown utente_web:gruppo_web /var/www/html/index.html

Questo è un caso d’uso comune per i file serviti da un server web, dove il proprietario e il gruppo devono corrispondere all’utente sotto cui il server web è in esecuzione (es. www-data su Debian/Ubuntu).

Opzione Ricorsiva -R

Come per chmod, l’opzione -R applica le modifiche ricorsivamente a tutti i contenuti di una directory.

sudo chown -R utente_dev:gruppo_dev /progetti/nuovo_progetto

Permessi Speciali: SUID, SGID e Sticky Bit

Permessi Speciali: SUID, SGID e Sticky Bit

Oltre ai permessi standard di lettura, scrittura ed esecuzione, Linux offre tre permessi speciali che aggiungono ulteriori livelli di controllo e funzionalità: SUID, SGID e Sticky Bit. Questi permessi sono rappresentati da una cifra ottale iniziale aggiuntiva (0-7) prima delle tre cifre standard.

Comprendere i permessi speciali è cruciale per la gestione avanzata della sicurezza e per risolvere problemi legati all’esecuzione di programmi.

SUID (Set User ID – Valore 4)

Quando il bit SUID è impostato su un file eseguibile, qualsiasi utente che esegue quel file lo farà con i privilegi del proprietario del file, anziché con i propri privilegi. Il bit SUID appare come una s minuscola nel campo dei permessi del proprietario (rws) se il permesso di esecuzione è già presente, o una S maiuscola (rwS) se il permesso di esecuzione non è presente.

Un esempio classico è il comando passwd, che permette agli utenti di cambiare la propria password. Per fare ciò, il programma deve scrivere nel file /etc/shadow, che è di proprietà di root e ha permessi ristretti. Grazie al SUID, passwd viene eseguito con i privilegi di root, consentendo la modifica.

# Impostare SUID per un eseguibile
chmod 4755 /usr/bin/programma_sensibile

# Visualizzare i permessi (dovrebbe mostrare 'rws')
ls -l /usr/bin/programma_sensibile

L’uso di SUID è una potenziale vulnerabilità se non gestito correttamente, poiché un programma con SUID può essere sfruttato per ottenere privilegi elevati.

SGID (Set Group ID – Valore 2)

Il bit SGID ha due funzioni principali:

  • Su file eseguibili: Simile a SUID, fa sì che il programma venga eseguito con i privilegi del gruppo proprietario del file. Appare come s nel campo dei permessi del gruppo (rws) o S se senza permesso di esecuzione.
  • Su directory: Tutti i nuovi file e sottocartelle create all’interno di quella directory erediteranno il gruppo della directory stessa, anziché il gruppo primario dell’utente che li crea. Questo è estremamente utile per la gestione di directory condivise.

Esempio di SGID su una directory condivisa:

# Creare una directory e impostare il gruppo
sudo mkdir /dati_condivisi
sudo chgrp team_dev /dati_condivisi

# Impostare SGID e permessi appropriati
sudo chmod 2775 /dati_condivisi

# Verificare i permessi (dovrebbe mostrare 'rws' per il gruppo)
ls -ld /dati_condivisi

Ora, qualsiasi file creato in /dati_condivisi avrà automaticamente team_dev come gruppo, facilitando la collaborazione.

Sticky Bit (Valore 1)

Il Sticky Bit è rilevante solo per le directory. Quando impostato su una directory, impedisce agli utenti di eliminare o rinominare file all’interno di quella directory, a meno che non siano il proprietario del file, il proprietario della directory o l’utente root. Appare come una t minuscola nel campo dei permessi degli altri (rwt) o T maiuscola se senza permesso di esecuzione.

L’esempio più comune è la directory /tmp, dove tutti gli utenti possono creare file, ma non possono eliminare i file degli altri.

# Impostare Sticky Bit per una directory
sudo chmod 1777 /var/tmp

# Verificare i permessi (dovrebbe mostrare 'rwt' per gli altri)
ls -ld /var/tmp

Questo è fondamentale per le directory temporanee condivise, dove la pulizia dei propri file è consentita, ma non quella dei file di altri utenti.

Casi d’Uso Pratici e Best Practice

La teoria dietro i permessi Linux è importante, ma la sua applicazione pratica è ciò che veramente conta per un sistema sicuro ed efficiente. Vediamo alcuni scenari comuni e le migliori pratiche da adottare.

Permessi per File Regolari

Per la maggior parte dei file di testo, documenti o immagini che non devono essere eseguiti come programmi, i permessi standard sono 644 (rw-r--r--). Questo significa che il proprietario può leggere e scrivere, il gruppo e gli altri possono solo leggere.

chmod 644 mio_documento.pdf

Questa è una configurazione sicura per file che non richiedono esecuzione o modifiche da parte di altri utenti.

Permessi per Eseguibili e Script

Per gli script o i programmi eseguibili, è necessario il permesso di esecuzione (x). Una configurazione comune è 755 (rwxr-xr-x), che consente al proprietario di leggere, scrivere ed eseguire, mentre il gruppo e gli altri possono solo leggere ed eseguire.

chmod 755 mio_script.sh

Per script personali che non devono essere eseguiti da altri, si può usare 700 (rwx------).