如何允许非默认用户使用串行设备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
”才能获得写入权限。
约翰鲍勒