2012-02-20 27 views
2

私は、ステージング - >プロダクションパブリッシングスクリプト用のPHPウェブインタフェースを作成しようとしています。 Webインターフェイスは安全です(イントラネット、パスワードなど)ので、私はrsyncを実行するrootユーザーとしてApacheの動作に満足しています。 rootユーザーのパスワードはなく、キーファイルはSSHアクセスに使用されます。PHP shell_exec - パスワードなしでrootとしてRSYNCを使用

私が試してみましたsudoの-INGのシェルスクリプトでrysncコマンドを...

sudo rsync --verbose --recursive --times --perms --links --delete /tmp/dir1/* /tmp/dir2/ 

とApacheがsudoersファイルに以下を追加することでrsyncを実行できるように...

apache ALL=(ALL) NOPASSWD:/usr/bin/rsync 
私は、スクリプトを呼び出すためにPHPのもしくはshell_execを使用しています

...私は次のエラーを取得する

$result = shell_exec('bash /tmp/syncscript.sh 2>&1'); 

...

sorry, you must have a tty to run sudo 

rootユーザーであるかのようにrsyncコマンドを実行できるように設定するにはどうすればよいですか?

ありがとうございます!

答えて

2

PHPからSUDOを使いたい場合は、この投稿に書いた内容を試してみてください。それはすべて私の問題を解決し、私は、私は内部DEVのサーバーを持っていますが、私はそれが物事をやりたい、あなたに似たセットアップを持っている唯一のルートができます...

How to use exec() in php in combination with ssh 'hostname' command?

幸運

+0

私は最後に行ったアプローチではありませんでしたが、それにもかかわらず役に立ちました。私は十分な担当者を得るときに戻って投票します。 –

1

で最終的にこの問題に対する非sudoのアプローチが行われました。 phpseclibを使用して、必要なもの(Apacheではなく)を行うことができるユーザーとしてボックスに接続します。そして、rsync操作でターゲットとされていたディレクトリ/ファイルがこのユーザーにアクセス可能であることを確認しました。

今、私はそれを振り返ります。

関連する問題