Apache "Client von Serverkonfiguration abgelehnt", obwohl Zugriff auf Verzeichnis gewährt wurde (vhost-Konfiguration)

38

In Apache unter Ubuntu habe ich einen vhost eingerichtet, aber im Browser wird weiterhin die Fehlermeldung "403 Access forbidden" angezeigt. Das Protokoll besagt " Client verweigert durch Serverkonfiguration: / home / remix / ".

Auf der Suche nach der Online-Lösung habe ich viele Posts über den Verzeichniszugriff gefunden (Von allen zulassen usw.), aber soweit ich weiß, habe ich das bereits getan. In httpd-vhosts.conf gibt es den folgenden Code:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Ich habe auch hinzugefügt

127.0.0.1    testproject

in die Datei / etc / hosts.

Außerdem enthält der Ordner / home / remix / eine Datei index.html, und in httpd.conf sind vhosts aktiviert.

Gibt es etwas, das ich nicht sehe?

Edit: Dies ist der Apache error_log Eintrag:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/
RemiX
quelle
Was ist in Apaches Fehlerprotokoll?
Shane Madden
Ah, ich dachte, ich hätte etwas vergessen ... Ich habe es dem ursprünglichen Beitrag hinzugefügt.
RemiX
Welche Version von Apache verwenden Sie?
Shane Madden
Apache / 2.4.2 (Unix)
RemiX

Antworten:

65

Ändern Sie Ihre Berechtigungskonfiguration:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... auf die Apache 2.4-Version desselben.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

Überprüfen Sie das Upgrade-Übersichtsdokument auf Informationen zu anderen Änderungen, die Sie möglicherweise vornehmen müssen - und beachten Sie, dass sich die meisten Konfigurationsbeispiele und Hilfestellungen, die Sie dort bei Google (sowie auf dieser Website) finden, auf 2.2 beziehen.

Shane Madden
quelle
2
Wenn ich Zeit hätte, würde ich einen Fehler melden, da httpd -t angibt, dass die ältere Syntax kein Problem darstellt, und httpd-S auch nicht. Meiner Meinung nach besteht der springende Punkt eines Konfigurations-Checkers darin, auf Probleme hinzuweisen! ... Wenn Sie ein Verzeichnis haben, auf das Sie ohne dieses verweisen, funktioniert es nicht - so einfach ist das. ... Daumen hoch bei der Antwort.
Richard T
4

Überprüfen Sie die Berechtigungen für das Verzeichnis. Ich wette, es ist so eingestellt, dass niemandem außer Ihnen der Zugriff verweigert wird, zum Beispiel:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

Wenn Sie drwx------genau sehen, ist dies der Fall. Fix it by running:

chmod a+x /home/remix
Michael Hampton
quelle
Ich sehe: drwxrwxr-x 2 remix remix 4096 Aug 16 09:36 / home / remix. Ich habe den Befehl trotzdem ohne Wirkung ausprobiert.
RemiX
Ahh, ich kann sie nicht alle gewinnen.
Michael Hampton
3

Stellen Sie sicher, dass der Benutzer, der den httpdDienst ausführt, Zugriff auf diese Verzeichnisse hat.

cpt.Buggy
quelle
Ich bin nicht sicher, wer der Benutzer für httpd ist oder wie er überprüft werden soll, aber jeder kann lesen (Benutzer / Gruppe / Andere).
RemiX
Überprüfen Sie httpd.conf für Userparam.
cpt.Buggy
1
Ok, es heißt 'User nobody' und 'Group nogroup'. Ich habe versucht, es in 'User remix' (der Besitzer des Ordners) zu ändern, aber selbst das hilft nicht.
RemiX
1

"Von der Serverkonfiguration abgelehnter Client" bedeutet, dass der Linux-Server selbst den Zugriff auf die Datei und nicht auf Apache untersagt.

Wenn das Bereitstellen des Zugriffs durch Ändern von Berechtigungen / Eigentümern / Gruppenmitgliedschaften das Problem nicht behebt, besteht die Ursache möglicherweise darin, dass SELinux den Zugriff auf Ordner untersagt, die nicht über den entsprechenden SE Linux-Kontext verfügen (siehe 'Verschieben eines Apache DocumentRoot unter Selinux') .

  • Wenn SELinux vorübergehend deaktiviert wird, setenforce 0kann auf die Datei zugegriffen werden
  • Während das erneute Aktivieren von SELinux dazu führt, setenforce 0dass auf die Datei nicht mehr zugegriffen werden kann

Dann ist der Zugriff von SELinux sicher verboten, unabhängig von den Dateiberechtigungen.

Vincent
quelle
0

Eine andere einfache (aber trickreiche) Möglichkeit, die dieses Problem für Benutzer verursachen kann, ist, wenn sich die Benutzerverzeichnisse nicht in / home / * befinden, sondern woanders, z. B. in / nethome / *.

Die mitgelieferte userdir.conf enthält so etwas: (aber mit Userdir: disabled)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Die Directory-Spezifikation geht von ~ user == / home / user aus. Ändern Sie einfach die Verzeichnisspezifikation oder fügen Sie sie hinzu, um zu bestimmen, wo sich die Benutzer-Ausgangsverzeichnisse tatsächlich befinden.

Ziemlich offensichtlich, aber es hat eine Weile gedauert, bis ich es herausgefunden habe !! :-P DUH!

zB ~ user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Siehe auch allgemein offenere Autorisierung in diesem Verzeichnis.

Gaoithe
quelle