Сценарии htdigest-c/path/to/file/$user$user$password в Bash

Таким образом, Вы ожидали бы, что первые и вторые символы перезапишут выделенный текст, правильно?

Что делает xev печать?
(Выполните его от терминала, затем переместите мышь через окно, затем нажмите
Сдвиг Ctrl, Оставленный Оставленный b)

Для меня это делает это.

Нажатие и содержание Ctrl затем Сдвиг...

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143718968, (47,65), root:(48,147),
        state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143719024, (47,65), root:(48,147),
        state 0x14, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False

затем Оставленный, Левый...

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143720176, (47,65), root:(48,147),
        state 0x15, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143720280, (47,65), root:(48,147),
        state 0x15, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143720952, (47,65), root:(48,147),
        state 0x15, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143721040, (47,65), root:(48,147),
        state 0x15, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False

затем отпуская Ctrl и Shift...

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143723304, (47,65), root:(48,147),
        state 0x15, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143723304, (47,65), root:(48,147),
        state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False

затем нажимая a, b

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143724576, (47,65), root:(48,147),
        state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
        XLookupString gives 1 bytes: (61) "a"
        XmbLookupString gives 1 bytes: (61) "a"
        XFilterEvent returns: False

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143724672, (47,65), root:(48,147),
        state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
        XLookupString gives 1 bytes: (61) "a"
        XFilterEvent returns: False

    KeyPress event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143725048, (47,65), root:(48,147),
        state 0x10, keycode 57 (keysym 0x62, b), same_screen YES,
        XLookupString gives 1 bytes: (62) "b"
        XmbLookupString gives 1 bytes: (62) "b"
        XFilterEvent returns: False

    KeyRelease event, serial 33, synthetic NO, window 0x4c00001,
        root 0x109, subw 0x4c00002, time 143725136, (47,65), root:(48,147),
        state 0x10, keycode 57 (keysym 0x62, b), same_screen YES,
        XLookupString gives 1 bytes: (62) "b"
        XFilterEvent returns: False

Я особенно посмотрел бы на последние два блока, т.е. при выпуске Ctrl и Shift и затем при нажатии b, чтобы видеть, существуют ли какие-либо различия.

Другие мысли:

  • у Вас есть Липкие Ключи?
  • у Вас есть набор Ctrl+Shift для изменения раскладки клавиатуры или языка?
8
05.06.2016, 22:02
2 ответа

См. 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"

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

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

foo:bar:5bf2a4095f681d1c674655a55af66c5a

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

При удалении обзора для данного user:realm вместо того, чтобы просто добавить один, может легко быть сделан с sed.

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

И обновление/изменение обзора для user:realm может также быть сделано с 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"
8
27.01.2020, 20:12
  • 1
    :P имел некоторые проблемы, когда файл уже не существовал, таким образом, я создаю файл прежде, чем выполнить это: o –  Mr. King 21.08.2012, 14:27

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

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

Вы можете, вероятно, нашел/создал функцию PHP, которые делают htdigest задание. Это должно быть более легкое использование thant proc_open...

0
27.01.2020, 20:12
  • 1
    , который это намного более сложно, чем просто создание нового апачского пользователя :p с помощью php, не является потрясающей опцией –  Mr. King 21.08.2012, 14:26

Теги

Похожие вопросы