php exec 权限不足 错误提示sudo: no tty present and no askpass program specified Sorry, try again.

错误提示sudo: no tty present and no askpass program specified Sorry, try again.

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.el5是不支持这个参数的,sudo-1.7.2p1-10.el5支持。

3. 赋予www用户执行svn权限

如,增加行:www ALL=(ALL) NOPASSWD: /data0/shell/svnvp.sh

全部免密 www ALL = NOPASSWD: ALL

注:NOPASSWD可以使在命令执行时不需要交互输入www 用户的密码

www用户为nginx或apache的运行用户

4.重启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.el5是不支持这个参数的,sudo-1.7.2p1-10.el5支持。

3. 赋予www用户执行svn权限

如,增加行:www ALL=(ALL) NOPASSWD: /data0/shell/svnvp.sh

全部免密 www ALL = NOPASSWD: ALL

注:NOPASSWD可以使在命令执行时不需要交互输入www 用户的密码

www用户为nginx或apache的运行用户

4.重启nginx或apache,让用户重新获得权限。