Unterordner eines Apache Webservers freigeben?
Hallo, ich habe ein kleines Problem, bei dem ich dringend Hilfe gebrauchen könnte.
Ich habe unter Kali Linux einen Apache Webserver erstellt. Hierauf soll aus dem lokalen Netzwerk zugegriffen werden können. Das Standardverzeichnis ist hier /var/www/html. Die darin liegende index.html lässt sich auch Problemlos im Browser darstellen. Allerdings wollte ich einige Unterordner anlegen. So soll im Browser eine index.html angezeigt werden können, die im Verzeichnis /var/www/html/unterordner liegt. Versuche ich aber per Browser auf diesen Unterordner zuzugreifen, gebe also http://ip/unterordner an, stellt sich hieraus, dass ich keinen Zugriff darauf habe.
Es heißt hier:
Forbidden
You don't have permission to access this resource.
Im Titel der Seite steht zudem:
403 Forbidden
Es wurden keinerlei Änderungen in der Standardkonfiguration des Webservers vorgenommen. Standardmäßig sollte deshalb eigentlich der Zugriff auf alle Unterordner von /var/www/html und die darin liegende Dateien möglich sein.
Das ist jedoch nicht der Fall. Ich habe nun schon ein wenig recherchiert, aber irgendwie wollte nichts wirklich funktionieren.
Mein Verdacht, weshalb nicht auf die Unterordner zugegriffen werden kann, ist deshalb der, dass ich unter Linux für den Zugriff per FTP einen Nutzer angelegt habe, dessen Home-Verzeichnis /var/www ist.
Ich wäre sehr dankbar für jeden guten Ratschlag, wie sich das Problem lösen lassen könnte.
1 Antwort
Einen Benutzer das Home-Verzeichnis /var/www zuzuweisen ist nicht ratsam. Sie sollten sicherstellen, dass /var/www/html und alle Unterverzeichnisse der Gruppe "apache" zugehörig sind. Dies kann wie folgt verifiziert werden.
ls -lR /var/www/html
Sollten die Verzeichnisse nicht der Gruppe "apache" zugehörig sein, lässt sich dies über den Befehl
chgrp -R apache /var/www/html
Letzteres sollte mit root-Rechten geschehen (sudo / su).
"Jetzt sollte es eigentlich funktionieren."
- IT-Abteilung (immer)
Die Berechtigungen für den Unterordner Test sind zu restriktiv gewählt. Die Gruppe www-user hat bereits die benötigten Gruppenberechtigungen, somit ist der chgrp Befehl nicht notwendig. Mit
chmod a+rx /var/www/html/test
chmod -R a+r /var/www/html/*
sollte dies zumindest für den Betrieb im lokalen Netz funktionieren.
Vielen Dank, damit funktioniert es :)
Gibt es auch noch eine Möglichkeit, dafür zu sorgen, dass neue Unterordner in /var/www/html und auch die Unterordner von Unterordnern etc. automatisch diese Berechtigungen erhalten?
Du kannst zum Einen, beim Anlegen eines neuen Unterverzeichnisses mit
mkdir -m 740 ordnername
einem Ordner über die -m Option die gewünschte Berechtigung festgelegt werden. Zum Anderen gibt es für eine richtige Vererbung hier eine detaillierte Erklärung https://unix.stackexchange.com/a/115632
Danke für deine Antwort. Ich habe gerade einmal nachgeschaut und es scheint, als gäbe es den Nutzer 'apache' bei mir überhaupt nicht.
Ich habe deshalb einmal versucht, herauszufinden, welches user Apache verwendet und bin dabei auf diesen Befehl gestoßen:
Das habe ich auch direkt ausprobiert und das Ergebnis war, dass Apache den user 'www-data' verwendet.
Deinen ersten Vorschlag habe ich dann auch direkt ausprobiert.
Die Ausgabe hiervor war Folgendes:
Hierzu sei gesagt, dass ftp-user-www ein von mir erstellter user für den FTP-Zugang ist. www-users ist hingegen eine Gruppe in der eigentlich ftp-user-www ist und in die 'apache' eigentlich ebenfalls sollte, sodass beide Nutzer die selben Rechte bezügliche dieses Verzeichnisses bekommen könnten. Das war ein Versuch, den ich so aus einem anderen Forum kopiert habe, offensichtlich nicht gerade erfolgreich.
Soll ich bei diesem Befehl dann 'apache' durch 'www-data' ersetzen?
Und gibt es nicht vielleicht eine Möglichkeit, dass der von mir angelegte user für den FTP-Zugriff weiterhin die Rechte an diesem Verzeichnis, und zwar nur an diesem Verzeichnis, behalten kann?