seteuid在node.js中

我怎样才能临时删除Node.js的根权限?

我可以看到标准库中的process.setuid ,但没有seteuid ,它不能是临时的。 试图再次获得root权限失败。

我不认为在Node.js程序中更改特权真的很有意义,因为您不知道什么时候会处理不同的IO请求。 你可能会改变权限,提交IO,改回来,在将来的某个时候IO将会被执行 – 大概是在当时运行的权限。

我可以想象一种机制,将euid,egid和补充组与特定的IO请求联系起来,但是与目前的devise相比,这可能是一个非常复杂的情况,没有什么好处。

您可以采取的一种方法是使用Cluster生成新的进程,更改权限,然后在完成后退出该进程。 你也可以让它长寿,通过一个内部队列处理请求,但是fork(2) 速度很快 ,希望Node.js在fork(2)上的shim不是太昂贵。

你可以使用node-posix模块的seteuid方法。 对于创build单个文件这样一个简单的任务,我可以想象,你使用writeFileSync包围调用seteuid ,作为你原来的想法可能是。