Hum*_*ody 5 security bash pam files
最近,我一直在尝试创建一个 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
Run Code Online (Sandbox Code Playgroud)
我的/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
,
userdel
,和
usermod
(注意:我知道那里有一个相关的答案,但这个问题更多地是关于 PAM 的文件而不是脚本。)
首先,如果文件丢失,并不意味着您不应该创建它们。Debian 上可用的文件common-*
只是常规的 PAM 配置文件,但是,它们包含在需要它们的任何其他文件中。例如,在 Debian 上,在文件末尾su
,您可能会发现:
@include common-auth
@include common-account
@include common-session
Run Code Online (Sandbox Code Playgroud)
由于您没有这些文件,我相信这些包含指令不存在。由于 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
Run Code Online (Sandbox Code Playgroud)
基本上,这会尝试根据基本 UNIX 机制(passwd
和shadow
)进行身份验证。如果成功,则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
Run Code Online (Sandbox Code Playgroud)
如果您不熟悉 PAM 内部结构,我会推荐此页面,当我设置 PAM 逻辑时,我发现它非常有帮助。浏览此页面肯定会帮助您了解 PAM 的工作原理以及在何处精确实现逻辑。
另一件事:在运行脚本之前,您可能需要确保您的相机能够胜任该任务。确保内核视频模块已加载,等等。