【问题标题】:Run PHP shell_exec() like root user像 root 用户一样运行 PHP shell_exec()
【发布时间】:2017-08-23 01:45:38
【问题描述】:

我构建了一个 PHP 应用程序,在其中为 Linux debian Jessie 创建命令行功能。一切正常,但我需要能够使用一些命令,如 root 用户。

有没有办法使用 shell_exec() 或类似的命令通过 PHP 像 root 用户一样访问?

这个命令行的想法是让有权访问该服务器的人可以从任何地方或设备通过互联网处理它。

这是控制台的图像:

【问题讨论】:

    标签: php linux shell root


    【解决方案1】:

    编辑您的 sudoers 文件

    sudo vi /etc/sudoers
    

    放这条线

    www-data ALL=(ALL) NOPASSWD: ALL
    

    www-data 是linux中的php默认用户(必要时替换)

    使用

    $output = shell_exec('sudo XXXX');
    

    【讨论】:

      【解决方案2】:

      通过 PHP 以 root 身份执行命令会让你对各种恶意黑客敞开大门。

      查看“sudo”文档。

      您应该能够将所需的所有命令设置为“sudo”脚本。编写功能有限的特定脚本比公开底层特权命令要好得多。

      如:

      exec ('sudo getCurrentUser.sh')
      

      首先,如果尚未分配,则需要将 PHP 用于运行的用户(大部分时间是 www-data)添加到 sudo 组。

      然后,在你的 php 文件中:

      使用sudo -S,这样就可以通过echo传递密码了

      $exec = "echo your_passwd | /usr/bin/sudo -S your command";
      exec($exec,$out,$rcode);
      

      如果路径有问题 - 使用

      "bash -lc 'echo your_passwd | /usr/bin/sudo -S your command'"
      

      所以你会得到一个新的 bash,它就像一个登录 shell 并设置了路径

      【讨论】:

      • 这太棒了!我知道这将是开放的,但这就是重点,因为该服务器是我们的 Web 开发团队的本地公司服务器,他们都可以通过 SSH 客户端访问,但是使用这个 AP,我将设置一些用户只使用非 root 用户和我们的团队负责人将使用控制台的完全控制。谢谢!
      • 有一件事我忘了提,没有人是 sudoer。我们没有设置sudo 用户并且该命令在服务器上不起作用。只有管​​理员使用自己的su 访问权限。
      猜你喜欢
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多