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