【问题标题】:Apache Webserver - How to write to dir/files with permissions set at 755 instead of 777Apache Webserver - 如何写入权限设置为 755 而不是 777 的目录/文件
【发布时间】:2010-11-12 09:58:17
【问题描述】:

我刚刚学会了第一次在我的 ubuntu linux localhost 上安装 Apache 2。我正在使它与 PHP5 一起工作。

我注意到,每当我想写入文件或目录时,我都必须 chmod 777 目的地。

但根据我从事 3rd 方托管解决方案的经验,我通常被允许写入具有 755 权限的文件和目录。

我可以在我的本地主机上做什么,以便我可以写入具有 755 权限的文件和目录?如果这个问题的答案很长,有人可以给我发送一个分步指南的链接吗?

【问题讨论】:

    标签: linux apache file permissions


    【解决方案1】:

    以下是网站内容管理(在 apache 下)的一些简单规则,大多数人应该遵循:

    1. 所有内容都应该被 chown'd & chgrp'd 提供给运行 apache 的同一用户。在新的 ubuntu 安装上,用户和组都是“www-data”。
    2. 如果您想在自己的用户组下管理服务文件,则应将自己添加到 www-data 组,并确保该组中的用户对所有服务文件和目录具有读/写权限。这里需要注意的是,您要确保不要将新文件创建为您的个人帐户。这些仍应归 www-data 所有。完成此操作的最简单方法是自己创建文件,然后将其更改为 www-data:www-data。

    如果你做了这两件事,那么你应该能够写入 apache 提供的文件。我不确定您的文档根目录在哪里,但是对于大多数简单的安装来说,这样的东西可能会起作用:

    $ sudo usermod $USER -a -G www-data 
    $ cd /var/www
    $ sudo chown -R www-data:www-data .
    

    【讨论】:

      【解决方案2】:

      您可能无法做到这一点,因为文件的所有者与尝试对文件执行操作的用户不同。

      权限是:

      所有者-组-所有人

      rwx-rwx-rwx
      
      i.e.  111 = 7 which allows read/write and execute.  
      101 = 5 which is just read and execute
      

      您无法写入该文件,因为您的登录用户不属于有权访问该文件的所有者/组。

      最后的 7 个(即 rwx-rwx-111(7))意味着在全球范围内,每个人都可以读/写该文件。

      如何解决这个问题
      在 Linux 中,您可以使用 chown 或 chgrp 命令来达到您想要的效果。

      【讨论】:

        【解决方案3】:

        首先,您需要了解您的 PHP 代码是以哪个用户身份运行的。如果你使用 mod_php5(包名 libapache2-mod-php5)和 Apache 来运行“worker”或“prefork”MPM,这可能是www-data

        只要您只在服务器中运行一个 Web 应用程序,这不是什么大问题。但是,如果您运行多个应用程序(或由多个用户拥有的脚本),则您正在为各种与安全相关的“乐趣”做好准备。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-07
          • 2014-02-10
          • 1970-01-01
          • 2014-11-22
          • 1970-01-01
          • 2018-09-07
          • 1970-01-01
          • 2017-08-10
          相关资源
          最近更新 更多