Виртуальный хост Apache, настроенный с помощью символической ссылки на папку в моем пользовательском каталоге, завершается с ошибкой 403 Forbidden

Виртуальный хост Apache, настроенный с помощью символической ссылки на папку в моем пользовательском каталоге, завершается с ошибкой 403 Forbidden

Я уверен, что кто-то уже спрашивал/ответил на этот вопрос, но мой поиск мне не помог, так что...

У меня на Linux-компьютере (LM13) установлена ​​среда Eclipse IDE с папкой «workspace», расположенной по адресу @ /home/user/projects/workspace

У меня установлен и настроен Apache, работающий с различными виртуальными хостами, все из которых имеют свои папки где-то в корневом каталоге веб-сайта./var/www/...

Проблема, с которой я столкнулся, заключается в том, что Apache не может получить доступ к виртуальному хосту, который я настроил для проекта в своей рабочей области Eclipse, и поэтому выдает мне сообщение «403 — Доступ запрещен — У вас нет прав на доступ к / на этом сервере».

Сначала я просто попробовал «обычную» конфигурацию vhost, затем попробовал использовать SymLink в web-root @, /var/www/freelance/projectсвязанную с папкой проекта в рабочей области Eclipse.

Я попробовал оба варианта FollowSymLinksи SymLinksIfOwnerMatchдля директивы options в этом <directory ...>разделе, но я все еще не могу получить к нему доступ с помощью Apache в моем браузере!

Может кто-нибудь объяснить мне, как заставить эту настройку работать? Я mod_userdirеще не пробовал использовать или устанавливать права доступа к файлам в моей /homeпапке, чтобы разрешить доступ Apache, так как ни один из этих вариантов не показался мне благоприятным. Есть ли другой способ?

Вот моя конфигурация vhost:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>


Обновлять

Вывод из ls -alFd ~/Projects/workspace/iagd:-

    drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

Вывод для того же самого на /home/user:-

    drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

решение1

Вам нужно будет добавить директиву Directory для подкаталога вашего домашнего каталога. Когда Apache обращается к символической ссылке, будет осуществлен доступ к фактическому каталогу, на который указывает символическая ссылка, а не к указателю символической ссылки.

Итак, вам понадобятся две вещи:

Во-первых, разрешения операционной системы. Ваш каталог должен быть доступен для чтения пользователю Apache, что означает, что все каталоги в иерархии выше должны иметь установленный бит выполнения для пользователя Apache.

Во-вторых, конфигурация Apache. Apache нужно сообщить, что можно читать из этого каталога. Обычно вы хотите ограничить Apache, чтобы ему было разрешено читать только ограниченную иерархию каталогов — в противном случае любой веб-пользователь мог бы, например, просмотреть ваш файл паролей или просмотреть домашние каталоги всех. Поэтому, когда вы хотите получить доступ к каталогу, который находится за пределами иерархии webroot, вам нужно добавить директиву, сообщающую Apache, что это разрешено. Это будет выглядеть примерно так:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    <Directory /home/user/projects/workspace>
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

Связанный контент