Apache Error AH01759: user not found in .htpasswd — Решение
При попытке пройти аутентификацию на закрытом ресурсе сервер возвращает ошибку 401 Unauthorized. В журнале error.log фиксируется отсутствие учетной записи в базе пользователей: [authn_file:error] [pid 1234:tid 5678] [client 10.0.0.1:45678] AH01759: user 'admin' in realm 'Restricted' not found in /etc/apache2/.htpasswd.
| Причина отказа | Что ищет Apache | Что реально находится в файле |
|---|---|---|
| Пользователь не заведен | Логин admin | Файл .htpasswd пуст или содержит других пользователей |
| Регистрозависимость | Логин Admin (с большой буквы) | В .htpasswd записан пользователь admin (в нижнем регистре) |
Ошибочный путь AuthUserFile | Файл /etc/apache2/.htpasswd | Директива указывает на пустой или устаревший файл |
- Apache не может сопоставить введенное имя пользователя с записями в файле провайдера
mod_authn_file. - Клиент получает отказ в доступе после ввода любых учетных данных.
- Проверьте список всех существующих пользователей внутри файла
.htpasswd:cut -d: -f1 /etc/apache2/.htpasswd - Если нужного пользователя нет в списке, добавьте его с помощью утилиты
htpasswd:sudo htpasswd -B /etc/apache2/.htpasswd admin - Проверьте директиву
AuthUserFileв конфигурационном файле виртуального хоста или.htaccessи убедитесь, что путь к файлу указан абсолютно точно:<Location /admin> AuthType Basic AuthName "Restricted" AuthBasicProvider file AuthUserFile /etc/apache2/.htpasswd Require valid-user </Location> - Убедитесь, что имя пользователя вводится с учетом регистра (в Linux имена
Userиuserявляются разными учетными записями). - Проверьте права на чтение файла:
sudo chmod 640 /etc/apache2/.htpasswd && sudo chown root:www-data /etc/apache2/.htpasswd. - Перезагрузите веб-сервер:
sudo systemctl reload apache2 # или httpd.
AuthName (Realm) задает текстовое описание защищаемой зоны, которое отображается пользователю в диалоговом окне браузера. Он также связывает сессию авторизации в браузере с конкретным ресурсом.Частые вопросы (FAQ)
Чем AH01759 отличается от AH01618?
AH01759 означает, что само имя пользователя (логин) отсутствует в файле .htpasswd, тогда как AH01618 означает, что пользователь найден, но введенный пароль не совпал с хэшем.
Что делать, если утилита htpasswd не найдена в системе?
Установите пакет утилит: sudo apt install apache2-utils (Debian/Ubuntu) или sudo dnf install httpd-tools (RHEL/CentOS).
Как ограничить доступ конкретным пользователем вместо Require valid-user?
Используйте директиву Require user admin manager (доступ получат только пользователи admin и manager, даже если в .htpasswd есть другие).
Можно ли использовать пробелы в именах пользователей в .htpasswd?
Имена пользователей в формате htpasswd не должны содержать символ двоеточия (:) и пробелы.