Я хочу взаимодействовать с выводами GPIO с помощью модуля Python Ablib. И я хочу сделать это без прав root. Как мне этого добиться?
Когда я создаю ablib.Pin кода модуль открывает /sys/class/gpio/export и записывает в него номер пин- кода . Первоначально это вызывает 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 для /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
Кто-нибудь знает, как это исправить?
