在同一螢幕上作為不同用戶的兩個 GUI 應用程式

在同一螢幕上作為不同用戶的兩個 GUI 應用程式

我以用戶 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:userBnameYou may use xhost +to grant access to every person;然而這是不安全的。更好的方法是按每個使用者授予存取權限。本機使用者的 xhosts 條目的正確語法是SI:localuser:username

然後su userBnameexport DISPLAY=:0.0、 最後運行您的 GUI 程式。儘管您之前使用 授予了對顯示的存取權限xhost,但您還必須設定環境變量DISPLAY,以便程式知道將其圖形輸出放置在何處。允許DISPLAY不同的使用者使用不同的變量,允許連接到一台機器的多個使用者使用不同的實體終端。

答案2

只需使用 gksu -u 所需的用戶名,輸入密碼,您就可以開始了。

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

或者,您可以使用 su,然後將 XDISPLAY 設定到正確的螢幕,最後啟動您想要的應用程式。

答案3

這就是我完成此任務的方法:-

  1. 以具有現有 X 會話的使用者身分開啟 x 終端機。
  2. 發出命令xauth list。您應該會看到 X Magic cookie 值,用於驗證對 X 伺服器的各種描述符的請求。複製帶有“unix”參考的那個。例如 myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. 作為初始使用者開啟第二個終端,但將使用者 (su) 切換到您想要的 ID,例如su - user2
  4. 現在您已經切換了用戶,發出命令xauth add並貼上您之前在第 2 階段複製的行,然後按回車鍵,例如 xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. 從命令列在第二個終端啟動 X 程序,例如:firefox

就是這樣!

答案4

首先將第二個使用者加入到 localuser:

$ xhost SI:localuser:user2

localuser:玩家被加入到存取控制列表

比運行你的應用程式:

$ sudo -u user2 -H firefox

相關內容