웹캠 사용 여부를 알 수있는 명령은 무엇입니까?
lsof /dev/video0
충분하지 않습니다. 주 번호와 부 번호 81과 0을 가진 모든 블록 장치를 모니터링해야합니다.
lsof /dev/video0
에 열린 파일 디스크립터를 보유한 모든 프로세스가 /dev/video0
어떤 파일 시스템 경로를 사용했는지에 관계없이 커널 vfs 객체에 연결된 모든 프로세스를 원한다고 가정 했지만 OP의 질문은 이것이 사실이 아님을 분명히합니다.
웹캠 사용 여부를 알 수있는 명령은 무엇입니까?
lsof /dev/video0
충분하지 않습니다. 주 번호와 부 번호 81과 0을 가진 모든 블록 장치를 모니터링해야합니다.
lsof /dev/video0
에 열린 파일 디스크립터를 보유한 모든 프로세스가 /dev/video0
어떤 파일 시스템 경로를 사용했는지에 관계없이 커널 vfs 객체에 연결된 모든 프로세스를 원한다고 가정 했지만 OP의 질문은 이것이 사실이 아님을 분명히합니다.
답변:
커널이 모듈을 사용하는 경우 (아마도) 프로그램이 웹캠에 액세스하고 있는지 확인하는 한 가지 방법은 모듈의 사용 횟수를 확인하는 것입니다.
$ lsmod | grep uvcvideo
uvcvideo 90112 0
세 번째 필드의 0은 uvcvideo
제어 된 웹캠 ( lsmod
실행시)에 열려있는 장치가 없음을 나타냅니다 . 물론 웹캠을 담당하는 모듈을 정확히 알아야합니다. 그러나 쉽게 확인할 수 있습니다. Cheese와 같은 프로그램을 실행하는 동안 출력이 변경되는 것을 볼 수 있습니다.
엄밀히 말하면 양의 카운트는 무언가가 장치를 연 것을 의미한다는 것만으로 이미지가 캡처되는 것은 아닙니다.
lsmod
달릴 때 "를 언급 한 이유 입니다. 주어진 시나리오를 감안할 때 확장 할 가치가 있습니다 (제 경험상 카메라 대기 시간은 장치를 열고 이미지를 캡처하고 닫는 데 시간이 오래 걸리기에 충분히 높습니다). 그래도 같은 문제를 사용 fuser
하거나 lsof
겪고 있는 장치 사용을 살펴 보는 것 ; 보다 강력한 접근 방식은 추적 점 또는 이와 유사한 것을 사용하여 V4L API를 연결해야합니다.
실제로 원하지 않는 경우 웹캠 을 사용하지 않는 것이 가장 간단한 방법 이라고 가정 할 때 가장 간단한 해결책은 필요하지 않은 경우 웹캠 을 연결 해제하는 것입니다 (외부인 경우). 또는 웹캠을 덮습니다 (덕트 테이프 조각 만 작동).
물리 기반 접근 방식은 소프트웨어 접근 방식보다 훨씬 안전합니다.
정상적인 시스템에서 chroot를 자체적으로 설정하지 않으면 /dev
모든 장치 파일은 아래에 /dev
있습니다. 루트 만 장치 파일을 만들 수 있으므로 악의적 인 사용자가 다른 곳에서 장치 파일을 만드는 것에 대해 걱정할 필요가 없습니다.
따라서 원하는 /dev
장치와 동일한 장치를 참조 하는 파일을 찾기 만하면됩니다.
ls -lR /dev |awk '/^c/ && $5 == "81," && $6 == "0"'
이 정보 만 표시 될 수 /dev/video0
있습니다. 일반적으로 각 장치마다 하나의 장치 파일이 있으며 여기에는 추가 기호 링크가있을 수 있습니다.
따라서 귀하의 질문에 대한 실질적인 답변은 간단한 것입니다. 장치 파일이 열려있는 프로세스를 확인하십시오.
fuser /dev/video0
액세스를 모니터링하려면 (즉, 언제라도 장치 파일을 열 수있는 프로세스 포착) 장치 파일에서 Linux의 파일 액세스 모니터링 방법 중 하나를 사용 하십시오. 감시를 설정하고 장치에 이미있는 프로세스를 확인하십시오. 파일 열기)
inotifywait -m -e open,close /dev/video0 &
sleep 1; fuser /dev/video0 # check for processes that have already opened the device
또는 시스템 로그에 액세스를 기록 할 감사 규칙을 설정합니다 (일반적으로 /var/log/audit/audit.log
).
auditctl -w path=/dev/video0 &
sleep 1; fuser /dev/video0 # check for processes that have already opened the device
udev
하여 부팅시 장치 파일을 얻지 않는 것입니다. 그리고 카메라를 사용하려고 할 때나 장치에서 물리적으로 플러그를 뽑을 경우 장치 파일을 추가하십시오.
mknod /root/video0 b 81 0
lsof
(및fuser
)은 기본적으로 필요한 것을 수행하지 않습니다.