nginx+PHP网站目录权限设置

发布时间:2020-07-31编辑:脚本学堂
在nginx与php环境下,务必要设置好nginx目录权限,安全的目录权限设置,将是网站安全的一道屏障,有需要的朋友做个参考吧。

本节内容:
nginx+php网站目录权限
配置权限的原则是,在保证网站正常运行下,尽量给最低权限。

nginx目录权限配置:

1、nginx进程用户是默认用户wwwboy;(暂时还不知道nginx进程用户会对服务器什么地方的权限有影响,配置nginx好像都没碰到权限设置问题)

2、php-fpm进程用户配置为wwwboy;

3、网站目录所有者设置为ftpuser,由于需要在FTP中对网站文件进行下载(读取)、上传(写入),ftpuser肯定对网站目录有读写权限。

关键点: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网站目录权限安全设置的表述和理解,希望对大家有所帮助。