用于生产的CakePHP app/tmp文件夹的正确所有权和权限是什么?

mgP*_*ePe 8 permissions cakephp production-environment

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

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

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

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

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

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

我听说如果一切正确设置,660应该足够生产.

谁需要read访问权限,谁需要write访问权限,是否有人需要execute

mgP*_*ePe 20

注意:我想我找到了答案,因为没有人写好答案,我会写出来.如果你对这个主题更了解并看到错误或安全问题,请告诉我,我会纠正它们.


1)CakePHP所有权

CakePHP文件应由您(机器的用户)拥有(无论您何时登录).没有root作为所有者!

OSX:johnsmith部分/Users/johnsmith

Linux系统:johnsmith部分/home/johnsmith


2)app/tmp所有权.

根据CakePHP 文档:

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

选项1:

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

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

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

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

选项2:

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

OSX:默认情况下OSX上的apache组与用户相同:_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需要readwrite不需要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/这意味着它将需要一个7而不是6现在用户760.


4)上传文件夹

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