Daten für Apache 2 Webserver im Homedirectory

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 14.07.2020 21:16:41

Da ich früher mal vergessen habe, neben meinem /home/nutzername Verzeichnis auch noch /srv/www/ wegzusichern und
ich die Webdaten ohnehin nur zum Entwickeln für mich alleine auf localhost brauche, habe ich mir angewöhnt die Daten
in ein Verzeichnis in meinem Homeverzeichnis abzulegen und in /var/www/ einen Symlink darauf anzulegen.

Der Vorteil davon ist, dass ich Daten, die in meinem Homeverzeichnis liegen, beim Sichern nicht vergesse.

Nun ist es aber so, dass man nun dem Apache Server Dateizugriffsrechte auf dieses Verzeichnis geben muss.
Man braucht also ein
chmod o+xr für /home, /home/nutzername und /home/nutzername/webverzeichnis

Nun würde ich gerne wissen, ob das irgendwie eleganter und sicherer geht, ohne die Dateizugriffsrechte zurechtzubiegen?

Am liebsten wäre mir, wenn die Dateizugriffsrechte alle bei -rw------- bleiben würde, der Owner und die Gruppe der Nutzer bzw. users bleibt
und Apache trotzdem auf die Daten zugreifen und diese ausliefern kann.


EDIT:
Im Internet wurde mir vorgeschlagen, einen VirtualHost anzulegen und dann das Directory via Require all granted für Apache freizugeben
nano /etc/apache2/sites-available/001-devweb.conf

Code: Alles auswählen

<VirtualHost *:80>
    DocumentRoot /home/nutzername/webserver/www/
    ServerName devweb.local

    <Directory "/home/nutzername/webserver/www/">
        Require all granted
    </Directory>
</VirtualHost>
Aber wenn ich das so mache und nach einem Neustart von Apache versuche auf devweb.local zuzugreifen, dann liefert mir der Webserver
grundsätzlich die Standard index.html Datei, die in /var/www/ liegt, aus.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von thoerb » 14.07.2020 22:40:50

Cordess hat geschrieben: ↑ zum Beitrag ↑
14.07.2020 21:16:41
Im Internet wurde mir vorgeschlagen, einen VirtualHost anzulegen und dann das Directory via Require all granted für Apache freizugeben
nano /etc/apache2/sites-available/001-devweb.conf
Hast du den auch mit a2ensite aktiviert?

https://wiki.ubuntuusers.de/Apache/Virtual_Hosts/

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 14.07.2020 23:07:22

Ja, habe ich, aber das hat das Problem auch nicht gelöst.

DeletedUserReAsG

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von DeletedUserReAsG » 15.07.2020 06:36:05

Cordess hat geschrieben: ↑ zum Beitrag ↑
14.07.2020 21:16:41
Im Internet wurde mir vorgeschlagen, einen VirtualHost anzulegen und dann das Directory via Require all granted für Apache freizugeben
Die Apache-Konfiguration kann deine Dateisystemrechte nicht übergehen.
Cordess hat geschrieben: ↑ zum Beitrag ↑
14.07.2020 21:16:41
Nun würde ich gerne wissen, ob das irgendwie eleganter und sicherer geht, ohne die Dateizugriffsrechte zurechtzubiegen?
Das Eleganteste und Sicherste wäre ’ne ordentliche Backuplösung, welche alle zu sichernden Sachen einmal in die Konfiguration bekommt. Dann kann man nichts mehr vergessen. Ansonsten würde ich vielleicht mit ’nem Bind-Mount arbeiten: das Verzeichnis unterhalb deines ~ ablegen, und mit ›mount -o bind‹ an eine für den httpd erreichbare Stelle mounten. Das Verzeichnis selbst muss dafür natürlich für den httpd betret- und lesbar sein, aber dein Homeverzeichnis kannst du zu lassen.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von ThorstenS » 15.07.2020 09:30:29

Ich würde es auch mit einem bind-mount umsetzen und setgid auf den Ordner, damit alle neuen Dateien/Ordner für www-data lesbar sind. Dann solltest du dich noch der Gruppe www-data hinzufügen und alles ist toll.

Code: Alles auswählen

mkdir -p ${HOME}/www
chgrp www-data ${HOME}/www
chmod g+s ${HOME}/www
sudo "echo ${HOME}/www /var/www none bind 0 0" >> /etc/fstab
sudo mount -a

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 15.07.2020 19:02:17

Danke an euch Beiden für den Tipp mit bind mount.

Ich habe mich jetzt streng an ThorstenS Befehlsbeispiel gehalten und das Verzeichnis per bind-mount eingebunden.
Das hat auch geklappt.
Die Dateien aus meinem www Verzeichnis in meinem Homedirectory sind nun in /var/www sichtbar.

Die Gruppe und Zugriffsrechte habe ich auch, wie von euch empfohlen, angepasst, aber ich bekomme immer noch eine

Code: Alles auswählen

403 Forbidden

You don't have permission to access this resource.
Meldung.

Das www Verzeichnis in meinem Homeverzeichnis hat nun folgende Gruppenzugehörigkeit und Zugriffsrechte:

Code: Alles auswählen

$ ls -l
insgesamt 4
drwx--S--- 2 nutzername www-data 4096 Jul 14 20:35 www
In /var sieht der per bind mount eingebundene www Ordner so aus (ganz unten):

Code: Alles auswählen

$ ls -l /var/
insgesamt 56
drwxr-xr-x  2 root   root      4096 Jul 15 13:30 backups
drwxr-xr-x 16 root   root      4096 Mai 19 23:43 cache
drwxr-xr-x 53 root   root      4096 Mai 31 06:51 lib
drwxrwsr-x  2 root   staff     4096 Mai  2 18:39 local
lrwxrwxrwx  1 root   root         9 Mai 19 23:21 lock -> /run/lock
drwxr-xr-x 12 root   root      4096 Jul 15 18:34 log
drwx------  2 root   root     16384 Mai 19 23:21 lost+found
drwxrwsr-x  2 root   mail      4096 Mai 19 23:21 mail
drwxr-xr-x  2 root   root      4096 Mai 19 23:21 opt
lrwxrwxrwx  1 root   root         4 Mai 19 23:21 run -> /run
drwxr-xr-x  7 root   root      4096 Mai 19 23:35 spool
drwxrwxrwt 10 root   root      4096 Jul 15 18:35 tmp
drwx--S---  2 nutzername www-data  4096 Jul 15 18:46 www

und der www Ordner im Homedirectory sieht mit ein paar Beispieldateien folgendermaßen aus:

Code: Alles auswählen

$ ls -l www
insgesamt 24
-rw-r--r-- 1 nutzername www-data 133 Feb  8  2017 action.php
-rw-r--r-- 1 nutzername www-data 840 Feb  8  2017 hallo.php
-rw-r--r-- 1 nutzername www-data 158 Jul 14 20:35 index.html
-rw-r--r-- 1 nutzername www-data 110 Feb  8  2017 phpinfo.php
-rw-r--r-- 1 nutzername www-data 501 Aug 17  2018 web_worker.html
-rw-r--r-- 1 nutzername www-data 349 Aug 22  2018 worker.js
Neue Dateien werden in diesen Ordner aufgrund des S Bit auch mit diesen Rechten -rw-r--r-- angelegt.

Apache 2 habe ich ebenso neu gestartet. Auch ein Reboot des Rechners half nichts.

Aber die 403 Forbidden Fehlermeldung habe ich immer noch.

Ich habe testweise dem www Ordner auch mal die Rechte chmod og+r verpasst, aber das führte ebenso zu keinem Erfolg.


Die virtual-host Konfigdatei habe ich via a2dissite ausgeschaltet und danach gelöscht. Mit dieser hat es auch nicht funktioniert.

Kann ich sonst noch irgendwie etwas machen, damit Apache diese Dateien an den Browser ausliefern kann?
niemand hat geschrieben: ↑ zum Beitrag ↑
15.07.2020 06:36:05
Das Eleganteste und Sicherste wäre ’ne ordentliche Backuplösung, welche alle zu sichernden Sachen einmal in die Konfiguration bekommt.
Ich sichere meine Daten normalerweise mit von mir angefertigten rsync Skripten für jeden wichtigen Unterordner in meinem Homedirectory,
aber /srv/ hatte ich damals schlichtweg nicht auf dem Radar bzw. übersehen.
Ich könnte natürlich jetzt noch ein rsync Script für /var/www schreiben, aber lieber wäre es mir, wenn ich per bind mount die Daten in meinem Homeordner halten kann und die Daten dann über ein bestehendes rsync Script das sich um einen Ordner in meinem Homedirectory kümmert weggesichert werden.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 15.07.2020 19:33:10

Die Log Datei /var/log/apache2/error.log sieht nach einem restart übrigens folgendermaßen aus (Ausschnitt):

Code: Alles auswählen

[Wed Jul 15 19:20:57.719570 2020] [mpm_event:notice] [pid 824:tid 140626790528128] AH00491: caught SIGTERM, shutting down
[Wed Jul 15 19:21:37.224916 2020] [mpm_event:notice] [pid 824:tid 140631645795456] AH00489: Apache/2.4.38 (Debian) configured -- resuming normal operations
[Wed Jul 15 19:21:37.225020 2020] [core:notice] [pid 824:tid 140631645795456] AH00094: Command line: '/usr/sbin/apache2'
[Wed Jul 15 19:22:48.116111 2020] [core:error] [pid 825:tid 140631623296768] (13)Permission denied: [client ::1:45460] AH00035: access to /favicon.ico denied (filesystem path '/var/www/html') because search permissions are missing on a component of the path
[Wed Jul 15 19:22:50.183713 2020] [core:error] [pid 825:tid 140631614904064] (13)Permission denied: [client ::1:45460] AH00035: access to / denied (filesystem path '/var/www/html') because search permissions are missing on a component of the path
[Wed Jul 15 19:22:53.363551 2020] [core:error] [pid 825:tid 140631389239040] (13)Permission denied: [client ::1:45460] AH00035: access to /index.html denied (filesystem path '/var/www/html') because search permissions are missing on a component of the path
[Wed Jul 15 19:24:19.150597 2020] [core:error] [pid 826:tid 140631631689472] (13)Permission denied: [client ::1:45474] AH00035: access to /phpinfo.php denied (filesystem path '/var/www/html') because search permissions are missing on a component of the path
Man sieht, dass ich via Browser versucht habe auf
http://localhost
http://localhost/index.html
und
http://localhost/phpinfo.php
zuzugreifen.
Das sind Dateien, die in meinem www Ordner liegen.

/var/log/apache2/access.log hat dazu noch folgende Einträge:

Code: Alles auswählen

::1 - - [15/Jul/2020:19:22:48 +0200] "GET /favicon.ico HTTP/1.1" 403 491 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
::1 - - [15/Jul/2020:19:22:50 +0200] "GET / HTTP/1.1" 403 490 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
::1 - - [15/Jul/2020:19:22:53 +0200] "GET /index.html HTTP/1.1" 403 490 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
::1 - - [15/Jul/2020:19:24:19 +0200] "GET /phpinfo.php HTTP/1.1" 403 491 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
Ich schätze mal die Error Einträge bezüglich /var/www/html beziehen sich darauf, weil in /etc/apache2/sites-available/000-default.conf
der Eintrag

Code: Alles auswählen

...
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
vorhanden ist.
Ich werde mal versuchen das gerade zu biegen und den Ordner meines home Directorys nicht direkt nach /var/www/ mounten, sondern nach /var/www/html
Dann kann ich nämlich die Default Konfiguration von 000-default.conf so lassen, wie sie ist.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 15.07.2020 19:43:48

So, ich habe jetzt den /etc/fstab Eintrag geändert, so dass mein Ordner via bind-mount nach /var/www/html eingebunden wird.

Leider hat es nicht viel gebracht, die 403 forbidden Meldung erhalte ich immer noch.

Die Logs:

/var/log/apache2/access.log

Code: Alles auswählen

::1 - - [15/Jul/2020:19:36:03 +0200] "GET /phpinfo.php HTTP/1.1" 403 491 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
::1 - - [15/Jul/2020:19:36:07 +0200] "GET / HTTP/1.1" 403 490 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
::1 - - [15/Jul/2020:19:36:10 +0200] "GET /index.html HTTP/1.1" 403 490 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
/var/log/apache2/error.log

Code: Alles auswählen

[Wed Jul 15 19:35:27.884696 2020] [mpm_event:notice] [pid 824:tid 140631645795456] AH00493: SIGUSR1 received.  Doing graceful restart
[Wed Jul 15 19:35:27.886977 2020] [mpm_event:notice] [pid 824:tid 140631645795456] AH00489: Apache/2.4.38 (Debian) configured -- resuming normal operations
[Wed Jul 15 19:35:27.886984 2020] [core:notice] [pid 824:tid 140631645795456] AH00094: Command line: '/usr/sbin/apache2'
[Wed Jul 15 19:36:03.279244 2020] [core:error] [pid 2083:tid 140631631689472] (13)Permission denied: [client ::1:45552] AH00035: access to /phpinfo.php denied (filesystem path '/var/www/html/phpinfo.php') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770338 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.html denied (filesystem path '/var/www/html/index.html') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770361 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.cgi denied (filesystem path '/var/www/html/index.cgi') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770370 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.pl denied (filesystem path '/var/www/html/index.pl') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770377 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.php denied (filesystem path '/var/www/html/index.php') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770384 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.xhtml denied (filesystem path '/var/www/html/index.xhtml') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:07.770391 2020] [core:error] [pid 2083:tid 140631623296768] (13)Permission denied: [client ::1:45552] AH00035: access to /index.htm denied (filesystem path '/var/www/html/index.htm') because search permissions are missing on a component of the path
[Wed Jul 15 19:36:10.809495 2020] [core:error] [pid 2083:tid 140631614904064] (13)Permission denied: [client ::1:45552] AH00035: access to /index.html denied (filesystem path '/var/www/html/index.html') because search permissions are missing on a component of the path
Dem Webserver fehlen immer noch entsprechende search permissions.
Den Ordner chmod o+x zu machen, hat aber auch nichts gebracht.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 15.07.2020 19:50:49

Ein hinzufügen des Eintrags in /etc/apache2/apache2.conf

Code: Alles auswählen

<Directory /home/nutzername/webserver/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
und anschließendem restart des Servers mit systemctl reload apache2 hat leider auch nichts gebracht.
Ich erhalte immer noch die gleichen Fehlermeldungen.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von ThorstenS » 21.07.2020 06:13:00

Dem Gruppenzugriff für den Apache fehlt ein x er darf bei dir nicht in den Ordner gehen. Das mußt du nachholen.
Ich sprach glaube ich von `chmod g+sx /home/ordner` - also das gleiche s und nicht das große S. das kleine s sorgt dafür, dass neu an gelegte Ordner auch wieder der Gruppe www-data zugeordnet sind.

Und lass in der Konfiguration die Ordnerstruktur unter `/var/www` stehen. Ansonsten wirst du dir u.U. Probleme bei PHP einfangen.

Der Benutzer www-data hat die Loginshell /usr/sbin/nologin. Gib ihm doch spaßeshalber mal die /bin/bash. Dann werde als root per `su -` zu dem Benutzer www-data.
Nun gehst du in die entsprechenden Ordner. Klappt das? Dann wird auch der Webserver die Dateien im Zugriff haben.
Klappt das nicht, dann mußt du an den Rechten nachbessern.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von Cordess » 22.07.2020 19:45:08

Vielen Dank.
Das x Bit war es. das hat noch gefehlt.
Jetzt funktioniert es wie geplant.

Ein großes S sorgt auch dafür, dass neu angelegte Ordner auch wieder der Gruppe www-data zugeordnet sind.
Der Unterschied ist eigentlich nur, dass beim großen S das x Bit nicht gesetzt ist. Ist beides gesetzt, dann ist das s kleingeschrieben.


Jetzt würde mich nur noch interessieren, wie ich das Verzeichnis durchsuchbar machen kann Also so, dass man vom Browser aus alle Dateien im Verzeichnis anzeigen kann.
Das dürfte aus Sicherheitsgründen defaultmäßig abgeschaltet sein, für die lokale Nutzung hilft es aber beim Entwickeln.

Momentan ist es nämlich so, dass natürlich erstmal meine index.html angezeigt wird, wenn nur der domainname, also localhost angegeben wird. Wenn ich die Datei umbenenne, also kein index.html mehr vorhanden ist, dann kommt erwartungsgemäß eine Forbidden Meldung.
Will man trotzdem etwas anzeigen, dann müsste die anzuzeigende Datei explizit genannt werden.
Ein Directory Listing wäre mir hier jetzt allerdings lieber.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Daten für Apache 2 Webserver im Homedirectory

Beitrag von schorsch_76 » 23.07.2020 08:11:06

Es gibt auch das mod_userdir plugin[1].

[1] https://httpd.apache.org/docs/2.4/howto ... _html.html

Antworten