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

Apache ведет себя странно с символическими ссылками

У меня есть VPS с CentOS, и я столкнулся с очень странным поведением веб-сервера Apache.
Я запустил этот сервер с 50 ГБ дискового пространства, и вскоре у меня закончилось место, поэтому я попросил отдел обслуживания, и они добавили еще 50 ГБ в качестве нового жесткого диска. Итак, я создал новый раздел и смонтировал его в /home/media и я переместил все мультимедийные файлы своего веб-сайта в это место, и в конце я создал SymLink следующим образом:

lrwxrwxrwx.  1 apache apache    12 May 15 14:07 media -> /home/media/

Сегодня у меня снова закончилось место на диске, и на этот раз они добавили новый жесткий диск емкостью 100 ГБ. Я просто хотел сделать то же самое, что и для /home/media/ но на этот раз это называется /data/media.

lrwxrwxrwx.  1 apache pooya    12 Jun  9 22:43 media -> /data/media/

Теперь, когда я перехожу к файлам в папке мультимедиа в браузере, я получаю Forbidden 403 ошибка.

Я проверил журнал ошибок Apache, и он говорит: Символическая ссылка не разрешена или цель ссылки недоступна: / var / www / html / media.

Все решения этой ошибки в Интернете - это добавить Options Indexes FollowSymLinks или веб-сервер сталкивается с проблемами доступа к каталогу с привязкой к символу.

у меня есть FollowSymLinks как в файле конфигурации apache, так и в моем корне .htaccess файл. Все файлы и папки, а также их родители в /data/media/ изменены на 777 и большинство из них apache:apache.

Что не так с моим веб-сервером?

У вас почти никогда не должно быть разрешений 777 в вашем веб-дереве.

Вероятно, вам нужно исправить разрешения SELinux, поскольку / data / media не является стандартным местом для хранения веб-файлов. Вы можете быстро проверить это, временно отключив SELinux.

setenforce 0

Запустите несколько тестов, и если теперь веб-файлы доступны, виноват SELinux. Повторно включить Linux

setenforce 1

тогда устраните проблему

semanage fcontext -a -t httpd_sys_content_t "/data/media(/.*)?"

с последующим

restorecon -r -v /data/media

Теперь apache должен иметь доступ к файлам.


Утилита semanage предоставляется в пакете policycoreutils-python, поэтому вы можете установить ее с помощью

yum install policycoreutils-python