我最近发现,只要我给出一个完整的path,我的Web服务器将为我的文件系统上的任何文件提供读取权限。 换句话说,就像
http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg
将愉快地由Web服务器服务。 尽pipe每个DocumentRoot设置只指向/Library/WebServer/Documents 。
为什么Apache服务于整个文件系统? 它可以被closures吗?
尝试寻找一个<Directory />部分,并确保该标签内的任何设置都是限制性的。
另外检查是否启用并configuration了mod_userdir。 寻找像UserDir这样的标签
我仍然不知道是什么原因造成的。
我发现它只从/Users/john提供文件,而不是文件系统的其余部分(服务器的正确文档根除外),所以我认为这是与某些巧妙的OS X文件共享某些东西的东西。
我检查了没有启用的mod_userdir 。 我检查了所有Directory和Location部分, 其中没有一个似乎允许访问/Users/john下的文件。 没有什么configuration中提到john ,我找不到任何匹配的正则expression式。 它似乎并没有涉及到文件扩展名(这将是有意义的“服务所有图像”或某事,但事实并非如此。)
所以我在几个小时后最终做了什么,在我的全局httpd.conf中添加了一个<Location /Users>部分,我禁止所有人访问,如下所示:
<Location "/Users"> Order Deny,Allow Deny from all </Location>
(这也正是我的<Directory />部分的样子,为了logging。)
这不是最好的解决scheme,但似乎拒绝访问不应该提供的文件。
既然这对我有用,我会接受它作为答案。 我很感谢Safado给我的帮助,如果有其他人来了,并且有任何线索,请张贴他们! 这台服务器很可能会服务至less一段时间,如果存在的话,我会很乐意尝试一个更合适的解决scheme。
Users -> /Users在文档根目录(我以前排除这是因为它没有服务任何用户的目录以外的john )。 我猜可能出于某种原因,运行Apache的www-data用户具有读取/Users/john文件系统权限,而不是/Users的其他目录,但是无论如何,删除符号链接解决了我的问题。