htdbm - Управление базами данных паролей DBM
htdbm используется для управления файлами формата DBM, используемыми для хранения имен пользователей и паролей для базовой аутентификации HTTP-пользователей через mod_authn_dbm. См. документацию dbmmanage для получения дополнительной информации о файлах DBM.
Краткое описание
htdbm [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username
htdbm -b [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password
htdbm -n [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username
htdbm -nb [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username password
htdbm -v [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username
htdbm -vb [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password
htdbm -x [ -TDBTYPE ] filename username
htdbm -l [ -TDBTYPE ]
Параметры
-b- Использовать пакетный режим; т.е., получить пароль из командной строки вместо запроса его ввода. Этот параметр следует использовать с большой осторожностью, поскольку пароль явно отображается в командной строке. Для использования в скриптах см. параметр
-i. -i- Считывать пароль из стандартного потока ввода без проверки (для использования в скриптах).
-c- Создать passwdfile. Если passwdfile уже существует, он перезаписывается и обнуляется. Этот параметр нельзя комбинировать с параметром
-n. -n- Отображать результаты в стандартном потоке вывода вместо обновления базы данных. Этот параметр изменяет синтаксис командной строки, поскольку аргумент passwdfile (обычно первый) опускается. Он не может быть использован совместно с параметром
-c. -m- Использовать шифрование MD5 для паролей. По умолчанию используется на Windows и Netware.
-B- Использовать шифрование bcrypt для паролей. В настоящее время это считается очень безопасным.
-C- Этот флаг разрешен только в сочетании с
-B(шифрование bcrypt). Он устанавливает время вычислений, используемое алгоритмом bcrypt (больше – безопаснее, но медленнее, по умолчанию: 5, допустимые значения: от 4 до 31). -d- Использовать шифрование
crypt()для паролей. По умолчанию на всех платформах, кроме Windows и Netware. Хотя, возможно, поддерживаетсяhtdbmна всех платформах, он не поддерживается серверомhttpdна Windows и Netware. Этот алгоритм небезопасен по современным меркам. -s- Использовать шифрование SHA для паролей. Обеспечивает миграцию с/на серверы Netscape с использованием формата обмена каталогами LDAP (ldif). Этот алгоритм небезопасен по современным меркам.
-p- Использовать пароли в открытом виде. Хотя
htdbmбудет поддерживать создание на всех платформах, демонhttpdбудет принимать только пароли в открытом виде на Windows и Netware. -l- Вывести в стандартный поток вывода каждое из имен пользователей и комментариев из базы данных.
-v- Проверить имя пользователя и пароль. Программа выведет сообщение, указывающее, является ли предоставленный пароль действительным. Если пароль недействителен, программа завершается с кодом ошибки 3.
-x- Удалить пользователя. Если имя пользователя существует в указанном файле DBM, оно будет удалено.
-t- Интерпретировать последний параметр как комментарий. Когда этот параметр указан, к командной строке можно добавить дополнительную строку; эта строка будет сохранена в поле "Комментарий" базы данных, связанной с указанным именем пользователя.
filename- Имя файла в формате DBM. Обычно без расширения
.db,.pag, или.dir. Если указан-c, файл DBM создается, если он не существует, или обновляется, если он существует. username- Имя пользователя для создания или обновления в passwdfile. Если username не существует в этом файле, запись добавляется. Если она существует, пароль изменяется.
password- Пароль в открытом виде, который будет зашифрован и сохранен в файле DBM. Используется только с флагом
-b. -TDBTYPE- Тип файла DBM (SDBM, GDBM, DB или "default").
Ошибки
Следует учитывать, что существует несколько различных форматов файлов DBM, и, скорее всего, на вашей системе могут существовать библиотеки для более чем одного формата. Три основных примера: SDBM, NDBM, GNU GDBM и Berkeley/Sleepycat DB 2/3/4. К сожалению, все эти библиотеки используют различные форматы файлов, и вы должны убедиться, что формат файла, используемый filename, совпадает с форматом, который ожидает htdbm. htdbm в настоящее время не имеет возможности определить, какой тип файла DBM он просматривает. Если используется неправильный формат, программа просто ничего не вернет, или может создать другой файл DBM с другим именем, или в худшем случае может повредить файл DBM, если вы пытались записать в него.
Обычно можно использовать программу file, поставляемую с большинством систем Unix, чтобы определить формат файла DBM.
Код завершения
Программа htdbm возвращает нулевой код ("true"), если имя пользователя и пароль успешно добавлены или обновлены в файле DBM. Программа htdbm возвращает 1, если она сталкивается с проблемами доступа к файлам, 2, если возникла проблема с синтаксисом командной строки, 3, если пароль вводился интерактивно, и проверка не совпала, 4, если ее работа была прервана, 5, если значение слишком длинное (имя пользователя, имя файла, пароль или окончательный вычисленный записной), 6, если имя пользователя содержит недопустимые символы (см. раздел Ограничения), и 7, если файл не является допустимым файлом паролей DBM.
Примеры
htdbm /usr/local/etc/apache/.htdbm-users jsmith
Добавляет или изменяет пароль для пользователя jsmith. Пользователю будет предложено ввести пароль. Если сценарий выполняется на системе Windows, пароль будет зашифрован с использованием модифицированного алгоритма Apache MD5; в противном случае будет использована системная функция crypt(). Если файл не существует, htdbm ничего не сделает, кроме как возвратит ошибку.
htdbm -c /home/doe/public_html/.htdbm jane
Создает новый файл и сохраняет в нем запись для пользователя jane. Пользователю будет предложено ввести пароль. Если файл существует, но не может быть прочитан или записан, он не изменяется, и htdbm выведет сообщение и вернет код ошибки.
htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve
Шифрует пароль из командной строки (Pwd4Steve) с помощью алгоритма MD5 и сохраняет его в указанном файле.
Учет безопасности
Файлы паролей веб-приложений, такие как те, которые управляются htdbm, не должны находиться в пространстве URI веб-сервера – то есть их не должно быть доступно через браузер.
Использование параметра -b не рекомендуется, так как при его использовании незашифрованный пароль отображается в командной строке.
При использовании алгоритма crypt(), обратите внимание, что для формирования пароля используется только первые 8 символов пароля. Если предоставленный пароль длиннее, дополнительные символы будут молча отброшены.
Формат шифрования SHA не использует соление: для данного пароля существует только одно зашифрованное представление. Форматы crypt() и MD5 переупорядочивают представление, добавляя случайную строку соления, чтобы затруднить атаки типа "перебор паролей" против паролей.
Форматы SHA и crypt() небезопасны по современным стандартам.
Ограничения
В операционной системе Windows пароли, зашифрованные с помощью htdbm, ограничены максимальной длиной 255 символов. Пароли большей длины будут усечены до 255 символов.
Алгоритм MD5, используемый htdbm, специфичен для программного обеспечения Apache; зашифрованные с его помощью пароли не будут работать с другими веб-серверами.
Имена пользователей ограничены 255 байтами и не могут содержать символ :.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/programs/htdbm.html