因此,如果我理解正确,可以允许机器在端口80上监听。
我安装了node并创建了一个非常简单的http服务器,以查看是否可以通过http到达该框。在云控制台上通过ssh登录。当我尝试启动它(例如npm start
来运行服务器)时,它说:
Error: listen EACCES: permission denied 0.0.0.0:80
为什么?如何解决?
我在某处读到低端口号通常仅限于root用户,因此我尝试sudo
指出sudo: npm: command
未找到,并且与sudo节点类似。
为什么在创建服务器using scripts like these时,为什么说它们是以root身份执行的?这是怎么发生的?当我启动计算机并以自己的身份登录时,为什么不以root用户身份执行?是的,我对linux perms的理解是非常新手。
谢谢...
答案 0 :(得分:3)
为了使用低于1024的TCP端口,您的节点服务器必须以root特权运行。 TCP端口1024及更高端口不需要特权。
登录到Google Cloud Compute Engine实例时,您以normal
用户身份登录。您没有root特权。要授予命令root特权,请在其前面加上sudo
。例如:sudo mkdir /directoryname
。
我不建议使用根特权运行节点服务器。这在您的系统中可能会造成严重的安全漏洞。在决定之前,请先在Internet上搜索此主题。
您的选择是:
sudo node hello.js
关于找不到npm。您将需要修改环境的PATH变量,以包括为用户root
安装节点工具集的位置。