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.