Nginx& PHP -fpm.sock 文件权限如何设置

2018-02-09 00:12:08 +08:00
 seers

默认 Nginx 使用 Nginx:Nginx,无权访问 www-data:www-data 创建的 unix socket,导致无法处理 php 请求,搜了一圈大多数方法是 fpm 接口改为 127.0.0.1:9000,但我想使用 sock 接口权限该如何设置呢?

目前两种想法 1.Nginx 加入 www-data 组 2.socket 的 listen&write 权限由 www-data 改为 Nginx

不知哪种更符合安全?

4029 次点击
所在节点    NGINX
16 条回复
gstqc
2018-02-09 00:33:22 +08:00
如果没有不同服务共用 用户 用户组,两种方法没区别
如果有其他服务共用服务,可能会造成一定的安全隐患

如果要做非常细致的权限隔离,docker 欢迎你
cxbig
2018-02-09 02:38:21 +08:00
不考虑 docker 的话
nginx 和 php 共用一个 www 用户
代码部署用 deploy 用户,log 文件夹给 www 写权限,其他只读
cxbig
2018-02-09 02:41:53 +08:00
127.0.0.1:9000 就是本机可访问,有什么安全隐患?
stabc
2018-02-09 03:23:44 +08:00
道听途说 socket 方式优于 127.0.0.1:9000,所以推荐第一种。
cs8425
2018-02-09 03:30:34 +08:00
@cxbig #3
SSRF, 可以傳 payload 到 fpm 跑任何想跑的 code
julyclyde
2018-02-09 08:11:49 +08:00
@cs8425 首先要解决怎么连上的问题,其次才能谈传什么
julyclyde
2018-02-09 08:12:47 +08:00
www-data 应该是 debian 系的?
nginx 不是系统自带的包吗?

考虑到 nginx 也得提供静态文件服务,应该把它改为 www-data 身份
singer
2018-02-09 08:44:32 +08:00
上 docker 吧,权限配错了问题也不大的。
eoo
2018-02-09 09:11:27 +08:00
chmod 777 ****.socket
DuckJK
2018-02-09 09:17:07 +08:00
@julyclyde 请谷歌 SSRF
DuckJK
2018-02-09 09:18:25 +08:00
@julyclyde 看错了,是应该先连上去
Xrong
2018-02-09 09:48:12 +08:00
[root@proxy ~]# ps -ef | grep nginx
root 10349 10314 0 09:41 pts/0 00:00:00 grep --color=auto nginx
root 10708 1 0 Feb08 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
nginx 10709 10708 0 Feb08 ? 00:01:54 nginx: worker process
nginx 10710 10708 0 Feb08 ? 00:01:33 nginx: worker process

[root@proxy ~]# ps -ef | grep php-fpm
root 1197 1 0 Feb08 ? 00:00:04 php-fpm: master process (/etc/php-fpm.conf)
php-fpm 2890 1197 0 07:50 ? 00:00:49 php-fpm: pool www
php-fpm 3288 1197 0 07:59 ? 00:00:47 php-fpm: pool www
php-fpm 4409 1197 0 08:19 ? 00:00:40 php-fpm: pool www

[root@proxy ~]# ls -tal /run/php-fpm/www.sock
srw-rw---- 1 nginx nginx 0 Feb 8 11:29 /run/php-fpm/www.sock

然后 /etc/php-fpm.d/www.conf 里头的几个重要配置如下
listen = /run/php-fpm/www.sock
user = php-fpm
group = php-fpm
listen.owner = nginx
listen.group = nginx

给楼主参考一下,应该会有所帮助。
cs8425
2018-02-09 16:12:41 +08:00
@julyclyde #6
如果本機在跑的 php/其他服務有 SSRF 的漏洞
(你很難保證永遠不會有 SSRF 漏洞的啊)
就有可能直連 127.0.0.1:9000 跑 payload 的
關鍵字: SSRF fcgi
樓主應該是顧慮這個可能的隱患才會想只用 unix socket 的...?
cxbig
2018-02-09 17:08:37 +08:00
@cs8425 app 有问题,没有有效过滤上传内容和参数。关 fpm 什么事?
DogeOW
2022-01-25 11:56:23 +08:00
@julyclyde 我用了快十年了,没听说过 nginx 是系统自带的。
julyclyde
2022-01-25 13:04:03 +08:00
@DogeOW 我指的是 linux 发行版里包含的软件包

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/429607

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX