私はLinux初心者で、以下のバージョンのUbuntuをVirtualBox VMとしてセットアップしました。このプロセス:
ubuntu-20.04.3-desktop-amd64.iso
最初に作成されたアカウントは管理者アカウントでした。インストールしxsel
て動作を確認しました。次に、管理者以外のアカウントを作成し、su
でログインしましたsu - non-admin-account
。その時点で、は次のようにxsel
エラーを出力します。
xsel: Can't open display: (null)
: Inappropriate ioctl for device
別のアカウントにログインしたxsel
後にアクセスできるようにするにはどうすればいいですか?su
su
現時点では、管理者以外のアカウントで独自のクライアントウィンドウを起動するアプリを起動することには興味がありません。標準出力クリップボードに保存して、Shift+Ins (例:echo dog | xsel -ib
または )を使用して Vim または Bash コマンドラインで取得できるようにしますecho dog | xsel -ip
。
/tmp/tmp.txt
私の現在の計画は、ログイン画面からログインしたユーザーと、ログイン画面からログインしたユーザーの間でテキストを渡すために、書き込みまたはリダイレクトすることですsu
。私は、ターミナルがどのアカウントで起動されたかに関係なく、クリップボードが共有される Cygwin の動作に慣れています。
トラブルシューティング
su
非管理者アカウントと管理者アカウントに ログインした場合、同じ動作になります。xsel
ログインした非管理者アカウントでは機能しますが、ログインした管理者アカウントでは機能しませんsu
。
基本的に、xsel
の後では機能しませんsu
。
コメントに従って、私はこの問題の答え。 問題の説明がわかりません。エラーメッセージはまったく異なるため、エラーメッセージに基づいて検索する人はその質問を認識できません。さらに、回答も理解できません。私の解決策に当てはまると思われる部分は でしたがxhost +localhost
、少なくとも私が使用しているUbuntuバージョンでは構文が間違っているため機能しませんでした。構文を投稿します。する私の回答は下記に記載されています。
上記のページが誰かに少しでも情報を伝える前に、アカウントが X サーバーにアクセスするための権限がないことが問題であることを知っておく必要があると思います。たとえば、Cygwin の X-windows を使用した経験がある場合、問題はそこに現れないため、おそらくこれを推測できないでしょう。
答え1
あなたはpam_xauth
su
認証モジュールは、X サーバーをそれらのユーザーに広く公開することなく、呼び出し間で X11 セッション クッキーを転送します。
これにより、ディレクトリ内の構成ファイルを介して、どのユーザーがどの他のユーザーに資格情報を転送できるかを細かく制御することもできます$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"
ユーザーを 1 人ずつ追加する代わりにxhost +local:
、ローカル ユーザーがクライアント ウィンドウを開くことができる という便利な方法があります。これは、マシンにログオンしているすべてのユーザーを信頼していることを意味します。したがって、これはシングル ユーザー マシンなどの制御された環境でのみ実行する必要があります。
多くの環境では、PRIMARY 選択をレジスタから [G]Vim に貼り付けることもできます*
。
同様に、CLIPBOARD バッファは、レジスタから [G]Vim に貼り付けられる場合もあれ+
ば、Ctrl+V を使用する他のアプリから貼り付けられる場合もあります。