Ich weiß, diese Frage wird oft gestellt, aber die Lösungen, die ich gesehen habe, haben bei mir nicht funktioniert.
Ich habe nur einen virtuellen Host aktiviert und versuche, den Zugriff auf einen Ordner zu aktivieren, der sich nicht unter dem Dokumentstamm befindet
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Ich stelle /etc/apache2/envvars
wie folgt ein
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public
Ich habe sichergestellt, dass / home / username / Videos / und seine Unterordner Eigentum von sind username:public
, die Berechtigungen auf 777 gesetzt (nachdem 775 nicht funktioniert hat) und sichergestellt, dass der Benutzer www-data
zur Gruppe gehört public
.
Wenn ich jetzt stöbere, http://localhost/movies
bekomme ich
[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path
Aber wenn ich /etc/apache2/envvars
Apache unter username
(meinem eigenen Benutzernamen) laufen lasse, funktioniert alles einwandfrei. Das Problem hängt mit der Erlaubnis zusammen, aber ich verstehe nicht, wie in meinem Fall. vor allem wenn ich die erlaubnisse auf setze 777
. Irgendwelche Ideen?
PS Ubuntu-Version ist 14.04, Apache ist 2.4.7 und ich habe keine anderen Konfigurationsdateien bearbeitet.
quelle
/home
mit aktivierter ACL gemountet haben ? (Es gibt ein "+" Zeichen am Ende der Erlaubnis-Bits, wenn es der Fall ist (überprüfen Sie mitls -l
))Antworten:
Führen Sie einen
chmod +x
Befehl in Ihrem Benutzerverzeichnis aus und starten Sie Apache neu. 755 Berechtigungen sollten funktionieren. Ich hatte Probleme mit 644 .quelle
namei -m /home/youruser/public_html/yourfile.ext
/home/username
festlegen, um schnell darauf zugreifen zu können.Wenn im Fall von Selinux das Problem ist, anstatt es nur zu deaktivieren, geben diese Seite und diese Seite den Befehl zum Gewähren des Zugriffs:
quelle
~/public_html/
Teil durch das Stammverzeichnis des Inhalts ersetzen, den ich zu bedienen versuchte.chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/
(in meiner Situation)Möglicherweise haben Sie Selinux aktiviert. Versuchen
Wenn "Enforcing" angezeigt wird, versuchen Sie es
und versuchen Sie, ob dies Ihr Problem behebt.
quelle
Ich bin auf dasselbe Problem gestoßen, nachdem ich es stundenlang versucht hatte, fand ich eine Lösung, die das Problem genau löst:
https://wiki.apache.org/httpd/13PermissionDenied
Grundsätzlich erfordert der Apache-Server nicht nur Leseberechtigungen für alle von ihm bereitgestellten Dateien, sondern auch die Ausführungsberechtigung für alle Verzeichnisse im Pfad Ihres virtuellen Hosts.
Das Dienstprogramm namei kann zum Auffinden von Berechtigungsproblemen verwendet werden, indem die Berechtigungen für jede Komponente des Pfads aufgelistet werden:
In meinem Fall hat ein Verzeichnis in meinem Pfad die Berechtigung 700, was das Problem verursacht. Nachdem es auf 701 geändert wurde, wurde das Problem behoben.
quelle
Dieses Problem trat auf, als ich versuchte, Apache in einem Docker-Container auf einem Ubuntu 16.04-Host auszuführen, der den 4.4-Kernel anstelle von 4.10 verwendete.
Nachdem ich diesen Befehl auf dem Host ausgeführt und erneut bereitgestellt hatte, ging es mir gut:
quelle
chmod
oderchown
innerhalb des Containers erzielen kann , und es unterdrückt die Apache 403-Fehler für eine Weile, um sie einige Zeit später wiederherzustellen. Soweit ich das beurteilen kann, gibt es keinen zwischenzeitlichen Neustart des Containers oder eine andere wesentliche Änderung, die die Ursache dafür sein könnte. Da ich in der Tat mit 16.04 arbeite, habe ich versucht, diese Binärdatei zu installieren, und meine 403s werden vorerst in Schach gehalten. Ich werde ein wachsames Auge darauf haben und danke!