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

twi*_*oid 75 startup security scripts webcam software-recommendation

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

我四处搜索,我发现的唯一一件事就是在 Mac 上执行此操作。是否可以为 Ubuntu 编写一个脚本来做同样的事情。

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

ger*_*ijk 63

基于这个帖子在ubuntu论坛由BkkBonanza

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

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

  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
    
    Run Code Online (Sandbox Code Playgroud)

    /dev/video0使用网络摄像头的实际视频设备更改并选择保存图片的路径 - 我只是选择/tmp。在较新版本的 Ubuntu 中,使用( )avconv代替。ffmpegsudo 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
      
      Run Code Online (Sandbox Code Playgroud)
    4. 在这一行中,将 更改为success=1使其success=2在成功时跳过我们的脚本。这是重要的一步如果您在此步骤中失败,请参阅下文如何恢复 (***)。

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

        auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
      
      Run Code Online (Sandbox Code Playgroud)
    6. 保存并关闭文件。无需重新启动任何东西。

  6. 测试一下。

    1. 在一个新的终端窗口中,作为普通用户,尝试su -l username以另一个用户身份登录username(当然要更改为实际用户名)。故意输入错误的密码。检查这是否会产生新图片。
    2. 同上,但现在输入正确的密码。检查您是否登录并且不会导致拍照。
  7. 如果测试成功,您可以从您的 DE (Unity/KDE/...) 注销,并且在从登录屏幕输入错误密码时应该会看到相同的信息。

(***) 如果您弄乱了 /etc/pam.d/common-auth 文件,如何恢复系统:

  • 重新启动计算机
  • 在 grub 启动时按“e”进行编辑
  • 添加

初始化=/bin/sh

到以“linux”开头的行

挂载具有写访问权限的系统

mount -o 重新挂载,rw /

编辑文件并修复

vi /etc/pam.d/common-auth

  • 这很聪明。两个问题:(1)你不应该使用`/tmp`以外的文件夹,因为每次重启都会清除`/tmp`吗?(2) 你怎么知道你的实际视频设备是什么? (9认同)
  • 这有效,但我想添加 3 件事。(1) 我们可以使用在重启时不会被清除的 /var/tmp。(2) 仔细阅读此解决方案,因为可能会像我一样陷入“低图形模式”和/或“检查电池状态”的无限循环中。(3) 如果卡住了,重启进入recovery模式(按左移);选择“故障安全图形模式”并查看 / 是否已挂载 RW;现在降到root shell;cd 到 /etc/pam.d; chmod common-auth to RW,使用nano编辑删除添加调用grabpicture脚本的行;节省; 出口; 重启。 (6认同)
  • 我想出了为什么我的电脑卡住了。答案中5.3到5.5步需要根据common-auth文件有哪些行进行调整。我的 common-auth 在具有 pam_unix.so 和 pam_deny.so 的行之间还有另一行用于 pam_winbind.so。基本上,“成功”上的 auth 行需要跳过捕获脚本以及 pam_deny.so 行。 (5认同)