我选择不在我的系统上运行登录管理器,而是选择 tty 登录,然后手动调用 xinit(说来话长,通过我的登录 shell 设置并让其余部分继承的一系列环境调整,让我的生活变得轻松很多),但是如果其他人访问我的 PC,这会给我带来安全问题,因为即使我锁定了我的 X 会话,他们也可以切换到 tty 并终止我的 X 会话,并返回到 shell。
我可以
- 开始运行 xinit; logout(仍然存在竞争条件问题,如果在调用注销之前他们再次输入 Ctrl+C,它将给出一个 shell)
- 尝试禁用 X 中的 tty 切换键
- 将 xinit 包裹起来以捕获并忽略来自 Ctrl+C 的信号
或者一些我还没有考虑过的更好的解决方案。
答案1
exec xinit
将要代替你的 shell 进程xinit
;它仍然可以被杀死,但如果它稍后被杀死,你就会进入登录屏幕。setsid xinit; logout
或(xinit &); logout
将开始初始化在后台运行,然后立即结束 tty 会话。这样就更好了 – X11 再也不能被 ^C 了。(如
exec setsid xinit
可能工作,我还没有尝试过。)
FWIW,一些登录管理器做从标准中读取“环境调整” ~/.profile
;我知道 GDM 确实如此。