
xclock
私にとって、X11 転送で ssh 接続を使用しているときに、ユーザーと root は を見ることができるのに、別のユーザーはそれを見ることができないのは奇妙です。なぜでしょうか?
mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$
PS:ウィンドウ^C
が見えたので、ターミナルに戻るためにxclock
押しました。^C
答え1
X11ディスプレイに接続するには、ディスプレイ名(通常はDISPLAY
環境変数で渡される)とクッキーこれは、すべてのアプリケーションが接続時に表示する必要があるディスプレイのパスワードです。通常、Cookie は に保存されます~/.Xauthority
が、環境変数で指定された別のファイルに保存することもできますXAUTHORITY
。
SSH によって設定されたの値は、DISPLAY
の 2 回の呼び出しによって保存されたようですsu
。ただし、クッキーは にあります。hmousavi~mahmood/.Xauthority
としてプログラムを実行すると、プログラムは のクッキーを検索し~hmousavi/.Xauthority
、異なる値を見つけます。
原理的には を実行できますXAUTHORITY=~mahmood/.Xauthority xclock
が、hmousavi にはおそらくそのファイルを読み取る権限がありません。つまり、その.Xauthority
ファイルは他のユーザーが読み取れないようにする必要があります。xauth
コマンドを 2 回使用して、1 回は mahmood としてクッキー値を抽出し ( xauth list localhost:10.0
)、もう 1 回は hmousavi としてその値をインポートします ( xauth merge
) が、これは面倒です。X11 アプリケーションを動作させる最も簡単な方法は、SSH を全面的に使用することです。SSH は X11 転送を自動的に設定するためです。
mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock
これを許可するには、mahmood の SSH 公開キーを hmousavi の公開キーに追加します.ssh/authorized_keys
。