node.js中的seteuid

时间:2012-03-02 00:32:11

标签: linux node.js

如何暂时删除Node.js中的root权限?

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

2 个答案:

答案 0 :(得分:2)

我不认为在Node.js程序中更改权限真的有意义,因为你不知道何时将要处理不同的IO请求。您可以更改权限,提交IO,更改,并在将来的某个时间点执行IO - 可能是在当时运行的权限下。

可以想象一种将euid,egid和补充组与特定IO请求联系起来的机制,但与目前的设计相比,这可能是一个极大的复杂因素并没有太大的好处。

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

答案 1 :(得分:1)

您可以使用node-posix moduleseteuid方法。对于创建单个文件这样一个简单的任务,我可以想象你使用writeFileSync围绕着对seteuid的调用,原来的想法可能就是这样。