xdm - X
ディスプレイマネージャ
(XDMCP,
ホスト選択機能付き)
xdm [
-config configuration_file ] [
-nodaemon ] [
-debug debug_level ] [
-error error_log_file ] [
-resources resource_file ] [
-server server_entry
] [
-session session_program ]
xdm
はローカルホストやリモートホストにある
X
のいろいろなディスプレイの集
合を管理する。
xdm
の設計は、X
端末の必要性と The Open Group
標準の 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
に一般のデーモンの挙動をさせない。デーモンの挙動とは、
ファイルデスクリプタを全て閉じ、自分自身を制御端末から切り放し、
さらに起動時に自分自身をバックグラウンドで動作させることである。
- -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.willing
- このリソースは、XDMCP
の BroadcastQuery
を受信した時に root
権限で実行
されるプログラムを指定し、このホストはXDMCP
のディスプレイ管理を提供す
るように設定される。このプログラムの出力は
chooser
のウィンドウに表示
される。プログラムが指定されていない場合は、文字列
Willing to manage
が送られる。
- 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 - ワークステーション 1 台用の設定スクリプト
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.allowRootLogin
- このリソースに
``false''
が設定されてると、root
(およびユーザ ID が 0
である全てのユーザ)は直接ログインできない。
デフォルト値は ``true''
である。
- 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
ファイルを生成できなかった場合に使用することができる。
これを使用するときは十分注意すること。これを行う前にはネットワークから
マシンを切り放しておいた方が良いだろう。
一部のシステム(OpenBSD)では、ユーザのシェルが
/etc/shells
に書かれていないと xdm
経由でのログインは許可されない。
パスワードとアカウントの有効期限も通常通りに適用される。
起動プログラム¶
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 を修正 できる。
次の例でこの機能を示す:
これは特殊な「フェールセーフ」モードを使えるようにする例題である。
このモードは
Xresources
ファイルのトランスレーションで指定し、
通常のセッションからエスケープできるようにする。この例題では
.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(7),
xinit(1),
xauth(1),
Xsecurity(7),
sessreg(1),
Xserver(1),
X Display Manager Control Protocol
Keith Packard, MIT X Consortium