.htaccess não pede a senha

6

Estou usando o Ubuntu 12.04 e tentando usar o .htaccess em uma página com o servidor apache2 nele. Meu arquivo .htaccess tem esta aparência:

AuthType Basic
AuthName "Password Required"
AuthBasicProvider file
AuthUserFile /home/janeb/.htpasswd
require valid-user
O arquivo

/home/janeb/.htpasswd é:

inb351:$apr1$Ya4tzYvr$KCs3eyK1O2/c7Q9zRcwn..

e o arquivo / etc / apache2 / sites-available / default é:

UserDir public_html
<Directory ~ "public_html/.*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all  
</Directory>

Eu reiniciei o apache. Eu tentei alterar require valid-user para require user inb351 . Ainda sem sorte. Eu também tentei AllowOverride com AuthConfig e AuthConfig Indexes . Então, eu não sei mais o que fazer, e sim, a cada passo que tentei, reiniciei o apache.

Editar: o arquivo padrão exato é:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
    UserDir disabled vmuser
    UserDir public_html
<Directory ~ "public_html/*">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

    
por Sarp Kaya 14.09.2012 / 11:14

4 respostas

9

Suspeito que o usuário apache não é capaz de ler /home/janeb/.htpasswd . Verifique o log de erros do Apache.

Essa é a única coisa que vejo errado na configuração que é fornecida, mas esse pode não ser o único problema; por favor, forneça sua configuração completa do host virtual. Eu também recomendo que você mova a configuração de autenticação para fora do arquivo .htaccess - não há motivo para estar lá.

EDITAR :

O motivo pelo qual o arquivo .htaccess não está sendo aplicado é porque AllowOverride All não está sendo aplicado ao caminho onde reside o arquivo .htaccess .

O arquivo .htaccess precisa ser aplicado ao mesmo tempo que os blocos <Directory> - se AllowOverride for especificado em um bloco <Directory ~ ...> , isso acontece após .htaccess Foram aplicados. Como isso não funciona, a documentação especificamente adverte contra :

AllowOverride is valid only in <Directory> sections specified without regular expressions, not in <Location>, <DirectoryMatch> or <Files> sections.

Adicione um novo bloco à sua configuração para permitir que seus arquivos .htaccess sejam usados:

<Directory /home>
    AllowOverride All
</Directory>
    
por 15.09.2012 / 10:03
3

Pela aparência da sua configuração, você provavelmente precisará colocar seu arquivo .htaccess no diretório /home/janeb/public_html , que é o DocumentRoot se eu não estiver errado.

    
por 14.09.2012 / 11:36
2

O que você está tentando fazer exatamente?

Na sua declaração vhost ...

order allow,deny
allow from all  

Você já declarou que todos devem ter acesso ... isso significaria que o seu seguinte .htpasswd é irrelevante, já que tem precedência.

Em vez disso, remova esse código e, em .htaccess , tudo o que você precisa é ...

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

O arquivo .htpasswd pode estar em qualquer lugar do servidor, desde que seja legível por quem quer que o Apache execute (normalmente www-data).

Se você quiser combinar restrição de IP e .htpasswd restrição, você também pode usar ...

order deny,allow
deny from all
allow from 192.168.0.10

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

Satisfy Any
    
por 15.09.2012 / 23:40
0

Eu cheguei aqui com o mesmo problema. Acontece que a definição public_html é herdada das configurações de nível superior ( <Directory /> ) do servidor e continha AllowOverride None . Mudando isso para All (ou AuthConfig ) fez o truque.

    
por 26.03.2013 / 12:34