我想使用我的 Dropbox/Web 目录作为 LAMP 的服务器目录。我更改了/etc/apache2/sites-available/default
DocumentRoot /home/me/Dropbox/Web #changed from /etc/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/me/Dropbox/Web/> #changed from /etc/www
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
现在我得到了
Forbidden
You don't have permission to access / on this server.
Apache/2.2.22 (Ubuntu) Server at localhost Port 80
答案1
www-data
,Apache 运行的组/用户无权读取您的主目录。
您可以使用常规权限来更改这一点,正如 gertvdijk 在其答案中所解释的那样。
我会考虑使用acl
常规权限,允许向 apache 添加权限,而不是替换主目录中的组或使目录可读。
为此,您需要安装 acl:
sudo apt-get install acl
您可以使用man setfacl
来获取更多信息。
要向 apache 添加权限:
sudo setfacl -m d:g:www-data:X,g:www-data:X /home/me
sudo setfacl -m d:g:www-data:X,g:www-data:X /home/me/Dropbox
sudo setfacl -Rm d:g:www-data:rX,g:www-data:rX /home/me/Dropbox/Web
第一个和第二个命令将允许 Apache (www-data) 仅通过您主目录中的路径(不允许其他子目录)更改目录。如果您使用默认配置,则可能不需要它们,但是如果您已经更改权限(或将来会更改)以禁止other users
在您的主目录中读取,则需要它们。
第三个是允许 Apache 读取和更改 Dropbox/web 和子目录中的目录的命令。
注意:大写字母X
只对目录起作用,而小写字母则x
对文件和目录都起作用(这样 apache 用户只能更改目录,而不能执行文件)。
答案2
Apache 可能无法读取您的 Dropbox 目录。在 Ubuntu 中,Apache 配置为以用户身份运行www-data
。请确保您在文件系统上设置权限以允许 Apache 读取整个路径。
要测试这是否确实是您的问题,请尝试在终端中
sudo su -l www-data -s /bin/bash
然后cd
一步一步进入你的 Dropbox 文件夹:
cd /home
cd me
cd Dropbox
cd Web
修复权限,例如
chmod o+rx
在目录和chmod o+r
文件上,或者- 更改文件/目录的组
chgrp www-data
并仅允许该www-data
组读取/访问:chmod g+r
针对文件和chmod g+rx
目录。