AGETTY

Section: System Administration (8)
Updated: February 2016
Index Return to Main Contents
 

名前

agetty - Linux 用 getty のもう一つの実装

 

書式

agetty [options] port [baud_rate...] [term]

 

説明

agetty は tty ポートをオープンし、ログイン名を求めるプロンプトを出し、 /bin/login コマンドを起動する。通常 agettyinit(8) から 起動される。

agetty はいくつか非標準な機能を持っており、直結ラインやダイアルインの ラインに便利になっている。

ログイン名を読むときに tty の設定(パリティビット、 erase、 kill、 end-of-line、 uppercase 文字)を行う。 agetty は 7 ビット文字を偶、奇、スペースの各パリティ、あるいはパリティなしの いずれでも扱うことができる。また 8 ビット文字をパリティなしで扱うこと ができる。以下の特殊文字を認識する; コントロール U (kill)、 DEL およびバックスペース (erase)、復帰 (carriage return) および改行 (linefeed) (end of line)。 --erase-chars--kill-chars オプションも参照すること。
オプション機能: Hayes(tm) 互換のモデムが出す CONNECT メッセージ から通信速度 (baud rate) を推測する。
オプション機能: すでにオープンしているラインを与えられた場合に はラインを切断しない (コールバックの用途に便利)。
オプション機能: /etc/issue ファイルの内容を表示させない。
オプション機能: /etc/issue または /etc/issue.d 以外の issue ファイルを表示する。
オプション機能: ログイン名を尋ねない。
オプション機能: /bin/login 以外の非標準なログインプログラムを 起動する。
オプション機能: ハードウェアによるフローコントロールを有効にする。
オプション機能: 接続ラインをローカルなライン (キャリア検知を必要と しないライン) に設定する。

このプログラムは /etc/gettydefs (System V) や /etc/gettytab (SunOS 4) ファイルを利用しない。  

引き数




port
/dev/ ディレクトリからの相対パス名。 "-" が指定されると、 agetty は自分の標準入力がすでに tty ポートに接続されており、リモートユーザー への接続がすでに確立されているものとみなす。

System V では port 引き数としての "-" は "--" の前に置かなければ ならない。

baud_rate,...
一つ以上の通信速度をコンマで区切ったリスト。 agetty が BREAK 文字を受け取ると、リストの次に進む。最後まで行ったら最初に戻る。

通信速度は大きい方から小さい方へと並べるようにする。こうすると null 文字 (Ctrl-@) も通信速度の切り替えに使えるようになる。

この引き数はオプションで、仮想端末には必要ない。

シリアル端末のデフォルトは現在の通信速度に保たれる (--keep-baud を参照)。 成功しない場合、デフォルトは '9600' にされる。

term
TERM 環境変数に用いる値。これは init(8) の設定を上書きし、 login および shell に受け継がれる。

デフォルトは 'vt100'、または仮想端末上の Linux では 'linux'、 または仮想端末上の GNU Hurd では 'hurd' である。

 

オプション




-8, --8bits
tty が 8-bit クリーンであると仮定し、パリティ検知を無効化する。
-a, --autologin username
ユーザー名とパスワードを尋ねず、指定したユーザーで自動的に ログインする。 このオプションを使うと、-f username オプションが指定され、 /bin/login コマンドラインに引き数が追加される。 このオプションの挙動を変更するには、 --login-options オプションを参照すること。

--autologin は agetty によるシリアル回線の初期化に 影響を与える可能性がある点に注意すること。 これは、自動ログインの場合、agetty は回線から読み込まず、 回線設定を最適化する機会がないためである。

-c, --noreset
端末の cflags (制御モード) をリセットしない。 詳細は termios(3) を参照すること。
-E, --remote
通常、login(1) は、telnetd(8) などから呼び出された場合、 リモートのホスト名が指定される。 このオプションは、agetty に対して、 utmp(5) で使われる login(1) へのホスト名として何を渡すかを、指定できるようにする。 --host, login(1), utmp(5) を参照すること。
--host fakehost オプションが指定された場合、 -h fakehost オプションと引き数が、 /bin/login コマンドラインに追加される。
--nohostname オプションが指定された場合、 -H オプションが /bin/login コマンドラインに追加される。
--login-options を参照すること。
-f, --issue-file file|directory
file/etc/issue の代わりに表示する。 指定したパスがディレクトリの場合、ディレクトリ内の .issue という ファイル拡張子の全てのファイルをバージョンソート順に表示する。 端末別にメッセージを変えることができるようになる。 --noissue オプションはこのオプションを上書きする。
-h, --flow-control
ハードウェア (RTS/CTS) コントロールを有効にする。ソフトウェアによる (XON/XOFF) フローコントロールを無効にするかどうかはアプリケーションに 任せる。
-H, --host fakehost
指定された fakehost を utmp ファイルに書き込む。 agetty はローカルの直結接続とコンソールを使うので、 通常はログインホストは指定されない。 しかし、このオプションは端末集線装置 (concentrator) を識別するのに役立つ。
-i, --noissue
ログインプロンプトの前に /etc/issue の内容を表示しない。端末や通信装置は、正しくない通信速度で大量の テキストを受け取ると混乱してしまうことがある。 ダイアルアップスクリプトによっては、ログインプロンプトの前に 大量のテキストを受け取ると落ちてしまう場合がある。
-I, --init-string initstring
通信に先立って tty やモデムに送る初期化文字列を設定する。これはモデムの 初期化に用いることができる。印刷できない文字も、バックスラッシュ (\) に引き続いて 8 進数で指定すれば送ることができる。例えば改行文字 (ASCII 10, 8 進数では 012) を送るには \012 とする。
-J, --noclear
ログイン名のプロンプトを出す前にスクリーンをクリアしない。 デフォルトではスクリーンをクリアする。
-l, --login-program login_program
指定した login_program を /bin/login の代わりに起動する。 これによって非標準なログインプログラム (例えばダイアルアップパスワードを尋ねたり、 /etc/passwd 以外のパスワードファイルを用いるなど) を使うことができる。 --login-options を参照すること。
-L, --local-line[=mode]
CLOCAL 回線フラグを制御する。 オプションの mode 引き数は、'auto', 'always', 'never' である。 mode 引き数を省略した場合、デフォルトは 'always' である。 --local-line オプションが全く指定されない場合、デフォルトは 'auto' である。

always
接続回線を、キャリア検知の必要がないローカルな直結回線 であるとみなす。 これはローカルに接続された端末で、キャリア検知用の信号線が ないシリアルケーブルを使っているときに便利である。
never
回線設定から CLOCAL フラグを明示的にクリアし、 回線からキャリア検知シグナルが来ることを想定する。
auto
agetty のデフォルト。 CLOCAL 設定を変更せず、カーネルが有効にした設定に従う。
-m, --extract-baud
通信速度を Hayes(tm) 互換モデムが出す CONNECT メッセージから抽出しようと試みる。 メッセージは "<その他><速度><その他>" というような形式になっている。 agetty では、コマンドラインの baud_rate の先頭に指定されたスピードで、 モデムがステータスメッセージを出力するものとみなしている。

-m の機能は負荷の高いシステムでは失敗することもあるので、 コマンドラインでも予想される通信速度をすべて列記して、 BREAK 処理を有効に しておく方が良いだろう。

--list-speeds
サポートされる通信速度を表示する。 これらはコンパイル時に決定される。
-n, --skip-login
ログイン名入力のプロンプトを出さない。 これは --login-program オプションと共に用いて、 BBS システムのように非標準のログイン処理を起動する際に便利である。 --skip-login オプションを用いると、 agetty はログインしてくるユーザーから 入力を受け取ることができないので、コネクションのパリティや キャラクタビット数、改行処理などを決定することができない。 デフォルトはスペースパリティ、 文字は 7 ビット、行末文字は ASCII の CR (13) となっている。 agetty が起動するプログラム (通常は /bin/login) は root 権限で実行されること に注意せよ。
-N, --nonewline
/etc/issue を書き出す前に改行を出力しない。
-o, --login-options "login_options"
オプションと引き数を login(1) に渡す。 ここで \u はログイン名に置換される。 例:
--login-options '-h darkstar -- \'

--autologin, --login-program, --remote を参照すること。

このオプションを使う前に、「セキュリティ上の注意」のセクションを 読んでほしい。

-p, --login-pause
ログインプロンプトに進む前に、何らかのキー入力を待つ。 --autologin と組み合わせて使うときに、 シェルの生成を遅延させて、メモリ使用量を少なくできる。
-r, --chroot directory
指定したディレクトリに chroot する。
-R, --hangup
vhangup() を呼んで、指定した端末の仮想ハングアップを起こさせる。
-s, --keep-baud
既存の通信速度を維持しようとする。 agetty が BREAK 文字を受け取った時の、コマンドラインの通信速度が使われる。
-t, --timeout timeout
timeout 秒以内にユーザー名を読み込むことができなかったら切断する。 このオプションは直結回線には推奨されない。
-U, --detect-case
大文字のみの端末の検知を有効化する。 この設定では、ログイン名が大文字のみである場合、大文字のみの 端末であると識別し、大文字から小文字への変換を有効にする。 これは Unicode 文字には対してはサポートされていない。
-w, --wait-cr
ユーザーまたはモデムからの復帰文字か改行文字を待ち、 これを受け取ってから /etc/issue (または別の issue) ファイルやログインプロンプトを出す。 --init-string オプションを用いた接続の際に便利である。
--nohints
Num, Caps, Scroll ロックのヒントを表示しない。
--nohostname
デフォルトではホスト名が表示される。 このオプションを有効にすると、ホスト名が全く表示されない。
--long-hostname
デフォルトでは、ホスト名は最初のドットまでしか表示されない。 このオプションを有効にすると、gethostname(3P) による完全修飾ホスト名、 または (これが見つからない場合は) getaddrinfo(3) による完全修飾ホスト名が 表示される。
--erase-chars string
このオプションは、ユーザーがログイン名を入力する時に、 バックスペース ("前の 1 文字を無視する") として解釈される追加の文字を指定する。 かつてはデフォルトの追加 'erase' 文字は '#' であったが、 util-linux 2.23 からはデフォルトでは追加の erase 文字はなくなった。
--kill-chars string
このオプションは、ユーザーがログイン名を入力する時に、 kill ("前のすべての文字を無視する") として解釈される追加の文字を指定する。 かつてはデフォルトの追加 'kill' 文字は '@' であったが、 util-linux 2.23 からはデフォルトでは追加の kill 文字はなくなった。
--chdir directory
login の前にディレクトリを変更する。
--delay number
tty をオープンする前に指定した秒数だけスリープする。
--nice number
login を指定した優先度で実行する。
--reload
ユーザーがログインをまだ開始していない場合、 実行されている agetty インスタンスをリロードし、 表示されているプロンプトを更新する。 その後、コマンドは終了する。 この機能は、 Linux inotify(7) がないシステムにはサポートされない。
--version
バージョン情報を表示して、終了する。
--help
ヘルプを表示して、終了する。

 

この節では /etc/inittabファイルに記述するコマンドエントリの例を示す。 他のフィールドには、それぞれ適当な値を指定する必要があるだろう。詳細は inittab(5) を参照すること。

直結ラインまたはコンソール tty 用:

/sbin/agetty 9600 ttyS1

直結された端末で、正しい CD 線のない場合 (password: プロンプトが出ない で端末が黙ってしまう場合はこちらを試してみると良い):

/sbin/agetty --local-line 9600 ttyS1 vt100

9600/2400/1200 bps のモデムを用いた古いスタイルのダイアルイン接続ライン

/sbin/agetty --extract-baud --timeout 60 ttyS1 9600,2400,1200

Hayes モデムで、マシンへのインターフェースが 115200 bps に固定されている場合 (以下の例の初期文字列ではモデムのエコーとリザルトコードを抑止し、 モデム/コンピュータ間の DCD はモデム/モデム間の DCD に追随するようにし、 DTR が落ちた場合は切断とベル 1 回での自動応答機能を有効にするように 設定している):

/sbin/agetty --wait-cr --init-string 'ATE0Q1&D2&C1S0=1\015' 115200 ttyS1

 

セキュリティ上の注意

--login-program--login-options オプションを使う場合、 悪意をもったユーザがログイン名と組み込みのオプションを入力して、 使用されている login プログラムに受け渡そうとするかも知れない点に注意すること。 agetty はあとに続く "-" をチェックして、 ログイン名として 1 つのパラメータにして渡そうとする (組み込まれた空白があっても別のパラメータを生成しようとしない)。 しかし、login バイナリがコマンドラインをどのように解釈するかによっては、 充分でない場合もある。 使用する login プログラムが、このような方法で不正に使用されないようにチェックすること。

"--" を指定すると、コマンドラインの残りの部分をオプションとして解釈しない プログラムもある。 もし利用可能であれば、この機能を使って、ユーザ名を \u で渡す前に "--" を渡すこと。

 

ISSUE ファイル

デフォルトの issue ファイルは /etc/issue である。 このファイルが存在する場合、agetty は /etc/issue.d ディレクトリもチェックする。 このディレクトリはデフォルトの issue ファイルに対して、オプションとなる拡張であり、 /etc/issue の内容の後に、ディレクトリの内容が表示される。 /etc/issue が存在しない場合、このディレクトリは無視される。 このディレクトリ内の .issue 拡張子の付いたファイルは、 バージョンソート順に表示される。 このディレクトリは、主となるシステムの /etc/issue ファイルとは独立した、 3rd パーティーのメッセージを管理できる。

デフォルトのパスは --issue-file オプションで上書きできる。 指定したパスのファイルまたはディレクトリが使われ、 デフォルトの /etc/issue/etc/issue.d は無視される。

issue ファイルではシステム名や日付、時間 などを表示するエスケープコードを用いることができる。 エスケープコードはバックスラッシュ (\) とそれに続く以下の一文字からなる。

4 または 4{interface} 指定したネットワークインタフェースの IPv4 アドレスを挿入する (例: \4{eth0})。 interface 引き数が指定されない場合、最初の完全に設定された (UP, non-LOCALBACK, RUNNING 状態の) インタフェースが選択される。 設定されたインタフェースがない場合、 マシンのホスト名の IP アドレスが選ばれる。
6 または 6{interface} \4 と同様であるが、IPv6 アドレスを表示する。
b
現在のラインの通信速度。
d
現在の日付。
e または e{name} 人間が読める name をエスケープシーケンスに変換して挿入する (例: \e{red}Alert text.\e{reset})。 name 引き数が指定されていない場合、 \033 が挿入される。 現在サポートされている name は以下のとおり: black, blink, blue, bold, brown, cyan, darkgray, gray, green, halfbright, lightblue, lightcyan, lightgray, lightgreen, lightmagenta, lightred, magenta, red, reset, reverse, yellow。 不明な name は黙って無視される。
s
システム名 (オペレーティングシステムの名前)。 'uname -s' と同じ。 \S エスケープコードを参照すること。
S または S{VARIABLE} /etc/os-release から VARIABLE データを取り出して、挿入する。 このファイルが存在市内場合、/usr/lib/os-release を探す。 VARIABLE 引き数が指定されていない場合、 このファイルから PRETTY_NAME を使うか、 システム名 (\s を参照) を使う。 このエスケープコードは /etc/issue の配布物を保存して、 リリースから独立させることができる。 \S{ANSI_COLOR} は実際の端末のエスケープシーケンスに変換される点に注意すること。
l
現在の tty ラインの名前。
m
マシンのアーキテクチャを表す名前。 'uname -m' と同じ。
n
マシンのノード名 (ホスト名)。 'uname -n' と同じ。
o
マシンの NIS ドメイン名。 'uname -d' と同じ。
O
マシンの DNS ドメイン名。
r
OS のリリース番号。 'uname -r' と同じ。
t
現在の時刻。
u
現在ログインしているユーザー数。
U
文字列 "1 user" または "<n> users"。 <n> は現在ログインしているユーザー数。
v
OS のバージョン (ビルドした日付など)。

以下は著者のシステムでの /etc/issue ファイルの例である:

This is \n.\o (\s \m \r) \t

表示は以下のようになる。

This is thingol.orcan.dk (Linux i386 1.1.9) 18:29:30

 

ファイル

/var/run/utmp
システムのステータスファイル。
/etc/issue
ログインプロンプトの前に表示される。
/etc/os-release /usr/lib/os-release
オペレーティングシステムの識別データ。
/dev/console
障害を報告する端末 (syslog(3) が使われていない場合)。
/etc/inittab
SysV スタイルの init デーモンの init(8) 設定ファイル。
 

バグ

通信速度の自動検知機能 (--extract-baud オプション) では、 agetty のスケジュールがダイアルイン接続の確立後すぐに回ってこなければならない (2400 bps の場合は 30 ms 以内)。 システムを強くするために、 --extract-baud オプションを用いる場合には、常にコマンドライン引き数で通信速度の複数 指定を行い、 BREAK 処理を有効にしておくべきである。

/etc/issue (または他の issue ファイル) のテキストとログインプロンプトの表示には 常に 7 ビット文字とスペースパリティが用いられる。

通信速度の自動検知機能 (--extract-baud オプション) では、 モデムのステータスメッセージは DCD ラインが high になってからでないと受け付けない。  

返り値

プログラムが返す情報はすべて console デバイスに書き込まれるか、 syslog(3) を通してレポートされる。どちらかはプログラムの設定に依存する。 port 引き数が端末デバイスを指定していない場合、 utmp に現在の プロセスのエントリがない場合 (System V のみ) などにエラーメッセージ が発行される。  

著者

Werner Fink
Karel Zak

元々の agetty はシリアル端末用に W.Z. Venema <wietse@wzv.win.tue.nl> が書いた。 Peter Orbaek <poe@daimi.aau.dk> が Linux への移植を行った。

 

入手方法

agetty コマンドは、util-linux パッケージの一部であり、 https://www.kernel.org/pub/linux/utils/util-linux/ から入手できる。


 

Index

名前
書式
説明
引き数
オプション
セキュリティ上の注意
ISSUE ファイル
ファイル
バグ
返り値
著者
入手方法

This document was created by man2html, using the manual pages.
Time: 10:58:02 GMT, August 03, 2019