Je travaille sur l'écriture d'une application graphique qui utilise le GPU du Pi, et je reçois constamment des * failed to open vchiq instance
erreurs lors de l'exécution de mes programmes. Ceci est généralement résolu par un sudo chmod 777 /dev/vchiq
, mais (1) il s'agit d'un correctif très peu sûr qui n'est certainement pas adapté au déploiement sur des appareils appartenant à l'utilisateur, et (2) il est réinitialisé après chaque redémarrage.
Comment puis-je résoudre mes /dev/vchiq
problèmes "de la bonne façon", de manière persistante, sans introduire de problèmes de sécurité?
la source
sudo usermod -a -G video $(whoami)
), je recommanderais également (pour des raisons de sécurité) d'ajouter un utilisateur dédié pour tout processus qui aura besoin d'accéder à la caméra et d'ajouter uniquement cet utilisateur auvideo
groupe.Vous pouvez créer une règle udev pour définir des autorisations spécifiques sur l'appareil. En tant que root, vous pouvez:
la source
/lib/udev/rules.d/91-permissions.rules
donc j'essaierais d'écrire ceci dans un fichier encore plus élevé (et peut-être d'inclure local dans le nom pour l'identifier comme une modification locale), c'est-à-dire:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Vous pouvez définir une
SUID
autorisationla source
setuid
attribut, les utilisateurs normaux du système autorisés à exécuter ce fichier obtiennent les privilèges de l'utilisateur propriétaire du fichier (généralement root). Vous pouvez définir cela sur votre programme (en supposant qu'il appartient à root). Comme/dev/vchiq
appartient au groupe,video
une autre option est de définirsetgid
et le groupe de votre programmevideo
.www-data
soit dans levideo
groupe, mais j'ai réussi avecchmod a+rw /dev/vchiq
Raspbian Stretch.ajouter
à
boot/config.txt
courir puissudo raspistill -o cam.jpg
Bien sûr, j'ai ajouté le chemin du raspistill. Cela a fonctionné pour moi dans Ubuntu.
la source
Si vous exécutez raspistill à partir d'un script php accessible via un navigateur, vous devez entrer:
sudo usermod -a -G video www-data
pour donner à Apache les autorisations nécessaires.la source