如何确保节点以用户身份运行?

时间:2016-02-14 17:06:19

标签: linux node.js

由于上述安全考虑,我想删除对node.js的root访问权限。 我更改了nodejs文件夹的所有权,现在我需要确保节点以用户abc

运行

我该如何确认? 我正在引用以下链接来删除对node.js的root访问权限但找不到 https://thomashunter.name/blog/drop-root-privileges-in-node-js/

  

Node.js的一个常见用途是构建Web应用程序。通常,我们   希望这些应用程序在端口80上侦听。作为安全性   预防措施,大多数操作系统需要root权限才能实现(例如)   OS X,Linux,BSD)。要以这种方式运行Node应用程序,我们需要这样做   以下内容:

     

sudo node server.js然后,应用程序以root身份运行其余部分   会议。但是,这有潜在的安全风险。什么   如果您的应用程序中存在漏洞并且黑客已启动   控制你的应用程序并用它做顽皮的事情?谢天谢地,我们   可以将运行我们流程的用户帐户放入安全性较低的用户,   比如我们的普通账户。该过程有两种方法   global,可以为我们处理,.setgid()和.setuid()。

     

这是一个实际的例子。我们想运行此代码   在我们绑定到端口80之后,我们在回调中运行代码:

app.listen(80, 'localhost', null, function() {   // Listening   try {
>     console.log('Old User ID: ' + process.getuid() + ', Old Group ID: ' + process.getgid());
>     process.setgid('users');
>     process.setuid('tlhunter');
>     console.log('New User ID: ' + process.getuid() + ', New Group ID: ' + process.getgid());   } catch (err) {
>     console.log('Cowardly refusing to keep the process alive as root.');
>     process.exit(1);   } });
  

.getuid()和.getgid()的结果将是数字,而不是真的   有用的,除了显示   发生了一些事。他们可能都是第一次说0(那是   root in * nix land),然后是一些更大的数字

1 个答案:

答案 0 :(得分:1)

ps aux | grep node

将为您提供主机上所有正在运行的节点进程。

但是,如果我可以再说一件事,那就永远不要绑定到端口80,即使你是非root用户绑定的。将端口更改为通用(8000)并将nginx设置为反向代理以处理传入的http请求并将其转发到端口8000上的节点