Zugriff auf ein Symlink-Verzeichnis mit Apache2
Posted on May 20th, 2009 in Ubuntu | von Bernd S. | 3 Comments »
Ich bin gerade dabei meinen Hauptrechner von Ubuntu 8.10 (Intrepid Ibex) auf Ubuntu 9.04 (Jaunty Jackalope) upzudaten bzw. neu zu installieren. Ich installiere gern jede Version neu, da ich immer sehr viel Software manuell installiert habe bzw. sehr viel am System geändert habe. Daher schreibe ich mir gerade ein Installskript, welches meine gewünschte Software installiert, mein Backup zurückspielt und die wichtigsten Einstellungen vornimmt. Dies sollte mir den nächsten Versionwechsel erleichtert.
Das Installationsskript entsteht gerade auf meinem Testrechner, wo ich dann natürlich die wichtigsten Sachen nach der Installation teste. Da ich auch an einer Webseite arbeite, läuft diese auch lokal auf meinem Rechner. Dazu benötige ich natürlich Apache2, PHP+MySql. Dies benötige ich für die alte Version der Webseite, welche ich übernommen habe. Aktuell versuche ich gerade diese auf Django umzustellen. Mit diesem Umstieg soll auch die Verwendung von MySql durch PostgreSQL abgelöst werden.
Aber zurück zum Thema. Der Sourcecode der Homepage liegt bei mir in meinem Homeverzeichnis. Sagen wir als Beispiel unter:
/home/bernd/homepage
Um diese jetzt mit dem Webserver unter http://localhost/homepage aufrufen zu können, erstelle ich einen Symlink vom Dokument-Root des Apache Webservers in mein Homeverzeichnis
cd /var/www
ln -s /home/bernd/homepage homepage
Zu meiner Überraschung musste ich feststellen, dass Apache diesen Link nicht auflösen kann (Fehlermeldung: Forbidden – You don’t have permission to access /homepage on this server.), obwohl in der Datei /etc/apache2/sites-enabled/0000-default alle Optionen standardmäßig richtig gesetzt sind
....
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
....
Auch das Ziel des Symlinks hat die notwendigen Berechtigungen um vom Apache-User www-data korrekt ausgelesen zu werden
bernd@jaunty:~$ ls -ld ~/homepage
drwxr-xr-x 17 bernd bernd 4096 2009-05-18 20:08 homepage
Das Problem liegt jetzt aber darin, dass seit Ubuntu 9.04 (Jaunty Jackalope) das Homeverzeichnis aus Sicherheitsgründen mit den Berechtigungen 0600 angelegt ist! Der Apache-User braucht jedoch für den gesamten Pfad Leseberechtiungen. Also auch für /home und /home/bernd. Daher ist die einfachste Problemlösung die Berechtigungen auf das Verzeichnis /home/bernd zu lockern.
bernd@jaunty:/home$ ls -l
total 4
drwx------ 85 bernd bernd 4096 2009-05-19 08:15 bernd
bernd@jaunty:/home$ chmod 755 bernd
bernd@jaunty:/home$ ls -l
total 4
drwxr-xr-x 85 bernd bernd 4096 2009-05-19 08:15 bernd
Bitte überlegt euch genau ob auch ihr die Berechtigungen auf euer Homeverzeichnis für alle lesbar stellen wollt. Da der PC ausschließlich von mir genutzt wird, sehe ich in meinem Fall kein Problem darin. Wenn auf dem Computer jedoch mehrere Benutzer arbeiten, sollte man sich diesen Schritt genauer überlegen.
3 Responses
chmod +x $HOME ist völlig ausreichend und viel sicherer, da nun er Inhalt nicht mehr gelesen werden kann, der Apache aber noch durchwechseln darf. Das obige Beispiel mit den 755-Rechten kann mit chmod og-r $HOME nachträglich korrigiert werden.
Danke Kai, klingt natürlich sehr vernünftig. Werde ich gleich bei mir berücksichtigen
Fette webseite. Danke!