REXEC(3)

名称
rexec - リモートコマンドにストリームを戻す

書式
int rexec(char **ahost, int inport, char *user, char *passwd, char *cmd, int *fd2p)

解説
このインタフェースは、krcmd(3) に置き換えられました。互換性ライブラリ libcompat から使用できます。

rexec() 関数は gethostbyname(3) を使用してホスト *ahost を検索し、ホストが存在しない場合は -1 を戻します。ホストが存在する場 合は、ホストの標準名に *ahost を設定します。ユーザ名とパスワードの両方が指定されている場合は、この情 報を使用して外部ホストに認証します。ユーザ名とパスワードが指定されてい な場合は、ホームディレクトリの環境とユーザの .netrc ファイルを検索して適切な情報を特定します。このすべてがエラーとなった場 合は、情報を入力するようにユーザに要求します。

ポート inport は、接続に使用する、既知の DARPA インターネットポートを指定します。 ‘getservbyname(\*qexec\*q,\*qtcp\*q)’ を呼び出すと( getservent(3) 参照)、必要なポートを含む構造体のポインタが戻されます。接続のプロトコ ルについては、 rexecd(8) を参照してください。

問題なく接続されると、 SOCK_STREAM タイプのインターネットドメインのソケットが呼び出し側に戻され、 stdin と stdout としてリモートコマンドに指定されます。 fd2p が 0以外である場合は、制御プロセスの補助チャンネルが設定され、その記述 子が *fd2p に配置されます。制御プロセスは、このチャンネルのコマンド(ユニット 2)か ら診断出力を戻し、このチャンネルのバイトを UNIX シグナル番号として受け入れ、コマンドのプロセスグループに転送します。戻される 診断情報には、認証が確認されてから第 2接続が設定されるので、リモート認証 エラーが含まれません。 fd2p が 0である場合は、 stderr (リモートコマンドのユニット 2)が stdout と同じように作成されます。バンド外データを使用して注目を集められますが、 リモートプロセスに任意のシグナルを送信する準備は行なわれません。

関連項目
rcmd(3), rexecd(8)

歴史
rexec() 関数は 4.2BSD に追加されました。

バグ
rexec() 関数は、暗号化されていないパスワードをネットワークで送信します。

基礎となるサービスは、セキュリティの大きな問題があるとみなされているた め、多くのサイトでは有効になっていません。 rexecd(8) を参照してください。