admin管理员组文章数量:1542784
nginx、php-fpm和mysql用户权限
前言
通常情况下,我们运行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根目录下的etc\php-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
目录:
drwxr-xr-x 就是755
宝塔 php-fpm 给root权限
centos 7:
使用systemctl,Root 身份运行php-fpm
参考文献:https://blog.csdn/u012560213/article/details/80816103
宝塔 php-fpm 给root权限
/www/server/php/71/etc
[www]
listen.owner = root
listen.group = root
user = root
group = root
[root@bogon etc]# php-fpm -R # 重启php
nginx 配置修改
user root root;
[root@bogon etc]# ps aux | grep php # 查看运行进程
root 9186 0.0 0.1 352100 6876 ? Ss 17:59 0:00 php-fpm: master process (/www/server/php/71/etc/php-fpm.conf)
root 9187 3.1 2.2 406520 85652 ? S 17:59 0:09 php-fpm: pool www
root 9188 1.9 0.8 357276 33624 ? S 17:59 0:06 php-fpm: pool www
root 9189 1.8 0.8 357236 32396 ? S 17:59 0:05 php-fpm: pool www
root 9190 0.7 0.5 355088 22296 ? S 17:59 0:02 php-fpm: pool www
root 9191 0.7 0.5 355088 22568 ? S 17:59 0:02 php-fpm: pool www
root 9301 1.5 2.2 414624 89128 ? S 18:00 0:04 php-fpm: pool www
root 9305 0.6 0.5 355100 21644 ? S 18:00 0:01 php-fpm: pool www
root 9869 0.0 0.0 112812 968 pts/2 S+ 18:05 0:00 grep --color=auto php
[root@bogon etc]# vi /www/server/php/71/etc/php-fpm.d/www.conf.default
user = root
group = root
================php-fpm以root身份启动
[root@chaoge ~]# ps -aux | grep php-fpm
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 4539 0.0 0.0 205552 3716 ? Ss 10:22 0:00 php-fpm: master process (/etc/php-fpm.conf)
apache 4540 0.0 0.0 205552 3332 ? S 10:22 0:00 php-fpm: pool www
apache 4541 0.0 0.0 205552 3332 ? S 10:22 0:00 php-fpm: pool www
apache 4542 0.0 0.0 205552 3332 ? S 10:22 0:00 php-fpm: pool www
apache 4543 0.0 0.0 205552 3332 ? S 10:22 0:00 php-fpm: pool www
apache 4544 0.0 0.0 205552 3332 ? S 10:22 0:00 php-fpm: pool www
root 4556 0.0 0.0 103248 888 pts/1 S+ 10:22 0:00 grep php-fpm
找到 www.conf 文件:user = apache 改成 user = root
重新启动php-fpm
[root@chaoge ~]# php-fpm -R
[root@chaoge ~]# ps -aux | grep php-fpm
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 5497 0.0 0.0 205552 3712 ? Ss 10:36 0:00 php-fpm: master process (/etc/php-fpm.conf)
root 5498 0.0 0.0 205552 3196 ? S 10:36 0:00 php-fpm: pool www
root 5499 0.0 0.0 205552 3196 ? S 10:36 0:00 php-fpm: pool www
root 5500 0.0 0.0 205552 3196 ? S 10:36 0:00 php-fpm: pool www
root 5501 0.0 0.0 205552 3200 ? S 10:36 0:00 php-fpm: pool www
root 5502 0.0 0.0 205552 3200 ? S 10:36 0:00 php-fpm: pool www
root 5524 0.0 0.0 103252 888 pts/1 S+ 10:36 0:00 grep php-fpm
参考文献:https://www.qttc/461-php-fpm-run-as-root.html
1 编辑文件
[root@localhost etc]# vi /www/server/php/74/etc/php-fpm.conf
设置此四项为root
listen.owner = root
listen.group = root
user = root
group = root
修改后
[global]
pid = /www/server/php/74/var/run/php-fpm.pid
error_log = /www/server/php/74/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi-74.sock
listen.backlog = 8192
listen.allowed_clients = 127.0.0.1
listen.owner = root
listen.group = root
listen.mode = 0666
user = root
group = root
pm = dynamic
pm.status_path = /phpfpm_74_status
pm.max_children = 80
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 30
slowlog = var/log/slow.log
2、NGINX修改权限
3 重启PHP
[root@localhost etc]# php-fpm -R
[root@localhost etc]# ps -aux | grep php-fpm
root 13570 0.0 0.1 249732 7452 ? Ss 23:26 0:00 php-fpm: master process (/www/server/php/74/etc/php-fpm.conf)
root 13571 0.2 0.4 256400 18244 ? S 23:26 0:01 php-fpm: pool www
root 13572 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13573 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13574 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13575 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13587 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 14087 0.0 0.0 112812 972 pts/1 S+ 23:33 0:00 grep --color=auto php-fpm
版权声明:本文标题:宝塔 php-fpm 给root权限 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727081659a1096909.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论