この章では、リモートシステムにログインしてそのファイルを利用するために必要なすべての作業について説明します。この章で説明する手順は次のとおりです。
この章では、リモートシステムとは、図 10-1 のように物理ネットワークによってローカルシステムに接続され、TCP/IP 通信用に構成されたワークステーションまたはサーバーであると想定します。
Solaris リリースのシステム上では、TCP/IP は起動時に自動的に構成されます。詳細は、『Solaris のシステム管理 (第 3 巻)』を参照してください。
rlogin コマンドを使用すると、リモートシステムにログインできます。ログインした後は、リモートファイルシステム内で移動し、その内容を (リモートシステムによる承認にしたがって) 操作したり、ファイルをコピーしたり、リモートコマンドを実行したりできます。
ログイン先のシステムがリモートドメインに所属している場合は、システム名にドメイン名を追加してください。次の例では、SOLAR はリモートドメイン名です。
rlogin pluto.SOLAR |
また、Control-d と入力すると、リモートログイン処理をいつでも中断できます。
rlogin 処理の認証 (ログインするユーザーの確認処理) は、リモートシステムまたはネットワーク環境で実行されます。
この 2 つの認証形式の主な違いは、要求される対話操作と、認証の確立方法にあります。リモートシステムがユーザーを認証しようとする場合に、/etc/hosts.equiv または .rhosts ファイルを設定していなければ、パスワードの入力を促すプロンプトが表示されます。ネットワークがユーザーを認証しようとする場合は、ユーザーはすでにネットワークに認識されているので、パスワードプロンプトは表示されません。図 10-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 コマンドを使用すると、図 10-3 のように、リモートシステムに直接または間接的にログインできます。
直接リモートログインは、デフォルトのユーザー名、つまり、その時点でローカルシステムにログインしているユーザーのユーザー名を使用して行われます。これは、最も一般的なリモートログイン形式です。
間接リモートログインは、リモートログイン処理中に別のユーザー名を入力することによって行います。これは、一時的に借りているワークステーションから行うタイプのリモートログインです。たとえば、同僚のオフィスにいるときに自分のホームディレクトリ内でファイルを調べたい場合は、同僚のシステムから自分のシステムにリモートログインできますが、自分のユーザー名を入力して間接リモートログインを実行することになります。
表 10-1 は、直接ログインや間接ログインと認証方式の依存関係を示しています。
表 10-1 ログイン方式と認証方式 (rlogin) の依存関係
ログイン方式 |
ユーザー名の提供 |
認証 |
パスワード |
---|---|---|---|
直接 |
システム |
ネットワーク |
なし |
|
|
システム |
必要 |
間接 |
ユーザー |
ネットワーク |
なし |
|
|
システム |
必要 |
リモートシステムにログインするときに、rlogin コマンドはホームディレクトリを見つけようとします。ホームディレクトリが見つからなければ、リモートシステムのルートディレクトリ (/) が割り当てられます。たとえば、次のようになります。
No directory! Logging in with home=/ |
ただし、 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 コマンドを使用して、リモートシステムが動作中かどうかを調べます。
$ 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(1) コマンドを使用して、リモートシステムにログインしているユーザーを検索します。
$ rusers [-l] remote-system-name |
rusers |
(オプションなし) システム名と、root など現在ログインしているユーザー名を表示する |
-l |
ユーザーのログインウィンドウ、ログイン日時、ログインしている時間、ユーザーのログイン元のリモートシステム名など、各ユーザーの詳細な情報を表示する |
次の例は、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(1) コマンドを使用してリモートシステムにログインします。
$ rlogin [-l user-name] system-name |
rlogin |
(オプションなし) リモートシステムに直接、つまり現在のユーザー名を使用してログインする |
-l user-name |
リモートシステムに間接的に、つまり入力するユーザー名を使用してログインする |
ネットワークがユーザーを認証しようとする場合には、パスワードを求めるプロンプトは表示されません。リモートシステムがユーザーを認証しようとする場合は、パスワードの入力を求めるプロンプトが表示されます。
操作が成功すると、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(1) コマンドを使用して、リモートシステムからログアウトします。
$ exit |
次の例は、ユーザー smith がシステム pluto からログアウトする様子を示しています。
$ exit pluto% logout Connection closed. earth% |
ftp コマンドは、インターネットのファイル転送プロトコルへのユーザーインタフェースを提供します。このユーザーインタフェースはコマンドインタプリタと呼ばれ、リモートシステムにログインし、そのファイルシステムについて様々な処理を実行できるようにします。基本操作については、表 10-2 を参照してください。
rlogin や rcp と比較して ftp の主な利点は、ftp の場合はリモートシステムで UNIX が実行されていなくてもかまわないことです (ただし、リモートシステムは TCP/IP 通信を利用できることが必要です)。これに対して、rlogin の方が ftp よりも多数のファイル操作コマンドを使用できます。
ftp リモートログインの認証は、次のどちらかの方法で行われます。
コマンド |
機能 |
---|---|
ftp |
ftp コマンドインタプリタにアクセスする |
ftp remote-system |
リモートシステムへの ftp 接続を確立する。詳細は、「ftp によりリモートシステムへ接続する方法」を参照 |
open |
コマンドインタプリタからリモートシステムにログインする |
close |
リモートシステムからログアウトしてコマンドインタプリタに戻る |
bye |
ftp コマンドインタプリタを終了する |
help |
すべての ftp コマンドを表示するか、コマンド名が指定されている場合は、コマンドの機能に関する簡単な説明を表示する |
reset |
リモートの ftp サーバーとコマンド応答シーケンスの同期をとり直す |
ls |
リモートの作業用ディレクトリの内容を表示する |
pwd |
リモートの作業用ディレクトリ名を表示する |
cd |
リモートの作業用ディレクトリを変更する |
lcd |
ローカルの作業用ディレクトリを変更する |
mkdir |
リモートシステム上でディレクトリを作成する |
rmdir |
リモートシステム上でディレクトリを削除する |
get、mget |
リモートの作業用ディレクトリからローカルの作業用ディレクトリに 1 つ以上のファイルをコピーする |
put、mput |
ローカルの作業用ディレクトリからリモートの作業用ディレクトリに 1 つ以上のファイルをコピーする |
delete、mdelete |
リモートの作業用ディレクトリから 1 つ以上のファイルを削除する |
詳細は、ftp(1) のマニュアルページを参照してください。
「リモートログインの認証 (ftp)」で説明しているように、ftp 認証を持っている必要があります。
ftp コマンドを使用してリモートシステムへ接続します。
$ ftp remote-system |
接続に成功すると、確認メッセージとプロンプトが表示されます。
ユーザー名を入力します。
Name (remote-system:user-name): user-name |
プロンプトが表示されたら、パスワードを入力します。
331 Password required for user-name: Password: password |
アクセス中のシステムに anonymous ftp アカウントが確立されている場合は、パスワードの入力を求めるプロンプトが表示されません。ftp インタフェースがパスワードを受け入れると、確認メッセージと (ftp>) プロンプトを表示します。
これで、help など、ftp インタフェースから提供されるどのコマンドでも使用できます。主なコマンドについては、表 10-2 を参照してください。
次の ftp セッションは、リモートシステム pluto 上でユーザー smith によって確立されました。
$ ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:smith): smith 331 Password required for smith: Password: password 230 User smith logged in. ftp> |
bye コマンドを使用して、リモートシステムとの ftp 接続を終了します。
ftp> bye 221 Goodbye. earth% |
接続を終了するメッセージに続いて、通常のシェルプロンプトが表示されます。
リモートシステムからファイルをコピーしたい、ローカルシステム上のディレクトリに変更します。
$ cd target-directory |
「ftp によりリモートシステムへ接続する方法」を参照してください。
コピー元ディレクトリに変更します。
ftp> cd source-directory |
システムがオートマウンタを使用している場合、リモートシステムのユーザーのホームディレクトリは、/home の下にユーザーのホームディレクトリと並行して表示されます。
コピー元ファイルの読み取り権があることを確認します。
ftp> ls -l |
ファイルを 1 つコピーするには、get コマンドを使用します。
ftp> get filename |
一度に複数のファイルをコピーするには、mget コマンドを使用します。
ftp> mget filename [filename ...] |
個々のファイル名を続けて入力するか、ワイルドカード文字を使用できます。mget コマンドでは、個々のファイルがコピーされ、そのたびに確認を求めるプロンプトが表示されます。
ftp による接続を終了します。
ftp> bye |
次の例では、ユーザー kryten は、システム pluto と ftp 接続し、get コマンドを使用して /tmp ディレクトリから自分のホームディレクトリにファイルを 1 つコピーします。
$ cd $HOME ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34344) (0 bytes). dtdbcache_:0 filea files ps_data speckeysd.lock 226 ASCII Transfer complete. 53 bytes received in 0.022 seconds (2.39 Kbytes/s) ftp> get filea 200 PORT command successful. 150 ASCII data connection for filea (129.152.221.238,34331) (0 bytes). 226 ASCII Transfer complete. ftp> bye 221 Goodbye. |
次の例では、同じユーザー kryten が mget コマンドを使用して、/tmp ディレクトリから自分のホームディレクトリに複数のファイルをコピーします。kryten は、個々のファイルについてコピーするか、しないかの選択ができることに注意してください。
$ ftp> cd /tmp 250 CWD command successful. ftp> ls files 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34345) (0 bytes). fileb filec filed 226 ASCII Transfer complete. remote: files 21 bytes received in 0.015 seconds (1.36 Kbytes/s) ftp> cd files 250 CWD command successful. ftp> mget file* mget fileb? y 200 PORT command successful. 150 ASCII data connection for fileb (129.152.221.238,34347) (0 bytes). 226 ASCII Transfer complete. mget filec? y 200 PORT command successful. 150 ASCII data connection for filec (129.152.221.238,34348) (0 bytes). 226 ASCII Transfer complete. mget filed? y 200 PORT command successful. 150 ASCII data connection for filed (129.152.221.238,34351) (0 bytes). 226 ASCII Transfer complete.200 PORT command successful. ftp> bye 221 Goodbye. |
ftp コマンドを入力して接続するディレクトリは、ローカルの作業用ディレクトリ、つまりこの操作のコピー元ディレクトリになります。
ftp により接続します。
「ftp によりリモートシステムへ接続する方法」を参照してください。
コピー先ディレクトリに変更します。
ftp> cd target-directory |
ローカルシステムでオートマウンタを使用中であれば、/home の下に自分のホームディレクトリと並行してリモートシステムのユーザーのホームディレクトリが表示されるので注意してください。
コピー先ディレクトリへの書き込み権があることを確認します。
ftp> ls -l target-directory |
ファイルを 1 つコピーするには、put コマンドを使用します。
ftp> put filename |
一度に複数のファイルをコピーするには、mput コマンドを使用します。
ftp> mput filename [filename ...] |
個々のファイル名を続けて入力するか、ワイルドカード文字を使用できます。mput コマンドでは、個々のファイルがコピーされ、そのたびに確認を求めるプロンプトが表示されます。
ftp による接続を終了するには、bye と入力します。
ftp> bye |
次の例では、ユーザー kryten はシステム pluto へ ftp により接続し、put コマンドを使用して自分のシステムからシステム pluto の /tmp ディレクトリにファイルをコピーします。
$ cd /tmp ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> put filef 200 PORT command successful. 150 ASCII data connection for filef (129.152.221.238,34356). 226 Transfer complete. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34357) (0 bytes). dtdbcache_:0 filea filef files ps_data speckeysd.lock 226 ASCII Transfer complete. 60 bytes received in 0.058 seconds (1.01 Kbytes/s) ftp> bye 221 Goodbye. |
次の例では、同じユーザー kryten は mput コマンドを使用して自分のホームディレクトリから pluto の /tmp ディレクトリに複数のファイルをコピーします。kryten は、個々のファイルについてコピーするか、しないかを選択できることに注意してください。
$ cd $HOME/testdir $ ls test1 test2 test3 $ ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> mput test* mput test1? y 200 PORT command successful. 150 ASCII data connection for test1 (129.152.221.238,34365). 226 Transfer complete. mput test2? y 200 PORT command successful. 150 ASCII data connection for test2 (129.152.221.238,34366). 226 Transfer complete. mput test3? y 200 PORT command successful. 150 ASCII data connection for filef (129.152.221.238,34356). 226 Transfer complete. ftp> bye 221 Goodbye. |
rcp コマンドは、ローカルシステムとリモートシステム間、または 2 台のリモートシステム間でファイルやディレクトリをコピーします。このコマンドは、リモートシステムから (rlogin コマンドでログイン後に)、またはローカルシステムから (リモートシステムにログインせずに) 使用できます。
rcp を使用すると、次のリモートコピー操作を実行できます。
自分のシステムからリモートシステムにファイルやディレクトリをコピーする。
リモートシステムからローカルシステムにファイルやディレクトリをコピーする。
ローカルシステムを経由したリモートシステム間でファイルやディレクトリをコピーする。
オートマウンタを実行中の場合は、これらのリモート操作を cp コマンドで実行できます。ただし、cp の対象範囲は、オートマウンタで作成される仮想ファイルシステムと、ユーザーのホームディレクトリから、またはそこへの操作に限定されています。また、rcp は同じ操作を実行しますがこれらの制約がないので、この節では、rcp を使うこれらの作業についてのみ説明します。
システム間でファイルやディレクトリをコピーするには、ログインしてファイルをコピーする許可を持っていなければなりません。
cp コマンドと rcp コマンドではともに、警告が表示されずにファイルが上書きされることがあります。コマンドを実行する前に、ファイル名が正しいかどうかを確認してください。
C シェル内で rcp コマンドを使用すると、絶対パス名または相対パス名を使用して、コピー元 (コピーしたいファイルやディレクトリ) とコピー先 (ファイルやディレクトリをコピーする位置) を指定できます。
|
絶対パス名 |
相対パス名 |
---|---|---|
ローカルシステムから |
mars:/home/jones/myfile.txt |
‾jones/myfile.txt |
リモートログイン後 |
/home/jones/myfile.txt |
‾jones/myfile.txt |
絶対パス名は、特定のシステムにマウントされているファイルやディレクトリを表します。上記の例で、第 1 の絶対パスは mars システム上のファイル (myfile.txt) を表します。相対パス名は、ファイルやディレクトリがある位置を、ユーザーのホームディレクトリからの相対パスで表します。上記の第 1 の例で、相対パス名は絶対パスと同じ myfile.txt を表しますが、jones のホームディレクトリを示すために "‾" (チルド記号) を使用しています。チルドは次の値を表します。
‾ = mars:/home/jones |
上記の 2 行目の例は、リモートログイン後の絶対パス名と相対パス名を示しています。相対パス名との間に違いはありませんが、リモートログイン操作によってホームディレクトリ jones がローカルシステムに (ローカルユーザーのホームディレクトリと並行して) マウントされたので、絶対パス名にはシステム名 mars が不要になります。リモートログイン操作によって別のユーザーのホームディレクトリがどのようにマウントされるかについては、「リモートログイン後の処理」を参照してください。
表 10-3 に、C シェルが認識する絶対パス名と相対パス名の例を示します。この表では次の用語を使用します。
表 10-3 ディレクトリ名とファイル名に使用できる構文
ログイン先 |
構文 |
説明 |
---|---|---|
ローカルシステム |
. |
ローカルの作業用ディレクトリ |
|
path/filename |
ローカルの作業用ディレクトリ内の path と filename |
|
‾ |
現在のユーザーのホームディレクトリ |
|
‾/path/filename |
現在のユーザーのホームディレクトリの下の path と filename |
|
‾user |
user のホームディレクトリ |
|
‾user/path/filename |
user のホームディレクトリの下の path と filename |
|
remote-system:path/filename |
リモートの作業ディレクトリ内の path と filename |
リモートシステム |
. |
リモートの作業用ディレクトリ |
|
filename |
リモートの作業用ディレクトリ内の filename |
|
path/filename |
リモートの作業用ディレクトリ内の path と filename |
|
‾ |
現在のユーザーのホームディレクトリ |
|
‾/path/filename |
現在のユーザーのホームディレクトリ内の path と filename |
|
‾user |
user のホームディレクトリ |
|
‾user/path/filename |
user のホームディレクトリの下の path と filename |
|
local-system:path/filename |
ローカルの作業用ディレクトリ内の path と filename |
少なくとも、コピー元システム上で読み取り権を持ち、コピー先システム上で書き込み権を持っていなければなりません。
コピー元とコピー先の位置を決定します。
コピー元またはコピー先のパスがわからない場合は、まず rlogin コマンドを使用してリモートシステムにログインし、位置が見つかるまでリモートシステム上を移動できます。手順については、「リモートシステムにログインする方法 (rlogin)」を参照してください。その後は、ログアウトしなくても次の手順を実行できます。
ファイルまたはディレクトリをコピーします。
$ rcp [-r]source-file|directory target-file|directory |
rcp |
(オプションなし) コピー元からコピー先にファイルを 1 つコピーする。 |
-r |
コピー元からコピー先にディレクトリをコピーする。 |
この構文は、リモートシステムとローカルシステムのどちらにログインするかに関係なく適用されます。表 10-3 で説明したとおり、ファイルやディレクトリのパス名のみをこの後で示す例のように変更します。
「‾」と「.」を使用して、ローカルのファイル名やディレクトリ名のパス部分を指定できます。ただし、「‾」はリモートシステムではなく現在のユーザーに適用されることと、「.」はログイン先のシステムに適用されることに注意してください。この 2 つの記号については、表 10-3 を参照してください。
次にいくつかの例を示します。最初の 2 つの場合はコピー元がリモートで、あとの 2 つの場合はローカルです。
次の例では、rcp はファイル letter.doc をリモートシステム pluto の /home/jones ディレクトリから、ローカルシステム earth 上の作業用ディレクトリ (/home/smith) にコピーします。
earth(/home/smith): rcp pluto:/home/jones/letter.doc . |
rcp 操作はリモートログインせずに実行されるので、「.」はリモートシステムではなくローカルシステムに適用されます。
作業用ディレクトリはローカルユーザーのホームディレクトリになるので、「‾」も使用して指定できます。
earth(home/smith): rcp pluto:/home/jones/letter.doc ‾ |
次の例では、rcp を使用して同じ操作を実行しますが、リモートシステムにログインします。操作の流れは同じですが、リモートログインしているためパスを変更します。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp letter.doc ‾ |
この例では、リモートログインを行うので「.」を使用できません。「.」はリモートシステムにのみ適用され、実際には rcp にファイルのコピーを作成するように指示します。ただし、「‾」は、リモートシステムにログインするときにも現在のユーザーのホームディレクトリを指します。
次の例で、rcp はファイル notice.doc をローカルシステム earth のホームディレクトリ (/home/smith) からリモートシステム pluto の /home/jones ディレクトリにコピーします。
earth(/home/smith): rcp notice.doc pluto:/home/jones |
リモートファイル名が指定されていないので、ファイル notice.doc は /home/jones ディレクトリに同じ名前でコピーされます。
次の例でも同じ操作を繰り返しますが、rcp はローカルシステム上の別の作業用ディレクトリ (/tmp) から入力されます。現在のユーザーのホームディレクトリを指すために「‾」記号が使われているので注意してください。
earth(/tmp): rcp ‾/notice.doc pluto:/home/jones |
次の例では、リモートシステムにログインしている間に rcp を使用して前記の例と同じ操作を実行します。操作の流れは同じですが、パスはリモートログインを考慮して変更されます。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp ‾/notice.doc . |
この例では、現在のユーザーのホームディレクトリがローカルシステム上にあっても、「‾」を使用して指定できます。ユーザーはリモートシステムにログインしているので、「.」はリモートシステム上の作業用ディレクトリを指します。次の構文を使用しても同じ操作を実行します。
pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones |