Этот ответ немного длинный, но я думаю, что фон здесь важен, поэтому, пожалуйста, потерпите меня.
Причина проблемы
Когда вы используете символическую ссылку, то, что вы говорите, по сути «вместо того, чтобы искать здесь (/var/www/test), вы должны посмотреть на этот каталог там (/home/anotheruser/test)». Чтобы это работало при обслуживании веб-файлов, вам нужно две вещи:
- пользователю, работающему с Apache, необходимо разрешить чтение этого каталога - ту часть, которую вы уже исправили, с помощью других
- Apache должен быть настроен так, чтобы он мог обслуживать файлы из этого каталога - и эта часть отсутствует.
Для примера: файл /etc /passwd доступен для чтения всем. Тем не менее, вы, вероятно, не хотите, чтобы он читался для всего мира, поэтому даже если вы создадите символическую ссылку (ln -s /etc/passwd /var/www/test/passwd
), она все равно не будет доступна для чтения, если вы в частности, сообщите apache, что он разрешает сервировать файлы из /etc.
Как это исправить
Вам нужно либо переместить файлы в каталог, из которого apache разрешено использовать серверные страницы, либо разрешить apache обслуживать страницы из каталога, в котором находятся файлы.
Решение 1 - переместить файлы
Самое быстрое решение - перевернуть символическую ссылку - создайте каталог /var/www/test
, сделайте другого пользователя владельцем и выполните ln -s /var/www/test /home/anotheruser/
. Таким образом, все файлы на самом деле хранятся в /var/www
, поэтому apache может их обслуживать.
Решение 2 - разрешить каталог
Добавьте директиву в httpd.conf, чтобы позволить apache обслуживать контент из /home/anotheruser/test
. Затем просто удалите символическую ссылку и установите вместо нее псевдоним. Как это:
Alias /test /home/anotheruser/test
<Directory /home/anotheruser/test>
Order allow,deny
Allow from all
</Directory>