Ubuntu 18系统下普通用户运行Python套接字监听程序无法接收数据的问题排查咨询
Ubuntu 18系统下普通用户运行Python套接字监听程序无法接收数据的问题排查咨询
各位大佬好,我在Ubuntu 18系统上碰到了一个挺费解的套接字问题,这个系统之前的配置情况我不太清楚,现在卡在这里了想请教下大家。
我写了一段Python的TCP监听代码,用的是12345端口(已经超过了系统1024的特权端口限制),当我以普通用户身份运行这段代码时:
import socket host = '0.0.0.0' # 实际代码里配置了对应的监听地址 port = 12345 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host, port)) s.listen(5) # 后续的accept和recv逻辑都是正常的,但就是收不到数据
程序完全没有报错,能成功绑定端口,我用netstat或者ss命令查,也能看到这个端口处于LISTEN状态,nmap扫描本地或者远程也能看到端口是开放的。但是不管我从本地还是其他机器往这个端口发数据,程序就是接收不到任何内容。
奇怪的是,如果我切换到root身份运行同一段代码,就能正常接收数据,完全没问题。而且我已经确认系统的防火墙是禁用状态,排除了防火墙拦截的可能。
现在我实在搞不懂是系统的哪项配置导致了普通用户和root用户的差异,有没有大佬能指点一下可能的排查方向或者常见的原因?
备注:内容来源于stack exchange,提问作者eng3
相关产品推荐
相关产品推荐

