实际的链接权限不用于任何事情——所有权呢?

实际的链接权限不用于任何事情——所有权呢?

经过数月的断断续续的尝试,我发现了强烈表明 Apache2 使用了实际链接的所有权和组的证据,以找出导致这些 Forbidden 错误的原因。

  • 我有一个运行 ubuntu 14.04 的 VPS
  • 我已经安装并运行 apache2。
  • 我的默认文档根目录是 /var/www/html

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    

文档根目录的完整权限层次结构如下:

drwxr-xr-x 21 root     root     4096 Jun 10  2014 /
drwxr-xr-x 13 root     root     4096 Sep  7  2014 /var
drwxrwxr-x 13 www-data www-data 4096 Nov 15 15:25 /var/www
drwxr-xr-x  2 jesse    jesse    4096 Nov 15 15:25 /var/www/html

我的主目录下有符号链接 /var/www。

lrwxrwxrwx 1 jesse jesse 9 Sep  8  2014 /home/jesse/www -> /var/www/

现在,因为我正在处理的网站有多个版本,所以我喜欢将所有网站保存在 /var/www 中,然后符号链接到 /var/www/html 中的正确生产版本

root@vpn:/home/jesse# ls -l /var/www/html/
total 4
lrwxrwxrwx 1 jesse   jesse     16 Sep 29  2014 storytellingaustralia -> ../joomla_3.3.4/
lrwxrwxrwx 1 jesse   jesse     17 Oct  4  2014 tealeaftroubadours -> ../wordpress_4.0/
lrwxrwxrwx 1 jesse   jesse     17 Oct  5  2014 tealeaftroubadours.com.au -> ../wordpress_4.0/
lrwxrwxrwx 1 wp-user wp-user   8 Nov 15 15:25 test -> ../test/
lrwxrwxrwx 1 jesse   jesse     19 Jun  9 20:36 wa.storyguild.org.au -> ../wordpress_4.2.2/
lrwxrwxrwx 1 jesse   jesse     19 Nov 15 13:32 windwanderer.com.au -> ../wordpress_4.3.1/

现在出现了异常

当前权限设置如下,并且站点可以按预期访问。

root@vpn:/home/jesse/www/html# ls -l test
lrwxrwxrwx 1 wp-user wp-user 8 Nov 15 15:25 test -> ../test/

root@vpn:/home/jesse/www/html# ls -lLd test
drwxr-x--- 2 wp-user www-data 4096 Nov 15 15:24 test

但是,如果我随后更改链接的所有权,apache2 本身就会向我发送“禁止”通知。

root@vpn:/home/jesse/www/html# chown -h www-data test

root@vpn:/home/jesse/www/html# ls -l test
lrwxrwxrwx 1 www-data wp-user 8 Nov 15 15:25 test -> ../test/

root@vpn:/home/jesse/www/html# ls -lLd test
drwxr-x--- 2 wp-user www-data 4096 Nov 15 15:24 test

禁止

您无权访问此服务器上的 /test/index.html。

如果我将目标的所有权更改为相同

root@vpn:/home/jesse/www/html# chown www-data test

root@vpn:/home/jesse/www/html# ls -l test
lrwxrwxrwx 1 www-data wp-user 8 Nov 15 15:25 test -> ../test/

root@vpn:/home/jesse/www/html# ls -lLd test
drwxr-x--- 2 www-data www-data 4096 Nov 15 15:24 test

该网站已恢复访问。

Apache2 似乎要求链接由与目标相同的用户拥有。

有谁知道是否有设置可以控制这种行为,或者可以解释这种行为是如何、为什么或为了什么?我所能想到的只是,这是某人为了增加安全性而提出的好主意,但确实给我带来了很多麻烦。

答案1

如果所有权匹配,则该SymlinksIfOwnerMatch选项仅提供您所描述的行为。

相关内容