为 /dev/ttyUSB0 配置权限

Mik*_* L. 5 linux permissions

我正在尝试与来自 Ubuntu 12.04 的 Arduino 通信。插入 USB 电缆时,arduino 的串口显示为 /dev/ttyUSB0。当我尝试使用moserial连接到它时,出现“无法打开设备 /dev/ttyUSB0”错误,但在我使用sudo启动moserial 时却没有。我必须配置什么才能使串行设备以普通非 root 用户身份访问?

use*_*686 6

您有多种选择:

自动 ACL 分配

您很可能在 Ubuntu 中运行了 systemd-logind 或 ConsoleKit,它们可以根据当前在控制台登录的用户帐户在设备节点上自动配置 ACL。这些 ACL 授予对通常权限的额外访问权限,可以使用getfacl.

要使用它,请将以下内容添加到/etc/udev/rules.d/60-extra-acl.rules1

KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
Run Code Online (Sandbox Code Playgroud)

1是,创建文件。默认情况下它不存在;整个目录用于管理员自定义。)

基于组的访问

tty 设备通常可由特定读取/写入,例如“拨出”或“uucp”。将您自己添加到该组以访问所有串行端口:

# gpasswd -a YourUsername dialout
Run Code Online (Sandbox Code Playgroud)

不要忘记注销并重新登录,以便应用组更改。

权限或所有权变更

与上述类似的 udev 规则也可用于设置“主要”所有者和组以及权限(这是默认组的设置方式)。例如:

     KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or:  KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or:  KERNEL=="ttyUSB[0-9]*", MODE="0666"
Run Code Online (Sandbox Code Playgroud)

您可以分配给 OWNER、GROUP 和 MODE 参数。

临时手动更改

要进行一次性更改,只需像往常一样使用chmod和/或chown

     # chown YourUsername /dev/ttyUSB0
or:  # chmod a+rw /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)