Сценарии htdigest -c / path / to / file / $ user $ user $ пароль в Bash


8

Я хочу, чтобы иметь возможность сценария с паролем в переменной $ пароль.

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

На данный момент он просит меня ввести пароль вручную; это невозможно, так как это будет автоматическая установка с помощью PHP-скрипта. Может кто-нибудь показать мне, как это сценарий? Или эквивалентная скриптовая функция?

Ответы:


9

См. Https://stackoverflow.com/questions/645659/how-do-you-htdigest-400-user-accounts.

Самый простой метод, основанный на одном из предложений в ответе, получившем наибольшее количество голосов, это, вероятно, следующий:

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

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

Я использовал md5sumGNU coreutils, и awkне только md5потому, что это то, что я установил в своей системе, и меня не беспокоило, какой пакет содержит /usr/bin/md5- вы также можете использовать sha512sumили другую программу хеширования.

например, если user = foo , realm = bar и password = baz, то приведенная выше команда выдаст:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

htdigest не делает ничего волшебного или даже необычного - он просто выводит пользователя, область и пароль в правильном формате ... как это делает команда выше.

Удаление дайджеста для данного пользователя: область вместо простого добавления можно легко выполнить с помощью sed.

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

Обновление / изменение дайджеста для пользователя: область также может быть выполнено с помощью sed в сочетании с методом, описанным выше, для генерации строки дайджеста. например

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"

Круто: у P были некоторые проблемы, когда файл еще не существовал, поэтому я создаю файл перед запуском этого: o
Mr. King

0

Проверьте функцию 'proc_open' в PHP http://fr.php.net/manual/en/function.proc-open.php

Вы можете запустить htdigest с вашей опцией, а затем отправить в каналы новый пароль.

Вы, вероятно, можете найти / создать функцию PHP, которая выполняет работу htdigest. Должно быть проще, чем использовать proc_open ...


это намного сложнее, чем просто создать нового пользователя apache: p с использованием php не вариант
Mr. King
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.