解決Linux切換使用者之後無法開啟X11應用

2021-10-20 18:22:11 字數 1776 閱讀 3861

這個問題在中文搜尋中很難搜到乙個有用的解決辦法,所以google之後搬運一下解決辦法。

問題:

ssh [email protected]
user@myserver$ su

error: can't open display: localhost:10.0

報錯:error: can』t open display: localhost:10.0

這是因為切換使用者之後,x的認證變了

user@myserver$ xauth info

authority file: /home/user/.xauthority

file new: no

file locked: no

number of entries: 82

changes honored: yes

changes made: no

current input: (ar**):1

root@myserver# xauth info

authority file: /root/.xauthority

file new: no

file locked: no

number of entries: 3

changes honored: yes

changes made: no

current input: (ar**):1

所以乙個臨時的解決辦法是把user使用者的xauth的cookie新增到root使用者(或者其他要切換的使用者)

先檢視user的xauth資訊

user@myserver$ xauth list $display

remote/unix:10 mit-magic-cookie-1 dacbc5765ec54a1d7115a172147866aa

複製這行資訊,切換使用者,然後用xauth add 新增

user@myserver$ su

root@myserver# xauth add remote/unix:10 mit-magic-cookie-1 dacbc5765ec54a1d7115a172147866aa

這時候應該能正常執行gui程式了,但是這個方法是臨時的,斷開連線之後,重新連線就失效了。

下面介紹一種長效的方法:

修改檔案/etc/pam.d/su,在檔案中新增session optional pam_xauth.so systemuser=1

然後儲存,退出。

退出root使用者,重新登陸root使用者,這時候gui應該已經正常了。

當然,如果你要切換的使用者也能ssh,那你另外開乙個那個使用者的連線也是能解決問題的,或者在當前使用者下執行

$ ssh user2@localhost
曲線救國,但是我的場景是必須要root執行一些程式,並且出於安全考慮ssh禁止了root使用者登入。

關於使用su切換使用者之後,命令無法

在很多的linux指令碼中,我們需要su切換使用者,來執行相應許可權的命令。如果指令碼中直接su的話,大多數情況,命令在su之後不會繼續執行。因此,我們需要換一種方式來實現su命令,在這裡,我推薦使用expect結合spawn命令來實現。例項如下 export cmd1 usr bin impala...

linux 切換使用者之後變成 bash 3 2

root localhost groupadd oinstall root localhost groupadd dba root localhost cd root localhost mkdir p u01 oracle root localhost useradd g oinstall g d...

linux中切換使用者

檢視當前登入使用的使用者名稱 檢視登入過的使用者名稱 登入的主機位址 時間 tt號 who從當前使用者切換到其他使用者 su 其他使用者名稱 從dsl使用者切換到admin使用者 注意輸入密碼處,要輸入你要切換到的使用者的密碼 dsl localhost admin su admin 從當前使用者切...