Como verificar qual grupo do Apache posso usar para o servidor da Web escrever?


13

Estou tentando fazer o Wordpress funcionar. Atualmente, tenho esta mensagem de erro:

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

ao tentar fazer upload de um tema. Essas são as permissões definidas para/var/www/html/wp-content/upgrade/

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

chmod 777 upgradefaz o erro desaparecer. Mas isso não é considerado uma boa prática. No entanto, acho que isso deve funcionar também ... por que não?

Acho que o servidor da web pode não estar incluído nas permissões acima. Que grupo devo usar para permitir que o servidor da Web escreva?

(Minha configuração é Amazon EC2, Amazon Linux AMI com httpd)

Respostas:


16

Não sei nada sobre o Amazon EC2, mas você deve ser capaz de:

  1. Recupere o nome do usuário executando o Apache com um comando semelhante a este:

    ps aux | grep apache # The username should be in the first column.
    
  2. Recupere os grupos dos quais este usuário faz parte com o groups(1)comando:

    groups [USERNAME]
    

A primeira coluna é apache e os grupos apache retornam apache: apache. Uma linha do primeiro comando fica assim: apache 11171 0.0 3.4 39984 21516? S Jun20 0:02 / usr / sbin / httpd

1
O usuário apache claramente tem permissões para escrever no diretório. Você diz que chmod 777resolve o problema, então acho que você está usando um usuário diferente para fazer upload de seus temas. Não conheço muito bem o Wordpress. De acordo com esta resposta, tente alterar a propriedade para usuário www-data.
rahmu

Obrigado por procurar o artigo e tudo mais. Era de fato um usuário diferente, pois percebi que o Wordpress usava o FTP para fazer seu trabalho. Descobri esse usuário pelo que foi sugerido abaixo e, em seguida, adicionei o apache de grupo, descoberto pela etapa 1, a ele. Isso resolveu.

2

Você pode tentar usar o seguinte método de linha de comando para descobrir os nomes dos grupos do 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

Para obter o usuário, verifique: Como determinar o usuário do Apache na linha de comando?


1

A atualização do chmod 777 faz com que o erro desapareça.

Bem, nesse caso, ls -ld /var/www/html/wp-content/upgrade/theme_namedeve revelar as credenciais do criador, que você pode usar para concessão precisa de acesso.

E é melhor usar 1777(como para /tmp), pois pelo menos garante que apenas o proprietário de um arquivo possa desvinculá-lo.


1
Faça o erro desaparecer! Abordagem interessante para a resolução de problemas. Isso não é uma solução, é uma mentira.
Iharob

O que você chama de "mentira" - citando o texto do autor original? :) ou sugestão de pelo menos usar 1777 em vez de 777? :) ou descobrir a propriedade do criador e usá-lo para "concessão precisa de acesso"?
poige

É uma mentira para o sistema, porque 777não está correto em nenhum contexto que eu conheça.
Iharob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.