PHP (Apache2) Rechte zum Lesen von /var/log geben?
Guten Tag,
Wie kann ich Apache2 Rechte auf /var/log geben, sodass PHP auch direkt von neu erstellen Log-Dateien lesen kann?
Momentan kann PHP nur von manchen Log-Dateien lesen, bei den anderen erhalte ich Permission denied.
Auf dem Server läuft Debian 10.
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
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.
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
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?
Ich weiss grad echt nicht, was du mit logrotate meinst... noch nie gehört.
Dann solltest du dich mit den Grundlagen der Serveradministration auseinander setzen. Und eine Suchmaschine deiner Wahl benutzen.
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.
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
Was will Apache2 / PHP denn mit Logs?
Ist doch egal, ob es ihn etwas angeht oder nicht.
Hast Du den Apache alleine laufen oder läuft auch PHP-FPM als Dienst daneben?
PHP-FPM läuft auch... weiss nur noch nicht, für was ich das brauche xD
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.
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?
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.
Es geht um alle Logs (des ganzen Servers, alle Prozesse).