Linux:无需 root 权限即可连接 USB 虚拟 com 端口?

Linux:无需 root 权限即可连接 USB 虚拟 com 端口?

我正在尝试使用 USB 虚拟 com 端口将微控制器连接到主机。但是,我没有主机的 root 权限。控制器显示为 /dev/ttyACM0。

当我尝试使用pyserial模块,出现错误“权限被拒绝”。

有没有办法不使用任何 sudo 命令来解决这个问题?也许可以以某种方式强迫微控制器宣布自己不是作为计算机协会? 这样能避免权限问题吗?

$ ls -l /dev/ttyACM0
crw-rw----. 1 root dialout 166, 0 Apr 4 13:44 /dev/ttyACM0
$ id
uid=1003(mri) gid=1001(nmruser) groups=1001(nmruser),100(users),1000(nmrsu) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102‌​3

不幸的是我无法更改权限。主机是 MRI 扫描仪的计算机。其系统由扫描仪制造商维护。我考虑过使用以太网,但我希望有办法避免这种情况。

答案1

默认情况下,只有 root 才能对大多数(如果不是全部)设备进行原始访问。您必须将权限更改为/dev/ttyACM0允许您的用户帐户使用它。此用途的常见组是dialout,但它可以是对“文件”具有写访问权限的任何用户/组。

chmod您可以使用和更改权限chown

$ chmod 664 /dev/ttyACM0
$ chown root:dialout /dev/ttyACM0

您要建立的每个串行连接都会遇到此问题。如果您想避免这种情况,则必须使用默认情况下未锁定的带外介质,例如以太网。然后,您可以设置 HTTP 或 MQTT 服务器以在主机和微控制器之间传输数据。

答案2

要求具有 root 权限的人设置udev规则,为现在的内容分配自定义名称、组和组 r/w 权限/dev/ttyACM0。此外,您应该成为该组的成员。

此后,您无需 root 身份即可打开设备。

如果没有 root 权限或物理访问权限,您将无法进行此更改,因此在这种情况下您可以成为 root 一次。

相关内容