Diretório Apache com Autenticação

2

Aqui está minha configuração de virtualhost:

<VirtualHost *:80>
    DocumentRoot /home/user1/htdocs/folder1
    ServerName folder1.hostname.tld
    <Directory /home/user1/htdocs/folder1>
            AuthType Digest
            AuthName "private"
            AuthUserFile /home/user1/passwd
            Require user superman
            #Order allow,deny
            #Allow from all
    </Directory>
</VirtualHost>

Eu adicionei o usuário com:

htdigest -c /home/user1/passwd private superman

O Apache continua me dando em seu log:

client denied by server configuration: /home/user1/htdocs/folder1/

Eu não sei o que está errado ... O Apache tem o direito de ler o arquivo passwd. Além disso, se eu comentar as linhas do AuthDigest ... e descomentar o Order and Allow, o apache exibe a pasta como um encanto. O Apache me responde com um 403 e não solicita meu navegador para o usuário / senha.

Alguma ajuda?

    
por Kami 26.07.2010 / 01:21

2 respostas

1

Dê uma olhada na diretiva de configuração Satisfy do Apache.

Por padrão, é definido como all (em vez de any ), o que significa que ambas as diretivas Allow e Require precisam ser satisfeitas. Ao comentar o Allow , você nega o acesso a todos, independentemente do que a autenticação diz.

A ativação do Allow não irá ignorar a autenticação de hosts conhecidos e fará o que você deseja. Como alternativa, você também pode definir Satisfy any e deixar o Allow from all comentado. Você pode usar o Allow para especificar hosts que possam ignorar a autenticação.

    
por 27.07.2010 / 13:16
1

No meu servidor CentOS, eu consegui replicar seu problema quando movi a pasta protegida por senha para um diretório de usuários. Se a pasta protegida estava localizada no local padrão (como uma subpasta dentro de / var / www / html), não houve problemas. Mas, se a pasta protegida por senha estiver localizada dentro do diretório pessoal de um usuário, o Apache cometerá erros.

Se você estiver executando um derivativo do Red Hat do Linux (por exemplo, Red Hat Enterprise Linux, CentOS ou Fedora Core), parece que o SELinux é uma possível causa do problema. Para testar isso, execute o seguinte comando para desativar temporariamente o SELinux:

echo 0 > /selinux/enforce

Em seguida, tente acessar a página da web. Para mim, isso resolveu o problema e o Apache conseguiu me informar corretamente o nome de usuário e a senha e acessar o site. Para ir e modificar o SELinux, você pode usar o comando chcon para alterar o contexto de segurança do SELinux de um arquivo ou um diretório.

chcon -Rv --type=httpd_sys_content_t /home/user1/

Para mais informações e detalhes sobre como usar o chcon para fazer essa alteração, confira a seção "5.1 Relabeling Files" no título CentOS Wiki .

    
por 26.07.2010 / 03:36