ログインに失敗した場合は、スクリプトを実行しますか?

ログインに失敗した場合は、スクリプトを実行しますか?

最近登録に失敗したときにWebカメラの写真をキャプチャするBashスクリプトを作成しようとしました。まず、これに関連する2つのガイド(最後のリンク)を見つけましたが、スクリプトの作成方法などについて説明しました。私のシステム(Archlinux、新規インストール)にPAMの共通認証ファイルがないことがわかるまで、すべてがうまくいきました。ディレクトリ全体をスキャンしましたが、/etc/pam.d/まだファイルまたは同じ内容を含むファイルが見つかりませんでした。

これまで私のスクリプトは次のようになりました。

#!/bin/bash

# Let's watch our thief's face n.n


ts=$(date +"%m_%d_%Y_%H_%M_%S")

ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /home/haoa2/Logins-Fail/login-$ts.jpg

exit 0

私の/etc/pam.d/ディレクトリの内容:

chage、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 chfnchgpasswdchpasswdchshgroupaddgroupdelgroupmemsgroupmodloginnewusersotherpasswdpolkit-1rloginrshshadowslimsusudosu-lsystem-authsystemd-usersystem-local-loginsystem-loginsystem-remote-loginsystem-servicesuseradduserdelusermod

元の答え、そしてチュートリアルのような答え

(注:関連する回答があることを知っていますが、この質問はスクリプトではなくPAMファイルに関するものです。)

ベストアンサー1

最初、ファイルが欠落しても、そのファイルを生成してはいけないという意味ではありません。 Debian で使用できるファイルはcommon-*通常の PAM 設定ファイルですが、それを必要とする他のファイルに含まれています。たとえば、Debian ではファイルの最後に次のようなものがsuあります。

@include common-auth
@include common-account
@include common-session

これらのファイルがないので、これらのインクルードディレクティブは存在しないと思います。アーチの哲学は、ユーザーがカスタマイズできる最小限のディストリビューションを提供するため、これらのファイルをcommon-*完全に作成し、それを使用すると予想されるファイルに含めることができます。

しかし、あなたの場合、ログイン時に使用されるPAMプロファイルをターゲットにすることをお勧めします。 (あなたが望むものいいえcommonログイン時の基本要素のみを対象とするため、操作ですauth/etc/pam.d/login新しいPAMルールを含めるように確認して編集してください。

私の場合、ファイルは次のリンクでlogin終わります。@include common-authファイルの最後にこのような内容を見つける必要がありますlogin

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

passwdデフォルトでは、これはデフォルトのUNIXメカニズム(および)に基づいて認証を試みますshadow。成功すると、success=1PAMは次のルールに進みます。この場合はpam_deny無視され、pam_permit.so自動的にユーザーに連絡してアクセスを許可します。

一方、pam_unix失敗するとジャンプは行われず、ユーザーに直接送信されますpam_deny。これは必須ルールなので、次に何が起こってもユーザーのアクセスは拒否されます。

最後に、pam_capログインプロセスに実際に参加しないオプションのルールがあります。ただし、何が起こっても実行されます(ロギングに役立ちます)。あなたの場合は、次のようにすることができます...

# Jump two rules if login succeeds.
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    optional                        pam_exec.so [your cam script]
auth    requisite                       pam_deny.so
# User gets here if authentication is successful. No denying, no cam module.
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

PAMの内部に慣れていない場合は、以下をお勧めします。このページPAMロジックを設定するとき、これは非常に便利であることがわかりました。このページを見てみると、PAMの仕組みとロジックが正確にどこに実装されているのかを理解するのに役立ちます。

もう1つ:スクリプトを実行する前に、カメラが作業に適していることを確認したい場合があります。カーネルビデオモジュールがロードされていることを確認してください。

おすすめ記事