[ peromalosutra @ 29.11.2010. 20:20 ] @
Pozdrav svima,

Kod kuce imam racunar koji izigrava server na kome je instaliran Ubuntu 9.10, medjutim ista masina se koristi i kao desktop kompjuter. Instalirao sam i podesio Apache, SSH, NAT na ruteru i to sve radi ok. Medjutim danas sam htio napraviti veoma jednostavnu php stranicu koja ce prikazivati sliku uslikanu preko web kamere.

Samo sliku dobijam koristeci sledecu komandu:

Code:
fswebcam --flip h,v --crop 440x330 -r 640x480 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf --title Soba  /var/www/webcam/tmp.jpg


User account koji koristim ima privilegiju da pise u /var/www/webcam i ova komanda prodje sasvim ok, slika tmp.jpg se kreira bez ikakvih problema.

Medjutim kada se na "server" ulogujem remote, preko SSH, sa istim korisnickim nalogom kao i u prethodnom slucaju, dobijem sledecu gresku:

Code:

$ fswebcam --flip h,v --crop 440x330 -r 640x480 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf --title Soba  /var/www/webcam/tmp.jpg
--- Opening /dev/video0...
Trying source module v4l2...
Error opening device: /dev/video0
open: Permission denied
Trying source module v4l1...
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.


Ako tada probam istu komandu sa sudo, ona prodje.

Code:

$ sudo fswebcam --flip h,v --crop 440x330 -r 640x480 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf --title Soba  /var/www/webcam/tmp.jpg
[sudo] password for xxxxxx:
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Flipping image horizontally.
Flipping image vertically.
Cropping image from 640x480 [offset: 100x75] -> 440x330.
Setting font to /usr/share/fonts/truetype/msttcorefonts/arial.ttf.
Setting title "Soba".
Writing JPEG image to '/var/www/webcam/tmp.jpg'.



Dakle razlika je u tome da kad sam ulogovan u graficko okruzenje, komanda se izvrsava ok kroz terminal, dok ista ta komanda pod istim korisnickim nalogom ne radi preko SSH, osim ako ne koristim root privilegije (sudo).

Ima li iko ideju kako da ovo rijesim, pa da se komanda izvrsava i pod privilegijama obicnog korisnika?
[ combuster @ 29.11.2010. 20:46 ] @
Sta ti kaze:

ls -lh /dev/video0
[ maksvel @ 29.11.2010. 20:55 ] @
kao da te u lokalu propušta u /dev na osnovu secondary grupe, a preko SSH tretira samo primary...
[ peromalosutra @ 29.11.2010. 20:55 ] @
Trenutno sam na poslu, ali evo kroz SSH:

Code:

$ ls -lh /dev/video0
crw-rw----+ 1 root video 81, 0 2010-11-29 17:59 /dev/video0
[ combuster @ 29.11.2010. 21:07 ] @
Probaj sa:

sudo chmod 664 /dev/video0

pa onda kao user to sto inace pokusavas sa fswebcam

Ako nece onda

sudo chmod 666 /dev/video0

pa opet probaj kao user
[ maksvel @ 29.11.2010. 21:16 ] @
.. Imaš ACL postavljen na fajlu. Pretpostavljam da to daje efekte ignorisanja grupe ili sl.

uklanjaš sa setfacl --remove-default /dev/video0
[ combuster @ 29.11.2010. 21:53 ] @
Cisto iz kurioziteta, sta kaze

getfacl /dev/sr0

@maksvel

Thnx profesore, missed that one :)
[ vatri @ 29.11.2010. 23:02 ] @
Cek kako znas da je Acl postavljen? :)
[ combuster @ 29.11.2010. 23:22 ] @
+ na kraju dozvola...
[ peromalosutra @ 30.11.2010. 17:06 ] @
Posao, faks, nisam stigao ranije, evo outputa :)

Code:

$ getfacl /dev/sr0 
getfacl: Removing leading '/' from absolute path names
# file: dev/sr0
# owner: root
# group: cdrom
user::rw-
user:ivan:rw-
group::rw-
mask::rw-
other::---


Probao da chmod 644 za /dev/video0 i izgleda da radi (tj. probao sam se ulogovati na SSH sa samog racunara na kome se vrti server, ali trebalo bi da je to isto kao i da se logujem remote).

Probacu jos kad odem na posao, pa ako bude problema uklonicu i taj ACL.

Hvala svima na pomoci, javim vam jos ako bude nekih pitanja vezano za ovo. :)
[ vatri @ 30.11.2010. 17:34 ] @
Citat:
combuster: + na kraju dozvola...


A to je znaci... Hvala!
Vidio sam i kod sebe iste dozvole, ali sam mislio da treba ACL instalirat naknadno pa mi nije bilo jasno.
[ peromalosutra @ 30.11.2010. 19:03 ] @
Hm, evo sad se ulogovah sa posla i opet ne radi, dakle izgleda da ne radi kad korisnik nije fizicki ulogovan.

Probah sa:

Code:

$ sudo setfacl --remove-default /dev/video0                 
[sudo] password for xxxxxx:
$ fswebcam -r 640x480 --crop 510x360,50x120 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf  --title Soba /var/www/webcam/tmp.jpg
--- Opening /dev/video0...
Trying source module v4l2...
Error opening device: /dev/video0
open: Permission denied
Trying source module v4l1...
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.



Medjutim nece (ili sam uradio nesto pogresno?). Onda sam uradio chmod 666 /dev/video0 i sad je sve ok. :)

Code:

$ sudo chmod 666 /dev/video0
$ fswebcam -r 640x480 --crop 510x360,50x120 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf  --title Soba /var/www/webcam/tmp.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Cropping image from 640x480 [offset: 50x120] -> 510x360.
Setting font to /usr/share/fonts/truetype/msttcorefonts/arial.ttf.
Setting title "Soba".
Writing JPEG image to '/var/www/webcam/tmp.jpg'.



Hvala na rjesenju :)
[ peromalosutra @ 30.11.2010. 19:06 ] @
Btw, da li bi komanda setfacl --remove-default trebala ukloniti taj znak + ? :) Kod mene se to ne desava:

Code:

$ sudo setfacl --remove-default /dev/video0 
$ ls -l /dev/video0
crw-rw-rw-+ 1 root video 81, 0 2010-11-30 12:32 /dev/video0
[ maksvel @ 30.11.2010. 19:29 ] @
Mislim da bi sa
setfacl --remove-all ime-fajla

trebalo da ukloni - (nisam isprobao).

Gore si, pre par postova (slučajno?) dao izlaz od /dev/sr0
[ combuster @ 30.11.2010. 19:42 ] @
Nije slucajno nego sam mu ja trazio greskom sr0, tako da je opet moja krivica. Dva previda u jednoj temi, sta li mi je :)
[ peromalosutra @ 30.11.2010. 20:31 ] @
Hm da, jos meni nije bilo jasno za sta ce /dev/sr0, ali nisam se nesto ni bunio :)

Uglavnom :)

Code:

$ getfacl /dev/video0
getfacl: Removing leading '/' from absolute path names
# file: dev/video0
# owner: root
# group: video
user::rw-
user:ljiljana:rw-
group::rw-
mask::rw-
other::rw-



Htio sam da sakrijem imena korisnickih accounta, ali valjda ce dobre sifre biti dovoljne :) Dakle ovo "ljiljana" je drugi korisnicki nalog koji se koristi :D (potoje 2 korisnicka nalogana istom kompjuteru koja se paralelno koriste), trenutno:

Code:

$ who
ljiljana tty7         2010-11-30 19:06 (:0)
ivan     pts/0        2010-11-30 19:52 (static-xxxxxxxxxxxxxxxxxxxxxxxx)


Ja koristim accout ivan za sve, ukljucujuci i SSH. Da li je mozda problem u ovome?

btw, setfacl je proslo
Code:

ivan@ivan-desktop:~$ sudo setfacl --remove-all /dev/video0
[sudo] password for ivan:
ivan@ivan-desktop:~$ ls -l /dev/video0
crw-rw-rw- 1 root video 81, 0 2010-11-30 12:32 /dev/video0


pa sam pokusao vratiti privilegije na 644, medjutim tako nece

Code:

ivan@ivan-desktop:~$ sudo chmod 644 /dev/video0
ivan@ivan-desktop:~$ crontab -e
No modification made
ivan@ivan-desktop:~$ fswebcam -r 640x480 --crop 510x360,50x120 --font /usr/share/fonts/truetype/msttcorefonts/arial.ttf  --title Soba /var/www/webcam/tmp.jpg--- Opening /dev/video0...
Trying source module v4l2...
Error opening device: /dev/video0
open: Permission denied
Trying source module v4l1...
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.

ivan@ivan-desktop:~$ ls -l /dev/video0
crw-r--r-- 1 root video 81, 0 2010-11-30 12:32 /dev/video0


Huh :) I ovo rjesenje sa chmod 666 mi je ok za sad, radi posao, ali ako imate jos ideja, voljan sam da probam cisto zbog ucenja :)
[ niceness @ 30.11.2010. 22:02 ] @
Dodaj koisnika u grupu video i neces imati problema.

A sa konzolnim korisnikom (lokalni login; bilo u X ili direktno tty) radi zato sto consolekit dodaju acl za trenutnog aktivnog korisnika (tacnije udev-acl postavlja acl).