Linux

乾淨地設置 GPIO 權限

  • February 7, 2022

是否可以設置/sys/class/gpio/ 文件的預設權限和所有權,例如通過配置udev?關鍵是為可以訪問板上GPIO引腳的程序提供一個真正的gid。

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

(相關:Q1

(資源:avrfreakslinuxudev

GPIO 介面似乎是為系統(uid root)使用而建構的,並且沒有 /dev 介面用於使用者程序的功能。這包括創建權限。

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

我添加了 /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"

引用自:https://unix.stackexchange.com/questions/42122