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