我想设置笔记本电脑,以便在锁定屏幕时输入错误的密码,然后使用笔记本电脑的网络摄像头拍照。我检查了xlock
(从xlockmore软件包中获取),但是当输入错误的密码时,没有选择来运行自定义操作。
在SuperUser上也有类似的问题,但仅针对Windows:输入错误的密码后拍照。
(对于那些喜欢逗猫照片的人:我的笔记本电脑已设置为在3次错误的密码尝试后拍照。)
我想设置笔记本电脑,以便在锁定屏幕时输入错误的密码,然后使用笔记本电脑的网络摄像头拍照。我检查了xlock
(从xlockmore软件包中获取),但是当输入错误的密码时,没有选择来运行自定义操作。
在SuperUser上也有类似的问题,但仅针对Windows:输入错误的密码后拍照。
(对于那些喜欢逗猫照片的人:我的笔记本电脑已设置为在3次错误的密码尝试后拍照。)
Answers:
复制这个帖子由问Ubuntu的gertvdijk,通过指出mazs中的注释。为了解决这个问题。
基于这个帖子在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以在每次失败的尝试时调用此方法。
注意:请谨慎执行-如果失败,您将无法以常规方式再次访问系统。
/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 / ...)注销,并且在登录屏幕上输入错误密码时应该会看到相同的内容。