Я хочу взаимодействовать с контактами 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
кто-нибудь знает как это исправить?
Komp






















