私はラップトップを使用しています。Ubuntuマシンでサポートすることを考えていました。間違ったパスワードを入力すると、後でアクセスしようとしている人を明らかにする写真が撮られます。
私はあちこち検索しましたが、私が見つけた唯一のことは、Macでこれを行うためのものです。Ubuntuが同じことをするためのスクリプトを書くことは可能ですか?
可能であれば、これを実現するスクリプトまたはソフトウェアは何ですか。
私はラップトップを使用しています。Ubuntuマシンでサポートすることを考えていました。間違ったパスワードを入力すると、後でアクセスしようとしている人を明らかにする写真が撮られます。
私はあちこち検索しましたが、私が見つけた唯一のことは、Macでこれを行うためのものです。Ubuntuが同じことをするためのスクリプトを書くことは可能ですか?
可能であれば、これを実現するスクリプトまたはソフトウェアは何ですか。
回答:
BkkBonanzaによるUbuntuforumsに関するこの投稿に基づいています。
これはPAMを使用するアプローチであり、失敗したすべてのログイン試行に対して機能します。SSH、仮想端末、または通常のログイン画面を使用して、すべてが最終的にPAMによって処理されるため、問題はありません。
ffmpegをインストールします。これをウェブカメラの画像を取得するコマンドラインの方法として使用します。更新:Ubuntu 14.04にアップグレードすると、ffmpegは削除されます。以下のスクリプトでは、ffmpegの代わりにavconvを使用できます。個別に何かをインストールする必要はありません。
/usr/local/bin/grabpicture
次のコンテンツなどを使用して、どこかに小さなスクリプトを作成します。
#!/bin/bash
ts=`date +%s`
ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
exit 0 #important - has to exit with status 0
/dev/video0
あなたのウェブカメラの実際のビデオデバイスで変更し、写真が保存されているパスを選択します-私は選択します/tmp
。Ubuntuの新しいバージョンでavconv
は、ffmpeg
(sudo apt-get install libav-tools
)の代わりに使用します。
実行可能にしchmod +x /usr/local/bin/grabpicture
ます。
呼び出すだけでテストします/usr/local/bin/grabpicture
。にファイルが表示されるかどうかを確認します/tmp/vid....jpg
。
失敗するたびにこれを呼び出すようにPAMを構成します。
注:これは慎重に行ってください-これが失敗した場合、通常の方法でシステムに再度アクセスすることはできません。
sudo -i
)でターミナルウィンドウを開き、開いたままにします-次の手順で失敗した場合に備えて。/etc/pam.d/common-auth
して、お気に入りのエディターで開きますgksudo gedit /etc/pam.d/common-auth
。このファイルの行の順序が重要である以下の手順に留意してください。以下の行を見つけます。デフォルトでは、行の前に 1行がありますpam_deny.so
。12.04システムでは、次のようになります。
auth [success=1 default=ignore] pam_unix.so nullok_secure
この行でsuccess=1
to success=2
を変更して、成功時にスクリプトをスキップします。これは重要なステップです。
すぐ下に、新しいスクリプトを追加して実際のスクリプトを呼び出します。
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
ファイルを保存して閉じます。何も再起動する必要はありません。
試して。
su -l username
として、ユーザー名を使用して別のユーザーとしてログインしますusername
(もちろん実際のユーザーで変更します)。故意に間違ったパスワードを入力してください。この結果が新しい写真になるかどうかを確認してください。テストが成功した場合、DE(Unity / KDE / ...)からログアウトできます。ログイン画面から間違ったパスワードを入力すると、同じように表示されます。
/tmp
ため、以外のフォルダーを使用するべきではありません/tmp
か?(2)実際のビデオデバイスをどのように見分けますか?