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

Почему Apache может получить доступ к большей части моей файловой системы?

Недавно я обнаружил, что пока я указываю полный путь, мой веб-сервер будет обслуживать любой файл в моей файловой системе, для которого у него есть права чтения. Другими словами, что-то вроде

http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg

будут с радостью обслужены веб-сервером. Это несмотря каждый DocumentRoot настройка, указывающая только на /Library/WebServer/Documents.

Почему Apache обслуживает всю файловую систему? Можно его выключить?

Попробуйте найти <Directory /> раздел и убедитесь, что любые настройки в этом теге являются ограничительными.

Также проверьте, включен ли и настроен ли mod_userdir. Ищите такие теги, как UserDir

Я до сих пор не понимаю, чем это вызвано.

Я обнаружил, что он обслуживает только файлы из /Users/john а не остальная часть файловой системы (кроме правильного корня документа для сервера), поэтому я предполагаю, что это что-то связано с каким-то умным обменом файлами OS X чем-то.

Я проверил mod_userdir, который не был включен. Я проверил все Directory и Location разделы, никто из которых, похоже, разрешает доступ к файлам в /Users/john. Ничего в конфигурации не упоминается john в частности, и я не могу найти никакого регулярного выражения, которое бы соответствовало этому. Кажется, это не связано с расширением файла (было бы разумно «обслуживать все изображения» или что-то в этом роде, но это тоже было не так).


Итак, через много часов я закончил добавление <Location /Users> раздел в мой глобальный httpd.conf где я отключил доступ для всех, вот так:

<Location "/Users">
        Order Deny,Allow
        Deny from all
</Location>

(Это именно то, что я <Directory /> раздел тоже выглядит, для протокола.)

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


Поскольку у меня это сработало, я приму это как ответ. Я благодарен за помощь, оказанную мне Safado, и если кто-нибудь еще придет в будущем и будет иметь какие-либо подсказки, пожалуйста, опубликуйте их! Скорее всего, этот сервер будет эксплуатироваться, по крайней мере, какое-то время дольше, и я был бы рад попробовать более подходящее решение, если оно существует.


Изменить: по-видимому, кто-то поместил символическую ссылку Users -> /Users в корне документа (я ранее исключал это, потому что он не обслуживал каталоги пользователей, кроме john). Я предполагаю, может быть, по какой-то причине www-data пользователь, который запускает Apache, имеет права файловой системы на чтение /Users/john но не другие каталоги внутри /Users, но в любом случае удаление символической ссылки решило мою проблему.