[bglug] Aiuto Gestione servizi Web

Emiliano Vavassori syntaxerrormmm@gmail.com
Ven 26 Ago 2016 18:26:47 CEST


Ciao Andrea,

Provo a darti alcune indicazioni "teoriche" che spero siano d'aiuto
per trovare la radice del tuo problema.

Partiamo, innanzitutto, dall'assunto che il server web Apache, su
Debian, gira con l'utente www-data e gruppo www-data. Per impostazione
predefinita, pertanto, i permessi della cartella /var/www/html
permettono la lettura e la scrittura all'interno della DocumentRoot da
parte di Apache, e ciò l'ho trovato sempre abbastanza un male (se
qualcuno riesce a bucare Apache, è in grado di fare tutto quello che
vuole sui file lì sotto contenuti, compreso piallarti per intero il
sito).

Se il sito non è un virtualhost (quindi non serve più siti
differenti), di norma la mia pratica è quella di cambiare il
proprietario e il gruppo proprietario della cartella /var/www.
Tipicamente uso come proprietario root e come gruppo users (l'utente
www-data non fa parte di users ed è questa la parte importante) con un
comando come:

chown root:users -R /var/www

A questo punto, assegno i permessi di lettura e scrittura a utente
proprietario e a gruppo proprietario a mio piacimento (tipicamente,
almeno in lettura e scrittura):

chmod ug+rw -R /var/www

Oppure un po' più complesso ma più preciso:

find /var/www -type d -exec chmod 775 {} \; && find /var/www -type f
-exec 664 {} \;

Poi mi focalizzo sull'ultimo terzetto dei permessi. L'ultimo numero
(che corrisponde all'ultimo terzetto dei permessi) dovrà rimanere 5
per le directory e 4 per i file (corrispondono rispettivamente a
lettura/esecuzione e lettura, escludendo in ogni caso la scrittura).
Dove so che l'utente che fa girare Apache ha solo bisogno di leggere,
questa impostazione è sufficiente e corretta. Con questa impostazione,
qualsiasi altro utente del sistema Debian che sia membro del gruppo
"users" può scrivere e modificare tutti i file contenuti in /var/www
ma non Apache (www-data).

Veniamo al tuo caso. Ci hai detto che stai usando Wordpress e mi
risulta che l'unica cartella che devi lasciare aperta in scrittura a
Apache è wp-content [0]. Solo in questo caso specifico puoi dare,
ricorsivamente, permessi più ampi a quella cartella (il terzo 7 che
hai citato nella tua richiesta):

chmod o+w -R /var/www/html/wp-content

Oppure, di nuovo, il più preciso:

type /var/www/html/wp-content -type d -exec chmod 777 {} \; && type
/var/www/html/wp-content -type f -exec chmod 666 {} \; && chmod 777
/var/www/html/wp-content

In realtà, per il setup che ho appena delineato, tu dai accesso a
quella cartella a tutti gli utenti del tuo sistema (quindi anche
quelli che non c'entrano con il web, per esempio). Una soluzione meno
grezza potrebbe essere quella di usare delle ACL per permettere la
scrittura sulla cartella wp-content solo all'utente www-data, ma il
tuo kernel e il filesystem devono supportare ACL e il filesystem deve
essere montato utilizzando anche ACL come opzione. Non ci dovrebbero
essere problemi, di norma, su Debian 8 x64_64 con kernel di default e
/ su ext4. Quindi potresti usare qualcosa di simile:

setfacl -m -R u:www-data:rw /var/www/home/wp-content

Puoi controllare la ACL che hai appena impostato con getfacl.
Chiaramente le manpage dei due comandi possono esserti di estremo
aiuto.

Veniamo ora all'accesso dalla macchina Windows: come fai l'accesso ai
file di Apache? Condivisione di rete perché c'è anche SMB che serve
quella cartella? Accedi via SSH? SFTP? Come viene effettuata la
modifica? Fai l'upload dei file modificati o li modifichi da una
sessione di putty?

Dacci più dettagli su quest'ultimo punto e chiudiamo l'analisi.

Grazie, a presto,

[0]: https://codex.wordpress.org/Hardening_WordPress#File_Permissions
-- 
Emiliano Giovanni Vavassori - syntaxerrormmm@gmail.com
Web - https://sys42.eu


Maggiori informazioni sulla lista bglug