Eu tenho tentado depurar isso nas últimas horas e, tendo resolvido tantos problemas, parece que bati em uma parede de tijolos
Eu tenho uma instalação do Wordpress usando o nginx no CentOS7 (AWS Lightsail, se isso importa). Para isso assegurei
wp-content/uploads
diretório é 766- o diretório de propriedade
apache:apache
e o nginx e o php-fpm são executados sob esse usuário - seLinux é
httpd_sys_rw_content_t
para o diretório
Isso me levou até o upload de arquivos com sucesso. Ele cria o arquivo e as permissões acima se propagam corretamente ( ln -Z
e rodando stat
como apache
usuário). Os arquivos são 666, mas 766 não parece mudar nada. Os arquivos mais antigos que eu coloquei manualmente servem corretamente. A única diferença que posso encontrar é que os arquivos enviados manualmente são definidos no seLinux como
Context: unconfined_u:object_r:httpd_sys_rw_content_t:s0
Enquanto o novo arquivo 403 é
Context: system_u:object_r:httpd_sys_rw_content_t:s0
Tentei setenforce 0
mas não mudou. Reiniciei o nginx também e ainda não mudou. O erro registrado é
2019/05/19 22:35:06 [error] 21393#0: *4010 open() "/usr/share/nginx/example/wp-content/uploads/2019/05/file.jpg" failed (13: Permission denied), client: 172.69.44.142, server: example.com, request: "GET /wp-content/uploads/2019/05/file.jpg HTTP/1.1", host: "www.example.com"
Ainda /usr/share/nginx/example/wp-content/uploads/2019/04/another_file.jpg
funciona bem, então também não parece relacionado à configuração do nginx.
Há algo mais que eu estou perdendo?
Corrija as permissões. 766 não é um modo válido para um diretório, pelo menos não se você quiser acessar os arquivos dentro dele.