问题描述
我正在使用笔记本电脑。我想在我的Ubuntu机器上获得支持。当输入不正确的密码时,稍后会拍摄一张照片,揭示谁试图获得访问权限。
我已经搜索过,我发现的唯一东西就是在Mac上执行此操作的东西。是否可以为Ubuntu写一个脚本来做同样的事情。
如果可能的话,什么是脚本或软件来实现这一点。
最佳解决方法
基于BkkBonanza的Ubuntu论坛上的this post。
这是一种使用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在每次尝试失败时调用此函数。注意:请谨慎操作 – 如果失败,您将无法以常规方式再次访问您的系统。
-
打开一个具有root访问权限的终端窗口(
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 /…)注销,并且从登录屏幕输入错误的密码时应该看到相同的内容。