微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

整理总结nginx、php-fpm和mysql等的权限划分

本篇文章带大家聊聊PHP基础知识,深入了解一下NginxPHP-fpm和MysqL用户权限,希望对大家有所帮助!

通常情况下,我们运行web应用的服务器有CentOS、Ubuntu、Debian等等的Linux发行版本。这时候,构成服务架构所必须的NginxPHPMysqL等应用的权限控制就显得非常重要,各个服务对代码目录的权限要求各不相同,缺少某些权限会造成服务无法读写或运行的错误,降低了权限要求又会存在被入侵修改的隐患。这里我们就来总结一下NginxPHP-fpm和MysqL等等这些服务的权限划分。

一、web服务器Nginx权限

PHP的运行框架通常都是结合Nginx组成LNMP或者结合Apache组成LAMP的架构,这里用Nginx作为例子讲述一下Nginx服务运行所需要的权限。
我们知道,Nginx本身不能解析PHP的语法,所以Nginx对于静态文件(如HTML等)会直接解析返回结果,但是对于PHP文件Nginx会转交给PHP的解释器PHP-fpm进行处理,处理完后再返回响应给客户端浏览器

因此,我们代码目录下需要统一NginxPHP的服务所需权限。

①如果统一使用root用户,则一般游客账户无法访问应用,而Nginx配置成以root运行的话会存在很大的安全隐患,一旦被攻击就会被获取root身份进行系统的一切操作。

②而如果统一将代码目录权限全部设置为rwxrwxrwx,则存在用户直接通过浏览器修改代码目录的隐患。

所以最好的办法就是统一归类到一个新的用户组里面,通过给该用户组分配NginxPHP运行必要的权限,来实现对web应用的权限目录管理。通常情况下,许多团队都会把这个用户组取名www,由www用户统一管理代码目录权限

我们可以看到Nginx配置文件nginix.conf里面划分的运行权限就是配置到了www用户下,因此Nginx的子进程也是由www用户执行,可以通过ps aux | grep Nginx来查看:

1.png

可以看到Nginx的主进程是root,其余子进程均是www的用户

Nginx.conf的配置:

2.png

二、PHP的权限配置

同样的,PHP的运行方式也是由主进程root运行,在子进程池(pool)里面配置由www用户执行,具体配置在PHP根目录下的etc\PHP-fpm.conf下,添加两行:

user = www
group = www

即可,同样用ps aux | grep PHP可以查看进程使用的用户身份:

3.png

三、MysqL服务的权限配置

通过ps aux | grep MysqL可以看到MysqL服务是运行在MysqL用户下的,该服务只需要我们在PHP代码连接MysqL时带上MysqL用户名密码即可,不需要统一为www,因为数据层需要与业务逻辑层隔离开,保证底层数据的安全MysqL的授权主要是在MysqL服务内新增用户和划分权限,用来控制PHP不同业务以不同权限范围的身份去连接,确保数据安全。

4.png

四、总结

Nginx配置:

user www www;

PHP-fpm:

user = www
group = www

目录:

drwxr-xr-x 就是755

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐