[PHP-users 6909] exec()でリモートホストにscp

Nao KAJITA php-users@php.gr.jp
Mon, 15 Apr 2002 16:25:23 +0900


梶田と申します。


少し詰まったのでどなたかご存じの方いらっしゃいましたらご教授
いただきたいのですが、exec()もしくはsystem()を利用して他ホスト
にscpでデータコピーを行いたいのですが実現できません。

/*既に行っていること*/

Web Server(APACHE)はnobodyで起動し、その他にscp実行ユーザ(webexec)を
つくってwebexecユーザでは他ホストにパスフレーズなしでsshログインできる
ようにしておく。

セキュリティ確保のため、scpのwrapperプログラムをつくってscp実行可能
ディレクトリ等に制限を設け、webexecユーザのsuidビットを立てておく。
で、これをnobodyのみアクセス可能なディレクトリにおく。

WebServer+PHP(4.1.2)経由でexec(),もしくはsystem()により
USER webexec の identityファイルを指定してscpを実行
(wrapper program名を scp-wapperとします)
exec( "/hoge/somewhere/scp-wapper -i /home/webexec/.ssh/identity /hogehoge/file1 webexec@remote.hoge.com:/hoge/file1" );
が、結果はリモートコピーできていない。

コマンドラインから、上記コマンドを実行するとパスフレーズ等聞かれる事なく
scpコピーが実行できる。

ちなみに自ホスト(Webサーバ)上に他ホストと同様の環境をつくり、
scpで自ホストへのローカルコピー(ユーザ@ホスト名指定なし)
exec( "/hoge/somewhere/scp-wapper -i /home/webexec/.ssh/identity /hogehoge/file1 /hoge/file1" );
は実行できますが、ユーザ@自ホストFQDN指定では
exec( "/hoge/somewhere/scp-wapper -i /home/webexec/.ssh/identity /hogehoge/file1 webexec@local.hoge.com:/hoge/file1" );
実行できません。

コマンドラインからの振る舞いとPHP経由ではリモート認証にどこか差があるのでしょうか?

PHPの問題というよりはUNIX ssh scp利用に関する問題のような気もしますが、
ポインタ等でも結構ですので、ご教授いただければ幸いです。

かじた