Apache 上一个非常简单的网站主机的文件权限

Apache 上一个非常简单的网站主机的文件权限

我将在 apache 上托管一个非常简单、静态、只读的网站,但文件权限设置失败。

这是我的配置文件,其下/etc/apache2是正常的:

<VirtualHost *:80>
    ServerAdmin [email protected]

    DocumentRoot /home/jeffz/sites/main/root/
    ServerName some-url.com

    ErrorLog /home/jeffz/sites/main/logs/apache-error.log
...

以及文件权限:

$ ls -l / | grep home
drwxr-xr-x   5 root root  4096 2010-09-29 09:06 home

$ ls -l /home | grep jeffz
drwsrwsr-x 7 jeffz jeffz  4096 2010-10-09 10:18 jeffz

$ ls -l /home/jeffz | grep sites
drwx--x--x 6 jeffz sites-web 4096 2010-09-12 15:26 sites

并且www-data(这是运行 apache 的帐户)在组中sites-web

$ cat /etc/group | grep sites-web
sites-web:x:1002:www-data

自从我将权限设置711为后,它现在工作得很好sites,但是当我设置权限时710,Apache 显示权限被拒绝。

Apache 是否使用另一个帐户而不是www-data从文件系统加载文件?如何x从文件夹删除最后一个权限sites

答案1

正如 ultrasawblade 所建议的那样

你要

  • Jeffz 能够编辑文件。
  • 属于 www-data 群组的 Web 用户才可以阅读它们。
  • 其他人无权访问。

你需要

  • 将其递归应用于现有目录和文件。
  • 应用于新创建的子目录和文件的组设置。

所以

chgrp -R www-data /home/jeffz/sites/main/root/ 
chmod -R u+rwx,g+srx,o-rwx /home/jeffz/sites/main/root/
cd /home/jeffz/sites/main/root/
chmod -R ugo-x *html

笔记

-R 选项表示递归应用于所有内容和子目录。

仅在目录上才需要 x 权限。在文件上设置该权限不会有什么坏处,除非 Apache 配置为将其用作动态内容的提示。

s 权限使得新文件和子目录继承父组的组。

您应该在创建文件之前适当地设置 umask,或者在创建之后明确更改文件权限。

附言

代替

ls -l / | grep home

尝试

ls -ld /home

答案2

指令指向的文件DocumentRoot必须可由 Apache 运行的用户和组读取。

Apache 以 www-data:www-data 的身份运行。您的目录归 jeffz:sites-web 所有。

因此,您必须进入 /etc/apache2/envvars 并将 APACHE_RUN_USER 更改为 jeffz,将 APACHE_RUN_GROUP 更改为 sites-web,以使事情按您预期的方式工作。

如果您在共享主机上并且无法编辑 Apache 配置,那么您必须将文件 chmod 至少设置为与 Apache 运行相同的组,该组可能是 www-data。

相关内容