Skip to content

Quando si lavora su WordPress in self-hosting auto gestito come Vultr o Digital Ocean, la macchina virtuale viene fornita con i soli accessi SSH per utente root. Una cosa corretta da fare subito è creare gli accessi utente con permessi specifici e dedicati, usare l’utente root per l’ordinaria amministrazione non è una buona pratica.

Usare Ubuntu ed imparare qualche comando da sistemista mi ha aiutato ad impostare e gestire il mio hosting cloud Digital Ocean, dove risiede questo sito ormai da diverso tempo. Ora sono indipendente da piattaforme di hosting condivisi che hanno moltissimi limiti e spesso sono poco performanti. Il bello poi è divertirsi a testare configurazioni al fine di ottenere un web server sempre più veloce e stabile.

Nota: se ti interessa approfondire ho un corso da web master dove ti mostro come configurare, ottimizzare e gestire server LEMP (Linux-Ubuntu + Nginx + MySQL + PHP-FPM).

Con questo post ti mostro come correggere i problemi di autorizzazione quando si utilizzano utenti SFTP con Nginx e PHP-FPM 7.0.

Crea un nuovo utente SFTP

Crea un nuovo ftpuser con assegnata la cartella /var/www:
sudo useradd -d /var/www/ ftpuser
Imposta la password per ftpuser. Attento, quando ti viene richiesta la password non vedrai i caratteri mentre scrivi!
sudo passwd ftpuser


I file non sono scrivibili da tutti gli utenti, sono limitati al proprietario dei file. Il web server deve essere eseguito con un utente specifico. Quell’utente deve esistere. Se fosse eseguito in root, tutti i file dovrebbero essere accessibili da root e l’utente dovrebbe essere root per accedere ai file. Essendo il proprietario root, un web server compromesso avrebbe accesso all’intero sistema. Assegnando un user specifico, un web server compromesso avrà solo pieno accesso ai suoi file e non all’intero server.

Di default su Ubuntu con Nginx o Apache la proprietà dei file è assegnata all’user www-data. Poiché si tratta della configurazione predefinita, è possibile conoscere in modo appropriato la proprietà necessaria per i propri file Web. Se cambi user, dovresti cambiare i file nel tuo sito per farlo combaciare.

Aggiungi ftpuser al www-data group:
sudo usermod -aG www-data ftpuser
Il tuo nuovo utente ftp è ora membro del gruppo giusto e ha la cartella home corretta.

Cambia utente Nginx

Apri la tua configurazione di Nginx:
sudo nano /etc/nginx/nginx.conf

Cambia il valore dell’utente sul tuo ftpuser:
user ftpuser;
worker_processes auto;
pid /run/nginx.pid;

Verifica che la sintassi della nuova configurazione Nginx sia corretta:
sudo Nginx -t

Dovresti ricevere questi messaggi di conferma:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ora Nginx verrà eseguito come utente ftp.

Cambia utente PHP-FPM

Apri la tua configurazione PHP-FPM:
sudo nano /etc/php/7.0/fpm/pool.d/www.conf

Cambia il valore dell’utente ftpuser:
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = ftpuser
group = www-data

Verifica la sintassi della nuova configurazione PHP-FPM:
sudo php-fpm7.0 -t
Dovresti vedere questo messaggio di successo:
[12-Jun-2018 01:02:21] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful
Ora PHP-FPM è configurato per funzionare come ftpuser.

Correggere i permessi FTP

Cambia in modo ricorsivo le autorizzazioni per la cartella principale di ftpuser:
sudo chown -R ftpuser:www-data /var/www
In alternativa usa
sudo chown -R www-data:www-data /var/www
Imposta il permesso 775 per le cartelle in modo che il gruppo ftpuser e www-data possano eseguire i file nelle cartelle:
sudo find /var/www/ -type d -exec chmod 775 {} +
Imposta il permesso 664 per i file in modo che il gruppo ftpuser e www-data possano modificarli:
sudo find /var/www/ -type f -exec chmod 664 {} +
Cambia i permessi per la cartella /var/lib/nginx:
sudo chown -R ftpuser:www-data /var/lib/nginx
Modifica anche le autorizzazioni della cartella dei log:
sudo chown -R ftpuser:www-data /var/log/nginx
Modifica le autorizzazioni delle sessioni PHP:
sudo chown -R ftpuser:www-data /var/lib/php/sessions

Imposta il permesso 775 per le cartelle in modo che il gruppo ftpuser e www-data possano eseguire i file nelle cartelle:
sudo find /var/www/ -type d -exec chmod 775 {} +
Imposta il permesso 664 per i file in modo che il gruppo ftpuser e www-data possano modificarli:
sudo find /var/www/ -type f -exec chmod 664 {} +
Cambia i permessi per la cartella /var/lib/nginx:
sudo chown -R ftpuser:www-data /var/lib/nginx
Modifica anche le autorizzazioni della cartella dei log:
sudo chown -R ftpuser:www-data /var/log/nginx
Modifica le autorizzazioni delle sessioni PHP:
sudo chown -R ftpuser:www-data /var/lib/php/sessions

Per quanto riguarda i permessi è tutto, non dovrebbe servirti altro.

Finalizzare

Ora i servizi e web server devono essere riavviati. Digita nella SHELL:
sudo service php7.0-fpm restart
sudo service nginx restart
A questo punto dovresti essere in grado di caricare file via SFTP senza problemi di autorizzazione.
Se hai ancora problemi con WordPress ed FTP, prova ad aggiungerle queste righe al tuo file wp-config.php:
// permission fixes define( 'FS_METHOD', 'direct' ); define( 'FS_CHMOD_DIR', ( 0775 & ~ umask() ) ); define( 'FS_CHMOD_FILE', ( 0664 & ~ umask() ) );

Articoli correlati

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’esperienza di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1146 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Richiedi un preventivo ora e scopri la differenza tra noi e gli altri.
Richiedi un preventivo

Vuoi ricevere un avviso al mese con le nuove guide pubblicate?

Iscriviti alla newsletter!

Informativa sui cookies

Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per le finalità di esperienza e misurazione come specificato nella cookie policy. Puoi liberamente prestare, rifiutare o revocare il tuo consenso, in qualsiasi momento, accedendo al pannello delle preferenze. Il rifiuto del consenso può rendere non disponibili le relative funzioni. Usa il pulsante “Accetta” per acconsentire. Usa il pulsante “Rifiuta” per continuare senza accettare.