2014-06-10 5 views
12

C'è un modo, dalla riga di comando, per controllare un utente e una password rispetto a un file creato da htpasswd, lo strumento fornito da Apache?Verifica utente e password su un file creato da htpasswd

+0

Hmm. C'è un tag [tag: htpasswd] per domande sul programma 'htpasswd', ma il sistema non lo lascerà coesistere con il tag [tag: .htpasswd] ... – Charles

risposta

18

Supponendo che si crea la password utilizzando il seguente comando e "miaPassword" come password

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

Questo creerà un file che assomiglia

username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

Il $ apr1 $ è il metodo di hashing , sr15veBe è il salt, e l'ultima stringa è la password hash. È possibile convalidare utilizzando OpenSSL usando

openssl passwd -apr1 -salt sr15veBe myPassword 

che sarà in uscita

$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

Una pipeline che si potrebbe usare sarebbe:

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 

Potrebbe essere necessario cambiare il comando openssl, come Il comando htpasswd di Apache cripta in modo leggermente diverso su ciascun sistema.

Per ulteriori informazioni, visitare la pagina di Apache sul tema a http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

5

È possibile utilizzare lo strumento htpasswd per questo.

# 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. 

stato di uscita è 0 per il successo, 3 per il fallimento.