X のセキュリティ強化のために最も広く使われている仕組みはもちろん xhost プログラムです。簡単に使える反面、 xhost はやや柔軟性にかけます。
xhost プログラムの使い方は複雑ではありませ ん。それぞれの X サーバはアクセスを許可もしくは拒否するホストの 一覧を管理します。xhost プログラムはその一 覧を修正するために使われます。コマンドラインの構文を次に示します。
この X サーバがアクセスを許可しているホストの一覧を表示し ます。
xhost
bar.foo.org というホストを追加するために、次を入力します。
xhost +bar.foo.org
その結果そのマシン上のどんなユーザのどんなプログラムも X サーバと通信できるようになります。
先程と同じホストを削除するために、次を入力します。
xhost -bar.foo.org
アクセス制御を無効にして X サーバを世界に向けて開きます。 [訳注:非常に危険なので、軽々しく試してはいけません。]
xhost +
アクセス制御を再度有効 (つまり現状のホストの一覧を再び利用 します) にするために、次を入力します。
xhost -
引き数が無い場合、xhost は アクセス制御を有 効にしているかどうかと、どのマシンにアクセスを許しているか戻しま す。これはリモートから実行できる xhost の唯 一の用法で、たとえそのリモートマシンがアクセスリスト上にあったと してもこれしかできません。認められていないホストのユーザが接続を 試みるために xhost を利用すると、次に示す応 答が表示されるでしょう。
Xlib: connection to "display:0.0" refused by server Xlib: Client is not authorized to connect to Server |
コネクションが張られた後、そのホストアクセスを無効にしても既存の コネクションには影響しないことに注意してください。確立 (establish) されたコネクションを切るには、そのサーバをリセットし なければなりません。
しかし実のところ、これは便利な機能でもあります。 xhost を使うスマートな方法は、あるホスト上 のクライアントを起動する間だけそのホストのアクセスを許すことです。 そして、アクセスを無効にします。そのクライアントは動きつづけます が、ホストのアクセスは再び無効になります。
xhost のアクセス制御の仕組みはもちろん使い やすいことです。単純な構文のプログラムが一つ必要なだけです。
xhost の簡素さは長所と短所をあわせもちます。 あるホストからのすべてのコネクションはすべて受け入れられるか、す べて切断されるかのどちらかで、user-by-user, program-by-program, connection-by-connection を基準にしたものではありません。多くの 環境では、無数のユーザが特定のホストへのアクセスを許可されている ため、これでは解決法としては不十分です。そしてもちろん、X サーバ を実行しているほとんどのコンピュータは複数のユーザアカウントを持 ち、コンピュータにログインできるユーザは localhost の X サーバと して、完全に xhost のアクセス制御を迂回して X サーバにアクセスできます。
残念ながら、NCD サーバ、SGI システム、Macintosh 用 Mac X といっ た多くの X サーバは、初期設定で、アクセス制御が無効になっていま す。X サーバの脆弱さについてよく分かっていないユーザたちにとって、 これは深刻なセキュリティ上の問題を生じさせるかもしれないものです。
Xhost はトークン認証に優先します。特別な権 限やシステム管理者からの援助なしに、ユーザはあるシステムを xhost のアクセスリストに追加できます。