TELNETD(8)

名称
telnetd - DARPA TELNET プロトコルサーバ

書式
/usr/libexec/telnetd [-Uhlkns] [-D debugmode] [-Iinitid] [-S tos] [-X authtype] [-a authmode] [-edebug] [-g gettyent] [-rlowpty-highpty] [-u len] [-debug [port]]

解説
telnetd コマンドは、 DARPA 標準 TELNET 仮想端末プロトコル をサポートするサーバです。 telnetd は、通常は /etc/services ファイル (services(5) を参照して下さい) に記述してある TELNET ポートへの接続要求を受けて、インターネットサーバ (inetd(8) を参照して下さい) から起動されます。 -debug オプションは、 inetd(8) の代りに telnetd を手動で起動するために用いられます。 このように手動で起動された場合には、 代りの TCP ポート番号で telnetd を動かすために port を指定する事ができます。

telnetd コマンドには以下のオプションがあります:

-a authmode
    このオプションは、どのモードが認証に使われるかを指定するために用いられます。 このオプションは、 telnetd が AUTHENTICATION オプションをサポートする設定で構築された場合においてのみ役に立つことに 注意して下さい。 以下に示すようないくつかの authmode があります:

    debug
        認証のデバッグコードを有効にします。

    user
        リモートユーザは、自分自身であること示すための有効な認証情報を 提供した時にのみ接続が許可されます。 この場合、指定されたアカウントに対しては、パスワードの提供なしに接続が 許可されます。

    valid
        リモートユーザが自分自身であることを示すための有効な認証情報を 提供した時にのみ接続が許可されます。 リモートユーザが指定されたアカウントに対する自動的な接続が許可されて いなければ login(1) コマンドは、必要とされるユーザ証明を提供します。

    other
        ある種の認証情報を提供した場合のみ接続を許可します。 現在このオプションはすべての認証方法でサポートされていないため -a valid オプションを指定した時と同じ動作をします。

    none
        デフォルトではこの状態です。 認証情報は要求されません。 もし認証情報がなかったり不十分であれば、 login(1) プログラムによって必要なユーザ証明を提供します。

    off 認証コードを無効にします。 すべてのユーザ証明が login(1) プログラムによって行われます。

-D debugmode
    このモードはデバックのために用いられます。 これによって telnetd がデバッグ情報を表示し、ユーザは telnetd が何をしているのかを見ることが許されます。 以下に示すようないくつかの debugmode が可能です:

    options
        TELNET オプションのネゴシエーションについての情報が表示されます。

    report
        options で表示される情報に加えて、 どのような操作が行われているのかという、いくつかの付加的な情報が 表示されます。

    netdata
        telnetd が受け取ったデータストリームを表示します。

    ptydata
        pty に書かれたデータを表示します。

    exercise
        まだ実装されていません。

-debug
    telnetd によって作られたそれぞれのソケットについてのデバッグを可能にします (socket(2) の SO_DEBUG を参照してください)。

-edebug
    telnetd がデータの暗号化をサポートする設定で構築されている場合に、 -edebug オプションは、暗号化デバッグコードを可能にするように使われます。

-g gettyent
    花文字やログインプログラムやその他の情報を得るのに /etc/gettytab のどのエントリを使うかを指定します。 デフォルトのエントリは default です。

-h  ログインが完了するまでホストに特有の情報を表示しないようにします。

-I initid
    このオプションは、バージョン 7.0 以前の UNICOS システムでのみ有効です。 init がログインセッションを開始したときに、 /etc/inittab から ID を特定します。デフォルトの ID は fe です。

-k  このオプションは、 telnetd が linemode と kludge linemode をサポートする設定で構築されている ときにのみ有効です。 -k オプションが指定されている場合で、もしリモートのクライアントが LINEMODE オプションをサポートしていなければ、 telnetd は、 character at a time mode で動きます。 この様な状態でも kludge linemode をサポートしますが、リモートのクライアントが 要求した場合のみ kludge linemode になります (これは、クライアントが DONT SUPPRESS-GO-AHEAD と DONT ECHO を送信することによって行われます)。 -k オプションは kludge linemode をサポートしていないリモートクライアントが あるが、(もしクライアントが DO TIMING-MARK に対して WILL TIMING-MARK を応答する事で)自己発見的に kludge linemode をサポートすると認められる 様な場合にとても便利です。

-l  line mode に指定します。クライアントを強制的に line-at-a-time mode に なるよう試みます。 もし LINEMODE オプションがサポートされてなければ、kludge linemode になります。

-n  TCP keep-alives を行いません。通常、 telnetd は TCP keep-aliveを有効にしています。なぜなら、クラッシュしたり、すでに接続 出来ないようなマシンからのアイドルコネクションを解消するために、 ある期間アイドルだった場合にクライアントとの接続がまだ存在するかどうかを 調べる必要があるからです。

-r lowpty-highpty
    このオプションは、 telnetd が UNICOS 用に構築されている場合にのみ有効です。 使用する疑似端末デバイスの包括的な範囲を指定します。 システムが sysconf 変数 _SC_CRAY_NPTY を使用するように設定されている場合、デフォルトでの pty の検索範囲は 0から _SC_CRAY_NPTY までになります。そうでなければ、デフォルトでの検索範囲は 0 から 128 に なります。検索範囲のどちらか一方だけを変更したい場合は、 lowpty あるいは highpty は省略する事が出来ます。 lowpty を省略した場合でも文字 - を省略する事は出来ません。 文字 - を省略してしまうと telnetd はそれが highpty であることを判断できずに lowpty であると判断してしまうからです。

-s  このオプションは、 telnetd がセキュアなログインをサポートするようにコンパイルされている場合にのみ 有効です。 このオプションを指定すると、 -s オプションはそのまま login(1) に渡され、 login(1) が -s オプションをサポートしていて Kerberos または S/Key によって認証されたログインのみを許可するような場合に有効です。 これは、ファイアウォールの外側からのリモートログインを制御するような 場合に有意義でしょう。

-S tos

-u len
    このオプションは、リモートホスト名を保持している utmp 構造体のフィールドの大きさを指定するために使われます。 もし決定したホスト名が len よりも長ければ、ドットで区切られたアドレスが使われます。 これによりフィールドを超えるようなとても長いホスト名を ユニークに特定できるようにします。 -u0 を指定することによって、ドットで区切られたアドレスだけが utmp ファイルに書き込まれるようにします。

-U  このオプションは telnetd が、 gethostbyaddr(3) ルーチンを通して symbolic name にマップされないようなアドレスからの コネクションを拒絶するようにします。

-X authtype
    このオプションは telnetd が認証オプションをサポートする設定で構築されたときにのみ有効です。 authtype 認証を使用不能にし、 telnetd を再コンパイルすることなしに 特定の認証タイプを一時的に使用不能にする事が出来ます。

telnetd は疑似端末デバイス (pty(4) を参照して下さい) をクライアントに割り当てることによって動作します。 そして、その疑似端末のスレーブ側として stdin, stdout, stderr を持つログインプロセスを生成します。 telnetd は、 TELNET プロトコルを実装し、 リモートクライアントとログインプロセスとの間の キャラクタを通過させることにより、疑似端末のマスター側を操作します。

TELNET セッションが開始されると telnetd は以下の TELNET オプションをクライアント側に送信して、これらの TELNET オプションの使用を希望している事を伝えます。 これらのオプションの詳細はついては以下に説明されています。

    DO AUTHENTICATION
    WILL ENCRYPT
    DO TERMINAL TYPE
    DO TSPEED
    DO XDISPLOC
    DO NEW-ENVIRON
    DO ENVIRON
    WILL SUPPRESS GO AHEAD
    DO ECHO
    DO LINEMODE
    DO NAWS
    WILL STATUS
    DO LFLOW
    DO TIMING-MARK

クライアントに割り当てられた疑似端末は、 “cooked” モードで動作し、 XTABS と CRMOD (tty(4) 参照) が可能な状態で操作するように設定されます。

telnetd は、ローカル側で有効な以下に示す TELNET オプションをサポートしています:

WILL ECHO
    LINEMODE オプションが設定されている時に 端末エコーの現在の状態を示すためにクライアントに WILL ECHO あるいは WONT ECHO 送信されます。 端末エコーが不要な場合は、telnetdがエコーが必要なデータに対する エコーを処理する事を示すために WILL ECHO が送信され、何もエコーされません。 端末エコーが必要な場合は、telnetd がいかなるターミナルエコーも 行わない事を示すために WONT ECHO が送信されるので、必要な時はターミナルエコーをクライアント側が 行わなければなりません。

WILL BINARY
    クライアントが、通常のネットワーク仮想端末が用いる 7 ビットのデータ ではなく、8 ビットのデータを送信するように指定します。

WILL SGA
    IAC GA すなわち go ahead コマンドを送信しないように指定します。

WILL STATUS
    クライアントから要求があった時に、全ての TELNET オプションの現在の状況を送信するように指定します。

WILL TIMING-MARK
    DO TIMING-MARK コマンドが受信された場合に、常にそれに対して WILL TIMING-MARK を返答します。

WILL LOGOUT
    DO LOGOUT が受信されると WILL LOGOUT を返答し、 TELNET セッションはシャットダウンされます。

WILL ENCRYPT
    telnetd がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号の復号するように指定します。

telnetd はリモート側で有効な以下に示す TELNET オプションをサポートしています:

DO BINARY
    telnetd が8ビットのデータ列を受信するように指定します。

DO LFLOW
    クライアントがフロー制御文字をリモート側で処理するように指定します。

DO ECHO
    このコマンドは実際にはサポートされないが、クライアントが 4.2BSD telnet(1) クライアント (WIL ECHO に正しく応答しない) であるかを判断するために送信されます。 もし、 WILL ECHO が受信された場合は、それに対して DONT ECHO が送信されます。

DO TERMINAL-TYPE
    接続のクライアント側に割り当てられたターミナルタイプの名前を 要求できるように指定します。

DO SGA
    IAC GA すなわち go ahead コマンドを受信する必要がないように指定します。

DO NAWS
    ウィンドウ(ディスプレイ)のサイズが代った場合に、クライアントが それをサーバーに知らせる事を要求します。

DO TERMINAL-SPEED
    クライアントに割り当てられたシリアルラインの速度に関する情報を 要求できるように指定します。

DO XDISPLOC
    telnetクライアントが使用しているXウィンドウのディスプレイの名前を 要求できるように指定します。

DO NEW-ENVIRON
    RFC 1572 に示されている環境変数に関する情報を 要求できるように指定します。

DO ENVIRON
    RFC 1408 に示されている環境変数に関する情報を 要求できるように指定します。

DO LINEMODE
    telnetd が linemode をサポートする設定で構築された場合のみ送信され、 クライアントに行単位の処理を行う事を要求します。

DO TIMING-MARK
    telnetd が linemode および kludge linemode の両方をサポートする設定で 構築され、クライアントが WONT LINEMODE を返信した場合のみ送信されます。 クライアントが WILL TM を返信した場合は、クライアントが kludge linemode を サポートしていると判断されます。 [-k] オプションによりこの機能を無効にする事ができます。

DO AUTHENTICATION
    telnetd が認証機能をサポートする設定で構築された場合のみ送信され、 自動ログインに使用する認証情報を受信するようにします。

DO ENCRYPT
    telnetd がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号の復号するように指定します。

サイト依存のコマンドを実行するため、 telnetd はログインセッションの終りに、 ttyaction(3) ファシリティを、アクションが "telnetd" で、ユーザを "root" にして 実行します。

関連ファイル
/etc/services
/etc/inittab (UNICOS システムのみ)
/etc/iptos (サポートされている場合)

関連項目
login(1), skey(1), telnet(1), ttyaction(3)

標準
RFC-854
    TELNET PROTOCOL SPECIFICATION
RFC-855
    TELNET OPTION SPECIFICATIONS
RFC-856
    TELNET BINARY TRANSMISSION
RFC-857
    TELNET ECHO OPTION
RFC-858
    TELNET SUPPRESS GO AHEAD OPTION
RFC-859
    TELNET STATUS OPTION
RFC-860
    TELNET TIMING MARK OPTION
RFC-861
    TELNET EXTENDED OPTIONS - LIST OPTION
RFC-885
    TELNET END OF RECORD OPTION
RFC-1073
    Telnet Window Size Option
RFC-1079
    Telnet Terminal Speed Option
RFC-1091
    Telnet Terminal-Type Option
RFC-1096
    Telnet X Display Location Option
RFC-1123
    Requirements for Internet Hosts -- Application and Support
RFC-1184
    Telnet Linemode Option
RFC-1372
    Telnet Remote Flow Control Option
RFC-1416
    Telnet Authentication Option
RFC-1411
    Telnet Authentication: Kerberos Version 4
RFC-1412
    Telnet Authentication: SPX
RFC-1571
    Telnet Environment Option Interoperability Issues
RFC-1572
    Telnet Environment Option

バグ
いくつかの TELNET コマンドは部分的にしか実装されていまいません。

オリジナルの 4.2BSD の telnet(1) のバグに対処するため、 telnetd は、ある種のあいまいなプロトコル変換を行うことにより、 リモートクライアントが実際に 4.2BSD の telnet(1) であるかどうかを判断しようとします。

バイナリモードは、よく似たオペレーティングシステム (この場合 UNIX ) 間以外では互換性がありません。

リモートクライアントから受け取った端末タイプの名前は小文字に変換されます。

telnetd は、 TELNET IAC GA (go ahead) コマンドを絶対に送りません。