Pracuję nad napisaniem aplikacji graficznej korzystającej z procesora graficznego Pi i ciągle pojawiają się * failed to open vchiq instance
błędy podczas uruchamiania moich programów. Zwykle jest to naprawione przez sudo chmod 777 /dev/vchiq
, ale (1) jest to bardzo niepewna poprawka, która zdecydowanie nie nadaje się do wdrożenia na urządzeniach należących do użytkownika, i (2) resetuje się po każdym ponownym uruchomieniu.
Jak mogę /dev/vchiq
uporczywie naprawić swoje problemy „we właściwy sposób” bez wprowadzania problemów związanych z bezpieczeństwem?
źródło
sudo usermod -a -G video $(whoami)
), zaleciłbym również (ze względów bezpieczeństwa) dodanie dedykowanego użytkownika do dowolnego procesu wymagającego dostępu do kamery i dodanie tylko tego użytkownika dovideo
grupy.Możesz utworzyć regułę udev, aby ustawić określone uprawnienia na urządzeniu. Jako root możesz:
źródło
/lib/udev/rules.d/91-permissions.rules
więc, więc spróbuję zapisać go na jeszcze wyższym (i być możeecho `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Możesz ustawić
SUID
uprawnieniaźródło
setuid
atrybut, normalni użytkownicy w systemie, którzy mają uprawnienia do wykonania tego pliku, zyskują uprawnienia użytkownika, który jest właścicielem pliku (zwykle root). Możesz ustawić to w swoim programie (zakładając, że jest własnością root). Jak/dev/vchiq
należy do grupy,video
inną opcją jest ustawienie,setgid
a grupa w twoim programie navideo
.www-data
jest wvideo
grupie, ale udało mi sięchmod a+rw /dev/vchiq
na Raspbian Stretch.Dodaj
aby
boot/config.txt
następnie uruchomićsudo raspistill -o cam.jpg
Oczywiście dodałem ścieżkę do raspistill. To działało dla mnie w Ubuntu.
źródło
Jeśli korzystasz z raspistill ze skryptu php dostępnego przez przeglądarkę, musisz wpisać:
sudo usermod -a -G video www-data
aby nadać Apache niezbędne uprawnienia.źródło