如何安全地从脚本/命令行杀死xscreensaver?


3

我正在使用Linux(RHEL6)工作站。我写了一个小脚本,当我连接或断开USB拇指驱动器时,它会通过xscreensaver锁定和解锁屏幕,这实际上将其变成了工作站的物理钥匙。问题在于,似乎没有从命令行解锁xscreensaver的好方法。xscreensaver-command -deactivate违反直觉,仅“模拟用户活动”,并且仍需要密码才能解锁屏幕。xscreensaver-command -exit仅在xscreensaver没有屏幕保护程序运行时才杀死父守护程序。手册页xscreensaver-command -exit警告说,

Warning: never use kill -9 with xscreensaver while the screensaver is active.  If you are using a virtual root window  manager,
that can leave things in an inconsistent state, and you may need to restart your window manager to repair the damage.

确实,我目前正在使用pkill xscreensaver我的方法来摆脱脚本中的屏幕保护程序,这通常会导致僵尸进程和其他混乱。如何从脚本/命令行安全地解锁屏幕保护程序?


考虑到其设计的基本原理,我非常怀疑股票xscreensaver是否会通过密码(除非您当前正在强行杀死)以任何方式解锁。最好的选择可能是修改源代码,使其包含“ -forceunlock”选项之类的内容,然后从中构建自己的二进制文件。
亚伦·米勒

谢谢亚伦。我看不到您的链接如何相关,但我相信您是正确的。如果这是一个答案,我会接受,尽管这不是我想听到的。
jayhendren

评论转换为答案,并扩展为提供更大的背景。很高兴有帮助!(而且,嘿,修改源代码可能不会很困难-因为我有能力对jwz的代码做出任何判断,所以我发现它写得很好并且易于使用。 )
亚伦·米勒

Answers:


3

鉴于jwz的xscreensaver常见问题解答中的答案暗示了xscreensaver对安全性的高度关注,并在On Toolkits中进一步阐明了这一点,我强烈怀疑,如果没有您当前正在使用的强制杀死措施,则股票xscreensaver会以无密码的方式解锁。最好的选择可能是修改源代码,使其包含“ -forceunlock”选项之类的内容,然后从中构建自己的二进制文件。


-1

sudo killall -9 xscreensaver就是答案。如果您将其杀死,屏幕将解锁,既简单又简单。然后,您可以使用重新启动它,DISPLAY=:0 xscreensaver -no-splash然后使用锁定它DISPLAY=:0 xscreensaver-command -lock。当然,解锁屏幕会带来安全隐患,但是我需要这样做,并且我知道自己在做什么。免责声明结尾时,后果自负。


1
拒绝投票,因为问题已经解决,kill -9并且此答案未添加任何新信息。
jayhendren

当然,您可以随意投票,但是我的回答描述了OP所要求的一种可能的“正确”方式(而且这也很好地解决了我的问题)。嗯,它还添加了有关如何从命令行再次锁定屏幕的新的重要信息。
Avio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.