Linux

在 n 次失敗的登錄嘗試中執行 shell 腳本

  • February 16, 2022

如果我的機器上的登錄失敗 3 次(不是 ssh,而是終端中的某人試圖登錄,或者有人試圖物理登錄),我想執行一個腳本。另外,是否可以在執行腳本之前配置次數?

我研究了 PAM,據我了解,您只能執行.so文件,而且設置起來看起來很麻煩。有什麼選擇嗎?

我想到的另一件事是,當登錄失敗時,Linux 可能會執行一些腳本。如果是這樣,那麼我可以追加sh /var/myscript.sh或其他什麼。有任何想法嗎?

我似乎無法在網際網路上找到涵蓋此內容的任何地方。如果每次登錄嘗試失敗時都可以執行腳本,我可以處理。

好的。我想到了。小心不要搞砸,因為如果你做錯了,你可能會搞砸你的系統。如果您對此不滿意,最好先在虛擬機中嘗試。

教程

  1. 創建你的腳本。在本教程中,我會將腳本放在/var/myscript.sh. 您可以安全地將腳本路徑替換到腳本所在的任何位置。確保腳本在任何情況下都不會以 0 以外的任何程式碼退出。此外,將命令添加exit 0到腳本的末尾以確保它正確退出。請務必在繼續之前測試腳本。
  2. 使您的腳本可執行chmod +x /var/myscript.sh
  3. 在真正的工作發生之前,萬一你搞砸了,打開終端並輸入sudo -i. 只是讓那個視窗打開以防萬一。
  4. gksudo nano /etc/pam.d/common-auth. 您可以nano用任何文本編輯器替換。要進行備份,您可以執行sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bkup
  5. 找到下面的行: auth [success=1 default=ignore] pam_unix.so nullok_secure
  6. 在該行上,更改success=1success=2。這是為了確保在登錄成功時腳本不會執行。
  7. 在第 5 步中的行的正下方添加此行: auth [default=ignore] pam_exec.so seteuid /var/myscript.sh
  8. 保存並關閉。
  9. 無需重新啟動或“重新登錄”,打開一個新終端並執行su -l <username>.
  10. 故意輸入錯誤的密碼,並檢查腳本是否有效。然後,再次嘗試第 9 步,但使用正確的密碼。確保您可以登錄。

學分

多虧了很多文件和文章,尤其是這個

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