xauth - X 認可ファイルユーティリティ
xhost よりも安全に X サーバの許可を出すことができます。
会津大学演習室間通信では、NFS システムとの合わせ技で気にしなくても 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 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 が追加されるようになっています。
/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
のページを参照してください。
また、xauth コマンド自体については、
Manpage of XAUTH のページを参照してください。