Apache Web服务器 - 如何在权限设置为755而不是777的情况下写入目录/文件

4

我第一次在我的Ubuntu Linux本地主机上学习安装Apache 2,并使其与PHP5配合使用。

我注意到,每当我想要写入文件或目录时,我必须将目的地设置为chmod 777。

但是从我在第三方托管解决方案上工作的经验来看,通常允许我写入具有755权限的文件和目录。

我应该怎么做才能在我的本地主机上以755权限写入文件和目录?如果这个答案非常长,有人可以给我发送一个逐步指南的链接吗?

3个回答

16

以下是一些简单的规则,适用于大多数人使用 Apache 进行网站内容管理:

  1. 所有内容都应该被 chown'd & chgrp'd 到和 Apache 运行的用户相同的用户身上。在新的 Ubuntu 安装中,用户和组都是 "www-data"。
  2. 如果你想要以自己的用户组管理服务文件,那么你应该将自己添加到 www-data 组,并确保此组中的用户对所有服务文件和目录具有读/写访问权限。这里需要注意的是,不要使用个人账户创建新文件。这些文件应该仍然归属于 www-data。最简单的方法是首先以自己的身份创建文件,然后将其 chown 为 www-data:www-data。

如果按照这两条规则操作,那么你就可以向由 Apache 提供服务的文件中进行写入了。我不确定你的文档根目录在哪里,但像下面这样做可能适用于大多数简单的安装:

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

4

您可能无法实现此操作,因为文件的所有者与尝试对文件执行操作的用户不同。

权限如下:

所有者-组-其他人

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命令来实现所需的结果。


0

首先,您需要确定您的PHP代码运行为哪个用户。如果您正在使用Apache运行“worker”或“prefork” MPM(软件包名称为libapache2-mod-php5)以及mod_php5,那么这可能是www-data

只要在服务器内运行一个Web应用程序,这并不是什么大问题。但是,如果您运行多个应用程序(或由多个用户拥有的脚本),那么您就会遇到各种安全相关的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接