因此,我一直在尝试为我的机器创建一个 USB 密钥。
我使用过网上很多地方描述的 PAM-Usb(例如这个,基本上是到处复制粘贴的。)我明白那里发生了什么,这很巧妙。
我的问题是 - 如果我锁定屏幕(使用按钮、拔掉 USB 或使用gnome-screensaver-command -l
),gnome-screensaver-command -d
则不会将我带回到桌面,而是唤醒显示器。我仍然必须提供密码 - 插入 USB 时我不想这样做。
我不想关闭解锁时输入密码的提示。我希望我的电脑在插入 USB 记忆棒时可以随时自由访问,在其他情况下则需要输入密码才能访问。
那么,问题是:如何使用命令行解锁 gnome-screensaver?
PS。有趣的是:如果我使用 USB 密钥,那么登录时无需提供密码。另一方面,解锁时需要密码。我明白为什么会发生这种情况,但它看起来仍然很奇怪。
==编辑==
我忘了:我使用的是普通版(即基于 Unity 的)Ubuntu 15.04。没有进行任何与屏幕保护程序相关的修改。
答案1
Ubuntu 14.04+ 不再使用 gnome-screensaver,这就是为什么它gnome-screensaver-command -d
可能无法工作的原因(可能,我不确定,但 Ubuntu 已经用新的东西替换了旧的 gnome-screensaver,该命令目前不起作用)。您可以使用 dbus 锁定和解锁您的计算机。
锁:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
开锁:
dbus-send --session --dest=org.gnome.ScreenSaver --type=method_call --print-reply --reply-timeout=20000 /org/gnome/ScreenSaver org.gnome.ScreenSaver.SetActive boolean:false
它应该无需密码即可解锁。
答案2
在15.04中锁屏是用unity实现的。
似乎 libpam_usb 没有明确与 libpam 链接,因为它(错误地)认为使用它的程序已经加载了 libpam。大多数程序(即 sudo、lightdm 等)都是这种情况,但 compiz 不是。需要更改 libpam-usb 的 makefile 并重新编译才能修复此问题。
尽管作为一种解决方法,你可以编辑/usr/share/applications/compiz.desktop
和替换
Exec=compiz
和
Exec=/bin/sh -c "LD_PRELOAD=libpam.so compiz"