Estou tentando alterar o diretório raiz de um serviço da Web Apache /var/www/html
para meu diretório personalizado /mnt/webfiles
. No entanto, depois de configurar os /etc/httpd/conf/httpd.conf
parâmetros e reiniciar httpd
, meus diretórios/arquivos de teste ainda não podem ser navegados na página da web.
Aqui está o ambiente:
SO: CentOS 7.9.2009
Versão Apache: 2.4.6
O tipo de instalação do SO: Servidor web básico
O objetivo de usar o apache web é apenas para teste e não há exigência de nome de domínio específico neste servidor, apenas endereço IP para o cliente navegar na web.
Quando eu uso o diretório padrão /var/www/html
para colocar arquivos de teste, como um simples .txt agindo como uma página da web simples ou um subdiretório download
com um arquivo para simular a página de download, tudo funciona bem. A página da web pode ser navegada via navegador.
Mas, depois de mudar DocumentRoot "/var/www/html"
para Directory "/var/www"
meu diretório específico /mnt/webfiles
, os arquivos/diretórios de teste /mnt/webfiles
nunca poderão ser acessados e a mensagem de erro mostrada no navegador seria como:
Forbidden
You don't have permission to access /download/ on this server.
Somente a página padrão do Apache pode ser navegada e não afetada.
O que fiz foi seguir as instruções deste post e deste ,
A propósito, a permissão dos arquivos/diretórios desde o diretório raiz do apache web é root:root
e 775
, basicamente a mesma que o /var/www/html
.
Acho que essa não é a causa raiz.
Alguém sabe por que isso acontece?
Uma resposta possível seria que o SELinux está negando o novo webroot.
Verifique se o SELinux está habilitado:
Enforcing
significa que o SELinux está habilitado e aplicando as regras. Uma verificação rápida para ver se o SElinux é realmente o problema seria desativá-lo temporariamente:Recarregue a página da web e se funcionar agora, o SELinux provavelmente é o culpado.
Mas como consertar isso permanentemente sem precisar desabilitar o SELinux?
Verifique o contexto correto de um webroot:
Observe a
httpd_sys_content_t
etiqueta!Isso provavelmente é diferente do seu novo webroot em
/mnt/webfiles
.Você precisa definir um contexto correto para o novo webroot na política SELinux. Fazem isto:
Depois verifique se funcionou. Lembre-se de reativar o SELinux, caso contrário você não o testará :-)
Para verificar negações, você pode visualizar o log de negações do SELinux AVC assim:
Além disso, se você precisar de acesso de gravação ao webroot, pode ser necessário alterar o contexto de
httpd_sys_content_t
parahttpd_sys_rw_content_t
OU definir ohttpd_unified
booleano SELinux comotrue
: