在我的服务器上,我为不同的目的设置了多个用户帐户,以将我的个人网站与我的半专业网站分开。
其中一些网站是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
我想这里的团队有影响力。
我宁愿为此使用ACL。 例如:
setfacl -R -m user:www-data:rwx,d:user:www-data:rwx \ /home/luke/www.luke.com/wp-content/uploads
使www-data用户可以完全访问上传目录及其下的所有内容。
www-data可以执行父目录吗? 尝试su – 到www数据用户,cd到目录并触摸文件。 如果您不能cd到目录,请尝试从/中逐步更改目录。 如果使用该选项挂载文件系统,则ACL也可以工作。
我讨厌回答自己的问题,因为感觉我浪费了每个人的时间。
这个问题确实与我的用户和小组被设置为luke wheel的事实有关。 改变这个luke luke用chown -R luke:luke uploads和chmod -R g+w /home/luke/www.luke.com/uploads它似乎工作。