TYPO3 selbst installieren und Sourcen außerhalb des Docroot

  • Hallo,


    ich habe bisher immer TYPO3 selbst für meine Kunden installiert. Dabei habe ich bisher immer die Sourcen außerhalb des Docroots gelegt. Unter Liveconfig wollte ich die Sourcen unter /priv installieren:

    Code
    root@local:/var/www/web2/priv/typo3src# ls -lisa
    total 12
    8257869 4 drwxr-xr-x 3 web2 web2 4096 Aug  8 16:53 .
    7077931 4 drwxr-x--- 3 web2 web2 4096 Aug  8 16:51 ..
    8257870 4 drwxr-xr-x 4 web2 web2 4096 Aug  9 00:35 typo3_src-4.5.29


    Das Dummy-Packet ist in htdocs:


    Die Verzeichnisrechte sind immer 0755 und der Owner ist web2:web2. Verwendet wird FastCGI.


    Egal, ob ich den Symlink von "typo3_src" auf "/var/www/web2/priv/typo3src/typo3_src-4.5.29/" oder auf "../../priv/typo3src/typo3_src-4.5.29/" setze, bekomme ich immer einen 403 beim Aufruf. Ebenso ist es egal, ob ich die index.php auf 0644 oder 0755 setze. An der Standard-Apache-Datei wurde nichts geändert. Anbei noch die Fehlermeldungen:

    Code
    /var/log/apache2/error.log
    [Fri Aug 09 20:31:43 2013] [error] [client *IPv4*] Symbolic link not allowed or link target not accessible: /var/www/web2/htdocs/schankanlagen/typo3
    /var/log/apache2/other_vhosts_access.log
    www.*domain*.de:80 *IPv4* - - [09/Aug/2013:20:31:43 +0200] "GET /typo3/index.php HTTP/1.1" 403 434 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"


    Verwendet wird Debian Wheezy. Weiß hier jemand Rat? Es funktioniert, wenn ich den Symlink auf das Verzeichnis direkt auf der Seite ("/var/www/web2/htdocs/schankanlagen/typo3_src-4.5.29/") setze. Aber das ist halt nicht sicher. Und den Application Installer möchte ich nicht nehmen.


    Vielen Dank für jeglichen Hinweis.


    Schönes Wochenende


    Marinal

  • Das priv(ate) Verzeichnis ist ja grundsätzlich nur für Daten gedacht, die nicht öffentlich zugänglich sein sollen.


    Dem Apache (und Nginx) werden keinerlei Infos/ Anweisungen (Zugriff, Ausführung v. Interpreter, ...) für dieses Verzeichnis mitgeteilt. Deswegen sollte das oben aufgeführte Vorgehen grundsätzlich nicht funktionieren.


    It's not a bug, it's a feature. Welchen Sinn das auch haben wird, benutze nur htdocs/ für deine HTTP-Dokumente. ;)



    Nachtrag: Notfalls mit der .htaccess die Zugriffsrechte auf bestimmte Daten entziehen?

  • Ja, Du könntest recht haben ... obwohl es im OpenBaseDir eigentlich enthalten wäre ...


    Wobei bei der Gallery inkludiere ich die Sourcen auch per require aus /priv ... bei Typo3 führe ich die komplett aus ...
    Und bei den TYPO3-Sourcen ist kein symbolischer Link enthalten. Die Rechte stimmen auch alle für FCGI (Verzeichnisse 0755 und Dateien 0644). Also wirklich nachvollziehen kann ich es noch nicht.


    @Herr Keppler: Könnte man ein Verzeichnis für Sourcen außerhalb des DocRoots (htdocs) aufnehmen? Wäre meines Erachtens ein Sicherheitsfeature.

  • Wäre meines Erachtens ein Sicherheitsfeature.


    Du kannst in /var/www/<VERTRAGSNAME>/ die Datei .httpd.conf mit beliebig validem Apache Konfigurationscode erstellen. LiveConfig prüft bei der nächsten vHost-Erstellung/Änderung ob diese existiert und setzt ein "Include /var/www/<VERTRAGSnAME>/.httpd.conf" in den passenden vHost.


    Auf typo3_src/ also => priv/typo3_src <= versuche ich als HTTP-Client/ Besucher deiner Website zuzugreifen. Das darf ich nicht. "Order allow,deny" bzw. "allow from all" fehlt ja für priv/.


    Bei einem include/require in PHP greift der PHP-Interpreter auf dem Server selber auf priv/... zu was durch die open_basedir-Einstellung ja erlaubt ist.

  • Hallo arnoldB,


    erst mal danke. Allmählich glaube ich wirklich, dass ich betriebsblind bin. Wobei ... das Problem habe ich immer noch nicht lösen können. Ich habe die Datei angelegt, wie von Dir beschrieben. Owner root mit 0644. Direkt im Root des Vertrages. Der Inhalt der Datei:

    Zitat

    <Directory "/var/www/web2/priv">


    AllowOverride AuthConfig FileInfo Indexes
    Options FollowSymLinks Includes


    Order allow,deny
    allow from all
    </Directory>


    Egal, wie ich die Konfig aussehen lasse, bekomme ich immer dieselben Fehler (wie oben beschrieben). Ich habe jetzt eine Datei erstellt, welche die phpinfo() ausgibt. Und habe einen symbolischen Link in das priv-Verzeichnis erstellt. Ebenfalls dieselbe Ausgabe. Die Rechte können es meiner Meinung nach nicht sein, denn das Recht ist richtig. Und die Links sind ja erlaubt. Ebenso das Öffnen der Datei.


    Wo habe ich den Knopf im Hirn?


    Vielen Dank schon mal im Voraus


    marinal

    1. In LiveConfig Domain-Einstellungen der gewünschten Domain aufrufen
    2. *Irgendeine* Einstellung ändern und wieder rückgängig machen um speichern zu können
    3. /etc/apache/sites-enabled/<VERTRAGSNAME>.conf auf "Include /var/..." prüfen


    Erst dann wird die .httpd.conf beachtet.


    Tipp: Wenn du nachträglich priv/ genauso wie bereits htdocs/ öffentlich freigibst, macht dein Vorhaben aus meiner Sicht überhaupt gar keinen Sinn mehr. ;)

  • Moin,


    würde es nicht auch ausreichen, im htdocs jeweils einen Unterordner zu erstellen ? Einmal für die Dummy und einmal für die Sources. Dann die Domain nicht auf htdocs Root zeigen lassen, sondern auf den Dummy Ordner. Somit ist doch der Sources Ordner ebenfalls nicht direkt erreichbar. Zusätzlich kommt noch eine .htaccess zur Absicherung des Sources Ordner.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!