私の状況は次のとおりです。
私のコンピュータの1つに2人の(sudo)ユーザーがいます。
userA
(マシンで最初に作成してください。:0
モニターを接続する場所でもあります。)userB
(後で作成)
今userA
私はやっています:
export DISPLAY=:0.0
xclock
DISPLAY:0
予想通り時計が開きます。
今私は同じ手順に従いたいと思いますuserB
。しかし、残念ながら、次のように表示されます。
No protocol specified
xhost: unable to open display ":0.0"
私が試したこと:
- 次のようにして信頼できるxauthキーを作成します。
xauth generate :0.0 . trusted
再表示unable to open display ":0.0"
/home/userA/.Xauthority
(注:機能しますが、xauthリストに表示:0に関連するキーは表示されません/home/userB/.Xauthority
。)userA
:0
onの信頼できるxauthキーを生成し、userA
そのキーをにコピーしますuserB
。
これらのどれも機能しません。
働くもの:
- ログインしました
userA
。export DISPLAY=:0.0
その後、xhost +
すべてのクライアントへのアクセスを有効にしました。 - 私は再びログインしました
userB
。export DISPLAY=:0.0
xclock
userA
ステップ1を取り除きたいです。毎回ログインしたくありません。私は試しましたが、xhost +
上記userB
のエラーが表示されました。
アクセス権があると考えながらどのようにxhost +
実行できますか?userB
DISPLAY: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
代わりにを使用するか、ssh
2つのステップで実行できます。