如何使PHP脚本以超级用户身份运行

时间:2012-10-24 16:02:32

标签: php permissions cron crontab

我假设如果我的php脚本将权限设置为root,则脚本将能够以root用户身份执行命令。但显然,事实并非如此。我注意到我不能在www之外写任何东西,当我想在/test.txt写一个文本文件时,它不会创建一个文件,因为权限/说非root用户只能访问但不能创建或删除但脚本本身具有root权限。如果我在/更改权限,那么它工作正常。为什么不能将我的php脚本设置为拥有root权限,写入/目录?

我该怎么做才能让php脚本以超级用户身份执行?

我想使用exec(),我似乎无法让它工作。我希望能够创建一个crontab,它不起作用。我写了这样的代码:

   exec("crontab -l > test.txt; echo '* * * * * echo hi! > /root/Desktop/hi.txt'>> test.txt; crontab test.txt");

但它不起作用。如果我将字符串复制到终端,它按预期工作。

2 个答案:

答案 0 :(得分:2)

设置脚本文件本身的权限不会影响脚本的运行方式。它会影响谁可以访问脚本。

要以root身份运行脚本,它取决于上下文。您是在Web服务器上运行它还是CLI脚本?如果是后者,则必须以root用户或sudo命令登录时运行它。如果它在一个web服务器中作为apache,那么你必须配置apache以root身份运行,但这是非常不鼓励的,因为它会带来很多安全风险。

答案 1 :(得分:0)

脚本的权限/所有权与脚本运行的用户无关。它将作为执行它的任何用户运行,假设它有权这样做。 有时你可以使用setuid'sticky bit'权限做这样的事情,但是大多数系统都不允许这样做,而且我能想到的最不具攻击性的术语来描述它是“不可取的”。

  

我注意到我不能在www

之外写任何东西

因为apache配置正确。理想情况下,它将作为非root用户[通常是www]运行,任何脚本也将以该用户身份运行。而不是告诉你如何配置apache以降低安全性,为什么不让apache用户访问你想要访问/修改的文件/目录呢?