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