Linux
在 n 次失敗的登錄嘗試中執行 shell 腳本
如果我的機器上的登錄失敗 3 次(不是 ssh,而是終端中的某人試圖登錄,或者有人試圖物理登錄),我想執行一個腳本。另外,是否可以在執行腳本之前配置次數?
我研究了 PAM,據我了解,您只能執行
.so
文件,而且設置起來看起來很麻煩。有什麼選擇嗎?我想到的另一件事是,當登錄失敗時,Linux 可能會執行一些腳本。如果是這樣,那麼我可以追加
sh /var/myscript.sh
或其他什麼。有任何想法嗎?我似乎無法在網際網路上找到涵蓋此內容的任何地方。如果每次登錄嘗試失敗時都可以執行腳本,我可以處理。
好的。我想到了。小心不要搞砸,因為如果你做錯了,你可能會搞砸你的系統。如果您對此不滿意,最好先在虛擬機中嘗試。
教程
- 創建你的腳本。在本教程中,我會將腳本放在
/var/myscript.sh
. 您可以安全地將腳本路徑替換到腳本所在的任何位置。確保腳本在任何情況下都不會以 0 以外的任何程式碼退出。此外,將命令添加exit 0
到腳本的末尾以確保它正確退出。請務必在繼續之前測試腳本。- 使您的腳本可執行
chmod +x /var/myscript.sh
- 在真正的工作發生之前,萬一你搞砸了,打開終端並輸入
sudo -i
. 只是讓那個視窗打開以防萬一。gksudo nano /etc/pam.d/common-auth
. 您可以nano
用任何文本編輯器替換。要進行備份,您可以執行sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bkup
- 找到下面的行:
auth [success=1 default=ignore] pam_unix.so nullok_secure
- 在該行上,更改
success=1
為success=2
。這是為了確保在登錄成功時腳本不會執行。- 在第 5 步中的行的正下方添加此行:
auth [default=ignore] pam_exec.so seteuid /var/myscript.sh
- 保存並關閉。
- 無需重新啟動或“重新登錄”,打開一個新終端並執行
su -l <username>
.- 故意輸入錯誤的密碼,並檢查腳本是否有效。然後,再次嘗試第 9 步,但使用正確的密碼。確保您可以登錄。
學分
多虧了很多文件和文章,尤其是這個。