5

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

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

4

3 回答 3

4

尝试process.setuid(以及类似的 process.setgid)

于 2012-11-06T21:49:15.403 回答
2

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

于 2012-11-06T21:51:33.647 回答
0

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

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

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

    例如: 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

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

编辑:这里有更多技巧:有没有办法让非 root 进程绑定到 Linux 上的“特权”端口?

于 2012-11-06T21:56:57.013 回答