![在 Linux 上打开 TCP 服务器套接字需要哪种权限?](https://linux22.com/image/584609/%E5%9C%A8%20Linux%20%E4%B8%8A%E6%89%93%E5%BC%80%20TCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A5%97%E6%8E%A5%E5%AD%97%E9%9C%80%E8%A6%81%E5%93%AA%E7%A7%8D%E6%9D%83%E9%99%90%EF%BC%9F.png)
我想启动一个 websocket 服务器,但无法从其他机器连接到它。只有当我以 root 权限启动 websocket 服务器时它才有效。所以这似乎是一个权限问题。
我的用户需要哪些权限才能打开套接字?
答案1
通常,需要 root 访问权限才能打开 1024 以下的端口,这涵盖了大多数众所周知的服务,例如 web (80)、ssh (22)、ftp (21) 等。
可以将一些守护进程配置为监听端口 1024 以上的其他端口,这可能允许您以非 root 权限使用它们,但这因产品而异。
还有其他解决方法,例如使用CAP_NET_BIND_SERVICE
,这将有更详细的描述在这个答案中,摘要如下,
简短的回答是,您可以这样做:
setcap 'cap_net_bind_service=+ep' /path/to/program
然后,此后任何时候执行程序它都将具有该
CAP_NET_BIND_SERVICE
功能。setcap
在 debian 包中libcap2-bin
。