GPIO権限を明確に設定する

GPIO権限を明確に設定する

/sys/class/gpio/ ファイルのデフォルトの権限と所有権は、たとえば udev を構成することによって設定できますか? ポイントは、ボード上の GPIO ピンにアクセスできるプロセスに実際の gid を設定することです。

ほとんどの「ソリューション」にはsuidラッパーが含まれています。chown を使用したスクリプト信頼できる仲介業者のバイナリ。ウェブ検索でudevルールの記述に失敗した

(関連している:Q1

(リソース:avrfreaksリナックスユーデブ

答え1

すべての権限を正しくきれいに設定するために、/etc/udev/rules.d/99-gpio.rules を追加しました。

SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", RUN+="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", RUN+="/bin/chown root:gpio /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value", RUN+="/bin/chmod 660 /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value"

答え2

Ubuntuの場合は実行します。

sudo apt install rpi.gpio-common

答え3

私はこれを使用します(gpio グループがすでに作成されていると仮定します):

/etc/udev/rules.d/99-gpio.rules

サブシステム=="gpio"、カーネル=="gpiochip*"、グループ:="gpio"、モード:="0660"

答え4

GPIO インターフェイスはシステム (uid ルート) 専用に構築されているようで、ユーザー プロセス用の /dev インターフェイスの機能はありません。これには作成権限が含まれます。

ユーザー プロセス (デーモンやその他のシステム サービスを含む) のアクセスを許可するには、ある時点でルート プロセスによって権限が付与される必要があります。これは、init スクリプト、仲介者、または手動 (sudo) コマンドによって行うことができます。

関連情報