SSブログ

ssh+su+Xクライアント [プログラム]

debian(GNOME)上で、私はiceweaselでなく、firefoxを使用しています。
rootでfirefoxを実行すれば、「ソフトウェアの更新を確認…」が有効になりますが、一般ユーザでは、firefoxのアップデート「ヘルプ」メニューの「ソフトウェアの更新を確認…」がグレーアウトされていて、firefoxをアップデートできません。
したがって、suしてfirefoxを実行してアップデートすることになります。
ローカルマシン上では、これでアップデートできました。しかし、別のマシン(somehost)上のfirefoxをアップデートしようとしたたところ、以下のエラーがでて実行に失敗しました。
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
少し調べてみると、ローカルマシン上で
localhost$ ssh -X somehost
して、somehost上で
somehost$ xeyes
するとちゃんと表示されます。しかし、
somehost$ su
somehost# xeyes
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
となり、Xのクライアントすべてが実行できないようです。

エラーメッセージとssh suでぐぐってみたところ、たくさんヒットして書かれている方法を順に試したのですが、解決方法が「該当しない」「直らない」ものが多く、やっと、
somehost# export XAUTHORITY=su前のユーザのホームディレクトリ/.Xauthority
を見つけました。ということで、試したみたらOKでした。
しかし、rootの.Xauthorityを無視させるのもかなり強引という気がしましたので、もう少し調べてみようとxauthのマニュアルをみたところ、EXAMPLEの項に
%  xauth extract - $DISPLAY | rsh otherhost xauth merge -
というのがありました。灯台下暗し。というわけで、
somehost$ xauth extract - $DISPLAY
No matches found, authority file "-" not written
あれ? だめじゃないですか。
somehost$ echo $DISPLAY
localhost:10.0
somehost$ xauth -n list
somehost/unix:10  MIT-MAGIC-COOKIE-1  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
なるほど。ということは、$DISPLAYではだめで、「xauth extract - somehost/unix:10」としなければならないわけですな。
でも、もう面倒なので、
somehost# su -c "xauth nlist" su前のユーザ名 | xauth nmerge -
としちゃいました。

これでやっとfirefoxを2.0.0.20にアップデートできました。が、結局、使う間もなく3.0.5に入れ替えてしまいましたとさ。ちゃんちゃん。


共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。