【问题标题】:Is there is a specific capability to read a serial port?是否有读取串行端口的特定功能?
【发布时间】:2019-02-06 21:50:16
【问题描述】:

我想从连接到 USB 并被系统视为串行设备的 GPS 读取数据。我不想使用 chmod u+ssudo 并只为流程提供执行此操作的最低功能。

为了测试,我使用了cat 命令:

sudo cat /dev/ttyACM0

这行得通,但我可以给cat 一个读取串行端口的特定功能吗?

我试过setcap cap_sys_rawio+pcap_sys_tty_config+p 没有成功。 我的想法是为二进制文件提供完成任务所需的最低权限。

【问题讨论】:

  • 没什么特别的,在dev文件上使用chown/chgrp/chmod

标签: linux serial-port capability


【解决方案1】:

通常 tty 属于类似于dialup 的组。这主要用于旧的cu 程序。

您可以使用(我也这样做)的一件事是将自己包含在dialup 组中,因为您会看到未使用的 tty 对其所属的所有者和组具有写入权限。

测试时不要忘记注销并重新登录,因为要在您所属的组列表中获取dialup 组的组ID,需要通过login(1) 程序。

注意

在我的系统(FreeBSD 11.x)上,gps 属于operator 组,而我(我的帐户)属于该组。我可以打开 gps(带有伪终端的蓝牙设备)

在 linux 中,我使用/dev/rfcomm0(蓝牙)串行设备。在 debian 中,/dev/ttyS0[0-3] 属于 dialout 组。您可以使用该组。

【讨论】:

  • 我已经看到在 Ubuntu 中该组是拨出。因为我想给我的进程尽可能少的权限,所以我使用 ACL 和命令 sudo setfacl -m u:processaccount:rw /dev/ttyACM0 解决了这个问题,其中 processaccount 是运行进程的用户。这与赋予流程一定的能力完全相反,但我还没有发现更好的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多