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

14

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

Dans /usr/share/doc/awstats/README.Debiance paragraphe:

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

1) Modifiez les droits des fichiers journaux dans /etc/logrotate.d/apache afin que www-data ait au moins un accès en lecture.

2) Comme 1) mais passez à un utilisateur spécifique et utilisez la fonction suEXEC d'Apache pour exécuter le 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 point par défaut d'Apache).

3) Changez awstats.pl en groupe adm (mais attention, vous prenez alors le risque d'autoriser un script CGI à accéder aux trucs d'administration sur la machine!).

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

Joril
la source
Essayez ceci, je ne peux pas promettre si cela fonctionnera: chown www-data:www-data <yourFile>et puis chmod 655 <yourFile>.
theTuxRacer
1
Eh bien , pour faire travailler awstats il suffit de chmod 755 /var/log/apache2et chmod 644 access.log, mais je voudrais un «c'est le meilleur pratice » -kind de réponse :) Merci pour carillonner à bien!
Joril
Je pense que vous avez raison d'aller avec # 1 (avec juste un accès en lecture, sauf s'il y a autre chose dont awstats a besoin). Cela donne accès à un compte d'utilisateur limité et n'accorde pas de nouvel accès à quoi que ce soit au-delà.
belacqua

Réponses:

8

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

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

create 640 root adm

à

create 644 root adm

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

Vous devrez modifier les autorisations des fichiers existants dans / var / log / apache2 / pour correspondre à ce paramètre

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

Ensuite, tous les fichiers peuvent être lus par tous les utilisateurs et tous les fichiers que logrotate créera à l'avenir auront les autorisations appropriées

théiste
la source
2
Et pour que "tous les utilisateurs" puissent consulter "/ var / log / apache2 /", faites en plus: chmod a + x / var / log / apache2 /
alfonx
6

Dans la plupart des configurations:

  • awstats fonctionne en tant que votre utilisateur apache www-data ;
  • les fichiers journaux apache appartiennent à root: adm et disposent des autorisations -rw-r ----- (alias: chmod 640 ); et
  • les paramètres de propriété et d'autorisations se trouvent dans le fichier /etc/logrotate.d/apache2 , dont le contenu est:

    /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) Remplacez " create 640 root adm " par " create 644 root adm " dans /etc/logrotate.d/apache2 à l' aide de votre éditeur de texte préféré 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 sur 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 gens ajouter les 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 l'exécution et l'exécution de awstats en tant que ce nouvel utilisateur / groupe.

roberthernandez
la source
Une autre solution serait de changer le groupe de /var/log/apache2tout ce qui se trouve en dessous www-dataet de rendre les fichiers lisibles en groupe. C'est un peu moins permissif que de les rendre lisibles dans le monde entier.
Reinier Post