Используйте /sys/class/gpio/ в Python без прав суперпользователя

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

кто-нибудь знает как это исправить?

29
задан Community
13.05.2023 8:41 Количество просмотров материала 3386
Распечатать страницу

2 ответа

на это был дан ответ здесь.

по существу, отредактируйте файл /etc/udev/rules.d/99-com.rules и добавляет:

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio; chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio'"

затем добавьте пользователя в группу "gpio":

sudo usermod -a -G gpio <youruser>

после перезагрузки вы сможете читать и писать в /sys / class / gpio как обычный пользователь. Я просто сделал это сам, и он работал нормально.

1
отвечен Cerin 2023-05-14 16:29

разрешение ссылки не так важно...

разрешения цель !!

пожалуйста, в ЛС-Ла "../../ устройства / ahb.0 / apb.1 / pinctrl.2/fffff800.gpio/gpio / pioC16"

-3
отвечен Emjay 2023-05-14 18:46

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх