Apache vHost anderer Benutzer

ClocxHD

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
376
Hallo,

ich habe versucht, einen Apache-vHost unter einem anderen Benutzer laufen zu lassen.
Dafür habe ich diese Anleitung verwendet.
Wenn ich jedoch die Seite aufrufen möchte, bekomme ich einen 403-Error.

(Die Nginx-Meldung kommt zu Stande, da dieser als Reverse-Proxy arbeitet.)

error.log von Apache:
Code:
[Tue Jun 23 15:54:11.333883 2015] [mpm_prefork:notice] [pid 20100] AH00163: Apache/2.4.10 (Ubuntu) mpm-itk/2.4.7-02 configured -- resuming normal operations
[Tue Jun 23 15:54:11.333955 2015] [core:notice] [pid 20100] AH00094: Command line: '/usr/sbin/apache2'

other_vhosts_access.log:
Code:
modpack.clocxhd.de:80 127.0.0.1 - - [23/Jun/2015:15:59:24 +0200] "GET /index.php HTTP/1.0" 200 659 "http://modpack.clocxhd.de/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"

error.log von Nginx:
Code:
2015/06/23 15:59:24 [error] 19314#0: *407 "/var/samba/web/index.php" is forbidden (13: Permission denied), client: 89.0.132.51, server: modpack.clocxhd.de, request: "GET / HTTP/1.1", host: "modpack.clocxhd.de"

vHost:
Code:
<VirtualHost 127.0.0.1:8000>
        ServerName modpack.clocxhd.de
        ServerAlias modpack.clocxhd.de
        ServerAdmin modpack@clocxhd.de
        <ifmodule mpm_itk_module>
                AssignUserID modpacksmb modpacksmb
                MaxClientsVHost 50
                NiceValue 10
        </ifmodule>
        DocumentRoot /var/samba/web
        <Directory /var/samba/web>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                #Order allow,deny
                #allow from all
                Require all granted

        </Directory>
        ServerSignature off

</VirtualHost>

OS: Ubuntu 14.10
Apache 2.4.10
Nginx 1.6.2

LG,
ClocxHD
 
da steht: 407 "/var/samba/web/index.php" is forbidden (13: Permission denied)

Darf der Benutzer AH00094 diese Datei lesen? Diese Information hast du uns vorenthalten .... wenn Apache damit läuft muss dieser Benutzer auch die Dateien lesen dürfen.
 
Ja, habe bereits über Samba Dateien in das Verzeichnis geschrieben.
Die Rechte habe ich mit folgenden Commands vergeben:
Code:
chown -R modpacksmb:modpacksmb /var/samba/web
chmod g+rwx /var/samba/web
 
Ähm, du gibst dem User "modpacksmb" und der Gruppe "modpacksmb" die Datein und Unterordner, außerdem dann dem Gruppenattribut des Ordners web die Attribute rwx ... wolltest du vielleicht chmod -R g+rwx schreiben (-R für rekursiv, also auch die Dateien und Unterordner)?
Ergänzung ()

schau dir einfach mal die Rechte und Besitzerschaft der index.php genau an ....
 
-R hat nichts geändert.

Rechte der Datei:
Code:
root@fletzner:/var/samba/web# ls -l
insgesamt 36
drwxrwxr-x 2 modpacksmb modpacksmb 4096 Jun 23 15:39 data
drwxrwxr-x 2 modpacksmb modpacksmb 4096 Jun 23 15:39 fonts
drwxrwxr-x 2 modpacksmb modpacksmb 4096 Jun 23 15:39 includes
-rwxrwx--- 1 modpacksmb modpacksmb 1207 Jun 17 21:24 index.php
-rwxrwx--- 1 modpacksmb modpacksmb  932 Jun 16 01:19 loading.php
drwxrwxr-x 2 modpacksmb modpacksmb 4096 Jun 23 15:39 scripts
-rwxrwx--- 1 modpacksmb modpacksmb 3100 Jun 17 17:08 serverstatus.php
drwxrwxr-x 2 modpacksmb modpacksmb 4096 Jun 23 15:39 style
-rwxrwx--- 1 modpacksmb modpacksmb  391 Jun 15 18:29 style.css
 
Die Gruppe modpacksmb hat rwx ... soweit so gut. Der User unter dem der Apache läuft ist aber schon in der Gruppe mit drin ???
Ergänzung ()

ich sehs grad ... das ist der User modpacksmb selbst laut config ...
Ergänzung ()

<VirtualHost 127.0.0.1:8000> .... nur über localhost und dann auf Port tcp/8000 ? So gehts nicht aus dem Internet ...
Ergänzung ()

Da müsste die echte IP und Port 80 rein.
 
Doch, das geht bei den anderen vHosts auch.
Wie ich bereits geschrieben habe, setze ich Nginx als Reverse-Proxy ein.
 
Damit kenne ich mich dann nicht aus, sorry.
Ich kann soweit sagen: die Dateien haben für den User die notwendigen Rechte.
 
Ok, dann werde ich wohl auf weitere Antworten warten müssen.
Trotzdem danke.
Zur Erklärung:
Nginx lauscht auf Port 80, und nimmt dort Anfragen entgegen.
Wenn diese Anfragen den entsprechenden Regeln entsprechen, werden die
an Apache weitergeleitet, welches dann die Dateien ausliefert.
 
* Versuch mal bitte, direkt auf den Host zu gehen und nicht über NGINX nur um da ggf Fehler auszuschließen
* Änder mal in deiner Apache-Config das Loglevel auf Debug oder höher
 
Ja, da funktioniert es ganz normal, aber dort ist auch kein Benutzername angegeben, d.h., dass sie mit www-data arbeiten
 
Das ist ja egal, nginx greift ja nicht aufs Dateisystem zu sondern auf Apache.

Das übliche: debug logging an und schauen, was passiert.
 
Bist du sicher, dass dein Nginx korrekt konfiguriert ist? der Scheint direkt aufs Filesystem zu gehen und nicht auf den Apache Oo
 
Ja, da bin ich mir ziemlich sicher, da:
1. Ich das nach dieser Anleitung gemacht habe, und denke, dass sie richtig ist

2. Wenn Apache gestoppt ist, werden auch keine Seiten ausgeliefert (Bad Gateway)
 
Und da ist das Problem:
du hast in der Konfig u.a. index.php als statische Datei die direkt ausgeliefert werden soll mit drinnen. So klappt das dann natürlich nicht...

Hier könntest du jetzt entweder nginx Zugriff auf die Files erlauben oder die Files rauswerfen.

Warum brauchst du denn überhaupt einen reverse?
 
Den Reverse-Proxy verwende ich u.a. zum Cachen.

Wie mache ich es denn richtig?
Nginx-vHost:

Code:
server {
        listen   80;
        root /var/samba/web;
        client_max_body_size    1M;

        index index.php index.html index.htm;


        server_name modpack.clocxhd.de;

        if ($request_filename ~* \.(aspx|jsp|cgi)$) {
                return 400;
        }

        if ($http_host != "modpack.clocxhd.de") {
                rewrite ^ http://modpack.clocxhd.de$request_uri permanent;
        }

        server_tokens off;

        location / {

        try_files $uri $uri/ /index.php;

        }

        location ~ \.php$ {


        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8000;
        #include /etc/nginx/proxy_params;

         }

         location ~ /\.ht {

                deny all;

        }

}
 
Nur zum Cachen? Dann nehm Varnish, der ist dafür besser geeignet ;)

werf mal die Zeile 6 und 23-25 raus
 
Zurück
Oben