Articles

WordPress Permissions – How To Set Up Proper Filesystems And Ownerships

  • 12 min read
  • WordPress,Server,Sicurezza,Tecniche (WP)
  • Salvato per lettura offline
  • Condividi su Twitter, LinkedIn
Quando si parla di sicurezza di WordPress, i permessi e la proprietà dei file sono di solito l’ultima cosa a cui pensare. L’installazione di plugin di sicurezza è una buona pratica e un must per ogni sito WordPress. Tuttavia, se i permessi del vostro file system non sono impostati correttamente, la maggior parte delle vostre misure di sicurezza potrebbero essere facilmente aggirate dagli intrusi.

Quando si parla di sicurezza di WordPress, i permessi e la proprietà dei file sono di solito l’ultima cosa a cui pensare. L’installazione di plugin di sicurezza è una buona pratica e un must per ogni sito web WordPress. Tuttavia, se i permessi del vostro file system non sono impostati correttamente, la maggior parte delle vostre misure di sicurezza potrebbero essere facilmente aggirate da intrusi.

wordpress permissions

I permessi e la proprietà sono piuttosto importanti nelle installazioni di WordPress. Impostarle correttamente sul tuo server web dovrebbe essere la prima cosa che fai dopo aver installato WordPress. Avere un set sbagliato di permessi potrebbe causare errori fatali che fermano il tuo sito web. I permessi sbagliati possono anche compromettere il vostro sito web e renderlo soggetto ad attacchi.

Ulteriori letture su SmashingMag:

  • Cosa fare quando il tuo sito web va giù
  • Come mantenere organizzato il tuo flusso di lavoro di codifica
  • Come scoprire perché il tuo sito web ha smesso di funzionare
  • 9 passi per una relazione felice con il tuo fornitore di hosting

A parte i problemi di sicurezza, una serie di altri problemi possono derivare dall’avere un set sbagliato di permessi e proprietà. Avete mai incontrato una schermata bianca vuota quando cercate di caricare il vostro sito web per la prima volta? O avete mai ricevuto messaggi di errore quando cercavate di caricare immagini nel media uploader? Correggere i permessi e la proprietà dei vostri file e cartelle spesso risolve questi tipi di problemi.

In questo articolo, vi insegneremo tutto sui permessi e la proprietà del filesystem di WordPress: cosa sono, perché sono importanti e come impostarli. Imparerete alcuni principi di base che seguo per mantenere il mio file system intatto. Tratteremo anche le due configurazioni di server WordPress più comuni. Spiegheremo come differiscono e, cosa più importante, come impostare i permessi e la proprietà adeguati per ciascuno.

Terminale Vs. Client FTP

Nel corso di questo articolo, useremo il terminale per cambiare permessi e proprietà. Perché non usare invece un client FTP? Il motivo è che FTP è un po’ limitato per le nostre esigenze. FTP può essere usato per trasferire file e cambiare i permessi di file e cartelle, ma non può essere usato per cambiare le impostazioni di proprietà.

Per eseguire i comandi elencati in questo articolo, dovrai essere connesso al tuo server usando il comando SSH. Se non hai familiarità con il terminale e SSH, puoi impararli nell’articolo “Introduzione ai comandi Linux.”

Utenti e gruppi

Prima di tutto, dobbiamo parlare velocemente di cosa sono gli utenti e i gruppi, perché questi vanno di pari passo quando si definiscono i permessi.

Per dirla semplicemente, un utente è un account che ha accesso al computer, e un gruppo è solo un identificatore per un certo insieme di utenti. Questo significa che ogni volta che trasferite dei file usando l’FTP, state usando un account utente sul vostro server. E a seconda di come il tuo host ha impostato il tuo account, tu (l’utente) potresti appartenere a uno o più gruppi. Utenti e gruppi sono come utenti e ruoli in WordPress. Entrambi sono concettualmente gli stessi, tranne che il primo è usato sul tuo server.

Utenti e gruppi sono importanti perché aiutano a identificare i privilegi per tutti i nostri file e cartelle. I proprietari di un file normalmente avrebbero privilegi completi su di esso; altri utenti che appartengono allo stesso gruppo avrebbero meno privilegi su di esso; mentre tutti gli altri potrebbero non avere privilegi su di esso. Questi privilegi sono ciò che chiamiamo permessi.

Che cosa sono i permessi dei file?

I permessi stabiliscono cosa gli utenti possono fare con un file. Un permesso è rappresentato da un insieme di numeri, come 644 o 777, indicato come un modo di permesso. Se avete usato dei plugin in WordPress in passato, allora molto probabilmente vi è stato chiesto da alcuni di essi di cambiare i permessi di un file o di una directory perché il plugin non può scriverci. Cambiando i permessi del file, state permettendo al server web di accedere a quel file o cartella.

Pensate a una modalità di autorizzazione come a un insieme di dichiarazioni “chi può fare cosa”, in cui ogni cifra corrisponde alla parte “chi” della dichiarazione:

  • Prima cifra. Cosa può fare l’utente dell’account proprietario del file
  • Seconda cifra. Cosa possono fare gli altri account utente del gruppo del proprietario
  • Terza cifra. Cosa possono fare gli account utente di tutti gli altri (inclusi i visitatori del sito)

Poi, il numero corrisponde alla parte “cosa” della dichiarazione ed è una somma di una combinazione di qualsiasi di queste cifre:

  • 4 Leggere un file, o leggere i nomi dei file in una cartella
  • 2 Scrivere o modificare un file, o modificare il contenuto di una cartella
  • 1 Eseguire o eseguire un file, o accedere ai file in una cartella

Queste cifre sono i privilegi che vengono assegnati al “chi” nella modalità di autorizzazione. Notate nella lista qui sopra che i privilegi hanno un significato diverso per i file e le cartelle.

Utilizzare la modalità di autorizzazione corretta è abbastanza importante. Per illustrare meglio questo, pensate di nuovo agli utenti e ai ruoli in WordPress. Su un sito WordPress, i collaboratori e gli amministratori hanno diversi set di capacità. I collaboratori possono creare nuovi post sul blog, ma non possono aggiungere plugin. Gli amministratori, d’altra parte, possono aggiungere plugin e anche creare post sul blog. Gli amministratori possono anche cambiare l’aspetto del sito web, se vogliono. Una linea chiara separa ciò che gli utenti nei diversi ruoli possono fare. Questo è lo stesso con le modalità di autorizzazione, tranne che invece di avere a che fare con i post del blog e le opzioni del tema, abbiamo a che fare con file e cartelle sul server.

Changing Permission Modes

I clientFTP di solito forniscono un’interfaccia dove è possibile cambiare comodamente la modalità di autorizzazione dei file e delle cartelle. Ecco uno screenshot dell’interfaccia del mio client FTP:

Example of a permission mode interface.
Esempio di un’interfaccia di modalità di autorizzazione.

Se hai accesso al terminale del tuo server, puoi anche usare il comando chmod per cambiare la modalità di autorizzazione di un file o cartella:

sudo chmod 644 <file>

Per cambiare le modalità di autorizzazione di tutti i file o cartelle, usa chmod insieme al comando find. Per esempio, potete usarlo per cambiare tutti i file in 644:

sudo find . -type f -exec chmod 644 {} +

Oppure usatelo per cambiare tutte le vostre cartelle in 755:

sudo find . -type d -exec chmod 755 {} +

Riferitevi a “Changing File Permissions in the WordPress Codex” per una guida alla modifica delle modalità di autorizzazione.

La differenza tra 644 e 777

Guardiamo alcune modalità di autorizzazione e come influenzano il nostro sito web.

Cosa significa uno script PHP con una modalità di autorizzazione di 644? Seguendo la spiegazione precedente di come funzionano le modalità di autorizzazione, possiamo decifrare ciò che questa modalità permette agli utenti di fare con il nostro script:

  • I privilegi del proprietario sono “leggere” (4) + “scrivere” (2) = 6
  • I privilegi del gruppo del proprietario sono “leggere” (4) = 4
  • I privilegi di tutti gli altri sono “leggere” (4) = 4

In linguaggio semplice, questo significa che:

  • se possediamo lo script, possiamo leggerlo e modificarlo;
  • tutti gli altri possono solo leggerlo.

Come possiamo vedere, 644 è una buona modalità di autorizzazione per il nostro script PHP. Possiamo apportarvi delle modifiche e il nostro server web può leggerlo.

Ora guardiamo le cartelle. Cosa succederebbe se possedessimo una cartella che ha una modalità di autorizzazione di 777? Questa modalità di autorizzazione può essere suddivisa come segue:

  • I privilegi del proprietario sono “leggere” (4) + “scrivere” (2) + “eseguire” (1) = 7
  • I privilegi del gruppo del proprietario sono “leggere” (4) + “scrivere” (2) + “eseguire” (1) = 7
  • I privilegi di tutti gli altri sono “leggere” (4) + “scrivere” (2) + “eseguire” (1) = 7

Questo significa che

  • chiunque può ottenere una lista di nomi di file nella nostra cartella;
  • chiunque può creare, modificare e cancellare qualsiasi file nella nostra cartella;
  • chiunque può accedere ai file nella nostra cartella.

E’ ovvio che 777 è una cattiva modalità di autorizzazione per qualsiasi cosa sul nostro sito WordPress perché qualsiasi visitatore sarebbe in grado di aggiungere file alla nostra cartella o anche di cancellare gli script. Peggio ancora, chiunque sarebbe in grado di inserire codice dannoso e compromettere il nostro sito web.

Configurazioni server WordPress

Ora sappiamo dei permessi e come leggerli. Ma prima di procedere alla modifica di tutti i nostri permessi, dobbiamo capire come è configurato il nostro server. Poiché i permessi hanno a che fare con gli account utente e i gruppi, dobbiamo sapere come funziona il nostro sito WordPress.

Ci sono molte configurazioni di server diverse. Le diverse configurazioni hanno bisogno di diversi set di modalità di autorizzazione per WordPress per funzionare correttamente e in modo sicuro. Parleremo solo delle due configurazioni più comuni e dei permessi appropriati per esse:

  • Configurazione server standard:
    • Hai un account utente.
    • Il tuo server web funziona come un altro account utente.
  • Configurazione server condivisa o suEXEC configurazione:
    • Hai un account utente.
    • Altre persone che usano il server hanno account utente e potrebbero condividere lo stesso gruppo con il tuo account utente.
    • Il tuo server web funziona come proprietario dei tuoi file WordPress.

La differenza principale tra questi due è nel modo in cui il server Web viene eseguito.

Permissioni per una configurazione standard del server WordPress

Le configurazioni standard di WordPress richiedono un po’ più lavoro rispetto alle configurazioni del server condiviso perché il server Web non ha alcuna relazione con il nostro account utente.

Proprietà di file e cartelle per WordPress

Prima di tutto, dobbiamo regolare le proprietà dei file e delle cartelle dei nostri file WordPress. Dovremo assicurarci di quanto segue:

  • che il tuo account utente sia il proprietario di tutti i file e le cartelle di WordPress,
  • che il tuo account utente e quello del server web appartengano allo stesso gruppo.

Per scoprire i gruppi a cui appartiene il tuo account utente, puoi usare questo comando nel terminale del tuo server:

groups

Poi, per scoprire i gruppi a cui appartiene il tuo server web, puoi inserire temporaneamente questo snippet PHP in uno dei tuoi script WordPress:

echo exec( 'groups' );

Se il vostro utente e il server web non appartengono allo stesso gruppo, potete usare il seguente comando nel terminale per aggiungere il vostro utente a uno dei gruppi del vostro server web:

sudo usermod -a -G <a-common-group-name> myuser

Infine, per assicurarsi che tutto nella nostra cartella WordPress appartenga al nostro account utente e abbia il gruppo condiviso che abbiamo appena aggiunto, eseguite questo comando nella vostra cartella WordPress:

sudo find . -exec chown myuser:a-common-group-name {} +

Permissions for WordPress

Tutti i nostri file e cartelle dovrebbero ora avere la proprietà corretta. Ora è il momento di regolare le modalità di autorizzazione. Per rendere le cose più semplici, avrete solo bisogno di ricordare quanto segue:

  • Tutti i file dovrebbero essere 664.
  • Tutte le cartelle dovrebbero essere 775.
  • wp-config.php dovrebbero essere 660.

Ecco cosa stiamo cercando di ottenere con questo set di modalità di autorizzazione:

  • Il nostro account utente può leggere e modificare i nostri file.
  • WordPress (tramite il nostro server web) può leggere e modificare i nostri script.
  • WordPress può creare, modificare o cancellare file e cartelle.
  • Altre persone non possono vedere le credenziali del nostro database in wp-config.php.

Potreste pensare che permettere a WordPress pieni privilegi con le nostre cartelle non è sicuro. Non preoccupatevi – lo stiamo facendo perché WordPress ha bisogno di certe funzioni per creare e modificare i file. WordPress ci permette di caricare e rimuovere temi e plugin e anche di modificare script e stili dal back-end amministrativo. Senza questo tipo di permesso, dovremmo caricare manualmente temi e plugin ogni volta usando l’FTP.

Puoi usare il tuo client FTP per cambiare le modalità di permesso, oppure puoi usare i seguenti comandi nella tua directory WordPress per regolare rapidamente i permessi di tutti i tuoi file e cartelle:

sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

Nota che alcuni server web sono più rigidi di altri. Se il tuo è severo, allora impostare il tuo wp-config.php a 660 potrebbe impedire al tuo sito di funzionare. In questo caso, basta lasciarlo come 664.

Permissioni per una configurazione di server condivisa o una configurazione SuEXEC

Le autorizzazioni per configurazioni di server condivise sono più facili da implementare. Non ci soffermeremo sulla proprietà perché il server web funziona come proprietario dei nostri file e cartelle. Poiché il nostro account utente e il server web condividono gli stessi permessi (entrambi sono proprietari), possiamo tuffarci subito nella modifica delle modalità di permesso:

  • Tutti i file dovrebbero essere 644.
  • Tutte le cartelle dovrebbero essere 755.
  • wp-config.php dovrebbero essere 600.

Simile alla precedente serie di modalità di autorizzazione, queste si suddividono come segue:

  • Il nostro account utente può leggere e modificare i nostri file.
  • WordPress (tramite il nostro server Web e come proprietario dell’account) può leggere e modificare i nostri script.
  • WordPress può creare, modificare o cancellare file o cartelle.
  • Altre persone non possono vedere le credenziali del nostro database in wp-config.php.

Anche in questo caso, è possibile utilizzare un client FTP per modificare le modalità di autorizzazione, oppure è possibile utilizzare i seguenti comandi nella directory di WordPress per regolare rapidamente le autorizzazioni di tutti i file e le cartelle:

sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

Similmente alla configurazione standard del server WordPress, il vostro server potrebbe essere più severo di altri e potrebbe non consentire a wp-config.php di essere 600. In questo caso, puoi regolarla ad un più clemente 640; se ancora non funziona, allora usa 644.

Segui sempre queste linee guida e i tuoi file WordPress dovrebbero essere tenuti al sicuro dagli intrusi.

Incapacità comuni

Un errore comune che la gente fa è quello di impostare la cartella uploads su 777. Alcuni lo fanno perché ottengono un errore quando cercano di caricare un’immagine sul loro sito web, e 777 risolve rapidamente questo problema. Ma non date mai accesso illimitato a tutti, altrimenti renderete il server web vulnerabile agli attacchi. Se seguite le linee guida trattate in questo articolo, allora non dovreste avere problemi a caricare i file sul vostro sito web.

A volte, però, un plugin vi chiederà di impostare un file su 777. In queste occasioni, è possibile impostarlo temporaneamente a 777, ma assicuratevi di impostarlo nuovamente nella sua modalità di autorizzazione originale quando avete finito.

Conclusione

Abbiamo imparato ora circa i permessi corretti e la proprietà dei file di un sito WordPress. Abbiamo anche imparato ad evitare una modalità di autorizzazione di 777 a causa di come mette in pericolo il server web.