最初のユーザーがdisplay:0を使用しているときに2番目のユーザーへのxhostアクセスをどのように有効にしますか?

最初のユーザーがdisplay:0を使用しているときに2番目のユーザーへのxhostアクセスをどのように有効にしますか?

私の状況は次のとおりです。

私のコンピュータの1つに2人の(sudo)ユーザーがいます。

  1. userA(マシンで最初に作成してください。:0モニターを接続する場所でもあります。)
  2. userB(後で作成)

userA私はやっています:

export DISPLAY=:0.0
xclock

DISPLAY:0予想通り時計が開きます。

今私は同じ手順に従いたいと思いますuserB。しかし、残念ながら、次のように表示されます。

No protocol specified
xhost:  unable to open display ":0.0"

私が試したこと:

  1. 次のようにして信頼できるxauthキーを作成します。xauth generate :0.0 . trusted再表示unable to open display ":0.0"
  2. /home/userA/.Xauthority(注:機能しますが、xauthリストに表示:0に関連するキーは表示されません/home/userB/.Xauthority。)userA
  3. :0onの信頼できるxauthキーを生成し、userAそのキーをにコピーしますuserB

これらのどれも機能しません。

働くもの:

  1. ログインしましたuserAexport DISPLAY=:0.0その後、xhost +すべてのクライアントへのアクセスを有効にしました。
  2. 私は再びログインしましたuserBexport DISPLAY=:0.0xclock

userAステップ1を取り除きたいです。毎回ログインしたくありません。私は試しましたが、xhost +上記userBのエラーが表示されました。

アクセス権があると考えながらどのようにxhost +実行できますか?userBDISPLAY:0

編集する:@user414777が述べたように、次のことができました。

# On userA
$ xhost +si:localuser:userB

# On userB
$ export DISPLAY=:0.0 ; xclock

そして働かせなさい。ただし、これらの変更は再起動後も維持されません。

# After rebooting, on userB
$ export DISPLAY=:0.0 ; xclock
Invalid MIT-MAGIC-COOKIE-1 keyError: Can't open display: :0.0

私はUbuntu 18.04 LTS、4.18.0-15-genericを実行しています。

解決済み

私は最終的に@user414777の少し安全ではなく修正された提案を受け入れました。~/.xsessionまたは、変更を追加する代わりに、すべてのユーザーに変更を適用する行をXsession.d追加しました。/etc/profile

答え1

ほとんどの「最新」Linuxシステムでは、次のことができます。

xhost +si:localuser:userB

userA次のアカウントで実行(すでにモニターにアクセスできる人)にuserB接続できます(正しいDISPLAY環境変数を設定するか、正しい-displayコマンド--displayラインオプションを使用している場合)。

これは非常に安全ではありませんが(少なくともDebianでは)サポートされている唯一のものですXwayland強制的にでも一般的なものXorg


xauth(1)マニュアルページと、ここや他の場所で多くの回答ですでに述べられている一般的なアプローチは次のとおりです。

xauth extract - "$DISPLAY" | ssh userB@localhost xauth merge -

しかし、私のシステムでは、この機能はでのみ動作し、Xorgでは動作しませんXwayland。上記のコマンドを使用して、suまたはsudo代わりにを使用するか、ssh2つのステップで実行できます。

関連情報