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