授予 Apache 对我的主目录的写权限

授予 Apache 对我的主目录的写权限

在我的服务器上,我设置了多个用于不同目的的用户帐户,以将我的个人网站与半专业网站分开。

其中一些网站是 Wordpress 网站,我正在尝试启用图像上传。主目录中的文件显然归该特定用户所有,但是,我已将 Apache (www-data) 添加到该用户的组中,因此理论上如果我提供一个目录及其内容,chmod -R g+w那么该目录应该可由 Apache(和 PHP 进程)写入,对吗?

您可能明白,这不是当前正在发生的事情,我不确定如何实现这一点。我不想将所有文件分配给 www-data,然后将用户添加到 www-data 组。我认为文件首先应该属于用户,而 www-data 只有有限的权限。

修复和/或排除此故障的最佳方法是什么?

编辑:

感谢到目前为止的回复,我想指出的是,在我的开发机器(Ubuntu)上,我有完全相同的设置。Eclipse 项目存储在我的主目录的子目录中,只需在chmod -R g+w所需目录上执行,我就可以让 Apache 下的 PHP 进程写入这些目录。我没有为此使用任何 ACL。

然而,由于某种原因,在我的服务器上这不起作用,这有点令人费解。

更新 2:

我的开发机器和服务器之间可能的区别在于,我的开发机器上的文件是这样的:

-rw-r--r-- 1 luke luke 34 2012-11-14 04:30 .some.file

在我的服务器上它看起来像这样:

-rw-r--r-- 1 luke wheel 34 2012-11-14 04:30 .some.file

我猜想这里的群体是有影响力的。

答案1

我更喜欢使用 ACL 来实现这一点。例如:

setfacl -R -m user:www-data:rwx,d:user:www-data:rwx \
         /home/luke/www.luke.com/wp-content/uploads

授予www-data用户对上传目录及其下的所有内容的完全访问权限。

答案2

www-data 可以执行父目录吗?尝试 su - 到 www-data 用户,cd 到目录并触摸文件。如果您无法 cd 到目录,请尝试从 / 逐步更改目录。如果您的文件系统使用该选项挂载,ACL 也将起作用。

答案3

我不喜欢回答自己的问题,因为感觉浪费了大家的时间。

问题确实与我的用户和组设置为有关luke wheel。将其更改为和之后,luke luke一切chown -R luke:luke uploads似乎chmod -R g+w /home/luke/www.luke.com/uploads都有效。

相关内容