Правильно настройте разрешения GPIO

Правильно настройте разрешения GPIO

Можно ли задать разрешения по умолчанию и владельца файлов /sys/class/gpio/, например, настроив udev? Смысл в том, чтобы иметь реальный gid для процессов, которые могут получить доступ к контактам GPIO на плате.

Большинство «решений» включают в себя 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 root) и не имеет функций, которые интерфейс /dev мог бы использовать для пользовательских процессов. Это включает в себя разрешения на создание.

Чтобы разрешить доступ пользовательским процессам (включая демоны и другие системные службы), разрешения должны быть предоставлены корневым процессом в какой-то момент. Это может быть скрипт инициализации, посредник или ручная (sudo) команда.

Связанный контент