sudo 在无法访问的目录中移动配置文件


sudo move config file in unaccesable dir

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

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 本身。

这是外壳脚本的内容

$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'

你能试试这种方式吗?

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'