Comment vérifier quel groupe Apache je peux utiliser pour le serveur Web pour écrire?

13

J'essaie de faire fonctionner Wordpress. J'ai actuellement ce message d'erreur:

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

lorsque vous essayez de télécharger un thème. Il s'agit des autorisations définies sur/var/www/html/wp-content/upgrade/

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

chmod 777 upgradefait disparaître l'erreur. Mais cela n'est pas considéré comme la meilleure pratique. Cependant, je pense que cela devrait fonctionner aussi ... pourquoi pas?

Je suppose que le serveur Web peut ne pas être inclus par les autorisations ci-dessus. Quel groupe dois-je utiliser pour autoriser le serveur Web à écrire?

(Ma configuration est Amazon EC2, Amazon Linux AMI avec httpd)

Jeff Schaller
la source

Réponses:

16

Je ne sais rien d'Amazon EC2, mais vous devriez pouvoir:

  1. Récupérez le nom de l'utilisateur exécutant Apache avec une commande similaire à celle-ci:

    ps aux | grep apache # The username should be in the first column.
    
  2. Récupérez les groupes dont cet utilisateur fait partie avec la groups(1)commande:

    groups [USERNAME]
    
rahmu
la source
La première colonne est apache, et les groupes apache renvoient apache: apache. Une ligne de la première commande ressemble à ceci: apache 11171 0,0 3,4 39984 21516? S Jun20 0:02 / usr / sbin / httpd
1
L'utilisateur apache est clairement autorisé à écrire dans le répertoire. Vous dites que cela chmod 777résout le problème, donc je suppose que vous utilisez un autre utilisateur pour télécharger vos thèmes. Je ne connais pas très bien Wordpress. Selon cette réponse, essayez de changer de propriétaire en utilisateur www-data.
rahmu
Merci d'avoir pris le temps de rechercher l'article et tout. C'était en effet un utilisateur différent, car j'ai réalisé que Wordpress utilisait FTP pour faire son travail. J'ai découvert cet utilisateur par ce qui a été suggéré ci-dessous, puis y ai ajouté un groupe apache, découvert à l'étape 1. Cela l'a résolu.
2

Vous pouvez essayer d'utiliser la méthode de ligne de commande suivante pour connaître les noms de vos groupes 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

Pour obtenir l'utilisateur, vérifiez: Comment déterminer l'utilisateur Apache à partir de la ligne de commande?

Kenorb
la source
1

La mise à niveau de chmod 777 fait disparaître l'erreur.

Eh bien, dans ce cas ls -ld /var/www/html/wp-content/upgrade/theme_name, les informations d'identification du créateur devraient être révélées, que vous pouvez utiliser pour l'octroi d'accès précis.

Et il vaut mieux l'utiliser 1777(comme pour /tmp) car au moins cela garantit que seul le propriétaire d'un fichier pourra le dissocier.

poige
la source
1
Faites disparaître l'erreur! Approche intéressante à la résolution de problèmes. Ce n'est pas une solution, c'est un mensonge.
iharob
Qu'appelez-vous «mensonge» - en citant le texte original de l'auteur? :) ou suggestion d'utiliser au moins 1777 au lieu de 777? :) ou découvrir la propriété du créateur et l'utiliser pour «accorder un accès précis»?
poige
C'est un mensonge pour le système, car ce 777n'est pas correct dans tous les contextes que je connaisse.
iharob