X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり、ログインセッションの管理に用います。 最低限の機能を実装した “X 端末”やデスクトップ、 大規模なネットワークディスプレイサーバといった場面ではこれが有用です。 X Window System はネットワークとプロトコルから独立しているため、 ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります。 XDM はどのディスプレイサーバに接続するかを選択でき、 ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェースを提供しています。
XDM がユーザに getty(8) (詳しくはSection 18.3.3をご覧ください) と同じ機能を提供することを考えてみてください。 つまり、ディスプレイ上でシステムへのログインができ、ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです。 それから XDM は、 ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます。 この時点で、XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示することができるのです。
XDM のデーモンプログラムは /usr/X11R6/bin/xdm にあります。 このプログラムは root になればいつでも起動することができ、 ローカルマシン上のディスプレイの管理を始めます。 マシンをブートする際、いつも XDM を起動したい場合には、/etc/ttys にそのためのエントリを加えておくのが簡単です。 このファイルのフォーマットや使用方法についての詳細は Section 18.3.3.1 を参照してください。デフォルトの /etc/ttys ファイルには仮想端末上で XDM デーモンを起動するための行:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
があります。このエントリーはデフォルトでは無効になっており、 有効にするには 5 番目のカラムを off から on にし、Section 18.3.3.6 の指示に従って init(8) を再起動します。最初のカラムはこのプログラムが管理する端末の名前で、 この場合 ttyv8 になります。 つまり、XDM は 9 番目仮想端末で起動されるということです。
XDM の設定用ディレクトリは /usr/X11R6/lib/X11/xdm です。 このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります。 だいたいは以下のような感じです。
ファイル | 説明 |
---|---|
Xaccess | クライアント認証のルールセット |
Xresources | デフォルトの X リソース |
Xservers | 管理すべきリモートやローカルのディスプレイのリスト |
Xsession | デフォルトのログイン時のセッションスクリプト |
Xsetup_* | ログインインタフェースの前にアプリケーションを起動するためのスクリプト |
xdm-config | このマシンで動いている全てのディスプレイのグローバルな設定 |
xdm-errors | サーバプログラムによって生成されるエラー |
xdm-pid | 現在動いている XDM のプロセス ID |
このディレクトリにはまた、XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります。 それぞれのファイルの目的を簡単に解説しましょう。 正確な文法や使い方は xdm(1) に記述されています。
デフォルトの設定では、単純な四角のログインウィンドウがあり、 そこにはマシンのホスト名が大きなフォントで表示され、“Login:” と “Password:” のプロンプトがその下に表示されています。 XDM スクリーンのルックアンドフィールを変えるにはここから始めるのがいいでしょう。
XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます。 このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます。 これは、xdm-config を変更してリモートからのコネクションを待ち受けるようにしない限り無視されます。 デフォルトでは、どのクライアントからの接続も拒否します。
これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです。 このファイルでログインプログラムの見た目を変更することができます。 フォーマットは X11 のドキュメントで記述されている app-defaults ファイルのものと同じです。
これは、chooser が選択肢として提供するリモートのディスプレイの一覧です。
XDM でログインした後に実行されるデフォルトのセッションスクリプトです。 通常、各ユーザは ~/.xsession というカスタマイズしたセッションスクリプトを持っており、こちらが優先されます。
これらは chooser やログインインタフェースが表示される前に自動的に実行されます。 それぞれのディスプレイには、 Xsetup_ に続けてローカルのディスプレイ番号を付けたもの (たとえば Xsetup_0) を名前とするスクリプトがあります。 典型的な使い方は xconsole のようなバックグラウンドで動かすプログラムを一つか二つ起動することです。
app-defaults の書式で書かれた、このインストレーションで管理されるすべてのディスプレイに適用される設定を保持しています。
このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます。 XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合、 このファイルのエラーメッセージを見てください。 そういったメッセージは各ユーザの ~/.xsession-errors にもセッション毎に書き出されます。
あるディスプレイサーバに他のクライアントが接続することができるようにするために、 アクセスコントロールのルールを編集し、 コネクションリスナーを有効にします。 デフォルトでは保守的な設定になっています。 XDM がそういったコネクションを待ち受けるようにするためには xdm-config にある次の行をコメントアウトします。
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0
そして、XDM を再起動します。 app-defaults ファイルにおけるコメントは “!” であっていつものような “#” ではないことに注意してください。 アクセス制限はもっと厳しくしたいかもしれません。 Xaccess にある例を参考にしたり、オンラインマニュアル xdm(1) を参照したりしてください。
デフォルトの XDM に代わるものがいくつかあります。 一つは kdm (KDE に付属しています) はその一つであり、この章の後ろで解説します。 kdm はログイン時にウィンドウマネージャを選ぶことができるのに加え、 見た目もかなり綺麗にしてくれます。