ログイン・マネージャは、ログイン画面の表示、ユーザの認証、ユーザのセッションの起動を行うサーバです。グラフィカル・ログインは、従来のビットマップ・ディスプレイ用のキャラクタ・モードでのログインに代わる、魅力的な方法です。ログイン・サーバが管理するログイン画面は、ログイン・サーバのディスプレイに直接表示することも、ネットワーク上の X 端末またはワークステーションのディスプレイに表示することもできます。
ログイン・サーバを起動、停止、カスタマイズする場合は、必ず root ユーザで行なってください。
この章では、次の内容について説明します。
ログイン・サーバには、次の機能があります。
指定しなければビットマップ・ディスプレイに、指定すればローカルなビットマップ・ディスプレイおよびネットワーク上のビットマップ・ディスプレイにログイン画面を表示できます。
キャラクタ・コンソール・ディスプレイに直接接続できます。
ネットワーク上の他のログイン・サーバからユーザがログイン画面を表示できるようにする選択画面を表示できます。
ログイン・サーバへのアクセスをコントロールできます。
従来のキャラクタ・モード・ログインにアクセスできます。
ログイン・マネージャが管理するディスプレイは、ログイン・マネージャ・サーバに接続することも、ネットワーク上の X 端末またはワークステーションに接続することもできます。ローカル・ディスプレイでは、ログイン・サーバが自動的に X サーバを起動し、ログイン画面を表示します。X 端末などのネットワーク・ディスプレイでは、ログイン・サーバは X ディスプレイ・マネージャ・プロトコル (XDMCP) 1.0 をサポートします。このプロトコルにより、ディスプレイは、ログイン・サーバがディスプレイにログイン画面を表示するよう要求できます。
ログイン・サーバは通常、システムのブート時に起動されます。コマンド行からもログイン・サーバを起動できます。
システムのブート時にログイン・サーバが起動するよう設定するには、次のように入力します。
/usr/dt/bin/dtconfig -e
リブート時に自動的にログイン・サーバが起動します。
デスクトップ構成ユーティリティ dtconfig の詳細は、付録 A 「dtconfig(1) のマニュアルページ」 を参照してください。この付録には、dtconfig(1) のマニュアルページがあります。
一時的に構成をテストするためにログイン・サーバをコマンド行から起動できますが、通常はシステムのブート時にログイン・サーバを起動してください。
図 1-1 にログイン・サーバの構成を示します。
デフォルトでは、ログイン・サーバはプロセス ID を /var/dt/Xpid に格納します。
これを変更するため、Dtlogin.pidFile リソースを Xconfig ファイルに設定できます。変更した場合は、ログイン・サーバの起動時に指定したディレクトリが存在しなければなりません。
Xconfig を変更するには、Xconfig を /usr/dt/config から /etc/dt/config へコピーします。/etc/dt/config/Xconfig を変更した後で、次のように入力し、Xconfig をもう一度読み込むようログイン・サーバに通知します。
/usr/dt/bin/dtconfig -reset
上記は、コマンド kill -HUP login_server_process_ID を発行します。
たとえば、ログイン・サーバのプロセス ID を /var/myservers/Dtpid に格納するには、Xconfig ファイルで次のように設定してください。
Dtlogin.pidFile: /var/myservers/Dtpid
ログイン・サーバを再起動すると、ログイン・サーバはプロセス ID を /var/myservers/Dtpid に格納します。/var/myservers ディレクトリは、ログイン・サーバの起動時に存在しなければなりません。
起動時、ログイン・サーバは Xservers ファイルを検査して、X サーバを起動する必要があるかどうか、ログイン画面をローカル・ディスプレイまたはネットワーク・ディスプレイに表示するかどうかとその方法を決定します。
Xservers を変更するには、Xservers を /usr/dt/config から /etc/dt/config へコピーします。/etc/dt/config/Xservers を変更した後で、次のように入力し、Xservers をもう一度読み込むようログイン・サーバに通知します。
/usr/dt/bin/dtconfig -reset
上記は、コマンド kill -HUP login_server_process_ID を発行します。
display_name display_class display_type X_server_command
display_name - X サーバに接続するときに使用する接続名 (下記の例では :0) をログイン・サーバに通知します。* (アスタリスク) の値は、host name:0 に展開されます。指定した番号は、X_server_command 接続番号で指定した番号と一致しなければなりません。
display_class - このディスプレイに固有のリソース (以下の例では Local) を識別します。
display_type - ディスプレイがローカル・ディスプレイとネットワーク・ディスプレイのどちらであるかと、ログイン画面の [コマンド行ログイン] オプションを管理する方法 (以下の例では local@console) を、ログイン・サーバに通知します。
X_server_command - X サーバの起動にログイン・サーバが使用するコマンド行、接続番号、他のオプション (下記の例では /usr/bin/X11/X: 0) を識別します。指定した接続番号は display_name で指定した番号と一致しなければなりません。
デフォルトの Xservers 行は、次のようになります。
:0 Local local@console /usr/bin/X11/X :0
ログイン・サーバ・システムにビットマップ・ディスプレイがない場合は、# (ポンド記号) を使用してローカル・ディスプレイの Xservers を注釈行にすることにより、ローカル・ディスプレイなしでログイン・サーバを実行してください。
# :0 Local local@console /usr/bin/X11/X :0
ログイン・サーバが起動すると、ネットワーク・ディスプレイからの要求を待っているバックグラウンドで実行されます。
ログイン画面で [コマンド行ログイン] をユーザが選択すると、ログイン・サーバが一時的に X サーバを終了させ、ビットマップ・ディスプレイ端末デバイスで実行中の、従来のコマンド行ログインにアクセスできるようになります。ユーザがログインしてからログアウトした後、または指定したタイムアウト時間が経過した後、ログイン・サーバは X サーバを再起動します。
ネットワーク・ディスプレイでは、[コマンド行ログイン] オプションは使用できません。
display_type は、コマンド行ログインの動作をコントロールします。display_type の書式は次のとおりです。
local@display_terminal_device を指定すると、ログイン・サーバは、X サーバおよび /dev/display_terminal_device が同じ物理デバイス上に存在し、コマンド行ログイン (通常は getty) がそのデバイスで実行されているものと見なします。ユーザが [コマンド行ログイン] を選択すると、X サーバが終了し、/dev/display_terminal_device で実行されているコマンド行ログイン (getty) にアクセスできるようになります。
ディスプレイの [コマンド行ログイン] オプションを使用しないようにするには、display_terminal_device に none を指定します。デフォルトの display_terminal_device は console です。local を指定すると、display_terminal_device はデフォルトの console になります。foreign を指定すると、[コマンド行ログイン] オプションは使用できなくなります。
ログイン・サーバをコマンド行から起動した場合は、ローカル・ディスプレイの [コマンド行ログイン] オプションは使用できません。
ログイン・サーバ・システムに、直接接続されているキャラクタ・ディスプレイがコンソールとして備えられている場合、display_terminal_device に none を設定して、ビットマップ・ディスプレイ・ログイン画面の [コマンド行ログイン] オプションを使用できないようにすることもできます。
コマンド行ログイン (getty) を、キャラクタ・ディスプレイ・コンソールおよびビットマップ・ディスプレイの両方で実行している場合、display_terminal_device をビットマップ・ディスプレイのコマンド行ログイン (getty) デバイスに変更できます。
たとえば、ビットマップ・ディスプレイ・コマンド行ログイン (getty) がデバイス /dev/tty01 にある場合、display_type を local@tty01 に変更します。
ログイン・サーバは、ネットワーク・ディスプレイからの要求でログイン画面を特定のディスプレイに表示できます。ネットワーク・ディスプレイは通常 X 端末ですが、ワークステーションの場合もあります。
ネットワーク・ディスプレイからの要求を管理するため、ログイン・サーバは X ディスプレイ・マネージャ・プロトコル (XDMCP) 1.0 をサポートします。このプロトコルは、ログイン・サーバがネットワーク・ディスプレイからの要求を受け入れたり拒否したりできるようにします。ほとんどの X 端末に XDMCP が組み込まれています。
XDMCP 直接モード (照会モード) を使用するように X 端末を構成する場合は、ログイン・サーバのホスト名を X 端末に通知します。X 端末を起動すると、自動的にログイン・サーバに通信し、ログイン・サーバが X 端末にログイン画面を表示します。XDMCP 直接モード用に X 端末を構成する方法については、X 端末のマニュアルを参照してください。
ほとんどの X サーバは -query オプションもサポートしています。このモードでは、X サーバは X 端末のように動作して、ログイン・サーバ・ホストに直接通信し、X サーバにログイン画面を表示するよう要求します。たとえば、X サーバをワークステーション bridget のビットマップ・ディスプレイで起動すると、ログイン・サーバ anita が X サーバにログイン画面を表示します。
X -query anita
XDMCP 間接モードを使用するように X 端末を構成する場合は、ログイン・サーバのホスト名を X 端末に通知します。X 端末を起動すると、ログイン・サーバに通信し、ログイン・サーバが、ネットワークの他のログイン・サーバ・ホストのリストを選択画面で表示します。このリストからユーザはホストを選択できます。そのホストがユーザの X 端末にログイン画面を表示します。XDMCP 間接モード用に X 端末を構成する方法については、X 端末のマニュアルを参照してください。
直接モード同様、ほとんどの X サーバが -indirect オプションをサポートしています。このオプションを指定すると X サーバは XDMCP 間接モードでログイン・サーバと通信します。
古い X 端末は XDMCP をサポートしていない可能性があります。このような X 端末にログイン・サーバがログイン画面を表示するには、Xservers ファイルに X 端末名を記入します。
ディスプレイはネットワーク上にあるので、display_name はホスト名を名前の一部として取り込みます。display class は、特定のクラスの X 端末に固有のリソースを指定するのに使用します (X 端末のマニュアルに、X 端末のディスプレイ・クラスが記載されています)。foreign の display_type はログイン・サーバに、ログイン・サーバ自身を起動するのではなく、既存の X サーバに接続するよう通知します。この場合、X_server_command は指定されません。
次に示す Xservers ファイルの行は、ruby と wolfie という 2 つの非 XDMCP X 端末に、ログイン・サーバがログイン画面を表示します。
ruby.blackdog.com:0 AcmeXsta foreign wolfie:0 PandaCo foreign
デフォルトでは、ログイン・サーバ・ホストにアクセスするネットワークのホストはすべて、ログイン画面を表示するよう要求できます。Xaccess ファイルを変更すると、ログイン・サーバへのアクセスを制限できます。
Xaccess を変更するには、Xaccess を /usr/dt/config から /etc/dt/config へコピーします。/etc/dt/config/Xaccess を変更したら、次のように入力して Xaccess をもう一度読み込むようログイン・サーバに通知します。
/usr/dt/bin/dtconfig -reset
上記は、コマンド kill -HUP login_server_process_ID を発行します。
ホストが XDMCP 直接モードによってログイン・サーバに接続しようとすると、ホスト名が Xaccess エントリと比較されて、ホストがログイン・サーバにアクセスできるかどうか決定されます。Xaccess の各エントリは、ワイルドカード * (アスタリスク) と ? (クエスチョン・マーク) を含むホスト名です。* (アスタリスク) は 0 以上の文字に、? (クエスチョン・マーク) は任意の 1 文字に一致します。! (エクスクラメーション・マーク) がエントリの前に付くとアクセスできません。
たとえば、Xaccess に次の 3 つのエントリが含まれているとします。
amazon.waterloo.com *.dept5.waterloo.com !*
1 番目のエントリはホスト amazon.waterloo.com から、2 番目のエントリはフルドメイン名が dept5.waterloo.com で終わっている任意のホストからログイン・サーバがアクセスできるようにし、3 番目のエントリはいずれのホストからもアクセスできないようにします。
ホストが XDMCP 間接モードによってログイン・サーバに接続しようとすると、ホスト名が Xaccess エントリと比較されて、ホストがログイン・サーバにアクセスできるかどうか決定されます。Xaccess の各エントリは XDMCP 直接モードと同様で、ワイルドカードを含んでいますが、各エントリに CHOOSER 文字列がマークされているところが異なります。次に例を示します。
amazon.waterloo.com CHOOSER BROADCAST *.dept5.waterloo.com CHOOSER BROADCAST !* CHOOSER BROADCAST
1 番目のエントリはホスト amazon.waterloo.com から、2 番目のエントリはフルドメイン名が dept5.waterloo.com で終わっている任意のホストからログイン・サーバがアクセスできるようにし、3 番目のエントリはいずれのホストからもアクセスできないようにします。
CHOOSER の後は次のいずれかが続きます。
BROADCAST は、ログイン・サーバにログイン・サーバ・サブネットワークへ同報通信させて、使用可能なログイン・サーバ・ホストのリストを生成します。ホスト名のリストは、使用可能なログイン・ホストのリストとしてそのリストを使用するように、ログイン・サーバに通知します。次に例を示します。
amazon.waterloo.com CHOOSER shoal.waterloo.com alum.waterloo.com *.dept5.waterloo.com CHOOSER BROADCAST !* CHOOSER BROADCAST
amazon.waterloo.com が XDMCP 間接モードによって接続する場合は、shoal と alum を含むリストが表示されます。alice.dept5.waterloo.com を接続する場合は、ログイン・サーバ・サブネットワークで使用可能な全ログイン・サーバ・ホストのリストが表示されます。他の XDMCP 間接モードは否定されます。
ホスト名のリストを指定するもう一つの方法は、ホスト名のリストを含む 1 つ以上のマクロを定義することです。次に例を示します。
%list1 shoal.waterloo.com alum.waterloo.com amazon.waterloo.com CHOOSER %list1
デフォルトでは、ログイン・サーバは /var/dt/Xerrors ファイルにエラーを記録します。この設定を変更するため、Dtlogin.errorLogFile リソースを Xconfig ファイルに設定できます。指定したディレクトリは、ログイン・サーバの起動時に必ず存在しなければなりません。
たとえば、ログイン・サーバが /var/mylogs/Dterrors ファイルにエラーを記録するには、Xconfig ファイルで次のように設定します。
Dtlogin.errorLogFile: /var/mylogs/Dterrors
ログイン・サーバが再起動すると、ログイン・サーバは /var/mylogs/Dterrors ファイルにエラーを記録します。/var/mylogs ディレクトリは、ログイン・サーバの起動時に必ず存在しなければなりません。
システムのブート時にログイン・サーバが起動しないようにするには、次のように入力します。
/usr/dt/bin/dtconfig -d
この設定により、次回のリブート時にシステムはログイン・サーバを起動しません。
プロセス ID を強制終了してログイン・サーバを停止するには、次のように入力します。
/usr/dt/bin/dtconfig -kill
上記は、コマンド kill login_server_process_ID を発行します。
ログイン・サーバのプロセスを終了すると、ログイン・サーバが管理するユーザ・セッションは、すべて終了します。
プロセス ID を強制終了して、ログイン・サーバを停止することもできます。ログイン・サーバのプロセス ID は /var/dt/Xpid または Dtlogin.pidFile リソースによって Xconfig に指定したファイルに格納されます。
ログイン・サーバを強制終了したときにデスクトップにログインすると、デスクトップ・セッションはすぐに終了します。
ログイン・サーバが表示するログイン画面は、従来のキャラクタ・モードでのログイン画面に代わるもので、キャラクタ・モードでのログインを超える能力を備えています。
キャラクタ・モードでのログイン同様、ユーザ名の後にパスワードを入力します。認証されれば、ログイン・サーバはデスクトップ・セッションを起動します。デスクトップ・セッションを終了すると、ログイン・サーバは新しいログイン画面を表示し、処理が再開されます。
ログイン画面表示の変更
X サーバ権限の設定
デフォルト言語の変更
ログイン画面の表示前のコマンドの発行
ログイン画面の [言語] メニューの内容変更
ユーザのセッションを起動するコマンドの指定
ユーザのデスクトップ・セッションの起動前のコマンドの発行
ユーザセッションの終了後のコマンドの発行
上記はいずれも、全ディスプレイまたはディスプレイごとに実行できます。
ログイン画面表示をカスタマイズするため、ロゴまたはグラフィック、ウェルカム・メッセージ、およびフォントを変更できます。
Xresources を変更するには、Xresources を /usr/dt/config/language から /etc/dt/config/language にコピーします。次回からは、すべての変更を反映したログイン画面が表示されます。ログイン画面を強制的に再表示させるには、ログイン画面の [オプション] メニューから [ログイン画面のリセット] を選択します。
Xresources ファイルのリソース指定によって決定されるログイン画面の属性は次のとおりです。
Dtlogin*logo*bitmapFile - ロゴ・イメージとして表示するビットマップ・ファイルまたはピックスマップ・ファイル
Dtlogin*greeting*persLabelString - 個人用ウェルカム・メッセージ
Dtlogin*greeting*labelString - ウェルカム・メッセージ
Dtlogin*greeting*fontList - ウェルカム・メッセージ用フォント
Dtlogin*labelFont - プッシュ・ボタンおよびラベル用フォント
Dtlogin*textFont - ヘルプ・メッセージおよびエラー・メッセージ用フォント
Dtlogin*language*languageName - ロケール名 language 用の選択テキスト
Dtlogin*logo*bitmapFile リソースを Xresources に設定します。
ロゴは、カラー・ピックスマップ・ファイルまたはビットマップ・ファイルです。
次の例は、ロゴに Mylogo ビットマップを使用します。
Dtlogin*logo*bitmapFile: /usr/local/lib/X11/dt/bitmaps/Mylogo.bm
デフォルトでは、ログイン・サーバはログイン画面にメッセージ Welcome to hostname を表示します。このメッセージは、次の方法で変更できます。
Dtlogin*greeting*labelString リソースを Xresources に設定します。
labelString リソースの値には、ログイン・サーバ・ホスト名に置き換える %LocalHost% と、X サーバ・ディスプレイ名に置き換える %DisplayName% を指定できます。
次の例は、ウェルカム・メッセージを Here's host name! に変更します。
Dtlogin*greeting*labelString: Here's %LocalHost%!
ユーザ名を一度入力すると、ログイン・サーバはデフォルトで Welcome username というメッセージを表示します。このメッセージは Dtlogin*greeting*persLabelString リソースを Xresources に設定すると変更できます。persLabelString の値には、username に置き換える %s を指定できます。
次の例は、個人用ウェルカム・メッセージを Hell0 username に変更します。
Dtlogin*greeting*persLabelString: Hello %s
ログイン画面で使用するフォントを、次のフォント・リソースのいずれかを Xresources に設定することにより変更できます。
Dtlogin*greeting*fontList - ウェルカム・メッセージ用フォント
Dtlogin*labelFont - プッシュ・ボタンとラベル用フォント
Dtlogin*textFont - ヘルプ・メッセージとエラー・メッセージ用フォント
使用可能なフォントを一覧表示するには、次のように入力します。
xlsfonts [-options] [-fn pattern]
次の例は、ウェルカム・メッセージを大きいフォントで表示します (指定する値は、必ず一行に入れてください)。
Dtlogin*greeting*fontList: -dt-interface ¥ system-medium-r-normal-xxl*-*-*-*-*-*-*-*-*:
ログイン画面の [言語] メニューに、ロケール名のデフォルト・ディスプレイではなく、ロケールごとのテキストを表示するには、Dtlogin*language*languageName リソースを Xresources に設定します。
Dtlogin*En_US*languageName: American
ロケール名 En_US ではなく、テキスト American が表示されます。
ログイン画面の動作をカスタマイズするには、Xconfig ファイルに指定したリソースを変更します。
Xconfig を変更するには、Xconfig を /usr/dt/config から /etc/dt/config にコピーします。/etc/dt/config/Xconfig を変更したら、次のように入力して Xconfig をもう一度読み込むようログイン・サーバに通知します。
/usr/dt/bin/dtconfig -reset
上記は、コマンド kill -HUP login_server_process_ID を発行します。
Xconfig ファイルに指定するリソースは次のとおりです。
Dtlogin*authorize - Xaccess ファイル仕様
Dtlogin*environment - X サーバ環境
Dtlogin*language - デフォルト言語
Dtlogin*languageList - ログイン画面の [言語] メニューの言語リスト
Dtlogin*resources - Xresources 仕様
Dtlogin*setup - Xsetup ファイル仕様
Dtlogin*startup - Xstartup ファイル仕様
Dtlogin*session - Xsession ファイル仕様
Dtlogin*failsafeClient - Xfailsafe スクリプト仕様
Dtlogin*reset - Xreset スクリプト仕様
Dtlogin*userPath - Xsession および Xfailsafe 用 PATH 環境変数
Dtlogin*systemPath - Xsetup、Xstartup、Xfailsafe 用 PATH 環境変数
Dtlogin*systemShell - Xsetup、Xstartup、Xfailsafe 用 SHELL 環境変数
Dtlogin.timeZone - 全スクリプト用タイムゾーン
次の例では、Xconfig リソースを変更して、全ディスプレイのログイン画面動作を変更します。リストで * (アスタリスク) の付いたリソースは、ディスプレイごとに指定できます。これにより、あるディスプレイのログイン画面動作のカスタマイズを指定できます。特定のディスプレイのリソースを指定するには、リソースを Dtlogin*displayName*resource と指定します。たとえば、ディスプレイ expo:0 のユーザによるアクセス・コントロールをオフにして、他のディスプレイはそのままオンにする場合は、次のように指定します。
Dtlogin*expo_0*authorize: False
ディスプレイ名の : (コロン) や . (ピリオド) などの特殊文字は、_ (下線) に置き換えることができます。
デフォルトでは、ログイン・サーバが、ユーザごとに X サーバのアクセスをコントロールできるようにします。ログイン・サーバは、HomeDirectory/.Xauthority ファイルに格納され保護されている権限データに基づきます。このファイルを読み込めるユーザだけが X サーバに接続できます。通常、これが望ましい X サーバ・アクセス・コントロールの方法です。
ユーザベースのアクセス・コントロールの代わりに、ホストベースのアクセス・コントロールも可能です。この方法を使用すると、ホストが X サーバへのアクセスを与えられている場合、そのホストのすべてのユーザが X サーバに接続できます。ホストベースのコントロールを使用するのは、次のような理由からです。
古い R2 および R3 の X のクライアントは、ユーザベースのアクセス・コントロールでは X サーバに接続できない
安全性が確立されていないネットワークでは、ネットワークの X クライアントと X サーバとの間で渡される認証データを盗まれる可能性がある
Xconfig Dtlogin*authorize リソースは、ユーザベースの X サーバ・アクセス・コントロールを使用することをログイン・サーバに通知します。ホストベースのアクセス・コントロールを使用する場合は、次のように承認リソース値を False に変更します。
Dtlogin*authorize: False
ログイン・サーバによって起動されたときに 1 つ以上の環境変数と値を X サーバに指定する場合は、Xconfig の Dtlogin*environment リソースを使用して指定できます。
Dtlogin*environment: VAR1=foo VAR2=bar
たとえば上記は、ローカルな X サーバ・プロセスで変数 VAR1 および VAR2 を使用できるようにします。これらの変数も、Xsession および Xfailsafe スクリプトへエクスポートされます。
ログイン画面からデスクトップにログインする場合、ユーザ・セッションは、[オプション] メニューの [言語] サブメニューから選択されたロケールで実行されます。言語を選択しない場合、ログイン・サーバはデフォルト言語を使用します。Xconfig の Dtlogin*language リソースを次のように設定することにより、デフォルト言語の値をコントロールできます。
Dtlogin*language: Ja_JP
システムのマニュアルを調べて、システムにインストールされている言語を判定してください。
デフォルトでは、ログイン・サーバは、システムにインストールされたすべてのロケールのリストが入っているログイン画面の [言語] メニューを作成します。そのリストからロケールを選択すると、ログイン・サーバは選択されたロケールでログイン画面を再表示します。その後ログインすると、ログイン・サーバはそのロケールでデスクトップ・セッションを起動します。
Xconfig の Dtlogin*languageList リソースを変更することにより、独自の言語のリストを指定できます。
Dtlogin*languageList: En_US De_DE
上記のように指定すると、ログイン・サーバは En_US および De_DE だけをログイン画面の [言語] メニューに表示します。
X サーバの起動後でログイン画面が表示される前に、ログイン・サーバは Xsetup スクリプトを実行します。Xsetup は root の権限に合わせて実行され、ログイン画面を表示する前に実行する必要のあるコマンドを発行します。
Xsetup を変更するには、Xsetup を /usr/dt/config から /etc/dt/config へコピーします。次にログイン画面が表示されるときは、変更された Xsetup が実行されます。
ユーザ名とパスワードを入力し、それが認証された後で、ユーザ・セッションが起動される前に、ログイン・サーバは Xstartup スクリプトを実行します。Xstartup は root の権限に合わせて実行され、ユーザ・セッションを起動する前に root として実行する必要のあるコマンドを発行します。
Xstartup を変更するには、Xstartup を /usr/dt/config から /etc/dt/config へコピーします。次にログイン画面が表示されるときは、変更された Xstartup が実行されます。
デフォルトでは、ログイン・サーバは Xsession スクリプトを実行することによりユーザ・セッションを起動します。Xsession はユーザの権限に合わせて実行され、デスクトップの起動に必要なコマンドを発行します。
Xsession スクリプトは、直接変更しないでください。
ユーザのデスクトップ・セッション起動のカスタマイズの方法については、第 2 章「セッション・マネージャの構成」を参照してください。
ログイン画面の [オプション] メニューの [セッション] サブメニューから [復旧セッション] を選択する場合、ログイン・サーバは Xfailsafe スクリプトを実行します。Xfailsafe はユーザの権限に合わせて実行され、アイコン化されたウィンドウ (通常は [端末] ウィンドウとオプションのウィンドウ・マネージャ) 環境の起動に必要なコマンドを発行します。
Xfailsafe を変更するには、Xfailsafe を /usr/dt/config から /etc/dt/config へコピーします。次にログイン画面が表示されるときは、変更された Xfailsafe が実行されます。
ユーザがデスクトップまたは復旧セッションを終了した後、ログイン・サーバは Xreset スクリプトを実行します。Xreset は root の権限に合わせて実行され、ユーザセッションの終了後に root として実行する必要のあるコマンドを発行します。
Xreset を変更するには、Xreset を /usr/dt/config から /etc/dt/config へコピーします。次にログイン画面が表示されるときは、変更された Xreset が実行されます。
ログイン・サーバは、Xsetup、Xstartup、Xsession、Xfailsafe、Xreset スクリプトへエクスポートする環境を提供します。この環境は表 1-1 で説明します。これら以外の変数も、ログイン・サーバによってエクスポートされることがあります。
表 1-1 ログイン・サーバ環境
環境 変数 |
Xsetup |
Xstartup |
Xsession Xfailsafe |
Xreset |
説明 |
---|---|---|---|---|---|
X |
X |
X |
X |
デフォルト言語または選択された言語 |
|
X |
X |
X |
X |
(省略可能) 代替 X 許可ファイル |
|
X |
X |
X |
X |
Dtlogin*userPath リソース (Xsession、Xfailsafe) または Dtlogin*systemPath リソース (Xsetup、Xstartup、Xreset) の値 |
|
X |
X |
X |
X |
X サーバ接続番号 |
|
X |
X |
X |
X |
/etc/passwd に指定されたシェル (Xsession、Xfailsafe) または Dtlogin*systemShell リソース (Xsetup、Xstartup、Xreset) |
|
X |
X |
X |
X |
Dtlogin.timeZone リソースまたはシステムで決められたタイムゾーンの値 |
|
|
X |
X |
X |
ユーザ名 |
|
|
X |
X |
X |
/etc/passwd に指定したホーム・ディレクトリ |
|
|
X |
X |
X |
ユーザ名 |
ログイン・サーバは、Xsession スクリプトと Xfailsafe スクリプトの実行時に PATH 環境変数を設定します。これらのスクリプトの代替パスを指定できます。
Xconfig に Dtlogin*userPath リソースを設定します。次に例を示します。
Dtlogin*userPath:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11
Xconfig に Dtlogin*systemPath リソースを設定します。次に例を示します。
Dtlogin*systemPath: /usr/bin/X11:/etc:/bin:/usr/bin:/usr/ucb
ログイン・サーバは、Xsetup、Xstartup、Xfailsafe スクリプトの実行時に SHELL 環境変数を設定します。デフォルトは /bin/sh です。これらのスクリプトに別のシェルを指定する場合は、次のように Xconfig に Dtlogin*systemShell リソースを設定します。
Dtlogin*systemShell: /bin/ksh
ログイン・サーバは、Xsetup、Xstartup、Xsession、Xfailsafe、Xreset スクリプトの実行時に TZ 環境変数を設定します。デフォルト値はシステムから派生するので、通常はこの動作を変更する必要はありません。これらのスクリプトに別のタイムゾーンを指定する場合は、次のように Xconfig に Dtlogin.timeZone リソースを設定します。
Dtlogin.timeZone: CST6CDT
ログイン・サーバが起動すると、1 つの dtlogin プロセスが起動します。dtlogin プロセスは Xconfig ファイルを読み込んで、最初のログイン・サーバ構成を判定し、他のログイン・サーバ構成ファイルを配置します。それから Xservers ファイルを読み込んで、明示的に管理するディスプレイがあるかどうかを調べ、Xaccess ファイルを読み込んでログイン・サーバへのアクセスをコントロールします。
ログイン・サーバが、ローカル・ディスプレイを管理する必要があることを Xservers で知ると、Xservers ファイルで指定したように X サーバを起動し、そのディスプレイにログイン画面を表示します。
ログイン・サーバが、ネットワーク・ディスプレイを管理する必要があることを Xservers で知ると、X サーバがすでに指定したディスプレイ名で実行されているものと見なし、そのディスプレイにログイン画面を表示します。
その後、ログイン・サーバはネットワークからの XDMCP 要求を待ちます。
管理されている各ディスプレイに対して、ログイン・サーバはそのディスプレイ用の新しい dtlogin プロセスを最初に作成します。つまり、ログイン・サーバが n 個のディスプレイを管理している場合、n+1 個の dtlogin プロセスが存在します。ログイン・サーバは Xsetup スクリプトを実行し、Xresources ファイルを読み込んでから、dtgreet を実行してログイン画面を表示します。ユーザ名とパスワードを入力して認証されると、ログイン・サーバは Xstartup スクリプトを実行してから Xsession または Xfailsafe スクリプトを実行します。セッションを終了すると、ログイン・サーバは Xreset スクリプトを実行します。
ログイン・サーバが XDMCP 間接モード要求を獲得すると、dtchooser を実行してディスプレイのログイン・サーバ・ホストのリストを表示します。リストからホストを選択すると、そのホストのログイン・サーバがディスプレイを管理します。
Xaccess、Xconfig、Xfailsafe、Xreset、language/Xresources、 Xservers、Xsetup、Xstartup 構成ファイルについては、デフォルトではログイン・サーバが最初に /etc/dt/config を調べ、次に /usr/dt/config を調べて、最初に見つけたファイルを使用します。
ログイン・マネージャ・ファイルのデフォルトの位置は次のとおりです。
/usr/dt/bin/dtlogin - ログイン・サーバおよびディスプレイ・マネージャ
/usr/dt/bin/dtgreet - ディスプレイ用ログイン画面の表示
/usr/dt/bin/dtchooser - ディスプレイ用選択画面の表示
/usr/dt/bin/Xsession - デスクトップ・セッションの起動
/usr/dt/config/Xfailsafe - 復旧セッションの起動
/usr/dt/config/Xconfig - ログイン・サーバ構成ファイル
/usr/dt/config/Xservers - ログイン・サーバ・ディスプレイ記述ファイル
/usr/dt/config/Xaccess - ログイン・サーバ・アクセス記述ファイル
/usr/dt/config/language/Xresources - レイアウト・リソースの表示
/usr/dt/config/Xsetup - セットアップ・ファイルの表示
/usr/dt/config/Xstartup - セッション起動ファイル
/usr/dt/config/Xreset - セッション開始後のリセット・ファイル
/var/dt/Xpid - ログイン・サーバのプロセス ID
/var/dt/Xerrors - ログイン・サーバのエラー記録ファイル