Cos'è chmod?

chmod: Modifica dei Permessi di File in Linux/Unix

chmod (abbreviazione di "change mode") è un comando della shell Unix e Linux utilizzato per modificare i permessi di accesso a file e directory. Controlla chi può leggere, scrivere ed eseguire file specifici. Comprendere e utilizzare chmod è fondamentale per la sicurezza e la gestione dei file in ambienti Unix-like.

Sintassi di Base:

chmod [opzioni] modalità file...
  • opzioni: Modificano il comportamento di chmod (es: ricorsivamente).
  • modalità: Specifica i nuovi permessi. Può essere numerica (ottale) o simbolica.
  • file: Il file o la directory a cui si applicano i permessi.

Modalità Numerica (Ottale):

La modalità numerica rappresenta i permessi come un numero ottale a 3 cifre. Ogni cifra rappresenta i permessi per una diversa categoria di utenti:

  • Prima cifra: Proprietario del file (User)
  • Seconda cifra: Gruppo del file (Group)
  • Terza cifra: Altri utenti (Others)

Ogni cifra è la somma dei seguenti valori:

  • 4: Permesso di lettura (r)
  • 2: Permesso di scrittura (w)
  • 1: Permesso di esecuzione (x)

Esempio: chmod 755 file.txt

  • 7 (4+2+1) = Proprietario ha lettura, scrittura ed esecuzione
  • 5 (4+1) = Gruppo ha lettura ed esecuzione
  • 5 (4+1) = Altri hanno lettura ed esecuzione

Modalità Simbolica:

La modalità simbolica usa lettere per rappresentare le categorie di utenti e le operazioni:

  • u: Utente (proprietario)
  • g: Gruppo
  • o: Altri
  • a: Tutti (utente, gruppo e altri)

Operatori:

  • +: Aggiunge il permesso specificato.
  • -: Rimuove il permesso specificato.
  • =: Imposta i permessi specificati, rimuovendo gli altri.

Permessi:

  • r: Lettura
  • w: Scrittura
  • x: Esecuzione
  • X: Esecuzione solo se il file è una directory o ha il permesso di esecuzione già impostato per almeno una categoria.
  • s: Imposta il bit SetUID o SetGID.
  • t: Imposta il bit Sticky.

Esempio: chmod u+x,g-w file.txt

  • Aggiunge il permesso di esecuzione all'utente proprietario.
  • Rimuove il permesso di scrittura al gruppo.

Opzioni Comuni:

  • -R, --recursive: Applica i cambiamenti ricorsivamente a tutte le directory e i file all'interno di una directory. Esempio: chmod -R 777 cartella
  • -v, --verbose: Mostra un output dettagliato di ogni file processato.
  • --reference=RFILE: Usa i permessi di RFILE come riferimento per impostare i permessi del file target.

Esempi Comuni:

  • Rendere un file eseguibile per tutti: chmod a+x file.sh
  • Impostare i permessi a 777 (lettura, scrittura ed esecuzione per tutti): chmod 777 file.txt (Sconsigliato per la sicurezza a meno che non sia strettamente necessario)
  • Rimuovere il permesso di scrittura per gli altri: chmod o-w file.txt
  • Impostare i permessi di una directory a 755 e tutti i file al suo interno a 644: (Soluzione più complessa che necessiterebbe di find combinato con chmod per differenziare directory e file, non direttamente fattibile con un singolo comando chmod ma più come una sequenza di comandi).

Considerazioni sulla Sicurezza:

Un uso improprio di chmod può compromettere la sicurezza del sistema. Ad esempio, impostare i permessi a 777 su file sensibili li rende accessibili e modificabili da chiunque. Prestare particolare attenzione quando si usano le opzioni -R e quando si modificano i permessi di directory di sistema. Comprendere i bit SetUID e SetGID e il bit Sticky è cruciale per configurare i permessi di sicurezza avanzati.