REXEC(3)

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

ライブラリ
libcompat

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

解説
このインタフェースは、 krcmd(3) に置き換えられました。

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

ポート inport は、接続に使用する、既知の DARPA インターネットポートを指定します。 getservbyname(exec, tcp) を呼び出すと ( 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) を参照してください。