¿Se pueden establecer los permisos predeterminados y la propiedad de los archivos /sys/class/gpio/, por ejemplo, configurando udev? El objetivo sería tener un gid real para los procesos que pueden acceder a los pines GPIO en una placa.
La mayoría de las "soluciones" incluyen envoltorios suid,guiones con chowny binarios de intermediarios confiables. Aparecen búsquedas en la webintentos fallidos de escribir reglas udev.
(relacionado:Q1)
Respuesta1
Agregué /etc/udev/rules.d/99-gpio.rules para configurar todos los permisos de forma correcta y limpia:
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"
Respuesta2
Para ejecutar Ubuntu.
sudo apt install rpi.gpio-common
Respuesta3
Yo uso esto (suponiendo que el grupo gpio ya esté creado):
/etc/udev/rules.d/99-gpio.rules
SUBSISTEMA=="gpio", KERNEL=="gpiochip*", GRUPO:="gpio", MODO:="0660"
Respuesta4
La interfaz GPIO parece estar diseñada para uso exclusivo del sistema (uid root) y no tiene las características que tendría una interfaz /dev para procesos de usuario. Esto incluye permisos de creación.
Para permitir el acceso a los procesos de usuario (incluidos demonios y otros servicios del sistema), los permisos deben ser otorgados por un proceso raíz en algún momento. Podría ser un script de inicio, un intermediario o un comando manual (sudo).