9

我想知道以下问题的答案和解释:

  1. 哪个用户/组应该拥有蛋糕文件?

  2. 如果不同,哪个用户/组应该拥有该app/tmp文件夹?(和子文件夹)

  3. 使用正确的用户/组,生成文件夹和文件的正确权限是什么?(如果设置正确,这也应该适用于开发)

  4. 上传文件的存储在哪里完成以及需要为该文件夹设置哪些所有权/权限。它应该相对于app/哪里?

我知道 777 修复了错误,但我想正确设置它。

我听说如果一切设置正确,660 对于生产来说应该绰绰有余。

谁需要read访问,谁需要write访问以及是否有人需要execute

4

2 回答 2

22

注意:我想我已经找到了答案,由于没有人写出好的答案,所以我会写出来。如果您对该主题更了解并看到错误或安全问题,请告诉我,我会纠正它们。


1) CakePHP 所有权

CakePHP 文件应该归您所有,即机器的用户(无论您使用什么登录)。没有root作为所有者!

OSXjohnsmith:部分/Users/johnsmith

Linuxjohnsmith:一部分/home/johnsmith


2) 应用程序/tmp 所有权。

根据 CakePHP文档

...确保您的 cake 安装中的目录 app/tmp 及其所有子目录可由 Web 服务器用户写入。

选项1:

用户所有者需要是 apache 的用户。组所有者可以是您所属的组,因此您也可以通过 finder/CLI 访问此文件夹。没有root作为所有者!

OSX: Apache 最近预装在 OSX 上,apache 的默认用户是_www. 但是,如果您不确定是否可以通过ps aux | grep httpd在 apache 运行时键入终端来找到它。最后一行是您刚刚键入的命令,因此请查看它的上方。

现在您知道您的 apache 用户,您必须将其分配给app/tmp/. 您可以使用以下命令执行此操作:sudo chown -R _www app/tmp/

Linux:Linux上的默认用户通常是www-datagroup www-data。如果您不确定,请使用ps aux | grep httpd找出用户并将sudo chown -R _www app/tmp/所有权分配给该文件夹的 apache。

选项 2:

您可以将自己保留为用户所有者,但您将组所有者设置为 apache 所属的组。默认情况下 apache 有它自己的组,但你可以创建一个新组并将 apache 添加到它。

OSX:默认情况下,OSX 上的 apache 组与用户相同的 os: _www。然后,您必须运行以下命令来设置所有权:sudo chown -R :_www app/tmp/. 现在,如果您检查权限,ls -l您应该会看到您的用户名 ( johnsmith) 和新的组所有者 - _www

Linux:*默认情况下,apache 组www-data使用相同的命令来更改所有权:sudo chown -R :www-data app/tmp/.

注意:Debian/Ubuntu 使用www-data,而 CentOS 使用apache.


3) 权限

为了使站点运行,apache 需要read并且write没有execute. 为了让您访问它(假设您在拥有的组中app/tmp),您还需要read并且write如果您将使用终端/查找器手动编辑内容。所有其他用户都不应拥有任何权利。所以:

OSX&Linux: sudo chmod -R 660 app/tmp/ . -R部分是对所有内部文件夹递归地执行此操作。第一个6用于用户所有者(OSX:_www或 Linux: www-data),第二个6用于组所有者(OSX:staff或 Linux: johnsmith),0用于所有其他用户/来宾。

注意:根据这个对 CakePHP 的拉取请求,看起来 CakePHP 2.4 将能够在其中创建子文件夹,app/tmp/这意味着它需要 a7而不是6用户现在变成760.


4) 上传文件夹

如果要上传文件,则需要对img/uploads文件夹或上传位置进行类似设置。所有权将相同,但权限需要具有执行权限才能重命名和创建文件夹。所以以前660应该是现在760。此外,理想情况下,上传不在webroot/需要绝对路径的目录中。

于 2013-09-20T09:18:09.033 回答
1

对于Web 服务器进程中的所有文件app/tmp和子文件夹,如果rw需要使用 CLI,则需要控制台用户。

如果有人使用具有超级权限的用户或在错误的组中运行控制台命令,则会弄乱事情,因为一个人创建的内容无法从另一个人读取或写入,然后会出现警告或失败消息。有些人(包括我懒惰的时候)用777:)来解决这个问题

于 2013-09-20T02:33:43.150 回答