Vérifier l’utilisateur et le mot de passe par rapport à un fichier créé par htpasswd

Est-il possible, depuis la ligne de commande, de vérifier un utilisateur et un mot de passe par rapport à un fichier créé par htpasswd, l’outil fourni par Apache?

En supposant que vous créez le mot de passe en utilisant la commande suivante et “myPassword” comme mot de passe

 htpasswd -c /usr/local/apache/passwd/passwords username 

Cela va créer un fichier qui ressemble à

 username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

$ Apr1 $ est la méthode de hachage, sr15veBe est le sel et la dernière chaîne est le mot de passe haché. Vous pouvez le valider en utilisant openssl en utilisant

 openssl passwd -apr1 -salt sr15veBe myPassword 

qui va sortir

 $apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

Un pipeline que vous pourriez utiliser serait:

 username="something" htpasswd -c /usr/local/apache/passwd/passwords $username ****Enter password:**** salt=$($(cat passwords | cut -d$ -f3) password=$(openssl passwd -apr1 -salt $salt) ****Enter password:**** grep -q $username:$password passwords if [ $? -eq 0 ] then echo "password is valid" else echo "password is invalid" fi 

Vous devrez peut-être changer votre commande openssl, car la commande htpasswd d’Apache diffère légèrement de chaque système.

Pour plus d’informations, visitez la page Apache sur le sujet à l’ adresse http://httpd.apache.org/docs/2.2/misc/password_encryptions.html.

Vous pouvez utiliser l’outil htpasswd pour cela.

 # create htpasswd_file with user:password $ htpasswd -cb htpasswd_file user password Adding password for user user # verify password for user $ htpasswd -vb htpasswd_file user wrongpassword password verification failed $ htpasswd -vb htpasswd_file user password Password for user user correct. 

Le statut de sortie est 0 pour le succès, 3 pour l’échec.