Diff of UNIX/コマンド/X/xauth


TITLE:xauth - X 認可ファイルユーティリティ
#navi(UNIX/コマンド)
#contentsx

xhost よりも安全に X サーバの許可を出すことができます。
会津大学演習室間通信では、[[NFS>http://e-words.jp/w/NFS.html]] システムとの合わせ技で気にしなくても xauth による認証を行うようになっています。

まず、演習室1,2などの Solaris 系の演習室では Xinit perl スクリプト内
で以下のような記述がされています。
 $accept_char = "0123456789abcdef";
 srand(time|$$);
 for ($i=0; $i < 32; $i++) {
     $key .= substr($accept_char, rand(length($accept_char)), 1);
 }
 …
 system "$XPATH/bin/xauth add $hostname:0 MIT-MAGIC-COOKIE-1 $key";
 system "$XPATH/bin/xauth add $hostname/unix:0 MIT-MAGIC-COOKIE-1 $key";
 …
 system "$XPATH/bin/xinit $clientarg -- /usr/X11R5/bin/Xrfx $serverarg -auth $home/.Xauthority";
実はただ単に
 % Xinit
と実行していただけで、xauth が実行されているのがわかると思います。
また、xinit コマンドのオプションで -auth $home/.Xauthority と指定されているのが
わかると思います。
このオプションにより、X サーバは -auth の引数で指定したファイルから 
xauth クッキーを読みとり、その後サーバは同じクッキーを知るクライアントからの
接続のみ許可するようになります。

先ほどの xauth コマンドでは、
 % xauth add [hostname]:[display#] MIT-MAGIC-COOKIE-1 [32桁の16進数字(COOKIE)]
のようにして ~/.Xauthority に COOKIE を追加しています。
確認は
 % xauth list
または、
 % xauth list [hostname]:[display#]
のように行います。
 [hostname]:0   MIT-MAGIC-COOKIE-1   992d409462631c5b5930ccce7c8d79f0
のようなものが表示されると思います。
削除は
 % xauth remove [hostname]:[display#]
のように行います。

ここで本来なら、X client を起動する側のホストの方に、
 % xauth add [X_server_host]:[display#] MIT-MAGIC-COOKIE-1 [COOKIE]
のようにして、% xhost list で調べたものと同じクッキーを追加しなければいけません。
そうして始めて X サーバへの接続が可能になるわけです。
しかし、会津大学では NFS により、
共通のホームディレクトリをどのホストでも利用できるので、~/.Xauthority ファイルも共有しています。
よって改めて COOKIE を追加するまでもなく、接続が可能になるわけです。

補足ですが、SGI(演習室 5, 6) では、Xinit を実行せずに、
xdm を使用してグラフィックログインしているわけですが、
 /var/X11/xdm/xdm-config
ファイル中で
 DisplayManager*authorize: on
のように設定されているので、同様に自動的に COOKIE が追加されるようになっています。

LML では、2003 年 10 月現在、
 /etc/sxdm/sxdm-config
ファイル中で
 DisplayManager*authorize:       false
となっているので、xauth が使用できないようです。

最後に無駄に xauth のキーをランダムに生成し、
COOKIE に追加するシェルスクリプトを作成しました。
 #!/bin/sh
 hostname=`hostname`
 key=`awk 'BEGIN{srand(); for(i=0;i<32;i++){printf "%1x", rand()*16;}}'`
 xauth add $hostname:0 MIT-MAGIC-COOKIE-1 $key
 xauth add $hostname/unix:0 MIT-MAGIC-COOKIE-1 $key
適当なファイルにコピーして実行許可を出し、実行してください。

より詳しくは、
[[Remote X Apps mini-HOWTO>http://www.linux.or.jp/JF/JFdocs/Remote-X-Apps.html]]
のページを参照してください。

また、xauth コマンド自体については、
[[Manpage of XAUTH>http://xjman.dsl.gr.jp/man/man1/xauth.1x.html]] のページを参照してください。

#navi(UNIX/コマンド,,footer,footer)
#navi(UNIX/コマンド,,footer)
xrea