Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kein Zugriff auf Server: 403 Forbidden #22

Open
Pical80 opened this issue Oct 18, 2023 · 18 comments
Open

Kein Zugriff auf Server: 403 Forbidden #22

Pical80 opened this issue Oct 18, 2023 · 18 comments

Comments

@Pical80
Copy link

Pical80 commented Oct 18, 2023

Nach dem erfolgreichen nginx Start, scheitert der Zugriff auf baikal im lokalen Netzwerk für die Ersteinrichtung:

http://192.168.1.14:9999/

403 Forbidden

/var/log/nginx/error.log

2023/10/17 22:06:34 [error] 14433#14433: *3 "/home/stefan/Services/Baikal/html/index.php" is forbidden (13: Permission denied), client: 192.168.1.9, server: _, request: "GET / HTTP/1.1", host: "192.168.1.14:9999"

2023/10/17 22:06:34 [error] 14433#14433: *3 open() "/home/stefan/Services/Baikal/html/favicon.ico" failed (13: Permission denied), client: 192.168.1.9, server: _, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.14:9999">

stefan@pical:~/Services/Baikal/html $ ls -la
total 36
...
2023/10/17 22:06:34 [error] 14433#14433: *3 open() "/home/stefan/Services/Baikal/html/favicon.ico" failed (13: Permission denied), client: 192.168.1.9, server: _, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.14:9999">

2023/10/17 22:06:34 [error] 14433#14433: *3 "/home/stefan/Services/Baikal/html/index.php" is forbidden (13: Permission denied), client: 192.168.1.9, server: _, request: "GET / HTTP/1.1", host: "192.168.1.14:9999"

Wie ist die Fehlermeldung im Log genau zu interpretieren? Gibt sie Aufschluss für eine mögliche Behebung?

viele Dank für die Hilfe!

@JsBergbau
Copy link
Owner

Hallo Stefan,

schau dir nochmal den Abschnitt zur Webserverkonfiguration an https://github.com/JsBergbau/BaikalAnleitung#webserver-konfiguration, insbesondere die beiden Zeilen

cd /home/pi/DiensteUndProgramme/Baikal #eigentlich sollten wir schon in diesem Verezeichnis sein, nur zur Sicherheit

sudo chown -R www-data:www-data . #Man beachte den Punkt „."

@Pical80
Copy link
Author

Pical80 commented Oct 18, 2023

Hallo!
Die Schritte habe ich nochmal überprüft und genauso durchgeführt. Ebenso anschließend baikal-nginx.site zurück an root gegeben ( sudo chown root:root baikal-nginx.site ) .Bekomme aber leider immer noch Fehler 403.

Könnte es daher rühren, dass ich die aktuellere PHP-Version 8 installiert habe (anstatt wie in der Anleitung vorgeschlagen PHP7.x.)?

stefan@pical:~/Services/Baikal $ php -version
PHP 8.2.7 (cli) (built: Jul 20 2023 18:02:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

@JsBergbau
Copy link
Owner

Er kann nichtmal auf die PHP und die ico-Datei zugreifen. PHP 8 könnte später ein Problem werden, aber das gibt dann andere Fehlermeldungen.

Führe mal bitte ps aux | grep nginx aus poste die Ausgabe hier.

@Pical80
Copy link
Author

Pical80 commented Oct 19, 2023

stefan@pical:~ $ ps aux | grep nginx 
root      1122  0.0  0.1   8488  1532 ?        Ss   19:34   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  1123  0.0  0.1   8488  1768 ?        S    19:34   0:00 nginx: worker process
www-data  1124  0.0  0.1   8488  1768 ?        S    19:34   0:00 nginx: worker process
www-data  1125  0.0  0.1   8488  1768 ?        S    19:34   0:00 nginx: worker process
www-data  1126  0.0  0.1   8488  1768 ?        S    19:34   0:00 nginx: worker process
stefan    1905  0.0  0.2   7532  1908 pts/0    S    19:38   0:00 grep --color=auto nginx

@JsBergbau
Copy link
Owner

JsBergbau commented Oct 19, 2023

Sehr merkwürdig. Meine Vermutung war, dass er vielleicht unter einen anderen Benutzer läuft.
Mach mal

cd /home/stefan/Services/Baikal/html/
sudo su -s /bin/bash www-data
ls -l
cat index.php

und schreibe hier, welche Ausgabe du erhältst.

Poste bitte auch noch den Inhalt von cat /lib/systemd/system/nginx.service

@Pical80
Copy link
Author

Pical80 commented Oct 20, 2023

stefan@pical:~/Services/Baikal/html $ sudo su -s /bin/bash www-data
www-data@pical:/home/stefan/Services/Baikal/html$ ls -l
total 24
drwxr-xr-x 3 www-data www-data 4096 Oct 17 21:01 admin
-rw-r--r-- 1 www-data www-data 2643 Oct 17 21:01 cal.php
-rw-r--r-- 1 www-data www-data 2647 Oct 17 21:01 card.php
-rw-r--r-- 1 www-data www-data 2458 Oct 17 21:01 dav.php
lrwxrwxrwx 1 www-data www-data   43 Oct 17 21:01 index.php -> ../Core/Frameworks/Baikal/WWWRoot/index.php
drwxr-xr-x 2 www-data www-data 4096 Oct 17 21:01 res
-rw-r--r-- 1 www-data www-data   26 Oct 17 21:01 robots.txt
www-data@pical:/home/stefan/Services/Baikal/html$ cat index.php
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2013 Jérôme Schneider <[email protected]>
*  All rights reserved
*
*  http://sabre.io/baikal
*
*  This script is part of the Baïkal Server project. The Baïkal
*  Server project is free software; you can redistribute it
*  and/or modify it under the terms of the GNU General Public
*  License as published by the Free Software Foundation; either
*  version 2 of the License, or (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

ini_set("session.cookie_httponly", 1);
ini_set("display_errors", 0);
ini_set("log_errors", 1);

define("BAIKAL_CONTEXT", true);
define("PROJECT_CONTEXT_BASEURI", "/");

if (file_exists(getcwd() . "/Core")) {
    # Flat FTP mode
    define("PROJECT_PATH_ROOT", getcwd() . "/");    #./
} else {
    # Dedicated server mode
    define("PROJECT_PATH_ROOT", dirname(getcwd()) . "/");    #../
}

if (!file_exists(PROJECT_PATH_ROOT . 'vendor/')) {
    exit('<h1>Incomplete installation</h1><p>Ba&iuml;kal dependencies have not been installed. If you are a regular user, this means that you probably downloaded the wrong zip file.</p><p>To install the dependencies manually, execute "<strong>composer install</strong>" in the Ba&iuml;kal root folder.</p>');
}

require PROJECT_PATH_ROOT . 'vendor/autoload.php';

# Bootstrapping Flake
\Flake\Framework::bootstrap();

# Bootstrapping Baïkal
\BaikalAdmin\Framework::bootstrap();

# Create and setup a page object
$oPage = new \Flake\Controller\Page(PROJECT_PATH_ROOT . "Core/Resources/Web/Baikal/Templates/Page/index.html");
$oPage->injectHTTPHeaders();
$oPage->setTitle("Baïkal server");
$oPage->setBaseUrl(PROJECT_URI);

# Draw page
$oPage->zone("navbar")->addBlock(new \Baikal\Controller\Navigation\Topbar\Anonymous());
$oPage->zone("Payload")->addBlock(new \Baikal\Controller\Main());

# Render the page
echo $oPage->render();
www-data@pical:/home/stefan/Services/Baikal/html$

@JsBergbau
Copy link
Owner

Sehr merkwürdig. Der Benutzer www-data hat offensichtlich Zugriff darauf.

Poste bitte auch noch den Inhalt von cat /lib/systemd/system/nginx.service

Es könnte daran liegen. Poste bitte noch den Inhalt dieser Datei.

@Pical80
Copy link
Author

Pical80 commented Oct 22, 2023

stefan@pical:~ $ cat /lib/systemd/system/nginx.service
# Stop dance for nginx
# =======================
#
# ExecStop sends SIGQUIT (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

@JsBergbau
Copy link
Owner

Lass uns noch etwas anderes probieren, ob es am ausführen durch systemd liegt.

bitte führe aus

sudo systemctl stop nginx
#Verifiziere bitte, dass nginx nicht mehr läuft via 
ps aux | grep nginx
#es sollte eine einzige Zeile mit grep zu sehen sein
sudo /usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
sudo /usr/sbin/nginx -g 'daemon on; master_process on;'

Funktioniert jetzt der Zugriff?

@taschenzwerg
Copy link

Bei mir tritt exakt der gleiche Fehler auf.
Habe aber rausbekommen, das bei Nutzung einer älteren raspios Version und gleicher Vorgehensweise der Fehler nicht auftritt.
2023-05-03-raspios-bullseye-armhf-lite.img > funktioniert
2023-10-10-raspios-bookworm-armhf.img > 403 Forbidden
Ich bin verwirrt ....

@JsBergbau
Copy link
Owner

JsBergbau commented Oct 23, 2023

Bei mir tritt exakt der gleiche Fehler auf.

Wenn der Fehler auch bei der manuellen Ausführung von nginx auftritt, dann liegt es nicht an systemd.

Weiterer Versuch. Poste bitte die Ausgabe von

ls -la /home | head -n 2
ls -la /home/stefan | head -n 2
ls -la /home/stefan/Services | head -n 2
ls -la /home/stefan/Services/Baikal | head -n 2

Solltest du beide Systeme zur Verfügung haben, kannst du ja auch mal vergleichen. Ich vermute, dass da irgendwo ein x fehlt, weswegen es nicht klappt.

@Pical80
Copy link
Author

Pical80 commented Oct 23, 2023

stefan@pical:~ $ sudo systemctl stop nginx
stefan@pical:~ $ ps aux | grep nginx
stefan    1827  0.0  0.2   7532  1908 pts/0    S    20:07   0:00 grep --color=auto nginx
stefan@pical:~ $ sudo /usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
stefan@pical:~ $ sudo /usr/sbin/nginx -g 'daemon on; master_process on;'

Das war leider nicht erfolgreich, weiterhin: 403 Forbidden

@Pical80
Copy link
Author

Pical80 commented Oct 23, 2023

stefan@pical:~ $ ls -la /home | head -n 2
total 12
drwxr-xr-x  3 root   root   4096 Oct 17 21:20 .
stefan@pical:~ $ ls -la /home/stefan | head -n 2
total 96
drwx------ 15 stefan stefan 4096 Oct 23 19:54 .
stefan@pical:~ $ ls -la /home/stefan/Services | head -n 2
total 12
drwxr-xr-x  3 stefan   stefan   4096 Oct 17 21:01 .
stefan@pical:~ $ ls -la /home/stefan/Services/Baikal | head -n 2
total 208
drwxr-xr-x  9 www-data www-data   4096 Oct 18 20:07 .

ein x könnte da ja nur für /home/stefan fehlen, welche Berechtigungen sollten hier sinnvollerweise gewährt werden?

@JsBergbau
Copy link
Owner

Machmal bitte sudo chmod o x /home/stefan und probiere nochmal. Ich bin mir ziemlich sicher, dass es damit läuft. Mehr dazu unter https://superuser.com/questions/168578/why-must-a-folder-be-executable

Offensichtlich wurde bei Debian Bookworm (Version 12) die Standardberechtigung der Homeverzeichnisse geändert, denn bei mir ist das x Bit bei Verzeichnissen unter Home gesetzt, bei Version 12 nicht.

@Pical80
Copy link
Author

Pical80 commented Oct 23, 2023

Success, endlich!!

Ein ganz großes Dankeschön für die Hilfe! 👍

@taschenzwerg
Copy link

Jetzt klappt es bei mir auch.

Normale Vorgehensweise wie in BaikalAnleitung beschrieben:
http://ipadr:9999 > 403 Forbidden

Nach Anpassung der Berechtigung des Nutzerverzeichnisses:
sudo chmod o x /home/nutzer
http://ipadr:9999 > 502 Bad Gateway

Die nginx error.log brachte mich dann auf die Zeile in der baikal-nginx.site
fastcgi_pass unix:/run/php/php7.4-fpm.sock;

Die Datei gibts nicht, aber einen link
php-fpm.sock -> /etc/alternatives/php-fpm.sock

Also Anpassung der baikal-nginx.site
fastcgi_pass unix:/run/php/php-fpm.sock;

Und so funktioniert es auch mit der bookworm Version.
Vielleicht kann ja die Anleitung angepasst werden...

@JsBergbau
Copy link
Owner

Das Ändern der Rechte fürs Benutzerverzeichnis habe ich schonmal hinzugefügt.

Bezüglich der php-Version, steht ja drinnen, dass man auf die installierte Version achten soll. Um das zu aktualisieren, poste bitte die Ausgabe von

cat /etc/nginx/sites-available/default

@taschenzwerg
Copy link

Wie gesagt. Nach der Anpassung der Zeile funktioniert es.
Auch mit ssl:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
}
server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate /etc/nginx/certificate/nginx-certificate.crt;
        ssl_certificate_key /etc/nginx/certificate/nginx.key;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
}

Der Post hat mir schon sehr weitergeholfen.
Und Danke für die schnelle Reaktion !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants