作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我可以在安装了 nvm 的 Node 中将 1023 以上的任何 PORT
与 server.listen(PORT)
一起使用。非特权用户如何使用系统端口(例如低于 1024)?
在我们的 Ubuntu 16.04 服务器上,我曾经这样做过:
sudo setcap CAP_NET_BIND_SERVICE=+eip `readlink -f \`which node\``
但是,我们已经升级到 Ubuntu 18.04,它似乎不再起作用了。我看到以下错误:
Error listen EACCES 0.0.0.0:925
所有低于 1024 的端口都会发生这种情况,因此这不仅仅是端口已被使用的一次性情况。
为什么这(不再)起作用了?我一定是遗漏了什么,或者自 Ubuntu 18.04 以来情况发生了变化。
最佳答案
检查启动可执行文件的分区是否未使用 nosuid
挂载。
getcap
不会帮助排除故障,因为它会显示文件系统上设置的属性,而不是运行时可用的实际功能。
您可以在/proc/PID/status
中检查运行时功能。
它们应该是这样的
CapPrm: 0000000000000400
CapEff: 0000000000000400
CapBnd: 0000003fffffffff
在我的 nosuid
分区上,它们是这样的。
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
希望对您有所帮助。我是在咨询了一位 friend 后才发现的:)
关于node.js - 如何让 Node 在 Ubuntu 18.04 上监听 1024 以下的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53444965/
我是一名优秀的程序员,十分优秀!