web-dev-qa-db-fra.com

AWStats: impossible d'accéder à /var/log/Apache2/access.log

J'ai installé awstats sur mon nouveau serveur Ubuntu Lucid, mais lorsque cron tente de l'exécuter en tant qu'utilisateur www-data, il se plaint que cannot access /var/log/Apache2/access.log: Permission denied.

Dans /usr/share/doc/awstats/README.Debian il y a ce paragraphe:

Par défaut, Apache stocke (depuis la version 1.3.22-1) des fichiers journaux avec uid = root et gid = adm. Vous devez donc ...

1) Modifiez les droits des fichiers journaux dans /etc/logrotate.d/Apache afin que www-data dispose au minimum d’un accès en lecture.

2) Comme 1) mais changez pour un utilisateur spécifique et utilisez la fonctionnalité suEXEC d’Apache pour s’exécuter en tant que même utilisateur (et modifiez également le droit de/var/lib/awstats ou utilisez un autre répertoire). C’est plus compliqué, mais les journaux ne sont généralement pas accessibles au serveur (ce qui était probablement le cas de la configuration par défaut d’Apache).

3) Modifiez awstats.pl pour regrouper adm (mais sachez que vous prenez le risque de permettre à un script CGI d’accéder à des trucs admin sur la machine!).

J'irais avec 1, mais quelles sont les autorisations recommandées à accorder?

14
Joril

Si vous choisissez le point 1 et qu'il est indiqué que www-data devrait au moins disposer d'une autorisation de lecture, il est recommandé d'accorder uniquement la lecture.

Vous pouvez modifier la ligne (dans le fichier logrotate):

create 640 root adm

à

create 644 root adm

Pour donner à tous les utilisateurs (www-data inclus) une autorisation de lecture.

Vous devrez modifier les autorisations des fichiers existants dans/var/log/Apache2/pour qu'elles correspondent à ce paramètre.

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

Tous les fichiers peuvent alors être lus par tous les utilisateurs et tous les fichiers créés ultérieurement par logrotate auront les autorisations nécessaires.

8
theist

Dans la plupart des configurations:

  • awstats s'exécute en tant qu'utilisateur Apache www-data;
  • les fichiers journaux Apache sont la propriété de root: adm et ont les autorisations - rw-r ----- (ou: chmod 64); et
  • les paramètres de propriété et d'autorisations se trouvent dans le fichier / etc/logrotate.d/Apache2, dont le contenu est le suivant:

    /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 }
    

La solution la plus simple consiste à:

1) Changez "créez 640 root adm)" en "créez 644 root adm" en / etc/logrotate.d/Apache2 en utilisant votre texte favori. éditeur ou, si vous devez tout scripter:

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

2) Modifiez les autorisations sur / var/log/Apache2/access.log et / var/log/Apache2/error.log à 644 .

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

3) Redémarrez Apache.

Sudo apachectl -k graceful

J'ai vu des personnes ajouter la solution www-data au groupe d'utilisateurs adm comme solution. C'est beaucoup plus d'autorisations pour www-data que je ne suis à l'aise avec.

D'autres options plus sécurisées impliquent la création d'un nouvel utilisateur et de nouveaux groupes pour awstats et leur exécution/exécution en tant que nouvel utilisateur/groupe.

6
roberthernandez