私のウェブカメラが使用されているかどうかを知らせるコマンドは何ですか?
lsof /dev/video0
不足しています。メジャー番号とマイナー番号が81と0のすべてのブロックデバイスを監視する必要があります。
答え1
カーネルがモジュールを使用している場合(おそらく)、プログラムがWebカメラにアクセスしていることを確認する1つの方法は、モジュールの使用回数を確認することです。
$ lsmod | grep uvcvideo
uvcvideo 90112 0
3番目のフィールドの0は、制御されuvcvideo
ているWebカメラに対してlsmod
実行時に開いているデバイスがないことを示します。もちろん、どのモジュールがWebカメラを担当しているのかを正確に知る必要がありますが、確認が簡単で、Cheeseなどのプログラムを実行すると出力の変更がわかります。
厳密に言えば、正の数は画像がキャプチャされているという意味ではなく、デバイスがオンになっているという意味にすぎません。
答え2
一般的なシステムでは、独自の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 /dev/video0 &
sleep 1; fuser /dev/video0 # check for processes that have already opened the device
答え3
あなたが本当に欲しいのはウェブカメラです使いたくないときは使われません。、最も簡単な解決策は、必要でないときに単に切断することです(外部の場合)。またはウェブカメラをカバーしてください(テープだけが必要です)。
物理学ベースの方法はソフトウェア方法よりはるかに安全です。