htpasswd — управление файлами пользователей для базовой аутентификации
htpasswd используется для создания и обновления обычных файлов, в которых хранятся имена пользователей и пароли для базовой аутентификации пользователей HTTP. Если htpasswd не может получить доступ к файлу, например не может записать выходной файл или прочитать файл для его обновления, программа возвращает код ошибки и не вносит изменений.
Доступ к ресурсам сервера Apache HTTP можно ограничить пользователями, перечисленными в файлах, созданных с помощью htpasswd. Эта программа может управлять только именами пользователей и паролями, хранящимися в обычном файле. Однако она может хешировать и отображать сведения о паролях для использования с другими типами хранилищ данных. Для работы с базой данных DBM см. dbmmanage или htdbm.
htpasswd хеширует пароли с помощью bcrypt, модифицированной для Apache версии MD5, SHA-1 или системной процедуры crypt(). Хеши на основе SHA-2 (SHA-256 и SHA-512) поддерживаются для crypt(). Файлы, которыми управляет htpasswd, могут содержать пароли в разных форматах кодирования; некоторые записи пользователей могут содержать пароли, хешированные с помощью bcrypt или MD5, а другие записи в том же файле — пароли, хешированные с помощью crypt().
На этой справочной странице перечислены только аргументы командной строки. Сведения о директивах, необходимых для настройки аутентификации пользователей в httpd, см. в руководстве Apache, которое входит в дистрибутив Apache или доступно по адресу http://httpd.apache.org/.
Краткое описание
htpasswd [ -c ] [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username
htpasswd -b [ -c ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username password
htpasswd -n [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username
htpasswd -nb [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username password
Параметры
-b- Использовать пакетный режим; то есть, получать пароль из командной строки, а не запрашивать его. Этот параметр следует использовать с особой осторожностью, поскольку пароль отображается в командной строке в открытом виде. Для использования в сценариях см. параметр
-i. Доступен начиная с версии 2.4.4. -i- Считать пароль из стандартного ввода без проверки (для использования в сценариях).
-c- Создать файл passwdfile. Если файл passwdfile уже существует, он перезаписывается и усекается. Этот параметр нельзя сочетать с параметром
-n. -n- Выводить результаты в стандартный вывод, а не обновлять файл. Это полезно для создания записей паролей, допустимых для Apache, чтобы включить их в нетекстовые хранилища данных. Этот параметр изменяет синтаксис командной строки, поскольку аргумент passwdfile (обычно первый) опускается. Его нельзя сочетать с параметром
-c. -m- Использовать хеширование MD5 для паролей. Это значение по умолчанию (начиная с версии 2.2.18).
-2- Использовать хеширование на основе SHA-256
crypt()для паролей. Поддерживается на большинстве платформ Unix. -5- Использовать хеширование на основе SHA-512
crypt()для паролей. Поддерживается на большинстве платформ Unix. -B- Использовать хеширование bcrypt для паролей. В настоящее время этот метод считается очень безопасным.
-C- Этот флаг разрешено использовать только вместе с
-B(хеширование bcrypt). Он задаёт время вычисления, используемое алгоритмом bcrypt (большее значение повышает безопасность, но замедляет работу; по умолчанию: 5, допустимые значения: от 4 до 17). -r- Этот флаг разрешено использовать только вместе с
-2или-5. Он задаёт количество раундов хеширования для алгоритмов SHA-2 (большее значение повышает безопасность, но замедляет работу; значение по умолчанию — 5 000). -d- Использовать хеширование
crypt()для паролей. Эта возможность не поддерживается серверомhttpdв Windows и Netware. Этот алгоритм ограничивает длину пароля 8 символами. По современным стандартам этот алгоритм небезопасен. До версии 2.2.17 он использовался по умолчанию. -s- Использовать хеширование SHA-1 (160 бит) для паролей. Упрощает переход на серверы Netscape и с них с использованием формата обмена каталогами LDAP (ldif). По современным стандартам этот алгоритм небезопасен.
-p- Использовать пароли в открытом виде. Хотя
htpasswdподдерживает их создание на всех платформах, демонhttpdпринимает пароли в открытом виде только в Windows и Netware. -D- Удалить пользователя. Если имя пользователя существует в указанном файле htpasswd, оно будет удалено.
-v- Проверить пароль. Проверить, совпадает ли указанный пароль с паролем пользователя, сохранённым в указанном файле htpasswd. Доступен начиная с версии 2.4.5.
passwdfile- Имя файла для хранения имени пользователя и пароля. Если указан параметр
-c, этот файл создаётся, если он ещё не существует, либо перезаписывается и усекается, если уже существует. username- Имя пользователя, которое нужно создать или обновить в файле passwdfile. Если username отсутствует в этом файле, добавляется запись. Если оно уже есть, пароль изменяется.
password- Пароль в открытом виде, который нужно хешировать и сохранить в файле. Используется только с флагом
-b.
Код завершения
htpasswd возвращает нулевой код («истина»), если имя пользователя и пароль успешно добавлены в passwdfile или обновлены в нём. htpasswd возвращает 1 при возникновении проблем с доступом к файлам, 2 при синтаксической ошибке в командной строке, 3 если пароль вводился интерактивно, а проверочный ввод не совпал, 4 если выполнение программы было прервано, 5 если значение слишком длинное (имя пользователя, имя файла, пароль или итоговая запись), 6 если имя пользователя содержит недопустимые символы (см. раздел Ограничения) и 7 если файл не является допустимым файлом паролей.
Примеры
htpasswd /usr/local/etc/apache/.htpasswd-users jsmith
Добавляет или изменяет пароль пользователя jsmith. Программа запрашивает пароль. Пароль будет хеширован с помощью модифицированного алгоритма MD5 Apache. Если файл не существует, htpasswd ничего не сделает и вернёт ошибку.
htpasswd -c /home/doe/public_html/.htpasswd jane
Создаёт новый файл и сохраняет в нём запись для пользователя jane. Программа запрашивает пароль. Если файл существует, но его невозможно прочитать или записать, он не изменяется, а htpasswd выводит сообщение и возвращает код ошибки.
htpasswd -db /usr/web/.htpasswd-all jones Pwd4Steve
Шифрует пароль из командной строки (Pwd4Steve) с помощью алгоритма crypt() и сохраняет его в указанном файле.
Рекомендации по безопасности
Файлы веб-паролей, например те, которыми управляет htpasswd, не должны находиться в пространстве URI веб-сервера — то есть доступ к ним не должен быть возможен через браузер.
Эту программу небезопасно использовать как исполняемый файл с установленным битом setuid. Не устанавливайте для неё бит setuid.
Использование параметра -b не рекомендуется, поскольку при его использовании пароль в открытом виде отображается в командной строке.
При использовании алгоритма crypt() учитывайте, что для формирования пароля используются только первые 8 символов. Если введённый пароль длиннее, лишние символы будут отброшены без предупреждения.
Формат хеширования SHA-1 не использует соль: каждому паролю соответствует только одно хешированное представление. В форматах crypt() и MD5 представление изменяется добавлением в начало случайной строки соли, что затрудняет словарные атаки на пароли.
Форматы SHA-1 и crypt() по современным стандартам небезопасны.
Форматы crypt() на основе SHA-2 (SHA-256 и SHA-512) поддерживаются в большинстве современных систем Unix и соответствуют спецификации по адресу https://www.akkadia.org/drepper/SHA-crypt.txt.
Ограничения
В Windows длина паролей, хешированных с помощью htpasswd, не должна превышать 255 символов. Более длинные пароли усекаются до 255 символов.
Алгоритм MD5, используемый htpasswd, разработан специально для программного обеспечения Apache; пароли, хешированные с его помощью, нельзя использовать с другими веб-серверами.
Длина имени пользователя ограничена 255 байтами; оно не может содержать символ :.
Вычислительная сложность создания хеша пароля bcrypt возрастает с увеличением числа раундов, заданного параметром -C. Библиотека apr-util ограничивает число раундов значением 17 в версии 1.6.0 и более поздних.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/programs/htpasswd.html