X11

如何在不重新啟動 X 的情況下為缺少它的顯示正確生成新的 .Xauthority 文件?

  • July 21, 2021

我因錯誤而刪除了我的$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 報告 ok

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 值?

您正在創建一個新 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

引用自:https://unix.stackexchange.com/questions/659362