root権限なしでLatency_timerを編集するには?

root権限なしでLatency_timerを編集するには?

latency_timer私のアプリケーションでは、USBデバイスを1に編集する必要があります。なぜなら、通信遅延が多く発生するからです。編集にはrootアクセスが必要ですが、通常のユーザーが実行したいと思います。

ファイルlatency_timerは次のとおりです

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

それは 644/root:root です。現在は、起動するたびにroot権限で編集する必要があります。

私の考えには2つの解決策があり、両方を受け入れることができます。

  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.shroot権限なしで実行できるように編集します。

$ 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

おすすめ記事