Scripting htdigest -c / path / to / file / $ user $ user $ password in Bash


8

Voglio essere in grado di script con una password nella variabile $ password.

htdigest -c /etc/apache2/pw/$user $user $password

Al momento mi chiede di inserire manualmente una password; questo non sarà possibile poiché sarà una configurazione automatizzata di uno script PHP. Qualcuno potrebbe mostrarmi come scrivere questo? O una funzione di script equivalente?

Risposte:


9

Vedi /programming/645659/how-do-you-htdigest-400-user-accounts

Il metodo più semplice, basato su uno dei suggerimenti nella risposta più votata, è probabilmente questo:

digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" | 
           md5sum | awk '{print $1}' )"

printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"

Ho usato md5sumda GNU coreutils e awkpiuttosto che solo md5perché è quello che ho installato sul mio sistema e non potrei preoccuparmi di scoprire quale pacchetto contiene /usr/bin/md5- potresti anche usare sha512sumo altri programmi di hashing.

ad es. se user = foo , realm = bar e password = baz, il comando sopra produrrà:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

htdigest non fa nulla di magico o addirittura insolito: emette semplicemente l'utente, il regno e la password nel formato giusto ... come fa il comando sopra.

Eliminare il digest per un determinato utente: il regno invece di aggiungerne uno, può essere facilmente eseguito con sed.

sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"

E aggiornando / cambiando il digest per un utente: il regno può anche essere fatto con sed in combinazione con il metodo sopra per generare la linea di digest. per esempio

digest="$( printf "%s:%s:%s" "$user" "$realm" "$new_password" | 
           md5sum | awk '{print $1}' )"

sed -i -e "/^$user:$realm:/ c$user:$realm:$digest" "/etc/apache2/pw/$user"

fantastico: P ha avuto alcuni problemi quando il file non esisteva già, quindi creo il file prima di eseguire questo: o
Mr. King

0

Controlla la funzione 'proc_open' in PHP http://fr.php.net/manual/en/function.proc-open.php

Puoi eseguire htdigest con la tua opzione, quindi inviare nei tubi la nuova password.

Probabilmente puoi trovare / creare una funzione PHP che faccia il lavoro htdigest. Dovrebbe essere più facile che usare proc_open ...


è molto più complesso della semplice creazione di un nuovo utente apache: usare php non è un'opzione
Mr. King
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.