在我的应用程序中,我需要将USB设备的latency_timer编辑为1,因为它会导致很大的通信延迟。根骄傲是必要的编辑它,但我想让普通用户做它。
latency_timer文件是:
/sys/bus/usb-serial/devices/ttyUSB0/latency_timer它是644/root:root。目前,我需要在每次引导后编辑它的根优先级。
我认为有两种解决办法,这两种办法我都可以接受:
latency_timer的权限。我该怎么做1或2?
(注意:“普通用户”属于dialout组,因此他们对设备具有常规的读写访问权限。)
发布于 2021-04-24 09:09:32
一个简单的解决方案是使用方法1。
首先,创建一个名为/sbin/fix_usb_latency.sh的bash脚本:
#!/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。
$ sudo visudo要给予用户akihikoy许可:
akihikoy ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh若要授予组拨号权限(%表示组):
%dialout ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh然后,此脚本的执行不会请求密码。
$ sudo /sbin/fix_usb_latency.sh ttyUSB0https://unix.stackexchange.com/questions/645744
复制相似问题