sudo在unaccesable目录中移动配置文件

时间:2013-10-22 15:59:39

标签: php exec sudo

我正在尝试在服务器的某处“重写”配置文件

if ($return = exec("sudo mv.sh '/etc/my/config.cfg' '/etc/my/config.cfg.bak'",$output)){
     echo 'Yaaay';
}
else {
print_r($output);
print_r($return);
die('Couldn\'t move original config file');
}

dir / etc / my由服务器拥有,但我尝试将以下行添加到我的/ etc / sudoers文件中:

%admin ALL=(ALL) NOPASSWD: ALL
ALL ALL=NOPASSWD: /var/www/mysite/mv.sh
www-data ALL=(ALL:ALL) NOPASSWD:/etc/my/

现在我使用的是一个shell脚本文件,该文件由我网站的根目录中的www-data拥有,但我自己也试过了一个mv。

这是shell脚本的内容

$FILE1 = $1
$FILE2 = $2
mv $FILE1 $FILE2

我也尝试在那里把sudo放在mv命令前面,但这也不起作用..

如果我可以将此文件作为备份移动,我会喜欢它,之后我想重新创建文件,将一些内容放入其中,我发布了...

   file_put_contents('/etc/my/config.cfg', $_POST['contents']);

现在我没有收到任何错误,$output$return空了。我收到了失败的消息

'Couldn\'t move original config file'

1 个答案:

答案 0 :(得分:1)

你能这样试试吗?

www-data ALL=(ALL:ALL) NOPASSWD:/var/www/mysite/mv.sh

在php exec中使用绝对路径调用mv.sh?

如果sudo有任何问题,请先手动尝试脚本。 su到www-data并尝试运行相同的命令:

sudo /var/www/mysite/mv.sh '/etc/my/config.cfg' '/etc/my/config.cfg.bak'