it-swarm.com.de

AWStats: Kann nicht auf /var/log/Apache2/access.log zugreifen

Ich habe awstats auf meinem neuen Ubuntu Lucid-Server installiert, aber wenn cron versucht, es als Benutzer www-data auszuführen, beschwert es sich über cannot access /var/log/Apache2/access.log: Permission denied.

In /usr/share/doc/awstats/README.Debian gibt es diesen Absatz:

Standardmäßig speichert Apache (seit Version 1.3.22-1) Protokolldateien mit uid = root und gid = adm. Sie müssen also entweder ...

1) Ändern Sie die Rechte der Logfiles in /etc/logrotate.d/Apache so, dass www-data mindestens Lesezugriff hat.

2) Wie 1), aber wechseln Sie zu einem bestimmten Benutzer und verwenden Sie die suEXEC-Funktion von Apache, um denselben Benutzer auszuführen (und ändern Sie entweder auch das Recht von/var/lib/awstats oder verwenden Sie ein anderes Verzeichnis). Dies ist komplizierter, aber dann sind die Protokolle für den Server nicht allgemein zugänglich (was wahrscheinlich der Grund für den Apache-Standard war).

3) Ändern Sie awstats.pl in group adm (aber achten Sie darauf, dass Sie dann das Risiko eingehen, einem CGI-Skript Zugriff auf Admin-Inhalte auf dem Computer zu gewähren!).

Ich würde mit 1 gehen, aber was sind die empfohlenen Berechtigungen zu gewähren?

14
Joril

Wenn Sie für Punkt 1 gehen und es heißt, dass www-Daten mindestens Leseberechtigung haben sollten, wird empfohlen, nur Lesen zu gewähren.

Sie können die Zeile ändern (in einer Logrotate-Datei):

create 640 root adm

zu

create 644 root adm

Leseberechtigung für alle Benutzer (einschließlich WWW-Daten).

Sie müssen die in/var/log/Apache2/vorhandenen Berechtigungsdateien entsprechend dieser Einstellung ändern

chmod a+r /var/log/Apache2/* #or whatever your path is

Dann können alle Dateien von allen Benutzern gelesen werden, und alle Dateien, die Logrotate in Zukunft erstellt, haben die entsprechenden Berechtigungen

8
theist

In den meisten Setups:

  • awstats läuft als Ihr Apache-Benutzer www-data;
  • die Apache-Protokolldateien gehören root: adm und haben - rw-r ----- (aka: chmod 64) Berechtigungen. und
  • die Einstellungen für Eigentumsrechte und Berechtigungen finden Sie in der Datei / etc/logrotate.d/Apache2, deren Inhalt wie folgt lautet:

    /var/log/Apache2/*.log {
        daily
        missingok
        rotate 60
        compress
        delaycompress
        notifempty
        dateext
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/Apache2 reload > /dev/null
        endscript }
    

Die einfachste Lösung ist:

1) Ändern Sie "erstellen Sie 640 root adm" in "erstellen Sie 644 root adm" in / etc/logrotate.d/Apache2 unter Verwendung Ihres Lieblingstextes Editor oder, wenn Sie alles skripten müssen:

Sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/Apache2

2) Ändern Sie die Berechtigungen für / var/log/Apache2/access.log und / var/log/Apache2/error.log in 644 .

Sudo chmod 644 /var/log/Apache2/access.log /var/log/Apache2/error.log

3) Starten Sie Apache neu.

Sudo apachectl -k graceful

Ich habe Leute gesehen, die die www-Daten als Lösung zur adm-Benutzergruppe hinzugefügt haben. Das sind viel mehr Berechtigungen für www-data, als mir gefällt.

Andere sicherere Optionen umfassen das Erstellen eines neuen Benutzers und neuer Gruppen für awstats und das Ausführen/Ausführen von awstats als dieser neue Benutzer/diese neue Gruppe.

6
roberthernandez