php実行スクリプトのroot権限取得の問題

901 ワード

wwwユーザはnginxまたはapacheの実行ユーザである
phpはshellスクリプトのsvnupを呼び出します.phpファイルの内容:
<?
set_time_limit(0);
//$output = array();
$ret = 0;
exec("/usr/bin/sudo /data0/shell/svnvp.sh", $output, $ret);
echo "Result:{$ret}";
print_r($output);
?>

/data0/shell/svnvp.shは更新されたスクリプトで、主な内容はsvn upです.
sudoプロファイルを変更し、visudoコマンドなどの直接キーでプロファイルを編集する必要があります.
1.注記Defaults requiretty
Defaults requirettyを#Defaults requirettyに変更し、端末を制御する必要がないことを示します. 
そうでないとsudo:sorry,you must have a tty to run sudoが現れる
2.行Defaults visiblepwを追加
そうでないとsudo:no tty present and no askpass program specifiedが表示されます
sudo-1.6を見つけた9p17-5.el 5はこのパラメータをサポートしていませんsudo-1.7.2p1-10.el 5はサポートされています.
3.wwwユーザーにsvn実行権限を与える
追加行:www ALL=(ALL)NOPASWD:/data 0/shell/svnvp.sh
注意:NOPASWDは、コマンド実行時にwwwユーザーのパスワードをインタラクティブに入力する必要がない
4.nginxまたはapacheを再起動し、ユーザーに権限を再取得させる.