たとえば、udevを設定して/sys/class/gpio/ファイルのデフォルト権限と所有権を設定できますか?要点は、ボードのGPIOピンにアクセスするプロセスに実際のGIDを提供することです。
ほとんどの「ソリューション」にはsuidラッパーが含まれます。chownを使ったスクリプト信頼できる仲介者バイナリ。 Web検索が表示されますudevルールを作成しようとして失敗しました。。
(関連:第1四半期)
(資源:モンスター、オペレーティングシステム、ウデブ)
答え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インターフェイス機能はありません。これには作成権限が含まれます。
デーモンや他のシステムサービスを含むユーザープロセスへのアクセスを許可するには、特定の時点でルートプロセスで権限を付与する必要があります。これは初期化スクリプト、仲介者、または手動(sudo)コマンドです。