Apache-2.4
實際的連結權限不用於任何事情 - 所有權呢?
經過幾個月的間歇性嘗試,以發現導致這些 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
選項會提供您僅在連結後描述的行為。