登录尝试失败时运行脚本?

登录尝试失败时运行脚本?

最近,我一直在尝试创建一个 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/目录内容:

chagechfnchgpasswdchpasswdchshgroupadd, , , , , , , , , groupdel, , , , , , , , , , , , , , , 和 groupmemsgroupmodloginnewusersotherpasswdpolkit-1rloginrshshadowslimsusudosu-lsystem-authsystemd-usersystem-local-loginsystem-loginsystem-remote-loginsystem-servicesuseradduserdelusermod

原来的答案,和一个类似教程的答案

(注意:我知道有一个相关的答案,但这个问题更多的是关于 PAM 的文件而不是脚本。)

答案1

首先,如果文件丢失,并不意味着您不应该创建它们。 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

passwd基本上,这会尝试根据基本 UNIX 机制(和)进行身份验证shadow。如果成功,则success=1PAM 会跳转到下一条规则。在这种情况下,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 的工作原理以及在何处精确实现逻辑。

另一件事:在运行脚本之前,您可能需要确保您的相机能够胜任该任务。确保内核视频模块已加载,等等。

相关内容