虽然我怀疑目前这是不可能的,但我还是想问一下,因为在我看来这会非常有用。因为当我合上盖子并处于 GUI 中时,我的计算机会暂停,然后需要密码才能解锁。但是,如果我在控制台中执行相同操作,则不会暂停,也不会要求我输入密码才能再次登录。
现在这可能是一个潜在的安全风险,所以我想知道是否有一种方法可以在盖子关闭时暂停通过控制台运行的所有内容,这样当机器唤醒时,您必须在控制台窗口中输入密码,以便“解锁”您的会话?我正在运行 Ubuntu GNOME 15.04。当我说控制台时,我的意思是 TTY。
我已经看过了TTY[1-6]: 延迟后锁定屏幕(类似屏幕保护程序),但是我觉得它不能完全回答我的问题,尤其是关于暂停任何正在运行的操作以便它可以在恢复后继续运行。
我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。
答案1
muru 在评论中链接的另一个问题(TTY[1-6]: 延迟后锁定屏幕(类似屏幕保护程序) )为我们提供了锁定 tty 的工具vlock
。在最简单的级别上,您可以将vlock -a
和组合pm-suspend
成一个.bashrc
函数或脚本。这是我的:
$ cat lockTTY.sh
#!/bin/bash
(sleep 3; sudo pm-suspend) &
vlock -a
pm-suspend
这里发生了什么?基本上,我们在后台延迟启动subshell。同时我们用来vlock -a
锁定所有 tty。3 秒后,笔记本电脑挂起。
然而,这里的关键是sudo pm-suspend
部分。你必须阻止sudo
它询问你的密码。为了做到这一点,我们在文件pm-suspend
末尾添加了以下行/etc/sudosers
$USERNAME ALL = NOPASSWD: /usr/sbin/pm-suspend
当然,请$USERNAME
用您的实际用户名替换。为了安全起见,您可以调用sudo visudo
来使用 中设置的默认文本编辑器打开该文件,但任何具有适当权限的编辑器都可以。/etc/alternatives/editor
这个脚本允许我们做什么?暂停并锁定仍在运行的进程。vlock -a
在防止切换到其他控制台方面具有很大的优势,因此不只是一个控制台被锁定,而且他们全部- 如果一个 tty 被锁定,您就不能切换到另一个 tty。
您也可以暂停第一个并锁定第二个,即调用pm-suspend
第一个和第二个。但这意味着在恢复时,在启动vlock -a
之前,可能会有人看到您的屏幕一小会儿。vlock
如果您不信任vlock
并且不想安装它,那么简单而肮脏的解决方案是什么?创建一个/etc/pm/sleep.d/10_lockTTY
包含以下内容的脚本:
#!/bin/bash
case "${1}" in
hibernate|sleep)
;;
resume|thaw)
for NUM in $(seq 1 6); do service tty$NUM restart; done
;;
esac
这将在从挂起状态返回时重置所有 tty,但请注意 - 那里的任何进程都将被终止。