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?
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.
Dans la plupart des configurations:
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.