许多屏幕储物柜(我的是i3锁)不阻止访问其他虚拟终端。这意味着,如果我在某个 VT 中打开会话,那么即使桌面被锁定(例如恢复时),恶意人员也可以切换到 VT 并执行任何操作。
这对我来说是一个实际问题,因为我偶尔会切换到 VT,然后切换回图形环境并忘记从 VT 注销。
那么问题是:如何在现有屏幕锁上添加 VT 锁定?
Arch Linux wiki 建议简单地从 Xorg 禁用 VT,使用 X 服务器的以下配置:
Section "ServerFlags"
# disable VT switching:
Option "DontVTSwitch" "True"
# disable “zapping”, ie. killing the X server with Ctrl-Alt-Bksp:
Option "DontZap" "True"
EndSection
这不是一个选项,因为我使用 VT,如上所述。也许一种解决方案是动态设置和重置这些选项,但我发现没有什么可以在运行时更改 X 服务器选项,至少在一般情况下(有setxkbmap
键盘布局或xset
其他内容之类的东西)。这可能吗?
我还发现了该命令vlock -a
,当从基于文本的 VT 调用时,该命令会锁定会话并禁用 VT 切换。但是,它无法在图形环境中工作,并且无论如何对于图形屏幕锁定器来说都是多余的。
我怎么解决这个问题?
答案1
我用一种不太优雅的方式做到了这一点:首先,更改为第一个终端chvt
(这就是我的储物柜将运行的地方),然后在名为 after 的单元中禁用with的slock
键,并在 after 后启用它们,然后它似乎工作正常。F1F12xmodmap
systemd
sleep.target
resume.target
systemd
单元:[Unit] Description=Disable Switching VTS when locked Before=sleep.target [Service] User=root Type=forking Environment=DISPLAY=:0 ExecStartPre=chvt 1 ExecStart=/path/to/disableVTS.sh [Install] WantedBy=sleep.target
disableVTS.sh
脚本:#!/bin/sh xmodmap -e 'keycode 67 =' xmodmap -e 'keycode 68 = '
答案2
vlock
延迟使用对我有用。
Ctrl我的 X 服务器已经在运行,用- Alt-切换到 VT-1 F1,运行,然后用-sleep 3; vlock -a
切换回 VT-7 。AltF7
第一次,我切换回 VT-7 的速度不够快,不得不解锁并重试。我第二次尝试就成功了,X 出现并正常工作。尝试切换回 VT-1 会出现一个锁定的终端,除非您将其解锁,否则您无法切换出去。
不要尝试后台vlock
- 我收到了无限循环的消息,直到我退出该会话。
也许只放入随后执行的vlock -a
自定义startx
脚本/usr/bin/startx
就可以实现自动化。我想在脚本中包含延迟不会有帮助,除非它可以并行或后台运行(不确定我是否想再次尝试vlock
)。