Der mit einem Sym-Link zu einem Ordner in meinem Benutzerverzeichnis konfigurierte virtuelle Apache-Host schlägt mit 403 Forbidden fehl

Der mit einem Sym-Link zu einem Ordner in meinem Benutzerverzeichnis konfigurierte virtuelle Apache-Host schlägt mit 403 Forbidden fehl

Ich bin sicher, dass jemand dies schon einmal gefragt/beantwortet hat, aber meine Suche hat mir nicht viel geholfen, also ...

Ich habe Eclipse IDE auf meiner Linux-Box (LM13) installiert, der Ordner "workspace" befindet sich @ /home/user/projects/workspace

Ich habe Apache installiert und eingerichtet und arbeite mit verschiedenen virtuellen Hosts, die alle ihre Ordner irgendwo unter dem Web-Root haben/var/www/...

Mein Problem besteht darin, dass Apache nicht auf den virtuellen Host zugreifen kann, den ich für ein Projekt in meinem Eclipse-Arbeitsbereich konfiguriert habe. Daher erhalte ich die Meldung „403 – Verboten – Sie besitzen keine Berechtigung für den Zugriff auf / auf diesem Server.“

Zuerst habe ich einfach eine „normale“ vhost-Konfiguration ausprobiert, dann habe ich versucht, einen SymLink unter dem Web-Root @ zu verwenden, der /var/www/freelance/projectmit dem Ordner des Projekts im Eclipse-Arbeitsbereich verknüpft ist

Ich habe beides FollowSymLinksund SymLinksIfOwnerMatchdie Optionsdirektive im <directory ...>Abschnitt ausprobiert, kann aber mit Apache in meinem Browser immer noch nicht darauf zugreifen!

Kann mir bitte jemand erklären, wie ich dieses Setup zum Laufen bekomme? Ich habe es mod_userdirnoch nicht versucht oder die Dateiberechtigungen für meinen /homeOrdner so eingestellt, dass Apache darauf zugreifen kann, da mir keines davon zielführend erschien. Gibt es eine andere Möglichkeit?

Hier ist meine Vhost-Konfiguration:

# 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>


Aktualisieren

Ausgabe von ls -alFd ~/Projects/workspace/iagd: -

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

Ausgabe für dasselbe auf /home/user: -

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

Antwort1

Sie müssen eine Directory-Direktive für das Unterverzeichnis Ihres Home-Verzeichnisses hinzufügen. Wenn Apache auf einen Symlink zugreift, wird auf das tatsächliche Verzeichnis zugegriffen, auf das der Symlink verweist, und nicht auf den Symlink-Zeiger.

Sie benötigen also zwei Dinge:

Erstens die Berechtigungen des Betriebssystems. Ihr Verzeichnis muss für den Apache-Benutzer lesbar sein, was bedeutet, dass alle Verzeichnisse in der Hierarchie darüber das Ausführungsbit für den Apache-Benutzer gesetzt haben müssen.

Zweitens die Apache-Konfiguration. Apache muss mitgeteilt werden, dass es in Ordnung ist, aus diesem Verzeichnis zu lesen. Normalerweise möchten Sie Apache so einschränken, dass nur das Lesen einer begrenzten Verzeichnishierarchie erlaubt ist – andernfalls könnte jeder Webbenutzer beispielsweise Ihre Kennwortdatei einsehen oder durch die Home-Verzeichnisse aller surfen. Wenn Sie also auf ein Verzeichnis außerhalb der Webroot-Hierarchie zugreifen möchten, müssen Sie eine Anweisung hinzufügen, die Apache anweist, dies zuzulassen. Sie sieht ungefähr so ​​aus:

# 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>

verwandte Informationen