如何允许非默认用户使用串行设备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允许任何人写入设备。

我基于几年前的这个页面 ,但是如果Jeremy的解决方案没有,那么这样的事情应该有效。

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

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

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

然后我意识到我需要更改/ dev / ttyUSB0的权限以允许我访问它。 这很好用,直到你拔掉/重新插入USB,然后你需要重新更改权限。

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

使用UDEV解决了拼图的最后一块。 现在我可以使用Linux编程我的Icom无线电,插拔USB /串口设备而不用大惊小怪。 哇噢。 谢谢。

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

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

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

到上面的内核行,规则只适用于该设备。 更好的是,而不是单独分配MODE变量,也可以设置组:

 GROUP="whatever", MODE="0660" 

然后只有群组中的人“ whatever ”才能获得写入权限。

约翰鲍勒