Apache 和 Linux 文件权限

Apache 和 Linux 文件权限

我最近将 Symfony 1.3.2 网站(一个 PHP 网络框架)从 Windows 机器迁移到了 Linux(Ubuntu 9.10)。

从那时起,我遇到了各种涉及文件权限的问题(即使该应用程序在 Windows 上运行时没有任何这些问题)。

我运行 symfony fix-perms,它将 777 掩码应用于 Web 目录(大概包括其子文件夹) -(顺便说一句)我认为这是一个潜在的安全漏洞...我一直想来这里询问如何正确设置权限。

目前,当我尝试从我的网站保存文件时,出现以下错误:

PHP 警告:imagejpeg() [0function.imagejpeg0]:无法打开‘/home/morpheous/work/webdev/frameworks/symfony/sites/project1/web/uploads/../images/thumbnail/959cd604cf6115014a3703bef5a50486a5520642.jpg’进行写入:/home/morpheous/work/webdev/frameworks/symfony/sites/project1/apps/frontend/lib 中的权限被拒绝

以下是文件夹的权限:

web
drwxr-xr-x 16 morpheous morpheous 4096 2010-02-24 21:01 web


web/uploads/../images
drwxr-xr-x 13 morpheous morpheous 12288 2010-04-09 15:25 images


web/uploads/../images/thumbnail
drwxr-xr-x 3 morpheous morpheous  4096 2010-02-24 20:44 thumbnail

有人能告诉我如何设置权限,以便我的网站(大概作为 Apache 守护程序运行)可以将文件写入上面所需的目录吗?

答案1

对于 ubuntu,apache 和 PHP 用户是 www-data。

运行sudo chown www-data:www-data web/uploads/ -R并查看是否能解决您的问题。

另外,不要使用 777 作为文件权限,正如 Ignacio Vazquez-Abrams 所述,“文件权限为 0444 或 0664,目录权限为 0555 或 0775”

答案2

最重要的是,Web 服务器以读取或写入方式访问的文件通常应由运行 Web 服务器的用户和组拥有(apache:apache或者nobody:nobody,不确定 Ubuntu 上的确切值)。

从那里开始,用户应该r对文件和rx目录具有权限,除非需要写入权限。组通常应与用户权限相匹配。其他所有人都应具有只读权限。这转化为文件的04440664,以及目录的0555或。0775

当然,你可能有在特定位置打破这种方案的理由,但这些是你应该具备的基本价值观。

相关内容