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

K..*_*K.. 3 linux permissions debian socket

我想启动一个 websocket 服务器,但无法从其他机器连接到它。只有当我使用 root 权限启动 websocket 服务器时,它才能工作。所以这似乎是一个权限问题。

我的用户需要哪些权限才能打开套接字?

Eig*_*ony 6

通常需要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