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

403 Запрещено для файлов с разными именами, но с одинаковым содержимым и разрешениями

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