XDM(1)

名前
xdm - X ディスプレイマネージャ (XDMCP,ホスト選択機能付き)

書式
xdm [ -config configuration_file ] [ -nodaemon ] [ -debug debug_level ] [ -error error_log_file ] [ -resources resource_file ] [ -server server_entry ] [ -session session_program ]

説明
はローカルホストやリモートホストにある X のいろいろなディスプレイの集 合を管理する。 xdm の設計は、X 端末の必要性と X コンソーシアム標準の XDMCP (X Display Manager Control Protocol)に則って行われた。 xdm はキャラクタ端末上で init, getty と login が行なうこ とと同じこと、つまりログイン名とパスワードのプロンプトを出してユーザ認 証を行い、「セッション」を起動する。

「セッション」は伝統的な文字ベースの端末の世界では特定のプロセスの 存続期間として定義される。この特定のプロセスとはユーザのログインシェル である。 xdm 環境では任意のセッションマネージャが利用できる。なぜなら、ウィンドウ環 境にあるため、ユーザのログインシェルプロセスは接続を行うための端末のよ うなインタフェースを必要としないからである。 本当のセッションマネージャが使えない時は、普通ウィンドウマネージャか端 末エミュレータを「セッションマネージャ」として用いる。このセッションマ ネージャのプロセスが終了するとユーザのセッションが終了する。

セッションが終了する時、 xdm は X サーバをリセットして(指定によっ ては)すべてのプロセスを再起動する。

xdm が XDMCP 経由で Indirect の問い合わせを受け取ったとき、 xdm はディスプレイのために chooser プロセスを起動して XDMCP BroadcastQuery(または指定されたホストに対する XDMCP Query)を実行 する。そして、XDMCP によってディスプレイ管理ができるホスト一覧を提供す る。 この機能は、ホスト一覧を与えることができない X 端末を使う際に便利であ る。

xdm は選択されたホストからの BroadcastQuery メッセージを無視するように設定 できる。これは、このホストを chooser または X 端末が生成するリストに出したくない場合に便利である。

xdm は最初にユーザが触れるインタフェースを提供するので、簡単に利用でき、個 別のサイトの要望に合わせて簡単にカスタマイズできるようになっている。 xdm は多くのオプションがあり、そのほとんどは適切なデフォルト値になっている。 このマニュアルの多くのセクションを調べて、変更したい部分を選択すること。 セッションのスタイルの設定について説明している セッションプログラム セクションには特に注意すること。

概要
xdm は細かく設定が変えられ、ほとんどの挙動はリソースファイルとシェ ルスクリプトで制御可能である。これらのファイル名は、xdm-config ファイルまたは -config オプションで指定したファイルからリソース として読み込む。

xdm でディスプレイを管理するには2つの異なる方法がある。ローカル マシンで動作するサーバを Xservers に指定する方法と、リモートの X サーバ(通常は X 端末)を Xaccess ファイルで指定して XDMCP(XDM 制 御プロトコル)を使う方法である。

ユーザのセッション外でxdm が実行する X クライアント(これは xdm 自身のログイン画面を含む)のリソースは Xresources ファ イルで設定することができる。

ディスプレイ管理を得るためのホスト一覧を与えない X 端末に対しては、 xdm は自発的に動作するホストを集め、ユーザに一覧を提供するために chooser プログラムを実行する。ホストに接続している X ディスプレ イに対しては通常このような手順は行われず、ローカルホストがディスプレイ 管理を行う。

X サーバをリセットした後、xdm は Xsetup スクリプトを実行し て、ユーザが xlogin ウィジェットで見るスクリーンの設定を補助する。

xdm が提供する xlogin ウィジェットは、よくあるタイプのログ インとパスワードプロンプトである。

ユーザがログインした後で、xdm は Xstartup スクリプトを ルート権限で実行する。

それから xdm は Xsession スクリプトをユーザ権限で実行する。 このシステムセッションファイルは追加の開始処理をいくつか行い、通常はユー ザのホームディレクトリの .xsession を実行する。 Xsession スクリプトが終了するとセッションは終了する。

セッションの最後には、終了処理を行う Xreset スクリプトが実行され、 X サーバがリセットされ、サイクルの最初に戻る。

xdm と Xsetup, Xstartup, Xsession, Xreset が標準エラー出力に送っ たエラーメッセエージは、/usr/X11R6/lib/X11/xdm/xdm-errors ファイ ルに格納される。 xdm の実行中に問題が発生した場合には、このファイルを見て、 xdm が問題解決の手がかりを示しているかどうか調べること。

オプション

-config オプション自身を除くすべてのオプションは、リソースとして 設定ファイルでも指定できる。

-config configuration_file
    設定ファイルの名前。これは xdm の挙動を制御するリソースを指定する。 <XRoot>/lib/X11/xdm/xdm-config がデフォルト値である。 設定ファイルのセクションを参照すること。

-nodaemon
    DisplayManager.daemonMode リソースを ``false'' にすることと同じ である。 xdm に一般のデーモンの挙動をさせない。デーモンの挙動とは、 ファイルデスクリプタ全て閉じ、制御端末を切り放し、起動に xdm 自身をバッ クグラウンドで動作させることである。

-debug debug_level
    DisplayManager.debugLevel リソースに数値を指定する。ゼロでない数 値を指定すると、 xdm は多量のデバッグ情報を端末に表示させる。このオプションはまた、 DisplayManager.daemonMode リソースを無効にし、 xdm を強制的に同期動作させる。デバッグメッセージを解釈するには、 xdm のソースファイルが必要であろう。出力情報の合理化や標準化を行う予定はな い。

-error error_log_file
    DisplayManager.errorLogFile リソースの値を指定する。 このファイルには xdm が出力したエラーや、セッション中に実行された様々なスクリプトやプログラ ムが標準エラー出力に書き出したエラーが記録されている。

-resources resource_file
    DisplayManager*resources リソースにファイル名を設定する。このファ イルは xrdb を使ってロードされ、認証ウィジェット用の設定パラメータを指定に使われる。

-server server_entry
    DisplayManager.servers リソースに値を設定する。 このリソースの説明は ローカルサーバ指定 セクションを参照すること。

-udpPort port_number
    DisplayManager.requestPort リソースに値を設定する。 このリソースは XDMCP リクエストに使う xdm のポート番号を設定する。XDMCP はよく知られた登録済みの UDP ポート 177 番を使うので、デバッグ目的以外ではこのリソースを変更すべきでない。 このリソースに 0 を設定すると、xdm は XDMCP リクエストも Chooser リクエストも監視しない。

-session session_program
    DisplayManager*session リソースに値を設定する。 ユーザがログインした後にセッションとして動作させたいプログラムを指定す る。

-xrm resource_specification
    ほとんどの X ツールキットアプリケーションのように、任意のリソースを指 定できる。

リソース
xdm の動作は設定ファイルを使って制御することはいろいろな段階で可能である。 この設定ファイルは X リソースフォーマットで書かれる。 リソースには全てのディスプレイ上での xdm の挙動を変えるものもあるし、1つのディスプレイだけの動作を変えるもの もある。 特定のディスプレイの動作に限定するには、``DisplayManager'' と 最後のリソース名の間にディスプレイ名を挿入すること。

ローカルディスプレイの場合は、リソース名とクラスは Xservers ファ イルから読み込まれる。

リモートディスプレイの場合は、リソース名はディスプレイのアドレスを解決 したものである。removeDomain リソースを参照すること。名前は完全 に一致しなければならない。xdm は指定されたディスプレイを示すネッ トワーク上の別名が全てわかるわけではない。 名前の解決に失敗した場合は、名前ではなくアドレスを使用すること。リソー スクラスはディスプレイによりXDMCP Manage リクエストで送られる。

リソースマネージャはリソース名とその値を区切るためにコロンを使い、リソー ス名の部分を区切るためにドットを使うので、 xdm がリソース名を生成するときにはドットとコロンは下線(アンダスコア)に置き 換えられる。 例えば、起動シェルスクリプトが ``expo.x.org:0'' をディスプレイに定義して いるときは DisplayManager.expo_x_org_0.startup がリソース名とな る。

DisplayManager.servers
    このリソースは、全てのサーバエントリのファイル名を行ごとに1つずつ指定 するか(値が / から始まる場合)、1つのサーバエントリを指定する。 詳細はローカルサーバ指定のセクションを参照すること。

DisplayManager.requestPort
    このオプションは xdm が XDMCP リクエストを待つ UDP ポート番号を指定する。システムをデバッグ する必要がなければデフォルト値の 177 のままにしておくこと。

DisplayManager.errorLogFile
    エラー出力は通常システムコンソールに出力される。エラー出力をリダイレクト するにはこのリソースにファイル名を設定すること。 syslog をサポートしているシステムに対しては、 これらのメッセージを syslog に送る方法が開発されるべきである。しかし、色々なインタフェースを持つよ うにすると、システムに依存しない実装ができなくなってしまう。このファイ ルは Xsetup, Xstartup, Xsession, Xreset ファイルによる標準 エラー出力への出力も含まれる。したがって、このファイルにはこれらのスク リプトが起こした問題も記述されている。

DisplayManager.debugLevel
    このリソースの整数値がゼロより大きい場合、出力するデバッグ情報の範囲が 大きくなる。 このオプションはデーモンモードも無効にする。デーモンモードでは、 bit-bucket に情報がリダイレクトされ、ルート以外のユーザも xdm を実行できるようになるが、あまり役には立たない。 【訳注：bit-bucket - /dev/null でしょう】

DisplayManager.daemonMode
    通常、 xdm はどの端末とも関係がないデーモンプロセスとして動作しようとする。 これは fork を行って親の方のプロセスを終了させ、そしてファイルデスクリ プタを閉じ、制御している端末を解放することによって実現される。環境によっ てはこの動作は必要ではない(特にデバッグするとき)。このリソースを ``false'' に設定するとこの機能は無効となる。

DisplayManager.pidFile
    指定されたファイル名が生成され、その内容が メインの xdm のプロセス ID の ASCII 表現となる。 xdm はこのファイルのロックを行い、重複してデーモンが同じマシンで起動して混 乱が起きないようにする。

DisplayManager.lockPidFile
    このリソースは、複数のディスプレイマネージャが暴走しないように xdm がファイルのロッキングを行うかどうか制御する。 System V では、このリソースは lockf ライブラリコールを使い、BSD では flock を使う。

DisplayManager.authDir
    これは xdm がセッションを初期化する時の認証ファイルを格納するディレクトリを指す。 デフォルト値は <XRoot>/lib/X11/xdm である。 特定のディスプレイに対しては DisplayManager.DISPLAY.authFile で 上書きすることができる。

DisplayManager.autoRescan
    この真偽値は xdm が終わってファイルが変更された後に、構成情報、サーバ、アクセス制御と認 証キーファイルを再読み込みするかどうか制御する。デフォルト値は ``true'' である。 メインプロセスに SIGHUP を送ることによって、 xdm にこれらのファイルを再度読み込ませることができる。

DisplayManager.removeDomainname
    XDMCP クライアント用のディスプレイ名を計算するとき、その名前解決では完 全に選択されたホスト名が生成される。これは時々紛らわしいことがあるので、 この変数がセットされた場合、ローカルホストのドメイン名と同じならば xdm はホスト名からドメイン名部分を取り除く。デフォルトではこの値は ``true'' である。

DisplayManager.keyFile
    XDM-AUTHENTICATION-1 型の XDMCP 認証はプライベートキーの xdm と端末における共有を必要とする。このリソースはこの値を持つファイルを指 定する。このファイルの各項目は、ディスプレイ名と共有されるキーからなる。 デフォルトでは、 xdm は XDM-AUTHENTICATION-1 をサポートしていない。その理由は、この認証はア メリカ合衆国の輸出制限のため一般に配布できない DES を必要とするためで ある。

DisplayManager.accessFile
    許可されていない XDMCP を防ぎ、XDMCP の IndirectQuery リクエストを転送 できるようにするため、このファイルは、このマシンへの直接アクセスが許さ れているホスト名のデータベースまたは問い合わせが転送されるべきホストの リストを持っている。このファイルのフォーマットは XDMCP アクセス制御 のセクションで述べる。

DisplayManager.exportList
    Xsetup, Xstartup, Xsession, and Xreset プログラムに渡す追加の環境変数のリスト。リストは空白で区切られる。

DisplayManager.randomFile
    認証キーの種を生成するチェックサムのファイル。 このファイルは頻繁に内容が変わるものでなければならない。 デフォルト値は /dev/mem である。

DisplayManager.greeterLib
    動的にロード可能なグリーティングライブラリをサポートしているシステムで、 ライブラリの名前を指定する。デフォルト値は <XRoot>/lib/X11/xdm/libXdmGreet.so である。

DisplayManager.choiceTimeout
    ユーザが chooser からホスト名を選択した後に、ディスプレイの応答を待つ 秒数。ディスプレイがこの間に XDMCP の IndirectQuery を送ると、このリク エストは選択されたホストに送られる。そうでない場合には、これは新しいセッ ションから送られたものとして処理され、再び chooser が表示される。 デフォルト値は15秒である。

DisplayManager.sourceAddress
    マルチホームのホストでの接続を受けるときに、ホスト名を使わずに数値の IP アドレスを使用する。これは接続時にダウンするような不正なインターフェー スでの接続の試みを回避する。

DisplayManager.DISPLAY.resources
    このリソースは xrdb がディスプレイのスクリーン 0 のルートウィン ドウ上のリソースデータベースとして読み込むファイルの名前を指定する。 Xsetup プログラム、Login ウィジェットと chooser はこのファ イルのリソースセットを使用する。 このリソースデータベースは認証手続きの直前に読み込まれるので、ログイン ウィンドウの外観を制御することができる。このファイルに記述することが適 切である様々なリソースについて説明している 認証ウィジェット セクションを参照してすること。 このリソースにはデフォルト値はないが、慣習的に <XRoot>/lib/X11/xdm/Xresources という名前が使われている。

DisplayManager.DISPLAY.chooser
    特別なホスト名である CHOOSER にリダイレクトされる間接問い合わせ (Indirect query)に対するホストメニューを与えるために実行するプログラム を指定する。 <XRoot>/lib/X11/xdm/chooser がデフォルト値である。 XDMCP アクセス制御 と Chooser のセクションを参照すること。

DisplayManager.DISPLAY.xrdb
    リソースを読み込むために使うプログラムを指定する。デフォルトでは xdm は <XRoot>/bin/xrdb を使用する。

DisplayManager.DISPLAY.cpp
    xrdb が使用する C プリプロセッサの名前を指定する。

DisplayManager.DISPLAY.setup
    Login ウィンドウを出す前に (root として) 実行するプログラムを指定する。 これを使って、Login ウィンドウの周りのスクリーンの外観を変えることや、 他のウィンドウを出す(例えば、ここで xconsole を実行できる)ことが できる。 デフォルトでは、プログラムは実行されない。ここで慣習的に使われている名 前は Xsetup である。 プログラムのセットアップ のセクションを参照すること。

DisplayManager.DISPLAY.startup
    これは認証手続きが成功した後に(root として)実行するプログラムを指定す る。デフォルトでは、プログラムは実行されない。ここで慣習的に使われてい る名前は Xstartup である。 プログラムの起動のセクションを参照すること。

DisplayManager.DISPLAY.session
    これはセッションが(root 以外の権限で)実行するプログラムを指定する。 デフォルトでは、<XRoot>/bin/xterm が実行される。 慣習的に使われる名前は Xsession である。 セッションプログラム のセクションを参照すること。

DisplayManager.DISPLAY.reset
    これはセッションが終了した後に(root として)実行するプログラムを指定す る。デフォルトでは、プログラムは実行されない。慣習的に使われる名前は Xreset である。 プログラムのリセット のセクションを参照すること。

DisplayManager.DISPLAY.openDelay

DisplayManager.DISPLAY.openRepeat

DisplayManager.DISPLAY.openTimeout

DisplayManager.DISPLAY.startAttempts
    これらの数値リソースは非妥協的なサーバをオープンするときの xdm の挙動を制御する。openDelay は継続的な試行の間の間隔(秒単位)、 openRepeat は試行する回数、openTimeout は実際にオープンを 試みる時の待ち時間の長さ (すなわち、 connect(2) システムコールに使う最大の時間)、startAttempts はこのサーバ上に 対して行う全ての過程の回数である。openRepeat 回の試行を行った後、 または特定の試行において openTimeout 秒経過した場合には、 xdm は終了してサーバを再起動し、再び接続を試みる。 この過程は startAttempts 回繰り返され、この場合にはディスプレイ が停止していて使用不能であるとされる。この挙動は恣意的に見えるが、経験 的に決められたものであり、ほとんどのシステムでうまく動作する。デフォル ト値は openDelay が 5, openRepeat が 5, openTimeout が 30, startAttempts が 4 である。

DisplayManager.DISPLAY.pingInterval

DisplayManager.DISPLAY.pingTimeout
    リモートのディスプレイが見えなくなった時を知るため、 xdm は時折、それらに X 接続と XSync コールを使って ping をかける。 pingInterval は(分単位で) ping を行う時間間隔を指定し、 pingTimeout はリクエストに対する端末の応答を待つ最大時間(分単位 で)を指定する。端末からの応答がない場合、セッションは壊れたと見なされ て終了する。デフォルトではどちらの値も 5 分である。管理しているホスト から隔離されることがある X 端末を頻繁に使用する場合には、この値を増や すとよいだろう。唯一の問題点は、端末が突発的に使用不能になった後でもセッ ションが存在し続けることである。 xdm はローカルディスプレイには ping をかけない。これは問題ないようであるが、 NFS サービスによるサーバがハングアップし、ping に応答しなくなる結果と してワークステーションのセッションが終了してしまった場合には好ましくな い。

DisplayManager.DISPLAY.terminateServer
    この真偽値のリソースはセッションが(リセットの代わりに)終了したときに X サーバが終了するかどうかを指定する。このオプションはサーバが稼働時間の 際限がない傾向があるときに使用し、サーバが動作する時間を制限することが できる。デフォルト値は ``false'' である。

DisplayManager.DISPLAY.userPath
    xdm はセッション用の PATH 環境変数にこの値を設定する。これはディレクトリを コロンで区切ったリストである。詳しい説明については sh(1) を参照すること。 ``:/bin:/usr/bin:/usr/X11R6/bin:/usr/ucb'' が通常の設定である。 デフォルト値は X の構築時に X システム設定ファイル内の DefaultUserPath 項目で指定する。

DisplayManager.DISPLAY.systemPath
    xdm は、起動スクリプトとリセットスクリプトで使う PATH 環境変数にこのリソー スの値をセットする。このリソースのデフォルト値は X の構築時にシステム 設定ファイルの DefaultSystemPath 項目で指定する。 普通は ``/etc:/bin:/usr/bin:/usr/X11R6/bin:/usr/ucb'' が使われる。 この項目から ``.'' を取り除いておく(訳注: パスにカレントディレクトリを 含めない)点には注意すること。これは root の仕事の良い練習である。これ は一般的なトロイの木馬によるシステム侵入計画を防ぐことができる。

DisplayManager.DISPLAY.systemShell
    xdm は、起動スクリプトとリセットスクリプトで使う SHELL 環境変数にこのリソー スの値をセットする。デフォルト値は /bin/sh である。

DisplayManager.DISPLAY.failsafeClient
    デフォルトのセッションの実行に失敗したとき、 xdm はこのプログラムに戻ろうとする。このプログラムは引き数なしで実行するが、 セッションを動作させるのと同じ環境変数を使って実行される( Session Program のセクションを参照すること)。 デフォルトでは <XRoot>/bin/xterm が使われる。

DisplayManager.DISPLAY.grabServer

DisplayManager.DISPLAY.grabTimeout
    セキュリティを向上させるために、 xdm はログイン名とパスワードを入力させるときにサーバとキーボードを占有する。 grabServer リソースは、ログイン名とパスワードの読み込みの間にサー バを保持するかどうかを指定する。``false'' の場合にはキーボードの占有が 成功した後にサーバの占有を離し、``true'' の場合にはセッションが始まる 直前までサーバは占有される。デフォルト値は ``false'' である。 grabTimeout リソースは xdm の占有が成功するまで待つ最長の間を指定する。他のクライアントが サーバを占有している場合やネットワークの遅延がとても大きいには占有が失 敗することがある。このリソースのデフォルト値は 3 秒である。 ユーザがディスプレイ上のよく似たウィンドウに騙されることがあるので、こ の値を高くするときには注意すること。占有に失敗すると xdm はサーバとセッションのプロセスを止め、(可能ならば)再スタートさせる。

DisplayManager.DISPLAY.authorize

DisplayManager.DISPLAY.authName
    authorize は、 ローカルサーバへの接続に対して xdm が認証を生成して使用するかどうかを制御する真偽値のリソースである。認証 を用いる場合、authName は使用する認証機構のリスト(区切りは空白文 字)である。 XDMCP 接続はサポートされている認証機構を動的に指定するので、この場合 authName は無視される。authorize がディスプレイ用に設定さ れているが認証ができない場合、ユーザは通常とは異なるメッセージがログイ ンウィジェットで表示される。デフォルトでは、authorize は``true'' である。authName は ``MIT-MAGIC-COOKIE-1'' または、 XDM-AUTHORIZATION-1 が利用可能であれば、 ``XDM-AUTHORIZATION-1 MIT-MAGIC-COOKIE-1'' である。

DisplayManager.DISPLAY.authFile
    このファイルは、サーバ の -auth コマンドラインオプションを使っ て xdm からサーバへ認証データを伝えるために使われる。 このファイルは、簡単に削除されてサーバのセキュリティ機構が無効化されて しまわないように、世界中から書き込むことはできないディレクトリに置くべ きである。 指定のない場合は、ファイル名は DisplayManager.authDir とディスプレイの 名から生成される。

DisplayManager.DISPLAY.authComplain
    これに ``false'' を設定すると、unsecureGreeting がログイン ウィンドウで使われなくなる。 認証ウィジェット のセクションを参照すること。 デフォルト値は ``true'' である。

DisplayManager.DISPLAY.resetSignal
    xdm がサーバをリセットするために送るシグナルの番号である。 サーバの制御 のセクションを参照すること。 デフォルト値は 1(SIGHUP)である。

DisplayManager.DISPLAY.termSignal
    xdm がサーバを終了するために送るシグナルの番号である。 サーバの制御 のセクションを参照すること。 デフォルト値は 15(SIGTERM)である。

DisplayManager.DISPLAY.resetForAuth
    サンプルサーバにおける元々の認証の実装では、サーバのリセット時に最初の 接続をチェックする代わりに認証ファイルを再読み込みを行う。 xdm はディスプレイに接続する直前に認証情報を生成するので、古いサーバは最新の 認証情報を取得することはできない。 このリソースを設定すると、 xdm はファイルを設定した後にサーバに SIGHUP を送る。これにより追加のサーバ はリセットされ、この際に新しい認証情報が読み込まれる。 デフォルト値は ``false'' であり、これは全ての MIT サーバで動作する。

DisplayManager.DISPLAY.userAuthDir
    xdm は通常のユーザ認証ファイル($HOME/.Xauthority)に書き込みを行えないとき、 このディレクトリ内に名前が重複しないファイルを作成し、XAUTHORITY 環境変数が作成したファイルを指すように設定する。デフォルトでは /tmp が使われる。

設定ファイル
まず xdm の設定ファイルの設定を行う。 全ての関連ファイルを置くディレクトリ (通常は <XRoot>/lib/X11/xdm, ここで <XRoot> は X11 をインストールしたディ レクトリのルートを指す)を作成する。次の例では <XRoot> の値として /usr/X11R6 を用いる。

以下は xdm-config という名前の使いやすい設定ファイルである:
	DisplayManager.servers:	/usr/X11R6/lib/X11/xdm/Xservers
	DisplayManager.errorLogFile:	/usr/X11R6/lib/X11/xdm/xdm-errors
	DisplayManager*resources:	/usr/X11R6/lib/X11/xdm/Xresources
	DisplayManager*startup:	/usr/X11R6/lib/X11/xdm/Xstartup
	DisplayManager*session:	/usr/X11R6/lib/X11/xdm/Xsession
	DisplayManager.pidFile:	/usr/X11R6/lib/X11/xdm/xdm-pid
	DisplayManager._0.authorize:	true
	DisplayManager*authorize:	false

このファイルは普通、他のファイルを参照している点に注意すること。また、 要素を句切る ``*'' を使って指定されるリソースもある点にも注意すること。 これらのリソースは、ディスプレイ名を ``*'' で置き換えることによって異 なるディスプレイに対しては重ならないようにすることができるが、通常はあ まり役に立たない。詳しい議論については、リソース セクショ ンを参照すること。

XDMCP のアクセス制御

DisplayManager.accessFile によって指定したデータベースファイルは、 XDMCP サービスを要求するディスプレイからのアクセスを xdm が制御をするために使う情報を与える。このファイルは 3 種類の項目が含ま れる: Direct と Broadcast の問い合わせに応答する制御項目、Indirect の 問い合わせに応答する制御項目、マクロ定義である。

Direct 項目の書式は単純であり、ディスプレイデバイスのホスト名と比較さ れるホスト名またはパターンである。パターンは1つ以上のメタ文字(`*' は 0 個以上の任意の文字に一致し、`?' は任意の一文字に一致する)を含むことに よってホスト名とは区別される。 項目がホスト名の場合は、全ての比較はネットワークアドレスを使って行われ るので、正しいネットワークアドレスに変換される任意の名前を使うことがで きる。 項目がパターンの場合は、カノニカルなホスト名だけが比較に使われるので、 エイリアスにマッチさせようとしないように注意すること。 ホスト名またはパターンの前に `!' 文字をつけると、その項目にマッチする ホストが除外される。

ホスト名もしくはパターンの Direct 問い合わせにだけに応答させるには、 オプションの ``NOBROADCAST'' キーワードを後に加えること。 これを使って、xdm サーバが Broadcast の問い合わせに基づくメニューに現 われないようにすることができる。

Indirect 項目もホスト名もしくはパターンを含むが、この項目の場合はその 後に間接的な問い合わせを送るホスト名またはマクロのリストが続けられる。

マクロ定義は、マクロ名とホスト名のリストとマクロを展開するその他のマク ロを含む。マクロとホスト名を区別するため、マクロ名は `%' 文字で始まる。 マクロはネストさせることができる。

Indirect 項目では、接続できるホストのメニューを出すために xdm に chooser を実行させるように指定することもできる。Chooser の セクションを参照すること。

特定のディスプレイホストへのアクセスを調査するときは、各項目は順番に調 べられ、最初にマッチする項目で応答が決められる。Direct と Broadcast 項 目は Indirect 項目を調べるときには無視される。その逆も同じである。

空白行は無視される。`#' はコメント区切りとして扱われ、その行の残りは無視 される。`\newline' は改行を無視されるようにし、間接ホストのリス トを複数行に渡って記述できるようにする。

Xaccess ファイルの例を示す:

#
# Xaccess - XDMCP アクセス制御ファイル
#
#
# Direct/Broadcast query entries
#
!xtra.lcs.mit.edu	# xtra に対する direct/broadcast サービスを禁止する
bambi.ogi.edu	# この特定のディスプレイからのアクセスを許可する
*.lcs.mit.edu	# LCS ドメインの任意のディスプレイからのアクセスを許可する
*.deshaw.com	NOBROADCAST	# direct アクセスのみを許可する
*.gw.com			# direct アクセスと broadcast アクセスを許可する
#
# Indirect 問い合わせ項目
#
%HOSTS	expo.lcs.mit.edu xenon.lcs.mit.edu \
	excess.lcs.mit.edu kanga.lcs.mit.edu
extract.lcs.mit.edu	xenon.lcs.mit.edu	# extract を xenon に接続させる
!xtra.lcs.mit.edu	dummy	#indirect アクセスを禁止する
*.lcs.mit.edu	%HOSTS	#他の全てのホストを選択させる

CHOOSER

Broadcast または Indirect 問い合わせを使ってホストメニューを出さない X 端末に対しては、chooser プログラムがメニューを出す。 Xaccess ファイルの中で、Indirect ホストリスト内の最初の項目に ``CHOOSER'' を指定すること。chooser は Query リクエストをリスト 中の残りのホスト名それぞれに送り、応答した全てのホストをメニューに出す。

リストで ``BROADCAST'' という語を使うこともでき、この場合には代わりに chooser は Broadcast を送り、応答した全てのホストをメニューに出 す。OS によっては UDP パケットをブロードキャストできず、この機能が動作 しない場合がある点に注意すること。

chooser を用いる場合の Xaccess ファイルの例を示す:
extract.lcs.mit.edu	CHOOSER %HOSTS	#これらのホストのメニューを出す
xtra.lcs.mit.edu	CHOOSER BROADCAST	#全てのホストのメニューを出す

chooser を使用するプログラムは、 DisplayManager.DISPLAY.chooser リソースによって指定 される。この段階をより柔軟にするため、chooser をシェルスクリプトにする こともできる。 ここで、chooser はセッションマネージャであり、子プロセスの xdm の代わりにディスプレイを管理する。

このプログラム用のリソースは、 DisplayManager.DISPLAY.resources にファイル名を記述 することができる。

ユーザがホストを選択するとき、chooser は選択されたホスト(これは 親である xdm が取得する)を出力して終了する。 xdm は X サーバへの接続を閉じ、 サーバはリセットを行い、別の Indirect XDMCP リクエストを送る。 xdm はユーザに選択されたホストを (DisplayManager.choiceTimeout 秒間)記憶する。この選択されたホス トはそのディスプレイでセッションを開始する。

ローカルサーバ指定

DisplayManager.servers リソースはサーバの指定を与える。あるいは、 スラッシュ(/)で始まる値の場合には、サーバを指定しているファイルの名前 を1行に1つずつ指定する。

それぞれの指定は、常に管理されており XDMCP を使っていないディスプレイ を示す。 この方法は普通はローカルサーバだけで使われる。このリソースまたはリソー スで指定したファイルが空の場合は、xdm は XDMCP サービスだけを提 供する。

それぞれの指定は最低 3 個の部分から構成されている: これはディスプレイ 名、ディスプレイクラス、ディスプレイタイプであり、(ローカルサーバに対 しては) サーバを起動するコマンドラインである。番号0のローカルディスプ レイに対する典型的な項目は次のようになる:
  :0 Digital-QV local /usr/X11R6/bin/X :0
ディスプレイタイプは次のようになる:
local		ローカルディスプレイ: xdm はサーバを起動しなければならない
foreign		リモートディスプレイ: xdm は動作しているサーバに対する X 接続をオープンする

ディスプレイ名は、-display オプションで X プログラムに渡せるよ うなものでなければならない。この文字列はディスプレイ固有のリソース名を 生成するために使われるので、その名前とマッチするように注意すること(例 えば、他のリソースが ``DisplayManager._0.session'' のように設定されて いる場合には、``localhost:0 Sun-CG3 local /usr/X11R6/bin/X :0'' ではな く ``:0 Sun-CG3 local /usr/X11R6/bin/X :0'' を使用すること)。 ディスプレイクラス部分も、リソースのタイプのようにディスプレイ固有のリ ソースで使われる。これは、似たようなディスプレイがたくさんあり(X 端末 を並べているような場合)これらにまとめてリソースをセットしたいような場 合に便利である。XDMCP を使うときはディスプレイにはディスプレイクラスを 指定しなければならないので、個別の X 端末のマニュアルにはそのデバイス に対するディスプレイクラスが記述されているはずである。これが記述されて いなければ、 xdm をデバッグモードで起動して、そのデバイスに対して生成されるリソース文字 列を見ること。これにはクラス文字列が含まれているはずである。

xdm はセッションを開始するときに、サーバに対する認証データを設定 する。ローカルサーバに対しては、xdm はサーバのコマンドラインで ``-auth filename'' を渡し、認証データの場所を示す。 XDMCP サーバに対しては、xdm は Accept XDMCP リクエストを経 由して認証データをサーバに渡す。

リソースファイル
Xresources ファイルは xrdb コマンドを使って、リソースデータベースとしてディスプレイに読み込まれる。 認証ウィジェットは起動前にこのデータベースを読み込むので、このファイル は認証ウィジェット用のパラメータも含んでよい:
	xlogin*login.translations: #override\
		Ctrl<Key>R: abort-display()\n\
		<Key>F1: set-session-argument(failsafe) finish-field()\n\
		<Key>Return: set-session-argument() finish-field()
	xlogin*borderWidth: 3
	xlogin*greeting: CLIENTHOST
	#ifdef COLOR
	xlogin*greetColor: CadetBlue
	xlogin*failColor: red
	#endif

トランスレーションの項目に注意すること。ここでは、ユーザがデフォルトセッ ションから抜け出せる(また、ここで起こる問題を避ける)ようにするため、ウィ ジェットのトランスレーションをいくつか新たに指定している。 #override を指定しないと標準のトランスレーションが消去され、新しい値に 置き換えられてしまう。デフォルトのトランスレーションも非常に便利なので (例えば、通常の文字入力に応答する ``<Key>: insert-char ()'' 等)、この ような置き換えはあまり好ましい結果ではない。

このファイルは設定プログラムと chooser に対するリソースも含んで よい。

設定プログラム
Xsetup ファイルはサーバがリセットされた後、かつ Login ウィンドウ が出る前に起動する。 このファイルは普通はにシェルスクリプトである。 このファイルはルート権限で実行されるので、セキュリティには注意が必要で ある。 このファイルには、ルートウィンドウの背景を変えたり、Login ウィジェット と一緒にスクリーンに表示する他のウィンドウを呼び出すための記述を行う。

DisplayManager.exportList による指定に加え、次の環境変数が渡され る:
	DISPLAY	関連するディスプレイ名
	PATH	DisplayManager.DISPLAY.systemPath の値
	SHELL	DisplayManager.DISPLAY.systemShell の値
	XAUTHORITY	認証ファイルがセットされる

xdm はキーボードを占有するので、他のウィンドウはキーボード入力を 受け付けない点に注意すること。しかし、マウスで操作することはできる。 セキュリティホールの可能性に注意すること。 DisplayManager.DISPLAY.grabServer がセットされている 場合は、Xsetup はディスプレイに全く接続できない。 このプログラム用のリソースは DisplayManager.DISPLAY.resources が指すファイルに記 述することができる。

以下に Xsetup スクリプトの例を挙げる:
	#!/bin/sh
	# Xsetup_0 - ワークステーション用の設定スクリプト
	xcmsdb < /usr/X11R6/lib/monitors/alex.0
	xconsole -geometry 480x130-0-0 -notify -verbose -exitOnFail &

認証ウィジェット
認証ウィジェットはユーザ名/パスワードの組をキーボードから読み込む。考 えられるようなパラメータのほとんど全てはリソースで制御できる。このウィ ジェット用のリソースは DisplayManager.DISPLAY.resources が指すファイルに記 述すること。全てのリソースにはちゃんとしたデフォルト値が設定されている ので、これらに値を指定する必要はない。

xlogin.Login.width, xlogin.Login.height, xlogin.Login.x, xlogin.Login.y
    通常、Login ウィジェットのジオメトリは自動的に計算される。この位置を変 えたい場合には、これらのリソースで指定すること。

xlogin.Login.foreground
    入力したユーザ名の表示に使う色。

xlogin.Login.font
    入力したユーザ名の表示に使うフォント。

xlogin.Login.greeting
    このウィンドウを識別するための文字列。 デフォルト値は ``X Window System'' である。

xlogin.Login.unsecureGreeting
    X の認証がこのディスプレイ用の設定ファイルで要求されているが、全く使用 されていないとき、標準のグリーティングはこのグリーティングに置き換えら れる。デフォルト値は ``This is an unsecure session'' である。

xlogin.Login.greetFont
    グリーティングの表示に用いるフォント。

xlogin.Login.greetColor
    グリーティングの表示に用いる色。

xlogin.Login.namePrompt
    ユーザ名のプロンプトに表示する文字列。 xrdb はリソースの値の末尾の空白文字を取り除き、プロンプトの末尾に空白を追加 し(普通はこれで良い)、バックスラッシュでエスケープした空白を追加する。 デフォルト値は ``Login: '' である。

xlogin.Login.passwdPrompt
    パスワードのプロンプトに表示する文字列。 デフォルト値は ``Password: '' である。

xlogin.Login.promptFont
    両方のプロンプトの表示に用いるフォント。

xlogin.Login.promptColor
    両方のプロンプトの表示に用いる色。

xlogin.Login.fail
    認証が失敗したときに表示するメッセージ。 デフォルト値は ``Login incorrect'' である。

xlogin.Login.failFont
    認証失敗のメッセージの表示に用いるフォント。

xlogin.Login.failColor
    認証失敗のメッセージの表示に用いる色。

xlogin.Login.failTimeout
    認証失敗のメッセージを表示する秒数。 デフォルト値は 30 秒である。

xlogin.Login.translations
    ログインウィジェットで使うトランスレーションを指定する。詳しい説明につ いては、X ツールキットの文書を参照すること。デフォルトのトランスレーショ ンテーブルを以下に示す:
    	Ctrl<Key>H:	delete-previous-character() \n\
    	Ctrl<Key>D:	delete-character() \n\
    	Ctrl<Key>B:	move-backward-character() \n\
    	Ctrl<Key>F:	move-forward-character() \n\
    	Ctrl<Key>A:	move-to-begining() \n\
    	Ctrl<Key>E:	move-to-end() \n\
    	Ctrl<Key>K:	erase-to-end-of-line() \n\
    	Ctrl<Key>U:	erase-line() \n\
    	Ctrl<Key>X:	erase-line() \n\
    	Ctrl<Key>C:	restart-session() \n\
    	Ctrl<Key>\\:	abort-session() \n\
    	<Key>BackSpace:	delete-previous-character() \n\
    	<Key>Delete:	delete-previous-character() \n\
    	<Key>Return:	finish-field() \n\
    	<Key>:	insert-char() \

xlogin.Login.allowNullPasswd
    このリソースを ``true'' に設定すると、アカウントがパスワードを全く必要 としなければ、パスワードが一致しない場合を除いて認証を成功とする。 デフォルト値は ``false'' であり、パスワードが割り当てられているユーザ だけがログインできる。

このウィジェットがサポートしているアクションを以下に挙げる:

delete-previous-character
    カーソルの前の文字を消去する。

delete-character
    カーソルの次の文字を消去する。

move-backward-character
    カーソルを後ろに動かす。

move-forward-character
    カーソルを前に動かす。

move-to-begining
    (スペルを間違えた名前がアクションについています。すみません。) 編集可能なテキストの初めまでカーソルを移動させる。

move-to-end
    編集可能なテキストの最後までカーソルを移動させる。

erase-to-end-of-line
    カーソルの後ろのテキストをすべて消去する。

erase-line
    すべてのテキストを消去する。

finish-field
    カーソルがログイン名フィールドにある場合、パスワードフィールドに進む。 パスワードフィールドにある場合は、現在のログイン名とパスワードの組をチェッ クする。ログイン名とパスワードの組が有効であれば、xdm はセッショ ンを開始する。この組が有効でなければ、認証失敗のメッセージを表示してプ ロンプトを再び表示する。

abort-session
    サーバを終了し再スタートさせる。

abort-display
    サーバを終了して使用不能にする。このアクションはデフォルトの設定ではア クセスできないようになっている。 システムコンソール上の xdm を停止させる理由はいくつかある。 この理由には、システムのシャットダウンをしたいとき、xdmshell を 使用しているとき、他のタイプのサーバを起動するため、一般にコンソールに アクセスするため等がある。 xdm に SIGHUP を送るとディスプレイは再スタートする。 XDM の制御セクションを参照すること。

restart-session
    X サーバをリセットして、新しいセッションを開始する。このアクションは変 更したリソースをテストしたい場合、あるいはシステムメッセージで画面が上 書きされてしまった場合に使うことができる。

insert-char
    入力した文字を挿入する。

set-session-argument
    セッション開始時にセッションに渡される1語の引き数を指定する。 セッションプログラム セクションを参照すること。

allow-all-access
    サーバのアクセス制御を無効にする。これは xdm が .Xauthority ファイルを生成できなかった場合に使用することができる。 これを使用するときは十分注意すること。これを行う前にはネットワークから マシンを切り放しておいた方が良いだろう。

起動プログラム

Xstartup プログラムはユーザがログインしたときに root 権限で実行 される。 これは普通はシェルスクリプトである。 Xstartup は root 権限で実行するので、Xstartup についてはセ キュリティに十分注意すること。このファイルには /etc/utmp にエン トリーを追加するコマンドやファイルサーバからユーザのホームディレクトリ をマウントするコマンド、ログインが許可されない場合にセッションを中止さ せるコマンド等を記述する。

DisplayManager.exportList による指定に加え、以下の環境変数を渡す ことができる:
	DISPLAY	関連するディスプレイ名
	HOME	ユーザの最初の作業ディレクトリ
	LOGNAME	ユーザ名
	USER	ユーザ名
	PATH	DisplayManager.DISPLAY.systemPath の値
	SHELL	DisplayManager.DISPLAY.systemShell の値
	XAUTHORITY	認証ファイルをセットすることができる

スクリプトへは引き数は全く渡されない。 xdm はユーザセッションを開始する前に、このスクリプトが終了するのを待つ。 このスクリプトの終了値がゼロでない場合、 xdm はセッションを続行を行わず、他の認証サイクルを開始する。

ここで示すサンプルの Xstartup ファイルは、/etc/nologin ファ イルが存在する間はログインを行わせない。 これは完全な例ではなく、単に利用できる機能のデモである。

以下にサンプルの Xstartup を示す;
	#!/bin/sh
	#
	# Xstartup
	#
	# このプログラムはユーザの認証後、root 権限で実行される
	#
	if [ -f /etc/nologin ]; then
		xmessage -file /etc/nologin -timeout 30 -center
		exit 1
	fi
	sessreg -a -l $DISPLAY -x /usr/X11R6/lib/xdm/Xservers $LOGNAME
	/usr/X11R6/lib/xdm/GiveConsole
	exit 0

セッションプログラム

Xsession プログラムはユーザセッションとして実行されるコマンドで ある。 これは認証されたユーザの権限で実行される。

DisplayManager.exportList の指定に加え、次の環境変数が渡される:
	DISPLAY	関連するディスプレイ名
	HOME	ユーザの初期作業ディレクトリ
	LOGNAME	ユーザ名
	USER	ユーザ名
	PATH	DisplayManager.DISPLAY.userPath の値
	SHELL	ユーザのデフォルトのシェル(getpwnam で取得する)
	XAUTHORITY	標準でない認証ファイルをセットすることができる
	KRB5CCNAME	Kerberos 証明書のキャッシュ名をセットすることができる

X を普通にインストールした場合には、Xsession は $HOME にある .xsession を参照する。このファイルには、各ユーザがセッションと して利用するコマンドが記述される。 Xsession はまた、ユーザ指定のセッションが存在しない場合に実行す るシステム標準のセッションも実装している。 通常の使用方法 セクションを参照すること。

`set-session-argument' アクションを使用する認証ウィジェットから、この プログラムへ引き数を渡すことができる。これを用いて、違う様式のセッショ ンを選択することができる。この機能の便利な使い方の1つは、ユーザがセッ ションに失敗したときに通常のセッションから脱出できるようにすることであ る。これにより、ユーザが .xsession の設定に失敗した場合に、管理 者の仲介がなくても自分の .xsession を修正することができる。 次の例でこの機能を示す:

この例題は「フェールセーフ」モードを認識する。 このモードは fIXresources ファイルのトランスレーションで指定し、通 常のセッションから抜けるために使われる。この例題では .xsession ファイ ルが実行可能であることも必要であるので、このファイルが使用おうとするシェ ルを推定する必要はない。
	#!/bin/sh
	#
	# Xsession
	#
	# これは、ディスプレイマネージャに対するクラアント
	# として実行されるプログラムである。

	case $# in
	1)
		case $1 in
		failsafe)
			exec xterm -geometry 80x24-0-0
			;;
		esac
	esac

	startup=$HOME/.xsession
	resources=$HOME/.Xresources

	if [ -f "$startup" ]; then
		exec "$startup"
	else
		if [ -f "$resources" ]; then
			xrdb -load "$resources"
		fi
		twm &
		xman -geometry +10-10 &
		exec xterm -geometry 80x24+10+10 -ls
	fi

ユーザの .xsession ファイルはこの例のようになっているだろう。 このファイルには実行属性を持たせる必要があるのを忘れないこと。
	#! /bin/csh
	# .cshrc を実行させて  $PATH をセットさせるため、前の行で -f
	# オプションは指定しないこと
	twm &
	xrdb -merge "$HOME/.Xresources"
	emacs -geometry +0+50 &
	xbiff -geometry -430+5 &
	xterm -geometry -0+50 -ls

リセットプログラム

Xstartup と対になる Xreset スクリプトは、ユーザセッション が終了した後に実行される。このファイルは root 権限で実行され、 Xstartup で実行されたコマンドの効果を打ち消すようなコマンドや、 /etc/utmp からの項目の削除、ファイルサーバからのディレクトリのア ンマウントを行うコマンドを含む。Xstartup に渡された環境変数は Xreset にも渡される。

Xreset スクリプトの例:
	#!/bin/sh
	#
	# Xreset
	#
	# このプログラムはセッションが終わった後に root 権限で実行される
	#
	sessreg -d -l $DISPLAY -x /usr/X11R6/lib/xdm/Xservers $LOGNAME
	/usr/X11R6/lib/xdm/TakeConsole
	exit 0

サーバの制御
xdm は POSIX シグナルを用いてローカルサーバを制御する。SIGHUP では、サーバ がリセットされ、すべてのクライアントの接続のクローズや他の後処理が行わ れることが期待される。SIGTERM ではサーバが終了することが期待される。 これらのシグナルが期待される動作をしない場合は、 DisplayManager.DISPLAY.resetSignal, DisplayManager.DISPLAY.termSignal リソースで他のシグ ナルを設定することができる。

XDMCP を使わないリモート端末を制御するため、 xdm はディスプレイのウィンドウの階層構造を検索し、次のセッションのために端 末を片づけるために KillClient プロトコルリクエストを用いる。これは実際 には全てのクライアントを破棄するのではなく、ウィンドウを生成したクライ アントだけが通知を受ける。XDMCP はより確実に動作する機構を提供している。 xdm が最初の接続を閉じたとき、そのセッションは終了し、端末には他のすべての 接続を閉じることが要求される。

XDM の制御

xdm は二つのシグナル SIGHUP と SIGTERM に応答する。SIGHUP を送ると xdm は設定ファイル、アクセス制御ファイルとサーバファイルを再読み込みする。 サーバファイルについては、項目の追加や削除があれば通知がなされる。新し い項目が追加されたら、 xdm は対応するディスプレイのセッションを開始する。削除された項目は即座に無 効にされる。これは通知無しに進行中のセッションが終了し、新しいセッショ ンが開始されるということである。

SIGTERM を送ると、 xdm は進行中のすべてのセッションを終了させ、自身も終了する。これはシステム をシャットダウンするときに使用する。

xdm はコマンドライン引き数リストを適宜修正して、 ps(1) のために各種サブプロセスに印をつけようとする。 xdm はこの作業のために追加の割り当てを行うことができないので、 xdm を十分な長いコマンドライン(フルパス名で十分だろう)を使って起動するとよ い。 ディスプレイを提供しているそれぞれのプロセスには、 -display の印が付けられる。

追加のローカルディスプレイ

ローカルディスプレイを追加するには、Xservers ファイルに一行追加 する。 (ローカルサーバの指定セクションを参照すること。)

xdm-config 内のディスプレイ固有のリソースを調べ(例えば、 DisplayManager._0.authorize)、どのリソースを新しいディスプレイ用 にコピーするか考えること。 デフォルトの xdm-config には :0 と :1 に対する適切な 指定がある。

他の可能性

4.3 init オプションを使い、xdm で同時に1つのセッションを実 行することができる。また、コマンドラインでサーバを指定することにより、 他の適切なデーモンを実行することができる。
	xdm -server ":0 SUN-3/60CG4 local /usr/X11R6/bin/X :0"

あるいは、ファイルサーバと何台もの X 端末があるものとする。この場合の 設定ファイルは、Xservers ファイルが次のようになる点以外は前述の 例と同じである:
	extol:0 VISUAL-19 foreign
	exalt:0 NCD-19 foreign
	explode:0 NCR-TOWERVIEW3000 foreign

これは、 xdm をこれらの3台の端末全てのセッションを管理することを指示する。 init(8) と同じようにシグナルを使ってこれらの端末を有効/無効にする方法について は、XDM の制御 セクションを参照すること。

制限事項
xdm と他のウィンドウシステムとの共存はあまりうまくいかない。同じハードウェ アで複数のウィンドウシステムを使う場合には、 xinit を使う方が良いだろう。

ファイル

<XRoot>/lib/X11/xdm/xdm-config
    デフォルトの設定ファイル

$HOME/.Xauthority
    xdm がクライアントに対するキーの格納、取得を行うユーザ認証ファイル

<XRoot>/lib/X11/xdm/chooser
    デフォルトの chooser

<XRoot>/bin/xrdb
    デフォルトのリソースデータベース読み込みプログラム

<XRoot>/bin/X
    デフォルトのサーバ

<XRoot>/bin/xterm
    デフォルトのセッションプログラムとフェールセーフクライアント

<XRoot>/lib/X11/xdm/A<display>-<suffix>
    認証ファイルのデフォルトの位置

/tmp/K5C<display>
    Kerberos の証明書キャッシュ

注意: <XRoot> は X11 のインストールツリーのルートディレクトリを示す。

関連項目
X(1), xinit(1), xauth(1), Xsecurity(1), sessreg(1), Xserver(1),
X Display Manager Control Protocol

著者
Keith Packard, MIT X Consortium