Debian
為什麼我不能以 root 身份執行 GUI 應用程序:“未指定協議”?
我昨晚在我的機器上安裝了 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
其他。如果為您的使用者設置了
$DISPLAY
and ,也會為新的 shell 設置它們,並且一切都應該正常工作。$XAUTHORITY``sudo
如果未設置它們,它們可能會預設為錯誤的值,並且您無法啟動 X 應用程序。
在 Debian
$XAUTHORITY
中通常沒有明確設置。只需添加export XAUTHORITY=~/.Xauthority
你
.bashrc
或明確地說XAUTHORITY=~/.Xauthority sudo ...
,一切都應該工作。您還可以使用
xauth list
來檢查是否有正確的身份驗證資訊可用。