Пункт 73. Страница руководства: htpasswd
htpasswd
используется для создания и обновления плоских файлов, используемых для хранения имен пользователей и паролей для базовой аутентификации пользователей HTTP. Если
htpasswd
нет доступа к файлу, например, невозможность записи в выходной файл или невозможность чтения файла для его обновления, он возвращает статус ошибки и не вносит изменений.
Ресурсы, доступные с HTTP-сервера Apache, могут быть ограничены только пользователями, перечисленными в файлах, созданных 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
- Создайте файл паролей . Если файл passwd уже существует, он перезаписывается и усекается. Эта опция не может быть объединена с
-n
опцией.
-
-n
- Отображать результаты на стандартный вывод, а не обновлять файл. Это полезно для создания записей паролей, приемлемых для Apache для включения в хранилища нетекстовых данных. Эта опция изменяет синтаксис командной строки, так как аргумент passwdfile (обычно первый) опущен. Не может сочетаться с
-c
опцией.
-
-m
- Используйте шифрование MD5 для паролей. Это значение по умолчанию (начиная с версии 2.2.18).
-
-B
- Используйте шифрование bcrypt для паролей. В настоящее время это считается очень безопасным.
-
-C
- Этот флаг разрешен только в сочетании с
-B
(шифрованием bcrypt). Он устанавливает время вычислений, используемое для алгоритма bcrypt (чем больше, тем безопаснее, но медленнее, по умолчанию: 5, допустимо: от 4 до 31).
-
-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
- Имя пользователя для создания или обновления в файле passwd . Если
имя пользователя не существует в этом файле, добавляется запись. Если он существует, пароль меняется.
-
password
- Открытый текстовый пароль, который будет зашифрован и сохранен в файле. Используется только с
-b
флагом.
Выход из состояния
htpasswd
возвращает нулевой статус ("true"), если имя пользователя и пароль были успешно добавлены или обновлены в
файле passwd . 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
байтами и не могут включать символ :
.