rlogind —
リモートログインサーバ
rlogind [
-ahlLn]
rlogind は
rlogin(1)
プログラムのためのサーバである。
このサーバは、信頼できるホストからの特権ポート番号に基づいた認証を用いて、
リモートログイン機能を提供する。
rlogind
がサポートするオプションは、以下の通りである:
- -a
- 検証のために、ホスト名を問い合わせる。
- -h
- スーパーユーザーの
“.rhosts”
ファイルの使用を許可する。
- -l
- ユーザーの
“.rhosts”
ファイルによる認証を行わせない。
ユーザーがスーパーユーザーとしてログインしている場合に、
-h
オプションが使われると、
“.rhosts”
による認証処理が行われる。
- -L
- “.rhosts” や
“hosts.equiv”
の情報に基づく認証を行わせない。
- -n
- キープアライブメッセージを使わせない。
PAM (Pluggable Authentication Module)
サポートが使用中である場合、
-h, -l, -L
フラグは使われない。
この場合
/etc/pam.conf
を編集することで、同様の効果を得ることができる。
-h と
-l
オプションを、システムにインストールされている
特定のバージョンの libc
とともに使う場合は、
期待通りに動作するかを検証せずに信頼すべきではない
(また、libc
を更新した後にはテストすべきである)。
なぜなら、libc
のいくつかのバージョンでは
rlogind
で使われる内部フラグの通りには動作しない。
-L オプションは libc
の関数を完全にバイパスするので、
この問題には影響を受けない。
.rhosts
システムの設計は、
ファイアーウォールで慎重に保護されたプライベートネットワーク以外では、
「全く安全性がない」ことにも注意すること。
それ以外の環境下では、常に
-L
オプションを使うこと。
更に、
rlogind
は通信を暗号化しないので、一般的に言うと、本当に使うべきではない。
ssh(8)
の使用を考慮に入れること。
rlogind は、``login''
サービスの仕様に基づくポート番号で、
サービス要求を受け付ける。
services(5)
を参照すること。
サービスの要求を受け取ると、以下のプロトコルを開始する:
- サーバはクライアントの要求元ポート番号を調べる。
このポート番号が 512
〜 1023
の範囲でない場合、
サーバは接続を中止する。
- サーバはクライアントの要求元
IP アドレスを調べ、
それに対応するホスト名を求める
(gethostbyaddr(3), hosts(5,)
named(8)
を参照すること)。
ホスト名が決定できない場合、
ドット表記法によるホストアドレスが使われる。
(ドメイン名の後ろから
2
つを使って判断した)
ホスト名がサーバと同じドメインの場合、
または -a
オプションが指定されている場合、
ホスト名に対するアドレスが求められ、
ホスト名とアドレスが一致しているかを検証する。
アドレスの検証に失敗した場合、通常の認証作業を行わない。
要求元のポート番号とアドレスが検証されると、
rlogind は
rshd(8)
で説明されている認証プロセスを開始する。
そして、疑似端末
(
pty(4) を参照)
を割り当てるとともに、ファイルディスクリプタを操作する。
これにより、疑似端末のスレーブ側がログインプロセスの
stdin,
stdout,
stderr
になる。
認証が成功した場合、
login(1) プログラムに
-f
オプションを指定して起動し、
ログインプロセスを生成する。
自動認証が失敗した場合、通常の端末回線からのログインと同様に、
ユーザーにログインのプロンプトが出される。
ログインプロセスの親プロセスは、疑似端末のマスタ側を操作する。
これは、ログインプロセスと
rlogin
プログラムを実体化したものとの間を仲介する役割をする。
通常の操作では、
‘
^S/^Q
’
のような機能を提供したり、
割り込み信号をリモートプログラムに伝えるために、
pty(4)
で説明されているパケットプロトコルを起動する。
ログインプロセスは、
クライアント端末の通信速度や環境変数
‘
TERM
’
で指定されている端末タイプを伝える。
environ(7)
を参照すること。
端末のスクリーンサイズやウインドウサイズがクライアント側から要求される。
そして、クライアントから変更されたウインドウサイズは、
疑似端末へと伝えられる。
トランスポートレベルのキープアライブメッセージは、
-n
オプションが指定されていない限り出力される。
キープアライブメッセージを使うと、
クライアントがクラッシュしたり、通信不能になった場合に、
セッションをタイムアウトで終了することが可能になる。
返り値¶
ネットワーク接続が切断された後、
全ての初期診断メッセージは、先頭に値
1
のバイトを付けて通知される。
login
が起動される前にエラーが発生していない場合、
成功したことを通知するために、ヌル文字のバイトが返される。
- Try
again.
- サーバが fork
に失敗した。
関連項目¶
login(1),
ruserok(3),
rshd(8)
ここで使われる認証手続きは、それぞれのクライアントマシンと
接続媒体が完全であることを仮定している。
これは安全ではないが、「オープンな」環境では便利である。
通信する全てのデータを暗号化する機能が提供されるべきである。
もっと発展性のあるプロトコルが用いられるべきである。
rlogind コマンドは
4.2BSD
で登場した。
翻訳者謝辞¶
この man
ページの翻訳にあたり、
FreeBSD jpman project <
http://www.jp.freebsd.org/man-jp/>
による翻訳を参考にさせていただいた。