Apache:chmod 755不足以在Mac OS 10.5的Apache httpd上设置符号链接或别名吗?


15

在我的Mac OS 10.5机器,我想建立的子文件夹~/Documents一样~/Documents/foo/htmlHTTP://本地主机/富

我想到要做的第一件事是使用Alias,如下所示:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

这使我成为403 Forbidden。在error_log中,我得到了:

[error] [client ::1] (13)Permission denied: access to /foo denied

有问题的子文件夹具有chmod 755访问权限。我试过指定像http://localhost/foo/test.php之类的东西,但是那也不起作用。接下来,我尝试了symlink路由。

进入/Library/WebServer/Documents并建立了符号链接~/Documents/foo/html。文件根目录有

Options Indexes FollowSymLinks MultiViews

这仍然让我成为403 Forbidden:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

我还需要设置什么?

解决方案

$ chmod 755 ~/Documents

通常,www服务用户需要查看要共享的文件夹及其所有祖先文件夹。


非常感谢您发布此解决方案-在花了很长时间寻找答案后,这确实帮助了我
Tomba 2012年

@Tomba没问题。
尤金·横田

Answers:


24

我敢打赌,您要访问的目录上方的某个目录没有权限允许Apache遍历该目录。成为运行Apache的用户(sudo -i -u apache或其他),然后尝试切换到目标目录及其中ls。如果不能(按预期方式),则尝试一个接一个地进入其上方的目录,直到一个让您进入。该目录的子目录是需要o+x设置的那个子目录。泡沫,冲洗,根据需要重复。


1
是的,如果“站点”正在运行,则说明文档可能有正确的问题,如果“站点”无法运行,则说明您的用户目录中可能存在了正确的问题(可以附加文件库)
半径

1
〜/ Documents is 700.
Eugene Yokota

如果我sudo -i -u _www在OS X上运行(因为OS X上的默认apache配置中的Apache用户是_www by),那么whoami我仍会获得我的用户名,而不是_www
Jason S

要使用sudo完全更改为另一个用户,我自己单独使用“-” :(sudo - www-data对于Ubuntu)。
Alexis Wilke

2

采用 +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

根据httpd.apache.org/docs/2.0/en/mod/core.html#options的说法,“如果Options指令上的所有选项都以+或-符号开头,则这些选项将合并。” 那将如何帮助〜/ Documents为700?
尤金·横田

AFAIK FollowSymLinks不启用该选项,仅允许在目录层次结构的较低级别上启用它。
戴夫·切尼

1
这对我来说是正确的答案。我在/ etc / apache2 / users中修改了conf文件,并允许使用FollowSymLinks(不带+)。记住要重启。
superluminary 2012年

1

检查以确保未启用文件库。我有同样的问题。我尝试了所有我能找到的东西。没事。但是经过一个小时的尝试,我回想起已启用文件库。

禁用它可以解决问题。


1

检查符号链接的所有权。由于您使用的是Mac OS X,因此可以更改符号链接所有者。在/Library/WebServer/Documentsls -l

如果您的符号链接~/Documents/foo/html被调用foo并具有以下权限

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

然后默认情况下,在OS X上,Apache作为_www用户和_www组运行,因此在上述情况下,它将无法遍历符号链接到 ~/Documents/foo/html

运行man 8 chown在它的在线系统终端,或旁观的人CHOWN

您将看到使用该-h选项将更改符号链接本身的所有权,而不是它指向的文件的所有权(源)。然后你可以做类似的事情

sudo chown -h :_www foo 

这会将simlink更改为

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

并且Apache _www组将能够遍历链接。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.