Apache “Cliente negado pela configuração do servidor”, apesar de permitir acesso ao diretório (configuração do vhost)


38

no Apache no Ubuntu, configurei um vhost, mas no navegador continuo recebendo o erro "403 Acesso proibido"; o log diz " Cliente negado pela configuração do servidor: / home / remix / ".

Procurando a solução online, encontrei muitas postagens sobre o acesso ao diretório (Permitir de todos, etc), mas até onde eu sei, já fiz isso. No httpd-vhosts.conf, existe o seguinte código:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Eu também adicionei

127.0.0.1    testproject

para o arquivo / etc / hosts.

Além disso, a pasta / home / remix / contém um arquivo index.html e os vhosts são ativados no httpd.conf.

Existe algo que eu não estou vendo?

Edit: Esta é a entrada error_log do Apache:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

O que há no log de erros do Apache?
Shane Madden

Ah, pensei que tinha esquecido algo ... Adicionei-o ao post original.
RemiX 18/08/12

Qual versão do Apache você está usando?
Shane Madden

Apache / 2.4.2 (Unix)
RemiX

Respostas:


65

Altere sua configuração de autorização:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... para a versão Apache 2.4 do mesmo.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

Revise o documento de visão geral da atualização para obter informações sobre outras alterações que você possa precisar fazer - e esteja ciente de que a maioria dos exemplos de configuração e assistência que você encontra lá no Google (assim como neste site) se refere ao 2.2.


2
Se eu tivesse tempo, registraria um bug sobre isso, porque o httpd -t diz que não há nenhum problema ao usar a sintaxe mais antiga, e o httpd -S também não. Na minha opinião, o objetivo de um verificador de configuração é que ele esteja apontando problemas! ... Se você tiver um diretório que você está referenciando sem isso, ele não funcionará - simples assim. ... Polegares para cima na resposta.
Richard T

4

Verifique as permissões no diretório. Aposto que está definido para negar o acesso a qualquer pessoa que não seja você, por exemplo:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

Se você vir drwx------exatamente, esse é o caso. Corrija-o executando:

chmod a+x /home/remix

Eu vejo: drwxrwxr-x 2 remix remix 4096 16 de agosto 09:36 / home / remix. Eu tentei o comando de qualquer maneira, sem efeito.
RemiX 18/08/12

Ahh, não posso ganhar todos eles.
Michael Hampton

3

Verifique se o usuário que está executando o httpdserviço tem acesso a esses diretórios.


Não tenho certeza de quem é o usuário para httpd ou como verificar, mas todos podem ler (usuário / grupo / outro).
RemiX 18/08/12

Verifique httpd.conf para Userparam.
usar o seguinte código

1
Ok, diz 'Usuário ninguém' e 'Grupo nogroup'. Tentei alterá-lo para 'User remix' (que é o proprietário da pasta), mas mesmo isso não ajuda.
RemiX 20/08/12

1

"cliente negado pela configuração do servidor" significa que o próprio servidor Linux proíbe o acesso ao arquivo, não o Apache.

Se o fornecimento de acesso através da alteração de permissões / propriedade / associação ao grupo não resolver o problema, a causa da rota poderá ser o SELinux proibindo o acesso a qualquer pasta que não possua o contexto apropriado do SE Linux, conforme explicado em 'Realocando um Apache DocumentRoot no Selinux' .

  • Se desabilitar temporariamente o SELinux fazendo setenforce 0 torna o arquivo acessível
  • Enquanto a reativação do SELinux, setenforce 0tornando novamente o arquivo não acessível

Então, com certeza, o acesso é proibido pelo SELinux, sejam quais forem as permissões do arquivo.


0

Outro simples (mas complicado truque) que pode causar esse problema para as pessoas é quando os diretórios do usuário não estão em / home / * Mas em algum outro lugar, por exemplo, / nethome / *

O userdir.conf fornecido contém algo como isto: (mas com Userdir: disabled)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

A especificação de diretório supõe ~ user == / home / user. Basta alterar ou adicionar a especificação de diretório para onde os diretórios pessoais do usuário estão.

Bastante óbvio, mas levei um tempo para descobrir !! :-P DUH!

por exemplo, ~ user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Veja também uma autorização mais aberta nesse diretório em geral.

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.