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 запрещено.
Единственное отличие состоит в том, что исходный файл был скопирован на сервер с другого компьютера.
Любая идея, почему этот оригинальный файл не будет служить, но копия будет?
2 ответа
Ну, отключение 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.