루트 권한 없이 Latency_timer를 편집하는 방법은 무엇입니까?

루트 권한 없이 Latency_timer를 편집하는 방법은 무엇입니까?

latency_timer내 애플리케이션에서는 USB 장치를 1로 편집 해야 합니다 . 왜냐하면 통신 지연이 많이 발생하기 때문입니다. 편집하려면 루트 액세스가 필요하지만 일반 사용자가 수행하기를 원합니다.

파일 latency_timer은 다음과 같습니다

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

그것은 644/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루트 권한 없이 실행할 수 있도록 편집합니다.

$ 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

관련 정보