Come verificare quale gruppo Apache posso usare per scrivere sul web server?


13

Sto cercando di far funzionare Wordpress. Al momento ho questo messaggio di errore:

Could not create directory. /var/www/html/wp-content/upgrade/theme_name

quando si tenta di caricare un tema. Queste sono le autorizzazioni impostate su/var/www/html/wp-content/upgrade/

drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade

chmod 777 upgradefa scomparire l'errore. Ma questa non è considerata la migliore pratica. Tuttavia, penso che dovrebbe funzionare anche questo ... perché no?

Immagino che il server web potrebbe non essere incluso dalle autorizzazioni di cui sopra. Quale gruppo dovrei usare per consentire al server Web di scrivere?

(La mia configurazione è Amazon EC2, Amazon Linux AMI con httpd)

Risposte:


16

Non so nulla di Amazon EC2, ma dovresti essere in grado di:

  1. Recupera il nome dell'utente che esegue Apache con un comando simile al seguente:

    ps aux | grep apache # The username should be in the first column.
    
  2. Recupera i gruppi di cui fa parte questo utente con il groups(1)comando:

    groups [USERNAME]
    

La prima colonna è apache e i gruppi apache restituiscono apache: apache. Una riga del primo comando è simile al seguente: apache 11171 0,0 3,4 39984 21516? S 20 giugno 0:02 / usr / sbin / httpd

1
L'apache dell'utente ha chiaramente le autorizzazioni per scrivere nella directory. Dici che chmod 777risolve il problema, quindi immagino che tu stia utilizzando un altro utente per caricare i tuoi temi. Non conosco molto bene Wordpress. Secondo questa risposta prova a cambiare la proprietà in utente www-data.
Rahmu,

Grazie per aver dedicato del tempo a cercare l'articolo e tutto il resto. Era davvero un utente diverso, poiché mi resi conto che Wordpress usava FTP per fare il suo lavoro. Ho scoperto quell'utente da ciò che è stato suggerito di seguito e quindi ho aggiunto il gruppo apache, scoperto dal passaggio 1, ad esso. Ciò ha risolto.

2

Puoi provare a utilizzare il seguente metodo da riga di comando per scoprire i nomi dei tuoi gruppi Apache:

WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\  -f 2| uniq`
echo Apache group is: $WWW_GROUP

Per ottenere l'utente, selezionare: Come determinare l'utente Apache dalla riga di comando?


1

L'aggiornamento di chmod 777 elimina l'errore.

Bene, in tal caso ls -ld /var/www/html/wp-content/upgrade/theme_namedovrebbe rivelare le credenziali del creatore, che è possibile utilizzare per la concessione di un accesso preciso.

Ed è meglio usare 1777(come per /tmp) poiché almeno garantisce che solo il proprietario di un file sarebbe in grado di scollegarlo.


1
Fai sparire l'errore! Approccio interessante alla risoluzione dei problemi. Questa non è una soluzione, è una bugia.
iharob,

Come si chiama "bugia" - citando il testo dell'autore originale? :) o suggerimento di utilizzare almeno 1777 invece di 777? :) o scoprire la proprietà del creatore e utilizzarlo per "garantire un accesso preciso"?
poige,

È una bugia per il sistema, perché 777non è corretta in nessun contesto che conosco.
iharob,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.