Apache-2.4

實際的連結權限不用於任何事情 - 所有權呢?

  • November 15, 2015

經過幾個月的間歇性嘗試,以發現導致這些 Forbidden 錯誤的原因,我發現了強烈表明 Apache2 使用實際連結的所有權和組的證據。

  • 我有一個執行 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 要求連結由擁有目標的同一使用者擁有。

有誰知道是否有控制這種行為的設置,或者可以闡明這種行為的方式、原因或目的是什麼?我所能想到的是,這是某人增加安全性的好主意,但確實讓我很頭疼。

如果所有權匹配,該SymlinksIfOwnerMatch選項會提供您僅在連結後描述的行為。

引用自:https://serverfault.com/questions/736480