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