Debian

為什麼我不能以 root 身份執行 GUI 應用程序:“未指定協議”?

  • March 23, 2022

我昨晚在我的機器上安裝了 Debian。現在,我不明白為什麼在以 root 身份執行時不能從終端執行 GUI 應用程序。

例如:

sudo -i
glxgears

生成以下輸出:

No protocol specified
Error: couldn't open display :0

但是當我第一次打開終端時,我可以glxgears從使用者帳戶執行。只有在我這樣做之後sudo -i,問題才會出現。我嘗試執行的任何 GUI 應用程序都會發生這種情況。

我認為它可能與X11有關,但我不確定。

訪問 X 伺服器需要兩件事:

  • $DISPLAY指向正確顯示的變數(通常:0
  • 正確的身份驗證資訊

身份驗證資訊可以通過 明確指定$XAUTHORITY,預設為~/.Xauthority其他。

如果為您的使用者設置了$DISPLAYand ,也會為新的 shell 設置它們,並且一切都應該正常工作。$XAUTHORITY``sudo

如果未設置它們,它們可能會預設為錯誤的值,並且您無法啟動 X 應用程序。

在 Debian$XAUTHORITY中通常沒有明確設置。只需添加

export XAUTHORITY=~/.Xauthority

.bashrc或明確地說XAUTHORITY=~/.Xauthority sudo ...,一切都應該工作。

您還可以使用xauth list來檢查是否有正確的身份驗證資訊可用。

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