【问题标题】:How to run script with root privilege from web service on apache如何从 apache 上的 Web 服务以 root 权限运行脚本
【发布时间】:2015-02-02 16:28:09
【问题描述】:

我必须从 php webservice 以 root 权限运行 python 脚本

$telephoneNumber = $_REQUEST["telephoneNumber"];
$textMessage = $_REQUEST["textMessage"];

$command = "sudo python /home/frank/Desktop/Main.py singular $telephoneNumber \"$textMessage\"";
system($command, $output);

$outVO->setOutcome(1);
$outVO->setDescription($output);

return $outVO;

但网络服务的专有是www-data,所以不起作用

【问题讨论】:

  • 请注意这是非常危险的代码。想象一下,如果有人提交一个号码或消息,如\"; sudo rm -rf /;
  • 在我看来这并不危险,因为数字和文本都是简单的字符串,它们将被传递给处理发送短信的 GSM 模块
  • 你错了。如果用户包含;(或使用各种其他技巧),则以下文本不会作为参数传递给您的 Python 脚本,而是由 shell 作为单独的命令进行评估。即使您将sudo 限制为特定命令,恶意用户仍然可以做不受欢迎的事情。阅读documentation 中的警告。
  • 你说得对!!!

标签: php apache root


【解决方案1】:

您遇到的问题之一是您试图访问主目录中的文件。您应该将这两个文件都放在您的工作目录中以使这更容易。

【讨论】:

  • 虽然这可能并不理想,但它不会阻止此代码工作。
  • 如果权限是一个问题(在这种情况下他想要 sudo),它可能不会。但如果我提供的答案还不够充分,那么就有可能被恶意使用。
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 2010-09-28
  • 2011-09-01
  • 2014-09-16
  • 2018-01-30
  • 1970-01-01
  • 2011-09-15
  • 2012-05-03
相关资源
最近更新 更多