我在Alpine 3.7 Docker镜像中运行Node 6。 以下命令:
node -e "process.setuid(1002)"
生成分段错误(核心转储(的崩溃。 我尝试使用节点 10,但出现相同的错误。 1002 是有效用户。我尝试过其他几个用户,但没有成功。
我的 docker 映像在具有"容器优化操作系统 66-10452.89.0 稳定"默认操作系统(生产(的 Google 计算引擎实例上运行。
(免责声明:我是Adélie Linux的项目负责人。
Node.js 将其 I/O 线程堆栈大小设置为PTHREAD_STACK_MIN
,这不足以处理信号。 musl libc 使用信号来实现setuid
因为 Linux 内核系统调用在多线程软件中具有不安全的行为。
在Adélie Linux上,我们已经修补了Node,以确保这不会导致崩溃。
Docker内部的setuid
很棘手。您不能与正确的用户一起启动 Node.js 进程吗?