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.