Solaris のシステム管理 (ネットワークサービス)

リモートシステムへのログイン (rlogin)

rlogin コマンドを使用すると、リモートシステムにログインできます。ログインした後は、リモートファイルシステム内で移動し、その内容を (リモートシステムによる承認にしたがって) 操作したり、ファイルをコピーしたり、リモートコマンドを実行したりできます。

ログイン先のシステムがリモートドメインに属している場合は、必ずシステム名にドメイン名を追加してください。次の例では、SOLAR はリモートドメイン名です。

rlogin pluto.SOLAR

また、Control-d と入力すると、リモートログイン処理をいつでも中断できます。

リモートログイン (rlogin) の認証

rlogin 処理の認証 (ログインするユーザーの確認処理) は、リモートシステムまたはネットワーク環境で実行されます。

この 2 つの認証形式の主な違いは、要求される対話操作と、認証の確立方法にあります。リモートシステムがユーザーを認証しようとする場合に、/etc/hosts.equiv または .rhosts ファイルを設定していなければ、パスワードの入力を促すプロンプトが表示されます。ネットワークがユーザーを認証しようとする場合は、ユーザーはすでにネットワークに認識されているので、パスワードプロンプトは表示されません。

リモートシステムがユーザーを認証しようとする場合は、特に次のいずれかに該当する場合は、リモートシステム上のローカルファイル内の情報を使用した認証が行われます。

ネットワークによる認証は、次のどちらかの場合に利用されます。


注 –

通常は、ネットワークによる認証がシステムによる認証より優先されます。


/etc/hosts.equiv ファイル

/etc/hosts.equiv ファイルには、リモートシステムの「信頼されるホスト」が 1 行に 1 つずつ入っています。ユーザーがこのファイルに含まれるホストから (rlogin を使用して) リモートログインしようとする場合、リモートシステムがそのユーザーのパスワードエントリにアクセスできれば、ユーザーはパスワードを入力しなくてもログインできます。

典型的な hosts.equiv ファイルの構造は次のとおりです。


host1
host2 user_a
+@group1
-@group2

上記の host1 のエントリのように、hosts.equiv にホストに対して 1 つのエントリが記述されていれば、そのホストは信頼されているため、そのマシン上のユーザーも信頼できることを意味します。

この例の第 2 のエントリのようにユーザー名も含まれていると、その指定されたユーザーがアクセスしようとする場合にのみ、そのホストが信頼されます。

グループ名の先頭にプラス記号 (+) が付いている場合は、そのネットグループ内のすべてのマシンが信頼されていることを意味します。

グループ名の先頭にマイナス記号 (–) が付いている場合は、そのネットグループ内には信頼できるマシンがないことを意味します。

/etc/hosts.equiv ファイルを使用する場合のセキュリティーの問題

/etc/hosts.equiv ファイルにはセキュリティー上の問題があります。/etc/hosts.equiv ファイルをシステム上で管理する場合は、ネットワーク内で信頼されるホストのみを含めるようにしてください。別のネットワークに所属するホストまたは公共領域にあるマシンを追加しないでください。たとえば、端末室に置かれているホストは追加しないでください。

信頼できないホストを使用すると、重大なセキュリティー上の問題が発生する可能性があります。/etc/hosts.equiv ファイルを正しく構成されたファイルと置き換えるか、ファイルを削除してください。

/etc/hosts.equiv ファイルに + のみの 1 行しか入っていない場合は、認識されているすべてのホストが信頼されることを示します。

.rhosts ファイル

.rhosts ファイルは、/etc/hosts.equiv ファイルに対応するユーザー用のファイルです。このファイルには、通常、ホストとユーザーの組み合わせのリストが入っています。このファイルにホストとユーザーの組み合わせが含まれている場合、そのユーザーには、パスワードを入力しなくても、そのホストからリモートログインする許可が与えられます。

.rhosts ファイルはユーザーのホームディレクトリの一番上のレベルに置かれていなければなりません。サブディレクトリに置かれている .rhosts ファイルは参照されません。

ユーザーは、各自のホームディレクトリ内で .rhosts ファイルを作成できます。.rhosts ファイルを使用することによって、/etc/hosts.equiv ファイルを使用しなくても、異なるシステムのユーザー自身のアカウント間で信頼できるアクセスを行うことができます。

.rhosts ファイルを使用する場合のセキュリティーの問題

.rhosts ファイルにはセキュリティー上、重大な問題があります。/etc/hosts.equiv ファイルはシステム管理者の制御下にあり、効率よく管理できますが、だれでも .rhosts ファイルを作成して、システム管理者が知らないうちに自分が選んだユーザーにアクセス権を与えることができます。

すべてのユーザーのホームディレクトリが 1 台のサーバー上にあって、特定のユーザーだけがそのサーバーに対してスーパーユーザーのアクセス権を持っている場合、ユーザーが .rhosts ファイルを使用できないようにするためには、スーパーユーザーとして、空の .rhosts ファイルを各ユーザーのホームディレクトリに作成します。次に、このファイルのアクセス権を 000 に変更します。こうしておけば、スーパーユーザーでも、そのファイルを変更することが難しくなります。これにより、ユーザーが .rhosts を無責任に使用することによって生じるセキュリティー問題を防ぐことができます。ただし、ユーザーが自分のホームディレクトリへの実効パスを変更できる場合、この方法は何の解決にもなりません。

.rhosts ファイルを確実に管理する唯一の方法は、それを完全に使用できないようにすることです。詳細は、.rhosts ファイルを検索して削除する方法」を参照してください。システム管理者は、システムを頻繁にチェックして、このポリシーに対する違反を調べることができます。このポリシーに対する例外は、root アカウントです。ネットワークのバックアップや他のリモートサービスを実行するには、.rhosts ファイルが必要な場合があります。

リモートログインのリンク

システムが正しく構成されていれば、リモートログインをリンクできます。たとえば、earth 上のユーザーが jupiter にログインし、そこから pluto にログインします。

このユーザーは jupiter からログアウトして pluto に直接ログインすることもできますが、このリンク方法の方が便利です。

パスワードを入力せずにリモートログインをリンクするには、/etc/hosts.equiv または .rhosts ファイルを正しく設定しておく必要があります。

直接リモートログインと間接リモートログイン

rlogin コマンドにより、リモートシステムに直接的または間接的にログインできます。

直接リモートログインは、デフォルトユーザー名、すなわち現在ローカルシステムにログインしている個人のユーザー名を使用します。これは、最も一般的なリモートログイン形式です。

間接リモートログインは、リモートログイン処理中に別のユーザー名を入力することによって行います。これは、一時的に借りているワークステーションから行うタイプのリモートログインです。たとえば、ユーザーが同僚のオフィスにいるときに自分のホームディレクトリに置かれているファイルを確認する必要がある場合、同僚のシステムからリモートで自分のシステムにログインすることができます。この場合、自分のユーザー名を入力して間接リモートログインを実行することになります。

次の表は、直接ログインや間接ログインと認証方式の依存関係を示しています。

表 29–2 ログイン方式と認証方式 (rlogin) の依存関係

ログイン方式 

ユーザー名の提供 

認証 

パスワード 

直接 

システム 

ネットワーク 

なし 

 

 

システム 

必要 

間接 

ユーザー 

ネットワーク 

なし 

 

 

システム 

必要  

リモートログイン後の処理

リモートシステムにログインするときに、rlogin コマンドはホームディレクトリを見つけようとします。ホームディレクトリが見つからなければ、リモートシステムのルートディレクトリ (/) が割り当てられます。次に例を示します。


Unable to find home directory, logging in with / 

ただし、rlogin コマンドがホームディレクトリを見つけると、.cshrc ファイルと .login ファイルを生成します。したがって、リモートログイン後は、プロンプトが標準ログインプロンプトになり、現在のディレクトリはローカルにログインするときと同じになります。

たとえば、通常のプロンプトにシステム名と作業用ディレクトリが表示される場合と、ログイン時の作業用ディレクトリがホームディレクトリの場合、ログインプロンプトは次のようになります。


earth(/home/smith):

リモートシステムにログインすると、同じようなプロンプトが表示され、rlogin コマンドをどのディレクトリから入力したかに関係なく、作業用ディレクトリがホームディレクトリになります。


earth(/home/smith): rlogin pluto
.
.
.
pluto(/home/smith):

唯一の違いは、プロンプトの先頭にローカルシステムではなくリモートシステムの名前が表示されることです。リモートファイルシステムは、ホームディレクトリと並んで存在します。

/home ディレクトリに移動して ls を実行すると、次のように表示されます。


earth(home/smith): cd ..
earth(/home): ls
smith  jones

Procedure.rhosts ファイルを検索して削除する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. find(1) コマンドを使用し、.rhosts ファイルを検索して削除します。


    # find home-directories -name .rhosts -print -exec rm {} \;
    
    home-directories

    ユーザーのホームディレクトリがあるディレクトリへのパス。複数のパスを指定すると、複数のホームディレクトリを一度に検索できる

    -name .rhosts

    ここでは .rhosts を指定する

    -print

    現在のパス名を出力する

    -exec rm {} \;

    指定したファイル名に一致するファイルすべてに、rm コマンドを適用するように find コマンドに伝える

    find コマンドは、指定したディレクトリから始めて .rhosts というファイルを検索します。ファイルが見つかると、find はファイルのパスを画面上に表示し、ファイルを削除します。


例 29–1 .rhosts ファイルを検索して削除する

次の例では、/export/home ディレクトリ内で、すべてのユーザーのホームディレクトリ内の .rhosts ファイルを検索し削除します。


# find /export/home -name .rhosts -print | xargs -i -t rm {} \;

リモートシステムが動作中かどうかを調べる方法

ping コマンドを使用して、リモートシステムが動作中かどうかを調べます。


$ ping system-name | ip-address
system-name

リモートシステム名

ip-address

リモートシステムの IP アドレス

ping コマンドは、次の 3 つのメッセージのどれかを返します。

状態メッセージ 

意味 

system-name is alive

このシステムにはネットワーク経由でアクセスできる 

ping: unktawn host system-name

未知のシステム名 

ping: no answer from system-name

システムは認識されるが、現在は動作していない  

ping を実行した対象のシステムが別のドメイン内にある場合は、出力メッセージにルーティング情報も含まれることがありますが、これは無視してかまいません。

ping コマンドのタイムアウトは 20 秒です。つまり、20 秒以内に応答がなければ、第 3 のメッセージを返します。time-out 値を秒単位で入力すると、ping の待ち時間を増減させることができます。


$ ping system-name | ip-address time-out

詳細は、ping(1M) のマニュアルページを参照してください。

リモートシステムにログインしているユーザーを検索する方法

rusers(1) コマンドを使用して、リモートシステムにログインしているユーザーを検索します。


$ rusers [-l] remote-system-name
rusers

(オプションなし) システム名と、root など現在ログインしているユーザー名を表示する

-l

各ユーザーの詳細な情報を表示する。 ユーザーのログインウィンドウ、ログイン日時、ログインしている時間、ユーザーのログイン元のリモートシステム名など


例 29–2 リモートシステムにログインしているユーザーを検索する

次の例は、rusers の短い形式の出力を示しています。


$ rusers pluto
pluto    smith  jones

次の例では、rusers の長い形式の出力は、2 人のユーザーがリモートシステム starbug にログインしていることを示します。第 1 のユーザーは 9 月 10 日にシステムコンソールからログインし、ログイン時間は 137 時間 15 分でした。第 2 のユーザーはリモートシステム mars から 9 月 14 日にログインしました。


$rusers -l starbug
root         starbug:console           Sep 10 16:13  137:15
rimmer       starbug:pts/0             Sep 14 14:37         (mars)

リモートシステムにログインする方法 (rlogin)

rlogin(1) コマンドを使用してリモートシステムにログインします。


$ rlogin [-l user-name] system-name
rlogin

(オプションなし) 現在のユーザー名を使用して、リモートシステムに直接ログインする

-l user-name

ユーザー名を入力して、リモートシステムに間接的にログインする

ネットワークがユーザーを認証しようとする場合には、パスワードを求めるプロンプトは表示されません。リモートシステムがユーザーを認証しようとする場合は、パスワードの入力を求めるプロンプトが表示されます。

処理が成功すると、rlogin コマンドは、そのシステムへの前回のリモートログイン、リモートシステム上で動作中のオペレーティングシステムのバージョン、ホームディレクトリに未処理のメールがあるかどうかに関して、簡潔な情報を表示します。


例 29–3 リモートシステムにログインする (rlogin)

次の例は、pluto へ直接リモートログインした出力結果を示しています。このユーザーはネットワークから認証されています。


$ rlogin starbug
Last login: Mon Jul 12 09:28:39 from venus
Sun Microsystems Inc.   SunOS 5.8       February 2000
starbug:

次の例は、pluto へ間接リモートログインした出力結果を示しています。この場合、ユーザーはリモートシステムから認証されています。


$ rlogin -l smith pluto
password: user-password
Last login: Mon Jul 12 11:51:58 from venus
Sun Microsystems Inc.   SunOS 5.8       February 2000
starbug: 

リモートシステムからログアウトする方法 (exit)

exit(1) コマンドを使用して、リモートシステムからログアウトします。


$ exit
 

例 29–4 リモートシステムからログアウトする (exit)

次の例は、ユーザー smith がシステム pluto からログアウトする様子を示しています。


$ exit
pluto% logout
Connection closed.
earth%