ssh+su+Xクライアント [プログラム]
debian(GNOME)上で、私はiceweaselでなく、firefoxを使用しています。
rootでfirefoxを実行すれば、「ソフトウェアの更新を確認…」が有効になりますが、一般ユーザでは、firefoxのアップデート「ヘルプ」メニューの「ソフトウェアの更新を確認…」がグレーアウトされていて、firefoxをアップデートできません。
したがって、suしてfirefoxを実行してアップデートすることになります。
ローカルマシン上では、これでアップデートできました。しかし、別のマシン(somehost)上のfirefoxをアップデートしようとしたたところ、以下のエラーがでて実行に失敗しました。
エラーメッセージとssh suでぐぐってみたところ、たくさんヒットして書かれている方法を順に試したのですが、解決方法が「該当しない」「直らない」ものが多く、やっと、
しかし、rootの.Xauthorityを無視させるのもかなり強引という気がしましたので、もう少し調べてみようとxauthのマニュアルをみたところ、EXAMPLEの項に
でも、もう面倒なので、
これでやっとfirefoxを2.0.0.20にアップデートできました。が、結局、使う間もなく3.0.5に入れ替えてしまいましたとさ。ちゃんちゃん。
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となり、Xのクライアントすべてが実行できないようです。
somehost# xeyes
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
エラーメッセージと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なるほど。ということは、$DISPLAYではだめで、「xauth extract - somehost/unix:10」としなければならないわけですな。
localhost:10.0
somehost$ xauth -n list
somehost/unix:10 MIT-MAGIC-COOKIE-1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
でも、もう面倒なので、
somehost# su -c "xauth nlist" su前のユーザ名 | xauth nmerge -としちゃいました。
これでやっとfirefoxを2.0.0.20にアップデートできました。が、結局、使う間もなく3.0.5に入れ替えてしまいましたとさ。ちゃんちゃん。