名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項
rsh は、 hostname が示すホストに接続し、 command が示すコマンドを実行します。 rsh は自身の標準入力のデータをリモートコマンドにコピーし、 リモートコマンドの標準出力を自身の標準出力にコピーし、 さらに、リモートコマンドの標準エラー出力を 自身の標準エラー出力にコピーします。 割り込み、停止、および終了シグナルは、 リモートコマンドに伝えられます。通常 rsh は、リモートコマンドが終了したときに終了します。
command を省略すると、 rsh は単一のコマンドを実行する代わりに、 rlogin(1) を使ってそのユーザーをリモートホストにログインします。
rsh は command の終了ステータスを返しません。
シェルのメタキャラクタのうち、 引用符で囲まれていないものはローカルマシン上で解釈されます。 引用符で囲まれているものは、リモートマシン上で解釈されます。 「使用例」の項にある例を参照してください。
特定のユーザーのログインシェルの初期化ファイル (.cshrc など) でロケールが設定されていない場合、rsh はコマンドを実行するときに、常に C ロケールを使用します。リモートマシンのデフォルトのロケールは使用しません。
以下のオプションを指定できます。
リモートユーザー名として、 ユーザー自身のローカルユーザー名の代わりに 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 |
一方、次のコマンドは、 lizard というマシン上の lizard.file というファイルを、同じマシン上の lizard.file2 ファイルに付加します。
example% rsh lizard cat lizard.file ">>" lizard.file2 |
次の属性については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWcsu |
CSI | 対応済み |
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 からの読み込みを試みます。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項