* Você terá de usar o root para realizar essas configurações.
1. Abra o arquivo
/etc/apache2/apache2.conf com o editor de texto da sua preferência, ou use meu exemplo:
# vim /etc/apache2/apache2.conf
2. Verifique se a linha AccessFileName está desta forma:
AccessFileName .htaccess
3. Agora vamos criar o arquivo .htaccess e jogá-lo dentro do diretório.
Criar o diretório admin:
# mkdir /var/www/admin
Criar o arquivo .htaccess e acrescentar as linhas descritas (não digite o número das linhas, somente o conteúdo):
# vim /var/www/admin/.htaccess
1 AuthType Basic
2 AuthName "Digite usuário e senha"
3 AuthUserFile /etc/apache2/.htpasswd
4 Require valid-user
5 Satisfy Any
Explicando:
Linha 1: Isso significa que vou usar o tipo Base64 de transferência (que não é criptografado e sim codificado e é facilmente decodificado, explicarei aspectos relacionados a segurança logo mais neste tutorial).
Linha 2: Lembram da mensagem de resposta HTTP?
WWW-Authenticate: Basic realm="Digite seu usuário e senha"
Esta linha adiciona o rótulo da mensagem do Realm.
Linha 3: Digo que ele buscará a senha do arquivo de senhas /etc/apache2/.htpasswd.
Linha 4: Requer que exista um usuário válido a ser autenticado.
Linha 5: Satisfy pode ter dois valores All ou Any:
- o All diz que o usuário tem que passar na restrição de acesso (Required ou Allow, no nosso caso required) e entrar com um usuário e senha válidos para realizar a autenticação;
- o Any diz que o usuário tem que passar na restrição de acesso OU entrar com um usuário e senha válidos para realizar a autenticação.
4. Agora como foi visto acima, o arquivo de senhas /etc/apache2/.htpasswd tem que ser criado. Crio este arquivo facilmente com o comando
htpasswd da seguinte forma:
# htpasswd -c /etc/apache2/.htpasswd root
Onde:
Este comando pedirá senha para o usuário especificado, em nosso caso, root.
5. Reinicie o Apache:
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start
ou:
# /etc/init.d/apache2 restart
6. Agora a autenticação já tem de estar funcionando! Tente entrar pelo browser no seu servidor apache no diretório admin, em uma máquina "normal", a URL ficaria assim no browser:
http://localhost/admin
Se ele pedir usuário e senha quando esta URL for especificada, parabéns! Senão reveja novamente os passos deste tutorial, ou email-me. :D
Agora vocês vão me perguntar:
"Mas meu, você não falou que quando eu tenho acesso aos arquivos de configuração do Apache eu não devo criar arquivos .htaccess devido ao desempenho e mais a um monte de coisas?"
Eis que lhe responderei:
"SIM!"
Agora explicarei como você faria se tivesse acesso aos arquivos de configuração do Apache.