Я использую 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.