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.
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:
$ 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:
-
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.r
per leggere (read
).w
per scrivere (write
).x
per eseguire (execute
).r
, w
, e x
.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ì:
-
).rwx
).r-x
).r--
).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 |
r
= 4w
= 2x
= 1Combinando questi valori, è possibile definire i permessi per ciascun tipo di utente. Per esempio:
$ 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.
chmod u+x file.txt
Questo comando aggiunge il permesso di esecuzione (+x
) al proprietario (u
).
In un sistema Linux, i file possono appartenere a varie tipologie. Oltre ai file regolari (testo, binari, ecc.), esistono altre tipologie importanti di file:
-
): Sono i file di uso comune, come documenti di testo, file binari, immagini, ecc.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).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.c
): Questi file rappresentano dispositivi hardware, come tastiere, stampanti o terminali, che scambiano dati un carattere alla volta.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.p
): Utilizzata per la comunicazione tra processi. Una pipe nominata consente a due processi di scambiarsi dati attraverso un file speciale.s
): Simile a una pipe, ma più sofisticato, consente la comunicazione tra processi, spesso usato per la comunicazione di rete.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.
Per modificare il proprietario o il gruppo di un file, si utilizzano rispettivamente i comandi chown
e chgrp
.
Ad esempio:
$ chown nuovo_proprietario file.txt
$ chgrp nuovo_gruppo file.txt
oppure:
$ chown nuovo_proprietario:nuovo_gruppo file.txt
Oltre ai permessi di base, esistono alcuni permessi speciali che forniscono un controllo aggiuntivo:
/tmp
.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.