Я хочу взаимодействовать с контактами GPIO с помощью модуля Python Ablib. И я хочу сделать это без прав суперпользователя. Как я могу этого добиться?
когда я создаю ablib.Pin
экземпляр модуль открывает /sys/class/gpio/export
и записывает в него pin-код. Поначалу это вызывает IOErro:
IOError: [Errno 13] Permission denied: '/sys/class/gpio/export'
это можно легко решить с помощью chmod
. Теперь, когда я создаю ablib.Pin
экземпляр я получаю IOError на другом файл:
IOError: [Errno 13] Permission denied: '/sys/class/gpio/pioC16/direction'
ls -la
on /sys/class/gpio
возвращает:
--w------- 1 my_user my_user 4096 Jan 1 01:42 export
lrwxrwxrwx 1 root root 0 Jan 1 01:42 pioC16 -> ../../devices/ahb.0/apb.1/pinctrl.2/fffff800.gpio/gpio/pioC16
при написании от 115 до /sys/class/gpio/export
ядро создает символическую ссылку /sys/class/pioC16
. Проблема в том, что root
является владельцем этой ссылки. Я хочу, чтобы новые созданные файлы принадлежали my_user
. Но я не знаю, как это сделать. Я пробовал chmod
и chown
:
$ chown -R my_user:my_user /sys/class/gpio
$ chmod g+s /sys/class/gpio
а я пробовал ACL
. Но согласно этой вопрос похоже, что я не могу использовать ACL на sysfs
.
$ setfacl -m group:my_group:rwx /sys/class/gpio
setfacl: /sys/class/gpio: Invalid argument
кто-нибудь знает как это исправить?