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

Mav*_*rik 47 permissions usb tty

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

  • 第一个是在安装过程中创建的
  • 第二个是在之后创建的。它属于 sudoers 组。

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

"Could not open serial port /dev/ttyUSB0"
Run Code Online (Sandbox Code Playgroud)

我能够使用以下方法修复它:

sudo chown :second_user /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Jer*_*err 66

正如您所注意到的,该/dev/ttyUSB0设备具有dialout. 您需要做的就是将第二个用户添加到dialout组中:

sudo adduser second_user dialout
Run Code Online (Sandbox Code Playgroud)

second_user 需要注销并重新登录才能生效。

  • `sudo usermod -a -G dialout $USER` (5认同)
  • 你是对的。我必须注销然后再次登录才能访问 ssh。 (2认同)

Ori*_*lor 17

简单的方法:

sudoedit /etc/udev/rules.d/50-myusb.rules
Run Code Online (Sandbox Code Playgroud)

保存此文本:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"
Run Code Online (Sandbox Code Playgroud)

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


Oli*_*Oli 8

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

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

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"
Run Code Online (Sandbox Code Playgroud)

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

我将此基于几年前的这个页面,但是如果 Jeremy 的解决方案不起作用,这样的事情应该可以工作。


小智 5

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

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

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 
Run Code Online (Sandbox Code Playgroud)

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

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

使用 UDEV 解决了最后一块难题。现在我可以使用 Linux 对我的 Icom 无线电进行编程,插入和拔出 USB/串行设备而无需大惊小怪。呜呼。谢谢。