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

Apache бросает 403 при обслуживании изображений из общего ресурса NFS

Я постоянно получаю ошибку 403 Permission Denied при попытке обслуживания изображений из apache, запущенного на машине A. Изображения находятся в каталоге, который является общим ресурсом NFS с машины B. Запись на машине B / etc / exports выглядит следующим образом: / dir / xxx.xxx.xxx.xxx (rw, sync, no_root_squash)

Я могу успешно просматривать смонтированные файлы / каталоги NFS на компьютере A.

После просмотра httpd.conf я также раскомментировал параметры EnableMMAP off и EnableSendFile Off, как написано там.

Обе машины на RHEL5.

Наконец решил это. Все это время это была проблема SELinux. Нашел решение здесь - http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/rhlcommon-section-0068.html

В Red Hat Enterprise Linux 4 наиболее целевые демоны не взаимодействуют с пользовательскими данными и на них не влияют домашние каталоги, подключенные к NFS. Одно исключение - Apache HTTP. Например, сценарии CGI, которые находятся в смонтированной файловой системе, имеют тип nfs_t, который не является типом, который разрешено выполнять httpd_t.

Установка разрешающего режима SELinux на соответствующих серверах сработала за меня.

NFS всегда вызывает такие забавные вещи, когда UID / GID выстраиваются неправильно.

Предполагая, что ваш веб-сервер работает от имени пользователя «apache», убедитесь, что права доступа к файлу таковы, что они доступны для чтения всем.

su пользователю apache и cd в каталог и попробуйте cat'ing файлы.

Скорее всего, проблема с разрешением. Если apache не записывает в каталог, ему все равно, находятся ли файлы, которые он читает, в NFS или чем-то еще.

В дополнение к предложению Мэтта также проверьте, разрешено ли Apache обслуживать файлы, из которых существует ваша точка монтирования NFS. В целях безопасности многие дистрибутивы Apache поставляются с такой ограничительной директивой:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

Это предотвращает обслуживание любых файлов из / и выше. Обычно у вас будет менее ограничительное правило, позволяющее другому каталогу, содержащему ваши DocumentRoots, обслуживать файлы немного более свободно.

Я не знаком с тем, как RHEL5 распространяет файлы конфигурации Apache. Но вам может потребоваться создать дополнительную директиву Directory, чтобы разрешить обслуживание файлов с точки монтирования.

У меня была именно такая проблема.

Я использую Xubuntu, и пользователь www-data (apache) не имел доступа к монтированию nfs.

до sudo mount -a точка монтирования была ...

drwxrwxrwx

но после

drwxrwx ---

кто-то упомянул об изменении группы каталога на www-data, но я просто изменил его обратно на 777 после монтирования. Мне нужно прочитать о монтированиях nfs, чтобы сделать это автоматически