Permessi dei file Linux spiegati: chmod, -rw-r–r– e diritti di accesso

目次

1. Introduzione

Cosa i “permessi di accesso” in Linux?

Nei sistemi Linux e Unix‑like, gestire correttamente i “permessi di accesso” (permessi) di file e directory è fondamentale. Si tratta di un elemento essenziale sia dal punto di vista della sicurezza sia per il corretto funzionamento del sistema.
Molte persone, visualizzando un elenco di file nel terminale, hanno probabilmente visto simboli poco familiari come -rw-r--r-- e si sono chieste: “Cosa significa questo?”

La relazione tra chmod e -rw-r–r–

Questi simboli sono una rappresentazione simbolica dei permessi di accesso di un file. Il comando chmod serve a impostare e modificare tali permessi. In altre parole, quando usi chmod per concedere permessi specifici a un file, il risultato è la visualizzazione di simboli come -rw-r--r--.

Scopo e pubblico di questo articolo

In questo articolo spiegheremo in modo chiaro e comprensibile, anche per i principianti, cosa significhi esattamente -rw-r--r-- e come usare chmod per impostarlo e modificar. Inoltre, tratteremo contenuti pratici come considerazioni di sicurezza ed esempi d’uso reali.
L’obiettivo è fornire una solida comprensione di conoscenze pratiche applicabili in scenari real, rivolgendosi a tutti, dai neofiti di Linux agli utenti intermedi che hanno già una certa familiarità con le operazioni nel terminale.

2. Cos’è chmod? [Basic Understanding]

Ruolo del comando chmod

chmod (pronunciato “chom-mod” o “change mode”) è l’abbreviazione di “change mode” ed è un comando usato in Linux e nei sistemi Unix‑like per modificare i permessi di accesso (permessi) di file e directory.
Utilizzando questo comando, è possibile controllare in modo flessibile “chi può fare quali operazioni (leggere, scrivere, eseguire)”.
Impostare correttamente i permessi di file e directory è cruciale non solo per garantire la sicurezza, ma anche per evitare problemi di condivisione e di esecuzione dei file.

Sintassi di base di chmod

chmod [options] [permissions] filename

Ad esempio, si usa così:

chmod 644 sample.txt

Questo comando modifica i permessi di sample.txt in questo modo:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • Proprietario (utente): lettura e scrittura consentite (rw-)
  • Gruppo: sola lettura (
    Altri: sola lettura (r–)

Due tipi di specifica: numerica e simbolica

Esistono due modalità per specificare i permessi di accesso con chmod:

  • Specificazione numerica (Modalità numerica)
  • Esempio: chmod 755 script.sh
  • Questo metodo indica i permessi in forma numerica per ciascun tipo di utente.
  • Specificazione simbolica (Modalità simbolica)
  • Esempio: chmod u=rw,g=r,o=r file.txt
  • Questo metodo usa i simboli r (read), w (write) e x (execute) per u (user), g (group) e o (others).

Entrambi i metodi possono impostare gli stessi permessi; la specificazione numerica è più veloce per modifiche in blocco, mentre quella simbolica consente modifiche più flessibili. È consigliabile usarli in base alla situazione.

Nota la differenza tra chmod e chown

Il comando chown è spesso confuso con chmod.

  • chmod : modifica i permessi di accesso (permessi)
  • chown : modifica il “proprietario” e il “gruppo” di file e directory

Poiché i loro scopi sono diversi, è importante comprendere chiaramente il ruolo di ciascun comando.

3. Comprendere il significato di -rw-r–r– scomponendolo

Struttura dei simboli di permesso

Quando esegui il comando ls -l in Linux, le informazioni sul file vengono visualizzate nel seguente formato:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

Tra questi, il simbolo più a sinistra -rw-r--r-- rappresenta le permessi (diritti di accesso) del file. Capirlo ti permette di comprendere correttamente chi può eseguire quali operazioni.

Spiegazione dettagliata di ogni parte

① Il primo carattere: tipo di file

SymbolMeaning
-Regular file
dDirectory
lSymbolic link
bBlock device
cCharacter device

Nel caso di -rw-r--r--, il - iniziale indica che si tratta di un “file regolare”.

② Caratteri da 2 a 10: permessi di accesso (3 caratteri × 3 gruppi)

  • Proprietario (utente)rw- → Lettura (r) e scrittura (w) sono consentite, esecuzione (x) no.
  • Gruppor-- → Sola lettura. Scrittura ed esecuzione non sono consentite.
  • Altrir-- → Sola lettura.

Pertanto, lo stato è che solo il proprietario può modificare, e gli altri utenti possono solo visualizzare.

Corrispondenza con la Notazione Numerica: Significato di 644

In Linux, le stesse autorizzazioni possono essere rappresentate anche con notazione numerica (ottale). La notazione numerica corrispondente a -rw-r--r-- è 644.

User TypeSymbolic NotationNumericMeaning
Ownerrw-6Read + Write
Groupr--4Read-only
Othersr--4Read-only

Questo numero deriva dal seguente calcolo:

  • Lettura (r) = 4
  • Scrittura (w) = 2
  • Esecuzione (x) = 1

Pertanto, rw- = 4 + 2 = 6, r-- = 4, r-- = 4 → totalizzando 644.

Perché si Usa Questa Autorizzazione?

-rw-r--r-- (644) è un’autorizzazione spesso utilizzata per file pubblici e file statici (HTML, CSS, ecc.) su server web. I motivi sono i seguenti:

  • Solo il proprietario può modificare → Previene modifiche non intenzionali
  • La lettura è consentita per gli altri utenti → Supporta la condivisione e la pubblicazione dei file

Quando utilizzata in modo appropriato, consente una gestione dei file che bilancia sicurezza e comodità.

4. Come Impostare -rw-r–r– con chmod [Practical Edition]

Modifica delle Autorizzazioni Usando il Comando chmod

Le autorizzazioni di accesso per file e directory possono essere modificate liberamente usando il comando chmod. Ad esempio, se si vuole impostare lo stato a -rw-r--r--, basta impostare l’autorizzazione su “644”.

Metodo di Impostazione con Specifica Numerica

Usare il formato chmod 644 filename.

chmod 644 document.txt

Questo comando modifica le autorizzazioni di document.txt come segue:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • Proprietario (utente): Lettura e scrittura consentite (rw-)
  • Gruppo: Sola lettura (r–)
  • Altri: Sola lettura (r–)

Metodo di Impostazione con Specifica Simbolica

Se si vuole manipolare le autorizzazioni in modo più flessibile, la specifica simbolica è efficace.

chmod u=rw,g=r,o=r document.txt

Questo comando viene interpretato come segue:

  • u=rw → Imposta autorizzazioni di lettura e scrittura per il proprietario
  • g=r → Consente solo l’autorizzazione di lettura per il gruppo
  • o=r → Consente solo l’autorizzazione di lettura per gli altri utenti

Il risultato è esattamente lo stesso della specifica numerica 644.

Punti da Notare Quando si Applica alle Directory

A differenza dei file, le directory richiedono l'”autorizzazione di esecuzione (x)” per accedere al loro contenuto. Ad esempio, fare quanto segue potrebbe limitare l’accesso:

chmod 644 my_folder

Con questa impostazione, viene concessa solo l’autorizzazione di lettura, ma l’operazione di “apertura” del contenuto della directory (che richiede l’autorizzazione di esecuzione) diventa impossibile. Esempio di Impostazione Corretta:

chmod 755 my_folder
  • Proprietario: Lettura, scrittura, esecuzione
  • Gruppo e Altri: Lettura, esecuzione

Facendo così, gli altri utenti saranno in grado di elencare i file all’interno della directory.

Modifica delle Autorizzazioni in Modo Ricorsivo: L’Opzione -R

Se si vuole modificare più file e sottodirectory contemporaneamente, usare l’opzione -R (ricorsiva).

chmod -R 644 my_folder

Questa operazione applica le autorizzazioni 644 a tutti i file sotto my_folder. Tuttavia, con questo metodo ci sono punti da notare.

5. Come Controllare le Autorizzazioni con il Comando ls -l

Come Controllare le Autorizzazioni dei File?

Per controllare le autorizzazioni di accesso (autorizzazioni) di file e directory, usare il comando standard Linux ls -l. Questo sta per “formato di elenco lungo” e visualizza informazioni dettagliate come autorizzazioni, proprietario, dimensione e data dell’ultima modifica.

Utilizzo Base

ls -l

Eseguendo questo comando, verrà visualizzato un output simile al seguente:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

Ogni elemento ha il seguente significato:

ItemMeaning
-rw-r--r--Permissions (access rights)
1Number of hard links (usually 1)
naoyaOwner (user)
devsGroup
2048File size (bytes)
Apr 13 20:00Last modification date and time
index.htmlFilename

Come Leggere la Colonna delle Autorizzazioni

Concentriamoci sulla parte -rw-r--r--, che è l’argomento principale di questo capitolo. Questa può essere scomposta come segue:

  • Il Primo Carattere: Tipo di File
  • - : File regolare
  • d : Directory
  • l : Collegamento simbolico
  • I Restanti 9 Caratteri: Permessi di Accesso (3 caratteri × 3 insiemi)
  • Proprietario (utente): rw- → Lettura + Scrittura
  • Gruppo: r-- → Sola lettura
  • Altri: r-- → Sola lettura

In altre parole, da questa visualizzazione, puoi leggere che “solo il proprietario può modificare questo file, e gli altri utenti possono solo leggerlo.”

Controllare Solo File Specifici

Se vuoi controllare i permessi di solo un file specifico, specifica il nome del file.

ls -l index.html

Questo ti permette di controllare solo il file target. È utile per controllare in directory con molti file.

Controllare le Directory è Anche Possibile

Puoi anche controllare le directory con ls -l. Tuttavia, se vuoi elencare i contenuti della directory, usa l’opzione -d insieme.

ls -ld my_folder

Questo mostrerà solo le informazioni sui permessi per my_folder stesso (non mostrerà l’elenco dei file all’interno).

Gestire in Sicurezza Controllando i Permessi

Dopo aver impostato i permessi con chmod, è raccomandato controllare sempre il risultato con ls -l. Se impostazioni errate vengono lasciate in vigore, possono causare incidenti di sicurezza o comportamenti inaspettati. Inoltre, se vuoi controllare più file alla volta, puoi combinarlo con una pipe in questo modo:

ls -l | grep '.sh'

Questo filtrerà e mostrerà solo i file con l’estensione .sh (script shell).

6. Come Controllare e Cambiare i Permessi con Strumenti GUI (Per Principianti)

Opzioni per Chi Non è a Proprio Agio con i Comandi

L’operazione su Linux è principalmente da linea di comando usando il terminale, ma molti principianti trovano lo “schermo solo testo difficile” o hanno “paura di fare errori per distrazione.” Per tali persone, puoi anche controllare e cambiare i permessi dei file usando un metodo GUI (Graphical User Interface).

Operazione nel Gestore File di Ubuntu (Nautilus)

Distribuzioni Linux come Ubuntu includono di default un gestore file chiamato “Nautilus.” Questo è uno strumento equivalente a “Esplora File” in Windows. Come Controllare:

  1. Clic destro sul file o directory target
  2. Seleziona “Proprietà”
  3. Apri la scheda “Permessi” (potrebbe essere visualizzata come “Diritti di Accesso” a seconda della versione)

Cosa puoi fare qui:

  • Controllare e cambiare il proprietario e il gruppo (richiede privilegi di amministratore)
  • Cambiare i permessi di lettura, scrittura ed esecuzione
  • I cambiamenti ai permessi di accesso vengono applicati immediatamente

Nel GUI, invece di simboli come rw- e r--, vengono visualizzate espressioni facili da capire come “Sola lettura” e “Lettura e Scrittura”, quindi anche i principianti possono operare con tranquillità.

WinSCP (Client SFTP per Utenti Windows)

Quando ti connetti a un server Linux remoto da Windows, puoi impostare i permessi sul GUI usando un client SFTP chiamato WinSCP. Procedura Operativa:

  1. Accedi al server con WinSCP
  2. Clic destro sul file desiderato → “Proprietà”
  3. Cambia il valore numerico (es. 644) o le caselle di spunta in “Diritti di Accesso (Permessi)”
  4. Clicca “OK” per applicare

Vantaggi:

  • Puoi controllare con rappresentazioni sia numeriche che simboliche
  • I cambiamenti ricorsivi dei permessi sono anche possibili tramite il GUI (per le directory)

Nota:

  • I file che richiedono privilegi root potrebbero non essere modificabili senza privilegi sudo

<https://winscp.net/eng/index.php>

FileZilla (Client SFTP Cross-Platform)

Puoi anche cambiare i permessi allo stesso modo con il client SFTP “FileZilla,” che può essere usato su Mac e Linux. Procedura:

  1. Dopo esserti connesso al server, clic destro sul file rilevante
  2. Seleziona “Permessi file…”
  3. Imposta con caselle di spunta o valori numerici e clicca “OK” per applicare

Vantaggi e Svantaggi dell’Operazione GUI

Vantaggi:

  • I principianti sono meno propensi a fare errori
  • I cambiamenti possono essere confermati visivamente immediatamente
  • Facile da gestire anche per chi non è familiare con i comandi

Svantaggi:

  • A seconda delle impostazioni del server e dell’ambiente, le modifiche potrebbero non essere possibili con gli strumenti GUI
  • Lo stato visualizzato e il riflesso reale possono differire, quindi è consigliato usare ls -l per conferma in combinazionefile-project.org/](https://filezilla-project.org/)>

7. Note e Risoluzione dei Problemi per le Impostazioni di chmod

Non Funziona Anche Se Pensi di Avere Impato Correttamente? Quale Potrebbe Essere il Motivo?

Dopo aver modificato i permessi di accesso con il comando chmod, potrebbe non funzionare come previsto. Nella maggior parte dei casi, ciò è dovuto a errori nella configurazione dei permessi o a incomprensioni sui permessi.
Qui introdurremo esempi pratici di risoluzione dei problemi comuni e le relative soluzioni.

Cause e Soluzioni per l’Errore “Permission denied”

Sintomo:

bash: ./script.sh: Permission denied

Causa:

  • Il file che stai tentando di eseguire non ha il “permesso di esecuzione (x)” concesso

Soluzione:

chmod +x script.sh

Oppure, se si utilizza la specifica numerica:

chmod 755 script.sh

È importante notare che “puoi leggere e scrivere, ma non puoi eseguire.”

Non è Possibile Accedere a una Directory Senza Permesso di Esecuzione

Se imposti chmod 644 per una directory, potresti non riuscire a leggere il suo conten.
Motivo:

  • “Il permesso di esecuzione (x)” per una directory è essenziale per poter “entrare” e “vedere il contenuto.”

Esempio:

chmod 644 my_folder
ls my_folder

→ Nel caso sopra, potresti non riuscire a visualizzare il contenuto e si può verificare un errore.

Soluzione:

chmod 755 my_folder

Insidie delle Modifiche Ricorsive (-R)

Mentre chmod -R è comodo, applica gli stessi permessi sia ai file che alle directory, il che può portare a problemi inaspettati.
Esempio di Fallimento Comune:

chmod -R 644 /var/www/html

→ La directory perde il permesso di esecuzione e non puoi accedere al suo contenuto.

Uso Corretto:

# Directories with execute permission
find /var/www/html -type d -exec chmod 755 {} ;

# Files with 644
find /var/www/html -type f -exec chmod 644 {} ;

Errori di Combinazione con Proprietario e Gruppo

Oltre a chmod, è necessario prestare attenzione al “proprietario (utente)” e al “gruppo” del file.
Ad esempio, se l’utente apache deve leggere un file, ma il proprietario è un utente generico e gli altri utenti non hanno il permesso di lettura, la visualizzazione web fallirà.
Soluzione:

  • Cambia proprietario: sudo chown www-data:www-data index.html
  • Concedi permesso al gruppo: chmod 640 index.html (se il gruppo è appropriato)

777 è Pericoloso! Il Risch di Permessi Eccessivamente Permissivi

Alcune persone potrebbero pensare, “Se non funziona, impostalo a 777”, ma questa è una pratica molto pericolosa.
Motivo:

  • Chiunque può leggere, scrivere ed eseguire
  • Aumenta il rischio di manomissione da parte di terzi e uso maligno di script

Regole di Base Consigliate:

  • File : 644 o 600
  • Directory : 755 o 700
  • Script e Binari : 755 (se necessario)

8. Esempi di Utilizzoenari Comuni

Come Viene Utilizzata l’Impostazione dei Permessi chmod in Situazioni Reali?

Il comando chmod e il permesso di accesso -rw-r--r-- introdotti finora sono frequentemente usati nelle operazioni reali di server e negli ambienti di sviluppo.
Qui, attraverso tre scenari tipici, vediamo come vengono utilizzate le impostazioni dei permessi.

1. Gestione dei File HTML su un Server Web

Scenario:
Quando pubblichi file HTML su un server web come Apache o Nginx, i permessi impostati per quei file sono solitamente -rw-r--r-- (644).

chmod 644 index.html

Perché 644?

  • Il proprietario (amministratore web) deve apportare modifiche → Permesso di scrittura (w)
  • Il server web (www-data, ecc.) ha solo bisogno di leggere → Permesso di lettura (r)
  • Non è necessario consentire ad altri utenti di scrivere

Con questa impostazione, puoi pubblicare contenuti web in modo sicuro con i permessi minimi necessari.

2. Concedere il Permesso di Esecuzione ai File Script

Scenario:
Hai creato il tuo script shell backup.sh, ma quando provi a eseguirlo ottieni “Permission denied.”

chmod 755 backup.sh

Significato di questa impostazione:

  • Il proprietario può leggere, scrivere ed eseguire (rwx)
  • Il gruppo e gli altri possono leggere ed eseguire (rx)

Ciò consente ad altri utenti di eseguire lo script mentre solo il proprietario può modificarlo.

3. Limitare l’accesso in lettura ai file riservati

Scenario:
Stai gestendo secrets.txt, che contiene chiavi API e password. Non vuoi che nessun altro tranne te possa vederlo.

chmod 600 secrets.txt

Significato di questa impostazione:

  • Solo il proprietario può leggere e scrivere (rw-)
  • Il gruppo e gli altri non hanno alcun accesso (—)

Questa è una impostazione molto importante dal punto di vista della sicurezza, ed è buona pratica gestire sempre le informazioni private con 600 o 400 (sola lettura).

4. Condividere le directory in modo sicuro

Scenario:
Stai creando una directory condivisa shared_folder a cui accedono più sviluppatori.

chmod 770 shared_folder

Significato di questa impostazione:

  • Proprietario e Gruppo: Tutti i permessi (rwx)
  • Altri: Nessun accesso (—)

Impostando il gruppo al team di sviluppo, puoi abilitare una collaborazione sicura ed efficiente. Puoi controllare in modo flessibile gli utenti cambiando il gruppo con il comando chgrp.

5. Problemi dovuti a impostazioni errate ed esempi di prevenzione

Scenario:
Hai eseguito accidentalmente chmod -R 777 . e tutti i file sono diventati scrivibili.

Misure consigliate per evitare:

  • Specificare sempre il tipo di file con find quando modificano i permessi
  • Verificare i permessi con ls -l prima di apportare modifiche
  • Provare prima in un ambiente di test temporaneo per test

9. FAQ

Q1. Qual è la differenza tra chmod 644 e -rw-r–r–?

A. Sono modi diversi di rappresentare la stessa cosa.

  • chmod 644 : Un comando per impostare i permessi in forma numerica.
  • -rw-r--r-- : La notazione simbolica che vedi dopo aver impostato i permessi, ad esempio con ls -l.

Entrambi indicano uno stato in cui il proprietario ha permessi di lettura e scrittura, e tutti gli altri hanno solo permessi di lettura.

Q2. Cosa succede se un file non ha il permesso di esecuzione?

A. Otterrai un errore se provi a eseguire script o binari direttamente.
Ad esempio, per eseguire file .sh o .py è necessario il permesso di esecuzione (x). Senza di esso, vedrai un errore come questo:

bash: ./script.sh: Permission denied

Soluzione:

chmod +x script.sh

Q3. È corretto impostare una directory a 644?

A. In generale, non è appropriato.
Le directory richiedono “permesso di esecuzione (x)”. Senza il permesso di esecuzione, non è possibile accedere ai file all’interno della directory.

Impostazione corretta:

chmod 755 directory_name

Q4. Quali sono le impostazioni di permesso più comuni?

A. Ecco alcune impostazioni di permesso comuni e i loro utilizzi:

  • 644 (-rw-r–r–) : Per la maggior parte dei file statici come HTML, CSS, immagini. Consente al proprietario di leggere e scrivere, e a tutti gli altri di leggere.
  • 755 (-rwxr-xr-x) : Per directory e script eseguibili. Consente al proprietario di leggere, scrivere ed eseguire; e a tutti gli altri di leggere ed eseguire (ma non scrivere).
  • 600 (-rw——-) : Per file sensibili che solo il proprietario dovrebbe poter leggere e scrivere.
  • 700 (-rwx——) : Per directory private che solo il proprietario dovrebbe poter accedere.

Q5. Come posso cambiare il proprietario o il gruppo di un file?

A. Puoi usare il comando chown per cambiare il proprietario e il comando chgrp per cambiare il gruppo.

Esempio per cambiare il proprietario:

sudo chown new_owner filename

Esempio per cambiare il gruppo:

sudo chgrp new_group filename

Potrebbe essere necessario sudo per questi comandi poiché spesso richiedono privilegi amministrativi.

Q6. I permessi dei file sono gli stessi su tutti i sistemi operativi?

A. No, i permessi dei file possono differire significativamente tra i sistemi operativi.
Linux e i sistemi Unix-like hanno un sistema di permessi dettagliato basato su utente, gruppo e altri, con permessi di lettura, scrittura ed esecuzione. Windows, d’altra parte, utilizza un sistema diverso basato su Access Control Lists (ACL) che è più granulare e può definire permessi per utenti e gruppi specifici in modo più dettagliato.

10. Conclusione

Comprendere e impostare correttamente i permessi dei file in Linux è una competenza fondamentale per chiunque gestisca un server o lavori con il sistema. Mentre la notazione -rw-r--r-- e il comando chmod possono sembrare intimidatori all’inizio, afferrare i concetti di base migliorerà notevolmente la tua capacità di mantenere un sistema sicuro e ben organizzato.
Comprendendo i diversi tipi di permessi, come interpretare le notazioni simboliche e numeriche e come utilizzare efficacemente il comando chmod, puoi garantire che i tuoi file e directory siano protetti e accessibili solo agli utenti previsti.
Ricorda di ricontrollare sempre le impostazioni dei permessi con il comando ls -l e di essere cauto quando usi le opzioni ricorsive. Con la pratica, la gestione dei permessi dei file diventerà una parte naturale ed essenziale del tuo flusso di lavoro.