You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu运行Python Modbus/TCP服务脚本遇[Errno 13]权限拒绝求助

解决Ubuntu下Modbus/TCP服务端绑定502端口权限问题

问题原因

Linux系统中,1-1023端口属于特权端口,普通用户进程没有权限直接绑定这类端口——这是你遇到PermissionError: [Errno 13] Permission denied的核心原因(Windows系统无此限制)。你的脚本文件权限-rw-rw-r--是正常的,错误和文件目录权限无关。

解决方法

方法1:使用root权限运行脚本

直接用sudo以管理员身份执行脚本,注意指定conda环境的Python解释器路径,避免调用系统默认Python:

sudo /home/ben/anaconda3/bin/python test.py

方法2:修改监听端口到非特权范围

把脚本中的监听端口从502改成1024以上的端口(比如5020),修改示例:

# 原代码(类似)
server = ModbusServer(host="0.0.0.0", port=502, ...)
# 修改后
server = ModbusServer(host="0.0.0.0", port=5020, ...)

修改后普通用户直接运行python test.py即可,同时需要确保客户端连接时使用新端口。

方法3:给Python解释器添加绑定特权端口的能力

通过setcap命令给conda环境的Python赋予绑定特权端口的权限,这样后续无需sudo就能运行脚本:

sudo setcap 'cap_net_bind_service=+ep' /home/ben/anaconda3/bin/python

注意:如果后续更新conda环境的Python版本,需要重新执行此命令。

内容的提问来源于stack exchange,提问作者bbartling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:18:04