是否有读取串行端口的特定功能?
Is there is a specific capability to read a serial port?
我想从连接到 USB 并被系统视为串行设备的 GPS 读取数据。我不想使用 chmod u+s
或 sudo
并只为流程提供执行此操作的最低能力。
为了测试,我使用了 cat
命令:
sudo cat /dev/ttyACM0
这行得通,但是我可以给 cat
读取串口的特定能力吗?
我尝试了 setcap cap_sys_rawio+p
和 cap_sys_tty_config+p
都没有成功。
我的想法是只给二进制文件完成任务所需的最低权限。
通常 ttys 属于一个类似于 dialup
的组。这主要用于旧的 cu
程序。
您可以(我也可以)使用的一件事是将您自己包含在 dialup
组中,因为您会看到未使用的 ttys 对它们所属的所有者和组具有写入权限。
测试时不要忘记注销并重新登录,因为要获取您所属群组列表中dialup
群组的群组ID需要通过login(1)
程序。
注意
在我的系统(FreeBSD 11.x)上,gps 属于组 operator
,而我(我的帐户)属于该组。我可以打开 gps(带有伪终端的蓝牙设备)
在linux中,我使用/dev/rfcomm0
(蓝牙)串口设备。在 debian 中,/dev/ttyS0[0-3]
属于 dialout
组。您可以使用该组。
我想从连接到 USB 并被系统视为串行设备的 GPS 读取数据。我不想使用 chmod u+s
或 sudo
并只为流程提供执行此操作的最低能力。
为了测试,我使用了 cat
命令:
sudo cat /dev/ttyACM0
这行得通,但是我可以给 cat
读取串口的特定能力吗?
我尝试了 setcap cap_sys_rawio+p
和 cap_sys_tty_config+p
都没有成功。
我的想法是只给二进制文件完成任务所需的最低权限。
通常 ttys 属于一个类似于 dialup
的组。这主要用于旧的 cu
程序。
您可以(我也可以)使用的一件事是将您自己包含在 dialup
组中,因为您会看到未使用的 ttys 对它们所属的所有者和组具有写入权限。
测试时不要忘记注销并重新登录,因为要获取您所属群组列表中dialup
群组的群组ID需要通过login(1)
程序。
注意
在我的系统(FreeBSD 11.x)上,gps 属于组 operator
,而我(我的帐户)属于该组。我可以打开 gps(带有伪终端的蓝牙设备)
在linux中,我使用/dev/rfcomm0
(蓝牙)串口设备。在 debian 中,/dev/ttyS0[0-3]
属于 dialout
组。您可以使用该组。