从PHP脚本运行“sudo”命令?

时间:2011-09-13 08:10:21

标签: php linux sudo

我想从PHP运行“sudo”命令,我已经阅读了网络上的所有教程,但没有解决方案。至少我已经将LAMP的默认“nobody”用户添加到根组 - 但没有效果。

echo exec("sudo echo hi");

有关安全的说明:

虽然这里有些人因为坚信这会造成一个破坏整个互联网的大安全漏洞而对此进行了抨击,但是有一些有效的案例,例如在测试中。从PHPUnit / Behat套件运行安装脚本来配置环境可能需要sudo权限。这些脚本无法从应用程序访问,也不会产生安全漏洞,因为事实上它们有助于确保不存在此类漏洞。

5 个答案:

答案 0 :(得分:9)

将用户添加到根组并不会为他们提供sudo权限,这就是/ etc / sudoers的用途。

老实说,你想要做的事情听起来像一个巨大的安全漏洞

编辑:从评论中复制......

我的建议是,在root用户下设置一个cron,检查你的PHP可以写入的文件或数据库,解析它,并删除你指定的用户。

答案 1 :(得分:1)

我认为你应该在你的脚本上运行chmod u + s。或者ug + s(根据您的需要)。这样你就可以访问。

答案 2 :(得分:0)

您应该将您的网络服务器用户添加到/etc/sudoers文件

答案 3 :(得分:0)

<?php

phpinfo();

?>

您首先需要找到您的网络服务器的用户并给他们root权限,上面的代码会告诉您这一点,但正如其他人所说,这是一个大规模的安全漏洞,我强烈建议不要这样做。

答案 4 :(得分:0)

除了所有安全性之外,这是可能的。事实上,正如Jon Stirling所说,将用户添加到特定群组并不会对您有所帮助。您需要以root用户名“visudo”指定正确的sudo行,例如:

nobody ALL=(root) NOPASSWD:/usr/bin/echo hi

这将让用户root,执行命令“/ usr / bin / echo hi”作为用户root。

现在通过PHP执行它:

echo exec("/usr/bin/sudo -u root /usr/bin/echo hi");