Ubuntu
如何為 su 使用者解決“未指定協議”
我正在嘗試使用備用使用者(非管理員)在我的系統上執行圖形軟體。此備用使用者已被命名並被賦予一個 UID 和 GID 以匹配同名的遠端系統使用者。UID 是 500,所以我相信這會使使用者成為“非登錄”使用者。
從 Ubuntu 開始登錄我的主帳戶,我打開一個終端並
su
訪問備用使用者。然後我嘗試執行命令以啟動應用程序並收到“未指定協議”。這是因為 UID<1000,
su
還是因為使用者的非管理員?如何讓該使用者使用 GUI 執行應用程序?
由於使用者的 UID,問題不會發生。500 作為一個 UID 就很好,除了一些顯示管理器的預設設置之外,該 UID 不會使其成為“非登錄”使用者。
錯誤消息No protocol specified聽起來像是一個特定於應用程序的錯誤消息,而且沒有任何幫助,但我猜錯誤是應用程序無法聯繫您的 X11 顯示器,因為它沒有權限這樣做所以因為它以不同的使用者身份執行。應用程序需要一個“magic cookie”(秘密令牌)來與 X11 伺服器通信,以便系統上在其他使用者下執行的其他程序無法侵入您的顯示器、創建視窗和窺探您的擊鍵。其他系統使用者無權訪問此魔術 cookie,因為權限已設置為只有啟動桌面環境的使用者才能訪問(這是應該的)。
試試這個,以您的原始使用者身份執行,將 X11 cookie 複製到另一個帳戶:
su - <otheruser> -c "unset XAUTHORITY; xauth add $(xauth list)"
然後執行您的應用程序。您可能還需要
XAUTHORITY
在該 shell 中取消設置。該命令從您的主使用者那裡提取魔法 cookie (xauth list
) 並將其 (xauth add
) 添加到其他使用者可以獲取它的位置。