Node.JS在运行时切换用户

以root身份运行的Node.JS程序是否有可能在运行时降级其权限? 这是它首先要做的事情之一,目的当然是为了限制可能造成的损害,万一在这个过程中出现漏洞或不可信的代码。

另外,有没有一种方法,以root身份运行的Node.JS进程启动一个非root的单独进程? (最好不要在中间添加一层,比如sudo)

尝试process.setuid(同样,process.setgid) 。

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

@ mabako的答案看起来不错,但应该有更容易的操作系统技巧。

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

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

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

  2. 使用iptables将特权端口redirect到非特权节点程序,该程序监听高端口。

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

你有任何非端口绑定的理由,以root身份运行节点服务器?

编辑:更多技巧在这里: 是否有一种非root进程绑定到Linux上的“特权”端口的方式?