允许apache访问主目录中的子目录,而无需访问主目录

我正在运行带有加密主目录的Ubuntu 11.04桌面。 我在我的计算机上进行开发工作,我希望将我的webroot目录放在我的主目录中,以便用我的主目录的其余部分加密。 由于我是该机器的唯一用途,我想配置Apache直接指向它。

目前我已将/var/www文件夹更改为我的主目录中工作区的符号链接: /home/valorin/workspace

但是,这会在apache中抛出403 Forbidden错误。

我已将我的用户添加到www-data组中,并在工作区文件夹中设置所有权和权限:

 drwxrwxr-x 2 valorin www-data 4096 2011-04-23 10:02 workspace 

但我能让它工作的唯一方法是将我的家庭目录组改为www-data并设置权限。 我真的不想这样做,因为这意味着Apache可以访问我的家庭目录,并且可能被网络上的某个人用来访问我的个人数据。

有谁知道我怎么能解决这个问题?

您可以单独保留$ HOME目录所有权。 您无需将其设置为www-data。 您需要做的是确保Apache对$ HOME及其上方的所有内容具有执行权限。 所以,你可以这样做:

 chmod 751 "$HOME" sudo chmod 751 /home 

但是,$ HOME加密的事实可能会给Apache带来很大的问题,除非你能以某种方式配置Apache使用正确的解密密钥。

编辑:

设置目录的执行权限只意味着如果您已经知道其名称,并且您尝试访问的内容也具有正确的权限,则可以访问目录内的某些内容。 因此,只要所有其他文件都具有合理的权限,在$ HOME上设置全局x位并不会带来太大的安全风险。 您可能想要查看您的umask以确定。