如何在没有root权限的情况下编辑latency_timer?

如何在没有root权限的情况下编辑latency_timer?

在我的应用程序中,我需要将latency_timerUSB 设备编辑为 1,因为它会导致通信延迟较大。编辑它需要root权限,但我想让普通用户这样做。

latency_timer文件是:

/sys/bus/usb-serial/devices/ttyUSB0/latency_timer

即 644/root:root。目前,我需要在每次使用 root 权限启动后编辑它。

我认为有两种解决方案,我都可以接受:

  1. 让普通用户有编辑的权限latency_timer
  2. 将系统设置更改为latency_timer在设备插入时始终设置为 1。

我怎样才能做到1或2?

(注意:“普通用户”属于该dialout组,因此他们对设备具有常规读/写访问权限。)

答案1

一个简单的解决方案是使用方法 1。

首先,创建一个名为 bash 脚本/sbin/fix_usb_latency.sh

#!/bin/bash
dev=ttyUSB0
if [ $# -ge 1 ];then
  dev=$1
fi
if [ -f /sys/bus/usb-serial/devices/$dev/latency_timer ] && [ `cat /sys/bus/usb-serial/devices/$dev/latency_timer` -gt 1 ];then
  echo "Fixing the latency issue of $dev..."
  echo 1 | sudo tee /sys/bus/usb-serial/devices/$dev/latency_timer
fi

然后,进行编辑/etc/sudoer以让用户或组/sbin/fix_usb_latency.sh在没有 root 权限的情况下执行。

$ sudo visudo

授予用户 akihikoy 权限:

akihikoy ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh

授予组 dialout 权限(%表示组):

%dialout ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh

那么执行这个脚本就不需要密码了。

$ sudo /sbin/fix_usb_latency.sh ttyUSB0

相关内容