根据htpasswd创建的文件验证用户和密码

时间:2014-06-10 17:12:13

标签: apache .htpasswd

有没有办法从命令行检查用户和密码来检查由Apache提供的工具htpasswd创建的文件?

2 个答案:

答案 0 :(得分:19)

假设您使用以下命令和" myPassword"创建密码。作为密码

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

这将创建一个看起来像

的文件
username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k.

$ apr1 $是散列方法,sr15veBe是salt,最后一个字符串是散列密码。您可以使用

使用openssl对其进行验证
openssl passwd -apr1 -salt sr15veBe myPassword

将输出

$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k.

您可以使用的管道是:

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

您可能需要更改openssl命令,因为Apache的htpasswd命令在每个系统上的隐藏方式略有不同。

有关更多信息,请访问位于http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

主题的Apache页面

答案 1 :(得分:12)

您可以使用getattr()工具。

htpasswd

退出状态为# 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. 表示成功,0表示失败。