Configurar alguma forma de autenticação de senha para um website pode ser uma parte crucial da partilha de conteúdo com utilizadores autorizados. Num artigo diferente discutimos como fazer exactamente isso usando algumas regras nifty .htaccess. Se você gostaria de ler mais sobre como isso é feito, você pode conferir nosso artigo, que cobre como proteger arquivos ou diretórios com .htaccess por senha. No entanto, você pode estar se perguntando como essas credenciais são validadas e onde elas são armazenadas? A resposta é com o arquivo .htpasswd, que será o foco deste artigo.
O que é .htpasswd?
Um arquivo .htpasswd é tipicamente usado ao proteger um arquivo, pasta ou site inteiro com uma senha usando autenticação HTTP e implementado usando regras dentro de um arquivo .htaccess. As credenciais do usuário são armazenadas em linhas separadas, com cada linha contendo um nome de usuário e senha separados por dois-pontos (:). Os nomes de usuário são armazenados em texto simples, porém as senhas são armazenadas em um formato de hash criptografado. Esta encriptação é normalmente MD5, embora no Linux ela possa ser baseada na função crypt(). Embora seja possível nomear o arquivo de senha como você quiser, isto não é fortemente aconselhado, pois o Apache é pré-configurado para usar .htpasswd por padrão, e arquivos de pontos (arquivos que começam com “.”) são geralmente arquivos ocultos.
Como criar um ficheiro .htpasswd?
Dependente da sua plataforma, isto pode ser conseguido de algumas formas diferentes. O método mais fácil é ir para um dos vários sites de criação de .htpasswd e seguir suas simples instruções para gerar as entradas necessárias para um arquivo .htpasswd. Eu recomendaria o gerador oferecido pelo htaccesstools.com, pois é muito simples e, para isso, vá verificar: Gerador de Htpasswd. Se você é como eu e gostaria de ver como isso é feito sem usar um gerador, fique por perto!
Primeiro você precisará ter um nome de usuário em mente, para este exemplo eu escolhi o nome de usuário bob123. A seguir você precisará estar logado no seu servidor via SSH, se você não tem certeza de como acessar seu servidor via SSH, por favor revise o seguinte artigo: Conectando-se ao Seu Servidor via SSH. Finalmente você executaria o seguinte comando, por favor note que se você executar isto como um usuário não root você precisará usar sudo.
htpasswd -c /home/usernamehere/.htpasswd bob123
Você será solicitado a fornecer e confirmar uma senha para este usuário. Se você gostaria de adicionar usuários adicionais você pode fazê-lo através do seguinte:
htpasswd /home/usernamehere/.htpasswd newUser2
Se você fosse verificar o conteúdo do arquivo .htpasswd você deveria ver algo similar ao seguinte.
bob123:$apr1$FaPCZHMe$jYiw5.9UevKx25pBH4AsT/newUser2:$apr1$mrCHcVhc$oNdJeRcWKPk2z8dlzQI0x/