【问题标题】: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 下)的一些简单规则,大多数人应该遵循:
- 所有内容都应该被 chown'd & chgrp'd 提供给运行 apache 的同一用户。在新的 ubuntu 安装上,用户和组都是“www-data”。
- 如果您想在自己的用户组下管理服务文件,则应将自己添加到 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 应用程序,这不是什么大问题。但是,如果您运行多个应用程序(或由多个用户拥有的脚本),则您正在为各种与安全相关的“乐趣”做好准备。