php root 启动,php-fpm如何以root身份启动

本文详细介绍了如何在php-fpm中以非root用户启动,避免安全隐患。通过修改配置文件和使用php-fpm的-R选项,成功让php-fpm以指定用户运行,并演示了如何测试和确保生产环境中的安全性建议。
摘要由CSDN通过智能技术生成

为了安全php-fpm默认是以apache用户启动的

[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

网上一堆文章说要以root身份启动需要设置一堆非常复杂的程序,并且甚至有人说不能以root身份启动。既然是php-fpm程序,所以应该先找配置文件,于是打开默认的配置文件,具体你得看你的默认配置文件路径在哪

/etc/php-fpm.d/www.conf

这是我机器上的

找到

; RPM: apache Choosed to be able to access some dir as httpd

user = apache

改成

; RPM: apache Choosed to be able to access some dir as httpd

user = root

重新启动php-fpm

[root@chaoge ~]# ps -le | grep php-fpm

1 S 0 4974 1 0 80 0 - 51388 ep_pol ? 00:00:00 php-fpm

5 S 48 4975 4974 0 80 0 - 51388 inet_c ? 00:00:00 php-fpm

5 S 48 4976 4974 0 80 0 - 51388 inet_c ? 00:00:00 php-fpm

5 S 48 4977 4974 0 80 0 - 51388 inet_c ? 00:00:00 php-fpm

5 S 48 4978 4974 0 80 0 - 51388 inet_c ? 00:00:00 php-fpm

5 S 48 5035 4974 0 80 0 - 51388 inet_c ? 00:00:00 php-fpm

[root@chaoge ~]# kill -QUIT 5035

[root@chaoge ~]# php-fpm

[17-Apr-2015 10:33:38] ERROR: [pool www] please specify user and group other than root

[17-Apr-2015 10:33:38] ERROR: FPM initialization failed

[root@chaoge ~]#

报错了,提示运行php-fpm运行用户和组只能选择其它的除了root以外,于是查看php-fpm文档,会发现其中一个选项:-R

[root@chaoge ~]# php-fpm --help

Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p ] [-g ] [-c ] [-d foo[=bar]] [-y ] [-D] [-F]

-c | Look for php.ini file in this directory

-n No php.ini file will be used

-d foo[=bar] Define INI entry foo with value 'bar'

-e Generate extended information for debugger/profiler

-h This help

-i PHP information

-m Show compiled in modules

-v Version number

-p, --prefix

Specify alternative prefix path to FastCGI process manager (default: /usr).

-g, --pid

Specify the PID file location.

-y, --fpm-config

Specify alternative path to FastCGI process manager config file.

-t, --test Test FPM configuration and exit

-D, --daemonize force to run in background, and ignore daemonize option from config file

-F, --nodaemonize

force to stay in foreground, and ignore daemonize option from config file

-R, --allow-to-run-as-root

Allow pool to run as root (disabled by default)

于是我们试着启动的时候加上这个参数试一试

[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

成功启动了,测试一下,以root用户写了一个shell脚本保存在root宿主目录下,php里exec写好的脚本正常运行。

最后,奉劝大家生产环境大家最好别这样做,否则你知道的。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值