乾淨地設定 GPIO 權限

乾淨地設定 GPIO 權限

是否可以設定 /sys/class/gpio/ 檔案的預設權限和所有權,例如透過配置 udev?重點是為可以存取板上 GPIO 引腳的進程提供真正的 gid。

大多數“解決方案”包括 suid 包裝器,帶有 chown 的腳本和受信任的中間人二進位。網路搜尋出現嘗試編寫 udev 規則失敗

(有關的:Q1

(資源:怪胎,作業系統,烏德夫

答案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 root)使用而建構的,不具有 /dev 介面用於使用者進程的功能。這包括創建權限。

為了允許使用者進程(包括守護程式和其他系統服務)訪問,需要在某個時刻由根進程授予權限。它可以是初始化腳本、中間人或手動 (sudo) 命令。

相關內容