【问题标题】:PHP run fopen as admin, not _www [closed]PHP以管理员身份运行fopen,而不是_www [关闭]
【发布时间】:2013-08-03 19:01:33
【问题描述】:

这必须是重复的,但我找不到答案...

我正在编写一个 php 网络安装脚本。我希望 php 编写一个随后将不可写的文件。 sudo fopen 没有办法吗?

显然 _www 凭据不会以对目录的写访问权限开始,也不会以该目录结束。我在想拥有写入权限的安装用户会将他们的凭据传递给脚本,该脚本将处理其余部分。

【问题讨论】:

  • 当您说“管理员”时,您是什么意思?你在哪个平台上运行?

标签: php installation exec fopen sudo


【解决方案1】:

您不能在 PHP 中使用 sudo。如果您想以 root 身份运行某些东西,则必须将 Apache 用户 www 添加到 sudoers 文件中,这可能不是一个好主意。而且,如果您正在编写其他人将运行的安装脚本,那么它甚至不是一个选项。

在这种情况下,您无法在开始时无权访问的目录中创建文件,但您可以在完成写入后使用chmod() 将文件设为只读.这并不意味着 Apache 运行的另一个脚本以后不能使用相同的函数来重新添加写入属性。

最好的办法是创建需要写入的文件的空版本。让您的脚本在开始时检查写入权限,如果不存在,请告诉用户他们需要做什么才能授予您写入权限。一旦完成,他们就可以继续。您的脚本将写入文件,然后告诉用户他们需要做什么来删除写入权限。您的脚本将检查是否已发生这种情况,并且在用户成功删除写入权限之前不允许用户继续下一步。

【讨论】:

    【解决方案2】:

    大多数人做的是提供空文件,让安装人员对其进行 chmod 编写。

    这将让用户维护最初提供文件的用户。

    好处是您可以编写更安全的应用程序,而不是让您的应用程序能够编写服务器。

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2011-01-15
      • 1970-01-01
      • 2012-10-06
      • 2012-03-19
      • 2012-11-22
      • 2016-09-20
      • 2010-11-26
      • 2012-05-28
      相关资源
      最近更新 更多