如何在不重新启动 X 的情况下为缺少该文件的显示器正确生成新的 .Xauthority 文件?

如何在不重新启动 X 的情况下为缺少该文件的显示器正确生成新的 .Xauthority 文件?

我因错误而删除了我的$HOME/.Xauthority文件。我想在不重新启动 X11 的情况下重新创建它。 ATM 我已经使用此命令启动了一个新的 X11 会话

startx -- :1

但我的 :0 显示仍然不运行任何 X11 应用程序。我已经尝试过这些命令

rm ~/.Xauthority 
touch ~/.Xauthority
xauth add ${HOSTNAME}/unix:0 . $(xxd -l 16 -p /dev/urandom)
xauth add ${HOSTNAME}/unix:1 . $(xxd -l 16 -p /dev/urandom)
xauth add ${HOSTNAME}/unix:10 . $(xxd -l 16 -p /dev/urandom)
xauth add ${HOSTNAME}/unix:12 . $(xxd -l 16 -p /dev/urandom)
xauth add ${HOSTNAME}/unix:13 . $(xxd -l 16 -p /dev/urandom)

命令 xauth list 报告正常

xauth列表

myhost.mydomain/unix:0  MIT-MAGIC-COOKIE-1  blablabla
myhost.mydomain/unix:1  MIT-MAGIC-COOKIE-1  blablabla
myhost.mydomain/unix:10  MIT-MAGIC-COOKIE-1  blablabla
myhost.mydomain/unix:12  MIT-MAGIC-COOKIE-1  blablabla
myhost.mydomain/unix:13  MIT-MAGIC-COOKIE-1  blablabla

但..

xterm -display :0
Invalid MIT-MAGIC-COOKIE-1 keyxterm: Xt error: Can't open display: :0
xeyes -display :0
Invalid MIT-MAGIC-COOKIE-1 keyError: Can't open display: :0

如何生成良好的 Xauthority 并恢复我的“丢失”:0 显示而不重新启动它?

编辑:我找到了一个伪解决方案。如果您将旧的 Xauthority 文件保存在某处,或者提醒正确的 cookie,X11 显示将恢复工作,但如果我不提醒正确的 cookie 值呢?

答案1

您正在创建一个新的 cookie 并告诉客户端使用这个新的 cookie。但服务器仍然使用自己的cookie。在不知道 cookie 的情况下,您无法连接到服务器来检索 cookie。

您也许可以通过其他方式获取cookie(毕竟它存在于服务器进程的内存中)。这取决于 X 服务器。我不知道除了在进程的内存中搜索之外,是否还有其他方法可以使用 Xorg 来实现这一点。

根据 X 服务器的调用方式,cookie 可能位于仍然存在的文件中。检查服务器的命令行,例如

ps ww -C Xorg

如果存在参数-auth,请检查以其命名的文件是否仍然存在。例如,如果您看到Xorg … -auth /tmp/serverauth.abcdefgh

xauth merge /tmp/serverauth.abcdefgh

相关内容