如果我的机器上登录失败 3 次(不是 ssh,而是有人在终端尝试登录,或者有人尝试物理登录),我想运行一个脚本。另外,是否可以在运行脚本之前配置次数?
我研究过 PAM,据我了解,你只能运行.so
文件,而且设置起来似乎很麻烦。还有其他选择吗?
我想到的另一件事是,也许 Linux 在登录失败时运行一些脚本。如果确实如此,那么我可以追加sh /var/myscript.sh
或其他什么。有任何想法吗?
我似乎无法在互联网上找到涵盖此内容的任何地方。如果可以运行脚本每一个当您登录尝试失败时,我可以处理。
答案1
好吧。我想到了。要非常小心,不要搞砸,因为如果你做错了,你可能会搞砸你的系统。如果您对此感到不舒服,最好先在虚拟机中尝试一下。
教程
- 创建您的脚本。在本教程中,我将把脚本放在
/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,但使用正确的密码。确保您可以登录。
制作人员
感谢大量文档和帖子,特别是这个。