Defina as permissões GPIO de forma limpa

Defina as permissões GPIO de forma limpa

As permissões padrão e a propriedade dos arquivos /sys/class/gpio/ podem ser definidas, por exemplo, configurando o udev? O objetivo seria ter um guia real para processos que podem acessar os pinos GPIO em uma placa.

A maioria das "soluções" inclui invólucros suid,roteiros com chowne binários intermediários confiáveis. Pesquisas na web aparecemtentativas fracassadas de escrever regras do udev.

(relacionado:1º trimestre)

(recursos:avrfreaks,linux,udev)

Responder1

Eu adicionei o /etc/udev/rules.d/99-gpio.rules para definir todas as permissões de maneira correta e limpa:

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"

Responder2

Para execução do Ubuntu.

sudo apt install rpi.gpio-common

Responder3

Eu uso isso (assumindo que o grupo gpio já foi criado):

/etc/udev/rules.d/99-gpio.rules

SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GRUPO:="gpio", MODO:="0660"

Responder4

A interface GPIO parece ter sido construída apenas para uso do sistema (uid root) e não possui os recursos que uma interface /dev teria para processos do usuário. Isso inclui permissões de criação.

Para permitir o acesso aos processos do usuário (incluindo daemons e outros serviços do sistema), as permissões precisam ser concedidas por um processo raiz em algum momento. Pode ser um script de inicialização, um intermediário ou um comando manual (sudo).

informação relacionada