由于上述安全考虑,我想删除对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),然后是一些更大的数字
答案 0 :(得分:1)
ps aux | grep node
将为您提供主机上所有正在运行的节点进程。
但是,如果我可以再说一件事,那就永远不要绑定到端口80,即使你是非root用户绑定的。将端口更改为通用(8000)并将nginx设置为反向代理以处理传入的http请求并将其转发到端口8000上的节点