名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項
rsh は、 hostname が示すホストに接続し、 command が示すコマンドを実行します。 rsh は自身の標準入力のデータをリモートコマンドにコピーし、 リモートコマンドの標準出力を自身の標準出力にコピーし、 さらに、リモートコマンドの標準エラー出力を 自身の標準エラー出力にコピーします。 割り込み、停止、および終了シグナルは、 リモートコマンドに伝えられます。通常 rsh は、リモートコマンドが終了したときに終了します。
command を省略すると、 rsh は単一のコマンドを実行する代わりに、 rlogin(1) を使ってそのユーザーをリモートホストにログインします。
シェルのメタキャラクタのうち、 引用符で囲まれていないものはローカルマシン上で解釈されます。 引用符で囲まれているものは、リモートマシン上で解釈されます。 「使用例」の項にある例を参照してください。
以下のオプションを指定できます。
リモートユーザー名として、 ユーザー自身のローカルユーザー名の代わりに username を使用します。このオプションを省略すると、 リモートユーザー名はローカルユーザー名と同じになります。
rsh の入力先を /dev/null に変更します。このオプションは、 rsh とそれを呼び出したシェルとの間での、 予期できない干渉を防ぐ上で便利です。 たとえば、 rsh を実行していて、さらにバックグラウンドで rsh を呼び出した場合、その入力先を端末以外に変更しないと、 リモートコマンドの読み取りがない場合でも 処理が妨げられてしまいます。 -n オプションを指定すれば、このような事態は避けられます。
リモートシェルの種類 ( sh や rsh など) は、リモートシステム上の /etc/passwd ファイル中のユーザーのエントリにより決められます。
ファイルが 2 ギガバイト (231 バイト) 以上ある場合の rsh と remsh の動作については、 largefile(5) を参照してください。
rsh および remsh コマンドは、IPv6 に対応しています。ip6(7P) のマニュアルページを参照してください。
ホスト名は hosts データべース (/etc/hosts ファイルに含めることができる)、 インターネットドメイン名データべース、 あるいはその両方に書かれています。 各ホストには 1 つの正式名 (データべースエントリの最初の名前) があり、 さらにいくつかのニックネームが存在することもあります。 hostname 引数には、正式なホスト名とニックネームの いずれかを指定します。
rsh を実行するファイル名が rsh でなければ、 rsh はそのファイル名を hostname 引数として使用します。これによりユーザーは、ホスト名で rsh に対するシンボリックリンクを生成でき、 実行時にそのホスト上のリモートシェルを呼び出せます。 ディレクトリを作成し、それを共通に使われる ホスト名でシンボリックリンクにつなぎ、 さらにそのディレクトリをユーザー自身の シェルの検索パスに含めることにより、シェルに hostname を入力するだけで rsh を実行することができます。
rsh を remsh で呼び出した場合、 rsh は /usr/bin/remsh の存在を確認します。このファイルが存在 する場合、 rsh は remsh を rsh の別名として処理します。 /usr/bin/remsh が存在しない場合、 rsh は remsh をホスト名として処理します。
各リモートマシンには /etc/hosts.equiv という名のファイルが存在することがあります。 このファイルには、そのマシンとユーザー名を共有する ホスト名の一覧が記録されています。 ローカルマシン上とリモートマシン上での ユーザー名が同一のユーザーは、 リモートマシンの /etc/hosts ファイルにリストされているマシンから rsh を実行することができます。 個々のユーザーは、このような同等名リストを個人用の .rhosts ファイルとして、自身のホームディレクトリに 作成することができます。 このファイル中の各行には 2 つの名前、 hostname と username が含まれ、両者は空白で区切られます。 username で示すユーザーが hostname で示すホストにログインしていれば、そのユーザーは rsh を使って、リモートユーザーとしてリモートマシンにアクセスできます。 ローカルホスト名がリモートマシン上の /etc/hosts.equiv ファイル中に見つからず、ローカルのユーザー名とホスト名が リモートユーザーの .rhosts ファイル中に見つからない場合、アクセスは拒否されます。 /etc/hosts.equiv または .rhosts ファイルに記録されているホスト名は、 hosts データべースに登録されている 正式なホスト名である必要があります。 つまりこの両ファイル中には、 ニックネームは指定できません。
リモートマシン上でアクセスが拒否されたときは、 command 引数が省略されていない限り、 rsh はパスワードの入力を要求するプロンプトを出力しません。
次のコマンドは、lizard というマシンからファイル lizard.file というリモートファイルを、example というマシン上の example.file に付加します。
example% rsh lizard cat lizard.file >> example.file |
example% rsh lizard cat lizard.file ">>" lizard.file2 |
on(1), rlogin(1), telnet(1), vi(1), in.named(1M), hosts(4), hosts.equiv(4), ipnodes(4), attributes(5), largefile(5), ip6(7P)
hosts.equiv に登録されているシステムのセキュリティは、 少なくともローカルシステムのセキュリティと 同レベルである必要があります。 セキュリティレベルの低いシステムが hosts.equiv 中に 1 つでも存在していると、 システム全体のセキュリティが損なわれる可能性があります。
vi(1) のような対話型コマンドは実行できません。 対話型コマンドは rlogin を使って実行してください。
停止シグナルは、ローカルの rsh プロセスだけを停止させます。 これはバグだという議論があるかもしれませんが、 現在のところ修正が大変困難です。 その理由は複雑なので、ここでは説明を省きます。
example% rsh somehost dd if=/dev/nrmt0 bs=20b | tar xvpBf - |
-n オプションを指定して rsh を実行すれば、このような事態を防ぐことができます。
example% tar cf - . | rsh sundial dd of=/dev/rmt0 obs=20b |
この場合には、前述のような現象は起こりません。 この場合に -n オプションを指定すると、 rsh はパイプから読み込む代わりに、誤って /dev/null からの読み込みを試みます。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項