【问题标题】:Can't change users within system() in php无法在 php 中的 system() 中更改用户
【发布时间】:2011-05-06 04:15:04
【问题描述】:

我的命令是

echo root_password | sudo -u root -S executable_full_path arguments

我在浏览器中得到的错误信息是

[sudo] www-data 的密码:对不起, 再试一次。

从 phpinfo() 开始,安全模式已关闭,并且没有禁用的功能。为什么这不起作用?相同的命令在 shell (bash) 中运行良好。 Escapeshellarg 和 escapeshellcmd 没有区别。

编辑:仅仅能够执行命令是不够的。执行的程序在 /tmp 中创建一个套接字,并需要为其分配权限。所以我认为我真的需要为此扎根,这可能吗?

【问题讨论】:

  • 您系统的 IP 是多少。我很想坐在贝壳上看“顶部”。 root 密码现在应该随时闪烁...
  • @Marc 我只是这样做了,运行了脚本,但没有看到这样的事情。对不起,兄弟,本来可以很有趣的。
  • @Marc:它是通过标准输入注入的,而不是命令行。

标签: php permissions sudo


【解决方案1】:

正如 Álvaro 所建议的,我将我的评论作为答案。马特,这将使以 root 身份运行该命令成为可能。

@Matt,不要那样做/etc/sudoers(顺便说一句,你用visudo 命令编辑这个文件,不要直接)。这样一来,您的 Web 应用程序运行的任何 sudo whatever 命令都可以由 root 运行,如果攻击者在您的应用程序中发现漏洞,他可能会很开心。

如果您只想以 root 身份运行 ONE 命令而不需要密码,请将其放入 /etc/sudoers(记住 visudo 命令):

www-data ALL=(ALL) NOPASSWD: executable_full_path

那么您只允许以 root 身份执行此命令。现在应该可以了

sudo -u root executable_full_path arguments

无需输入密码(它将以 root 身份运行)。此外,这是用户 www-data 可以使用 sudo 以 root 身份执行的唯一命令,因此它不应该是危险的。

【讨论】:

  • 是的,我之前还没有完全正确地将这些部分拼凑在一起,但它做到了。谢谢--
  • 您好,我有守护进程问题。我的 python 脚本在终端中很好,但在 symfony 框架中失败了。请帮帮我
【解决方案2】:

当您应该回显 www-data 的密码时,您却回显了 root 密码。

【讨论】:

  • @Ignacio 真的吗?我不明白,但哦,好吧。谷歌搜索表明添加 www-data ALL=(ALL) NOPASSWD:ALL 到 /etc/sudoers 将解决这个问题,有没有更好的方法?我不知道我是否一定希望 www-data 拥有的所有东西都拥有 root 权限,看起来就是这样。
  • @Ignacio 我该怎么做?对不起,我只是闯入这种事情。无论如何,我还没能得到第一个解决方案。
  • @Matt,不要那样做/etc/sudoers(顺便说一句,你用visudo 命令编辑这个文件,永远不要直接)。这样一来,您的 Web 应用程序运行的任何 sudo whatever 命令都可能由 root 运行,如果攻击者在您的应用程序中发现漏洞,他可能会很开心。如果您只想以 root 身份运行 ONE 命令而不需要密码,请将其放入 /etc/sudoers(请记住 visudo 命令):www-data ALL=(ALL) NOPASSWD: executable_full_path。那么你只允许以 root 身份执行这个命令。
  • @Carlos:您似乎提供了正确的答案,但这是一条评论,不能标记为已接受。我建议您将您的信息复制到正确的答案中。
  • @Matt 你应该把sudo放在命令前面,否则它不会以root身份执行。此外,不需要 0777 可执行文件,最好保留 0755。
【解决方案3】:

在你的 /ets/sudoers 上使用它 运行 gconftool-2 的示例:

www-data ALL=NOPASSWD: /usr/bin/gconftool-2
www-data ALL=NOPASSWD: /usr/bin/sudo
www-data ALL=NOPASSWD: ALL

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2011-03-24
    • 2015-03-20
    • 1970-01-01
    相关资源
    最近更新 更多