我以用戶 A 登入。使用者 B 也是本地的,而不是遠端的,我只需要不同的環境變數。我不想運行第二個 X,我希望它們在同一顯示器上。我對在終端機中運行的程式沒有任何問題,su - ...
工作正常。對於圖形化,有一條錯誤訊息:
Application initialization failed: couldn't connect to display ":0.0"
或者
Gtk-WARNING **: cannot open display: :0.0
有沒有好的辦法解決呢?關於正確使用xhost
什麼的文章?
答案1
執行以下命令以授予userBname
對顯示的存取權限:xhost +SI:localuser:userBname
You may use xhost +
to grant access to every person;然而這是不安全的。更好的方法是按每個使用者授予存取權限。本機使用者的 xhosts 條目的正確語法是SI:localuser:username
。
然後su userBname
、export DISPLAY=:0.0
、 最後運行您的 GUI 程式。儘管您之前使用 授予了對顯示的存取權限xhost
,但您還必須設定環境變量DISPLAY
,以便程式知道將其圖形輸出放置在何處。允許DISPLAY
不同的使用者使用不同的變量,允許連接到一台機器的多個使用者使用不同的實體終端。
答案2
只需使用 gksu -u 所需的用戶名,輸入密碼,您就可以開始了。
DISPLAY=:1.0 gksu [-u <user>] [options] <command>
或者,您可以使用 su,然後將 XDISPLAY 設定到正確的螢幕,最後啟動您想要的應用程式。
答案3
這就是我完成此任務的方法:-
- 以具有現有 X 會話的使用者身分開啟 x 終端機。
- 發出命令
xauth list
。您應該會看到 X Magic cookie 值,用於驗證對 X 伺服器的各種描述符的請求。複製帶有“unix”參考的那個。例如myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 作為初始使用者開啟第二個終端,但將使用者 (su) 切換到您想要的 ID,例如
su - user2
- 現在您已經切換了用戶,發出命令
xauth add
並貼上您之前在第 2 階段複製的行,然後按回車鍵,例如xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 從命令列在第二個終端啟動 X 程序,例如:
firefox
就是這樣!
答案4
首先將第二個使用者加入到 localuser:
$ xhost SI:localuser:user2
localuser:玩家被加入到存取控制列表
比運行你的應用程式:
$ sudo -u user2 -H firefox