Ich arbeite daran, eine grafische Anwendung zu schreiben, die die GPU des Pi verwendet, und es treten ständig * failed to open vchiq instance
Fehler beim Ausführen meiner Programme auf. Dies wird normalerweise durch a behoben sudo chmod 777 /dev/vchiq
, aber (1) dies ist ein sehr unsicherer Fix, der definitiv nicht für die Bereitstellung auf benutzereigenen Geräten geeignet ist, und (2) er wird nach jedem Neustart zurückgesetzt.
Wie kann ich meine /dev/vchiq
Probleme dauerhaft "auf die richtige Weise" beheben , ohne Sicherheitsprobleme einzuführen?
quelle
sudo usermod -a -G video $(whoami)
) funktioniert. Aus Sicherheitsgründen würde ich auch empfehlen, einen dedizierten Benutzer für jeden Prozess hinzuzufügen, der Zugriff auf die Kamera benötigt, und nur diesen Benutzer dervideo
Gruppe hinzuzufügen .Sie können eine udev-Regel erstellen, um bestimmte Berechtigungen für das Gerät festzulegen. Als root können Sie:
quelle
/lib/udev/rules.d/91-permissions.rules
so, dass ich versuchen würde, diese auf eine noch höhere Datei zu schreiben (und möglicherweise local in den Namen aufzunehmen, um sie als lokale Modifikation zuecho `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Sie können die
SUID
Berechtigung festlegenquelle
setuid
Attribut zugewiesen wurde, erhalten normale Benutzer auf dem System, die zur Ausführung dieser Datei berechtigt sind, die Berechtigungen des Benutzers, dem die Datei gehört (normalerweise root). Sie können dies in Ihrem Programm einstellen (vorausgesetzt, es gehört root). Als/dev/vchiq
zur Gruppe gehörend ist einevideo
andere Option einzustellensetgid
und die Gruppe auf Ihr Programm zu stellenvideo
.www-data
in dervideo
Gruppe ist, aber es ist mir beichmod a+rw /dev/vchiq
Raspbian Stretch gelungen .hinzufügen
um
boot/config.txt
dann zu rennensudo raspistill -o cam.jpg
Natürlich habe ich den Pfad für den Raspistill hinzugefügt. Es hat bei mir in Ubuntu funktioniert.
quelle
Wenn Sie raspistill über ein PHP-Skript ausführen, auf das über einen Browser zugegriffen wird, müssen Sie Folgendes eingeben:,
sudo usermod -a -G video www-data
um Apache die erforderlichen Berechtigungen zu erteilen.quelle