www
当我以(apache 用户)身份登录时,我创建了符号链接:
ln -s /home/anotheruser/test /var/www/test
现在我转到我的mydomain.com/test
,并收到 403 错误。
/home/anotheruser/
具有权限764(组读写和公共读)其他用户和www在同一组中。
那么,我必须授予/home/anotheruser
文件夹什么权限才能使其正常工作?
答案1
确保已将 apache 配置为遵循符号链接
示例配置:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/test
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<VirtualHost>
答案2
此 HTTP 错误可能与文件系统本身无关,您可以选择列出所有文件(通常):
<VirtualHost *:80>
...
<Directory>
Options +Indexes
</Directory>
...
</VirtualHost>
可以解决问题,否则,如果没有诸如 chroot 之类的安全设置,您可以尝试直接从该目录访问文件。
答案3
这个答案有点长,但我认为背景在这里很重要,所以请耐心听完。
问题原因
当您使用符号链接时,您所说的内容本质上是“您不应该查看这里 (/var/www/test),而应该查看那里的目录 (/home/anotheruser/test)”。为了在提供 Web 文件时实现此功能,您需要做两件事:
- 运行 apache 的用户必须被允许读取该目录 - 在其他人的帮助下你已经正确完成了这一部分
- 必须配置 apache 以允许它从该目录提供文件 - 而这是缺少的部分。
举个例子:文件 /etc/passwd 是每个人都可以读取的。但是,您可能不希望它对整个世界都可读 - 因此,即使您要创建一个符号链接 ( ln -s /etc/passwd /var/www/test/passwd
),它仍然不可读,除非您明确告诉 apache 允许它从 /etc 访问文件。
如何修复此问题
您需要将文件移动到允许 apache 从中提供页面服务的目录,或者您需要允许 apache 从文件所在的目录提供页面服务。
解决方案 1 - 移动文件
最快的解决方案是转换符号链接 - 创建目录/var/www/test
,将 anotheruser 设为所有者,然后执行ln -s /var/www/test /home/anotheruser/
。这样,所有文件实际上都存储在下/var/www
,因此 apache 可以为它们提供服务。
解决方案 2 - 允许目录
在 httpd.conf 中添加一条指令,允许 apache 从 提供内容/home/anotheruser/test
。然后只需删除符号链接并设置一个别名即可。如下所示:
Alias /test /home/anotheruser/test
<Directory /home/anotheruser/test>
Order allow,deny
Allow from all
</Directory>