我正在使用笔记本电脑。我当时想在我的Ubuntu计算机上提供支持。输入不正确的密码后,稍后将拍摄一张照片,揭示谁在试图获取访问权限。
我到处搜索,发现的唯一东西就是在Mac上可以做到这一点的东西。是否可以为Ubuntu编写脚本来执行相同的操作。
如果可能,那么执行此操作的脚本或软件是什么。
我正在使用笔记本电脑。我当时想在我的Ubuntu计算机上提供支持。输入不正确的密码后,稍后将拍摄一张照片,揭示谁在试图获取访问权限。
我到处搜索,发现的唯一东西就是在Mac上可以做到这一点的东西。是否可以为Ubuntu编写脚本来执行相同的操作。
如果可能,那么执行此操作的脚本或软件是什么。
Answers:
基于这个帖子在ubuntu论坛由BkkBonanza。
这是一种使用PAM的方法,适用于所有失败的登录尝试。使用SSH,虚拟终端或通过常规登录屏幕,这一切都没有关系,因为最终一切都由PAM处理。
安装ffmpeg,我们将使用它作为获取网络摄像头图像的命令行方式。更新:升级到Ubuntu 14.04时,ffmpeg被删除。我们可以在以下脚本中使用avconv代替ffmpeg。无需单独安装任何东西。
在某个地方创建一个小脚本,例如/usr/local/bin/grabpicture
,包含以下内容:
#!/bin/bash
ts=`date +%s`
ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
exit 0 #important - has to exit with status 0
/dev/video0
用您的网络摄像机的实际视频设备更改,然后选择保存图片的路径-我只是选择/tmp
。在较新版本的Ubuntu中,请使用avconv
代替ffmpeg
(sudo apt-get install libav-tools
)。
使它可执行,例如chmod +x /usr/local/bin/grabpicture
。
通过调用它来对其进行测试:/usr/local/bin/grabpicture
。检查是否看到文件出现在中/tmp/vid....jpg
。
配置PAM以在每次失败的尝试上调用此方法。
注意:请谨慎执行-如果失败,您将无法以常规方式再次访问系统。
sudo -i
)的终端窗口,并保持打开状态-以防万一您在后续步骤中搞砸了。/etc/pam.d/common-auth
在您喜欢的编辑器中打开,例如通过执行gksudo gedit /etc/pam.d/common-auth
。请记住以下步骤,此文件中的行顺序很重要。找到下面的行。默认情况下,有一条线前的一个有pam_deny.so
。在我的12.04系统上,它看起来像这样:
auth [success=1 default=ignore] pam_unix.so nullok_secure
在这一行中,将更success=1
改为success=2
,使其成功跳过我们的脚本。这是重要的一步。
在此处的下面,添加一个新脚本以调用实际脚本:
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
保存并关闭文件。无需重启任何东西。
测试一下。
su -l username
以另一个用户名登录username
(当然要更改为实际用户名)。故意输入错误的密码。检查是否产生新照片。如果测试成功,则可以从DE(Unity / KDE / ...)注销,从登录屏幕输入错误密码时,您应该会看到相同的内容。
/tmp
,因为/tmp
每次重新启动时都会清除它?(2)您如何分辨实际的视频设备是什么?