gpt4 book ai didi

node.js - Node Express Unix 域套接字权限

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:36 25 4
gpt4 key购买 nike

我正在运行一个 nginx 服务器和一个 node express web 服务器,使用 daemontools,设置通过 Unix 域套接字进行通信。只有几个问题:

  1. 套接字文件在关机时仍然存在,所以我必须在恢复服务器时删除它,否则我会收到 EADDRINUSE 错误。
  2. nginx服务器以nginx用户运行,node服务器以node用户运行。
  3. 套接字文件在服务器启动时由 Express 创建,umask 将套接字文件的权限设置为 755。
  4. setuidgid 应用程序将组设置为用户的默认组,在本例中为 Node 用户名。
  5. 应用程序的部署脚本和 daemontools 的运行脚本在 Node 服务器实例启动之前执行,因此无法设置文件的权限,因为它必须在启动过程中重新创建。

如果我 chgrp 和 chmod g+w 套接字文件,一切正常。有没有一种方法可以设置它,以便生成具有正确权限的 Node 应用程序的套接字文件,以便 nginx 能够写入它而不会损害一个应用程序或另一个应用程序的安全独立性?我什至可以将 nginx 添加到 Node 用户的组,如果仍然有一种方法可以设置套接字文件的权限,以便组可写。

最佳答案

也许我来晚了。

作为您自己答案的补充,有一个解决方案不必将 nginx 用户添加到 Node 组。

仅为套接字文件创建一个目录,将其分配给 Node 用户和 www-data(或 nginx 所在的任何组)组,并在该目录上设置组 ID 位(SGID)。

mkdir -p /var/lib/yourapp/socket
chown nodeuser:nginxgroup /var/lib/yourapp/socket
chmod g+rxs /var/lib/yourapp/socket

在此目录中创建的所有文件将自动归 nginxgroup 组所有。

关于node.js - Node Express Unix 域套接字权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com