Назад | Перейти на главную страницу

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

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

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

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

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

Сначала я просто попробовал «нормальную» конфигурацию vhost, затем я попытался использовать SymLink под веб-корнем @ /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/

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

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

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

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