Apache-Fehlerprotokolle – wie kann man sie als Webseite (für internen Intranet-Server) anzeigen, wenn normalerweise nur Root-Zugriff besteht?

Apache-Fehlerprotokolle – wie kann man sie als Webseite (für internen Intranet-Server) anzeigen, wenn normalerweise nur Root-Zugriff besteht?

Ich möchte das Fehlerprotokoll als Webseite anzeigen können, sodass ein Kollege (ohne Root-Zugriff) es zur Fehlerbehebung bei seiner PHP-Entwicklung einsehen kann.

Auf meinem CentOS 5.x-Rechner befindet sich das Fehlerprotokoll unter: /var/log/httpd/error_log und auf die Verzeichnisse kann nur Root-Zugriff gewährt werden.

Ich würde ein CGI-Skript schreiben, um das Protokoll anzuzeigen, aber da dies im Apache-Prozess ausgeführt wird, ist dies kein Root-Benutzer, sodass auf die Protokolldatei nicht zugegriffen werden kann. (Habe ich versucht.) Was mich verwirrt, ist, dass Apache irgendwie in das Skript schreiben kann, um Fehler zu protokollieren, obwohl die enthaltenen Verzeichnisse Root-Zugriff haben.

Wie kann ich mein Ziel erreichen? Oder können Sie mir bitte eine Alternative vorschlagen?

Antwort1

Eigentlich würde ich meine andere Antwort in manchen Situationen wahrscheinlich nicht verwenden, aber ich behalte sie dort als Referenz.

Wenn Ihrem Kollegen ein eigener VirtualHost zugewiesen wurde, würde ich diesen VirtualHost so einrichten, dass die Protokolle in ein anderes Verzeichnis ausgegeben werden, sodass er nur die Fehler seines Systems sieht:

<VirtualHost *:80>
    ServerName colleagues.vhost.com
    DocumentRoot ...
    ...
    ErrorLog /home/user/errorlog-colleagues.vhost.com
</VirtualHost>

Alternativ können Sie, falls .htaccess-Dateien aktiviert sind, dafür sorgen, dass die PHP-Fehlerprotokolle einfach an einem gewünschten Ort ausgegeben werden, z. B.:

/Pfad/zum/Web-Root/.htaccess:

php_value error_log /home/user/phperrorlog-colleagues.vhost.com

Antwort2

Sie können die Berechtigungen für die Datei ändern. Andernfalls können Sie einen Cron-Job einrichten, der jede Minute ausgeführt wird und einen Rsync von der Apache-Protokolldatei in eine andere Datei ausführt (wo Sie die Leseberechtigungen festlegen können) und diese dann auf der Webseite anzeigt.

Es gibt auch Möglichkeiten, den Protokollierungsmechanismus für Apache zu ändern. Dies hängt von Ihrer Fähigkeit ab, die Konfiguration zu ändern.

Antwort3

Ich würde die Berechtigungen für das Verzeichnis /var/log/httpd ändern, um das Problem des Zugriffs auf die Dateien von der Konsole aus zu lösen.

Fügen Sie eine neue Gruppe hinzu und fügen Sie den Benutzer hinzu:

groupadd apache-logs
usermod -a -G apache-logs user
chgrp apache-logs /var/log/httpd
chmod g+rx /var/log/httpd

oder wenn Sie damit einverstanden sind, dass jeder Benutzer Ihres Systems die Protokolle ansieht, gehen Sie wie folgt vor:

chmod go+rx /var/log/httpd

Was auch immer Sie tun, wenn Sie httpd aktualisieren, werden die ursprünglichen Berechtigungen wiederhergestellt. Ansonsten sollte sich nichts ändern.

Der Grund, warum Apache mit den Standardberechtigungen in die Protokolle schreiben kann, liegt darin, dass die Protokolldateien von Apache geöffnet werden, während es als Root ausgeführt wird. Sobald Apache vollständig geladen ist, ändert es seinen Benutzer zu Apache, hat aber weiterhin geöffnete Protokolldateien.

verwandte Informationen