Usb
如何在沒有root權限的情況下編輯latency_timer?
在我的應用程序中,我需要將
latency_timer
USB 設備編輯為 1,因為它會導致通信延遲很大。編輯它需要root權限,但我想讓普通使用者這樣做。該
latency_timer
文件是:/sys/bus/usb-serial/devices/ttyUSB0/latency_timer
即 644/root:root。目前,我需要在每次啟動後使用 root 權限對其進行編輯。
我認為會有兩種解決方案,我都可以接受:
- 讓普通使用者有編輯權限
latency_timer
。- 將系統設置更改為
latency_timer
在插入設備時始終設置為 1。我該怎麼做1或2?
(注意:“普通使用者”屬於該
dialout
組,因此他們具有對設備的正常讀/寫訪問權限。)
一個簡單的解決方案是使用方法 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 ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh
那麼這個腳本的執行不需要密碼。
$ sudo /sbin/fix_usb_latency.sh ttyUSB0