【问题标题】:Use shell_exec() to restart server?使用 shell_exec() 重新启动服务器?
【发布时间】:2012-10-04 00:59:03
【问题描述】:

我有一个 128MB 的 VPS,但它时不时会变得杂乱无章。重新启动将解决问题,但如果我想从浏览器(受密码保护的页面)重新启动怎么办。 "www-data" 如何使用 PHP 的 shell_exec() 函数重启我的机器(Natty Narwhal)?

我很困惑,因为它需要 sudo。问题是我从未以 www-data 身份登录,这会是我的 sudo 密码吗?另外,我将如何包含密码来执行此操作?

使用root可以吗?如果是这样,那么我将如何从 www-data 执行 su?

【问题讨论】:

    标签: php linux reboot su natty


    【解决方案1】:

    shutdown 脚本需要 root 或 sudo 权限才能执行,这是正确的。如果您确实需要通过 Web 可访问的页面重新启动服务器,一种方法是将 www-data 添加到 sudoers 列表中,但用于访问 shutdown 命令。

    编辑/etc/sudoers 并添加以下行:

    %www-data ALL=NOPASSWD: /sbin/shutdown
    

    该行将允许www-data 组访问sudo /sbin/shutdown 不需要密码 - 所以请确保您的网络访问脚本不公开。

    编辑 sudoers 文件后,您可以使用脚本中的以下内容重新启动:

    shell_exec('sudo /sbin/shutdown -r now');
    

    【讨论】:

    • 成功了!!谢谢。我只是把它放在管理面板上,所以我很安全
    【解决方案2】:

    另一种方法是让根 cron 作业每隔几分钟运行一次,检查文件。如果找到该文件,则将其删除并重新启动系统。您的网页只需要创建文件。

    【讨论】:

    • 好主意,但这会使用更多的内存,我想重新启动它以减少内存!无论如何,谢谢,我 ^1 你的答案,因为它确实有效
    【解决方案3】:

    在 SSH 隧道中使用 RSA 密钥怎么样?

    您可以使用它为 www-data 用户生成一个 RSA 密钥和 SSH -i 给另一个用户(root),前提是您将公钥添加到其他用户的授权主机文件中。然后,只要您使用密钥进行交互式 SSH,您就不需要密码。

    您可能想要检查您的确切需求,并确保这不是安全风险并且适合您的情况,但这是我想到的第一件事。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 2017-12-29
      • 2019-04-25
      • 2011-03-08
      相关资源
      最近更新 更多