RLOGIND(8)

名称
rlogind - リモートログインのサーバ

書式
rlogind [-alnL]

解説
rlogind は、 rlogin(1) プログラム用のサーバです。サーバは信頼できるホストからの 特権ポート番号のポートを使った認証を用いて、リモートログイン機能を提供します。 rlogind でサポートしているオプションは以下の通りです:

-a  検証のために、ホスト名を問い合わせます。

-l  ユーザがスーパユーザとしてログインしない限り、 一般ユーザの “.rhosts” による、あらゆる認証を禁止します。

-n  キープアライブメッセージを禁止します。

-L  アクセスに成功した場合は全て、その旨を syslogd(8) の auth.info メッセージとしてログに残します。

rlogind は、``login'' サービスの仕様で指示されているポートで、要求を listen します。 詳しくは services(5) を参照してください。サービス要求を受信すると、以下のプロトコルを開始します:

1.  サーバはクライアントのソースポート番号を調べます。 もしポート番号が 512-1023 の範囲外であれば、サーバは接続を強制切断します。

2.  サーバはクライアントのソースアドレスを調べ、それに対応するホスト名を 求めます (gethostbyaddr(3), hosts(5), named(8) を参照してください)。 ホスト名を特定できなければ、ホストアドレスをドット記法で 表わしたものを用います。 ホスト名がサーバと同じドメインに属しているか (ドメイン名の最後の 2 パート に基づいて判断します)、あるいは -a オプションが指定されていたならば、ホスト名に対するアドレスを調べて、 名前とアドレスが一致しているかどうかを検証します。 アドレスの検証に失敗した場合は、通常の認証作業は行いません。

ソースポートとアドレスを調べ終えたら、 rlogind は、 rshd(8) で説明している認証作業を開始します。 そして、疑似端末 (pty(4) を参照のこと) を 1 つ確保し、ファイルディスクリプタを操作して、 この疑似端末のスレーブ側がログインプロセスの stdin, stdout, stderr になるようにします。 認証作業が成功した場合には、 login(1) プログラムに -f オプションを指定してログインプロセスを生成します。 自動認証作業に失敗した場合には、 通常のターミナルラインからのログインの場合と同様に、 プロンプトを出力してユーザに問い合わせます。

ログインプロセスの親プロセスは、疑似端末のマスター側を操作します。 すなわちログインプロセスと、クライアント側の rlogin(1) プログラムを実体化したものとの間で処理を行います。 通常の処理においては、 ‘^S/^Q’ のような機能を提供したり、割り込みシグナルをリモートプログラムへと 伝えるために、 pty(4) で説明しているパケットプロトコルを起動します。 ログインプロセスは、クライアントのターミナルの通信速度を伝え、 環境変数 ‘TERM’ の値を terminal type として伝えます。これについては environ(7) を参照してください。 クライアント側から端末の画面、あるいはウィンドウの大きさが問い合わせられ、 クライアントからのウィンドウサイズの変更が疑似端末へと伝えられます。

トランスポートレベルのキープアライブメッセージは、オプション -n が指定されていない限り出力されます。 キープアライブメッセージを利用することにより、 クライアントがクラッシュしたり、ネットワーク的に到達不可能になった場合に、 セッションをタイムアウトで終了させることが可能となります。

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

診断
すべての診断メッセージは、ネットワーク接続が切断された後に、 値 1 を持つ 1 バイトのデータが先頭に付加されて通知されます。 login(1) が起動される前までにエラーが発生しなかった場合には、 処理成功の通知のために、null バイトが返却されます。

Try again.
    サーバが fork(2) に失敗したことを表します。

関連項目
login(1), ruserok(3), ttyaction(3), rshd(8)

バグ
このコマンドが用いている認証手続きは、それぞれのクライアントマシンと 接続媒体が信頼できるものと仮定しています。これはセキュアだとは 言えませんが、``オープン''な環境においては有用な方針です。

全てのデータ交換を暗号化する機能を提供するべきです。

もっと拡張性のあるプロトコルを使うべきです。

歴史
rlogind コマンドは 4.2BSD から登場しました。