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

一、web服务器Nginx权限

PHP的运行框架通常都是结合Nginx组成LNMP或者结合Apache组成LAMP的架构,这里用Nginx作为例子讲述一下Nginx服务运行所需要的权限。

我们知道,Nginx本身不能解析PHP的语法,所以Nginx对于静态文件(如HTML等)会直接解析返回结果,但是对于PHP的文件,Nginx会转交给PHP的解释器php-fpm进行处理,处理完后再返回响应给客户端浏览器。

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

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

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

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

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

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

nginx.conf的配置:

二、php的权限配置

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

user = www

group = www

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

三、MySQL服务的权限配置

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

四、总结

nginx配置:

user www www;

php-fpm:

user = www

group = www

转自:https://blog.csdn.net/dream_successor/article/details/78615825?locationNum=8&fps=1

nginx php mysql分离,详解nginx、php-fpm和mysql用户权限相关推荐

  1. nginx文件系统大小_详解Nginx系列

    1.Nginx特点 Nginx是一个事件驱动架构,而非传统过程驱动架构.具有内存占用低,当并发连接大时,能够预测内存使用率.Nginx改变了传统的web服务器体系架构,提高了响应速度,起初Nginx开 ...

  2. linux下nginx启动不了,详解Nginx启动失败的几种错误处理

    使用Nginx做Web服务器过程中,碰到过以下几个问题: 1.nginx启动失败 启动nginx失败,报错信息如下: Starting nginx: nginx: [emerg] bind() to ...

  3. mysql revoke详解_【转】MySQL GRANT REVOKE用法

    MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revo ...

  4. nginx代理 指向_详解nginx配置url重定向-反向代理

    本文系统:Centos6.5_x64 三台主机:nginx主机,hostname: master.lansgg.com  IP: 192.168.10.128 apache主机,hostname: c ...

  5. mysql sql_mode 详解_五、被 MySQL sql_mode 深深伤害( 下 )

    当我们要重新设置 MySQL sql_mode 的时候,可能看到那一串长长的列表就会患头痛病,这哪个是哪个啊,哪个是重要的啊?哪个是可以缺少的啊? 我们就会想要呼唤一个简单的版本,要是有三个特殊的 s ...

  6. mysql between详解_(转载)MySQL BETWEEN 用法

    MySQL BETWEEN 语法 BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围.BETWEEN 同 AND 一起搭配使用,语法如下: WHERE column BET ...

  7. Nginx反向代理配置详解

    Nginx反向代理配置详解 Nginx简单的反向代理配置,包括配置文件中各项参数的的注释,好了,开始! 开始首先安装Nginx 一.建立用户和用户组 1 2 ./usr/sbin/groupadd w ...

  8. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  9. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...

最新文章

  1. 基于OpenCV的实时停车地点查找
  2. bottle模板 template/jinja2_template
  3. CentOS 7 如何按行删除文件内容
  4. php webserver documentroot,php – 在包含中使用$_SERVER [‘DOCUMENT_ROOT’]是个好主意?...
  5. linux下能运行python,(转)Linux下运行python
  6. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
  7. lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...
  8. x等于5y等于8c语言表达式,《C语言程序设计》复习参考题.doc
  9. Linux之常用操作命令总结二
  10. 灰度发布引擎java_基于Spring cloud ribbon实现灰度发布
  11. Mysql按时间区段(每隔30分钟)统计数据并展示
  12. 计算机本科毕业要求,计算机本科毕业论文要求.doc
  13. 采用Fuel Gauge可能出现的几种电量现象及解释
  14. html支持es6,ie不支持es6语法 浏览器怎么使用ES6的Proxy
  15. Oracle获取年月日时分秒毫秒微秒
  16. 京东入职一周感悟:4个匹配和4个观点
  17. Python读取Word文档内容
  18. 数据结构c语言版第四章题库,严蔚敏《数据结构(c语言版)习题集》答案第四章 串...
  19. uni-app 微信小程序 腾讯地图选点插件
  20. 美刊评选出25年十大牛股 微软思科甲骨文入选

热门文章

  1. JVM — 类加载机制
  2. 第58件事 借势文案创作实例
  3. React Native升级目标SDK
  4. Javascript 函数声明和函数表达式的区别
  5. CentOS6.5下通过yum仓库安装mysql
  6. Centos7下编译安装python2.7.10
  7. Xiotech任命新CEO EMC又少一员大将
  8. Hive学习笔记 —— Hive概述
  9. 看了《为什么你应该写博客》有感
  10. 【正一专栏】警察叔叔,我还是只是一个婴儿