在我的 Ubuntu 桌面上,我能够成功运行一个小型 C++ 网络服务器未使用的端口像这样:
./myserver 127.0.0.1 3050
这个问题是,如果我在端口80上运行,我必须运行为须藤像这样:
sudo ./myserver 127.0.0.1 80
如果我继续跑不使用 sudo 的端口 80,我收到一个错误接受:参数无效。
有人可以解释为什么在端口 80 上运行时需要 sudo 吗?
答案1
1024 以下的 TCP/IP 端口号比较特殊,普通用户不允许在其上运行服务器。这是一项安全功能,因为如果您连接到这些端口之一上的服务,您可以相当确定您拥有的是真实的东西,而不是某些黑客为您提供的假冒产品。
以上来自:
https://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html
另外,请查看https://en.wikipedia.org/wiki/Registered_port