基于linux系统的web办事器架构传闻过良多年了,也用了好几年,不外都是用现成的运行环境,好比虚拟主机、共用VPS。亲手建设、把玩,我仍是第一回,初学过程的盘曲在料想当中,几次熬煎了两三天,终究弄清晰一些linux根本概念和nginx+php建设。今上帝要记实nginx+php环境下,本来理解的很混乱的网站目次权限设置。
因为对linux文件权限的概念不清晰,迁徙网站到VPS上时,担忧设置错了影响网站安然,刚好之前一个网站被挂了马,建设办事器时就出格在乎这事了。
建设权限的原则是,在包管网站正常运行下,尽可能给最低权限。
我的建设:
1、nginx过程用户是默许用户wwwboy;(临时还不知道nginx过程用户会对办事器甚么处所的权限有影响,建设nginx仿佛都没碰着权限设置标题问题)
2、php-fpm过程用户建设为wwwboy;
3、网站目次所有者设置为ftpuser,因为需要在FTP中对网站文件进行下载(读取)、上传(写进),ftpuser必定对网站目次有读写权限。
关头点:php-fpm 子过程所利用的用户,不克不及是网站文件所有者。这里保举一篇关于权限设置的文章《准确设置网站文件所有者 进步网站安然性 避免被挂木马》,我就是读完这篇文章才理解nginx、php-fpm、网站文件权限之间的关系和若何设置才安然。
上面保举的文章里也写了,网站文件所有者和php-fpm过程用户设为不合的好处是在PHP法度中没法对网站文件进行点窜,如许即便网站被挂马了,也能降落良多损掉,例如,对方没法在你的正常代码里混进后门。
之前总习惯性地把缓存目次权限设置为777,这回既然寄望到安然标题问题,就想趁便弄清晰一下缓存目次如何设置才准确合理并安然。其实,体味清晰linux文件权限分派编制,这个利诱也就开阔爽朗了:
假定网站缓存目次名为cache,其所有者为ftpuser。缓存文件是由php-fpm过程履行写进,相当于用户wwwboy要在用户ftpuser的目次cache里写文件,不被承诺的!是以,要分派给wwwboy对cache目次的写权限,chmod o+w -R cache便可,假定ftpuser与wwwboy统一个用户组,就chmod g+w -R cache。缓存目次不需要履行权限,所以以往设置777权限的做法相当粗拙,不外在利用虚拟主机的时辰,本身没法掌控办事器上各类设置,777也是最便捷做法了。
[2013-3-25更新]:缓存目次需要o+wx,添加x的启事是读取目次的时辰需要履行权限,不然文件是写不成功的。除非要生成的文件和写文件的脚本在统一个目次内,不需要读取目次的权限,也就不需要履行权限。道理:(此处感激 @lanisle)
On a directory, the execute permission (also called the "search bit") allows
you to access files in the directory and enter it, with the cd command, for
example. However, note that although the execute bit lets you enter the
directory, you're not allowed to list its contents, unless you also have the
read permissions to that directory.
以上便是对nginx+php网站目次权限安然设置的表述和理解,看起来像菜鸟根本班的笔记。别的,以往我对开源的伟大年夜魅力不觉得然,进修利用linux几天,开端有所体味。