Panoramica sui permessi dei File in LINUX

Introduzione

I permessi dei file in Linux sono una parte cruciale della sicurezza e della gestione del sistema operativo. Comprendere come funzionano i permessi ti consente di proteggere il tuo sistema da accessi non autorizzati, nonché di configurare correttamente l'accesso ai file e alle directory.

Struttura dei Permessi in Linux

In Linux, i permessi dei file sono definiti in base a tre categorie di utenti e a tre tipi di permessi. La struttura dei permessi di un file o di una directory può essere visualizzata utilizzando il comando ls -l, che restituisce una stringa simile a questa:

Bash output
$ ls -la test.txt 
-rw-r--r-- 1 blackdog users 0 Sep 17 17:11 test.txt

La porzione di testo relativa ai permessi è composta da:

  • Il tipo di file (il primo carattere):
    • - indica che si tratta di un file regolare.
    • d indica che si tratta di una directory.
    • l indica che si tratta di un collegamento simbolico (link).
    • c e b indicano rispettivamente che si tratta di un file di dispositivo a caratteri (char) e a blocchi (block).
    • p indica che si tratta di una pipe nominata.
    • s indica che si tratta di un socket.
  • I permessi per il proprietario (user): i primi tre caratteri dopo il tipo di file.
    • r per leggere (read).
    • w per scrivere (write).
    • x per eseguire (execute).
  • I permessi per il gruppo (group): i tre caratteri successivi.
    • Anche qui valgono r, w, e x.
  • I permessi per gli altri utenti (others): gli ultimi tre caratteri.
    • Anche qui valgono r, w, e x.
Binaria Ottale Autorizzazioni Rappresentazione
000 0 Nessun Permesso ---
001 1 Esecuzione --x
010 2 Scrittura -w-
011 3 Scrittura + Esecuzione -wx
100 4 Lettura r--
101 5 Lettura + Esecuzione r-x
110 6 Lettura + Scrittura rw-
111 7 Lettura + Scrittura + Esecuzione rwx

Nel nostro esempio relativo al file test.txt abbiamo -rwxr-xr--, la lettura si presenta così:

  • Il file è regolare (-).
  • Il proprietario del file ha tutti i permessi: leggere, scrivere ed eseguire (rwx).
  • Il gruppo di apaprtenenza può solo leggere ed eseguire (r-x).
  • Gli altri utenti possono solo leggere il file (r--).

Cambiare i Permessi dei File

Per modificare i permessi di un file, puoi utilizzare il comando chmod seguito dalla specifica dei permessi in forma numerica o simbolica. Ad esempio:

Tipo Utente Gruppo Altri
- r w x r w - r - x
- 1 1 1 1 1 0 1 0 1
- 7 6 5
  • Numerico: Ogni tipo di permesso (lettura, scrittura, esecuzione) è rappresentato da un valore:
    • r = 4
    • w = 2
    • x = 1

Combinando questi valori, è possibile definire i permessi per ciascun tipo di utente. Per esempio:

Bash output
$ chmod 755 file.txt

Questo assegna i permessi rwx (7) per il proprietario, r-x (5) per il gruppo e r-x (5) per gli altri.

  • Simbolico: Si può usare anche la modalità simbolica per cambiare i permessi, ad esempio:
chmod u+x file.txt

Questo comando aggiunge il permesso di esecuzione (+x) al proprietario (u).

Tipologie di File in Linux

In un sistema Linux, i file possono appartenere a varie tipologie. Oltre ai file regolari (testo, binari, ecc.), esistono altre tipologie importanti di file:

  1. File Regolari (-): Sono i file di uso comune, come documenti di testo, file binari, immagini, ecc.

  2. Directory (d): Una directory è semplicemente una cartella che contiene altri file e directory. Per una directory, i permessi sono leggermente diversi:

    • r: Permette di leggere il contenuto della directory (ovvero vedere i nomi dei file al suo interno).
    • w: Permette di creare, eliminare o rinominare i file all'interno della directory.
    • x: Permette di accedere alla directory e ai suoi file (necessario per entrare nella directory).
  3. Link Simbolici (l): Un link simbolico è un puntatore a un altro file o directory. Quando accedi a un link simbolico, il sistema segue il puntatore e accede al file o alla directory di destinazione.
  4. File di Dispositivo a Caratteri (c): Questi file rappresentano dispositivi hardware, come tastiere, stampanti o terminali, che scambiano dati un carattere alla volta.
  5. File di Dispositivo a Blocchi (b): Simile ai file a caratteri, ma in questo caso i dati vengono scambiati in blocchi, come nel caso di dischi rigidi o unità a stato solido.
  6. Pipe Nominata (p): Utilizzata per la comunicazione tra processi. Una pipe nominata consente a due processi di scambiarsi dati attraverso un file speciale.
  7. Socket (s): Simile a una pipe, ma più sofisticato, consente la comunicazione tra processi, spesso usato per la comunicazione di rete.

Proprietà di un File: Proprietario e Gruppo

Ogni file in Linux ha un proprietario (owner) e un gruppo associato (group). Questo consente di limitare l’accesso a file e directory a specifici utenti o gruppi di utenti.

  • Proprietario: L'utente che ha creato il file è il proprietario per impostazione predefinita. I permessi del proprietario sono quelli che influenzano solo questo utente.
  • Gruppo: Ogni file è associato a un gruppo, e tutti gli utenti appartenenti a quel gruppo possono avere permessi specifici su quel file.

Per modificare il proprietario o il gruppo di un file, si utilizzano rispettivamente i comandi chown e chgrp.

Ad esempio:

Bash output
$ chown nuovo_proprietario file.txt
$ chgrp nuovo_gruppo file.txt

oppure:

Bash output
$ chown nuovo_proprietario:nuovo_gruppo file.txt

Permessi Speciali: SUID, SGID, Sticky Bit

Oltre ai permessi di base, esistono alcuni permessi speciali che forniscono un controllo aggiuntivo:

  • SUID (Set User ID): Se impostato su un file eseguibile, il programma verrà eseguito con i permessi del proprietario del file, non dell'utente che lo esegue. È utile per programmi che devono temporaneamente elevare i permessi.
  • SGID (Set Group ID): Quando applicato a una directory, tutti i file creati al suo interno avranno lo stesso gruppo della directory, indipendentemente dall'utente che li crea.
  • Sticky Bit: Quando applicato a una directory, solo il proprietario del file o della directory (o l'amministratore) può rinominare o eliminare i file in essa contenuti, anche se altri utenti hanno permessi di scrittura. Questo è comune nelle directory condivise come /tmp.

Conclusione

I permessi dei file in Linux forniscono un controllo fine e dettagliato su chi può accedere, modificare o eseguire i file. Saperli gestire è essenziale per garantire la sicurezza e la funzionalità di un sistema Linux. Familiarizzando con i comandi chmod, chown e chgrp, e comprendendo i permessi speciali come SUID e SGID, potrai configurare un sistema sicuro e gestibile per tutti gli utenti.