Назад | Перейти на главную страницу

В доступе отказано: не удалось открыть файл паролей.

Я использую Apache Red Hat.

У меня есть .htaccess в моем / var / www / html с разрешениями, как указано ниже

-rwxr-xr-x. 1 apache apache 127 Dec 18 14:17 .htaccess

.htaccess имеет следующий набор данных внутри него

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /var/www/html/server-auth/.htpasswd
Require user manu

Разрешения на var / www / html / server-auth / .htpasswd

-rwxr-xr-x. 1 apache apache 40 Dec 16 19:11 .htpasswd

Когда я открываю свою веб-страницу в браузере и после ввода имени пользователя и пароля, снова появляется запрос на вход. Даже если имя пользователя и пароль верны.

Журналы ошибок:

(13) В доступе отказано: не удалось открыть файл паролей: /var/www/html/server-auth/.htpasswd

доступ к / не удалось, причина: проверка идентификатора пользователя 'manu' не настроена

Любая помощь!

У вас возникла эта проблема из-за контекста безопасности SELinux.

Чтобы преодолеть это, вам необходимо изменить метку selinux для соответствующего каталога / файла.

Вы можете узнать контекст безопасности процесса apache, используя ps axZ | grep httpd.

И проверьте то же самое для ls -Z /var/www/html/server-auth/.htpasswd

Чтобы настроить маркировку каталогов, попробуйте: chcon команда (это как chown). Чтобы сделать его постоянным, вы можете использовать: semanage команда.

Подробные инструкции и их необходимо прочитать здесь: https://wiki.centos.org/HowTos/SELinux

С включенным SELinux Apache не может читать файлы, если они не относятся к тому же домену, что и запущенный процесс.

Сначала проверьте типовой домен процесса httpd.

ps axZ|grep httpd

Во-вторых, проверьте домен типа файла .htpasswd.

ls -Z /var/www/html/server-auth/.htpasswd

Используйте команду chcon чтобы изменить домен файла в соответствии с доменом процесса httpd.

Пример:

chcon -Rv --type=httpd_sys_content_t /var/www/html/server-auth/.htpasswd

Это изменит его навсегда, но контекст SELinux по умолчанию будет повторно применен, если файловая система должна быть «перемаркирована». Если пользователь инициирует процесс изменения меток, SELinux будет читать правила из / etc / selinux / * / context / files и применять правила к файловой системе. Чтобы избежать этого при изменении файлов, измененных с помощью chcon вам нужно создать новое правило с помощью команды semanage.

Пример:

semanage fcontext -a -t httpd_sys_content_t /var/www/html/server-auth/.htpasswd

Использовать chcon сначала проверьте, просмотрев журнал аудита /var/log/audit/audit.log. Если вы уверены, что применяются правильные правила SELinux, сохраните изменения с помощью semanage.

Вы используете restorecon команду, если вам нужно отменить изменения. restorecon читает правила из / etc / selinux / * / context / files и применяет их к файловой системе.

Пример:

restorecon -v /var/www/html/server-auth/.htpasswd

Узнайте больше о SELinux на CentOS здесь https://wiki.centos.org/HowTos/SELinux.