terça-feira, 17 de agosto de 2010

Protegendo pastas do Apache com senha de acesso

Muitas vezes quando estamos utilizando um servidor apache, seja no trabalho ou por diversão, criamos diretórios que não gostariamos que todos vissem, apenas pessoas autorizadas. Para resolver este problema existe uma maneira fácil, simples e rápida.

Vamos usar o comando htpasswd

Como configuração inicial utilize o comando

htpasswd -c /diretorio/arquivo_senha usuario

Explicando o comando:

o Parâmetro -c cria um novo arquivo, se o arquivo já existir ele sobreescreve, perdendo as informações anteriores.

/diretorio/arquivo_senha é o caminho onde esta ou estará o arquivo com as senhas. Algumas pessoas usam por padrão o diretório que irá ser protegido. Eu prefiro um diretório diferente, assim podemos padronizar as senhas, usando o mesmo arquivo de usuários para mais de uma pasta e deixando-o num local fora das pastas do apache.

usuario - aqui você coloca o login do usuário para acessar a pasta (este login não tem relação com os logins do linux, não é necessário criá-lo no servidor e sua única função  é o acesso à pasta do apache definida).

Logo após o comando ele pedirá para digitar a senha para o usuário, e criará o arquivo.

Para cadastrar novos usuários sem excluir os anteriores, mantendo o arquivo, use a mesma sintaxe sem o parâmetro -c

htpasswd /diretorio/arquivo_senha usuario

Também pode ser cadastrado desta forma:

htpasswd -b /diretorio/arquivo_senha usuario senha

Para deletar use o parâmetro -D

htpasswd -D /diretorio/arquivo_senha usuario


Após criar o arquivo devemos modificar o arquivo de configurações do apache que se encontra por padrão no caminho /etc/apache2/apache2.conf.
Adicione as seguintes linhas:

<directory "/var/www/minha_pasta/">
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Pasta Restrita"
AuthUserFile
 "/etc/meu_arquivo_de_senhas"
Require valid-user

</directory>



Na primeira linha, em <directory "/var/www/minha_pasta">, você deve modificar para o diretório que você quer definir a restrição.
Authname - é onde você coloca o título que irá aparecer na janela de autenticação.
AuthUserFile - você indica o caminho do arquivo de senhas.
Require - Caso você deseje que todos os usuários que estejam cadastrados no arquivo de senhas tenham acesso, deixe valid-user. Você pode modificar valid-user para um usuário específico, cadastrado no arquivo.

É necessário criar um bloco para cada diretório diferente que você queira proteger. As subpastas são automaticamente protegidas.

Após feita as modificações, salve o arquivo e reinicie o apache:

/etc/init.d/apache2 stop
/etc/init.d/apache2 start


O controle de acesso já deverá estar funcionando na pasta cadastrada.

"That's all folks" =)

Nenhum comentário:

Postar um comentário