当前位置: 首页>>技术教程>>正文


如何允许非默认用户使用串行设备 ttyUSB0?

, ,

问题描述

我有一个 Ubuntu 11.10 系统,有 2 个用户:

  • 第一个是在安装过程中创建的

  • 第二个是在之后创建的。它属于 sudoers 组。

现在的问题是,当第二个尝试使用设备 ttyUSB0 时,会返回以下错误:

"Could not open serial port /dev/ttyUSB0"

我能够通过使用来修复它:

sudo chown :second_user /dev/ttyUSB0

但是,当我断开设备并重新连接时,问题又回来了。

有没有办法让不同的用户访问设备?我想我必须将用户添加到特定组。当前所有者是 root 并且组是 dialout 。但是我不确定该组,也不知道如何添加用户。

谢谢!

最佳办法

如您所见, /dev/ttyUSB0 设备具有 dialout 组。您需要做的就是将第二个用户添加到 dialout 组:

sudo adduser second_user dialout

second_user 需要注销 &重新登录以使其生效。

次佳办法

简单的方法:

sudoedit /etc/udev/rules.d/50-myusb.rules

保存此文本:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

拔下设备并重新插入,它应该可以被任何用户读/写!

第三种办法

您可以使用 UDEV。这是一个每次插入或拔出设备(以及其他东西)时都会触发的系统。有了它,您可以编写各种要发生的事情,包括设置权限。

运行 sudoedit /etc/udev/rules.d/50-ttyusb.rules 并将其粘贴在那里:

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

保存,退出并重新插入,您应该可以启动并运行。将权限设置为 666 允许任何人写入设备。

我的基础是几年前的 this page,但如果 Jeremy 的 solution 没有,这样的东西应该可以工作。

第四种办法

太棒了——这里给出的 UDEV 解决方案就是我的票。

我通过 Wine 安装了 Icom 的 CS-F3020_F5010_F5020 程序,为 Com 端口创建了如下链接:

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

然后我意识到我需要更改 /dev/ttyUSB0 的权限以允许我访问它。在您拔下/重新插入 USB 之前效果很好,然后您需要 re-change 权限。

我尝试将我的用户添加到拨出组,但由于某种原因这并没有解决问题。

使用 UDEV 解决了最后的难题。现在我可以使用 Linux 对我的 Icom 收音机进行编程,轻松插拔 USB/串行设备。呜呼。谢谢。

第五种办法

udev 规则有效,但正如所写,它们具有使所有人都可以访问所有 ttyUSB* 设备的非常讨厌的副作用。这不好,因为这可能是安全风险,具体取决于系统上的其他内容。

而是使用更具选择性的 udev 规则。例如,我有一个操作一组开关的 USB 设备。从 dmesg 插入时,我可以看到制造商的 ID 和产品代码(在这种情况下,甚至是设备的序列号)。我可以补充:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

到上面的内核行,并且该规则仅适用于该设备。甚至比单独分配给 MODE 变量更好地设置组:

GROUP="whatever", MODE="0660"

那么只有“ whatever ”组中的人才能获得写入权限。

约翰·鲍勒

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12409.html,未经允许,请勿转载。