Bash

在登錄嘗試失敗時執行腳本?

  • July 21, 2019

最近,我一直在嘗試創建一個 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, userdelusermod

原始答案和類似教程的答案

(注意:我知道那裡有一個相關的答案,但這個問題更多的是關於 PAM 的文件而不是腳本。)

首先,如果文件失去,並不意味著您不應該創建它們。Debian 上可用的common-*文件只是正常的 PAM 配置文件,但是,它們包含在需要它們的任何其他文件中。例如,在 Debian 上,在su文件末尾,您可能會發現:

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

由於您沒有這些文件,我相信這些包含指令不存在。由於 Arch 的理念是提供由使用者自定義的最小分發,您可以完美地創建這些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

基本上,這會嘗試根據基本的 UNIX 機制(passwdshadow)進行身份驗證。如果成功,則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 的工作原理,以及在何處精確實現您的邏輯。

另一件事:您可能希望在執行腳本之前確保您的相機能夠勝任任務。確保核心影片模組已載入,等等。

引用自:https://unix.stackexchange.com/questions/152846