0

我假设如果我的 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");

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

4

2 回答 2

2

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

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

于 2012-10-24T16:08:14.017 回答
0

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

我注意到我不能在 www 之外写任何东西

因为apache配置正确。理想情况下,它将作为非 root 用户 [通常是 www] 运行,并且任何脚本也将以该用户身份运行。与其告诉您如何将 apache 配置为不太安全,为什么不授予 apache 用户访问您想要访问/修改的文件/目录的权限?

于 2012-10-24T16:26:26.570 回答