输入错误密码后,我可以让网络摄像头拍照吗?
我正在使用笔记本电脑。 我想在我的Ubuntu机器上得到支持。 输入错误密码后,会在稍后拍摄照片,显示谁一直试图获取访问权限。
我一直在搜索,我发现的唯一的东西是在Mac上做这件事。 是否可以为Ubuntu编写脚本来执行相同的操作。
如果可能,那么什么是脚本或软件才能实现这一目标。
根据BkkBonanza在Ubuntuforums上的这篇文章 。
这是一种使用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
使用网络摄像头的实际video设备更改
/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
之前有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
-
保存并关闭文件。 无需重启任何东西。
- 打开一个具有root访问权限的终端窗口(
-
测试一下。
- 在新的终端窗口中,作为普通用户,尝试
su -l username
以另一个用户名username
名username
(当然用实际的用户username
更改)。 故意输入错误的密码。 检查这个结果是否是新图片。 - 与上面相同,但现在输入正确的密码。 检查您是否登录并且不会导致拍摄照片。
- 在新的终端窗口中,作为普通用户,尝试
-
如果测试成功,您可以从您的DE(Unity / KDE / …)注销,当您从登录屏幕输入错误的密码时,您会看到相同的情况。