Autenticação · 5 min read · Jan 04, 2026

.htaccess Baseada em Autenticação em Subdiretórios

.htaccess Baseada em Autenticação em Subdiretórios

Autor: Nayyar Ahmad

Contato: nayyares AT gmail DOT com

Página Inicial: www.cbtcandy.org

Dedicação: A Baji, por todos os esforços que ela fez por mim.

Prefácio:

.htaccess é usado para fornecer a facilidade de mudar a configuração por diretório, este arquivo pode conter uma ou mais diretivas que serão forçadas no diretório que contém o arquivo .htaccess.

.htaccess é um nome popular para este arquivo de modificação de configuração, você pode mudar este nome padrão alterando o parâmetro AccessFileName no arquivo de configuração do Apache. i.e.

AccessFileName .anyname

Neste tutorial, eu vou tomar um cenário fictício de dois subdiretórios em nível paralelo e implementarei autenticação por senha em ambos. Isso significa que apenas aqueles usuários que têm o nome de usuário e a senha corretos podem acessar esses diretórios.

Então começa :)

Aqui estou assumindo que seu diretório DocumentRoot é /var/www/html, mas se você tiver configuração de VirtualHost ou mesmo o Apache estiver configurado em algum outro diretório raiz, então você pode ajustar isso de acordo com sua situação.

Nota: Eu vou usar dois nomes fictícios para esses diretórios como test-dir1 e test-dir2.

1  Criando Diretório:

$ cd  /var/www/html
$ mkdir  test-dir1
$ mkdir test-dir2

2  Criação de Arquivo HTML de Teste:

Criando arquivo html no primeiro diretório.

$ cd  /var/www/html/test-dir1
$ cat > index.htm

| PÁGINA DE TESTE EM TEST-DIR1. |

Criando arquivo html no segundo diretório.

$ cd /var/www/html/test-dir2
$ cat  > index.htm

| PÁGINA DE TESTE EM TEST-DIR2. |

3  Navegando nas Páginas de Teste:

Agora você pode navegar e testar se as páginas estão disponíveis ou não, abrindo qualquer navegador da web, eu gosto do Firefox (pois é incrível :) ) e digitando:

http://localhost/test-dir1/

Isso exibirá a página de teste do primeiro diretório, e

http://localhost/test-dir2/

exibirá a segunda página de teste em test-dir2.

Se você conseguir ver ambas as páginas, isso significa que você está quase pronto para arrasar com .htaccess.

4  Criação do Arquivo .htaccess:

$ cd  /var/www/html/test-dir1
$ vi  .htaccess

Escreva as seguintes linhas neste arquivo:

| AuthName "Usuários Autorizados Apenas." AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user testusr |

Agora eu vou explicar quais linhas mágicas escrevemos neste arquivo:

O parâmetro AuthName apenas define o título da caixa de entrada de senha quando o usuário faz login, enquanto o AuthType informa ao servidor que tipo de processamento está em uso, e Basic é o mais comum e perfeitamente adequado para quase qualquer propósito. AuthUserFile é usado para definir a localização do arquivo .htpasswd, este arquivo contém a senha do usuário que será autenticado no arquivo .htaccess. require user é usado para identificar o usuário confiável, se houver mais de um usuário confiável, você pode especificar seus nomes em uma lista separada por espaços.

Agora, para proteger test-dir2 com .htaccess, precisamos copiá-lo de test-dir1 para test-dir2 com o seguinte comando:

$ cp /var/www/html/test-dir1/.htaccess   /var/www/html/test-dir2/

5 Criação de Usuário:

Aqui criaremos um usuário de teste para verificar nosso .htaccess:)

$ adduser   testusr
$ passwd   testusr

6 Informando o Apache Sobre os Usuários:

Agora precisamos informar ao Apache sobre o usuário e sua senha, mas antes de entrar nesta etapa, há um dever social que tenho, ou seja, explicar a diferença entre a instalação do Apache via RPM e a instalação a partir do código-fonte. :) Se você instalou o Apache a partir do RPM, ele instalará todos os comandos relacionados em seu /usr/local/bin, então não há problemas, você pode usar o comando htpasswd em qualquer lugar do seu sistema, mas se você instalou o Apache a partir do código-fonte, então você precisa encontrar o diretório bin do Apache para executar o comando htpasswd. Neste HowTo, eu darei ambos os caminhos, aqui está:

$ htpasswd  -c /etc/httpd/conf/.htpasswd  testusr

O comando acima funcionará se você tiver htpasswd em seu /usr/local/bin e isso acontece se você instalar o Apache a partir do RPM. /etc/httpd/conf/.htpasswd é a localização do arquivo que conterá a senha do usuário autenticado/confiável.

OU

$ cd /apache/bin/
$ ./htpasswd -c /etc/httpd/conf/.htpasswd   testusr

Os comandos acima estão corretos se você instalou o Apache a partir do código-fonte, $ cd /apache/bin pode ser ajustado de acordo com seu sistema, pois talvez você o tenha instalado em outro lugar.

7 Permissão do Arquivo .htpasswd:

Precisamos definir a permissão do arquivo .htpasswd e tornar o usuário apache o proprietário deste arquivo.

$ chown apache.apache  /etc/httpd/conf/.htpasswd 

8  Editando httpd.conf:

Agora precisamos editar o httpd.conf, pois o Apache precisa ser informado sobre o .htaccess, aqui mudaremos AllowOverride All | none para AuthConfig, agora há dois casos, um se você estiver hospedando apenas um site e outro se você tiver VirtualHost, aqui está o Primeiro Caso:

Neste caso, temos apenas uma tag Directory no arquivo httpd.conf, pois estamos hospedando apenas um site, então editaremos a tag para /var/www/html.

| AllowOverride AuthConfig Order allow,deny Allow from all |

Agora para o segundo caso, quando temos vários sites hospedados, ou seja, VirtualHost:

| DocumentRoot /var/www/html/cbtcandy ServerName www.cbtcandy.org AllowOverride AuthConfig Order allow,deny Allow from all Options -Indexes |

9  Reiniciando o Apache:

Agora você precisa reiniciar o servidor Apache para recarregar a configuração.

Para sistema baseado em RPM:

$ service httpd restart

Para sistema baseado em código-fonte, ajuste o caminho do diretório bin do Apache.

$ /apache/bin/apachectl restart

10  Testando:

Agora tudo está pronto para ser testado, novamente abra seu navegador favorito e tente abrir os seguintes links:

http://localhost/test-dir1/

e

http://localhost/test-dir2/

Nota: Quando você navegar por esses links, será solicitado o nome de usuário e a senha, uma vez que você os forneça, será levado à página de teste. Mas uma vez que você faça login em um diretório, não será necessário o nome de usuário e a senha para o outro diretório de teste, pois o Apache não pedirá o nome de usuário e a senha repetidamente para diretórios iguais em nível ou subdiretórios. Portanto, uma vez que você esteja autenticado, os diretórios filhos e paralelos estão abertos para uso. Mas se você ainda quiser verificá-los, então use um navegador baseado em texto como links, que é o que eu faço para verificá-los.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.