在 Linux 上打开 TCP 服务器套接字需要哪种权限?

在 Linux 上打开 TCP 服务器套接字需要哪种权限?

我想启动一个 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

相关内容