Linux 在其他用户的 VNC 桌面上打开自己的窗口
前言
属于基本用不到的技术,我碰到了,还是分享出来了。
起初我这每天都有自动测试,是一个单独的用户和单独的桌面,自动测试的启动 shell 脚本里写着 export DISPLAY=:2
,但我不小心在我自己的桌面跑起来了这个脚本,如果不做配置,有些窗口就会打开失败,任务也就会失败。
首先我们得了解为什么会失败,目前的环境入下:
user(我自己) : export DISPLAY=:1
test(测试账号) : export DISPLAY=:2
在我自己的桌面使用 export DISPLAY=:2 后,无法打开任何窗口,因为 :2 的窗口是 test 用户的,我不能直接打开他人窗口,因为 x server 的限制。既然是 x server 的限制,我配置 x server 不就行了?
X server
如何在别人的桌面打开自己的窗口,步骤如下:
- 在 test 的桌面获取 test 用户 VNC 的桌面 cookie:
1 | xauth list $DISPLAY |
输出示例:
1 | your-hostname/unix:14 MIT-MAGIC-COOKIE-1 abc123...(一串16进制字符) |
- 在 user 的终端中添加 test 的桌面 cookie:
1 | xauth add your-hostname/unix:14 . abc123...(粘贴 test 的 cookie) |
这样就设置完了,在 user 的终端使用 export DISPLAY=:2
,配置完环境变量后,就可以直接在这个终端打开图形窗口了,这个窗口会显示在 test :2 的桌面上。
- 备用方案:临时放宽权限(不推荐,有安全风险)
- 在 test 用户终端中(在
:2
会话中):
1 | 允许本地所有用户连接(慎用!) |
-
之后你可直接设置
export DISPLAY=:2
并启动应用。 -
完成后务必关闭权限( test 用户终端执行 ):
1 | xhost -local: |
这只是个没用的知识,但该用到的时候能用得到,希望这篇文章能帮助到你们~