Introduzione
Se si utilizza Linux come sistema operativo principale o si gestiscono server Linux, si verificherà una situazione quando si tenta di creare o modificare un file e si riceve un errore "Permission deny". In genere, gli errori relativi a autorizzazioni insufficienti possono essere risolti impostando le autorizzazioni o la proprietà dei file corrette.
Linux è un sistema multiutente e l'accesso ai file è controllato attraverso le autorizzazioni, gli attributi e la proprietà dei file. Ciò garantisce che solo utenti e processi autorizzati possano accedere a file e directory.
Per ulteriori informazioni sulle autorizzazioni dei file, vedere Comando Umask su Linux.
In questo articolo, spiegheremo come cambiare in modo ricorsivo le autorizzazioni di file e directory.
Comando Chmod ricorsivo
Il comando chmod
consente di modificare le autorizzazioni dei file utilizzando la modalità simbolica o numerica.
Per operare in modo ricorsivo su tutti i file e le directory in una determinata directory, utilizzare il comando chmod
con l'opzione -R
, (--recursive
). La sintassi generale per modificare in modo ricorsivo le autorizzazioni del file è la seguente:
chmod -R MODE DIRECTORY
Ad esempio, per modificare le autorizzazioni a 755
di tutti i file e le sottodirectory della directory /var/www/html
, utilizzare:
chmod -R 755 /var/www/html
La modalità può anche essere specificata usando il metodo simbolico:
chmod -R u=rwx,go=rx /var/www/html
Solo root, il proprietario del file o l'utente con privilegi sudo
possono modificare le autorizzazioni di un file. Prestare particolare attenzione quando si modificano in modo ricorsivo le autorizzazioni dei file.
Comando find
In generale, i file e le directory non dovrebbero avere le stesse autorizzazioni. La maggior parte dei file non richiede l'autorizzazione di esecuzione, mentre è necessario impostare le autorizzazioni di esecuzione sulle directory per poterle modificare.
Lo scenario più comune è modificare in modo ricorsivo le autorizzazioni del file di un sito web a 644
e le autorizzazioni delle cartelle a 755
.
Utilizzando il metodo numerico:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Utilizzando il metodo simbolico:
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/html -type f -exec chmod u=rw,go=r {} \;
Il find
comando cerca i file o le directory in /var/www/html
e passa ogni file o directory trovato al comando chmod
per impostare le autorizzazioni.
Quando si utilizza find
con -exec
, il comando chmod
viene eseguito per ogni voce trovata. Utilizzare il comando xargs
per velocizzare l'operazione passando più voci contemporaneamente:
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
Conclusione
Il comando chmod
con l'opzione -R
consente di modificare in modo ricorsivo le autorizzazioni del file.
Per impostare in modo ricorsivo le autorizzazioni dei file in base al loro tipo, utilizzare chmod
in combinazione con il comando find
.