Permissão negada na raiz do documento vhost

6

Estou tendo um problema ao configurar um vhost no Apache 2.4, usando o CentOS 6.3.

Esta pergunta parece ter sido respondida várias vezes neste fórum, mas nenhuma das soluções funciona para mim.

Basicamente, eu configuro um vhost com uma raiz de documento particular. Quando tento acessar o site, recebo um erro de permissão. Mas não tenho nenhum problema se eu usar uma raiz diferente.

Mais especificamente, se eu definir a raiz como / volume1 / web / xxx, recebo um 503 devido a um problema de permissão no index.html.

Mas se eu configurá-lo para / volume1 / web, o index.html aparece sem nenhum problema.

Os detalhes:

  • Defino as persmissões em volume1, web e xxx em 755.
  • Eu defino as permissões nos arquivos index.html para 777.
  • Eu copio o arquivo index.html para / volume1 / web e / volume1 / web / xxx, para que eles tenham arquivos de índice idênticos com permissões idênticas.

No httpd.conf, eu defino as opções do VirtualHost para que eu possa alternar facilmente a raiz do documento, alterando 2 marcas de comentário

Eu tenho as seguintes linhas no arquivo conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    #DocumentRoot /volume1/web
    DocumentRoot /volume1/web/xxx

    #<Directory /volume1/web>
    <Directory /volume1/web/xxx>
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order Allow,Deny
      Allow from all
    </Directory>

    ErrorLog logs/localhost-error_log
    CustomLog logs/localhost-access_log common
</VirtualHost>

Estas linhas contêm todas as sugestões que funcionaram para outras pessoas com o mesmo problema.

O que eu recebo quando eu digito localhost no meu navegador depende da raiz do documento.

  1. Se a raiz for / volume1 / web, a página index.html será exibida.
  2. se a raiz é / volume1 / web / xxx, então recebo um erro 503, e o log de erro do apache tem essa linha:

    [qui Jul 19 17:17:52 2012] [erro] [cliente :: 1] (13) Permissão negada: acesso a /index.html negado

Eu também tentei adicionar um arquivo index.php ao diretório. Em seguida, recebi permissão negada mensagens para o arquivo php e o arquivo html.

Eu também tentei configurar o usuário: group para apache: apache nos diretórios e arquivos. Isso não ajudou.

Eu fiz tudo o que posso pensar para corrigir as permissões, sem sucesso.

Alguém tem uma ideia sobre o que está acontecendo aqui?

Obrigado.

    
por oksofar 20.07.2012 / 05:14

3 respostas

10

Parece que você criou um novo diretório fora da hierarquia padrão do sistema de arquivos para armazenar seus documentos da Web.

Quando você faz isso, o SELinux não está ciente de sua estrutura de diretórios customizada, e não sabe que o Apache (httpd) deve ter acesso a ela. Você verá mensagens em /var/log/audit/audit.log mostrando negações neste caso.

Para resolver o problema, você precisa dizer ao SELinux que o Apache pode acessar o diretório. Faça isso usando o semanage fcontext comando:

semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?"

A correspondência de padrões é feita com expressões regulares, portanto, isso corresponderá a /volume1/web e tudo abaixo dela. O fato de que ele usa expressões regulares também significa que você precisa citá-lo como mostrado acima.

Em seguida, reclassifique os arquivos:

restorecon -r -v /volume1/web

O SELinux agora permitirá que o Apache acesse arquivos em /volume1/web .

    
por 20.07.2012 / 08:05
2

Vou apontar o dedo da culpa no SELinux. Verifique executando setenforce 0 e tente novamente.

    
por 20.07.2012 / 05:52
-1

- Desabilitar SELINUX e Reiniciar

SELINUX = desativado

SELINUXTYPE = segmentado

#

grep ^ SELINUX / etc / sysconfig / selinux

{ T=/tmp/OLD.selinux.$RANDOM$RANDOM$$ ;
  cp -f /etc/sysconfig/selinux $T ;
  sed -e 's@^SELINUX=.*@SELINUX=disabled@' \
      -e 's@^SELINUXTYPE=.*@SELINUXTYPE=targeted@' \
      < $T > /etc/sysconfig/selinux ;
} ;

xreboot;

    
por 01.07.2013 / 20:41