Dostęp do GPIO (z Raspberry pi) bez`sudo"
To pytanie może nie być specyficzne dla raspberry pi, oczywiście. Ponadto jestem stosunkowo nowy w Linuksie.
Chcę napisać małą bibliotekę (w node.js, jeśli to ma znaczenie), aby uzyskać dostęp do GPIO z raspberry pi za pomocą sysfs. Jednak dostęp do systemu sysfs wymaga dostępu sudo, co jest złe z oczywistych powodów.
Quick2Wire wydaje się mieć rozwiązanie, ale chcę je lepiej zrozumieć, a nie tylko ślepo z niego korzystać. Oczywiście używali C, ale z tego co ja zrozum, kod nie jest skomplikowany i prawdopodobnie można go ściągnąć za pomocą Basha, nawet jeśli jest mniej elegancki. Jednak, bardziej niż cokolwiek innego, nie jestem pewien dlaczego to działa.
Każda pomoc będzie świetna.Edit: dzięki za komentarze. To jasne, że muszę zmienić zdanie. Here goes:
Jak to jest, że po zainstalowaniu (jako root), aplikacja nie wymaga więcej stałych root używać? W jaki sposób dodanie kogoś do grupy pomaga w tym przypadku? /sys/devices/virtual/gpio
to nie jest miejsce gdzie GPIO sysfs jest dostępny, więc o co w tym chodzi? Naprawdę jestem n00b, więc te pytania mogą być n00b-owskie, więc proszę o cierpliwość.
1 answers
Rakesh, próbowałem dowiedzieć się dokładnie tego samego i myślę, że to rozwiązałem.
Nie musisz w ogóle rozumieć zbyt wielu plików makefile. Ważne linie są następujące, które są wykonywane w bash po uruchomieniu sudo make install
install: install-files
groupadd -f --system gpio
chgrp gpio $(DESTDIR)/bin/gpio-admin
chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin
groupadd -f --system gpio
tworzy grupę systemową o nazwie gpio. chgrp gpio $(DESTDIR)/bin/gpio-admin
zmienia grupę binarnych (które plik C GPIO-admin.C został skompilowany do) do gpio. Właścicielem pliku binarnego jest nadal root (ponieważ używasz make jako root.) chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin
robi dwie ważne rzeczy. Po pierwsze, pozwala członkowi grupy GPIO uruchomić gpio-admin. Po drugie, ustawia bit setuid na gpio-admin.
Po dodaniu się do grupy gpio, można uruchomić GPIO-admin, bez użycia sudo, ale GPIO admin będzie działać jak jest uruchamiany pod sudo. Pozwala to na zapis do pliku / sys / class/gpio / export. Pozwala również zmienić właściciela plików / sys / class/gpio / gpio[numer pin] / direction itp. to się tworzy.
Nawet jeśli zmienisz Grupa / sys / class/gpio / export do gpio, i ustawić uprawnienia, aby umożliwić pisanie do niego
sudo chgrp gpio /sys/class/gpio/export /sys/class/gpio/unexport
sudo chmod g+rwx /sys/class/gpio/export /sys/class/gpio/unexport
Możesz wyeksportować pin bez uprawnień superużytkownika]}
echo 22 > /sys/class/gpio/export
Ale pliki / sys / class/gpio/gpio22 / direction itp. nadal będzie create z rootem jako właścicielem i grupą, i będziesz musiał użyć sudo, aby je zmienić. Ponadto, własność plików export i unexport powróci do roota po każdym ponownym uruchomieniu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-23 20:29:53