Introduzione
Se stai tentando di risolvere un problema di autorizzazione con il tuo Server Web, prima di modificare ricorsivamente i permessi a chmod 777
della directory web assicurati di capire cosa fa chmod -R 777
e perché non dovresti mai impostare le autorizzazioni su 777.
Questo articolo spiega il modello di base delle autorizzazioni Linux e il significato dei numeri corrispondenti alle autorizzazioni.
Comprensione dei permessi dei file Linux
In Linux, l'accesso ai file è controllato dal sistema operativo mediante autorizzazioni, attributi e proprietà dei file. La comprensione del modello delle autorizzazioni del file system Linux consente di limitare l'accesso a file e directory solo agli utenti e ai processi autorizzati e rendere il sistema più sicuro.
Ogni file è di proprietà di un determinato utente e un gruppo e assegnato con diritti di accesso di autorizzazione per tre diverse classi di utenti:
- Il proprietario del file.
- I membri del gruppo.
- Altri (tutti gli altri).
Esistono tre tipi di autorizzazioni di file che si applicano a ciascuna classe utente e consentono di specificare quali utenti sono autorizzati a leggere il file, scrivere sul file o eseguire il file. Gli stessi attributi di autorizzazione si applicano sia ai file che alle directory con un significato diverso:
- Il permesso di lettura.
- Il file è leggibile. Ad esempio, quando è impostata l'autorizzazione di lettura, l'utente può aprire il file in un editor di testo.
- I contenuti della directory possono essere visualizzati. L'utente può elencare i file all'interno della directory con il comando
ls
. - Il permesso di scrivere.
- Il file può essere cambiato o modificato.
- Il contenuto della directory può essere modificato. L'utente può creare nuovi file, eliminare file esistenti, spostare file, rinominare file ..etc.
- Il permesso di esecuzione.
- Il file può essere eseguito.
- La directory può essere inserita usando il comando
cd
.
Le autorizzazioni per i file possono essere visualizzate utilizzando il comando ls
. Ecco un esempio:
ls -l filename.txt
-rw-r--r-- 12 noviello users 11.0K Apr 7 20:51 filename.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
Il primo carattere mostra il tipo di file. Può essere un normale file (-
), directory (d
), un collegamento simbolico (l
) o qualsiasi altro tipo speciale di file.
I successivi nove caratteri rappresentano le autorizzazioni del file, tre terzine di tre caratteri ciascuna. La prima terzina mostra le autorizzazioni del proprietario, le seconde autorizzazioni di un gruppo e l'ultima terzina mostra le autorizzazioni di tutti gli altri.
Numero di autorizzazione
L'autorizzazione del file può essere rappresentata in un formato numerico o simbolico. In questo articolo, ci concentreremo sul formato numerico.
Il numero di autorizzazione può essere composto da tre o quattro cifre, che vanno da 0 a 7.
Quando si utilizza un numero di 3 cifre, la prima cifra rappresenta le autorizzazioni del proprietario del file, la seconda il gruppo del file e l'ultima tutti gli altri utenti.
Le autorizzazioni di scrittura, lettura ed esecuzione hanno il seguente valore numerico:
r
(leggi) = 4w
(scrivi) = 2x
(esegui) = 1- nessuna autorizzazione = 0
La cifra delle autorizzazioni di una specifica classe utente è la somma dei valori delle autorizzazioni per quella classe.
Ogni cifra del numero di autorizzazioni può essere una somma di 4, 2, 1 e 0:
- 0 (0 + 0 + 0) - Nessuna autorizzazione.
- 1 (0 + 0 + 1) - Esegue solo l'autorizzazione.
- 2 (0 + 2 + 0) - Solo permesso di scrittura.
- 3 (0 + 2 + 1) - Scrive ed esegue le autorizzazioni.
- 4 (4 + 0 + 0) - Solo permesso di lettura.
- 5 (4 + 0 + 1) - Lettura ed esecuzione dell'autorizzazione.
- 6 (4 + 2 + 0) - Autorizzazioni di lettura e scrittura.
- 7 (4 + 2 + 1) - Lettura, scrittura ed esecuzione dell'autorizzazione.
Ad esempio, se il numero di autorizzazione è impostato su 750 significa che il proprietario del file ha le autorizzazioni di lettura, scrittura ed esecuzione, il gruppo di file ha autorizzazioni di lettura ed esecuzione e altri utenti non hanno autorizzazioni:
- Proprietario:
rwx
= 4 + 2 + 1 = 7 - Gruppo:
rx
= 4 + 0 + 1 = 5 - Altri:
rx
= 0 + 0 + 0 = 0
Quando viene utilizzato il numero di 4 cifre, la prima cifra ha il seguente significato:
- setuid = 4
- setgid = 2
- sticky = 1
- nessuna modifica = 0
Le successive tre cifre hanno lo stesso significato di quando si utilizza un numero di 3 cifre. Se la prima cifra è 0
, può essere omessa e la modalità può essere rappresentata con 3 cifre. La modalità numerica 0755
è la stessa di 755
.
Per visualizzare le autorizzazioni del file nella notazione numerica (ottale), utilizzare il comando stat
:
stat -c "%a" filename
644
Non usare mai chmod 777
L'impostazione delle autorizzazioni 777 su un file o una directory significa che sarà leggibile, scrivibile ed eseguibile da tutti gli utenti e potrebbe comportare un enorme rischio per la sicurezza.
Ad esempio, se si modificano in modo ricorsivo le autorizzazioni di tutti i file e le sottodirectory della directory /var/www
in 777
, qualsiasi utente sul sistema sarà in grado di creare, eliminare o modificare i file in quella directory.
Se si verificano problemi di autorizzazione con il server Web, invece di impostare in modo ricorsivo l'autorizzazione 777
, modificare la proprietà del file per l'utente che esegue l'applicazione e impostare le autorizzazioni del file su 644
e le autorizzazioni della directory su 755
.
La proprietà del file può essere modificata utilizzando il comando chown
e le autorizzazioni con il comando chmod
.
Supponiamo che tu abbia un'applicazione PHP sul tuo server in esecuzione come utente "noviello". Per impostare le autorizzazioni corrette dovresti eseguire:
chown -R noviello: /var/www
Solo root, il proprietario del file o l'utente con privilegi sudo possono modificare le autorizzazioni di un file. Prestare particolare attenzione durante l'utilizzo chmod
, soprattutto quando si modificano in modo ricorsivo le autorizzazioni.
Conclusione
Se gestisci un sistema Linux, è fondamentale sapere come funzionano le autorizzazioni di Linux.
Non si devono mai impostare autorizzazioni rwxrwxrwx
(777
) per file e directory. 777 significa che chiunque può fare qualsiasi cosa con quei file.