Stai cercando di risolvere un problema di autorizzazione con il tuo server web e hai trovato informazioni su Internet, dicendo che devi chmod 777
ricorsivamente la directory web. Prima di farlo, assicurati di aver compreso cosa significa chmod -R 777
do e perché non dovresti mai impostare le autorizzazioni su 777.
Questo articolo spiega il modello di autorizzazioni di base di Linux e il significato dei numeri corrispondenti alle autorizzazioni.
Capire i permessi dei file Linux #
In Linux, l'accesso ai file è controllato dal sistema operativo utilizzando le autorizzazioni, gli attributi e la proprietà dei file. La comprensione del modello di autorizzazioni del file system Linux ti consente di limitare l'accesso a file e directory solo a utenti e processi autorizzati e rendere il tuo sistema più sicuro.
Ogni file è di proprietà di un particolare utente e di un gruppo e gli vengono assegnati diritti di accesso autorizzati per tre diverse classi di utenti:
- Il proprietario del file.
- I membri del gruppo.
- Altri (tutti gli altri).
Esistono tre tipi di autorizzazioni per i file che si applicano a ciascuna classe utente e consentono di specificare a quali utenti è consentito 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.
- È possibile visualizzare i contenuti della directory. L'utente può elencare i file all'interno della directory con
ls
comando.
- Il permesso di scrittura.
- 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...ecc.
- Il permesso di esecuzione.
- Il file può essere eseguito.
- La directory può essere inserita utilizzando il
cd
comando.
I permessi dei file possono essere visualizzati usando ls
comando. Ecco un esempio:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 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 file normale (-
), directory (d
), un collegamento simbolico(l
), o qualsiasi altro tipo speciale di file.
I successivi nove caratteri rappresentano i permessi del file, tre triplette di tre caratteri ciascuna. La prima tripletta mostra le autorizzazioni del proprietario, la seconda le autorizzazioni di gruppo e l'ultima tripletta mostra le autorizzazioni di tutti gli altri.
Numero di autorizzazione #
Il permesso del file può essere rappresentato 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, comprese tra 0 e 7.
Quando viene utilizzato un numero di 3 cifre, la prima cifra rappresenta i permessi 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
(scrivere) =2x
(esegui) =1- nessuna autorizzazione =0
La cifra delle autorizzazioni di una specifica classe utente è la somma dei valori delle autorizzazioni per quella classe.
Ciascuna cifra del numero di autorizzazione può essere una somma di 4, 2, 1 e 0:
- 0 (0+0+0) – Nessuna autorizzazione.
- 1 (0+0+1) – Esegui solo l'autorizzazione.
- 2 (0+2+0) – Solo permessi di scrittura.
- 3 (0+2+1) – Scrivi ed esegui autorizzazioni.
- 4 (4+0+0) – Solo permessi di lettura.
- 5 (4+0+1) – Permesso di lettura ed esecuzione.
- 6 (4+2+0) – Permessi di lettura e scrittura.
- 7 (4+2+1) – Permesso di lettura, scrittura ed esecuzione.
Ad esempio, se il numero di autorizzazione è impostato su 750 significa che il proprietario del file ha l'autorizzazione di lettura, scrittura ed esecuzione, il gruppo del file ha le autorizzazioni di lettura ed esecuzione e gli altri utenti non hanno autorizzazioni:
- Proprietario:rwx=4+2+1=7
- Gruppo:r-x=4+0+1=5
- Altri:r-x=0+0+0=0
Quando viene utilizzato il numero a 4 cifre, la prima cifra ha il seguente significato:
- setuid=4
- setgid=2
- appiccicoso=1
- nessuna modifica =0
Le tre cifre successive hanno lo stesso significato di quando si utilizza un numero a 3 cifre. Se la prima cifra è 0 può essere omessa e la modalità può essere rappresentata con 3 cifre. La modalità numerica 0755
è lo stesso di 755
.
Per visualizzare i permessi del file nella notazione numerica (ottale), usa il stat
comando:
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 rappresentare un enorme rischio per la sicurezza.
Ad esempio, se modifichi ricorsivamente i permessi di tutti i file e le sottodirectory in /var/www
directory in 777
, qualsiasi utente del sistema sarà in grado di creare, eliminare o modificare i file in quella directory.
Se riscontri problemi di autorizzazione con il tuo server web, invece di impostare ricorsivamente l'autorizzazione su 777
, cambia la proprietà del file in base all'utente che esegue l'applicazione e imposta le autorizzazioni del file su 644
e le autorizzazioni della directory per 755
.
La proprietà del file può essere modificata utilizzando il chown
comando e permessi con il chmod
comando.
Supponiamo che tu abbia un'applicazione PHP sul tuo server in esecuzione come utente "linuxize". Per impostare le autorizzazioni corrette eseguiresti:
chown -R linuxize: /var/www
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
Solo il root, il proprietario del file o l'utente con privilegi sudo possono modificare le autorizzazioni di un file. Fai molta attenzione quando usi chmod
, soprattutto quando si modificano ricorsivamente le autorizzazioni.
Conclusione #
Se gestisci un sistema Linux, è fondamentale sapere come funzionano i permessi di Linux.
Non dovresti mai impostare 777 (rwxrwxrwx
) autorizzazioni file e directory autorizzazioni. 777 significa che chiunque può fare qualsiasi cosa con quei file.
Sentiti libero di lasciare un commento in caso di domande.