web-dev-qa-db-ja.com

htpasswdによって作成されたファイルに対してユーザーとパスワードを確認します

コマンドラインから、Apacheが提供するツールであるhtpasswdによって作成されたファイルに対してユーザーとパスワードをチェックする方法はありますか?

23
pupeno

次のコマンドと「myPassword」をパスワードとして使用してパスワードを作成するとします。

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

これは次のようなファイルを作成します

username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k.

$ apr1 $はハッシュ方式、sr15veBeはソルト、最後の文字列はハッシュされたパスワードです。あなたは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

Apacheのhtpasswdコマンドは各システムで少し異なる方法で暗号化するため、opensslコマンドを変更する必要があるかもしれません。

詳細については、 http://httpd.Apache.org/docs/2.2/misc/password_encryptions.html のトピックに関するApacheのページにアクセスしてください。

31

これには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 成功のために、 3失敗。

24
Eren Güven