Impostare correttamente i privilegi delle cartelle in Ubuntu Server

Recentemente ho avuto qualche difficoltà a maneggiare WordPress su un’installazione locale su Ubuntu. Ogni volta che provavo a modificare un file, ricevevo un messaggio di errore dal mio editor (utilizzo sempre Atom) per permessi mancanti. Quindi la prima cosa che facevo era impostare i permessi della cartella in modo tale che potessi scrivere al suo interno. Il problema però persisteva nel momento in cui andavo a installare plugin e temi sul sito, operazione che falliva costantemente dal momento che a causa dei permessi non impostati correttamente, il sistema non riusciva a creare le cartelle dei temi e dei plugin da installare.

Dopo un paio di giorni di ricerche che non hanno dato i suoi frutti, finalmente sono riuscito a trovare una soluzione, che vi riporto qui di seguito.

Innanzitutto, bisogna recarsi nella cartella di Ubuntu in cui è presente la nostra installazione di WordPress. Solitamente /var/www/html/nomecartella, ma io utilizzo una cartella “Progetti” in Documenti:

cd path/to/your/folder/

Una volta nella cartella, bisogna assegnare ricorsivamente la proprietà di wp-content e di tutte le sue sotto-cartelle al gruppo www-data:

sudo chown -R www-data:www-data wp-content/*

A questo punto, cambiate directory e entrate in wp-content e cambiate i permessi di file e cartelle in questo modo:

find . -type d -exec chmod -R 755 {} \; // per le cartelle

find . -type f -exec chmod -R 644 {} \; // per i file

Ora restano altre due cose da fare, che le guide che ho trovato in giro per il web non riportavano nel dettaglio. Per prima cosa, bisogna cambiare la proprietà delle cartelle all’interno di wp-content:

sudo chown -R tuonomeutente:www-data *

Così facendo, si setta la proprietà all’utente e gli si assegna il gruppo www-data. L’ultimo passaggio consiste nel tornare nella cartella wp-content e aggiungere l’utente al gruppo, così che il server possa gestire senza problemi le richieste (ad esempio l’installazione di plugin e temi, o il caricamento e il salvataggio di file, ecc.):

cd .. //torniamo su wp-content

sudo usermod -aG www-data tuonomeutente //aggiungo l'utente al gruppo

groups tuonomeutente //verifico l'appartenenza dell'utente al gruppo, il risultato dovrebbe essere:

tuonomeutente : tuonomeutente ... www-data ... // dove ... sta per tutti gli altri gruppi a cui appartiene

Se volete essere sicuri che tutto funzioni, riavviate apache:

sudo systemctl reload apache2

Fine!