【问题标题】:Shutdown from php - giving apache permission从 php 关闭 - 授予 apache 权限
【发布时间】:2011-12-13 22:25:38
【问题描述】:

我正在开发带有 Web 界面 (apache) 的嵌入式 linux 系统。基本上我需要在 Web 界面中添加关闭和重启功能。但是,我在运行时遇到了权限问题:

exec("shutdown now") etc...通过网页调用时(即apache)。

我怎么允许从 apache 调用这些命令?

不希望给 apache 完全的 root 权限,但在我的情况下,系统安全并不是什么大问题,所以如果这是唯一的方法,我该怎么做?

【问题讨论】:

  • 将 apache 用户添加到 sudoers :stackoverflow.com/questions/3173201/sudo-in-php-exec
  • 可能会给 apache 访问 /dev/initctl 的权限,如果是这样,这可能会允许它关闭并重新启动系统,而无需使用 sudo 或授予它 root 访问权限。然而,这纯粹是猜测。

标签: php linux apache


【解决方案1】:

让 Apache 成为 sudoer 是一个危险的举动,我会避免这样做。我认为 QID 在这方面很接近……最简单的解决方案是在 root 下设置一个 cron 作业,该作业每 X 秒运行一次,并检查 apache 可以写入的目录中的文件。让 apache 在您想关闭时添加该文件,并且 cron 脚本应该有一个触发器,该触发器 (a) 删除该文件并 (b) 重新启动机器。

请注意它会正确删除文件并在您进行测试时给自己一个相当长的 cron 延迟,否则服务器将不断重启,这将是一团糟。

【讨论】:

    【解决方案2】:

    不知道如何做到这一点,我可以提供一个丑陋的黑客解决方案:编写一个以 root 身份运行并接受命令以关闭系统的小型守护程序,并让您的 PHP 脚本通过合理的方式与守护程序通信 -安全通道(根据您的合理定义;可能发送信号,可能写入守护程序监视的文件,可能只是网络套接字,等等)。

    【讨论】:

      【解决方案3】:

      相信你知道自己在做什么:

      exec("sudo ...

      apache ALL=(ALL) NOPASSWD: ALL

      【讨论】:

      • 使用 sudo 是个好主意,但在这种情况下,可以限制 apache 仅访问某些命令,而不是赋予它完全的 root 权限。
      • 是的,这一切对我来说似乎有点危险。
      猜你喜欢
      • 2011-07-18
      • 2013-11-18
      • 2014-03-14
      • 2011-09-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多