项目在本地windows上运行好好地,上传到linux系统上就各种权限问题,很是烦恼,当时就想:哪里有问题,哪里777~~~
虽然这样当时是没有问题的,但是在安全性上是也就降低了,找了个时间找了一些资料,发现一个还比较好的
服务器上项目是放在/alidata/www/default这个文件夹下
如果使用root 用户上传项目,则全部默认所有者和组为root,但是我仔细看了一下默认的那几个文件的所有者和组都是www
根据文档和自己的思考,设置步骤如下:
1、把网站目录和文件所有者和组都设置为www
chown -R www:www /alidata/www/default
2.设置网站目录权限为750,750是www这个用户对目录拥有读写执行的权限,这样www用户可以在任何目录下创建文件,用户组有有读执行权限,这样就有进入目录的权限,其它用户没有任何权限。
chmod 750 /alidata/www/default cd /alidata/www/default find -type d -exec chmod 750 {} \;
3.设置网站文件权限为640,640指只有www用户对网站文件有更改的权限,apache服务器只有读取文件的权限,无法更改文件,其它用户无任何权限。
find -not -type d -exec chmod 640 {} \;
4.需要针对个别目录来设置权限,以Thinkphp为例,它的Runtime 目录存储的有日志文件,还有与数据库做ORM映射的数据库表信息,这说明apache服务器要对这些目录
有访问的权限,并且对于线面的日志文件有写入的权限,那么这样就需要对于这些特殊目录设置。
cd /alidata/www/default find . -name "Runtime" -type d -exec chmod -R 770 {} \;
执行上面的命令请注意 “{}”与 “\”之间是有空格的,上面的-R参数是递归给Runtime 目录下面的目录和文件赋予 770 权限,当然了你会说日志文件是不需要执行权限的,
不过这里没关系,当你把日志文件删除掉之后,生成出来的文件是没执行权限的。因为当你把日志文件删除掉之后,那么生成日志文件的的用户和所有者都是www
这样整个站点你就可以通过这种方式管理起来了。文档参考:http://www.cnblogs.com/stackflow/p/3928407.html
使用过程中发现我用的百度编辑器还不正常,我想起来我的一些外部插件都放在根下public下了,并且上传图片会放到upload下
所以照葫芦画瓢public下插件和upload750权限,default目录下执行以下命令
find . -name "Uploads" -type d -exec chmod -R 770 {} \; find . -name "Public" -type d -exec chmod -R 770 {} \;
这样就搞定了~~~