Node.JS 在运行时切换用户

问题描述 投票:0回答:4

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

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

security node.js
4个回答

3
投票

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


0
投票

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

我看到人们对 Node 所做的很多事情就是要么

  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 上的“特权”端口?


0
投票

棘手的事情是首先设置 gid,因为我的 wwwuser 用户没有设置 gid 的权限。

server.listen(80);
server.on('listening', () => {
    process.setgid('wwwuser');
    process.setuid('wwwuser');
});
© www.soinside.com 2019 - 2024. All rights reserved.