最近登録に失敗したときに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
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
chfn
chgpasswd
chpasswd
chsh
groupadd
groupdel
groupmems
groupmod
login
newusers
other
passwd
polkit-1
rlogin
rsh
shadow
slim
su
sudo
su-l
system-auth
systemd-user
system-local-login
system-login
system-remote-login
system-services
useradd
userdel
usermod
元の答え、そしてチュートリアルのような答え。
(注:関連する回答があることを知っていますが、この質問はスクリプトではなく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=1
PAMは次のルールに進みます。この場合は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つ:スクリプトを実行する前に、カメラが作業に適していることを確認したい場合があります。カーネルビデオモジュールがロードされていることを確認してください。