ttymon - 端末ポートのポートモニター
/usr/sbin/ttymon -g [-d device] [-h] [-t timeout] [-l ttylabel] [-p prompt] [-m modules] [-T termtype]
ttymon は STREAMS ベースの TTY ポートモニターです。その機能には、ポートの監視、ポートの端末モード、ボーレートおよび回線規約の設定、そしてポートに関連したサービスへのユーザーまたはアプリケーションの接続があります。ttymon の各インスタンスは、起動時に指定された 1 つのポートを監視します。ttymon のインスタンスが起動されると、ttymon は最初に回線制御手順 (指定されている場合)、および速度と端末の設定を初期化します。/etc/logindevperm 中のエントリに指定されているポートには、デバイスのオーナー、グループ、アクセス権が設定されます (logindevperm(4) 参照)。初期化に使用される値は、TTY 設定ファイルの適切なエントリから取り込まれます。このファイルは sttydefs(1M) コマンドによって管理されています。通常、ポート上のデフォルトの回線規約は、オートプッシュファシリティの autopush(1M) コマンドによって設定されます。
次に ttymon はプロンプトを書き込んでユーザーの入力を待ちます。ユーザーが BREAK キーを押して速度が適切でないことを知らせると、ttymon は次の速度を試行してプロンプトを再び書き込みます。有効な入力が受信されると、ttymon は utmpx エントリ (utmpx(4) を参照) を作成し、ポートのログインサービスを実行します。有効な入力は、キャリッジリターンで終わり、少なくとも 1 つの復帰改行以外の文字が入った文字列からなります。
autobaud がポートで動作可能であれば、ttymonは自動的にポートのボーレートを判別しようとします。ユーザーがキャリッジリターンを入力してからでないと、ttymonはボーレートを認識してプロンプトをプリントできません。現在のところ、autobaud が判別できるボーレートは 110、1200、2400、4800、および 9600 です。
ttymon を起動するプライマリ smf(5) サービスは、svc:/system/console-login です。このサービスには、複数のサービスインスタンスが含まれる場合があります。インスタンスについては、以下でより詳しく説明します。次に示すように、このサービスは呼び出しを制御するためにプロパティーグループ ttymon 内の多くのプロパティーを提供します。
NAME TYPE TTYMON OPTION ---------------------------------------------------------- device astring [-d device] nohangup boolean [-h] label astring [-l label] modules astring [-m module1,module2] prompt astring [-p prompt] timeout count [-t timeout] terminal_type astring [-T termtype]
いずれかの値が空の文字列であるかゼロに設定された整数である場合、オプションは ttymon 呼び出しに渡されません。
デフォルトインスタンスは常に、システムハードウェアコンソールでのログインを提供する ttymon を表します。
システムコンソール設定の変更方法の例については、「使用例」を参照してください。
システムの仮想コンソールには、追加のサービスインスタンスが提供されています。 仮想コンソールが使用できない場合は、これらのサービスが自動的に無効化されます。 vtdaemon(1M) を参照してください。
便宜のために svc:/system/console-login:terma および svc:/system/console-login:termb が提供されており、追加ポート /dev/term/a および /dev/term/b にログインサービスを設定する際にユーザーが使用できます。これらのサービスはデフォルトで無効化されています。
ユーザーは追加デバイスに追加のサービスインスタンスを構成できます。これは、次の方法のいずれかで実現できます。
svccfg(1M) を使用して手動でサービスインスタンスを作成する。
サービスプロファイルにサービスを作成する (smf(5) を参照)。
追加のサービスインスタンスにサービスマニフェストを作成する。
svccfg を使用して手動でサービスを構成する例については、「使用例」を参照してください。
コンソールログインサービスのインスタンスが誤って構成された場合はほとんど、保守状態に遷移します。svcs –l を使用して (svcs(1) を参照)、サービスのログファイルの場所を確認し、追加情報がないかどうかログを調べます。
エラーが発生すると、サービスが無制限に再起動されることがあります。svcadm(1M) を使用してサービスを無効化してから、問題解決に役立つ追加のメッセージや情報がないかどうかサービスログを調べます。
ttymon は pam(3PAM)を使って、セッション管理を行います。PAM 構成ポリシーは、/etc/pam.conf または /etc/pam.d/ 内のサービス別のファイルに記述され、ttymon で使用するモジュールを指定します。ここに、UNIX セッション管理モジュールを使用する ttymon のエントリを含む、pam.conf ファイルの抜粋を示します:
ttymon session required /usr/lib/security/pam_unix_session.so.1
/etc/pam.d/ 内の同等の PAM 構成では、/etc/pam.d/ttymon 内に次のエントリが含まれます:
session required /usr/lib/security/pam_unix_session.so.1
ttymon サービスのエントリが /etc/pam.conf 内になく、かつ /etc/pam.d/ttymon ファイルが存在しない場合、/etc/pam.conf 内の「その他の」サービスのエントリが使用されます。/etc/pam.conf に「その他の」サービスのエントリが一切存在しない場合、/etc/pam.d/other 内のエントリが使用されます。
サポートしているオプションは、次のとおりです。
歴史的経緯により、–g オプションは必須です。
device は ttymon の接続先とすべきポートの完全パス名です。このオプションが指定されていなければ、ファイル記述子 0は TTY ポートに対する呼び出しプロセスによって設定される必要があります。
-h フラグが指定されていないと、ttymon は、速度をデフォルト速度または指定速度に設定する前に、速度を 0 に設定することによって回線のハングアップを強制的に行います。
ttylabel は ttydefs ファイルの速度および TTY 定義に対するリンクです。この定義によって、初期の実行速度、初期の TTY 設定の内容およびユーザーがBREAK キーを押して速度が適切でないことを指示する場合に、次に試行する速度が ttymon に通知されます。デフォルト速度は 9600 ボーです。
ポートを初期化すると、ttymon はポートのモジュールすべてをポップして、指定した順序で modules をプッシュします。modules はコンマで区切ったプッシュ可能なモジュールのリストです。通常、ポートのデフォルトのモジュールは、オートプッシュファシリティによって設定されます。
ユーザーがプロンプト文字列を指定するのを許可します。デフォルトのプロンプトは Login: です。
プロンプトの送信後、timeout 秒内に何も入力がない場合には ttymon を終了します。
termtype に TERM環境変数を設定します。
詳細なメッセージを有効化します。
次の例では、システムコンソール ttymon 呼び出しのための端末タイプ (–T) オプションの値を設定します。
# svccfg -s svc:/system/console-login:default \ "setprop ttymon/terminal_type = xterm" # svcadm refresh svc:/system/console-login:default使用例 2 追加シリアルデバイスのサービスインスタンスを作成する
この例では、ユーザーが USB シリアルアダプタを使用して接続されている端末でログインサービスを提供するために、svc:/system/console-login サービスの追加インスタンスを構成します。USB シリアルポートが /dev/term/1 として存在し、ユーザーがこれに vt100 端末を接続する計画があると想定しています。 この場合、サービスインスタンスには term1 (またはその他の任意の名前) という名前を付け、次のように定義できます。
# svccfg -s svc:/system/console-login "add term1" # SVC=svc:/system/console-login:term1 # svccfg -s $SVC "addpg ttymon application" # svccfg -s $SVC "setprop ttymon/device = /dev/term/1" # svccfg -s $SVC "setprop ttymon/terminal_type = vt100" # svcadm refresh $SVC # svcadm enable $SVC
LC_* 変数 (LC_CTYPE、LC_MESSAGES、LC_TIME、LC_COLLATE、LC_NUMERIC、LC_MONETARY) (environ(5) 参照) のいずれも環境に設定されていなければ、それぞれ対応するロケールのカテゴリにおける ttymon の動作は、環境変数 LANG によって決定されます。LC_ALL が設定されていれば、その内容が LANG 変数やその他の LC_* 変数より優先されます。前述の変数が環境にまったく設定されていなければ、「C」ロケール (米国スタイル) が ttymon の動作を決定します。
ttymon の文字の処理方法を決定します。LC_CTYPE に有効な値が設定されていると、ttymon は、そのロケールにあった文字を含むテキストやファイル名を表示および処理できます。ttymon は拡張 UNIX コード(EUC)も表示および処理できます。この場合、文字は 1 バイト幅、 2 バイト幅、3 バイト幅のいずれも使用できます。また、ttymon は 1、 2、またはそれ以上のカラム幅の EUC 文字も処理することができます。「C」ロケール においては、ISO 8859-1 の文字だけが有効です。
コンソールデバイスのログインまたはログアウト時にデバイスの所有者、グループ、およびアクセス権を変更するときに、login(1) および ttymon で使用される情報が含まれます。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
svcs(1)、ct(1C)、cu(1C)、autopush(1M)、sttydefs(1M)、svcadm(1M)、svccfg(1M)、uucico(1M)、vtdaemon(1M)、pam(3PAM)、logindevperm(4)、pam.conf(4)、utmpx(4)、attributes(5)、environ(5)、pam_authtok_check(5)、pam_authtok_get(5)、pam_authtok_store(5)、pam_dhkeys(5)、pam_passwd_auth(5)、pam_unix_account(5)、pam_unix_auth(5)、pam_unix_session(5)、smf(5)
Oracle Solaris 11.3 の管理の紹介
以前は、ttymon はサービスアクセス機能のコンポーネントであり、sac (サービスアクセスコントローラ) によって起動されていました。このリリースの Solaris では、この機能は削除され、SMF への関連部分の変換が行われました。
ポートが複数の ttymon によって監視されている場合は、ttymon は入力を争うような方法でプロンプトメッセージを送信できます。
2 つの svc:/system/console-login サービスインスタンスが同じ基本デバイスを参照している可能性があります。たとえば、(ファームウェアの設定や自動検出のために) システムのハードウェアコンソールがシリアルポート A に接続されている場合は、svc:/system/console-login:default と svc:/system/console-login:terma の両方のサービスが同じ基本ハードウェアデバイスを参照します。この状況を回避するために追加サービスインスタンスを定義または有効化する際は、注意しないと 2 つの ttymon が競合してしまいます。