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

如何让Django在Lubuntu下安全访问串口(无需666权限)

无需全局666权限让Django访问串口的解决方案

不用给串口开全局666权限(这会带来不必要的安全风险),试试下面两个靠谱的解决方法:

方法1:将运行Django的用户加入dialout组

Linux系统里,串口设备(比如/dev/ttyUSB0)默认归dialout组所有。只要把运行Django进程的用户加到这个组,就能让它获得串口的读写权限:

  • 先确定运行Django的用户:如果是用Nginx/Apache部署,通常是www-data;本地开发的话就是你当前登录的用户名。
  • 执行命令添加组权限:
    sudo usermod -aG dialout <你的用户名>
    
  • 注销当前用户重新登录,或者重启Django服务,让组权限生效。
  • 验证是否生效:执行groups <你的用户名>,输出里应该能看到dialout。

方法2:创建udev规则让串口自动分配权限

如果需要针对特定USB串口设备做精细化权限控制,或者不想依赖用户组,可以写个udev规则,让系统每次识别到该设备时自动设置正确的组和权限:

  1. 先查你的USB串口设备的厂商ID和产品ID:
    lsusb
    
    输出会类似Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics CH340 serial converter,其中1a86是厂商ID(idVendor),7523是产品ID(idProduct)。
  2. 创建udev规则文件:
    sudo nano /etc/udev/rules.d/99-usb-serial.rules
    
  3. 在文件中添加以下内容(替换成你查到的ID):
    SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", GROUP="dialout", MODE="0660"
    
    • GROUP="dialout":让设备归dialout组所有
    • MODE="0660":允许组内用户读写,其他用户仅可读(安全性远高于666)
  4. 保存文件后,重新加载udev规则:
    sudo udevadm control --reload-rules && sudo udevadm trigger
    
    下次重启系统或插拔设备时,权限会自动配置完成,无需手动修改。

这两种方法都遵循最小权限原则,比直接开放全局666权限安全得多。优先推荐方法1,操作简单直接;如果有多个串口设备或特殊需求,再用方法2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:11