Saya sedang mengerjakan penulisan aplikasi grafis yang menggunakan GPU Pi, dan saya terus-menerus mendapatkan * failed to open vchiq instance
kesalahan saat menjalankan program saya. Ini biasanya diperbaiki oleh a sudo chmod 777 /dev/vchiq
, tetapi (1) ini adalah perbaikan yang sangat tidak aman yang pasti tidak cocok untuk penyebaran ke perangkat yang dimiliki pengguna, dan (2) itu akan direset setelah setiap reboot.
Bagaimana saya bisa memperbaiki /dev/vchiq
masalah saya "dengan cara yang benar", terus-menerus, tanpa memperkenalkan masalah keamanan?
sumber
sudo usermod -a -G video $(whoami)
), saya juga akan merekomendasikan (untuk tujuan keamanan) menambahkan pengguna khusus untuk proses apa pun yang akan memerlukan akses ke kamera dan menambahkan hanya pengguna itu kevideo
grup.Anda dapat membuat aturan udev untuk mengatur izin khusus pada perangkat. Sebagai root, Anda dapat:
sumber
/lib/udev/rules.d/91-permissions.rules
jadi saya akan mencoba menulis ini ke yang lebih tinggi (dan mungkin memasukkan nama lokal untuk mengidentifikasinya sebagai modifikasi lokal), yaitu:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Anda dapat mengatur
SUID
izinsumber
setuid
atribut, pengguna normal pada sistem yang memiliki izin untuk mengeksekusi file ini mendapatkan hak istimewa dari pengguna yang memiliki file (umumnya root). Anda dapat mengatur ini di program Anda (dengan asumsi itu dimiliki oleh root). Sebagai/dev/vchiq
milik grup,video
pilihan lain adalah mengatursetgid
dan grup di program Andavideo
.www-data
dalamvideo
grup, tetapi saya berhasil denganchmod a+rw /dev/vchiq
di Raspbian Stretch.menambahkan
untuk
boot/config.txt
kemudian larisudo raspistill -o cam.jpg
Tentu saja saya menambahkan jalur untuk raspistill. Ini bekerja untuk saya di Ubuntu.
sumber
Jika Anda menjalankan raspistill dari skrip php yang diakses melalui browser, maka Anda harus memasukkan:
sudo usermod -a -G video www-data
untuk memberi izin yang diperlukan kepada Apache.sumber