Я использую CentOS 6.3 и Apache 2.2.15.
Я использую настройки по умолчанию для apache. Файлы, которые я обслуживаю, находятся в
/var/www/html
Вот два из них
[root@gisele html]# ls -l *-production-1.0.6.pdf
-r--r--r--. 1 root root 171769 Jan 1 21:12 copy-installation-production-1.0.6.pdf
-r--r--r--. 1 root root 171769 Jan 1 20:59 installation-production-1.0.6.pdf
Файл копии - это файл, созданный путем выполнения
cp installation-production-1.0.6.pdf copy-installation-production-1.0.6.pdf
Через сопоставление виртуального хоста я получаю доступ к этим документам.
copy-installation-production-1.0.6.pdf
будет служить. installation-production-1.0.6.pdf
возвращает 403 запрещено.
Единственное отличие состоит в том, что исходный файл был скопирован на сервер с другой машины.
Есть идеи, почему этот исходный файл не будет служить, а его копия будет?
Что ж, отключение SELinux - это временное решение, а не решение. Мы не хотим заставлять Дэна Уолша плакать ;)
Попробуйте один из следующих вариантов:
chcon --reference=/var/www/html/FileThatCanBeServed /var/www/html/FileWithError403
или
chcon -R --reference=/var/www/html /var/www/html/
или
chcon -R -t httpd_sys_content_t /var/www/html/
Всегда проверяйте контекст SELinux файлов, доступных с ls -lZ
, затем используйте chcon
с --reference
возможность скопировать контекст в другие файлы.
Ага, SELinux. Такая же проблема, как и в этом вопросе: Apache обслуживает одни файлы, другие получают 403
Отключите SELinux как решение.
http://www.crypt.gen.nz/selinux/disable_selinux.html
В установке CentOS должно быть приглашение
Is this machine primarily a
Server (1) / Desktop (2)
1/2...? 1
Would you like to run into bizarre errors later on?
Y/N...? y
Installing SELinux.