【问题标题】:chmod 777 - requirement of this is a server issue?chmod 777 - 这是服务器问题的要求吗?
【发布时间】:2011-12-06 23:59:03
【问题描述】:

如果服务器上的 PHP 脚本无法创建目录,这通常是因为 PHP 作为 apache/nobody 运行吗?那么你能说服务器配置错误吗? (或仅使用标准配置)

出于安全考虑,如果 php 以用户身份运行会更好,如果是,是否还会出现此问题(需要 777)?我不这么认为,但我想我会问...

【问题讨论】:

    标签: security permissions chmod 777


    【解决方案1】:

    IMO 你不应该有一个 777 目录。在没有用户的网络服务器上这无关紧要,但从来没有必要,无论如何都应该避免。

    debian 上的 PHP 以与 apache (www-data) 相同的用户和组运行。因此,您只需配置文件访问控制,以允许该用户执行您喜欢的操作。你永远不需要 777。

    其他发行版具有类似的配置,但您始终可以编辑 apache2.confphp.ini 文件以获得所需的任何结果。

    【讨论】:

      【解决方案2】:

      那么你能说服务器配置错误吗?

      不。应该是这样的。由 apache 执行的 php 脚本以用户 www-data(在 Ubuntu 上)运行。 www-data 在整个服务器上几乎没有写入权限。这就是它应该的样子。如果您编写了一个稍微不安全的 php 脚本(例如,容易受到code injection 的影响)并且它以 root 身份运行,恶意访问者可能会清除您的整个硬盘。

      为了安全起见,如果 php 以用户身份运行会更好?

      用户是指谁?如果是根,请参见上文。如果是root权限的用户,见上文。

      这个问题(需要 777)还会出现吗?

      问题在于您使用的代码需要对外部目录具有完全读取、写入和执行权限。

      如果它是一个仅供您的脚本使用的目录,www-data 应该拥有它。问题解决了。

      如果您使用的 php 脚本必须能够访问敏感的系统区域,您可能需要重新考虑执行此操作的方式。 php 脚本应该执行的许多任务可以由脚本调度,然后由 cron 作业执行。

      最后但同样重要的是,如果您绝对必须,您可以以任何您想要的用户身份运行 php。只需安装模块mpm_itk_module 并添加

          AssignUserId user group
      

      <VirtualHost> 标签内。

      但请注意 - 正如我之前所说 - 如果脚本错误和权限错误,可能会发生非常糟糕的事情 (TM)。

      【讨论】:

      • 问题是如果该目录归PHP所有,用户不能通过FTP删除该目录。有什么办法吗?
      • 当然。将两个用户都添加到一个组并授予组写入权限。
      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多