「su - other-account」後無法辨識 xsel

「su - other-account」後無法辨識 xsel

我是 Linux 新手,並且已使用以下命令將以下版本的 Ubuntu 設定為 VirtualBox VM這個流程:

ubuntu-20.04.3-desktop-amd64.iso

建立的第一個帳戶是管理員帳戶。我安裝xsel並檢查它是否有效。然後我創建了一個非管理員帳戶並su使用 d 進入該帳戶su - non-admin-account。那時,xsel抱怨:

xsel: Can't open display: (null)
: Inappropriate ioctl for device

登入另一個帳戶後,我需要做什麼才能xsel存取?su

su目前,我對啟動在進入非管理員帳戶時啟動自己的客戶端視窗的應用程式不感興趣。我只想要簡單的管道標準輸出到剪貼板,以便我可以使用 Shift+Ins 在 Vim 或 Bash 命令行中檢索它,例如echo dog | xsel -ibecho dog | xsel -ip

我目前的計劃是編寫或重定向到(例如)/tmp/tmp.txt在從登入畫面登入的使用者與登入畫面登入的使用者之間傳遞文字su。我習慣了 Cygwin 的行為,無論終端在哪個帳戶下啟動,剪貼簿都會共用。


故障排除

如果我登入非管理員帳戶和su管理員帳戶,我會得到相同的行為。 xsel在我登入的非管理員帳戶中工作,但在我su登入的管理員帳戶中工作。

本質上,xselsu.

根據評論,我看了這個問題的答案 我無法識別問題描述,因為錯誤訊息非常不同,因此根據錯誤訊息查找的人不會識別該問題。此外,我不明白這些答案。看起來可能適用於我的解決方案的一點是xhost +localhost,但它不起作用,因為語法錯誤,至少對於我正在使用的 Ubuntu 版本是錯誤的。我發布的語法是在我下面的回答中工作。

我認為,在上面引用的頁面甚至可以遠端通知某人之前,您必須知道問題是缺少帳戶訪問 X 伺服器的權限。例如,如果您有使用 Cygwin 的 X-windows 的背景,您可能不會猜到這一點,因為問題並沒有在那裡顯現出來。

答案1

您可以使用pam_xauth驗證模組可跨su呼叫轉送 X11 會話 cookie,而無需更廣泛地向這些使用者開放 X 伺服器。

這也允許透過目錄中的設定檔對哪些使用者可以將憑證轉發給哪些其他使用者進行細粒度控制$HOME/.xauth/

答案2

基於瓦爾特納的評論,我發現這一頁關於使用xhost.從這些資訊中,我發現以下內容可行:

# Log into admin-username from the login screen,
# then issue:
$ xhost +SI:localuser:nonadmin-username

   localuser:nonadmin-username being added to access control
   list.

$ xhost

   SI:localuser:nonadmin-username
   SI:localuser:admin-username

$ su - nonadmin-username
# Enter password when prompted

# Match DISPLAY to its value in the admin account
$ export DISPLAY=:0

$ ls | xsel -ip # Use PRIMARY selection e.g. X-windows mouse highlighting
$ ls | xsel -ib # Use CLIPBOARD buffer e.g. Windows's Ctrl+C/X/V
$ exit # Exit the "su" session

# Paste then works in admin account as expected.
# To test the PRIMARY selection:
$ cat # In admin account
# Paste using middle mouse button or Shift+Ins
Ctrl+D to end input into "cat"

一次添加用戶的有用替代方法是xhost +local:,它允許任何本地用戶打開客戶端視窗。這意味著您信任登入該電腦的每個人。因此,這只能在受控環境中完成,例如單一使用者電腦。

在許多環境中,PRIMARY 選擇也可以從暫存器貼到 [G]Vim 中*

同樣,剪貼簿緩衝區通常可以從暫存器+或任何其他使用 Ctrl+V 的應用程式貼上到 [G]Vim 中。

相關內容