Restrição de acesso a diretórios pelo Apache

Aqui será demonstrado como aplicar um sistema de autenticação pelo Apache, com ele você pode restringir quais diretórios o usuário só poderá acessar através de login e senha implementados pelo próprio servidor web.

[ Hits: 51.092 ]

Por: Fernando Hidalgo Mansano em 04/02/2004


Introdução



Pessoal, tentarei ser breve e curto, pois não há muito segredo, então para que complicar né? =)

Aqui demonstrarei como fazer autenticação de usuários para acessar diretórios em seu servidor Linux pelo Apache.

Bem, considerando que seu servidor Web (Apache) esteja perfeitamente rodando, siga estes passos:

1°) Vamos editar o seu arquivo httpd.conf adicionando as seguintes linhas nas seções LoadModule e AddModule:

LoadModule auth_module     modules/mod_auth.so
AddModule mod_auth.c

2°) Vamos configurar as opções do diretório que irá requerer autenticação:

# Diretório Restrito
<Directory /home/www/html/diretorio_restrito>
     Options Indexes FollowSymLinks Includes
     AllowOverride AuthConfig

     # Autenticação de Usuário
     AuthName "Acesso ao meu Diretório Restrito"
     AuthType Basic
     AuthUserFile /etc/httpd/conf/httpd_passwd
     require valid-user

     Order allow,deny
     Allow from all
</Directory>

3°) Agora iremos criar o arquivo de senhas. Para criar o arquivo de senhas e/ou adicionar senha para um determinado usuário, digite o comando abaixo:

# htpasswd -c /etc/httpd/conf/httpd_passwd usuário

Aqui será necessário digitar a senha e em seguida confirmá-la.

4°) Pronto, basta somente reiniciar o servidor:

# /etc/init.d/httpd restart

Valeu galera! Divirtam-se com este novo sistema!!! =)

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalando o Swat

Leitura recomendada

Neste Natal: liberte o seu Motorola Atrix, e o transforme no desktop perfeito

Wireless USB no Linux

Pós-instalação do Sabayon LXDE

Instalado Fedora-DS e integrando com Samba

Configuração de Vídeo - SIS530, SIS620 e CIA...

  
Comentários
[1] Comentário enviado por frangolino em 04/02/2004 - 22:24h

dá um erro dizendo que o modulo naum existe, não consegui achar "AddModule". Obrigado

[2] Comentário enviado por jeffestanislau em 05/02/2004 - 15:26h

Muito interessante!!!
Mas quanto a foto... que sorriso hei... está é a felicidade de se utilizar o linux!!! hehehe!!!
[]'s

[3] Comentário enviado por fhm_online em 05/02/2004 - 19:55h

Frangolino, quando vc editar o httpd.conf, digite / e o nome AddModule, se não localizar insira o código em outro lugar, no meu está lá pela linha 650, ok! qualquer coisa me fala e manda seu arquivo conf pra mim q eu lhe envio pronto... =)
Falow!

[4] Comentário enviado por kleytonn em 07/02/2004 - 10:35h

A entrada "required valid-user" não está funcionando no apache2. Qual é a que substitui ela?

Grato.

[5] Comentário enviado por fabio em 08/02/2004 - 19:53h

O certo é "require valid-user". Vou corrigir isso!

[6] Comentário enviado por fhm_online em 09/02/2004 - 07:38h

Bom dia galera!!
Bem, esta semana vou arranjar um tempo para enviar o conf do httpd, ok!! Percebi que algumas pessoas tiveram dificuldades em implantar o sistema, mas fico feliz que muitos se interessaram e até contribuiram com comentários para a melhoria do artigo!! =)
Até mais pessoal!!

[7] Comentário enviado por frangolino em 09/02/2004 - 17:10h

e ae FHM!
blz!!!

realmente não existe AddModule no meu httpd.conf

como posso te mandar pra vc dar uma olhada???


Brigadão
Falowwwwwwwww!!

[8] Comentário enviado por fhm_online em 10/02/2004 - 08:55h

Rodrigo!
Manda pra mim no meu e-mail: fhm_online@hotmail.com
Eu publiquei o conf ontem, mas ainda esta em espera...
Ve o que vc acha melhor! Estou aguardando seu arquivo.
Falow!!

[9] Comentário enviado por marciocm em 01/03/2004 - 11:25h

Pow vi o conf, e fiz igualzinho tava lah, reiniciei o apache e nada !! -( quando digito o diretorio ele entra sem pedir senha, será q eh porque to usando https ??????????

[10] Comentário enviado por fhm_online em 03/03/2004 - 19:32h

mandei um e-mail pra vc sobre este problema...
falow! Se precisar é só fala....

[11] Comentário enviado por jeremias em 04/05/2004 - 13:47h

no meu httpd.conf nao existe nenhum AddModulle..... assim sendo arrisquei saltar esse passo e tudo correu bem, contudo qd tento aceder a minha directoria restricta ele nao aceita o username e pass por mim inserida anteriormente!!??
I need Help

[12] Comentário enviado por crcorrea em 06/06/2005 - 18:08h

meu httpd.conf nao aceita o AddModule mod_auth.c
da minha estacao nao consigo acessar a pasta mesmo digitando logi e password.
minha estacao eh um XP algum problema ????

[13] Comentário enviado por efirex em 02/11/2005 - 12:30h

No mandrake 10.1 funcionou legal
Apache 2

[14] Comentário enviado por removido em 09/07/2006 - 23:35h

Gostaria de recolocar o problema que Jeremias vem passando.
Não estou conseguindo me logar. Consegui editar o arquivo (também pulei a mesma etapa que ele pulou, pois no meu, não tem...), fiz o arquivo de senhas e reiniciei o Apache.
Beleza... O prompt de senha aparece, digito a senha que criei mas não consigo logar.

Aparece uma mensagem assim:

Authorization Required
This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

[15] Comentário enviado por ams em 04/09/2006 - 14:54h

Quem tem o arquivo "/etc/apache2" e "/var/www/apache2-default" é por que está usando o Debian, tenho quase certeza. Logo, quem teve dificuldades com "require valid-user" deverá digitar " Require valid-user" ( sem as aspas, é claro ! ). E ao invés de "Directory" e "/Directory", poderá usar "Location" e "/Location" nas diretivas, mais ou menos assim:
<Location "/diretorio dentro de /var/www/apache2-default"> ( com aspas )
........
........
</Location>
E, não precisa do AddModulle.
Espero ter ajudado e contribuido.

[16] Comentário enviado por SaBuJo em 09/06/2007 - 17:58h

Muito bom seu artigo. Pra mim funcionou legal.

Só estou com um problema.

No Firefox 2.0.0.4 - Quando acesso o endereço, na primeira vez ele me pede a senha. Depois fecho a janela (não o navegador) onde o abri e abro outra e ele não me pede mais a senha. Abro outro executável do firefox, ao entrar no endereço ele não me pede a senha.

No IE 7 - Como no firefox no mesmo browser ao abrir uma janela e fechar e abrir o endereço novamente ele não pede a senha. Agora ao fechar o browser e abrir novamente ele pede a senha e ao abrir outra janela do browser mesmo estando logado em uma janela ele pede a senha novamente.

Em ambos os casos, limpar o cache não alterou nada.

Isso pode ser um recurso do Firefox, mas gostaria que cada vez que o usuário fizesse o acesso fosse solicitada a senha.

Se fechou a janela fechou a sessão e tem que pedir a senha novamente. Mas isso tem que ser restrito a algumas áreas do servidor.

Alguma sugestão...

Em tempo... Estou usando o CentOS 5.0, Apache 2.0

[17] Comentário enviado por eduradaelli em 09/07/2007 - 01:05h

Opa,
Amigos, no debian não é preciso usar as linhas:
LoadModule auth_module modules/mod_auth.so
AddModule mod_auth.c

Espero ter ajudado!

Abraço

[18] Comentário enviado por Ruy_Go em 27/01/2008 - 15:56h

Amigos segue aqui o procedimento que tomei baseado neste artigo, e acho que alguns usuários podem ter estas dúvidas.
Usei essa dica no Slackware 12 com apache 2.2.4

1 - Para quem ta usando a versão 2.2.x do apache, não precisa adicionar nenhuma das linhas:

LoadModule auth_module modules/mod_auth.so
AddModule mod_auth.c

2 - Basta apenas criar o seguinte dentro do httpd.conf: (lembrando que voce tem que adaptar o caminho da pasta a sua necessidade)

# Diretório Restrito
<Directory /var/www/pasta.que.vai.ser.autenticada/>
Options Indexes FollowSymLinks Includes
AllowOverride AuthConfig

# Autenticação de Usuário
AuthName "Aceso a Pagina Restrita"
AuthType Basic
AuthUserFile /etc/httpd/conf/httpd_passwd
Require valid-user

Order allow,deny
Allow from all
</Directory>


3 - Feito isso, salve e saia do editor, logo em seguida voce terá que criar a pasta conf dentro do /etc/httpd/, para isso execute o comando:

mkdir -p /etc/httpd/conf/

4 - Logo em seguida crie o usuário no linux (caso nao tenha ele criado) com o comando:

useradd fulano

5 - E em seguida execute o comando:

htpasswd -c /etc/httpd/conf/httpd_passwd fulano

Ele pedirá a senha e a confirmaçao da senha.

6 - Feito isso reinicie seu apache e faça o teste, lembrando que a pasta ficará oculta, voce deverá acessa-la digitando o nome exato dela.


Caso alguém tenha alguma dúvida entre em contato comigo.
Abraços a todos e vamos lá!!

[19] Comentário enviado por pes em 27/05/2008 - 23:44h

maravilha de artigo!! tah no favoritos com certeza!! xD
sou totalmente de acordo com o q vc fez nesse artigo: curto, grosso e o melhor, funciona q é uma beleza! xD
abraço!!

[20] Comentário enviado por novatok em 03/06/2008 - 11:18h

Ótimo o artigo!
mas tenho uma dúvida, vomo faço para que essa pasta não fique oculta? mas ainda protegida?

obrigado

[21] Comentário enviado por rickzzz em 14/10/2008 - 14:58h

alguem sabe coo fazer para q ele nao alve a senha?. tipo funciona tudo legal, mas quando eu tenti entrar denovo na pasta ele nao pede mais a senha,... ele grava automatico, sei lá;;;;...

alguem???????

[22] Comentário enviado por femars em 07/12/2008 - 03:32h

brother, só para adcionar, aqui funcionou perfeitamente no apache 1.3 debian, detalhe, não precisei adcionar os módulos!
Abraços e parabéns novamente (msmo depois de 4 anos) rs...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts