当前位置: 首页>>技术问答>>正文


当输入密码错误时,我可以让摄像头拍照吗?

ubuntuer 技术问答 , , , , , 去评论

问题描述

我正在使用笔记本电脑。我想在我的Ubuntu机器上获得支持。当输入不正确的密码时,稍后会拍摄一张照片,揭示谁试图获得访问权限。

我已经搜索过,我发现的唯一东西就是在Mac上执行此操作的东西。是否可以为Ubuntu写一个脚本来做同样的事情。

如果可能的话,什么是脚本或软件来实现这一点。

最佳解决方法

基于BkkBonanza的Ubuntu论坛上的this post

这是一种使用PAM的方法,适用于所有失败的登录尝试。使用SSH,一个虚拟终端或通过常规的登录屏幕,不要紧,因为一切都由PAM处理。

  1. 安装ffmpeg,我们将使用它作为抓取网络摄像头图像的命令行方式。更新:当你升级到Ubuntu 14.04时,ffmpeg被删除。我们可以在下面的脚本中使用avconv来代替ffmpeg。无需单独安装任何东西。

    software-recommendation,scripts,security,startup,webcam,ubuntu

  2. 在某处创建一个小脚本,例如/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)。

  3. 使其可执行,例如chmod +x /usr/local/bin/grabpicture

  4. 测试它,只需调用它:/usr/local/bin/grabpicture。检查您是否看到文件出现在/tmp/vid....jpg中。

  5. 配置PAM在每次尝试失败时调用此函数。注意:请谨慎操作 – 如果失败,您将无法以常规方式再次访问您的系统。

    1. 打开一个具有root访问权限的终端窗口(sudo -i),并保持打开状态 – 以防万一你在接下来的步骤中搞砸了。

    2. 在您喜欢的编辑器中打开/etc/pam.d/common-auth,例如通过做gksudo gedit /etc/pam.d/common-auth。请注意以下步骤,该文件中行的顺序很重要。

    3. 找到下面的行。默认情况下,在pam_deny.so之前有一行。在我的12.04系统上,它看起来像这样:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
      
    4. 在这一行中,将success=1更改为success=2,以便在成功时跳过我们的脚本。这是重要的一步。

    5. 在那里,添加一个新的名字来调用实际的脚本:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
      
    6. 保存并关闭文件。无需重启任何东西。

  6. 测试它。

    1. 在一个新的终端窗口中,作为普通用户,尝试使用su -l username作为另一个用户名为username的用户登录(当然,实际更改)。故意输入错误的密码。检查这是否导致新照片。

    2. 与上面相同,但现在输入正确的密码。检查您是否登录并且不会导致拍摄照片。

  7. 如果测试成功,您可以从您的DE(Unity /KDE /…)注销,并且从登录屏幕输入错误的密码时应该看到相同的内容。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1007.html,未经允许,请勿转载。

相关文章