xauth - X 認可ファイルユーティリティ

Top > UNIX > コマンド > X > xauth

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 コマンドでは、

% 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 のページを参照してください。

また、xauth コマンド自体については、 Manpage of XAUTH のページを参照してください。


xrea