После нескольких месяцев периодических попыток выяснить, что вызывает эти Запрещенные ошибки, я обнаружил доказательства, которые убедительно свидетельствуют о том, что 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
Опция дает именно то поведение, которое вы описываете, только при переходе по ссылкам, если права собственности совпадают.