rlogin コマンドを使用すると、リモートシステムにログインできます。ログインした後は、リモートファイルシステム内で移動し、その内容を (リモートシステムによる承認にしたがって) 操作したり、ファイルをコピーしたり、リモートコマンドを実行したりできます。
ログイン先のシステムがリモートドメインに所属している場合は、システム名にドメイン名を追加してください。次の例では、SOLAR はリモートドメイン名です。
rlogin pluto.SOLAR
また、Control-d と入力すると、リモートログイン処理をいつでも中断できます。
rlogin 処理の認証 (ログインするユーザーの確認処理) は、リモートシステムまたはネットワーク環境で実行されます。
この 2 つの認証形式の主な違いは、要求される対話操作と、認証の確立方法にあります。リモートシステムがユーザーを認証しようとする場合に、/etc/hosts.equiv または .rhosts ファイルを設定していなければ、パスワードの入力を促すプロンプトが表示されます。ネットワークがユーザーを認証しようとする場合は、ユーザーはすでにネットワークに認識されているので、パスワードプロンプトは表示されません。図 46-2 は、リモートログインの認証処理を簡単に表したものです。
リモートシステムは、ユーザーを認証するときに、特に次のどちらかの場合にはローカルファイル内の情報を利用します。
システム名とユーザー名がリモートシステムの /etc/hosts.equiv ファイルに入っている場合
ネットワークによる認証は、次のどちらかの場合に利用されます。
通常は、ネットワークによる認証がシステムによる認証より優先されます。
/etc/hosts.equiv ファイルには、リモートシステムの「信頼される (trusted) ホスト」が 1 行に 1 つずつ入っています。ユーザーがこのファイルに含まれるホストから (rlogin を使用して) リモートログインしようとする場合、リモートシステムがそのユーザーのパスワードエントリにアクセスできれば、ユーザーはパスワードを入力しなくてもログインできます。
典型的な hosts.equiv ファイルの構造は次のとおりです。
host1 host2 user_a +@group1 -@group2
上記の host1 のように、ホスト名だけのエントリであれば、そのホストが信頼されているため、そのマシン上のユーザーも信頼できることを意味します。
この例の第 2 のエントリのようにユーザー名も含まれていると、その指定されたユーザーがアクセスしようとする場合にのみ、そのホストが信頼されます。
グループ名の先頭にプラス記号 (+) が付いている場合は、そのネットグループ内のすべてのマシンが信頼されていることを意味します。
グループ名の先頭にマイナス記号 (-) が付いている場合は、そのネットグループ内には信頼できるマシンがないことを意味します。
/etc/hosts.equiv ファイルにはセキュリティ上の問題があります。/etc/hosts.equiv ファイルをシステム上で管理する場合は、ネットワーク内で信頼されるホストのみを含めるようにしてください。このファイルには、別のネットワークに所属するホストや、公共で利用されるマシンを含めないでください (たとえば、端末室に設置されているホストは含めないでください)。
このような信頼できないホストを含んでいると、セキュリティの面で重要な問題を引き起こす可能性があります。/etc/hosts.equiv ファイルを正しく構成されたファイルと置き換えるか、またはファイルを削除してください。
/etc/hosts.equiv ファイルに + のみの 1 行しか入っていない場合は、認識されているすべてのホストが信頼されることを示します。
.rhosts ファイルは、/etc/hosts.equiv ファイルに対応するユーザー用のファイルです。このファイルには、通常、ホストとユーザーの組み合わせのリストが入っています。このファイルにホストとユーザーの組み合わせが含まれている場合、そのユーザーには、パスワードを入力しなくても、そのホストからリモートログインする許可が与えられます。
.rhosts ファイルはユーザーのホームディレクトリの一番上のレベルに置かれていなければなりません。サブディレクトリに置かれている .rhosts ファイルは参照されません。
ユーザーは、各自のホームディレクトリ内で .rhosts ファイルを作成できます。.rhosts ファイルを使用することによって、/etc/hosts.equiv ファイルを使用しなくても、異なるシステムのアカウント間で信頼できるアクセスを行うことができます。
.rhosts ファイルにはセキュリティ上、重大な問題があります。/etc/hosts.equiv ファイルはシステム管理者の制御下にあり、効率よく管理できますが、誰でも .rhosts ファイルを作成して、システム管理者が知らないうちに自分が選んだユーザーにアクセス権を与えることができます。
すべてのユーザーのホームディレクトリが 1 台のサーバー上にあって、特定のユーザーだけがそのサーバーに対してスーパーユーザーのアクセス権を持っている場合、ユーザーが .rhosts ファイルを使用できないようにするためには、スーパーユーザーとして、空の .rhosts ファイルを各ユーザーのホームディレクトリに作成します。次に、このファイルのアクセス権を 000 に変更します。こうしておけば、スーパーユーザーでも、そのファイルを変更することが難しくなります。これにより、ユーザーが .rhosts を無責任に使用することによって生じるセキュリティ問題を防ぐことができます。ただし、ユーザーが自分のホームディレクトリへの実効パスを変更できる場合、この方法は、何の解決にもなりません。
.rhosts ファイルを確実に管理する唯一の方法は、それを完全に使用できないようにすることです。詳しくは、「.rhosts ファイルを検索して削除する方法」を参照してください。システム管理者は、システムを頻繁にチェックして、このポリシーに対する違反を調べることができます。このポリシーに対する例外は、root アカウントです。ネットワークのバックアップや他のリモートサービスを実行するには、.rhosts ファイルが必要な場合があります。
システムが正しく構成されていれば、リモートログインをリンクできます。次の例では、earth 上のユーザーが jupiter にログインし、そこから pluto にログインします。
もちろん、このユーザーは jupiter からログアウトして pluto に直接ログインすることもできますが、このリンク方法の方が便利です。
パスワードを入力せずにリモートログインをリンクするには、/etc/hosts.equiv または .rhosts を正しく設定しておかなければなりません。
rlogin コマンドを使用すると、図 46-3 のように、リモートシステムに直接または間接的にログインできます。
直接リモートログインは、デフォルトのユーザー名、つまり、その時点でローカルシステムにログインしているユーザーのユーザー名を使用して行われます。これは、最も一般的なリモートログイン形式です。
間接リモートログインは、リモートログイン処理中に別のユーザー名を入力することによって行います。これは、一時的に借りているワークステーションから行うタイプのリモートログインです。たとえば、同僚のオフィスにいるときに自分のホームディレクトリ内でファイルを調べたい場合は、同僚のシステムから自分のシステムにリモートログインできますが、自分のユーザー名を入力して間接リモートログインを実行することになります。
次の表 46-1 は、直接ログインや間接ログインと認証方式の依存関係を示しています。
表 46-1 ログイン方式と認証方式 (rlogin) の依存関係
ログイン方式 |
ユーザー名の提供 |
認証 |
パスワード |
---|---|---|---|
直接 |
システム |
ネットワーク |
なし |
|
|
システム |
必要 |
間接 |
ユーザー |
ネットワーク |
なし |
|
|
システム |
必要 |
リモートシステムにログインするときに、rlogin コマンドはホームディレクトリを見つけようとします。ホームディレクトリが見つからなければ、リモートシステムのルートディレクトリ (/) が割り当てられます。たとえば、次のようになります。
Unable to find home directory, ログイン with /
ただし、rlogin コマンドがホームディレクトリを見つけると、.cshrc ファイルと .login ファイルを生成します。したがって、リモートログイン後は、プロンプトが標準ログインプロンプトになり、現在のディレクトリはローカルにログインするときと同じになります。
たとえば、通常のプロンプトにシステム名と作業用ディレクトリが表示される場合と、ログイン時の作業用ディレクトリがホームディレクトリの場合、ログインプロンプトは次のようになります。
earth(/home/smith):
リモートシステムにログインすると、同じようなプロンプトが表示され、rlogin コマンドをどのディレクトリから入力したかに関係なく、作業用ディレクトリがホームディレクトリになります。
earth(/home/smith):rlogin pluto . . . pluto(/home/smith):
唯一の違いは、プロンプトの先頭にローカルシステムではなくリモートシステムの名前が表示されることです。その場合、リモートファイルシステムはどこにあるでしょうか。次の図のようにホームディレクトリと並んで存在します。
つまり、cd を使って /home に移動してから ls を実行すると、次のように表示されます。
earth(home/smith): cd .. earth(/home): ls smith jones
find(1) コマンドを使用し、.rhosts ファイルを検索して削除します。
# find home-directories -name .rhosts -print -exec rm{}
home-directories |
ユーザーのホームディレクトリがあるディレクトリへのパス。複数のパスを指定すると、複数のホームディレクトリを一度に検索できる。 |
-name .rhosts |
ここでは .rhosts を指定する。 |
|
現在のパス名を出力する。 |
-exec rm {} ¥; |
指定したファイル名に一致するファイルすべてに、rm コマンドを適用するように find コマンドに伝える。 |
find コマンドは、指定したディレクトリから始めて .rhosts というファイルを検索します。ファイルが見つかると、そのパスを画面に出力して削除します。
次の例では、/export/home ディレクトリ内で、すべてのユーザーのホームディレクトリ内の .rhosts ファイルを検索し、削除します。
# find /export/home -name .rhosts -print | xargs -i -t rm{}
ping(1M) コマンドを使用して、リモートシステムが動作中かどうかを調べます。
$ ping system-name | ip-address
system-name |
リモートシステムの名前 |
ip-address |
リモートシステムの IP アドレス |
ping コマンドは、次の 3 つのメッセージのどれかを返します。
状態メッセージ |
意味 |
---|---|
system-name is alive |
このシステムにはネットワーク経由でアクセスできる。 |
ping:unknown host system-name |
未知のシステム名 |
システムは認識されるが、現在は動作していない。 |
ping を実行した対象のシステムが別のドメイン内にある場合は、出力メッセージにルーティング情報も含まれることがありますが、これは無視してかまいません。
ping コマンドのタイムアウトは 20 秒です。つまり、20 秒以内に応答がなければ、第 3 のメッセージを返します。 time-out 値を秒単位で入力すると、ping の待ち時間を増減させることができます。
$ ping system-name | ip-address time-out
詳細は、ping(1M) のマニュアルページを参照してください。
rusers(1M) コマンドを使用して、リモートシステムにログインしているユーザーを検索します。
$ rusers [-l] remote-system-name
rusers |
(オプションなし) システム名と、root など現在ログインしているユーザー名を表示する。 |
-l |
ユーザーのログインウィンドウ、ログイン日時、ログインしている時間、ユーザーのログイン元のリモートシステム名など、各ユーザーの詳細な情報を表示する。 |
次の例は、rusers の短い形式の出力を示しています。
$ rusers pluto pluto smith jones
次の例で、rusers の長い形式の出力は、2 人のユーザーがリモートシステム pluto にログインしていることを示しています。第 1 のユーザーは 11 月 18 日にシステムコンソールからログインし、ログイン時間は 4 時間 10 分でした。第 2 のユーザーは同じ日にリモートシステム mars からログインし、ログイン時間は同程度でした。
$ rusers -l pluto smith pluto:console Nov 18 09:19 4:10 jones mars:console Nov 18 09:20 4:11 (mars)
rlogin(1) コマンドを使用してリモートシステムにログインします。
$ rlogin [-l user-name] system-name
rlogin |
(オプションなし) リモートシステムに直接、つまり現在のユーザー名を使用してログインする。 |
-l user-name |
リモートシステムに間接的に、つまり入力するユーザー名を使用してログインする。 |
ネットワークがユーザーを認証しようとする場合には、パスワードを求めるプロンプトは表示されません。リモートシステムがユーザーを認証しようとする場合は、パスワードの入力を求めるプロンプトが表示されます。
操作が成功すると、rlogin コマンドは、そのシステムへの前回のリモートログイン、リモートシステム上で動作中のオペレーティングシステムのバージョン、ホームディレクトリに未処理のメールがあるかどうかに関して、簡潔な情報を表示します。
次の例は、pluto へ直接リモートログインした出力結果を示しています。このユーザーはネットワークから認証されています。
$ rlogin pluto Last login: Tue Apr 29 12:53:40 from earth Sun Microsystems Inc. SunOS 5.6 August 1997 You have mail. pluto%
次の例は、pluto へ間接リモートログインした出力結果を示しています。この場合、ユーザーはリモートシステムから認証されています。
$ rlogin -l smith pluto password: user-password Last login: Tue Apr 29 12:53:40 from earth Sun Microsystems Inc. SunOS 5.6 August 1997 You have mail. pluto%
exit(1) コマンドを使用して、リモートシステムからログアウトします。
$ exit
次の例は、ユーザー smith がシステム pluto からログアウトする様子を示しています。
$ exit pluto% logout Connection closed. earth%