我因错误而删除了我的$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