Ich versuche, eine Datei von meinem Server auf meinen Desktop-Computer zu kopieren. Ich habe sie dort abgelegt /var/www/html
(wo sich die Webseiten befinden) und wenn ich versuche, sie herunterzuladen, erhalte ich die Meldung 403 Forbidden
. Ich habe es sogar chmod 777
mit der Datei versucht, aber das Problem wird dadurch nicht behoben.
Was mache ich falsch und warum erhalte ich diesen Fehler?
Antwort1
Sie müssen die Datei so ändern, dass sie dem Apache-Benutzer gehört. Standardmäßig wird Apache als www-data
Benutzer ausgeführt (in der www-data
Gruppe gefunden). Sie können chown
den Eigentümer der Datei ändern (muss möglicherweise zusammen verwendet werden sudo
):
chown -R www-data:www-data /var/www/html
Schließlich müssen Sie sicherstellen, dass die Dateienam wenigstenLese- und Ausführungsberechtigungen für den Apache-Benutzer. Wie Sie sagten, haben Sie dies bereits getan, aber nachdem Sie alle Berechtigungen/Dateibesitzer geändert haben, sollten Sie sicherstellen, dass alles in Ordnung ist, indem Sie ausführen ls -l /var/www/html
. Aus Sicherheitsgründen ist es auch ratsam, alle Berechtigungen für andere Benutzer zu entfernen:
chmod -R 0550 /var/www/html
Beachten Sie, dass Sie die Berechtigungsmaske oben möglicherweise ändern müssen, wenn Sie PHP oder eine andere Skriptsprache verwenden, die Schreibzugriff erfordert 0770
. Verwenden Sie diese Maske vorsichtshalber nur für Verzeichnisse, bei denen dies erforderlich ist (z. B. um Website-Cache-Daten zu schreiben oder Dateien hochzuladen).
Antwort2
Ich verwende CentOS 7 + Apache, der einzige Befehl, der mein Problem gelöst hat, ist dieser (weil ich vorher chown+chmod ausprobiert habe):
sudo setenforce 0 #SELinux deaktivieren
Und dann kann ich die Datei herunterladen (in meinem Fall anyfile.zip), aber das kann Angreifern Tür und Tor öffnen, um Code zu schreiben und auszuführen.
Antwort3
Sie haben wahrscheinlichSELinuxaktiviert. Der einfachste Weg, dies für den aktuellen Zweck zu umgehen, besteht darin, die betreffende Datei mit der Benutzer-ID zu versehen, unter der Apache ausgeführt wird.