vgaven
Goto Top

NGINX auf Centos 7 403 error

Hi

ich gebe kurz an wie ich alles gemacht habe und was als Fehler raus kommt
ich habe einen Server auf dem ich Centos 7 installiert habe. Auf den wiederum habe ich nginx 1.10 installiert. Ich habe einen neuen User 'gamba' erstellt und dem root privilegien gegeben und habe daraufhin den root user Anmeldung verboten. Anschließen habe ich eine neue Ordner Struktur erstellt um mehrere Domains zu benutzen und das wie folgt als eingeloggter 'gamba':

sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com/html
sudo chmod -R 755 /var/www
sudo vi /var/www/example.com/html/index.html (einfach Hallo eingefügt)

Daraufhin noch

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

und in die /etc/nginx/nginx.conf folgendes eingefügt

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Nun muss ich ja einen neuen Server Block erstellen und habe den default genommen und kopiert

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/example.com.conf

und den Inhalt natürlich auf meine wert geändert wie zum Beispiel den:

server_name example.com www.example.com;
und
root /var/www/example.com/html;

Dann der Server block jetzt aktiv ist muss noch
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

ausgführt werden und nginx neugestartet werden soweit so gut.

Leider spuckt mir nginx folgenden fehler aus wenn ich cat /var/log/nginx/error.log ausführe


2016/07/18 22:11:47 [error] 32598#32598: *7 "/var/www/example.com/html/index.html" is forbidden (13: Permission denied), client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", host: "example.com"
und mit dem Browser aufgerufen
403 Error

jetzt habe ich gelesen, dass nginx auf alle Eltern-Verzeichnisse eine Erlaubnis braucht . Auch wenn ich den Befehl sudo chown -R nginx:nginx auf alle Eltern ausführe ist immer noch das es Forbidden ist.

Als Notiz, PHP 7 ist noch nicht installiert.

back-to-topFrage


Wo ist hier nun das Problem, wirklich immer noch Permission Probleme und der Befehl sudo chown -R nginx:nginx /var/www/example.com/html hat nichts gebracht?
Wie könnte man es fixen?

Danke

Content-Key: 310237

Url: https://administrator.de/contentid/310237

Printed on: April 27, 2024 at 10:04 o'clock

Member: xoxyss
xoxyss Jul 19, 2016 updated at 12:00:03 (UTC)
Goto Top
Hi,

wie sehen denn die Zugriffsrechte für /var/www aus (ls -l /var)? Hast du chroot auf /var/www/example.com/ oder auf /var/www angewendet?

Edit: Eigentlich hat das Verzeichnis drwxr-xr-x. root root www/ das sollte eigentlich reichen... Andere Frage, liegt im /var/www/example.com/html überhaupt eine index-Datei also index.php oder index.html?
Member: vGaven
vGaven Jul 19, 2016 at 12:03:41 (UTC)
Goto Top
Hi
alle Ordner (www etc. )haben folgendes:
drwxr-xr-x nginx nginx

und bei chroot kommt folgendes raus
chroot :failed to run command '/bin/bash' : No such file or directory
Member: xoxyss
xoxyss Jul 19, 2016 at 12:06:41 (UTC)
Goto Top
Sorry... ich war in Gedanken woanders. Ich meinet chmod. Aber das hat sich eigentlich erledigt, die Rechte passen erstmal. Liegt in deinem Root-Verzeichnis /var/www/example.com/html überhaupt eine index-Datei also index.php oder index.html?
Member: xoxyss
xoxyss Jul 19, 2016 updated at 12:16:53 (UTC)
Goto Top
Hab gerade gesehen, index.html schein vorhanden zu sein. Kann es sein, dass du nach dem anlegen der index.html die Rechte nicht nochmal angepasst hast? Wie sehen denn die Rechte für die index-Datei aus? Eventuell reicht es schon, einfach nochmal
sudo chown -R nginx:nginx /var/www/example.com/html
sudo chmod -R 755 /var/www
auszuführen.

Edit: Ja ich denke hier ist der Fehler:
sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com/html
sudo chmod -R 755 /var/www
sudo vi /var/www/example.com/html/index.html (einfach Hallo eingefügt)
Die Reihenfolge ist nicht korrekt. Du legst die index Datei mit sudo und damit als root-Benutzer an. nginx hat dadurch keinen Zugriff auf die Datei. Einfach nochmal mit chown den Besitzer ändern.
Member: vGaven
vGaven Jul 19, 2016 at 12:20:12 (UTC)
Goto Top
so habe nochmal von ls -l ausgeführt und index.html und index.php haben folgende Rechte
-rwxr-xr-x

naja ist ja eigentlich richtig ?
Member: xoxyss
xoxyss Jul 19, 2016 at 12:24:59 (UTC)
Goto Top
Sieht erstmal okay aus. Ich würde an deiner Stelle zum Test nochmal folgendes tun:
sudo chown -R nginx:nginx /var/www/
sudo chmod -R 755 /var/www
systemctl restart nginx

Bitte benutze zum Test beim chown mal /var/www, damit werden das Verzeichnis www sowie alle Tochterverzeichnisse und Dateien angepasst.
Member: vGaven
vGaven Jul 19, 2016 at 12:48:06 (UTC)
Goto Top
funktioniert irgendwie nicht immer noch 403
Member: xoxyss
xoxyss Jul 19, 2016 at 12:56:05 (UTC)
Goto Top
Ist eventuell SELinux aktiv? Kannst du mit sestatus prüfen.
Member: vGaven
vGaven Jul 19, 2016 at 13:21:23 (UTC)
Goto Top
jo
SELinux status enabled
SELinuxfs mount /sys/fs/selinux
SELinux root directory /etc/selinux
Loaded policy name targeted
current mode enforcing
Mode from config file: permissive (hatte ich vor ein paar stunden eingefügt aber hat auch nichts gebracht)
Policy MLS status enabled
Policy deny_unknows status: allowed
Max kernel policy version 28
Member: xoxyss
Solution xoxyss Jul 19, 2016 at 13:42:40 (UTC)
Goto Top
Hast du das in der Datei /etc/sysconfig/selinux angepasst? Hast du den Server nach der Änderung neu gestartet?
Member: vGaven
vGaven Jul 20, 2016 at 18:35:10 (UTC)
Goto Top
jap hätte das lieber nicht manuell sondern mit

setenforce 0

machen sollen face-smile
Member: vGaven
vGaven Jul 20, 2016 at 19:22:19 (UTC)
Goto Top
toll jetzt habe ich ein 404 Error auf php und html Daten
Member: xoxyss
xoxyss Jul 20, 2016 at 19:27:05 (UTC)
Goto Top
Wie ist die genaue Fehlermeldung aus dem logfile?
Member: xoxyss
xoxyss Jul 20, 2016 at 19:29:36 (UTC)
Goto Top
Poste bitte auch nochmal sestatus.
Member: vGaven
vGaven Jul 20, 2016 at 20:34:30 (UTC)
Goto Top
cat /var/log/nginx/error.log

7266#7266: *3 directory index of "/var/www/example.com/html/" is forbidden, client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", host: "example.com"

sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

hmm?
Es klappt zwar bei .html files aber bei html nicht ich schaue gleich bei der domain nginx .conf Datei nach und poste es hier
Member: vGaven
vGaven Jul 20, 2016 at 20:39:32 (UTC)
Goto Top
hier die example.com.conf Datei

server {
listen 80;
server_name example.com www.example.com;

(#) charset koi8-r;
(#) access_log /var/log/nginx/log/host.access.log main;

location / {
root /var/www/example.com/html;
index index.php index.html index.htm;
try_files $uri $uri/ =404;
}

(#) error_page 404 /404.html;

(#) redirect server error pages to the static page /50x.html
(#)
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

(#) proxy the PHP scripts to Apache listening on 127.0.0.1:80
(#)
#location ~ \.php$ {
(#) proxy_pass http://127.0.0.1;
(#) }

(#) pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
(#)
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

(#) deny access to .htaccess files, if Apache's document root
(#) concurs with nginx's one
(#)
(#) location ~ /\.ht {
(#) deny all;
(#) }
}
(#) ich weiß sollte ohne Klammern sein wollte nur das es so bleibt und nicht formatiertface-smile
Member: xoxyss
xoxyss Jul 21, 2016 at 08:30:40 (UTC)
Goto Top
Zitat von @vGaven:

cat /var/log/nginx/error.log

7266#7266: *3 directory index of "/var/www/example.com/html/" is forbidden, client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", host: "example.com"

sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

hmm?

Was meinst du mit .html klappt und html nicht? Oder meinst du das html Datein funktionieren aber php Dateien nicht?
Es klappt zwar bei .html files aber bei html nicht ich schaue gleich bei der domain nginx .conf Datei nach und poste es hier
Member: vGaven
vGaven Jul 21, 2016 at 09:57:13 (UTC)
Goto Top
Jap, war gestern Abend von mir bisschen komisch formuliert, example.com/index.html kann man aufrufen nur index.php haut er 404 Error raus
Member: xoxyss
xoxyss Jul 21, 2016 at 10:17:27 (UTC)
Goto Top
Tja, jetzt wirds schwierig weil ich natürlich nicht weiß was du wie gemacht hast.

Schau dir doch mal diese Doku an, da ist alles sehr gut beschrieben. Wichtig ist, dass alle Pakete (insbesondere php-fpm) installiert sind, das /etc/php-fpm.d/www.conf sowie nginx korrekt konfiguriert wurde und der Dienst sollte laufen (systemctl status php-fpm).
Member: vGaven
vGaven Jul 21, 2016 at 11:47:47 (UTC)
Goto Top
so habe PHP 7 wie folgt installiert
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php70w
yum install php70w-mysql php70w-xml php70w-soap php70w-xmlrpc
yum install php70w-mbstring php70w-json php70w-gd php70w-mcrypt
yum install php70w-fpm

vi /etc/php.ini
cgi.fix_pathinfo=0

vi /etc/php-php.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx

also wie in deiner Anleitung!
Member: xoxyss
xoxyss Jul 21, 2016 at 11:51:52 (UTC)
Goto Top
Und php-fpm neugestartet hast duauch?
Wenn du versuchst die PHP-Datei aufzurufen ist das die Fehlermeldung?
7266#7266: *3 directory index of "/var/www/example.com/html/" is forbidden, client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", host: "example.com"
Member: vGaven
vGaven Jul 21, 2016 at 13:05:12 (UTC)
Goto Top
etwas anders

2016/07/21 [error] 11332#11332: *3 "/var/www/example.com/html/index.php" is forbidden (13: Permission denied), client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", host: "example.com"


mir fällt da jetzt auch nichts mehr ein. Liegt es an php7? An einem anderen Server hatte ich es aber mit php5.X hin bekommen
Member: vGaven
vGaven Jul 21, 2016 at 13:06:31 (UTC)
Goto Top
ich laufe immer die gleichen Schritte durch bis auf, dass jetzt PHP 7 drauf ist.
Member: xoxyss
xoxyss Jul 21, 2016 updated at 13:10:26 (UTC)
Goto Top
Sollte auch mit PHP7 funktionieren... Ich wüsste spontan nicht das ich bei PHP7 Migration große Probleme hatte. Läuft der Prozess php-fpm denn mit dem richtigen Benutzer?
ps aux | grep -i php70w-fpm (oder php-fpm)

Was sagt eigentlich das PHP-Logfile? Steht da was drin?
Member: vGaven
vGaven Jul 21, 2016 at 13:19:01 (UTC)
Goto Top
so
ps aux | grep -i php70w-fpm
gamba 11458 0.0 0.0 112648 1004 pts/0 S+ 16:11 0:00 grep --color=auto -i php70w-fpm
*gamba ist der Benutzer der Admin/root Privilegien ( Rechte) hat mit dem ich per sudo ausführe.
setze natürlich immer die Rechte der Ordner wieder zurück wie oben schon durchgekautface-smile

und

cat/var/log/php-fpm/error.log

NOTICE: fpm is running, pid 11413
NOTICE: ready to handle connections
NOTICE: systemd monitor interval set to 10000ms
Member: xoxyss
xoxyss Jul 21, 2016 at 13:40:04 (UTC)
Goto Top
Also wenn du in der /etc/php-php.d/www.conf
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
gesetzt hast, kann es nicht sein, dass der Prozess mit dem Benutzer gamba läuft. Kannst du das bitte nochmal mit dem Befehl top verifizieren? top zeit dir alle laufenden Prozesse an, du kannst durch die Liste mit den Pfeiltasten navigieren, schau da bitte nochmal nach dem Benutzer.
Member: vGaven
vGaven Jul 21, 2016 at 14:01:21 (UTC)
Goto Top
so sind natürlich eine ganze Menge aber hier ein Ausschnitt, da das meiste auf root läuft

11288 gamba 20 0 140904 2404 1148 S 0.0 0.0 0:01.00 sshd
11331 root 20 0 47788 1204 232 S 0.0 0.0 0:00.00 nginx
11332 nginx 20 0 48304 2220 828 S 0.0 0.0 0:00.01 nginx
12660 root 20 0 405024 13580 7532 S 0.0 0.1 0:00.03 php-fpm
12662 nginx 20 0 405024 7060 1004 S 0.0 0.0 0:00.00 php-fpm
12663 nginx 20 0 405024 7056 1004 S 0.0 0.0 0:00.00 php-fpm
12664 nginx 20 0 405024 7056 1004 S 0.0 0.0 0:00.00 php-fpm
12665 nginx 20 0 405024 7056 1004 S 0.0 0.0 0:00.00 php-fpm
12666 nginx 20 0 405024 7056 1004 S 0.0 0.0 0:00.00 php-fpm
12679 gamba 20 0 157828 2456 1560 R 0.0 0.0 0:02.05 top


habe NOCHMAL ps aux | grep -i php70w-fpm ausgeführt und ja
gamba 12681 0.0 0.0 112648 1004 pts/0 S+ 16:59 0:00 grep --color=auto -i php70w-fpm
Member: vGaven
vGaven Jul 21, 2016 at 15:14:12 (UTC)
Goto Top
noch eine Idee ? Sonst probiere ich es Mal mit Centos 7 neu installieren und alles erneut probieren.
Member: xoxyss
Solution xoxyss Jul 22, 2016 at 07:34:01 (UTC)
Goto Top
Spontan ehrlich gesagt nicht. Für mich sieht die Fehlermeldung wieder so aus als würden die Rechte für den Pfad/Datei wieder nicht passen. Oder aber php-fpm läuft mit dem falschen Benutzer und hat deswegen keinen Zugriff... Mehr wüsste ich jetzt nicht.
Member: vGaven
vGaven Jul 23, 2016 at 16:01:54 (UTC)
Goto Top
so habe jetzt php 5.X installiert und jap es funktioniert aber halt warum auch immer mit php 7 nicht