本章では、リモートシステムにログインし、リモートシステムのファイルを操作するために必要なすべての作業について説明します。この章で説明する手順は次のとおりです。
この章では、次の表に示すリモートシステムにログインし、ファイルをコピーするための作業について説明します。
表 29–1 作業マップ : リモートシステムへのアクセス
rlogin コマンドを使用すると、リモートシステムにログインできます。ログインした後は、リモートファイルシステム内で移動し、その内容を (リモートシステムによる承認にしたがって) 操作したり、ファイルをコピーしたり、リモートコマンドを実行したりできます。
ログイン先のシステムがリモートドメインに属している場合は、必ずシステム名にドメイン名を追加してください。次の例では、SOLAR はリモートドメイン名です。
rlogin pluto.SOLAR
また、Control-d と入力すると、リモートログイン処理をいつでも中断できます。
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 ファイルに + のみの 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 コマンドにより、リモートシステムに直接的または間接的にログインできます。
直接リモートログインは、デフォルトユーザー名、すなわち現在ローカルシステムにログインしている個人のユーザー名を使用します。これは、最も一般的なリモートログイン形式です。
間接リモートログインは、リモートログイン処理中に別のユーザー名を入力することによって行います。これは、一時的に借りているワークステーションから行うタイプのリモートログインです。たとえば、ユーザーが同僚のオフィスにいるときに自分のホームディレクトリに置かれているファイルを確認する必要がある場合、同僚のシステムからリモートで自分のシステムにログインすることができます。この場合、自分のユーザー名を入力して間接リモートログインを実行することになります。
次の表は、直接ログインや間接ログインと認証方式の依存関係を示しています。
表 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 |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
find(1) コマンドを使用し、.rhosts ファイルを検索して削除します。
# find home-directories -name .rhosts -print -exec rm {} \; |
ユーザーのホームディレクトリがあるディレクトリへのパス。複数のパスを指定すると、複数のホームディレクトリを一度に検索できる
ここでは .rhosts を指定する
現在のパス名を出力する
指定したファイル名に一致するファイルすべてに、rm コマンドを適用するように find コマンドに伝える
find コマンドは、指定したディレクトリから始めて .rhosts というファイルを検索します。ファイルが見つかると、find はファイルのパスを画面上に表示し、ファイルを削除します。
次の例では、/export/home ディレクトリ内で、すべてのユーザーのホームディレクトリ内の .rhosts ファイルを検索し削除します。
# find /export/home -name .rhosts -print | xargs -i -t rm {} \; |
ping コマンドを使用して、リモートシステムが動作中かどうかを調べます。
$ ping system-name | ip-address |
リモートシステム名
リモートシステムの IP アドレス
ping コマンドは、次の 3 つのメッセージのどれかを返します。
状態メッセージ |
意味 |
---|---|
system-name is alive |
このシステムにはネットワーク経由でアクセスできる |
ping: unktawn 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 |
(オプションなし) システム名と、root など現在ログインしているユーザー名を表示する
各ユーザーの詳細な情報を表示する。 ユーザーのログインウィンドウ、ログイン日時、ログインしている時間、ユーザーのログイン元のリモートシステム名など
次の例は、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 コマンドは、そのシステムへの前回のリモートログイン、リモートシステム上で動作中のオペレーティングシステムのバージョン、ホームディレクトリに未処理のメールがあるかどうかに関して、簡潔な情報を表示します。
次の例は、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 コマンドは、インターネットのファイルトランスポートプロトコルへのユーザーインタフェースを提供します。このユーザーインタフェースはコマンドインタプリタと呼ばれ、リモートシステムにログインし、そのファイルシステムについて様々な処理を実行できるようにします。基本操作については次の表を参照してください。
rlogin および rcp と比較した場合に ftp が優れている最大のポイントは、ftp はリモートシステムでの UNIX の実行を要求しないことです。ただし、リモートシステムを TCP/IP 通信ができるように構成する必要はあります。逆に、rlogin の優れている点は、ftp よりも豊富なファイル操作コマンドを使用できることです。
ftp によるリモートログインの認証は、次のいずれかの方法により確立できます。
コマンド |
説明 |
---|---|
ftp |
ftp コマンドインタプリタにアクセスする |
ftpremote-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 |
アクセス中のシステムで匿名 ftp アカウントが設定されている場合は、パスワードとして電子メールアドレスの入力を求めるプロンプトが表示されます。ftp インタフェースがパスワードを受け付けると、確認メッセージと (ftp>) プロンプトを表示します。
これで、help など、ftp インタフェースから提供されるどのコマンドでも使用できます。主なコマンドについては、表 29–3 を参照してください。
次の ftp セッションは、リモートシステム pluto 上でユーザー smith によって確立されました。
$ ftp pluto Connected to pluto. 220 pluto FTP server ready. Name (pluto:smith): smith 331 Password required for smith: Password: password 230 User smith logged in. ftp> |
bye コマンドを使用して、リモートシステムとの ftp 接続を終了します。
ftp> bye 221-You have transferred 0 bytes in 0 files. 221-Total traffic for this sessions was 172 bytes in 0 transfers. 221-Thanks you for using the FTP service on spdev. 221 Goodbye. |
接続を終了するメッセージに続いて、通常のシェルプロンプトが表示されます。
リモートシステムからファイルをコピーする、ローカルシステム上のディレクトリに変更します。
$ cd target-directory |
「ftp によりリモートシステムへ接続する方法」を参照してください。
コピー元ディレクトリに変更します。
ftp> cd source-directory |
システムがオートマウンタを使用している場合、リモートシステムのユーザーのホームディレクトリは、/home の下にユーザーのホームディレクトリと並行して表示されます。
コピー元ファイルの読み取り権があることを確認します。
ftp> ls -l |
転送タイプを binary に設定します。
ftp> binary |
ファイルを 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). 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 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 |
転送タイプを binary に設定します。
ftp> binary |
ファイルを 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) を表します。相対パス名は、ファイルやディレクトリがある位置を、ユーザーのホームディレクトリからの相対パスで表します。上記の例で、相対パス名は絶対パスと同じ myfile.txt を表しますが、jones のホームディレクトリを示すために「~」(チルド記号) を使用しています。
~ = mars:/home/jones
上記の 2 行目の例は、リモートログイン後の絶対パス名と相対パス名を示しています。相対パス名では明確な違いは見られません。しかし、リモートログイン操作により、jones のホームディレクトリがローカルシステム上にマウントされた (ローカルユーザーのホームディレクトリと並列に存在する) ので、絶対パス名ではシステム名 mars を指定する必要はありません。リモートログイン操作によって別のユーザーのホームディレクトリがどのようにマウントされるかについては、「リモートログイン後の処理」を参照してください。
次の表に、C シェルが認識する絶対パス名と相対パス名の例を示します。このサンプルでは、次の用語を使用します。
表 29–4 ディレクトリ名とファイル名に使用できる構文
ログイン先 |
構文 |
説明 |
---|---|---|
ローカルシステム |
. |
ローカルの作業用ディレクトリ |
|
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 |
(オプションなし) コピー元からコピー先にファイルを 1 つコピーする
コピー元からコピー先にディレクトリをコピーする
この構文は、リモートシステムとローカルシステムのどちらにログインするかに関係なく適用されます。表 29–4 で説明したとおり、ファイルやディレクトリのパス名のみをこのあとで示す例のように変更します。
「~」と「.」を使用すると、ローカルのファイル名やディレクトリ名のパス部分を指定できます。ただし、「~」はリモートシステムではなく現在のユーザーに適用されることと、「.」はログイン先のシステムに適用されることに注意してください。この 2 つの記号については、表 29–4 を参照してください。
次の例では、rcp はファイル letter.doc をリモートシステム pluto の /home/jones ディレクトリから、ローカルシステム earth 上の作業用ディレクトリ (/home/smith) にコピーします。
earth(/home/smith): rcp pluto:/home/jones/letter.doc . |
この例では、リモートログインをしないで rcp 操作を実行しています。コマンド行の最後にある「.」記号は、リモートシステムではなく、ローカルシステムを表します。
コピー先ディレクトリもローカルユーザーのホームディレクトリなので、「~」記号で指定することもできます。
次の例では、rlogin コマンドの実行後に 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 操作が行われますが、rcp はローカルシステム上の別の作業用ディレクトリ (/tmp) で入力されます。現在のユーザーのホームディレクトリを指すために「~」記号が使われているので注意してください。
earth(/tmp): rcp ~/notice.doc pluto:/home/jones |
次の例では、rlogin コマンドの実行後に rcp 操作が実行され、ローカルファイルをリモートディレクトリにコピーしています。操作の流れは前に示した例と同じですが、リモートログインによりパスが変更になります。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp ~/notice.doc . |
現在のユーザーのホームディレクトリはローカルシステム上にありますが、「~」記号によりそのディレクトリが表されます。ユーザーはリモートシステムにログインしているので、「.」記号はリモートシステム上の作業用ディレクトリを表します。次の構文を使用しても同じ操作を実行します。
pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones |