尽管应用了 sudo setcap 'cap_net_bind_service=+ep' /path/to/binary,运行服务仍不会绑定到端口 #443 和 #80

尽管应用了 sudo setcap 'cap_net_bind_service=+ep' /path/to/binary,运行服务仍不会绑定到端口 #443 和 #80

服务启动并尝试监听端口#443,我得到 errno=99,即 EADDRNOTAVAIL,并且 std::strerror(errno) 报告“无法分配请求的地址”。

如果我运行 sudo getcap /path/to/binary 我会得到这个:/usr/local/binary_file = cap_net_bind_service+ep

这似乎意味着它有能力,但我无法绑定到端口,有人可以帮助我解决这个问题吗?

答案1

事实证明,我在绑定中指定了错误的 ipaddress,该地址来自编译时传递的环境变量。Setcap 工作得很好。

相关内容