我有一个Ubuntu的服务器11.10与Apache 2.2.20,PHP 5.3.6和Joomla CMS的安装。 我已经使用了一个额外的硬盘作为我的networking服务器存储,并将其挂载到/ data / www /(我希望这不是我们的问题所在!)。
我已经将我的web根目录中的所有文件和文件夹的权限设置为755,并且将它们的用户组设置为[默认ubuntu用户(在我的情况下是radio)]:www-data。
在过去的几天里,我有严重的问题joomla没有显示新的上传的图像和其他文件,我也不能安装任何扩展。 经过数小时的search,我发现上传的文件没有适当的权限(它们是-rw ——-),Joomla应用程序在上传后无法读取,复制或移动它们。
我想知道如何设置一个默认的权限,所以我上传的所有文件使用它?
PS:我testing过umask,但是什么也没做。 我认为这与我的问题无关。
你提到你尝试了umask,但它不起作用,但是你的问题听起来像是一个umask。 也许你可以重温呢?
有两个你可能遇到的陷阱,可能导致你认为umask不是问题:
www-data 。 请注意,具有WWW数据拥有文件的组/世界读取权限是不好的 – 任何其他的Web应用程序(所以基本上在服务器上的任何东西)将能够读取像数据库密码等configuration文件的东西。一个更好的解决scheme是mod_suexec但那么你必须去CGI模式configurationPHP和Apache MPM worker,这有点多。
不知道关于Joomla或你可能在虚拟机上处理的限制,但是怎么样的:
sudo chown -R www-data:www-data /data/www sudo chmod -R g+rws /data/www
使用chownrecursion地将用户:group设置为www-data:www-data,并且chown语句的g + s部分将确保由任何被允许的用户写入的文件保持所有者的组(GUID)。 r和w是通常的读写权限。
这就是我在Ubuntu / Apache上使用的,但我相信也可以对用户(SUID)进行相同的操作。 如果我的语法错误,也许其他人可以插入,但我相信这样的:
sudo chown -R www-data:www-data /data/www sudo chmod -R ug+rws /data/www
将只为用户和组设置读/写,并强制文件具有www-data:www-data用户:组。
但是,阅读SUID和GUID,通过这样做,您可以授予其他用户www-data的权限。 另外需要注意的是,如果你的驱动器安装了nosuid标志,这些都不会起作用。
您是否尝试过ACL(访问控制列表)? 它们允许将文件创build为特定目录中的特定文件权限。 我相信它比全球范围内的umask更具有全球性(如果我在下面的评论部分中我错了,请纠正我)。 这里是一个答案的链接,显示如何在目录https://stackoverflow.com/a/6550059/893659中设置访问控制列表。