Permessi Ricorsivi Standard (755/644) e SetGID su WordPress: Guida Avanzata

Gestire un server web richiede rigore e metodo. Molti amministratori incontrano problemi con il caricamento dei file multimediali su WordPress.

Gli errori compaiono spesso dopo un aggiornamento o una migrazione. File e cartelle finiscono per avere permessi errati o proprietari differenti.

La gestione corretta dei permessi ricorsivi WordPress protegge il server da intrusioni. Inoltre, garantisce il funzionamento fluido di ogni plugin.

Nel nostro articolo precedente abbiamo analizzato i permessi della cartella uploads su WordPress. Ora facciamo un passo ulteriore verso la configurazione avanzata del sistema.

Perché i permessi 755 e 644 sono lo standard per WordPress

Nei sistemi operativi basati su Linux ogni risorsa possiede permessi specifici. Questi attributi stabiliscono chi può leggere, scrivere o eseguire un file.

WordPress necessita di regole precise per operare in totale sicurezza. Una configurazione errata spalanca le porte a exploit e modifiche non autorizzate.

La notazione numerica ottale spiegata semplice

I permessi Linux utilizzano tre cifre numeriche. La prima cifra controlla il proprietario della risorsa. La seconda cifra definisce i permessi del gruppo. La terza cifra regola l’accesso per tutti gli altri utenti.

I numeri rappresentano la somma di tre privilegi base. Il valore 4 indica la lettura. Il valore 2 indica la scrittura. Il valore 1 indica l’esecuzione.

La combinazione 7 assegna permessi totali (4+2+1). La combinazione 5 permette lettura ed esecuzione (4+1). Il valore 4 consente solo la lettura.

Separazione netta tra file e cartelle

Le cartelle necessitano del permesso di esecuzione per essere aperte e scorse. Per questo motivo le directory richiedono il valore 755.

Con il valore 755 il proprietario scrive, legge ed esplora. Il gruppo e gli altri utenti possono solo leggere ed entrare nella cartella.

I normali file non devono mai essere eseguiti direttamente dal sistema operativo. Per loro il valore corretto è 644.

Con il codice 644 il proprietario modifica il documento. Il resto degli utenti può esclusivamente leggere il contenuto.

Il problema delle nuove sottocartelle e il conflitto di permessi

WordPress crea continuamente nuove cartelle nella directory uploads. Ogni mese genera sottocartelle ordinate per anno e mese.

Quando il server web crea una cartella, applica le sue regole predefinite. Spesso queste regole entrano in conflitto con l’utente SSH o FTP.

Senza una logica solida, i permessi ricorsivi WordPress rischiano di saltare al primo aggiornamento.

Conflitto tipico tra utente web e utente di sistema

Il server web Apache o Nginx opera solitamente tramite l’utente www-data. Quando carichi un file dalla bacheca, www-data crea il documento.

Se carichi file tramite SFTP, utilizzi invece il tuo account di sistema personale. Questo account appartiene a un gruppo diverso da www-data.

Il risultato è una convivenza disordinata di utenti diversi all’interno della stessa cartella. Presto si manifestano errori di scrittura e blocchi nei backup.

Il blocco nei caricamenti multimediali

Quando i permessi falliscono, la libreria media smette di funzionare. Le miniature delle immagini non vengono generate.

I plugin di ottimizzazione delle immagini falliscono il salvataggio dei file WebP. Anche l’aggiornamento automatico dei temi viene interrotto.

Non cedere alla tentazione di assegnare permessi 777. Il codice 777 rappresenta una gravissima vulnerabilità per l’intero server.

Procedura passo-passo per applicare i permessi ricorsivi

Vediamo la procedura corretta per ripristinare i permessi ricorsivi WordPress tramite riga di comando.

Accedi al tuo server tramite terminale SSH con privilegi di root o sudo. Posizionati nella directory principale del tuo sito WordPress.

Passo 1: Assegnare la proprietà corretta a file e cartelle

Prima di modificare i permessi, allinea il proprietario e il gruppo di appartenenza. Assicurati che il web server condivida il gruppo con il tuo utente.

  1. Individua la cartella principale del sito (spesso /var/www/html).
  2. Assegna l’utente e il gruppo www-data a tutti i file con il comando:
    sudo chown -R www-data:www-data /var/www/html
  3. Aggiungi il tuo utente SFTP personale al gruppo www-data:
    sudo usermod -a -G www-data tuo-nome-utente

Passo 2: Correggere le cartelle in modo ricorsivo

Non usare mai chmod -R 755 alla cieca. Questo comando modificherebbe sia le cartelle sia i file, rendendo i file eseguibili.

Utilizza il comando find per selezionare solo le directory:

  • Esegui il comando:
    sudo find /var/www/html -type d -exec chmod 755 {} +
  • Questo comando cerca ogni cartella nel percorso indicato.
  • Applica il permesso 755 esclusivamente alle cartelle individuate.

Passo 3: Correggere i file in modo ricorsivo

Ora applichiamo la regola corretta per tutti i file del progetto.

  • Esegui il comando da terminale:
    sudo find /var/www/html -type f -exec chmod 644 {} +
  • Il parametro -type f intercetta unicamente i file regolari.
  • I file ricevono il permesso 644 in modo sicuro ed efficiente.

Trucco pratico: Se gestisci il file wp-config.php, rendilo ancora più sicuro assegnandogli il permesso 600 o 640. In questo modo bloccherai la lettura del database a utenti esterni.

La soluzione definitiva: impostare il bit SetGID per l’ereditarietà

Il comando find risolve il problema solo per i file esistenti. I nuovi file creati in seguito potrebbero ignorare questa struttura.

Per garantire che ogni nuova sottocartella erediti automaticamente il gruppo, entra in gioco il bit SetGID.

Cos’è il bit SetGID su Linux

Il SetGID (Set Group ID) è un permesso speciale applicabile alle directory. Viene rappresentato dal valore numerico 2 anteposto alla classica terna.

Normalmente, quando un utente crea una cartella, questa appartiene al suo gruppo primario. Con il SetGID attivo, la cartella eredita forzatamente il gruppo della cartella genitore.

Se la cartella principale appartiene al gruppo www-data, ogni nuova cartella generata da WordPress apparterrà sempre a www-data.

Configurazione pratica del SetGID su uploads

La cartella uploads è l’area più dinamica di WordPress. È qui che il SetGID offre il massimo vantaggio operativo.

  1. Consenti la scrittura al gruppo sulla cartella uploads:
    sudo chmod -R 775 /var/www/html/wp-content/uploads
  2. Imposta il bit SetGID su tutte le cartelle uploads esistenti:
    sudo find /var/www/html/wp-content/uploads -type d -exec chmod g+s {} +
  3. Verifica il risultato visualizzando i permessi con il comando:
    ls -la /var/www/html/wp-content/uploads

Noterai una lettera “s” al posto della classica “x” nei permessi del gruppo (drwxr-sr-x). Da questo momento l’ereditarietà del gruppo è attiva.

Configurare l’umask di sistema per i nuovi file

Il SetGID garantisce l’ereditarietà del gruppo, ma non determina i permessi di scrittura. Per definire i permessi predefiniti dei file serve l’umask.

L’umask raccomandata per i server web moderni è 002 oppure 022. Con umask 002, i file vengono creati con permessi 664 e le cartelle con 775.

Puoi configurare l’umask nel file di configurazione del servizio PHP-FPM. Cerca la direttiva umask nel pool del tuo sito e impostala su 0002.

Domande frequenti sui permessi WordPress

Perché non devo mai utilizzare il permesso 777?

Il permesso 777 consente a chiunque nel sistema di leggere, modificare e cancellare il file. Se un attaccante carica uno script malevolo, può sovrascrivere file cruciali del core. I permessi 755 e 644 offrono tutto lo spazio necessario per lavorare in sicurezza.

Cosa succede se il server continua a generare permessi errati?

Verifica le impostazioni del pool PHP-FPM. Controlla quale utente esegue i processi PHP del tuo sito. Se PHP gira sotto un utente diverso da quello di Nginx o Apache, si generano conflitti continui. Allinea sempre l’utente del pool PHP con il proprietario della cartella web.

Ogni quanto tempo devo eseguire questi comandi di manutenzione?

Monitorare con regolarità i permessi ricorsivi WordPress garantisce stabilità e previene blocchi improvvisi. Se hai configurato correttamente SetGID e il gruppo www-data, non dovrai più eseguire questi comandi a mano. Puoi comunque pianificare uno script cron mensile di verifica per dormire sonni tranquilli.

Articoli simili