PHP (Apache2) Rechte zum Lesen von /var/log geben?

4 Antworten

Hallo,

ist zwar schon einige Tage alt aber "egal". Es werden sich sicherlich noch einige Leser finden.

An den Eigentums- und Zugriffsrechen rumzubiegen ist KEINE gute Idee!

Ich würde es mit Hilfe von CGI-Scripten innerhalb des Apache versuchen. Da hat man eigentlich alle Möglichkeiten aber auch hier währe ich sehr vorsichtig und würde den Zugriff einschränken (htaccess, iptables usw.).

MatzeL aus H

Woher ich das weiß:Berufserfahrung
Momentan kann PHP nur von manchen Log-Dateien lesen, bei den anderen erhalte ich Permission denied.

Das ist eigentlich unverständlich. Wenn PHP die Log Dateien schreibt, dann sollte es sie auch lesen können.

Um welche "anderen" logs geht es denn?

Lass dir mal mit

ls -la /var/log

die Gruppenrechte anzeigen.

verreisterNutzer  22.11.2019, 08:58

Es geht um alle Logs (des ganzen Servers, alle Prozesse).

-rwxr-xr-x  1 root  root     2326 Nov 20 10:53 alternatives.log
drwxr-xr-x  2 root  adm      4096 Nov 22 00:00 apache2
drwxr-xr-x  2 root  root     4096 Nov 20 15:38 apt
-rwxr-xr-x  1 root  adm    269537 Nov 22 08:50 auth.log
drwxr-xr-x  2 bind  root     4096 Nov 21 16:03 bind9
-rwxr-xr-x  1 root  adm  18094167 Nov 22 08:57 daemon.log
-rwxr-xr-x  1 root  adm      1754 Nov 21 12:36 debug
-rwxr-xr-x  1 root  root    37132 Nov 20 10:53 dpkg.log
-rwxr-xr-x  1 root  adm     32340 Nov 22 04:00 kern.log
drwxr-xr-x  2 root  root     4096 Nov 22 02:42 letsencrypt
-rwxr-xr-x  1 root  adm     42246 Nov 22 04:00 messages
drwxr-xr-x  2 mysql adm      4096 Nov 20 10:38 mysql
drwxr-xr-x  2 root  root     4096 Nov 17 06:03 private
-rwxr-xr-x  1 root  adm   1363750 Nov 22 08:57 syslog
-rwxr-xr-x  1 root  adm   3343156 Nov 22 00:00 syslog.1
-rwxr-xr-x  1 root  adm    164243 Nov 21 00:00 syslog.2.gz
drwxr-xr-x  2 root  adm      4096 Nov 20 06:51 unattended-upgrades
-rwxr-xr-x  1 root  adm         0 Nov 21 00:00 user.log
-rwxr-xr-x  1 root  adm      7979 Nov 20 10:37 user.log.1
0
verreisterNutzer  22.11.2019, 12:58
@Roderic

Da sieht's so aus:

-rw-r----- 1 root adm   2538 Nov 22 09:44 error.log
-rw-r----- 1 root adm    735 Nov 22 00:00 error.log.1
-rwxr-xr-x 1 root adm   1368 Nov 21 00:00 error.log.2.gz
-rw-r----- 1 root adm  45562 Nov 22 12:50 other_vhosts_access.log
-rw-r----- 1 root adm  72536 Nov 21 23:50 other_vhosts_access.log.1
-rwxr-xr-x 1 root adm   8166 Nov 21 00:00 other_vhosts_access.log.2.gz
0
KarlRanseierIII  22.11.2019, 14:04
@verreisterNutzer

Du hast logrotate laufen.

Testweise solltest DU mal herausfinden, mit welchen perms apache die Dateien bei Dir erzeugt.

Du könntest eine umask setzen, aber die wird sich auf alle von apache erzeugten Dateien auswirken.

Apache erzeugt eigentlich alle logs mit 0644, also rw für owner und r für world.

Eventuell pfuscht logrotate hier rum?

1
leseratten1  22.11.2019, 15:26
@verreisterNutzer

Dann solltest du dich mit den Grundlagen der Serveradministration auseinander setzen. Und eine Suchmaschine deiner Wahl benutzen.

0
KarlRanseierIII  22.11.2019, 17:38
@verreisterNutzer

logrotate rotiert Deine Logs (inklusive Archivierung)

man logrotate

Schau Dir:

/etc/logrotate.conf
/etc/logrotate.d/apache2.conf

an, sofern Debian gesplittete Konfigurationen nutzt.

Du solltest Dich dringend mit den Grundlagen der Serveradministration vertraut machen, sowie mit den Protokollen, die Du nutzt.

2

Man sollte das nicht tun, weil da auch Logs liegen, die den Apache bzw. php nichts angehen. Wenn überhaupt, nutze dort Unterordner (macht das Debian nicht eh!?) wie /var/log/apache und/oder /var/log/php und gebe nur für diese die Berechtigungen frei

Woher ich das weiß:Berufserfahrung
verreisterNutzer  22.11.2019, 14:36

Was will Apache2 / PHP denn mit Logs?

Ist doch egal, ob es ihn etwas angeht oder nicht.

0

Hast Du den Apache alleine laufen oder läuft auch PHP-FPM als Dienst daneben?

Woher ich das weiß:Berufserfahrung – mit dem Internet verbunden seit 1993
verreisterNutzer  22.11.2019, 14:37

PHP-FPM läuft auch... weiss nur noch nicht, für was ich das brauche xD

0
threadi  22.11.2019, 14:40
@verreisterNutzer

Damit werden jegliche PHP-Prozesse gesteuert die Du per Apache startest. Wenn es richtig eingerichtet ist läuft der PHP-Prozess dann mit dem vom Apache für den Vhost vorgegebenen Nutzer. Und dessen Rechte müsstest Du erweitern, ich denke dadurch, dass Du ihn z.B. der Gruppe root zuordnest. Dann hätte der PHP-Prozess auch das Recht auf /var/log zuzugreifen. Zusätzlich musst Du vermutlich auch open_basedir entsprechend anpassen.

Aber Vorsicht: damit machst Du deinen Server angreifbar denn ein vom Web kommender Request würde dann mit root-Rechten laufen. Meine Empfehlung wäre, egal was Du machen willst, es anders zu lösen. Web-gesteuerte Prozesse sollten nie solche Rechte haben, selbst nicht zum lesen. Denn theoretisch wäre es damit möglich, dass man auch /etc/passwd ausliest.

0
verreisterNutzer  22.11.2019, 14:44
@threadi

Jo, das wäre ganz schön blöd.

Als welcher Benutzer muss den Apache2 laufen und wie stelle ich sicher, dass es das tut? Reicht es, wenn ich diesem Benutzer Leserechte auf /var/log gebe? Hat er dann auch Leserechte auf frisch erstelle Logs?

0
threadi  22.11.2019, 14:46
@verreisterNutzer

Wie schon gesagt solltest Du das gar nicht machen. Wenn du es unbedingt ausprobieren willst beschäftige dich mit dem Berechtigungssystem unter Linux. Du kannst nicht einfach "nur lesen"-Rechte für einen Nutzer auf so ein Verzeichnis setzen - da hängt mehr dran.

https://jankarres.de/2015/04/debian-linux-zugriffsrechte-system-erklaert/

https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/

Beachte, dass Du nach einer Änderung den Apache-Dienst neustarten müsstest.

1