Node.JS在运行时切换用户

时间:2012-11-06 21:42:46

标签: security node.js

以root身份运行的Node.JS程序是否有可能在运行时降级其权限?这将是它所做的第一件事,其目的当然是限制它可能造成的损害,万一存在漏洞或在此过程中运行的错误信任的代码。

或者,是否有一种方法可以以root身份运行Node.JS进程,以启动一个非root的单独进程? (最好不要在它们之间加一层,比如sudo)

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

是的,使用process.setuid(id)process.setguid(id)更改当前流程的有效用户/组ID。

答案 2 :(得分:0)

@ mabako的答案看起来很棒,但应该有更简单的操作系统技巧。

我看到人们用节点做了很多事情

  1. 将运行节点代码的用户添加到www-data组,以允许它绑定到特权端口。

    ex:http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

  2. 使用iptables将特权端口重定向到非特权节点程序,该程序侦听高端口。

    iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

  3. 您是否有任何非端口绑定的原因以root身份运行节点服务器?

    编辑:这里有更多技巧:Is there a way for non-root processes to bind to "privileged" ports on Linux?